##// END OF EJS Templates
Don't add the inclusion error when tracker is not set, the blank error is enough....
Don't add the inclusion error when tracker is not set, the blank error is enough. git-svn-id: http://svn.redmine.org/redmine/trunk@15492 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14856:cda9c63d9c21
r15110:90d14b71b365
Show More
versions_controller.rb
182 lines | 6.0 KiB | text/x-ruby | RubyLexer
/ app / controllers / versions_controller.rb
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 # 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/versions_controller.rb....
r6571 #
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/versions_controller.rb....
r6571 #
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 VersionsController < ApplicationController
Jean-Philippe Lang
Highlight the current item of the main menu....
r1062 menu_item :roadmap
Eric Davis
Refactor: Change the different find_object filters to share a common method....
r3483 model_object Version
Eric Davis
Refactor: split VersionsController#new into #new and #create...
r3976 before_filter :find_model_object, :except => [:index, :new, :create, :close_completed]
before_filter :find_project_from_association, :except => [:index, :new, :create, :close_completed]
Jean-Philippe Lang
Code cleanup....
r10675 before_filter :find_project_by_project_id, :only => [:index, :new, :create, :close_completed]
Jean-Philippe Lang
Adds a link to automatically close completed versions in project settings (#1245)....
r2909 before_filter :authorize
Jean-Philippe Lang
notice messages translation...
r15
Jean-Philippe Lang
Allow API auth on GET /versions/:id (#10241)....
r8760 accept_api_auth :index, :show, :create, :update, :destroy
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Jean-Philippe Lang
Adds custom fields for versions (#4219)....
r2950 helper :custom_fields
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 helper :projects
Eric Davis
Refactor: move method, ProjectsController#roadmap to VersionsController#index....
r3936
def index
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 respond_to do |format|
format.html {
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @trackers = @project.trackers.sorted.to_a
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 @versions = @project.shared_versions || []
@versions += @project.rolled_up_versions.visible if @with_subprojects
@versions = @versions.uniq.sort
Jean-Philippe Lang
Provide a direct access to completed versions form the roadmap....
r8579 unless params[:completed]
Jean-Philippe Lang
Closed versions should be marked as completed (#21433)....
r14637 @completed_versions = @versions.select(&:completed?)
Jean-Philippe Lang
Provide a direct access to completed versions form the roadmap....
r8579 @versions -= @completed_versions
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 @issues_by_version = {}
Jean-Philippe Lang
Use a single query to retrieve issues on the roadmap....
r8937 if @selected_tracker_ids.any? && @versions.any?
Jean-Philippe Lang
Cleanup of finders with :conditions option....
r11733 issues = Issue.visible.
includes(:project, :tracker).
preload(:status, :priority, :fixed_version).
where(:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)).
order("#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
Jean-Philippe Lang
Use a single query to retrieve issues on the roadmap....
r8937 @issues_by_version = issues.group_by(&:fixed_version)
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 end
@versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
}
format.api {
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @versions = @project.shared_versions.to_a
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 }
Eric Davis
Refactor: move method, ProjectsController#roadmap to VersionsController#index....
r3936 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Jean-Philippe Lang
Added version details view accessible from the roadmap....
r942 def show
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 respond_to do |format|
format.html {
Jean-Philippe Lang
Replaces find(:all) calls....
r10687 @issues = @version.fixed_issues.visible.
includes(:status, :tracker, :priority).
reorder("#{Tracker.table_name}.position, #{Issue.table_name}.id").
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 to_a
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 }
format.api
end
Jean-Philippe Lang
Added version details view accessible from the roadmap....
r942 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Jean-Philippe Lang
Moves ProjectsController#add_version to VersionsController#new....
r3434 def new
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a version (#10390)....
r9017 @version = @project.versions.build
@version.safe_attributes = params[:version]
Jean-Philippe Lang
Displays the full form when creating a version from the issue form so that required custom fields can be filled (#7398)....
r8725
respond_to do |format|
format.html
Jean-Philippe Lang
Start removing the RJS stuff....
r9860 format.js
Jean-Philippe Lang
Displays the full form when creating a version from the issue form so that required custom fields can be filled (#7398)....
r8725 end
Eric Davis
Refactor: split VersionsController#new into #new and #create...
r3976 end
def create
@version = @project.versions.build
if params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a version (#10390)....
r9017 @version.safe_attributes = attributes
Eric Davis
Refactor: split VersionsController#new into #new and #create...
r3976 end
Jean-Philippe Lang
Moves ProjectsController#add_version to VersionsController#new....
r3434 if request.post?
if @version.save
respond_to do |format|
format.html do
flash[:notice] = l(:notice_successful_create)
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_back_or_default settings_project_path(@project, :tab => 'versions')
Jean-Philippe Lang
Moves ProjectsController#add_version to VersionsController#new....
r3434 end
Jean-Philippe Lang
Start removing the RJS stuff....
r9860 format.js
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 format.api do
Jean-Philippe Lang
Makes versions resource shallow (#7403)....
r6063 render :action => 'show', :status => :created, :location => version_url(@version)
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 end
Jean-Philippe Lang
Moves ProjectsController#add_version to VersionsController#new....
r3434 end
else
respond_to do |format|
Eric Davis
Refactor: split VersionsController#new into #new and #create...
r3976 format.html { render :action => 'new' }
Jean-Philippe Lang
Start removing the RJS stuff....
r9860 format.js { render :action => 'new' }
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 format.api { render_validation_errors(@version) }
Jean-Philippe Lang
Moves ProjectsController#add_version to VersionsController#new....
r3434 end
end
end
end
Eric Davis
Refactor: Split VersionsController#edit into #edit and #update...
r3974
Jean-Philippe Lang
notice messages translation...
r15 def edit
Eric Davis
Refactor: Split VersionsController#edit into #edit and #update...
r3974 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Eric Davis
Refactor: Split VersionsController#edit into #edit and #update...
r3974 def update
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 if params[:version]
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 attributes = params[:version].dup
attributes.delete('sharing') unless @version.allowed_sharings.include?(attributes['sharing'])
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a version (#10390)....
r9017 @version.safe_attributes = attributes
if @version.save
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_back_or_default settings_project_path(@project, :tab => 'versions')
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 }
Jean-Philippe Lang
Fixed that 200 API responses have a body containing one space (#11388)....
r9792 format.api { render_api_ok }
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 end
Jean-Philippe Lang
Fixed: "Template is missing" error when validation fails on version edit (#6766)....
r4240 else
respond_to do |format|
format.html { render :action => 'edit' }
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 format.api { render_validation_errors(@version) }
Jean-Philippe Lang
Fixed: "Template is missing" error when validation fails on version edit (#6766)....
r4240 end
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 end
Jean-Philippe Lang
notice messages translation...
r15 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Jean-Philippe Lang
Adds a link to automatically close completed versions in project settings (#1245)....
r2909 def close_completed
Eric Davis
Refactor: convert VersionsController to a REST resource....
r3983 if request.put?
Jean-Philippe Lang
Adds a link to automatically close completed versions in project settings (#1245)....
r2909 @project.close_completed_versions
end
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to settings_project_path(@project, :tab => 'versions')
Jean-Philippe Lang
Adds a link to automatically close completed versions in project settings (#1245)....
r2909 end
Jean-Philippe Lang
notice messages translation...
r15
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def destroy
Jean-Philippe Lang
Disallow users to delete a version referenced by a custom field (#20159)....
r13994 if @version.deletable?
Jean-Philippe Lang
Do not raise an error when destroying a Version with assigned issues....
r3554 @version.destroy
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 respond_to do |format|
Jean-Philippe Lang
Use named routes in controllers....
r10754 format.html { redirect_back_or_default settings_project_path(@project, :tab => 'versions') }
Jean-Philippe Lang
Fixed that 200 API responses have a body containing one space (#11388)....
r9792 format.api { render_api_ok }
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 end
Jean-Philippe Lang
Do not raise an error when destroying a Version with assigned issues....
r3554 else
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 respond_to do |format|
format.html {
flash[:error] = l(:notice_unable_delete_version)
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to settings_project_path(@project, :tab => 'versions')
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 }
format.api { head :unprocessable_entity }
end
Jean-Philippe Lang
Do not raise an error when destroying a Version with assigned issues....
r3554 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/versions_controller.rb....
r6571
Jean-Philippe Lang
Added version details view accessible from the roadmap....
r942 def status_by
respond_to do |format|
format.html { render :action => 'show' }
Jean-Philippe Lang
Removes RJS from VersionsController....
r9869 format.js
Jean-Philippe Lang
Added version details view accessible from the roadmap....
r942 end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Code cleanup....
r10675 private
Eric Davis
Refactor: move method, ProjectsController#roadmap to VersionsController#index....
r3936
def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
if ids = params[:tracker_ids]
@selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
else
@selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
end
end
Jean-Philippe Lang
Initial commit...
r2 end