OSDN Git Service

added the ability to manage users memberships directly on users/edit (administration...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 26 Dec 2006 11:28:22 +0000 (11:28 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 26 Dec 2006 11:28:22 +0000 (11:28 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@118 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/users_controller.rb
app/views/users/_memberships.rhtml [new file with mode: 0644]
app/views/users/edit.rhtml
public/images/arrow_down.png [new file with mode: 0644]

index 47d0e51..ab4aae0 100644 (file)
@@ -80,6 +80,27 @@ class UsersController < ApplicationController
       end\r
     end
     @auth_sources = AuthSource.find(:all)\r
+    @roles = Role.find :all\r
+    @projects = Project.find(:all) - @user.projects\r
+    @membership ||= Member.new\r
+  end\r
+  \r
+  def edit_membership\r
+    @user = User.find(params[:id])\r
+    @membership = params[:membership_id] ? Member.find(params[:membership_id]) : Member.new(:user => @user)\r
+    @membership.attributes = params[:membership]\r
+    if request.post? and @membership.save\r
+      flash[:notice] = l(:notice_successful_update)\r
+    end\r
+    redirect_to :action => 'edit', :id => @user and return\r
+  end\r
+  \r
+  def destroy_membership\r
+    @user = User.find(params[:id])\r
+    if request.post? and Member.find(params[:membership_id]).destroy\r
+      flash[:notice] = l(:notice_successful_update)\r
+    end\r
+    redirect_to :action => 'edit', :id => @user and return\r
   end
 
   def destroy
diff --git a/app/views/users/_memberships.rhtml b/app/views/users/_memberships.rhtml
new file mode 100644 (file)
index 0000000..ccf2111
--- /dev/null
@@ -0,0 +1,29 @@
+<div class="box" style="margin-top: 16px;">\r
+<h3><%= l(:label_project_plural) %></h3>\r
+\r
+<% @user.memberships.each do |membership| %>\r
+<%= start_form_tag({ :action => 'edit_membership', :id => @user, :membership_id => membership }, :class => "tabular") %>\r
+<p style="margin:0;padding-top:0;">\r
+    <label><%= membership.project.name %></label>\r
+    <select name="membership[role_id]">\r
+    <%= options_from_collection_for_select @roles, "id", "name", membership.role_id %>\r
+    </select>\r
+    <%= submit_tag l(:button_change), :class => "button-small" %>\r
+    <%= link_to l(:button_delete), {:action => 'destroy_membership', :id => @user, :membership_id => membership }, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %>\r
+</p>\r
+<%= end_form_tag %>\r
+<% end %>\r
+<hr />\r
+<p>\r
+<label><%=l(:label_project_new)%></label><br/>\r
+<%= start_form_tag({ :action => 'edit_membership', :id => @user }) %>\r
+<select name="membership[project_id]">\r
+<%= options_from_collection_for_select @projects, "id", "name", @membership.project_id %>\r
+</select>\r
+<select name="membership[role_id]">\r
+<%= options_from_collection_for_select @roles, "id", "name", @membership.role_id %>\r
+</select>\r
+<%= submit_tag l(:button_add) %>\r
+<%= end_form_tag %>\r
+</p>\r
+</div>
\ No newline at end of file
index 2332b70..0da99d0 100644 (file)
@@ -4,3 +4,5 @@
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <% end %>
+
+<%= render :partial => 'memberships' %>
\ No newline at end of file
diff --git a/public/images/arrow_down.png b/public/images/arrow_down.png
new file mode 100644 (file)
index 0000000..ea37f3a
Binary files /dev/null and b/public/images/arrow_down.png differ