Mercurial > hg > soundsoftware-site
changeset 1270:b2f7f52a164d redmine-2.2-integration
Fix project members page: update editlist partial following changes to project member settings partial; update mailer class and templates; make editlist forms not be remote (we just reload page)
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Thu, 02 May 2013 16:24:09 +0100 |
parents | 5e4f04bd7a1e |
children | 052ea7c838f6 |
files | app/controllers/members_controller.rb app/models/mailer.rb app/views/mailer/added_to_project.html.erb app/views/mailer/added_to_project.text.erb app/views/mailer/member_added_to_project.html.erb app/views/mailer/member_added_to_project.text.erb app/views/members/_editlist.html.erb |
diffstat | 7 files changed, 47 insertions(+), 50 deletions(-) [+] |
line wrap: on
line diff
--- a/app/controllers/members_controller.rb Thu May 02 15:43:31 2013 +0100 +++ b/app/controllers/members_controller.rb Thu May 02 16:24:09 2013 +0100 @@ -61,14 +61,14 @@ members << @new_member # send notification to member - Mailer.deliver_added_to_project(@new_member, @project) + Mailer.member_added_to_project(@new_member, @project).deliver end else @new_member = Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id]) members << @new_member # send notification to member - Mailer.deliver_added_to_project(@new_member, @project) + Mailer.member_added_to_project(@new_member, @project).deliver end @project.members << members @@ -76,7 +76,7 @@ end respond_to do |format| - format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } + format.html { redirect_to :action => 'index', :project_id => @project } format.js { @members = members } format.api { @member = members.first @@ -95,7 +95,7 @@ end saved = @member.save respond_to do |format| - format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } + format.html { redirect_to :action => 'index', :project_id => @project } format.js format.api { if saved @@ -112,7 +112,7 @@ @member.destroy end respond_to do |format| - format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } + format.html { redirect_to :action => 'index', :project_id => @project } format.js format.api { if @member.destroyed?
--- a/app/models/mailer.rb Thu May 02 15:43:31 2013 +0100 +++ b/app/models/mailer.rb Thu May 02 16:24:09 2013 +0100 @@ -27,31 +27,32 @@ { :host => Setting.host_name, :protocol => Setting.protocol } end - # todo: luisf: 2Aug2012 - refactor... - def added_to_project(member, project) + # Builds a Mail::Message object used to email the specified member + # that he was added to a project + # + # Example: + # member_added_to_project(member, project) => Mail::Message object + # Mailer.member_added_to_project(member, project) => sends an email to the registered member + def member_added_to_project(member, project) + principal = Principal.find(member.user_id) + users = [] if principal.type == "User" - user = User.find(member.user_id) - user_add_to_project(user, project) + users = [User.find(member.user_id)] else users = Principal.find(member.user_id).users - users.map {|user| user_add_to_project(user, project) } end - end - # Builds a tmail object used to email the specified user that he was added to a project - # - # Example: - # user_add_to_project(user, project) => tmail object - # Mailer.deliver_add_to_project(user, project) => sends an email to the registered user - def user_add_to_project(user, project) - set_language_if_valid user.language - recipients user.mail - subject l(:mail_subject_added_to_project, Setting.app_title) - body :project_url => url_for(:controller => 'projects', :action => 'show', :id => project.id), - :project_name => project.name - render_multipart('added_to_project', body) + users.map do |user| + + set_language_if_valid user.language + @project_url = url_for(:controller => 'projects', :action => 'show', :id => project.id) + @project_name = project.name + mail :to => user.mail, + :subject => l(:mail_subject_added_to_project, Setting.app_title) + + end end # Builds a Mail::Message object used to email recipients of the added issue.
--- a/app/views/mailer/added_to_project.html.erb Thu May 02 15:43:31 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -<p><%= l(:notice_added_to_project, :project_name => @project_name) %></p> -<p><%= l(:notice_project_homepage, :project_url => @project_url) %></p> -
--- a/app/views/mailer/added_to_project.text.erb Thu May 02 15:43:31 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -<%= l(:notice_added_to_project, :project_name => @project_name) %> -<%= l(:notice_project_homepage, :project_url => @project_url) %>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/mailer/member_added_to_project.html.erb Thu May 02 16:24:09 2013 +0100 @@ -0,0 +1,3 @@ +<p><%= l(:notice_added_to_project, :project_name => @project_name) %></p> +<p><%= l(:notice_project_homepage, :project_url => @project_url) %></p> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/mailer/member_added_to_project.text.erb Thu May 02 16:24:09 2013 +0100 @@ -0,0 +1,2 @@ +<%= l(:notice_added_to_project, :project_name => @project_name) %> +<%= l(:notice_project_homepage, :project_url => @project_url) %>
--- a/app/views/members/_editlist.html.erb Thu May 02 15:43:31 2013 +0100 +++ b/app/views/members/_editlist.html.erb Thu May 02 16:24:09 2013 +0100 @@ -17,23 +17,26 @@ <td class="<%= member.principal.class.name.downcase %>"><%= link_to_user member.principal %></td> <td class="roles"> <span id="member-<%= member.id %>-roles"><%=h member.roles.sort.collect(&:to_s).join(', ') %></span> - <% remote_form_for(:member, member, :url => {:controller => 'members', :action => 'edit', :id => member}, - :method => :post, :html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }) do |f| %> + <%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member), + :method => :put, + :html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }} + ) do |f| %> <p><% roles.each do |role| %> - <label><%= check_box_tag 'member[role_ids][]', role.id, member.roles.include?(role), :disabled => member.member_roles.detect {|mr| mr.role_id == role.id && !mr.inherited_from.nil?} %> <%=h role %></label><br /> + <label><%= check_box_tag 'membership[role_ids][]', role.id, member.roles.include?(role), :disabled => member.member_roles.detect {|mr| mr.role_id == role.id && !mr.inherited_from.nil?} %> <%=h role %></label><br /> <% end %></p> - <%= hidden_field_tag 'member[role_ids][]', '' %> + <%= hidden_field_tag 'membership[role_ids][]', '' %> <p><%= submit_tag l(:button_change), :class => "small" %> - <%= link_to_function l(:button_cancel), "$('member-#{member.id}-roles').show(); $('member-#{member.id}-roles-form').hide(); return false;" %></p> + <%= link_to_function l(:button_cancel), + "$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;" + %></p> <% end %> </td> <td class="buttons"> - <%= link_to_function l(:button_edit), "$('member-#{member.id}-roles').hide(); $('member-#{member.id}-roles-form').show(); return false;", :class => 'icon icon-edit' %> - <%= link_to_remote(l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member}, - :method => :post, - :confirm => (!User.current.admin? && member.include?(User.current) ? l(:text_own_membership_delete_confirmation) : nil) - }, :title => l(:button_delete), - :class => 'icon icon-del') if member.deletable? %> + <%= link_to_function l(:button_edit), + "$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;", + :class => 'icon icon-edit' %> + <%= delete_link membership_path(member), + :data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %> </td> </tr> <% end; reset_cycle %> @@ -47,28 +50,21 @@ <% principals = Principal.active.find(:all, :limit => 100, :order => 'type, login, lastname ASC') - @project.principals %> <% if roles.any? && principals.any? %> - <% remote_form_for(:member, @member, :url => {:controller => 'members', :action => 'new', :id => @project}, :method => :post, - :loading => '$(\'member-add-submit\').disable();', - :complete => 'if($(\'member-add-submit\')) $(\'member-add-submit\').enable();') do |f| %> + <%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :method => :post}) do |f| %> <h3><%=l(:label_member_new)%></h3> <p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p> - <%= observe_field(:principal_search, - :frequency => 0.5, - :update => :principals, - :url => { :controller => 'members', :action => 'autocomplete_for_member', :id => @project }, - :with => 'q') - %> + <%= javascript_tag "observeSearchfield('principal_search', 'principals', '#{ escape_javascript autocomplete_project_memberships_path(@project) }')" %> <div id="principals"> <% if params[:q] && params[:q].length > 1 %> - <%= principals_check_box_tags 'member[user_ids][]', @principals %> + <%= principals_check_box_tags 'membership[user_ids][]', @principals %> <% end %> </div> <p><%= l(:label_set_role_plural) %>:</p> <% roles.each do |role| %> - <label><%= check_box_tag 'member[role_ids][]', role.id %> <%=h role %> </label><div style="margin-left: 2em; margin-bottom: 0.5em"><i><%=l( 'label_' + role.name.downcase + "_description").to_sym %></i></div> + <label><%= check_box_tag 'membership[role_ids][]', role.id %> <%=h role %> </label><div style="margin-left: 2em; margin-bottom: 0.5em"><i><%=l( 'label_' + role.name.downcase + "_description").to_sym %></i></div> <% end %> <p><%= submit_tag l(:button_add), :id => 'member-add-submit' %></p>