diff --git app/controllers/projects_controller.rb app/controllers/projects_controller.rb index ef1b5c4..8323bf6 100644 --- app/controllers/projects_controller.rb +++ app/controllers/projects_controller.rb @@ -21,9 +21,9 @@ class ProjectsController < ApplicationController menu_item :settings, :only => :settings before_filter :find_project, :except => [ :index, :list, :new, :create, :copy ] - before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy] + before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive] before_filter :authorize_global, :only => [:new, :create] - before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ] + before_filter :require_admin, :only => [ :copy, :archive, :unarchive ] accept_rss_auth :index accept_api_auth :index, :show, :create, :update, :destroy @@ -232,10 +232,23 @@ class ProjectsController < ApplicationController # Delete @project def destroy @project_to_destroy = @project + if request.referer.include?(admin_projects_path) + @destroy_redirect = admin_projects_path + else + @destroy_redirect = home_path + p = @project + while p.parent + if User.current.allowed_to?(:view_project, p.parent) + @destroy_redirect = project_path(p.parent) + break + end + p = p.parent + end + end if api_request? || params[:confirm] @project_to_destroy.destroy respond_to do |format| - format.html { redirect_to admin_projects_path } + format.html { redirect_to @destroy_redirect } format.api { render_api_ok } end end diff --git app/views/projects/destroy.html.erb app/views/projects/destroy.html.erb index ac392b7..5bf7463 100644 --- app/views/projects/destroy.html.erb +++ app/views/projects/destroy.html.erb @@ -13,7 +13,7 @@ <%= form_tag(project_path(@project_to_destroy), :method => :delete) do %> <%= submit_tag l(:button_delete) %> - <%= link_to l(:button_cancel), :controller => 'admin', :action => 'projects' %> + <%= link_to l(:button_cancel), :back %> <% end %>

diff --git app/views/projects/show.html.erb app/views/projects/show.html.erb index 8452a02..8de59fe 100644 --- app/views/projects/show.html.erb +++ app/views/projects/show.html.erb @@ -9,6 +9,9 @@ <%= link_to l(:button_reopen), reopen_project_path(@project), :data => {:confirm => l(:text_are_you_sure)}, :method => :post, :class => 'icon icon-unlock' %> <% end %> <% end %> + <% if User.current.allowed_to?(:delete_project, @project) %> + <%= link_to(l(:button_delete), project_path(@project), :method => :delete, :class => 'icon icon-del') %> + <% end %>

<%=l(:label_overview)%>

diff --git config/locales/en-GB.yml config/locales/en-GB.yml index bc63046..d16f1b5 100644 --- config/locales/en-GB.yml +++ config/locales/en-GB.yml @@ -1035,6 +1035,7 @@ en-GB: setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project + permission_delete_project: Delete the project label_show_closed_projects: View closed projects button_close: Close button_reopen: Reopen diff --git config/locales/en.yml config/locales/en.yml index f215bfd..d42a7bc 100644 --- config/locales/en.yml +++ config/locales/en.yml @@ -413,6 +413,7 @@ en: permission_add_subprojects: Create subprojects permission_edit_project: Edit project permission_close_project: Close / reopen the project + permission_delete_project: Delete the project permission_select_project_modules: Select project modules permission_manage_members: Manage members permission_manage_project_activities: Manage project activities diff --git config/locales/fr.yml config/locales/fr.yml index 691336d..c8c7c3a 100644 --- config/locales/fr.yml +++ config/locales/fr.yml @@ -410,6 +410,7 @@ fr: permission_add_subprojects: Créer des sous-projets permission_edit_project: Modifier le projet permission_close_project: Fermer / réouvrir le projet + permission_delete_project: Détruire le projet permission_select_project_modules: Choisir les modules permission_manage_members: Gérer les membres permission_manage_versions: Gérer les versions diff --git lib/redmine.rb lib/redmine.rb index 43e3f14..c3a9452 100644 --- lib/redmine.rb +++ lib/redmine.rb @@ -92,6 +92,7 @@ Redmine::AccessControl.map do |map| map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member map.permission :close_project, {:projects => [:close, :reopen]}, :require => :member, :read => true + map.permission :delete_project, {:projects => [:destroy]}, :require => :member, :read => true map.permission :select_project_modules, {:projects => :modules}, :require => :member map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :create, :update, :destroy, :autocomplete]}, :require => :member map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member