diff options
Diffstat (limited to 'app/controllers/versions_controller.rb')
-rw-r--r-- | app/controllers/versions_controller.rb | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb index 69b253c68..0ea440e12 100644 --- a/app/controllers/versions_controller.rb +++ b/app/controllers/versions_controller.rb @@ -17,8 +17,8 @@ class VersionsController < ApplicationController menu_item :roadmap - before_filter :find_version, :except => :close_completed - before_filter :find_project, :only => :close_completed + before_filter :find_version, :except => [:new, :close_completed] + before_filter :find_project, :only => [:new, :close_completed] before_filter :authorize helper :custom_fields @@ -27,6 +27,38 @@ class VersionsController < ApplicationController def show end + def new + @version = @project.versions.build + if params[:version] + attributes = params[:version].dup + attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing']) + @version.attributes = attributes + end + if request.post? + if @version.save + respond_to do |format| + format.html do + flash[:notice] = l(:notice_successful_create) + redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project + end + format.js do + # IE doesn't support the replace_html rjs method for select box options + render(:update) {|page| page.replace "issue_fixed_version_id", + content_tag('select', '<option></option>' + version_options_for_select(@project.shared_versions.open, @version), :id => 'issue_fixed_version_id', :name => 'issue[fixed_version_id]') + } + end + end + else + respond_to do |format| + format.html + format.js do + render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) } + end + end + end + end + end + def edit if request.post? && params[:version] attributes = params[:version].dup |