myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [3178] trunk/app: Added the ability to transfer o


From: noreply
Subject: [myexperiment-hackers] [3178] trunk/app: Added the ability to transfer ownership of a group
Date: Mon, 5 Nov 2012 14:56:05 +0000 (UTC)

Revision
3178
Author
fbacall
Date
2012-11-05 14:56:05 +0000 (Mon, 05 Nov 2012)

Log Message

Added the ability to transfer ownership of a group

Modified Paths

Diff

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>

reply via email to

[Prev in Thread] Current Thread [Next in Thread]