diff --git app/controllers/journals_controller.rb app/controllers/journals_controller.rb index a0905ae..65a8b87 100644 --- app/controllers/journals_controller.rb +++ app/controllers/journals_controller.rb @@ -90,7 +90,9 @@ class JournalsController < ApplicationController def update (render_403; return false) unless @journal.editable_by?(User.current) - @journal.update_attributes(:notes => params[:notes]) if params[:notes] + @journal.notes = params[:notes] if params[:notes] + @journal.private_notes = (params[:private_notes] || false) + @journal.save if @journal.changed? @journal.destroy if @journal.details.empty? && @journal.notes.blank? call_hook(:controller_journals_edit_post, { :journal => @journal, :params => params}) respond_to do |format| diff --git app/helpers/journals_helper.rb app/helpers/journals_helper.rb index f9dc7c9..e31ad25 100644 --- app/helpers/journals_helper.rb +++ app/helpers/journals_helper.rb @@ -58,4 +58,10 @@ module JournalsHelper css_classes << " editable" if editable content_tag('div', content.html_safe, :id => "journal-#{journal.id}-notes", :class => css_classes) end + + def render_private_notes(journal) + content = journal.private_notes? ? l(:field_is_private) : '' + css_classes = journal.private_notes? ? 'private' : '' + content_tag('span', content.html_safe, :id => "journal-#{journal.id}-private_notes", :class => css_classes) + end end diff --git app/views/issues/_history.html.erb app/views/issues/_history.html.erb index 993dfee..b184e01 100644 --- app/views/issues/_history.html.erb +++ app/views/issues/_history.html.erb @@ -5,7 +5,7 @@
<%= submit_tag l(:button_save) %> <%= preview_link preview_edit_issue_path(:project_id => @project, :id => @journal.issue), diff --git app/views/journals/update.js.erb app/views/journals/update.js.erb index 65c198d..34adf15 100644 --- app/views/journals/update.js.erb +++ app/views/journals/update.js.erb @@ -1,7 +1,9 @@ <% if @journal.frozen? %> $("#change-<%= @journal.id %>").remove(); <% else %> + $("#change-<%= @journal.id %>").attr('class', '<%= @journal.css_classes %>'); $("#journal-<%= @journal.id %>-notes").replaceWith('<%= escape_javascript(render_notes(@journal.issue, @journal, :reply_links => authorize_for('issues', 'edit'))) %>'); + $("#journal-<%= @journal.id %>-private_notes").replaceWith('<%= escape_javascript(render_private_notes(@journal)) %>'); $("#journal-<%= @journal.id %>-notes").show(); $("#journal-<%= @journal.id %>-form").remove(); <% end %> diff --git test/functional/journals_controller_test.rb test/functional/journals_controller_test.rb index 097d0bd..56f1731 100644 --- test/functional/journals_controller_test.rb +++ test/functional/journals_controller_test.rb @@ -207,6 +207,28 @@ class JournalsControllerTest < ActionController::TestCase assert_include 'journal-2-notes', response.body end + def test_update_xhr_with_private_notes_checked + @request.session[:user_id] = 1 + xhr :post, :update, :id => 2, :private_notes => '1' + assert_response :success + assert_template 'update' + assert_equal 'text/javascript', response.content_type + assert_equal true, Journal.find(2).private_notes + assert_include 'change-2', response.body + assert_include 'journal-2-private_notes', response.body + end + + def test_update_xhr_with_private_notes_unchecked + @request.session[:user_id] = 1 + xhr :post, :update, :id => 2 + assert_response :success + assert_template 'update' + assert_equal 'text/javascript', response.content_type + assert_equal false, Journal.find(2).private_notes + assert_include 'change-2', response.body + assert_include 'journal-2-private_notes', response.body + end + def test_update_xhr_with_empty_notes_should_delete_the_journal @request.session[:user_id] = 1 assert_difference 'Journal.count', -1 do