]> source.dussan.org Git - redmine.git/commitdiff
add function of bulk delete time entries (#7996).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 4 Apr 2011 11:54:47 +0000 (11:54 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 4 Apr 2011 11:54:47 +0000 (11:54 +0000)
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
app/views/context_menus/time_entries.html.erb
config/locales/en.yml

index 6d78c514fac71fa64af6f617bf98e1c754bb1f3f..882000817517671d8d32d0a0b353fb73d8be12c0 100644 (file)
@@ -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
index 0eeac97876abc4f0efdaf784cc0545a4adfc7f46..ed6ba4ee76ddf976ed7cb14312617f2113f6d58b 100644 (file)
        <% end %>
 
   <%= call_hook(:view_time_entries_context_menu_end, {:time_entries => @time_entries, :can => @can, :back => @back }) %>
+
+  <li>
+    <%= 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] %>
+  </li>
 </ul>
index 2d8efb4dd419ab47e50ccc19574f2bf85829f6a3..49c2bdbb605ecf1bc53c85de1b622b1276f966c2 100644 (file)
@@ -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