Modified: trunk/app/helpers/application_helper.rb (3177 => 3178)
--- trunk/app/helpers/application_helper.rb 2012-11-05 13:21:34 UTC (rev 3177)
+++ trunk/app/helpers/application_helper.rb 2012-11-05 14:56:05 UTC (rev 3178)
@@ -777,6 +777,8 @@
return "biocat_icon.png"
when "usercheck"
return "famfamfam_silk/flag_red.png"
+ when "transfer_ownership"
+ return "famfamfam_silk/key_go.png"
else
return Conf.label_icons[method.to_s] if Conf.label_icons[method.to_s]
end
Modified: trunk/app/models/network.rb (3177 => 3178)
--- trunk/app/models/network.rb 2012-11-05 13:21:34 UTC (rev 3177)
+++ trunk/app/models/network.rb 2012-11-05 14:56:05 UTC (rev 3178)
@@ -24,7 +24,7 @@
:include => [ :comments ]) if Conf.solr_enable
format_attribute :description
-
+
def self.recently_created(limit=5)
self.find(:all, :order => "created_at DESC", :limit => limit)
end
@@ -221,4 +221,19 @@
def layout
Conf.layouts[layout_name]
end
+
+ after_save :update_administrators
+
+ private
+
+ # If owner changes, make old owner into an adminstrator, and delete the new owner's membership status
+ # (as group owners do not have a membership)
+ def update_administrators
+ if user_id_changed?
+ Membership.find_by_user_id_and_network_id(user_id, id).try(:destroy) # delete membership of new owner
+ Membership.create(:user_id => user_id_was, :network_id => id,
+ :administrator => true, :invited_by => User.find(user_id)).accept! # create membership for old owner
+ end
+ end
+
end
Modified: trunk/app/views/memberships/_table.rhtml (3177 => 3178)
--- trunk/app/views/memberships/_table.rhtml 2012-11-05 13:21:34 UTC (rev 3177)
+++ trunk/app/views/memberships/_table.rhtml 2012-11-05 14:56:05 UTC (rev 3178)
@@ -39,11 +39,15 @@
<% end %>
<% if membership.accepted? %>
<% if membership.network.administrator?(membership.user_id) %>
- <%= icon "remove_group_admin", user_membership_path(membership.user_id, membership)+'?membership[administrator]=0', nil, {:method => :put}, "Remove group admin status" %>
- <% else %>
- <%= icon "make_group_admin", user_membership_path(membership.user_id, membership)+'?membership[administrator]=1', nil, {:method => :put}, "Add
-group admin status" %>
- <% end %>
+ <%= icon "remove_group_admin", user_membership_path(membership.user_id, membership)+'?membership[administrator]=0', nil, {:method => :put}, "Remove group admin status" %>
+ <% if membership.network.owner == current_user %>
+ <%= icon "transfer_ownership", network_path(membership.network, :network => {:user_id => membership.user_id}),
+ nil, {:method => :put, :confirm => "Are you sure you wish to transfer ownership of this group? You will not be able to undo this action."},
+ "Transfer ownership" %>
+ <% end %>
+ <% else %>
+ <%= icon "make_group_admin", user_membership_path(membership.user_id, membership)+'?membership[administrator]=1', nil, {:method => :put}, "Add group admin status" %>
+ <% end %>
<% end %>
</td>
</tr>