@@ -18,9 +18,9 | |||||
18 | class VersionsController < ApplicationController |
|
18 | class VersionsController < ApplicationController | |
19 | menu_item :roadmap |
|
19 | menu_item :roadmap | |
20 | model_object Version |
|
20 | model_object Version | |
21 | before_filter :find_model_object, :except => [:index, :new, :close_completed] |
|
21 | before_filter :find_model_object, :except => [:index, :new, :create, :close_completed] | |
22 | before_filter :find_project_from_association, :except => [:index, :new, :close_completed] |
|
22 | before_filter :find_project_from_association, :except => [:index, :new, :create, :close_completed] | |
23 | before_filter :find_project, :only => [:index, :new, :close_completed] |
|
23 | before_filter :find_project, :only => [:index, :new, :create, :close_completed] | |
24 | before_filter :authorize |
|
24 | before_filter :authorize | |
25 |
|
25 | |||
26 | helper :custom_fields |
|
26 | helper :custom_fields | |
@@ -63,6 +63,17 class VersionsController < ApplicationController | |||||
63 | attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing']) |
|
63 | attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing']) | |
64 | @version.attributes = attributes |
|
64 | @version.attributes = attributes | |
65 | end |
|
65 | end | |
|
66 | end | |||
|
67 | ||||
|
68 | def create | |||
|
69 | # TODO: refactor with code above in #new | |||
|
70 | @version = @project.versions.build | |||
|
71 | if params[:version] | |||
|
72 | attributes = params[:version].dup | |||
|
73 | attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing']) | |||
|
74 | @version.attributes = attributes | |||
|
75 | end | |||
|
76 | ||||
66 | if request.post? |
|
77 | if request.post? | |
67 | if @version.save |
|
78 | if @version.save | |
68 | respond_to do |format| |
|
79 | respond_to do |format| | |
@@ -79,7 +90,7 class VersionsController < ApplicationController | |||||
79 | end |
|
90 | end | |
80 | else |
|
91 | else | |
81 | respond_to do |format| |
|
92 | respond_to do |format| | |
82 | format.html |
|
93 | format.html { render :action => 'new' } | |
83 | format.js do |
|
94 | format.js do | |
84 | render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) } |
|
95 | render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) } | |
85 | end |
|
96 | end |
@@ -23,7 +23,7 | |||||
23 | <%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'), |
|
23 | <%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'), | |
24 | l(:label_version_new), |
|
24 | l(:label_version_new), | |
25 | 'version[name]', |
|
25 | 'version[name]', | |
26 |
{:controller => 'versions', :action => ' |
|
26 | {:controller => 'versions', :action => 'create', :project_id => @project}, | |
27 | :title => l(:label_version_new), |
|
27 | :title => l(:label_version_new), | |
28 | :tabindex => 200) if authorize_for('versions', 'new') %> |
|
28 | :tabindex => 200) if authorize_for('versions', 'new') %> | |
29 | </p> |
|
29 | </p> |
@@ -1,6 +1,6 | |||||
1 | <h2><%=l(:label_version_new)%></h2> |
|
1 | <h2><%=l(:label_version_new)%></h2> | |
2 |
|
2 | |||
3 |
<% labelled_tabular_form_for :version, @version, :url => { :action => ' |
|
3 | <% labelled_tabular_form_for :version, @version, :url => { :action => 'create', :project_id => @project } do |f| %> | |
4 | <%= render :partial => 'versions/form', :locals => { :f => f } %> |
|
4 | <%= render :partial => 'versions/form', :locals => { :f => f } %> | |
5 | <%= submit_tag l(:button_create) %> |
|
5 | <%= submit_tag l(:button_create) %> | |
6 | <% end %> No newline at end of file |
|
6 | <% end %> |
@@ -208,6 +208,7 ActionController::Routing::Routes.draw do |map| | |||||
208 | versions.connect 'versions/:action/:id', :conditions => {:method => :get} |
|
208 | versions.connect 'versions/:action/:id', :conditions => {:method => :get} | |
209 |
|
209 | |||
210 | versions.with_options :conditions => {:method => :post} do |version_actions| |
|
210 | versions.with_options :conditions => {:method => :post} do |version_actions| | |
|
211 | version_actions.connect 'projects/:project_id/versions', :action => 'create' | |||
211 | version_actions.connect 'versions/update/:id', :action => 'update' |
|
212 | version_actions.connect 'versions/update/:id', :action => 'update' | |
212 | version_actions.connect 'projects/:project_id/versions/close_completed', :action => 'close_completed' |
|
213 | version_actions.connect 'projects/:project_id/versions/close_completed', :action => 'close_completed' | |
213 | end |
|
214 | end |
@@ -50,7 +50,7 Redmine::AccessControl.map do |map| | |||||
50 | map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member |
|
50 | map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member | |
51 | map.permission :select_project_modules, {:projects => :modules}, :require => :member |
|
51 | map.permission :select_project_modules, {:projects => :modules}, :require => :member | |
52 | map.permission :manage_members, {:projects => :settings, :members => [:new, :edit, :destroy, :autocomplete_for_member]}, :require => :member |
|
52 | map.permission :manage_members, {:projects => :settings, :members => [:new, :edit, :destroy, :autocomplete_for_member]}, :require => :member | |
53 | map.permission :manage_versions, {:projects => :settings, :versions => [:new, :edit, :update, :close_completed, :destroy]}, :require => :member |
|
53 | map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member | |
54 | map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member |
|
54 | map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member | |
55 |
|
55 | |||
56 | map.project_module :issue_tracking do |map| |
|
56 | map.project_module :issue_tracking do |map| |
@@ -75,10 +75,10 class VersionsControllerTest < ActionController::TestCase | |||||
75 | assert_tag :tag => 'h2', :content => /1.0/ |
|
75 | assert_tag :tag => 'h2', :content => /1.0/ | |
76 | end |
|
76 | end | |
77 |
|
77 | |||
78 |
def test_ |
|
78 | def test_create | |
79 | @request.session[:user_id] = 2 # manager |
|
79 | @request.session[:user_id] = 2 # manager | |
80 | assert_difference 'Version.count' do |
|
80 | assert_difference 'Version.count' do | |
81 |
post : |
|
81 | post :create, :project_id => '1', :version => {:name => 'test_add_version'} | |
82 | end |
|
82 | end | |
83 | assert_redirected_to '/projects/ecookbook/settings/versions' |
|
83 | assert_redirected_to '/projects/ecookbook/settings/versions' | |
84 | version = Version.find_by_name('test_add_version') |
|
84 | version = Version.find_by_name('test_add_version') | |
@@ -86,10 +86,10 class VersionsControllerTest < ActionController::TestCase | |||||
86 | assert_equal 1, version.project_id |
|
86 | assert_equal 1, version.project_id | |
87 | end |
|
87 | end | |
88 |
|
88 | |||
89 |
def test_ |
|
89 | def test_create_from_issue_form | |
90 | @request.session[:user_id] = 2 # manager |
|
90 | @request.session[:user_id] = 2 # manager | |
91 | assert_difference 'Version.count' do |
|
91 | assert_difference 'Version.count' do | |
92 |
xhr :post, : |
|
92 | xhr :post, :create, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'} | |
93 | end |
|
93 | end | |
94 | assert_response :success |
|
94 | assert_response :success | |
95 | assert_select_rjs :replace, 'issue_fixed_version_id' |
|
95 | assert_select_rjs :replace, 'issue_fixed_version_id' |
@@ -257,7 +257,7 class RoutingTest < ActionController::IntegrationTest | |||||
257 | should_route :get, "/versions/show/1", :controller => 'versions', :action => 'show', :id => '1' |
|
257 | should_route :get, "/versions/show/1", :controller => 'versions', :action => 'show', :id => '1' | |
258 | should_route :get, "/versions/edit/1", :controller => 'versions', :action => 'edit', :id => '1' |
|
258 | should_route :get, "/versions/edit/1", :controller => 'versions', :action => 'edit', :id => '1' | |
259 |
|
259 | |||
260 |
should_route :post, "/projects/foo/versions |
|
260 | should_route :post, "/projects/foo/versions", :controller => 'versions', :action => 'create', :project_id => 'foo' | |
261 | should_route :post, "/versions/update/1", :controller => 'versions', :action => 'update', :id => '1' |
|
261 | should_route :post, "/versions/update/1", :controller => 'versions', :action => 'update', :id => '1' | |
262 |
|
262 | |||
263 | should_route :delete, "/versions/destroy/1", :controller => 'versions', :action => 'destroy', :id => '1' |
|
263 | should_route :delete, "/versions/destroy/1", :controller => 'versions', :action => 'destroy', :id => '1' |
General Comments 0
You need to be logged in to leave comments.
Login now