--- app/controllers/journals_controller.rb +++ app/controllers/journals_controller.rb @@ -16,7 +16,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalsController < ApplicationController - before_filter :find_journal, :only => [:edit, :diff] + before_filter :find_journal, :only => [:edit, :diff, :delete] before_filter :find_issue, :only => [:new] before_filter :find_optional_project, :only => [:index] before_filter :authorize, :only => [:new, :edit, :diff] @@ -94,6 +94,15 @@ end end + def delete + (render_403; return false) unless User.current.allowed_to?(:delete_journal_entries, @project) + @journal.destroy + respond_to do |format| + format.html { render :nothing => true } + format.js + end + end + private def find_journal --- app/helpers/journals_helper.rb +++ app/helpers/journals_helper.rb @@ -43,4 +43,15 @@ onclick = "$.ajax({url: '#{url_for(url)}', type: 'get'}); return false;" link_to text, '#', options.merge(:onclick => onclick) end + + def render_journal_entry_delete(issue, journal, options={}) + deletable = User.current.logged? && User.current.allowed_to?(:delete_journal_entries, issue.project) + action = "$.ajax({url: '#{url_for({:controller => 'journals', :action => 'delete', :id => journal, :format => 'js'})}', type: 'get'})" + confirm = "if (confirm('#{l(:text_journal_confirm_delete)}')) {#{action}}" + onclick = "#{confirm};return false;" + link = link_to(image_tag('delete.png'), '#', + :onclick => onclick, + :title => l(:button_delete)) if deletable + content_tag('span', link.html_safe, :style => 'float:right;align:right;') + end end --- app/views/issues/_history.html.erb +++ app/views/issues/_history.html.erb @@ -5,7 +5,9 @@

<%= link_to "##{journal.indice}", {:anchor => "note-#{journal.indice}"}, :class => "journal-link" %> <%= avatar(journal.user, :size => "24") %> <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %> - <%= content_tag('span', l(:field_is_private), :class => 'private') if journal.private_notes? %>

+ <%= content_tag('span', l(:field_is_private), :class => 'private') if journal.private_notes? %> + <%= render_journal_entry_delete(issue, journal) if User.current.allowed_to?(:delete_journal_entries, @project) %> + <% if journal.details.any? %>