From 098fabd6ce4c4b69ff97a2c888388e1b1a5d288a Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Mon, 4 Apr 2011 11:54:47 +0000 Subject: [PATCH] add function of bulk delete time entries (#7996). Contributed by Adam Soltys. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5316 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/timelog_controller.rb | 44 ++++++++++--------- app/views/context_menus/time_entries.html.erb | 6 +++ config/locales/en.yml | 1 + 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/app/controllers/timelog_controller.rb b/app/controllers/timelog_controller.rb index 6d78c514f..882000817 100644 --- a/app/controllers/timelog_controller.rb +++ b/app/controllers/timelog_controller.rb @@ -18,8 +18,8 @@ class TimelogController < ApplicationController menu_item :issues before_filter :find_project, :only => [:new, :create] - before_filter :find_time_entry, :only => [:show, :edit, :update, :destroy] - before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update] + before_filter :find_time_entry, :only => [:show, :edit, :update] + before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy] before_filter :authorize, :except => [:index] before_filter :find_optional_project, :only => [:index] accept_key_auth :index, :show, :create, :update, :destroy @@ -180,30 +180,34 @@ class TimelogController < ApplicationController end end set_flash_from_bulk_time_entry_save(@time_entries, unsaved_time_entry_ids) - redirect_back_or_default({:controller => 'timelog', :action => 'index', :project_id => @project}) + redirect_back_or_default({:controller => 'timelog', :action => 'index', :project_id => @projects.first}) end verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed } def destroy - if @time_entry.destroy && @time_entry.destroyed? - respond_to do |format| - format.html { - flash[:notice] = l(:notice_successful_delete) - redirect_to :back - } - format.api { head :ok } - end - else - respond_to do |format| - format.html { - flash[:error] = l(:notice_unable_delete_time_entry) - redirect_to :back - } - format.api { render_validation_errors(@time_entry) } + @time_entries.each do |t| + begin + unless t.destroy && t.destroyed? + respond_to do |format| + format.html { + flash[:error] = l(:notice_unable_delete_time_entry) + redirect_to :back + } + format.api { render_validation_errors(t) } + end + end + rescue ::ActionController::RedirectBackError + redirect_to :action => 'index', :project_id => @projects.first end end - rescue ::ActionController::RedirectBackError - redirect_to :action => 'index', :project_id => @time_entry.project + + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_delete) + redirect_back_or_default(:action => 'index', :project_id => @projects.first) + } + format.api { head :ok } + end end private diff --git a/app/views/context_menus/time_entries.html.erb b/app/views/context_menus/time_entries.html.erb index 0eeac9787..ed6ba4ee7 100644 --- a/app/views/context_menus/time_entries.html.erb +++ b/app/views/context_menus/time_entries.html.erb @@ -24,4 +24,10 @@ <% end %> <%= call_hook(:view_time_entries_context_menu_end, {:time_entries => @time_entries, :can => @can, :back => @back }) %> + +
  • + <%= context_menu_link l(:button_delete), + {:controller => 'timelog', :action => 'destroy', :ids => @time_entries.collect(&:id), :back_url => @back}, + :method => :delete, :confirm => l(:text_time_entries_destroy_confirmation), :class => 'icon-del', :disabled => !@can[:delete] %> +
  • diff --git a/config/locales/en.yml b/config/locales/en.yml index 2d8efb4dd..49c2bdbb6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -894,6 +894,7 @@ en: text_status_changed_by_changeset: "Applied in changeset %{value}." text_time_logged_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' + text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?' text_select_project_modules: 'Select modules to enable for this project:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Attachments directory writable