Project

General

Profile

Patch #15616 » delete-project.diff

Add a permission setting allowing members to delete their own projects - Anthony Mallet, 2013-12-07 01:05

View differences:

app/controllers/projects_controller.rb
21 21
  menu_item :settings, :only => :settings
22 22

  
23 23
  before_filter :find_project, :except => [ :index, :list, :new, :create, :copy ]
24
  before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
24
  before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive]
25 25
  before_filter :authorize_global, :only => [:new, :create]
26
  before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
26
  before_filter :require_admin, :only => [ :copy, :archive, :unarchive ]
27 27
  accept_rss_auth :index
28 28
  accept_api_auth :index, :show, :create, :update, :destroy
29 29

  
......
232 232
  # Delete @project
233 233
  def destroy
234 234
    @project_to_destroy = @project
235
    if request.referer.include?(admin_projects_path)
236
      @destroy_redirect = admin_projects_path
237
    else
238
      @destroy_redirect = home_path
239
      p = @project
240
      while p.parent
241
        if User.current.allowed_to?(:view_project, p.parent)
242
          @destroy_redirect = project_path(p.parent)
243
          break
244
        end
245
        p = p.parent
246
      end
247
    end
235 248
    if api_request? || params[:confirm]
236 249
      @project_to_destroy.destroy
237 250
      respond_to do |format|
238
        format.html { redirect_to admin_projects_path }
251
        format.html { redirect_to @destroy_redirect }
239 252
        format.api  { render_api_ok }
240 253
      end
241 254
    end
app/views/projects/destroy.html.erb
13 13
    <%= form_tag(project_path(@project_to_destroy), :method => :delete) do %>
14 14
    <label><%= check_box_tag 'confirm', 1 %> <%= l(:general_text_Yes) %></label>
15 15
    <%= submit_tag l(:button_delete) %>
16
    <%= link_to l(:button_cancel), :controller => 'admin', :action => 'projects' %>
16
    <%= link_to l(:button_cancel), :back %>
17 17
    <% end %>
18 18
</p>
19 19
</div>
app/views/projects/show.html.erb
9 9
      <%= link_to l(:button_reopen), reopen_project_path(@project), :data => {:confirm => l(:text_are_you_sure)}, :method => :post, :class => 'icon icon-unlock' %>
10 10
    <% end %>
11 11
  <% end %>
12
  <% if User.current.allowed_to?(:delete_project, @project) %>
13
    <%= link_to(l(:button_delete), project_path(@project), :method => :delete, :class => 'icon icon-del') %>
14
  <% end %>
12 15
</div>
13 16

  
14 17
<h2><%=l(:label_overview)%></h2>
config/locales/en-GB.yml
1035 1035
  setting_session_timeout: Session inactivity timeout
1036 1036
  label_session_expiration: Session expiration
1037 1037
  permission_close_project: Close / reopen the project
1038
  permission_delete_project: Delete the project
1038 1039
  label_show_closed_projects: View closed projects
1039 1040
  button_close: Close
1040 1041
  button_reopen: Reopen
config/locales/en.yml
413 413
  permission_add_subprojects: Create subprojects
414 414
  permission_edit_project: Edit project
415 415
  permission_close_project: Close / reopen the project
416
  permission_delete_project: Delete the project
416 417
  permission_select_project_modules: Select project modules
417 418
  permission_manage_members: Manage members
418 419
  permission_manage_project_activities: Manage project activities
config/locales/fr.yml
410 410
  permission_add_subprojects: Créer des sous-projets
411 411
  permission_edit_project: Modifier le projet
412 412
  permission_close_project: Fermer / réouvrir le projet
413
  permission_delete_project: Détruire le projet
413 414
  permission_select_project_modules: Choisir les modules
414 415
  permission_manage_members: Gérer les membres
415 416
  permission_manage_versions: Gérer les versions
lib/redmine.rb
92 92
  map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin
93 93
  map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member
94 94
  map.permission :close_project, {:projects => [:close, :reopen]}, :require => :member, :read => true
95
  map.permission :delete_project, {:projects => [:destroy]}, :require => :member, :read => true
95 96
  map.permission :select_project_modules, {:projects => :modules}, :require => :member
96 97
  map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :create, :update, :destroy, :autocomplete]}, :require => :member
97 98
  map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member
    (1-1/1)