Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 366
- Log:
Hub integration.
- Author:
- rool
- Date:
- Sat Mar 19 22:06:05 +0000 2011
- Size:
- 5969 Bytes
1 | class AdminController < ApplicationController |
2 | |
3 | layout 'default' |
4 | cache_sweeper :web_sweeper |
5 | before_filter :dnsbl_check |
6 | |
7 | # 2011-03-14 (ADH): Hub integration. |
8 | |
9 | @@hubssolib_permissions = HubSsoLib::Permissions.new({ |
10 | :create_system => [ :admin, :webmaster ], |
11 | :create_web => [ :admin, :webmaster ], |
12 | :edit_web => [ :admin, :webmaster ], |
13 | :remove_orphaned_pages => [ :admin, :webmaster ], |
14 | :remove_orphaned_pages_in_category => [ :admin, :webmaster ], |
15 | :delete_web => [ :admin, :webmaster ], |
16 | :delete_files => [ :admin, :webmaster ] |
17 | }) |
18 | |
19 | def AdminController.hubssolib_permissions |
20 | @@hubssolib_permissions |
21 | end |
22 | |
23 | def create_system |
24 | if @wiki.setup? |
25 | flash[:error] = |
26 | "Wiki has already been created in '#{@wiki.storage_path}'. " + |
27 | "Shut down Instiki and delete this directory if you want to recreate it from scratch." + |
28 | "\n\n" + |
29 | "(WARNING: this will destroy content of your current wiki)." |
30 | redirect_home(@wiki.webs.keys.first) |
31 | elsif params['web_name'] |
32 | # form submitted -> create a wiki |
33 | @wiki.setup(params['password'], params['web_name'], params['web_address']) |
34 | flash[:info] = "Your new wiki '#{params['web_name']}' is created!\n" + |
35 | "Please edit its home page and press Submit when finished." |
36 | redirect_to :web => params['web_address'], :controller => 'wiki', :action => 'new', |
37 | :id => 'HomePage' |
38 | else |
39 | # no form submitted -> go to template |
40 | end |
41 | end |
42 | |
43 | def create_web |
44 | if params['address'] |
45 | return unless is_post |
46 | # form submitted |
47 | if @wiki.authenticate(params['system_password']) |
48 | begin |
49 | @wiki.create_web(params['name'], params['address']) |
50 | flash[:info] = "New web '#{params['name']}' successfully created." |
51 | redirect_to :web => params['address'], :controller => 'wiki', :action => 'new', |
52 | :id => 'HomePage' |
53 | rescue Instiki::ValidationError => e |
54 | @error = e.message |
55 | # and re-render the form again |
56 | end |
57 | else |
58 | flash[:error] = "System Password incorrect. Try again." |
59 | redirect_to :controller => 'admin', :action => 'create_web' |
60 | end |
61 | else |
62 | # no form submitted -> render template |
63 | end |
64 | end |
65 | |
66 | def edit_web |
67 | system_password = params['system_password'] |
68 | if system_password |
69 | return unless is_post |
70 | # form submitted |
71 | if wiki.authenticate(system_password) |
72 | begin |
73 | raise Instiki::ValidationError.new("Password for this Web didn't match") unless |
74 | (params['password'].empty? or params['password'] == params['password_check']) |
75 | wiki.edit_web( |
76 | @web.address, params['address'], params['name'], |
77 | params['markup'].intern, |
78 | params['color'], params['additional_style'], |
79 | params['safe_mode'] ? true : false, |
80 | params['password'].empty? ? nil : params['password'], |
81 | params['published'] ? true : false, |
82 | params['brackets_only'] ? true : false, |
83 | params['count_pages'] ? true : false, |
84 | params['allow_uploads'] ? true : false, |
85 | params['max_upload_size'] |
86 | ) |
87 | flash[:info] = "Web '#{params['address']}' was successfully updated" |
88 | redirect_home(params['address']) |
89 | rescue Instiki::ValidationError => e |
90 | logger.warn e.message |
91 | @error = e.message |
92 | # and re-render the same template again |
93 | end |
94 | else |
95 | @error = password_error(system_password) |
96 | # and re-render the same template again |
97 | end |
98 | else |
99 | # no form submitted - go to template |
100 | end |
101 | end |
102 | |
103 | def remove_orphaned_pages |
104 | return unless is_post |
105 | if wiki.authenticate(params['system_password_orphaned']) |
106 | wiki.remove_orphaned_pages(@web_name) |
107 | flash[:info] = 'Orphaned pages removed' |
108 | redirect_to :controller => 'wiki', :web => @web_name, :action => 'list' |
109 | else |
110 | flash[:error] = password_error(params['system_password_orphaned']) |
111 | redirect_to :controller => 'admin', :web => @web_name, :action => 'edit_web' |
112 | end |
113 | end |
114 | |
115 | def remove_orphaned_pages_in_category |
116 | return unless is_post |
117 | if wiki.authenticate(params['system_password_orphaned_in_category']) |
118 | category = params['category'] |
119 | wiki.remove_orphaned_pages_in_category(@web_name, category) |
120 | flash[:info] = "Orphaned pages in category \"#{category}\" removed" |
121 | redirect_to :controller => 'wiki', :web => @web_name, :action => 'list' |
122 | else |
123 | flash[:error] = password_error(params['system_password_orphaned_in_category']) |
124 | redirect_to :controller => 'admin', :web => @web_name, :action => 'edit_web' |
125 | end |
126 | end |
127 | |
128 | def delete_web |
129 | return unless is_post |
130 | if wiki.authenticate(params['system_password_delete_web']) |
131 | wiki.delete_web(@web_name) |
132 | flash[:info] = "Web \"#{@web_name}\" has been deleted." |
133 | redirect_to :controller => 'wiki', :action => 'web_list' |
134 | else |
135 | flash[:error] = password_error(params['system_password_delete_web']) |
136 | redirect_to :controller => 'admin', :web => @web_name, :action => 'edit_web' |
137 | end |
138 | end |
139 | |
140 | def delete_files |
141 | return unless is_post |
142 | some_deleted = false |
143 | if wiki.authenticate(params['system_password']) |
144 | params.each do |file, p| |
145 | if p == 'delete' |
146 | WikiFile.find_by_file_name(file).destroy |
147 | some_deleted = true |
148 | end |
149 | end |
150 | flash[:info] = "File(s) successfully deleted." if some_deleted |
151 | else |
152 | flash[:error] = password_error(params['system_password']) |
153 | end |
154 | redirect_to :back |
155 | end |
156 | |
157 | end |