##// END OF EJS Templates
Introduce virtual MenuNodes (#15880)....
Introduce virtual MenuNodes (#15880). They are characterized by having a blank url. they will only be rendered if the user is authorized to see at least one of its children. they render as links which do nothing when clicked. Patch by Jan Schulz-Hofen. git-svn-id: http://svn.redmine.org/redmine/trunk@15501 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14856:cda9c63d9c21
r15119:53710d80fc88
Show More
projects_controller.rb
234 lines | 7.1 KiB | text/x-ruby | RubyLexer
/ app / controllers / projects_controller.rb
Jean-Philippe Lang
Display stats about objects that can be copied....
r2861 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ProjectsController < ApplicationController
Jean-Philippe Lang
Highlight the current item of the main menu....
r1062 menu_item :overview
menu_item :settings, :only => :settings
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Eric Davis
Refactor: rename method ProjectsController#add to ProjectsController#new...
r3955 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_global, :only => [:new, :create]
Jean-Philippe Lang
Ability to allow non-admin users to create projects (#1007)....
r2651 before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
Jean-Philippe Lang
Separation of RSS/API auth actions....
r6077 accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy
Jean-Philippe Lang
Require password re-entry for sensitive actions (#19851)....
r13951 require_sudo_mode :destroy
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956
after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
Jean-Philippe Lang
Replaces the obsolete robots.txt with a cached action (#2491)....
r2317 if controller.request.post?
Jean-Philippe Lang
Fixed error on project creation due to unrecognized route....
r8072 controller.send :expire_action, :controller => 'welcome', :action => 'robots'
Jean-Philippe Lang
Replaces the obsolete robots.txt with a cached action (#2491)....
r2317 end
end
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 helper :custom_fields
Jean-Philippe Lang
Performance improvement on calendar and gantt (about 45% on gantt for large number of issues)....
r783 helper :issues
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 helper :queries
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 helper :repositories
Jean-Philippe Lang
Adds pagination to users list when adding project or group members (#9549)....
r10970 helper :members
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
Main project list now displays root projects with their subprojects....
r718 # Lists visible projects
Jean-Philippe Lang
Moved ProjectsController#list to ProjectsController#index....
r1450 def index
Jean-Philippe Lang
Adds a 'sorted' scope to Project....
r13159 scope = Project.visible.sorted
Jean-Philippe Lang
Adds new projects atom feed (#1290)....
r1451 respond_to do |format|
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773 format.html {
Jean-Philippe Lang
Ability to close projects (read-only) (#3640)....
r9700 unless params[:closed]
scope = scope.active
end
Jean-Philippe Lang
Adds a 'sorted' scope to Project....
r13159 @projects = scope.to_a
Jean-Philippe Lang
Adds new projects atom feed (#1290)....
r1451 }
Jean-Philippe Lang
Converts ProjectsController to use the new API template system....
r4342 format.api {
Jean-Philippe Lang
Makes /projects API accept same pagination parameters as other API collection resources....
r4458 @offset, @limit = api_offset_and_limit
Jean-Philippe Lang
Adds a 'sorted' scope to Project....
r13159 @project_count = scope.count
@projects = scope.offset(@offset).limit(@limit).to_a
Jean-Philippe Lang
XML REST API for Projects (#296)....
r3199 }
Jean-Philippe Lang
Adds new projects atom feed (#1290)....
r1451 format.atom {
Jean-Philippe Lang
Adds a 'sorted' scope to Project....
r13159 projects = scope.reorder(:created_on => :desc).limit(Setting.feeds_limit.to_i).to_a
Jean-Philippe Lang
Merged nested projects branch. Removes limit on subproject nesting (#594)....
r2302 render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}")
Jean-Philippe Lang
Adds new projects atom feed (#1290)....
r1451 }
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Eric Davis
Refactor: rename method ProjectsController#add to ProjectsController#new...
r3955 def new
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @issue_custom_fields = IssueCustomField.sorted.to_a
@trackers = Tracker.sorted.to_a
Jean-Philippe Lang
Use safe_attributes= just like in #create....
r9015 @project = Project.new
@project.safe_attributes = params[:project]
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 end
def create
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @issue_custom_fields = IssueCustomField.sorted.to_a
@trackers = Tracker.sorted.to_a
Jean-Philippe Lang
Declare safe attributes for User and Projects models....
r4378 @project = Project.new
@project.safe_attributes = params[:project]
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953
Jean-Philippe Lang
Cleans up parent project assignment in ProjectsController....
r13465 if @project.save
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 unless User.current.admin?
Jean-Philippe Lang
Moved controller code to new method Project#add_default_member....
r13160 @project.add_default_member(User.current)
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 end
respond_to do |format|
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773 format.html {
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 flash[:notice] = l(:notice_successful_create)
Jean-Philippe Lang
Use named routes in controllers....
r10754 if params[:continue]
attrs = {:parent_id => @project.parent_id}.reject {|k,v| v.nil?}
redirect_to new_project_path(attrs)
else
redirect_to settings_project_path(@project)
end
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 }
Jean-Philippe Lang
Adds a pseudo format to api template names and overrides ActionController#default_template so that api templates are chosen automatically....
r4352 format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 else
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 respond_to do |format|
Eric Davis
Refactor: rename method ProjectsController#add to ProjectsController#new...
r3955 format.html { render :action => 'new' }
Jean-Philippe Lang
Converts ProjectsController to use the new API template system....
r4342 format.api { render_validation_errors(@project) }
Jean-Philippe Lang
Ability to allow non-admin users to create projects (#1007)....
r2651 end
Eric Davis
Refactor: split ProjectsController#add into #add (GET) and #create (POST)....
r3953 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 def copy
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @issue_custom_fields = IssueCustomField.sorted.to_a
@trackers = Tracker.sorted.to_a
Jean-Philippe Lang
Display stats about objects that can be copied....
r2861 @source_project = Project.find(params[:id])
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 if request.get?
Jean-Philippe Lang
Display stats about objects that can be copied....
r2861 @project = Project.copy_from(@source_project)
Jean-Philippe Lang
Code cleanup....
r10676 @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 else
Jean-Philippe Lang
Adds an option to enable/disable email notifications during a project copy (#4672)....
r3494 Mailer.with_deliveries(params[:notifications] == '1') do
Jean-Philippe Lang
Declare safe attributes for User and Projects models....
r4378 @project = Project.new
@project.safe_attributes = params[:project]
Jean-Philippe Lang
Cleans up parent project assignment in ProjectsController....
r13465 if @project.copy(@source_project, :only => params[:only])
Jean-Philippe Lang
Adds an option to enable/disable email notifications during a project copy (#4672)....
r3494 flash[:notice] = l(:notice_successful_create)
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to settings_project_path(@project)
Jean-Philippe Lang
Adds an option to enable/disable email notifications during a project copy (#4672)....
r3494 elsif !@project.new_record?
# Project was created
# But some objects were not copied due to validation failures
# (eg. issues from disabled trackers)
# TODO: inform about that
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to settings_project_path(@project)
Jean-Philippe Lang
Adds an option to enable/disable email notifications during a project copy (#4672)....
r3494 end
Jean-Philippe Lang
Do not display the copy form when project copy is created....
r3128 end
Jean-Philippe Lang
Fixed a test failure....
r2878 end
rescue ActiveRecord::RecordNotFound
Jean-Philippe Lang
Code cleanup....
r10676 # source_project not found
render_404
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 end
Toshi MARUYAMA
remove trailing tabs from app/controllers/projects_controller.rb...
r11188
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # Show @project
def show
Jean-Philippe Lang
Test failure....
r10994 # try to redirect to the requested menu item
if params[:jump] && redirect_to_project_menu_item(@project, params[:jump])
Jean-Philippe Lang
Don't use && return....
r10991 return
Jean-Philippe Lang
Jump to the current tab when using the project quick-jump combo (#2364)....
r2208 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
Display all users roles on project overview (#3339)....
r2635 @users_by_role = @project.users_by_role
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @subprojects = @project.children.visible.to_a
@news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").to_a
Jean-Philippe Lang
Include subprojects on the issue list, calendar and gantt by default....
r1164 @trackers = @project.rolled_up_trackers
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
If 'Display subprojects issues on main projects' is set to false:...
r1283 cond = @project.project_condition(Setting.display_subprojects_issues?)
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Toshi MARUYAMA
Rails4: replace deprecated Relation#count with finder options at ProjectsController#show...
r12317 @open_issues_by_tracker = Issue.visible.open.where(cond).group(:tracker).count
@total_issues_by_tracker = Issue.visible.where(cond).group(:tracker).count
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
Adds a role setting that viewing all or own time entries (#8929)....
r13893 if User.current.allowed_to_view_all_time_entries?(@project)
Jean-Philippe Lang
Cleanup of finders with :conditions option....
r11733 @total_hours = TimeEntry.visible.where(cond).sum(:hours).to_f
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 @key = User.current.rss_key
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
XML REST API for Projects (#296)....
r3199 respond_to do |format|
format.html
Jean-Philippe Lang
Adds a pseudo format to api template names and overrides ActionController#default_template so that api templates are chosen automatically....
r4352 format.api
Jean-Philippe Lang
XML REST API for Projects (#296)....
r3199 end
Jean-Philippe Lang
v0.2.0...
r5 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
def settings
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @issue_custom_fields = IssueCustomField.sorted.to_a
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @issue_category ||= IssueCategory.new
@member ||= @project.members.new
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @trackers = Tracker.sorted.to_a
Jean-Philippe Lang
Error raised on project settings after project wiki is deleted (#18429)....
r13278 @wiki ||= @project.wiki || Wiki.new(:project => @project)
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def edit
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956 end
def update
Jean-Philippe Lang
Declare safe attributes for User and Projects models....
r4378 @project.safe_attributes = params[:project]
Jean-Philippe Lang
Cleans up parent project assignment in ProjectsController....
r13465 if @project.save
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956 respond_to do |format|
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773 format.html {
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to settings_project_path(@project)
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956 }
Jean-Philippe Lang
Fixed that 200 API responses have a body containing one space (#11388)....
r9792 format.api { render_api_ok }
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956 end
Jean-Philippe Lang
XML REST API for Projects (#296)....
r3199 else
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956 respond_to do |format|
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773 format.html {
Eric Davis
Refactor: split method ProjectsController#edit to ProjectsController#update....
r3956 settings
render :action => 'settings'
}
Jean-Philippe Lang
Converts ProjectsController to use the new API template system....
r4342 format.api { render_validation_errors(@project) }
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
v0.2.0...
r5 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Changes ProjectsController#modules param name and add tests....
r4527
Jean-Philippe Lang
Added project module concept....
r714 def modules
Jean-Philippe Lang
Changes ProjectsController#modules param name and add tests....
r4527 @project.enabled_module_names = params[:enabled_module_names]
Jean-Philippe Lang
Adds missing flash messages on project settings (#5043)....
r3451 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to settings_project_path(@project, :tab => 'modules')
Jean-Philippe Lang
Added project module concept....
r714 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Added the ability to archive projects:...
r546 def archive
Jean-Philippe Lang
Code cleanup, removed conditions on request method....
r13156 unless @project.archive
flash[:error] = l(:error_can_not_archive_project)
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 end
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to admin_projects_path(:status => params[:status])
Jean-Philippe Lang
Added the ability to archive projects:...
r546 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
Added the ability to archive projects:...
r546 def unarchive
Jean-Philippe Lang
Code cleanup, removed conditions on request method....
r13156 unless @project.active?
@project.unarchive
end
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to admin_projects_path(:status => params[:status])
Jean-Philippe Lang
Added the ability to archive projects:...
r546 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/projects_controller.rb....
r6773
Jean-Philippe Lang
Ability to close projects (read-only) (#3640)....
r9700 def close
@project.close
redirect_to project_path(@project)
end
def reopen
@project.reopen
redirect_to project_path(@project)
end
Jean-Philippe Lang
0.3 unstable...
r10 # Delete @project
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def destroy
Jean-Philippe Lang
Added the ability to archive projects:...
r546 @project_to_destroy = @project
Jean-Philippe Lang
Changed ProjectsController#destroy to DELETE only....
r8032 if api_request? || params[:confirm]
@project_to_destroy.destroy
respond_to do |format|
Jean-Philippe Lang
Use named routes in controllers....
r10754 format.html { redirect_to admin_projects_path }
Jean-Philippe Lang
Fixed that 200 API responses have a body containing one space (#11388)....
r9792 format.api { render_api_ok }
Jean-Philippe Lang
XML REST API for Projects (#296)....
r3199 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Added the ability to archive projects:...
r546 # hide project in layout
@project = nil
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Initial commit...
r2 end