##// END OF EJS Templates
Use safe_attributes for user preferences....
Use safe_attributes for user preferences. git-svn-id: http://svn.redmine.org/redmine/trunk@15688 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15273:ee82a55602a2
r15306:43d8ab8288e1
Show More
projects_controller.rb
228 lines | 6.9 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
Jean-Philippe Lang
Use .before_action instead of .before_filter....
r15273 before_action :find_project, :except => [ :index, :list, :new, :create, :copy ]
before_action :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
before_action :authorize_global, :only => [:new, :create]
before_action :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
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
Limits the tracker list in filters and issue counts (#285)....
r15158 @trackers = @project.rolled_up_trackers.visible
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