##// END OF EJS Templates
Removes RJS from WikisController....
Jean-Philippe Lang -
r9868:dee586e9eb96
parent child
Show More
@@ -0,0 +1,1
1 Element.update('tab-content-wiki', '<%= escape_javascript(render :partial => 'projects/settings/wiki') %>');
@@ -1,37 +1,36
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 class WikisController < ApplicationController
18 class WikisController < ApplicationController
19 menu_item :settings
19 menu_item :settings
20 before_filter :find_project, :authorize
20 before_filter :find_project, :authorize
21
21
22 # Create or update a project's wiki
22 # Create or update a project's wiki
23 def edit
23 def edit
24 @wiki = @project.wiki || Wiki.new(:project => @project)
24 @wiki = @project.wiki || Wiki.new(:project => @project)
25 @wiki.safe_attributes = params[:wiki]
25 @wiki.safe_attributes = params[:wiki]
26 @wiki.save if request.post?
26 @wiki.save if request.post?
27 render(:update) {|page| page.replace_html "tab-content-wiki", :partial => 'projects/settings/wiki'}
28 end
27 end
29
28
30 # Delete a project's wiki
29 # Delete a project's wiki
31 def destroy
30 def destroy
32 if request.post? && params[:confirm] && @project.wiki
31 if request.post? && params[:confirm] && @project.wiki
33 @project.wiki.destroy
32 @project.wiki.destroy
34 redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'wiki'
33 redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'wiki'
35 end
34 end
36 end
35 end
37 end
36 end
@@ -1,56 +1,90
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19 require 'wikis_controller'
19 require 'wikis_controller'
20
20
21 # Re-raise errors caught by the controller.
21 # Re-raise errors caught by the controller.
22 class WikisController; def rescue_action(e) raise e end; end
22 class WikisController; def rescue_action(e) raise e end; end
23
23
24 class WikisControllerTest < ActionController::TestCase
24 class WikisControllerTest < ActionController::TestCase
25 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :wikis
25 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :wikis
26
26
27 def setup
27 def setup
28 @controller = WikisController.new
28 @controller = WikisController.new
29 @request = ActionController::TestRequest.new
29 @request = ActionController::TestRequest.new
30 @response = ActionController::TestResponse.new
30 @response = ActionController::TestResponse.new
31 User.current = nil
31 User.current = nil
32 end
32 end
33
33
34 def test_create
34 def test_create
35 @request.session[:user_id] = 1
35 @request.session[:user_id] = 1
36 assert_nil Project.find(3).wiki
36 assert_nil Project.find(3).wiki
37 post :edit, :id => 3, :wiki => { :start_page => 'Start page' }
37
38 assert_response :success
38 assert_difference 'Wiki.count' do
39 xhr :post, :edit, :id => 3, :wiki => { :start_page => 'Start page' }
40 assert_response :success
41 assert_template 'edit'
42 assert_equal 'text/javascript', response.content_type
43 end
44
39 wiki = Project.find(3).wiki
45 wiki = Project.find(3).wiki
40 assert_not_nil wiki
46 assert_not_nil wiki
41 assert_equal 'Start page', wiki.start_page
47 assert_equal 'Start page', wiki.start_page
42 end
48 end
43
49
50 def test_create_with_failure
51 @request.session[:user_id] = 1
52
53 assert_no_difference 'Wiki.count' do
54 xhr :post, :edit, :id => 3, :wiki => { :start_page => '' }
55 assert_response :success
56 assert_template 'edit'
57 assert_equal 'text/javascript', response.content_type
58 end
59
60 assert_include 'errorExplanation', response.body
61 assert_include 'Start page can\\\'t be blank', response.body
62 end
63
64 def test_update
65 @request.session[:user_id] = 1
66
67 assert_no_difference 'Wiki.count' do
68 xhr :post, :edit, :id => 1, :wiki => { :start_page => 'Other start page' }
69 assert_response :success
70 assert_template 'edit'
71 assert_equal 'text/javascript', response.content_type
72 end
73
74 wiki = Project.find(1).wiki
75 assert_equal 'Other start page', wiki.start_page
76 end
77
44 def test_destroy
78 def test_destroy
45 @request.session[:user_id] = 1
79 @request.session[:user_id] = 1
46 post :destroy, :id => 1, :confirm => 1
80 post :destroy, :id => 1, :confirm => 1
47 assert_redirected_to :controller => 'projects', :action => 'settings', :id => 'ecookbook', :tab => 'wiki'
81 assert_redirected_to :controller => 'projects', :action => 'settings', :id => 'ecookbook', :tab => 'wiki'
48 assert_nil Project.find(1).wiki
82 assert_nil Project.find(1).wiki
49 end
83 end
50
84
51 def test_not_found
85 def test_not_found
52 @request.session[:user_id] = 1
86 @request.session[:user_id] = 1
53 post :destroy, :id => 999, :confirm => 1
87 post :destroy, :id => 999, :confirm => 1
54 assert_response 404
88 assert_response 404
55 end
89 end
56 end
90 end
General Comments 0
You need to be logged in to leave comments. Login now