Commit d4a4e68c59c4c6cda2bd90ae5941f26b0a71b8bd
1 parent
49c83e28
Exists in
master
and in
28 other branches
ActionItem117: still renaming
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@911 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
14 changed files
with
622 additions
and
622 deletions
Show diff stats
@@ -0,0 +1,361 @@ | @@ -0,0 +1,361 @@ | ||
1 | +class CmsController < MyProfileController | ||
2 | + | ||
3 | + define_option :page_class, Article | ||
4 | + | ||
5 | + protect 'post_content', :profile, :only => [:edit, :new, :reorder, :delete] | ||
6 | + | ||
7 | + protected | ||
8 | + | ||
9 | + def profile | ||
10 | + Profile.find_by_identifier(params[:profile]) | ||
11 | + end | ||
12 | + | ||
13 | + def user | ||
14 | + current_user.person | ||
15 | + end | ||
16 | + | ||
17 | + | ||
18 | + public | ||
19 | + | ||
20 | + ############################################################# | ||
21 | + # everything below was copied from comatose | ||
22 | + ############################################################# | ||
23 | + | ||
24 | + define_option :original_template_root, nil | ||
25 | + define_option :plugin_layout_path, File.join( '..', '..', '..', 'vendor', 'plugins', 'comatose', 'views', 'layouts' ) | ||
26 | + | ||
27 | + before_filter :handle_authorization | ||
28 | + before_filter :set_content_type | ||
29 | + | ||
30 | + # Shows the page tree | ||
31 | + def index | ||
32 | + @root_pages = [fetch_root_page].flatten | ||
33 | + end | ||
34 | + | ||
35 | + # Edit a specfic page (posts back) | ||
36 | + def edit | ||
37 | + # Clear the page cache for this page... ? | ||
38 | + @page = page_class.find params[:id] | ||
39 | + @root_pages = [fetch_root_page].flatten | ||
40 | + if request.post? | ||
41 | + @page.update_attributes(params[:page]) | ||
42 | + @page.updated_on = Time.now | ||
43 | + @page.author = fetch_author_name | ||
44 | + if @page.save | ||
45 | + expire_cms_page @page | ||
46 | + expire_cms_fragment @page | ||
47 | + flash[:notice] = "Saved changes to '#{@page.title}'" | ||
48 | + redirect_to :controller=>self.controller_name, :action=>'index' | ||
49 | + end | ||
50 | + end | ||
51 | + end | ||
52 | + | ||
53 | + # Create a new page (posts back) | ||
54 | + def new | ||
55 | + @root_pages = [fetch_root_page].flatten | ||
56 | + if request.post? | ||
57 | + @page = page_class.new params[:page] | ||
58 | + @page.author = fetch_author_name | ||
59 | + if @page.save | ||
60 | + flash[:notice] = "Created page '#{@page.title}'" | ||
61 | + redirect_to :controller=>self.controller_name, :action=>'index' | ||
62 | + end | ||
63 | + else | ||
64 | + @page = page_class.new(:parent_id=>(params[:parent] || nil)) | ||
65 | + end | ||
66 | + end | ||
67 | + | ||
68 | + # Saves position of child pages | ||
69 | + def reorder | ||
70 | + # If it's AJAX, do our thing and move on... | ||
71 | + if request.xhr? | ||
72 | + params["page_list_#{params[:id]}"].each_with_index { |id,idx| page_class.update(id, :position => idx) } | ||
73 | + expire_cms_page page_class.find(params[:id]) | ||
74 | + render :text=>'Updated sort order', :layout=>false | ||
75 | + else | ||
76 | + @page = page_class.find params[:id] | ||
77 | + if params.has_key? :cmd | ||
78 | + @target = page_class.find params[:page] | ||
79 | + case params[:cmd] | ||
80 | + when 'up' then @target.move_higher | ||
81 | + when 'down' then @target.move_lower | ||
82 | + end | ||
83 | + redirect_to :action=>'reorder', :id=>@page | ||
84 | + end | ||
85 | + end | ||
86 | + end | ||
87 | + | ||
88 | + # Allows comparing between two versions of a page's content | ||
89 | + def versions | ||
90 | + @page = page_class.find params[:id] | ||
91 | + @version_num = (params[:version] || @page.versions.length).to_i | ||
92 | + @version = @page.find_version(@version_num) | ||
93 | + end | ||
94 | + | ||
95 | + # Reverts a page to a specific version... | ||
96 | + def set_version | ||
97 | + if request.post? | ||
98 | + @page = page_class.find params[:id] | ||
99 | + @version_num = params[:version] | ||
100 | + @page.revert_to!(@version_num) | ||
101 | + end | ||
102 | + redirect_to :controller=>self.controller_name, :action=>'index' | ||
103 | + end | ||
104 | + | ||
105 | + # Deletes the specified page | ||
106 | + def delete | ||
107 | + @page = page_class.find params[:id] | ||
108 | + if request.post? | ||
109 | + expire_cms_pages_from_bottom @page | ||
110 | + expire_cms_fragments_from_bottom @page | ||
111 | + @page.destroy | ||
112 | + flash[:notice] = "Deleted page '#{@page.title}'" | ||
113 | + redirect_to :controller=>self.controller_name, :action=>'index' | ||
114 | + end | ||
115 | + end | ||
116 | + | ||
117 | + # Returns a preview of the page content... | ||
118 | + def preview | ||
119 | + begin | ||
120 | + page = page_class.new(params[:page]) | ||
121 | + page.author = fetch_author_name | ||
122 | + if params.has_key? :version | ||
123 | + content = page.to_html( {'params'=>params.stringify_keys, 'version'=>params[:version]} ) | ||
124 | + else | ||
125 | + content = page.to_html( {'params'=>params.stringify_keys} ) | ||
126 | + end | ||
127 | + rescue SyntaxError | ||
128 | + content = "<p>There was an error generating the preview.</p><p><pre>#{$!.to_s.gsub(/\</, '<')}</pre></p>" | ||
129 | + rescue | ||
130 | + content = "<p>There was an error generating the preview.</p><p><pre>#{$!.to_s.gsub(/\</, '<')}</pre></p>" | ||
131 | + end | ||
132 | + render :text=>content, :layout => false | ||
133 | + end | ||
134 | + | ||
135 | + # Expires the entire page cache | ||
136 | + def expire_page_cache | ||
137 | + expire_cms_pages_from_bottom( fetch_root_page ) | ||
138 | + expire_cms_fragments_from_bottom( fetch_root_page ) | ||
139 | + flash[:notice] = "Page cache has been flushed" | ||
140 | + redirect_to :controller=>self.controller_name, :action=>'index' | ||
141 | + end | ||
142 | + | ||
143 | + # Walks the page tree and generates HTML files in your /public | ||
144 | + # folder... It will skip pages that have a 'nocache' keyword | ||
145 | + # TODO: Make page cache generation work when in :plugin mode | ||
146 | + def generate_page_cache | ||
147 | + if runtime_mode == :plugin | ||
148 | + @errors = ["Page cache cannot be generated in plugin mode"] | ||
149 | + else | ||
150 | + @errors = generate_all_pages_html(params) | ||
151 | + end | ||
152 | + if @errors.length == 0 | ||
153 | + flash[:notice] = "Pages Cached Successfully" | ||
154 | + else | ||
155 | + flash[:notice] = "Pages Cache Error(s): #{@errors.join(', ')}" | ||
156 | + flash[:cache_errors] = @errors | ||
157 | + end | ||
158 | + redirect_to :controller=>self.controller_name, :action=>'index' | ||
159 | + end | ||
160 | + | ||
161 | + | ||
162 | + protected | ||
163 | + | ||
164 | + def handle_authorization | ||
165 | + if Comatose.config.admin_authorization.is_a? Proc | ||
166 | + instance_eval &Comatose.config.admin_authorization | ||
167 | + elsif Comatose.config.admin_authorization.is_a? Symbol | ||
168 | + send(Comatose.config.admin_authorization) | ||
169 | + elsif defined? authorize | ||
170 | + authorize | ||
171 | + else | ||
172 | + true | ||
173 | + end | ||
174 | + end | ||
175 | + | ||
176 | + def fetch_author_name | ||
177 | + if Comatose.config.admin_get_author.is_a? Proc | ||
178 | + instance_eval &Comatose.config.admin_get_author | ||
179 | + elsif Comatose.config.admin_get_author.is_a? Symbol | ||
180 | + send(Comatose.config.admin_get_author) | ||
181 | + elsif defined? get_author | ||
182 | + get_author | ||
183 | + end | ||
184 | + end | ||
185 | + | ||
186 | + # Can be overridden -- return your root comtase page | ||
187 | + def fetch_root_page | ||
188 | + if Comatose.config.admin_get_root_page.is_a? Proc | ||
189 | + instance_eval &Comatose.config.admin_get_root_page | ||
190 | + elsif Comatose.config.admin_get_root_page.is_a? Symbol | ||
191 | + send(Comatose.config.admin_get_root_page) | ||
192 | + elsif defined? get_root_page | ||
193 | + get_root_page | ||
194 | + end | ||
195 | + end | ||
196 | + | ||
197 | + # Sets the HTTP content-type header based on what's configured | ||
198 | + # in Comatose.config.content_type | ||
199 | + def set_content_type | ||
200 | + response.headers["Content-Type"] = "text/html; charset=#{Comatose.config.content_type}" unless Comatose.config.content_type.nil? | ||
201 | + end | ||
202 | + | ||
203 | + # Calls generate_page_html for each mount point.. | ||
204 | + def generate_all_pages_html(params={}) | ||
205 | + @errors = [] | ||
206 | + @been_cached = [] | ||
207 | + Comatose.mount_points.each do |root_info| | ||
208 | + page_class.active_mount_info = root_info | ||
209 | + generate_page_html(page_class.find_by_path( root_info[:index] ), root_info, params) | ||
210 | + end | ||
211 | + @errors | ||
212 | + end | ||
213 | + | ||
214 | + # Accepts a Comatose Page and a root_info object to generate | ||
215 | + # the page as a static HTML page -- using the layout that was | ||
216 | + # defined on the mount point | ||
217 | + def generate_page_html(page, root_info, params={}) | ||
218 | + @been_cached ||= [] | ||
219 | + unless page.has_keyword? :nocache or @been_cached.include? page.id | ||
220 | + uri = page.uri | ||
221 | + uri = "#{uri}/index".split('/').flatten.join('/') if page.full_path == root_info[:index] | ||
222 | + @page = Comatose::PageWrapper.new(page) | ||
223 | + begin | ||
224 | + page_layout = get_page_layout(root_info) | ||
225 | + #puts "mode = #{runtime_mode}, layout = #{page_layout}, template_root = #{template_root}, original_template_root = #{original_template_root}" | ||
226 | + html = render_to_string( :text=>page.to_html({'params'=>params.stringify_keys}), :layout=>page_layout ) | ||
227 | + cache_page( html, uri ) | ||
228 | + rescue | ||
229 | + logger.error "Comatose CMS Page Cache Exception: #{$!}" | ||
230 | + @errors << "(#{page}/#{page.slug}) - #{$!}" | ||
231 | + end | ||
232 | + @been_cached << page.id | ||
233 | + # recurse... | ||
234 | + page.children.each do |child| | ||
235 | + generate_page_html(child, root_info) | ||
236 | + end | ||
237 | + end | ||
238 | + end | ||
239 | + | ||
240 | + # Calls the class methods of the same name... | ||
241 | + def expire_cms_page(page) | ||
242 | + self.class.expire_cms_page(page) | ||
243 | + end | ||
244 | + def expire_cms_pages_from_bottom(page) | ||
245 | + self.class.expire_cms_pages_from_bottom(page) | ||
246 | + end | ||
247 | + | ||
248 | + | ||
249 | + # expire the page from the fragment cache | ||
250 | + def expire_cms_fragment(page) | ||
251 | + key = page.full_path.gsub(/\//, '+') | ||
252 | + expire_fragment(key) | ||
253 | + end | ||
254 | + | ||
255 | + # expire pages starting at a specific node | ||
256 | + def expire_cms_fragments_from_bottom(page) | ||
257 | + pages = page.is_a?(Array) ? page : [page] | ||
258 | + pages.each do |page| | ||
259 | + page.children.each {|c| expire_cms_fragments_from_bottom( c ) } if !page.children.empty? | ||
260 | + expire_cms_fragment( page ) | ||
261 | + end | ||
262 | + end | ||
263 | + | ||
264 | + # Class Methods... | ||
265 | + class << self | ||
266 | + | ||
267 | + # Walks all the way down, and back up the tree -- the allows the expire_cms_page | ||
268 | + # to delete empty directories better | ||
269 | + def expire_cms_pages_from_bottom(page) | ||
270 | + pages = page.is_a?(Array) ? page : [page] | ||
271 | + pages.each do |page| | ||
272 | + page.children.each {|c| expire_cms_pages_from_bottom( c ) } if !page.children.empty? | ||
273 | + expire_cms_page( page ) | ||
274 | + end | ||
275 | + end | ||
276 | + | ||
277 | + # Expire the page from all the mount points... | ||
278 | + def expire_cms_page(page) | ||
279 | + Comatose.mount_points.each do |path_info| | ||
280 | + page_class.active_mount_info = path_info | ||
281 | + expire_page(page.uri) | ||
282 | + # If the page is the index page for the root, expire it too | ||
283 | + if path_info[:root] == page.uri | ||
284 | + expire_page("#{path_info[:root]}/index") | ||
285 | + end | ||
286 | + begin # I'm not sure this matters too much -- but it keeps things clean | ||
287 | + dir_path = File.join(RAILS_ROOT, 'public', page.uri[1..-1]) | ||
288 | + Dir.delete( dir_path ) if FileTest.directory?( dir_path ) and !page.parent.nil? | ||
289 | + rescue | ||
290 | + # It probably isn't empty -- just as well we leave it be | ||
291 | + #STDERR.puts " - Couldn't delete dir #{dir_path} -> #{$!}" | ||
292 | + end | ||
293 | + end | ||
294 | + end | ||
295 | + | ||
296 | + # Returns a path to plugin layout, if it's unspecified, otherwise | ||
297 | + # a path to an application layout... | ||
298 | + def get_page_layout(params) | ||
299 | + if params[:layout] == 'comatose_content' | ||
300 | + File.join(plugin_layout_path, params[:layout]) | ||
301 | + else | ||
302 | + params[:layout] | ||
303 | + end | ||
304 | + end | ||
305 | + | ||
306 | + def configure_template_root | ||
307 | + if self.runtime_mode == :unknown | ||
308 | + if FileTest.exist? File.join(RAILS_ROOT, 'public', 'javascripts', 'comatose_admin.js') | ||
309 | + self.runtime_mode = :application | ||
310 | + else | ||
311 | + self.runtime_mode = :plugin | ||
312 | + end | ||
313 | + end | ||
314 | + end | ||
315 | + | ||
316 | + def runtime_mode | ||
317 | + @@runtime_mode ||= :unknown | ||
318 | + end | ||
319 | + | ||
320 | + def runtime_mode=(mode) | ||
321 | + case mode | ||
322 | + when :plugin | ||
323 | + self.original_template_root = self.template_root | ||
324 | + self.template_root = File.join( File.dirname(__FILE__), '..', '..', 'views') | ||
325 | + when :application | ||
326 | + self.template_root = self.original_template_root if self.original_template_root | ||
327 | + end | ||
328 | + @@runtime_mode = mode | ||
329 | + end | ||
330 | + | ||
331 | + end | ||
332 | + | ||
333 | + # Check to see if we are in 'embedded' mode, or are being 'customized' | ||
334 | + # embedded = runtime_mode of :plugin | ||
335 | + # customized = runtime_mode of :application | ||
336 | + configure_template_root | ||
337 | + | ||
338 | + # | ||
339 | + # Include any modules... | ||
340 | + Comatose.config.admin_includes.each do |mod| | ||
341 | + if mod.is_a? String | ||
342 | + include mod.constantize | ||
343 | + elsif mod.is_a? Symbol | ||
344 | + include mod.to_s.classify.constantize | ||
345 | + else | ||
346 | + include mod | ||
347 | + end | ||
348 | + end | ||
349 | + | ||
350 | + # Include any helpers... | ||
351 | + Comatose.config.admin_helpers.each do |mod| | ||
352 | + if mod.is_a? String | ||
353 | + helper mod.constantize | ||
354 | + elsif mod.is_a? Symbol | ||
355 | + helper mod.to_s.classify.constantize | ||
356 | + else | ||
357 | + helper mod | ||
358 | + end | ||
359 | + end | ||
360 | + | ||
361 | +end |
app/controllers/my_profile/enterprise_editor_controller.rb
0 → 100644
@@ -0,0 +1,47 @@ | @@ -0,0 +1,47 @@ | ||
1 | +class EnterpriseEditorController < MyProfileController | ||
2 | + protect 'edit_profile', :profile, :user, :except => :destroy | ||
3 | + protect 'destroy_profile', :profile, :only => :destroy | ||
4 | + | ||
5 | + before_filter :check_enterprise | ||
6 | + | ||
7 | + # Show details about an enterprise | ||
8 | + def index | ||
9 | + end | ||
10 | + | ||
11 | + # Provides an interface to editing the enterprise details | ||
12 | + def edit | ||
13 | + @validation_entities = Organization.find(:all) - [@enterprise] | ||
14 | + end | ||
15 | + | ||
16 | + # Saves the changes made in an enterprise | ||
17 | + def update | ||
18 | + if @enterprise.update_attributes(params[:enterprise]) && @enterprise.organization_info.update_attributes(params[:organization_info]) | ||
19 | + redirect_to :action => 'index' | ||
20 | + else | ||
21 | + flash[:notice] = _('Could not update the enterprise') | ||
22 | + @validation_entities = Organization.find(:all) - [@enterprise] | ||
23 | + render :action => 'edit' | ||
24 | + end | ||
25 | + end | ||
26 | + | ||
27 | + # Elimitates the enterprise of the system | ||
28 | + def destroy | ||
29 | + #raise "bli" | ||
30 | + if @enterprise.destroy | ||
31 | + flash[:notice] = _('Enterprise sucessfully erased from the system') | ||
32 | + redirect_to :controller => 'profile_editor', :action => 'index', :profile => current_user.login | ||
33 | + else | ||
34 | + redirect_to :action => 'index' | ||
35 | + end | ||
36 | + end | ||
37 | + | ||
38 | + protected | ||
39 | + | ||
40 | + def check_enterprise | ||
41 | + if profile.is_a?(Enterprise) | ||
42 | + @enterprise = profile | ||
43 | + else | ||
44 | + redirect_to :controller => 'account' #:controller => 'profile_editor', :profile => current_user.login and return | ||
45 | + end | ||
46 | + end | ||
47 | +end |
app/controllers/my_profile/enterprise_validation_controller.rb
0 → 100644
@@ -0,0 +1,52 @@ | @@ -0,0 +1,52 @@ | ||
1 | +class EnterpriseValidationController < MyProfileController | ||
2 | + | ||
3 | + def index | ||
4 | + @pending_validations = profile.pending_validations | ||
5 | + end | ||
6 | + | ||
7 | + def details | ||
8 | + @pending = profile.find_pending_validation(params[:id]) | ||
9 | + unless @pending | ||
10 | + render_not_found | ||
11 | + end | ||
12 | + end | ||
13 | + | ||
14 | + post_only :approve | ||
15 | + def approve | ||
16 | + @pending = profile.find_pending_validation(params[:id]) | ||
17 | + if @pending | ||
18 | + @pending.approve | ||
19 | + redirect_to :action => 'view_processed', :id => @pending.code | ||
20 | + else | ||
21 | + render_not_found | ||
22 | + end | ||
23 | + end | ||
24 | + | ||
25 | + post_only :reject | ||
26 | + def reject | ||
27 | + @pending = profile.find_pending_validation(params[:id]) | ||
28 | + if @pending | ||
29 | + @pending.reject_explanation = params[:reject_explanation] | ||
30 | + begin | ||
31 | + @pending.reject | ||
32 | + redirect_to :action => 'view_processed', :id => @pending.code | ||
33 | + rescue ActiveRecord::RecordInvalid | ||
34 | + render :action => 'details' | ||
35 | + end | ||
36 | + else | ||
37 | + render_not_found | ||
38 | + end | ||
39 | + end | ||
40 | + | ||
41 | + def list_processed | ||
42 | + @processed_validations = profile.processed_validations | ||
43 | + end | ||
44 | + | ||
45 | + def view_processed | ||
46 | + @processed = profile.find_processed_validation(params[:id]) | ||
47 | + unless @processed | ||
48 | + render_not_found | ||
49 | + end | ||
50 | + end | ||
51 | + | ||
52 | +end |
app/controllers/my_profile/membership_editor_controller.rb
0 → 100644
@@ -0,0 +1,39 @@ | @@ -0,0 +1,39 @@ | ||
1 | +class MembershipEditorController < MyProfileController | ||
2 | + | ||
3 | + before_filter :login_required | ||
4 | + | ||
5 | + def target | ||
6 | + environment | ||
7 | + end | ||
8 | + | ||
9 | + protect 'edit_profile', :profile, :only => [:index, :new_enterprise, :create_enterprise ] | ||
10 | + | ||
11 | + def index | ||
12 | + @memberships = current_user.person.enterprise_memberships | ||
13 | + end | ||
14 | + | ||
15 | + def new_enterprise | ||
16 | + @enterprise = Enterprise.new() | ||
17 | + @validation_entities = Organization.find(:all) | ||
18 | + end | ||
19 | + | ||
20 | + def create_enterprise | ||
21 | + @enterprise = Enterprise.new(params[:enterprise]) | ||
22 | + @enterprise.organization_info = OrganizationInfo.new(params[:organization]) | ||
23 | + if @enterprise.save | ||
24 | + @enterprise.affiliate(current_user.person, Role.find(:all, :conditions => {:name => ['owner', 'member', 'moderator']})) | ||
25 | + flash[:notice] = _('The enterprise was successfully created, the validation entity will cotact you as soon as your enterprise is approved') | ||
26 | + redirect_to :action => 'index' | ||
27 | + else | ||
28 | + flash[:notice] = _('Enterprise was not created') | ||
29 | + @validation_entities = Organization.find(:all) | ||
30 | + render :action => 'register_form' | ||
31 | + end | ||
32 | + end | ||
33 | + | ||
34 | + # Search enterprises by name or tags | ||
35 | + def search | ||
36 | + @tagged_enterprises = Enterprise.search(params[:query]) | ||
37 | + end | ||
38 | + | ||
39 | +end |
@@ -0,0 +1,39 @@ | @@ -0,0 +1,39 @@ | ||
1 | +class ProfileEditorController < MyProfileController | ||
2 | + | ||
3 | + #protect 'edit_profile', :profile, only => [:index, :edit] | ||
4 | + | ||
5 | + helper :profile | ||
6 | + | ||
7 | + | ||
8 | + | ||
9 | + design_editor :holder => 'profile', :autosave => true, :block_types => :block_types | ||
10 | + | ||
11 | + | ||
12 | + def block_types | ||
13 | + %w[ | ||
14 | + FavouriteLinks | ||
15 | + ] | ||
16 | + end | ||
17 | + | ||
18 | +# FIXME Put other Blocks to works | ||
19 | +# def block_types | ||
20 | +# { | ||
21 | +# 'ListBlock' => _("List of People"), | ||
22 | +# 'EnterprisesBlock' => _("List of Enterprises"), | ||
23 | +# 'LinkBlock' => _("Link Block"), | ||
24 | +# 'RecentDocumentsBlock' => _("Recent documents block") | ||
25 | +# } | ||
26 | +# end | ||
27 | + | ||
28 | + # edits the profile info (posts back) | ||
29 | + def edit | ||
30 | + if request.post? | ||
31 | + profile.info.update_attributes(params[:info]) | ||
32 | + redirect_to :action => 'index' | ||
33 | + else | ||
34 | + @info = profile.info | ||
35 | + render :action => @info.class.name.underscore | ||
36 | + end | ||
37 | + end | ||
38 | +end | ||
39 | + |
app/controllers/my_profile/profile_members_controller.rb
0 → 100644
@@ -0,0 +1,61 @@ | @@ -0,0 +1,61 @@ | ||
1 | +class ProfileMembersController < MyProfileController | ||
2 | + protect 'manage_memberships', :profile | ||
3 | + | ||
4 | + def index | ||
5 | + @members = profile.members | ||
6 | + end | ||
7 | + | ||
8 | + def change_roles | ||
9 | + @member = Person.find(params[:id]) | ||
10 | + @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | ||
11 | + end | ||
12 | + | ||
13 | + def update_roles | ||
14 | + @roles = params[:roles] ? Role.find(params[:roles]) : [] | ||
15 | + @person = Person.find(params[:person]) | ||
16 | + if @person.define_roles(@roles, profile) | ||
17 | + flash[:notice] = _('Roles successfuly updated') | ||
18 | + else | ||
19 | + flash[:notice] = _('Couldn\'t change the roles') | ||
20 | + end | ||
21 | + redirect_to :action => :index | ||
22 | + end | ||
23 | + | ||
24 | + def change_role | ||
25 | + @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | ||
26 | + @member = Person.find(params[:id]) | ||
27 | + @associations = @member.find_roles(@profile) | ||
28 | + end | ||
29 | + | ||
30 | + def add_role | ||
31 | + @person = Person.find(params[:person]) | ||
32 | + @role = Role.find(params[:role]) | ||
33 | + if @profile.affiliate(@person, @role) | ||
34 | + redirect_to :action => 'index' | ||
35 | + else | ||
36 | + @member = Person.find(params[:person]) | ||
37 | + @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | ||
38 | + render :action => 'affiliate' | ||
39 | + end | ||
40 | + end | ||
41 | + | ||
42 | + def remove_role | ||
43 | + @association = RoleAssignment.find(params[:id]) | ||
44 | + if @association.destroy | ||
45 | + flash[:notice] = 'Member succefully unassociated' | ||
46 | + else | ||
47 | + flash[:notice] = 'Failed to unassociate member' | ||
48 | + end | ||
49 | + redirect_to :aciton => 'index' | ||
50 | + end | ||
51 | + | ||
52 | + def unassociate | ||
53 | + @association = RoleAssignment.find(params[:id]) | ||
54 | + if @association.destroy | ||
55 | + flash[:notice] = 'Member succefully unassociated' | ||
56 | + else | ||
57 | + flash[:notice] = 'Failed to unassociate member' | ||
58 | + end | ||
59 | + redirect_to :aciton => 'index' | ||
60 | + end | ||
61 | +end |
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +class MyProfileController < ApplicationController | ||
2 | + | ||
3 | + needs_profile | ||
4 | + | ||
5 | + # declares that the controller needs an specific type of profile. Example: | ||
6 | + # | ||
7 | + # class PersonDetailControlles < ProfileAdminController | ||
8 | + # requires_profile_class Person | ||
9 | + # end | ||
10 | + # | ||
11 | + # The above controller will reject every request to it unless the current | ||
12 | + # profile (as indicated by the first URL component) is of class Person (or of | ||
13 | + # a subclass of Person) | ||
14 | + def self.requires_profile_class(some_class) | ||
15 | + before_filter do |controller| | ||
16 | + unless controller.send(:profile).kind_of?(some_class) | ||
17 | + controller.instance_variable_set('@message', _("This action is not available for \"%s\".") % controller.send(:profile).name) | ||
18 | + controller.render :file => File.join(RAILS_ROOT, 'app', 'views', 'shared', 'access_denied.rhtml'), :layout => true, :status => 403 | ||
19 | + end | ||
20 | + end | ||
21 | + end | ||
22 | + | ||
23 | +end |
app/controllers/myprofile/cms_controller.rb
@@ -1,361 +0,0 @@ | @@ -1,361 +0,0 @@ | ||
1 | -class CmsController < MyProfileController | ||
2 | - | ||
3 | - define_option :page_class, Article | ||
4 | - | ||
5 | - protect 'post_content', :profile, :only => [:edit, :new, :reorder, :delete] | ||
6 | - | ||
7 | - protected | ||
8 | - | ||
9 | - def profile | ||
10 | - Profile.find_by_identifier(params[:profile]) | ||
11 | - end | ||
12 | - | ||
13 | - def user | ||
14 | - current_user.person | ||
15 | - end | ||
16 | - | ||
17 | - | ||
18 | - public | ||
19 | - | ||
20 | - ############################################################# | ||
21 | - # everything below was copied from comatose | ||
22 | - ############################################################# | ||
23 | - | ||
24 | - define_option :original_template_root, nil | ||
25 | - define_option :plugin_layout_path, File.join( '..', '..', '..', 'vendor', 'plugins', 'comatose', 'views', 'layouts' ) | ||
26 | - | ||
27 | - before_filter :handle_authorization | ||
28 | - before_filter :set_content_type | ||
29 | - | ||
30 | - # Shows the page tree | ||
31 | - def index | ||
32 | - @root_pages = [fetch_root_page].flatten | ||
33 | - end | ||
34 | - | ||
35 | - # Edit a specfic page (posts back) | ||
36 | - def edit | ||
37 | - # Clear the page cache for this page... ? | ||
38 | - @page = page_class.find params[:id] | ||
39 | - @root_pages = [fetch_root_page].flatten | ||
40 | - if request.post? | ||
41 | - @page.update_attributes(params[:page]) | ||
42 | - @page.updated_on = Time.now | ||
43 | - @page.author = fetch_author_name | ||
44 | - if @page.save | ||
45 | - expire_cms_page @page | ||
46 | - expire_cms_fragment @page | ||
47 | - flash[:notice] = "Saved changes to '#{@page.title}'" | ||
48 | - redirect_to :controller=>self.controller_name, :action=>'index' | ||
49 | - end | ||
50 | - end | ||
51 | - end | ||
52 | - | ||
53 | - # Create a new page (posts back) | ||
54 | - def new | ||
55 | - @root_pages = [fetch_root_page].flatten | ||
56 | - if request.post? | ||
57 | - @page = page_class.new params[:page] | ||
58 | - @page.author = fetch_author_name | ||
59 | - if @page.save | ||
60 | - flash[:notice] = "Created page '#{@page.title}'" | ||
61 | - redirect_to :controller=>self.controller_name, :action=>'index' | ||
62 | - end | ||
63 | - else | ||
64 | - @page = page_class.new(:parent_id=>(params[:parent] || nil)) | ||
65 | - end | ||
66 | - end | ||
67 | - | ||
68 | - # Saves position of child pages | ||
69 | - def reorder | ||
70 | - # If it's AJAX, do our thing and move on... | ||
71 | - if request.xhr? | ||
72 | - params["page_list_#{params[:id]}"].each_with_index { |id,idx| page_class.update(id, :position => idx) } | ||
73 | - expire_cms_page page_class.find(params[:id]) | ||
74 | - render :text=>'Updated sort order', :layout=>false | ||
75 | - else | ||
76 | - @page = page_class.find params[:id] | ||
77 | - if params.has_key? :cmd | ||
78 | - @target = page_class.find params[:page] | ||
79 | - case params[:cmd] | ||
80 | - when 'up' then @target.move_higher | ||
81 | - when 'down' then @target.move_lower | ||
82 | - end | ||
83 | - redirect_to :action=>'reorder', :id=>@page | ||
84 | - end | ||
85 | - end | ||
86 | - end | ||
87 | - | ||
88 | - # Allows comparing between two versions of a page's content | ||
89 | - def versions | ||
90 | - @page = page_class.find params[:id] | ||
91 | - @version_num = (params[:version] || @page.versions.length).to_i | ||
92 | - @version = @page.find_version(@version_num) | ||
93 | - end | ||
94 | - | ||
95 | - # Reverts a page to a specific version... | ||
96 | - def set_version | ||
97 | - if request.post? | ||
98 | - @page = page_class.find params[:id] | ||
99 | - @version_num = params[:version] | ||
100 | - @page.revert_to!(@version_num) | ||
101 | - end | ||
102 | - redirect_to :controller=>self.controller_name, :action=>'index' | ||
103 | - end | ||
104 | - | ||
105 | - # Deletes the specified page | ||
106 | - def delete | ||
107 | - @page = page_class.find params[:id] | ||
108 | - if request.post? | ||
109 | - expire_cms_pages_from_bottom @page | ||
110 | - expire_cms_fragments_from_bottom @page | ||
111 | - @page.destroy | ||
112 | - flash[:notice] = "Deleted page '#{@page.title}'" | ||
113 | - redirect_to :controller=>self.controller_name, :action=>'index' | ||
114 | - end | ||
115 | - end | ||
116 | - | ||
117 | - # Returns a preview of the page content... | ||
118 | - def preview | ||
119 | - begin | ||
120 | - page = page_class.new(params[:page]) | ||
121 | - page.author = fetch_author_name | ||
122 | - if params.has_key? :version | ||
123 | - content = page.to_html( {'params'=>params.stringify_keys, 'version'=>params[:version]} ) | ||
124 | - else | ||
125 | - content = page.to_html( {'params'=>params.stringify_keys} ) | ||
126 | - end | ||
127 | - rescue SyntaxError | ||
128 | - content = "<p>There was an error generating the preview.</p><p><pre>#{$!.to_s.gsub(/\</, '<')}</pre></p>" | ||
129 | - rescue | ||
130 | - content = "<p>There was an error generating the preview.</p><p><pre>#{$!.to_s.gsub(/\</, '<')}</pre></p>" | ||
131 | - end | ||
132 | - render :text=>content, :layout => false | ||
133 | - end | ||
134 | - | ||
135 | - # Expires the entire page cache | ||
136 | - def expire_page_cache | ||
137 | - expire_cms_pages_from_bottom( fetch_root_page ) | ||
138 | - expire_cms_fragments_from_bottom( fetch_root_page ) | ||
139 | - flash[:notice] = "Page cache has been flushed" | ||
140 | - redirect_to :controller=>self.controller_name, :action=>'index' | ||
141 | - end | ||
142 | - | ||
143 | - # Walks the page tree and generates HTML files in your /public | ||
144 | - # folder... It will skip pages that have a 'nocache' keyword | ||
145 | - # TODO: Make page cache generation work when in :plugin mode | ||
146 | - def generate_page_cache | ||
147 | - if runtime_mode == :plugin | ||
148 | - @errors = ["Page cache cannot be generated in plugin mode"] | ||
149 | - else | ||
150 | - @errors = generate_all_pages_html(params) | ||
151 | - end | ||
152 | - if @errors.length == 0 | ||
153 | - flash[:notice] = "Pages Cached Successfully" | ||
154 | - else | ||
155 | - flash[:notice] = "Pages Cache Error(s): #{@errors.join(', ')}" | ||
156 | - flash[:cache_errors] = @errors | ||
157 | - end | ||
158 | - redirect_to :controller=>self.controller_name, :action=>'index' | ||
159 | - end | ||
160 | - | ||
161 | - | ||
162 | - protected | ||
163 | - | ||
164 | - def handle_authorization | ||
165 | - if Comatose.config.admin_authorization.is_a? Proc | ||
166 | - instance_eval &Comatose.config.admin_authorization | ||
167 | - elsif Comatose.config.admin_authorization.is_a? Symbol | ||
168 | - send(Comatose.config.admin_authorization) | ||
169 | - elsif defined? authorize | ||
170 | - authorize | ||
171 | - else | ||
172 | - true | ||
173 | - end | ||
174 | - end | ||
175 | - | ||
176 | - def fetch_author_name | ||
177 | - if Comatose.config.admin_get_author.is_a? Proc | ||
178 | - instance_eval &Comatose.config.admin_get_author | ||
179 | - elsif Comatose.config.admin_get_author.is_a? Symbol | ||
180 | - send(Comatose.config.admin_get_author) | ||
181 | - elsif defined? get_author | ||
182 | - get_author | ||
183 | - end | ||
184 | - end | ||
185 | - | ||
186 | - # Can be overridden -- return your root comtase page | ||
187 | - def fetch_root_page | ||
188 | - if Comatose.config.admin_get_root_page.is_a? Proc | ||
189 | - instance_eval &Comatose.config.admin_get_root_page | ||
190 | - elsif Comatose.config.admin_get_root_page.is_a? Symbol | ||
191 | - send(Comatose.config.admin_get_root_page) | ||
192 | - elsif defined? get_root_page | ||
193 | - get_root_page | ||
194 | - end | ||
195 | - end | ||
196 | - | ||
197 | - # Sets the HTTP content-type header based on what's configured | ||
198 | - # in Comatose.config.content_type | ||
199 | - def set_content_type | ||
200 | - response.headers["Content-Type"] = "text/html; charset=#{Comatose.config.content_type}" unless Comatose.config.content_type.nil? | ||
201 | - end | ||
202 | - | ||
203 | - # Calls generate_page_html for each mount point.. | ||
204 | - def generate_all_pages_html(params={}) | ||
205 | - @errors = [] | ||
206 | - @been_cached = [] | ||
207 | - Comatose.mount_points.each do |root_info| | ||
208 | - page_class.active_mount_info = root_info | ||
209 | - generate_page_html(page_class.find_by_path( root_info[:index] ), root_info, params) | ||
210 | - end | ||
211 | - @errors | ||
212 | - end | ||
213 | - | ||
214 | - # Accepts a Comatose Page and a root_info object to generate | ||
215 | - # the page as a static HTML page -- using the layout that was | ||
216 | - # defined on the mount point | ||
217 | - def generate_page_html(page, root_info, params={}) | ||
218 | - @been_cached ||= [] | ||
219 | - unless page.has_keyword? :nocache or @been_cached.include? page.id | ||
220 | - uri = page.uri | ||
221 | - uri = "#{uri}/index".split('/').flatten.join('/') if page.full_path == root_info[:index] | ||
222 | - @page = Comatose::PageWrapper.new(page) | ||
223 | - begin | ||
224 | - page_layout = get_page_layout(root_info) | ||
225 | - #puts "mode = #{runtime_mode}, layout = #{page_layout}, template_root = #{template_root}, original_template_root = #{original_template_root}" | ||
226 | - html = render_to_string( :text=>page.to_html({'params'=>params.stringify_keys}), :layout=>page_layout ) | ||
227 | - cache_page( html, uri ) | ||
228 | - rescue | ||
229 | - logger.error "Comatose CMS Page Cache Exception: #{$!}" | ||
230 | - @errors << "(#{page}/#{page.slug}) - #{$!}" | ||
231 | - end | ||
232 | - @been_cached << page.id | ||
233 | - # recurse... | ||
234 | - page.children.each do |child| | ||
235 | - generate_page_html(child, root_info) | ||
236 | - end | ||
237 | - end | ||
238 | - end | ||
239 | - | ||
240 | - # Calls the class methods of the same name... | ||
241 | - def expire_cms_page(page) | ||
242 | - self.class.expire_cms_page(page) | ||
243 | - end | ||
244 | - def expire_cms_pages_from_bottom(page) | ||
245 | - self.class.expire_cms_pages_from_bottom(page) | ||
246 | - end | ||
247 | - | ||
248 | - | ||
249 | - # expire the page from the fragment cache | ||
250 | - def expire_cms_fragment(page) | ||
251 | - key = page.full_path.gsub(/\//, '+') | ||
252 | - expire_fragment(key) | ||
253 | - end | ||
254 | - | ||
255 | - # expire pages starting at a specific node | ||
256 | - def expire_cms_fragments_from_bottom(page) | ||
257 | - pages = page.is_a?(Array) ? page : [page] | ||
258 | - pages.each do |page| | ||
259 | - page.children.each {|c| expire_cms_fragments_from_bottom( c ) } if !page.children.empty? | ||
260 | - expire_cms_fragment( page ) | ||
261 | - end | ||
262 | - end | ||
263 | - | ||
264 | - # Class Methods... | ||
265 | - class << self | ||
266 | - | ||
267 | - # Walks all the way down, and back up the tree -- the allows the expire_cms_page | ||
268 | - # to delete empty directories better | ||
269 | - def expire_cms_pages_from_bottom(page) | ||
270 | - pages = page.is_a?(Array) ? page : [page] | ||
271 | - pages.each do |page| | ||
272 | - page.children.each {|c| expire_cms_pages_from_bottom( c ) } if !page.children.empty? | ||
273 | - expire_cms_page( page ) | ||
274 | - end | ||
275 | - end | ||
276 | - | ||
277 | - # Expire the page from all the mount points... | ||
278 | - def expire_cms_page(page) | ||
279 | - Comatose.mount_points.each do |path_info| | ||
280 | - page_class.active_mount_info = path_info | ||
281 | - expire_page(page.uri) | ||
282 | - # If the page is the index page for the root, expire it too | ||
283 | - if path_info[:root] == page.uri | ||
284 | - expire_page("#{path_info[:root]}/index") | ||
285 | - end | ||
286 | - begin # I'm not sure this matters too much -- but it keeps things clean | ||
287 | - dir_path = File.join(RAILS_ROOT, 'public', page.uri[1..-1]) | ||
288 | - Dir.delete( dir_path ) if FileTest.directory?( dir_path ) and !page.parent.nil? | ||
289 | - rescue | ||
290 | - # It probably isn't empty -- just as well we leave it be | ||
291 | - #STDERR.puts " - Couldn't delete dir #{dir_path} -> #{$!}" | ||
292 | - end | ||
293 | - end | ||
294 | - end | ||
295 | - | ||
296 | - # Returns a path to plugin layout, if it's unspecified, otherwise | ||
297 | - # a path to an application layout... | ||
298 | - def get_page_layout(params) | ||
299 | - if params[:layout] == 'comatose_content' | ||
300 | - File.join(plugin_layout_path, params[:layout]) | ||
301 | - else | ||
302 | - params[:layout] | ||
303 | - end | ||
304 | - end | ||
305 | - | ||
306 | - def configure_template_root | ||
307 | - if self.runtime_mode == :unknown | ||
308 | - if FileTest.exist? File.join(RAILS_ROOT, 'public', 'javascripts', 'comatose_admin.js') | ||
309 | - self.runtime_mode = :application | ||
310 | - else | ||
311 | - self.runtime_mode = :plugin | ||
312 | - end | ||
313 | - end | ||
314 | - end | ||
315 | - | ||
316 | - def runtime_mode | ||
317 | - @@runtime_mode ||= :unknown | ||
318 | - end | ||
319 | - | ||
320 | - def runtime_mode=(mode) | ||
321 | - case mode | ||
322 | - when :plugin | ||
323 | - self.original_template_root = self.template_root | ||
324 | - self.template_root = File.join( File.dirname(__FILE__), '..', '..', 'views') | ||
325 | - when :application | ||
326 | - self.template_root = self.original_template_root if self.original_template_root | ||
327 | - end | ||
328 | - @@runtime_mode = mode | ||
329 | - end | ||
330 | - | ||
331 | - end | ||
332 | - | ||
333 | - # Check to see if we are in 'embedded' mode, or are being 'customized' | ||
334 | - # embedded = runtime_mode of :plugin | ||
335 | - # customized = runtime_mode of :application | ||
336 | - configure_template_root | ||
337 | - | ||
338 | - # | ||
339 | - # Include any modules... | ||
340 | - Comatose.config.admin_includes.each do |mod| | ||
341 | - if mod.is_a? String | ||
342 | - include mod.constantize | ||
343 | - elsif mod.is_a? Symbol | ||
344 | - include mod.to_s.classify.constantize | ||
345 | - else | ||
346 | - include mod | ||
347 | - end | ||
348 | - end | ||
349 | - | ||
350 | - # Include any helpers... | ||
351 | - Comatose.config.admin_helpers.each do |mod| | ||
352 | - if mod.is_a? String | ||
353 | - helper mod.constantize | ||
354 | - elsif mod.is_a? Symbol | ||
355 | - helper mod.to_s.classify.constantize | ||
356 | - else | ||
357 | - helper mod | ||
358 | - end | ||
359 | - end | ||
360 | - | ||
361 | -end |
app/controllers/myprofile/enterprise_editor_controller.rb
@@ -1,47 +0,0 @@ | @@ -1,47 +0,0 @@ | ||
1 | -class EnterpriseEditorController < MyProfileController | ||
2 | - protect 'edit_profile', :profile, :user, :except => :destroy | ||
3 | - protect 'destroy_profile', :profile, :only => :destroy | ||
4 | - | ||
5 | - before_filter :check_enterprise | ||
6 | - | ||
7 | - # Show details about an enterprise | ||
8 | - def index | ||
9 | - end | ||
10 | - | ||
11 | - # Provides an interface to editing the enterprise details | ||
12 | - def edit | ||
13 | - @validation_entities = Organization.find(:all) - [@enterprise] | ||
14 | - end | ||
15 | - | ||
16 | - # Saves the changes made in an enterprise | ||
17 | - def update | ||
18 | - if @enterprise.update_attributes(params[:enterprise]) && @enterprise.organization_info.update_attributes(params[:organization_info]) | ||
19 | - redirect_to :action => 'index' | ||
20 | - else | ||
21 | - flash[:notice] = _('Could not update the enterprise') | ||
22 | - @validation_entities = Organization.find(:all) - [@enterprise] | ||
23 | - render :action => 'edit' | ||
24 | - end | ||
25 | - end | ||
26 | - | ||
27 | - # Elimitates the enterprise of the system | ||
28 | - def destroy | ||
29 | - #raise "bli" | ||
30 | - if @enterprise.destroy | ||
31 | - flash[:notice] = _('Enterprise sucessfully erased from the system') | ||
32 | - redirect_to :controller => 'profile_editor', :action => 'index', :profile => current_user.login | ||
33 | - else | ||
34 | - redirect_to :action => 'index' | ||
35 | - end | ||
36 | - end | ||
37 | - | ||
38 | - protected | ||
39 | - | ||
40 | - def check_enterprise | ||
41 | - if profile.is_a?(Enterprise) | ||
42 | - @enterprise = profile | ||
43 | - else | ||
44 | - redirect_to :controller => 'account' #:controller => 'profile_editor', :profile => current_user.login and return | ||
45 | - end | ||
46 | - end | ||
47 | -end |
app/controllers/myprofile/enterprise_validation_controller.rb
@@ -1,52 +0,0 @@ | @@ -1,52 +0,0 @@ | ||
1 | -class EnterpriseValidationController < MyProfileController | ||
2 | - | ||
3 | - def index | ||
4 | - @pending_validations = profile.pending_validations | ||
5 | - end | ||
6 | - | ||
7 | - def details | ||
8 | - @pending = profile.find_pending_validation(params[:id]) | ||
9 | - unless @pending | ||
10 | - render_not_found | ||
11 | - end | ||
12 | - end | ||
13 | - | ||
14 | - post_only :approve | ||
15 | - def approve | ||
16 | - @pending = profile.find_pending_validation(params[:id]) | ||
17 | - if @pending | ||
18 | - @pending.approve | ||
19 | - redirect_to :action => 'view_processed', :id => @pending.code | ||
20 | - else | ||
21 | - render_not_found | ||
22 | - end | ||
23 | - end | ||
24 | - | ||
25 | - post_only :reject | ||
26 | - def reject | ||
27 | - @pending = profile.find_pending_validation(params[:id]) | ||
28 | - if @pending | ||
29 | - @pending.reject_explanation = params[:reject_explanation] | ||
30 | - begin | ||
31 | - @pending.reject | ||
32 | - redirect_to :action => 'view_processed', :id => @pending.code | ||
33 | - rescue ActiveRecord::RecordInvalid | ||
34 | - render :action => 'details' | ||
35 | - end | ||
36 | - else | ||
37 | - render_not_found | ||
38 | - end | ||
39 | - end | ||
40 | - | ||
41 | - def list_processed | ||
42 | - @processed_validations = profile.processed_validations | ||
43 | - end | ||
44 | - | ||
45 | - def view_processed | ||
46 | - @processed = profile.find_processed_validation(params[:id]) | ||
47 | - unless @processed | ||
48 | - render_not_found | ||
49 | - end | ||
50 | - end | ||
51 | - | ||
52 | -end |
app/controllers/myprofile/membership_editor_controller.rb
@@ -1,39 +0,0 @@ | @@ -1,39 +0,0 @@ | ||
1 | -class MembershipEditorController < MyProfileController | ||
2 | - | ||
3 | - before_filter :login_required | ||
4 | - | ||
5 | - def target | ||
6 | - environment | ||
7 | - end | ||
8 | - | ||
9 | - protect 'edit_profile', :profile, :only => [:index, :new_enterprise, :create_enterprise ] | ||
10 | - | ||
11 | - def index | ||
12 | - @memberships = current_user.person.enterprise_memberships | ||
13 | - end | ||
14 | - | ||
15 | - def new_enterprise | ||
16 | - @enterprise = Enterprise.new() | ||
17 | - @validation_entities = Organization.find(:all) | ||
18 | - end | ||
19 | - | ||
20 | - def create_enterprise | ||
21 | - @enterprise = Enterprise.new(params[:enterprise]) | ||
22 | - @enterprise.organization_info = OrganizationInfo.new(params[:organization]) | ||
23 | - if @enterprise.save | ||
24 | - @enterprise.affiliate(current_user.person, Role.find(:all, :conditions => {:name => ['owner', 'member', 'moderator']})) | ||
25 | - flash[:notice] = _('The enterprise was successfully created, the validation entity will cotact you as soon as your enterprise is approved') | ||
26 | - redirect_to :action => 'index' | ||
27 | - else | ||
28 | - flash[:notice] = _('Enterprise was not created') | ||
29 | - @validation_entities = Organization.find(:all) | ||
30 | - render :action => 'register_form' | ||
31 | - end | ||
32 | - end | ||
33 | - | ||
34 | - # Search enterprises by name or tags | ||
35 | - def search | ||
36 | - @tagged_enterprises = Enterprise.search(params[:query]) | ||
37 | - end | ||
38 | - | ||
39 | -end |
app/controllers/myprofile/profile_editor_controller.rb
@@ -1,39 +0,0 @@ | @@ -1,39 +0,0 @@ | ||
1 | -class ProfileEditorController < MyProfileController | ||
2 | - | ||
3 | - #protect 'edit_profile', :profile, only => [:index, :edit] | ||
4 | - | ||
5 | - helper :profile | ||
6 | - | ||
7 | - | ||
8 | - | ||
9 | - design_editor :holder => 'profile', :autosave => true, :block_types => :block_types | ||
10 | - | ||
11 | - | ||
12 | - def block_types | ||
13 | - %w[ | ||
14 | - FavouriteLinks | ||
15 | - ] | ||
16 | - end | ||
17 | - | ||
18 | -# FIXME Put other Blocks to works | ||
19 | -# def block_types | ||
20 | -# { | ||
21 | -# 'ListBlock' => _("List of People"), | ||
22 | -# 'EnterprisesBlock' => _("List of Enterprises"), | ||
23 | -# 'LinkBlock' => _("Link Block"), | ||
24 | -# 'RecentDocumentsBlock' => _("Recent documents block") | ||
25 | -# } | ||
26 | -# end | ||
27 | - | ||
28 | - # edits the profile info (posts back) | ||
29 | - def edit | ||
30 | - if request.post? | ||
31 | - profile.info.update_attributes(params[:info]) | ||
32 | - redirect_to :action => 'index' | ||
33 | - else | ||
34 | - @info = profile.info | ||
35 | - render :action => @info.class.name.underscore | ||
36 | - end | ||
37 | - end | ||
38 | -end | ||
39 | - |
app/controllers/myprofile/profile_members_controller.rb
@@ -1,61 +0,0 @@ | @@ -1,61 +0,0 @@ | ||
1 | -class ProfileMembersController < MyProfileController | ||
2 | - protect 'manage_memberships', :profile | ||
3 | - | ||
4 | - def index | ||
5 | - @members = profile.members | ||
6 | - end | ||
7 | - | ||
8 | - def change_roles | ||
9 | - @member = Person.find(params[:id]) | ||
10 | - @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | ||
11 | - end | ||
12 | - | ||
13 | - def update_roles | ||
14 | - @roles = params[:roles] ? Role.find(params[:roles]) : [] | ||
15 | - @person = Person.find(params[:person]) | ||
16 | - if @person.define_roles(@roles, profile) | ||
17 | - flash[:notice] = _('Roles successfuly updated') | ||
18 | - else | ||
19 | - flash[:notice] = _('Couldn\'t change the roles') | ||
20 | - end | ||
21 | - redirect_to :action => :index | ||
22 | - end | ||
23 | - | ||
24 | - def change_role | ||
25 | - @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | ||
26 | - @member = Person.find(params[:id]) | ||
27 | - @associations = @member.find_roles(@profile) | ||
28 | - end | ||
29 | - | ||
30 | - def add_role | ||
31 | - @person = Person.find(params[:person]) | ||
32 | - @role = Role.find(params[:role]) | ||
33 | - if @profile.affiliate(@person, @role) | ||
34 | - redirect_to :action => 'index' | ||
35 | - else | ||
36 | - @member = Person.find(params[:person]) | ||
37 | - @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | ||
38 | - render :action => 'affiliate' | ||
39 | - end | ||
40 | - end | ||
41 | - | ||
42 | - def remove_role | ||
43 | - @association = RoleAssignment.find(params[:id]) | ||
44 | - if @association.destroy | ||
45 | - flash[:notice] = 'Member succefully unassociated' | ||
46 | - else | ||
47 | - flash[:notice] = 'Failed to unassociate member' | ||
48 | - end | ||
49 | - redirect_to :aciton => 'index' | ||
50 | - end | ||
51 | - | ||
52 | - def unassociate | ||
53 | - @association = RoleAssignment.find(params[:id]) | ||
54 | - if @association.destroy | ||
55 | - flash[:notice] = 'Member succefully unassociated' | ||
56 | - else | ||
57 | - flash[:notice] = 'Failed to unassociate member' | ||
58 | - end | ||
59 | - redirect_to :aciton => 'index' | ||
60 | - end | ||
61 | -end |
app/controllers/myprofile_controller.rb
@@ -1,23 +0,0 @@ | @@ -1,23 +0,0 @@ | ||
1 | -class MyProfileController < ApplicationController | ||
2 | - | ||
3 | - needs_profile | ||
4 | - | ||
5 | - # declares that the controller needs an specific type of profile. Example: | ||
6 | - # | ||
7 | - # class PersonDetailControlles < ProfileAdminController | ||
8 | - # requires_profile_class Person | ||
9 | - # end | ||
10 | - # | ||
11 | - # The above controller will reject every request to it unless the current | ||
12 | - # profile (as indicated by the first URL component) is of class Person (or of | ||
13 | - # a subclass of Person) | ||
14 | - def self.requires_profile_class(some_class) | ||
15 | - before_filter do |controller| | ||
16 | - unless controller.send(:profile).kind_of?(some_class) | ||
17 | - controller.instance_variable_set('@message', _("This action is not available for \"%s\".") % controller.send(:profile).name) | ||
18 | - controller.render :file => File.join(RAILS_ROOT, 'app', 'views', 'shared', 'access_denied.rhtml'), :layout => true, :status => 403 | ||
19 | - end | ||
20 | - end | ||
21 | - end | ||
22 | - | ||
23 | -end |