Mercurial > hg > soundsoftware-site
changeset 1273:052ea7c838f6 redmine-2.2-integration
Merge cannam's latest changes.
author | luisf <luis.figueira@eecs.qmul.ac.uk> |
---|---|
date | Thu, 09 May 2013 11:49:03 +0100 |
parents | 248631c56bda (current diff) b2f7f52a164d (diff) |
children | 5ea1a213c7a5 |
files | app/views/mailer/added_to_project.html.erb app/views/mailer/added_to_project.text.erb |
diffstat | 12 files changed, 57 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/app/controllers/members_controller.rb Thu Apr 11 15:38:00 2013 +0100 +++ b/app/controllers/members_controller.rb Thu May 09 11:49:03 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 Apr 11 15:38:00 2013 +0100 +++ b/app/models/mailer.rb Thu May 09 11:49:03 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 Apr 11 15:38:00 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 Apr 11 15:38:00 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 09 11:49:03 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 09 11:49:03 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 Apr 11 15:38:00 2013 +0100 +++ b/app/views/members/_editlist.html.erb Thu May 09 11:49:03 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>
--- a/app/views/members/index.html.erb Thu Apr 11 15:38:00 2013 +0100 +++ b/app/views/members/index.html.erb Thu May 09 11:49:03 2013 +0100 @@ -1,7 +1,7 @@ <h2><%=l(:label_member_plural)%></h2> -<% editable = authorize_for('members', 'edit') %> +<% editable = authorize_for('members', 'update') %> <div id="memberlist"> <% if editable %>
--- a/app/views/projects/settings/_overview.html.erb Thu Apr 11 15:38:00 2013 +0100 +++ b/app/views/projects/settings/_overview.html.erb Thu May 09 11:49:03 2013 +0100 @@ -5,7 +5,7 @@ <div class="box tabular"> -<p><%= l(:text_has_welcome_page_info, { :overview_link => link_to(l(:label_overview), { :controller => 'projects', :action => 'show' } ) } ) %></p> +<p><%= l(:text_has_welcome_page_info, { :overview_link => link_to(l(:label_overview), { :controller => 'projects', :action => 'show' } ) } ).html_safe %></p> <% if @project.module_enabled? :wiki %> @@ -13,7 +13,7 @@ <% else %> -<p><%= l(:text_has_welcome_page_wiki_disabled, { :modules_link => link_to(l(:label_module_plural), { :controller => 'projects', :action => 'settings', :tab => 'modules' } ) } ) %></p> +<p><%= l(:text_has_welcome_page_wiki_disabled, { :modules_link => link_to(l(:label_module_plural), { :controller => 'projects', :action => 'settings', :tab => 'modules' } ) } ).html_safe %></p> <% end %>
--- a/config/locales/en.yml Thu Apr 11 15:38:00 2013 +0100 +++ b/config/locales/en.yml Thu May 09 11:49:03 2013 +0100 @@ -844,7 +844,7 @@ label_added_time_by: "Added by %{author} %{age} ago" label_updated_time_by: "Updated by %{author} %{age} ago" label_updated_time: "Updated %{value} ago" - label_time_ago: "{{age}} ago" + label_time_ago: "%{age} ago" label_jump_to_a_project: Jump to a project... label_file_plural: Downloads label_changeset_plural: Changesets @@ -1106,8 +1106,8 @@ text_settings_repo_is_internal: Currently the repository hosted at this site is the primary repository for this project. text_settings_repo_is_external: Currently the repository hosted at this site is a read-only copy of an external repository. text_settings_repo_need_help: Please <a href="/projects/soundsoftware-site/wiki/Help">contact us</a> if you need help deciding how best to set this up.<br>We can also import complete revision history from other systems into a new primary repository for you if you wish. - text_has_welcome_page_info: <b>Welcome page</b><p>You can replace the standard {{overview_link}} page for this project with your own welcome page.<br>This page will be editable using the project Wiki. - text_has_welcome_page_wiki_disabled: <b>Note:</b> You must enable the Wiki module in the {{modules_link}} tab before you can create or edit this page. + text_has_welcome_page_info: <b>Welcome page</b><p>You can replace the standard %{overview_link} page for this project with your own welcome page.<br>This page will be editable using the project Wiki. + text_has_welcome_page_wiki_disabled: <b>Note:</b> You must enable the Wiki module in the %{modules_link} tab before you can create or edit this page. text_binary_data: Binary data text_data_too_large: Binary data, or file too large to display @@ -1144,9 +1144,9 @@ label_set_role_plural: Choose roles for new member - notice_added_to_project: 'You have been added to the project "{{project_name}}".' - notice_project_homepage: "You can visit the project using the following link: {{project_url}}" - mail_subject_added_to_project: "You've been added to a project on {{value}}" + notice_added_to_project: 'You have been added to the project "%{project_name}".' + notice_project_homepage: "You can visit the project using the following link: %{project_url}" + mail_subject_added_to_project: "You've been added to a project on %{value}" description_filter: Filter description_search: Searchfield description_choose_project: Projects
--- a/plugins/redmine_tags/app/views/projects/_tags_form.html.erb Thu Apr 11 15:38:00 2013 +0100 +++ b/plugins/redmine_tags/app/views/projects/_tags_form.html.erb Thu May 09 11:49:03 2013 +0100 @@ -1,7 +1,7 @@ <%= labelled_fields_for :project, project do |f| -%> <div> <p id="project_tags"><%= f.text_field :tag_list, :label => :tags, :size => 60, :class => 'hol' %> - <em class="info"><%= l(:text_tags_info).html_safe %></em> + <em class="info"><%= l(:text_tags_search).html_safe %></em> </p> <div id="project_tag_candidates" class="autocomplete" style="margin-top: 0;"></div> <%= stylesheet_link_tag 'jquery.tagit.css', :plugin => 'redmine_tags' %>
--- a/public/themes/soundsoftware/stylesheets/application.css Thu Apr 11 15:38:00 2013 +0100 +++ b/public/themes/soundsoftware/stylesheets/application.css Thu May 09 11:49:03 2013 +0100 @@ -48,11 +48,6 @@ margin-top: 1em; } -h1 { margin:0 0 0 0; padding:0; font-size: 24px; } -h2, #content h2, .wiki h1 { padding: 2px 10px 1px 0px; margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #3e442c; } -h3, #content h3, .wiki h2 { font-size: 16px; padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #3e442c; } -h4, #content h3, .wiki h3 { font-size: 14px; padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #3e442c; } - .splitcontentleft p:first-child { margin-top: 0; }