##// END OF EJS Templates
Enable updating private_notes property on journal edit form (#22575)....
Jean-Philippe Lang -
r15238:7918285ac2e6
parent child
Show More
@@ -90,7 +90,10 class JournalsController < ApplicationController
90
90
91 def update
91 def update
92 (render_403; return false) unless @journal.editable_by?(User.current)
92 (render_403; return false) unless @journal.editable_by?(User.current)
93 @journal.update_attributes(:notes => params[:notes]) if params[:notes]
93 @journal.notes = params[:notes] if params[:notes]
94 @journal.private_notes = params[:private_notes].present?
95 (render_403; return false) if @journal.private_notes_changed? && User.current.allowed_to?(:set_notes_private, @journal.issue.project) == false
96 @journal.save if @journal.changed?
94 @journal.destroy if @journal.details.empty? && @journal.notes.blank?
97 @journal.destroy if @journal.details.empty? && @journal.notes.blank?
95 call_hook(:controller_journals_edit_post, { :journal => @journal, :params => params})
98 call_hook(:controller_journals_edit_post, { :journal => @journal, :params => params})
96 respond_to do |format|
99 respond_to do |format|
@@ -58,4 +58,10 module JournalsHelper
58 css_classes << " editable" if editable
58 css_classes << " editable" if editable
59 content_tag('div', content.html_safe, :id => "journal-#{journal.id}-notes", :class => css_classes)
59 content_tag('div', content.html_safe, :id => "journal-#{journal.id}-notes", :class => css_classes)
60 end
60 end
61
62 def render_private_notes(journal)
63 content = journal.private_notes? ? l(:field_is_private) : ''
64 css_classes = journal.private_notes? ? 'private' : ''
65 content_tag('span', content.html_safe, :id => "journal-#{journal.id}-private_notes", :class => css_classes)
66 end
61 end
67 end
@@ -5,7 +5,7
5 <h4><a href="#note-<%= journal.indice %>" class="journal-link">#<%= journal.indice %></a>
5 <h4><a href="#note-<%= journal.indice %>" class="journal-link">#<%= journal.indice %></a>
6 <%= avatar(journal.user, :size => "24") %>
6 <%= avatar(journal.user, :size => "24") %>
7 <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %>
7 <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %>
8 <%= content_tag('span', l(:field_is_private), :class => 'private') if journal.private_notes? %></h4>
8 <%= render_private_notes(journal) %></h4>
9
9
10 <% if journal.details.any? %>
10 <% if journal.details.any? %>
11 <ul class="details">
11 <ul class="details">
@@ -7,6 +7,9
7 :id => "journal_#{@journal.id}_notes",
7 :id => "journal_#{@journal.id}_notes",
8 :class => 'wiki-edit',
8 :class => 'wiki-edit',
9 :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %>
9 :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %>
10 <% if @journal.issue.safe_attribute? 'private_notes' %>
11 <%= check_box_tag 'private_notes', '1', @journal.private_notes, :id => "journal_#{@journal.id}_private_notes" %> <label for="journal_<%= @journal.id %>_private_notes"><%= l(:field_private_notes) %></label>
12 <% end %>
10 <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>
13 <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>
11 <p><%= submit_tag l(:button_save) %>
14 <p><%= submit_tag l(:button_save) %>
12 <%= preview_link preview_edit_issue_path(:project_id => @project, :id => @journal.issue),
15 <%= preview_link preview_edit_issue_path(:project_id => @project, :id => @journal.issue),
@@ -1,7 +1,9
1 <% if @journal.frozen? %>
1 <% if @journal.frozen? %>
2 $("#change-<%= @journal.id %>").remove();
2 $("#change-<%= @journal.id %>").remove();
3 <% else %>
3 <% else %>
4 $("#change-<%= @journal.id %>").attr('class', '<%= @journal.css_classes %>');
4 $("#journal-<%= @journal.id %>-notes").replaceWith('<%= escape_javascript(render_notes(@journal.issue, @journal, :reply_links => authorize_for('issues', 'edit'))) %>');
5 $("#journal-<%= @journal.id %>-notes").replaceWith('<%= escape_javascript(render_notes(@journal.issue, @journal, :reply_links => authorize_for('issues', 'edit'))) %>');
6 $("#journal-<%= @journal.id %>-private_notes").replaceWith('<%= escape_javascript(render_private_notes(@journal)) %>');
5 $("#journal-<%= @journal.id %>-notes").show();
7 $("#journal-<%= @journal.id %>-notes").show();
6 $("#journal-<%= @journal.id %>-form").remove();
8 $("#journal-<%= @journal.id %>-form").remove();
7 <% end %>
9 <% end %>
@@ -207,6 +207,39 class JournalsControllerTest < ActionController::TestCase
207 assert_include 'journal-2-notes', response.body
207 assert_include 'journal-2-notes', response.body
208 end
208 end
209
209
210 def test_update_xhr_with_private_notes_checked
211 @request.session[:user_id] = 1
212 xhr :post, :update, :id => 2, :private_notes => '1'
213 assert_response :success
214 assert_template 'update'
215 assert_equal 'text/javascript', response.content_type
216 assert_equal true, Journal.find(2).private_notes
217 assert_include 'change-2', response.body
218 assert_include 'journal-2-private_notes', response.body
219 end
220
221 def test_update_xhr_with_private_notes_unchecked
222 Journal.find(2).update_attributes(:private_notes => true)
223 @request.session[:user_id] = 1
224 xhr :post, :update, :id => 2
225 assert_response :success
226 assert_template 'update'
227 assert_equal 'text/javascript', response.content_type
228 assert_equal false, Journal.find(2).private_notes
229 assert_include 'change-2', response.body
230 assert_include 'journal-2-private_notes', response.body
231 end
232
233 def test_update_xhr_with_private_notes_changes_and_without_set_private_notes_permission
234 @request.session[:user_id] = 2
235 Role.find(1).add_permission! :edit_issue_notes
236 Role.find(1).add_permission! :view_private_notes
237 Role.find(1).remove_permission! :set_notes_private
238
239 xhr :post, :update, :id => 2, :private_notes => '1'
240 assert_response 403
241 end
242
210 def test_update_xhr_with_empty_notes_should_delete_the_journal
243 def test_update_xhr_with_empty_notes_should_delete_the_journal
211 @request.session[:user_id] = 1
244 @request.session[:user_id] = 1
212 assert_difference 'Journal.count', -1 do
245 assert_difference 'Journal.count', -1 do
General Comments 0
You need to be logged in to leave comments. Login now