Commit 247ad8262ff5468637a6d46ea1e7d4f8b5099420

Authored by Rodrigo Souto
1 parent ba1e746f

Remove unnecessary file

Showing 1 changed file with 0 additions and 938 deletions   Show diff stats
app/models/environment.rb.orig
@@ -1,938 +0,0 @@ @@ -1,938 +0,0 @@
1 -# A Environment is like a website to be hosted in the platform. It may  
2 -# contain multiple Profile's and can be identified by several different  
3 -# domains.  
4 -class Environment < ActiveRecord::Base  
5 -  
6 -<<<<<<< HEAD  
7 - attr_accessible :name, :is_default, :signup_welcome_text_subject, :signup_welcome_text_body, :terms_of_use, :message_for_disabled_enterprise, :news_amount_by_folder, :default_language, :languages, :description, :organization_approval_method, :enabled_plugins, :enabled_features, :enabled_blocks, :redirection_after_login, :redirection_after_signup, :contact_email, :theme, :reports_lower_bound, :noreply_email, :signup_welcome_screen_body  
8 -=======  
9 - attr_accessible :name, :is_default, :signup_welcome_text_subject, :signup_welcome_text_body, :terms_of_use, :message_for_disabled_enterprise, :news_amount_by_folder, :default_language, :languages, :description, :organization_approval_method, :enabled_plugins, :enabled_features, :disabled_blocks, :redirection_after_login, :redirection_after_signup, :contact_email, :theme, :reports_lower_bound  
10 ->>>>>>> rails3_AI3163-enable_disable_blocks  
11 -  
12 - has_many :users  
13 -  
14 - self.partial_updates = false  
15 -  
16 - has_many :tasks, :dependent => :destroy, :as => 'target'  
17 -  
18 - IDENTIFY_SCRIPTS = /(php[0-9s]?|[sp]htm[l]?|pl|py|cgi|rb)/  
19 -  
20 - def self.verify_filename(filename)  
21 - filename += '.txt' if File.extname(filename) =~ IDENTIFY_SCRIPTS  
22 - filename  
23 - end  
24 -  
25 - PERMISSIONS['Environment'] = {  
26 - 'view_environment_admin_panel' => N_('View environment admin panel'),  
27 - 'edit_environment_features' => N_('Edit environment features'),  
28 - 'edit_environment_design' => N_('Edit environment design'),  
29 - 'manage_environment_categories' => N_('Manage environment categories'),  
30 - 'manage_environment_roles' => N_('Manage environment roles'),  
31 - 'manage_environment_validators' => N_('Manage environment validators'),  
32 - 'manage_environment_users' => N_('Manage environment users'),  
33 - 'manage_environment_templates' => N_('Manage environment templates'),  
34 - 'manage_environment_licenses' => N_('Manage environment licenses'),  
35 - 'manage_environment_trusted_sites' => N_('Manage environment trusted sites'),  
36 - 'edit_appearance' => N_('Edit appearance'),  
37 - }  
38 -  
39 - module Roles  
40 - def self.admin(env_id)  
41 - Role.find_by_key_and_environment_id('environment_administrator', env_id)  
42 - end  
43 - end  
44 -  
45 - after_create :create_roles  
46 - def create_roles  
47 - Role.create!(  
48 - :key => 'environment_administrator',  
49 - :name => N_('Environment Administrator'),  
50 - :environment => self,  
51 - :permissions => PERMISSIONS[Environment.name].keys + PERMISSIONS[Profile.name].keys  
52 - )  
53 - Role.create!(  
54 - :key => 'profile_admin',  
55 - :name => N_('Profile Administrator'),  
56 - :environment => self,  
57 - :permissions => PERMISSIONS[Profile.name].keys  
58 - )  
59 - # members for enterprises, communities etc  
60 - Role.create!(  
61 - :key => "profile_member",  
62 - :name => N_('Member'),  
63 - :environment => self,  
64 - :permissions => [  
65 - 'invite_members',  
66 - ]  
67 - )  
68 - # moderators for enterprises, communities etc  
69 - Role.create!(  
70 - :key => 'profile_moderator',  
71 - :name => N_('Moderator'),  
72 - :environment => self,  
73 - :permissions => [  
74 - 'manage_memberships',  
75 - 'edit_profile_design',  
76 - 'manage_products',  
77 - 'manage_friends',  
78 - 'perform_task'  
79 - ]  
80 - )  
81 - end  
82 -  
83 - def add_admin(user)  
84 - self.affiliate(user, Environment::Roles.admin(self.id))  
85 - end  
86 -  
87 - def remove_admin(user)  
88 - self.disaffiliate(user, Environment::Roles.admin(self.id))  
89 - end  
90 -  
91 - def admins  
92 - Person.members_of(self).all(:conditions => ['role_assignments.role_id = ?', Environment::Roles.admin(self).id])  
93 - end  
94 -  
95 - # returns the available features for a Environment, in the form of a  
96 - # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>.  
97 - def self.available_features  
98 - {  
99 - 'disable_asset_articles' => _('Disable search for articles '),  
100 - 'disable_asset_enterprises' => _('Disable search for enterprises'),  
101 - 'disable_asset_people' => _('Disable search for people'),  
102 - 'disable_asset_communities' => _('Disable search for communities'),  
103 - 'disable_asset_products' => _('Disable search for products'),  
104 - 'disable_asset_events' => _('Disable search for events'),  
105 - 'disable_categories' => _('Disable categories'),  
106 - 'disable_header_and_footer' => _('Disable header/footer editing by users'),  
107 - 'disable_gender_icon' => _('Disable gender icon'),  
108 - 'disable_categories_menu' => _('Disable the categories menu'),  
109 - 'disable_select_city_for_contact' => _('Disable state/city select for contact form'),  
110 - 'disable_contact_person' => _('Disable contact for people'),  
111 - 'disable_contact_community' => _('Disable contact for groups/communities'),  
112 -  
113 - 'products_for_enterprises' => _('Enable products for enterprises'),  
114 - 'enterprise_registration' => _('Enterprise registration'),  
115 - 'enterprise_activation' => _('Enable activation of enterprises'),  
116 - 'enterprises_are_disabled_when_created' => _('Enterprises are disabled when created'),  
117 - 'enterprises_are_validated_when_created' => _('Enterprises are validated when created'),  
118 -  
119 - 'media_panel' => _('Media panel in WYSIWYG editor'),  
120 - 'select_preferred_domain' => _('Select preferred domains per profile'),  
121 - 'use_portal_community' => _('Use the portal as news source for front page'),  
122 - 'user_themes' => _('Allow users to create their own themes'),  
123 - 'search_in_home' => _("Display search form in home page"),  
124 -  
125 - 'cant_change_homepage' => _("Don't allow users to change which article to use as homepage"),  
126 - 'display_header_footer_explanation' => _("Display explanation about header and footer"),  
127 - 'articles_dont_accept_comments_by_default' => _("Articles don't accept comments by default"),  
128 - 'organizations_are_moderated_by_default' => _("Organizations have moderated publication by default"),  
129 - 'enable_organization_url_change' => _("Allow organizations to change their URL"),  
130 - 'admin_must_approve_new_communities' => _("Admin must approve creation of communities"),  
131 - 'show_balloon_with_profile_links_when_clicked' => _('Show a balloon with profile links when a profile image is clicked'),  
132 - 'xmpp_chat' => _('XMPP/Jabber based chat'),  
133 - 'show_zoom_button_on_article_images' => _('Show a zoom link on all article images'),  
134 - 'captcha_for_logged_users' => _('Ask captcha when a logged user comments too'),  
135 - 'skip_new_user_email_confirmation' => _('Skip e-mail confirmation for new users'),  
136 - 'send_welcome_email_to_new_users' => _('Send welcome e-mail to new users'),  
137 - 'allow_change_of_redirection_after_login' => _('Allow users to set the page to redirect after login'),  
138 - 'display_my_communities_on_user_menu' => _('Display on menu the list of communities the user can manage'),  
139 - 'display_my_enterprises_on_user_menu' => _('Display on menu the list of enterprises the user can manage')  
140 - }  
141 - end  
142 -  
143 - def self.login_redirection_options  
144 - {  
145 - 'keep_on_same_page' => _('Stays on the same page the user was before login.'),  
146 - 'site_homepage' => _('Redirects the user to the environment homepage.'),  
147 - 'user_profile_page' => _('Redirects the user to his profile page.'),  
148 - 'user_homepage' => _('Redirects the user to his homepage.'),  
149 - 'user_control_panel' => _('Redirects the user to his control panel.')  
150 - }  
151 - end  
152 - validates_inclusion_of :redirection_after_login, :in => Environment.login_redirection_options.keys, :allow_nil => true  
153 -  
154 - def self.signup_redirection_options  
155 - {  
156 - 'keep_on_same_page' => _('Stays on the same page the user was before signup.'),  
157 - 'site_homepage' => _('Redirects the user to the environment homepage.'),  
158 - 'user_profile_page' => _('Redirects the user to his profile page.'),  
159 - 'user_homepage' => _('Redirects the user to his homepage.'),  
160 - 'user_control_panel' => _('Redirects the user to his control panel.')  
161 - }  
162 - end  
163 - validates_inclusion_of :redirection_after_signup, :in => Environment.signup_redirection_options.keys, :allow_nil => true  
164 -  
165 -  
166 - # #################################################  
167 - # Relationships and applied behaviour  
168 - # #################################################  
169 -  
170 - acts_as_having_boxes  
171 -  
172 - after_create do |env|  
173 - 3.times do  
174 - env.boxes << Box.new  
175 - end  
176 -  
177 - # main area  
178 - env.boxes[0].blocks << MainBlock.new  
179 -  
180 - # "left" area  
181 - env.boxes[1].blocks << LoginBlock.new  
182 - # TODO EnvironmentStatisticsBlock is DEPRECATED and will be removed from  
183 - # the Noosfero core soon, see ActionItem3045  
184 - env.boxes[1].blocks << EnvironmentStatisticsBlock.new  
185 - env.boxes[1].blocks << RecentDocumentsBlock.new  
186 -  
187 - # "right" area  
188 - env.boxes[2].blocks << CommunitiesBlock.new(:limit => 6)  
189 - env.boxes[2].blocks << PeopleBlock.new(:limit => 6)  
190 - end  
191 -  
192 - # One Environment can be reached by many domains  
193 - has_many :domains, :as => :owner  
194 - has_many :profiles, :dependent => :destroy  
195 -  
196 - has_many :organizations  
197 - has_many :enterprises  
198 - has_many :products, :through => :enterprises  
199 - has_many :people  
200 - has_many :communities  
201 - has_many :licenses  
202 -  
203 - has_many :categories  
204 - has_many :display_categories, :class_name => 'Category', :conditions => 'display_color is not null and parent_id is null', :order => 'display_color'  
205 -  
206 - has_many :product_categories, :conditions => { :type => 'ProductCategory'}  
207 - has_many :regions  
208 - has_many :states  
209 - has_many :cities  
210 -  
211 - has_many :roles, :dependent => :destroy  
212 -  
213 - has_many :qualifiers  
214 - has_many :certifiers  
215 -  
216 - has_many :mailings, :class_name => 'EnvironmentMailing', :foreign_key => :source_id, :as => 'source'  
217 -  
218 - acts_as_accessible  
219 -  
220 - has_many :units, :order => 'position'  
221 - has_many :production_costs, :as => :owner  
222 -  
223 - def superior_intances  
224 - [self, nil]  
225 - end  
226 - # #################################################  
227 - # Attributes  
228 - # #################################################  
229 -  
230 - # store the Environment settings as YAML-serialized Hash.  
231 - acts_as_having_settings :field => :settings  
232 -  
233 - # the environment's terms of use: every user must accept them before registering.  
234 - settings_items :terms_of_use, :type => String  
235 -  
236 - # the environment's terms of enterprise use: every enterprise member must accept them before  
237 - # registering or activating enterprises.  
238 - settings_items :terms_of_enterprise_use, :type => String  
239 -  
240 - # returns the approval method used for this environment. Possible values are:  
241 - #  
242 - # Defaults to <tt>:admim</tt>.  
243 - settings_items :organization_approval_method, :type => Symbol, :default => :admin  
244 -  
245 - # Whether this environment should force having 'www.' in its domain name or  
246 - # not. Defauls to false.  
247 - #  
248 - # Sets the value of #force_www. <tt>value</tt> must be a boolean.  
249 - #  
250 - # See also #default_hostname  
251 - settings_items :force_www, :default => false  
252 -  
253 - settings_items :message_for_friend_invitation, :type => String  
254 - def message_for_friend_invitation  
255 - settings[:message_for_member_invitation] || InviteFriend.mail_template  
256 - end  
257 -  
258 - settings_items :message_for_member_invitation, :type => String  
259 - def message_for_member_invitation  
260 - settings[:message_for_member_invitation] || InviteMember.mail_template  
261 - end  
262 -  
263 - settings_items :min_signup_delay, :type => Integer, :default => 3 #seconds  
264 - settings_items :activation_blocked_text, :type => String  
265 - settings_items :message_for_disabled_enterprise, :type => String,  
266 - :default => _('This enterprise needs to be enabled.')  
267 - settings_items :location, :type => String  
268 - settings_items :layout_template, :type => String, :default => 'default'  
269 - settings_items :homepage, :type => String  
270 - settings_items :description, :type => String, :default => '<div style="text-align: center"><a href="http://noosfero.org/"><img src="/images/noosfero-network.png" alt="Noosfero"/></a></div>'  
271 - settings_items :local_docs, :type => Array, :default => []  
272 - settings_items :news_amount_by_folder, :type => Integer, :default => 4  
273 - settings_items :help_message_to_add_enterprise, :type => String, :default => ''  
274 - settings_items :tip_message_enterprise_activation_question, :type => String, :default => ''  
275 -  
276 - settings_items :currency_unit, :type => String, :default => '$'  
277 - settings_items :currency_separator, :type => String, :default => '.'  
278 - settings_items :currency_delimiter, :type => String, :default => ','  
279 -  
280 - settings_items :trusted_sites_for_iframe, :type => Array, :default => %w[  
281 - developer.myspace.com  
282 - itheora.org  
283 - maps.google.com  
284 - platform.twitter.com  
285 - player.vimeo.com  
286 - stream.softwarelivre.org  
287 - tv.softwarelivre.org  
288 - www.facebook.com  
289 - www.flickr.com  
290 - www.gmodules.com  
291 - www.youtube.com  
292 - ] + ('a' .. 'z').map{|i| "#{i}.yimg.com"}  
293 -  
294 - settings_items :enabled_plugins, :type => Array, :default => []  
295 -  
296 - settings_items :disabled_blocks, :type => Array, :default => []  
297 -  
298 - settings_items :search_hints, :type => Hash, :default => {}  
299 -  
300 - # Set to return http forbidden to host not on the allow origin list bellow  
301 - settings_items :restrict_to_access_control_origins, :default => false  
302 - # Set this according to http://www.w3.org/TR/cors/. Headers are set at every response  
303 - # For multiple domains acts as suggested in http://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains  
304 - settings_items :access_control_allow_origin, :type => Array, :default => []  
305 - settings_items :access_control_allow_methods, :type => String  
306 -  
307 - settings_items :signup_welcome_screen_body, :type => String  
308 -  
309 - def has_custom_welcome_screen?  
310 - settings[:signup_welcome_screen_body].present?  
311 - end  
312 -  
313 - def news_amount_by_folder=(amount)  
314 - settings[:news_amount_by_folder] = amount.to_i  
315 - end  
316 -  
317 - # Enables a feature identified by its name  
318 - def enable(feature, must_save=true)  
319 - self.settings["#{feature}_enabled".to_sym] = true  
320 - self.save! if must_save  
321 - end  
322 -  
323 - def enable_plugin(plugin)  
324 - self.enabled_plugins += [plugin.to_s]  
325 - self.enabled_plugins.uniq!  
326 - self.save!  
327 - end  
328 -  
329 - # Disables a feature identified by its name  
330 - def disable(feature, must_save=true)  
331 - self.settings["#{feature}_enabled".to_sym] = false  
332 - self.save! if must_save  
333 - end  
334 -  
335 - def disable_plugin(plugin)  
336 - self.enabled_plugins.delete(plugin.to_s)  
337 - self.save!  
338 - end  
339 -  
340 - # Tells if a feature, identified by its name, is enabled  
341 - def enabled?(feature)  
342 - self.settings["#{feature}_enabled".to_sym] == true  
343 - end  
344 - def disabled?(feature)  
345 - !self.enabled?(feature)  
346 - end  
347 -  
348 - def plugin_enabled?(plugin)  
349 - enabled_plugins.include?(plugin.to_s)  
350 - end  
351 -  
352 - def block_disabled?(block)  
353 - disabled_blocks.include?(block.to_s)  
354 - end  
355 -  
356 - # enables the features identified by <tt>features</tt>, which is expected to  
357 - # be an Enumarable object containing the identifiers of the desired features.  
358 - # Passing <tt>nil</tt> is the same as passing an empty Array.  
359 - def enabled_features=(features)  
360 - features ||= []  
361 - self.class.available_features.keys.each do |feature|  
362 - if features.include? feature  
363 - self.enable(feature)  
364 - else  
365 - self.disable(feature)  
366 - end  
367 - end  
368 - end  
369 -  
370 - def enabled_features  
371 - features = self.class.available_features  
372 - features.delete_if{ |k, v| !self.enabled?(k) }  
373 - end  
374 -  
375 - DEFAULT_FEATURES = %w(  
376 - disable_asset_products  
377 - disable_gender_icon  
378 - products_for_enterprises  
379 - disable_select_city_for_contact  
380 - enterprise_registration  
381 - media_panel  
382 - organizations_are_moderated_by_default  
383 - show_balloon_with_profile_links_when_clicked  
384 - show_zoom_button_on_article_images  
385 - use_portal_community  
386 - )  
387 -  
388 - before_create :enable_default_features  
389 - def enable_default_features  
390 - DEFAULT_FEATURES.each do |feature|  
391 - enable(feature, false)  
392 - end  
393 - end  
394 -  
395 - # returns <tt>true</tt> if this Environment has terms of use to be  
396 - # accepted by users before registration.  
397 - def has_terms_of_use?  
398 - ! self.terms_of_use.blank?  
399 - end  
400 -  
401 - # returns <tt>true</tt> if this Environment has terms of enterprise use to be  
402 - # accepted by users before registration or activation of enterprises.  
403 - def has_terms_of_enterprise_use?  
404 - ! self.terms_of_enterprise_use.blank?  
405 - end  
406 -  
407 - # Sets the organization_approval_method. Only accepts the following values:  
408 - #  
409 - # * <tt>:admin</tt>: organization registration must be approved by the  
410 - # environment administrator.  
411 - # * <tt>:region</tt>: organization registering must be approved by some other  
412 - # organization asssigned as validator to the Region the new organization  
413 - # belongs to.  
414 - # * <tt>:none</tt>: organization registration is approved by default.  
415 - #  
416 - # Trying to set organization_approval_method to any other value will raise an  
417 - # ArgumentError.  
418 - #  
419 - # The value passed as argument is converted to a Symbol before being actually  
420 - # set to this setting.  
421 - def organization_approval_method=(value)  
422 - actual_value = value.to_sym  
423 -  
424 - accepted_values = %w[  
425 - admin  
426 - region  
427 - none  
428 - ].map(&:to_sym)  
429 - raise ArgumentError unless accepted_values.include?(actual_value)  
430 -  
431 - self.settings[:organization_approval_method] = actual_value  
432 - end  
433 -  
434 - def custom_person_fields  
435 - self.settings[:custom_person_fields].nil? ? {} : self.settings[:custom_person_fields]  
436 - end  
437 -  
438 - def custom_person_fields=(values)  
439 - if values['schooling'] && values['schooling']['active'] == 'true'  
440 - schooling_status = values['schooling']  
441 - end  
442 -  
443 - self.settings[:custom_person_fields] = values.delete_if { |key, value| ! Person.fields.include?(key)}  
444 - self.settings[:custom_person_fields].each_pair do |key, value|  
445 - if value['required'] == 'true'  
446 - self.settings[:custom_person_fields][key]['active'] = 'true'  
447 - self.settings[:custom_person_fields][key]['signup'] = 'true'  
448 - end  
449 - if value['signup'] == 'true'  
450 - self.settings[:custom_person_fields][key]['active'] = 'true'  
451 - end  
452 - end  
453 -  
454 - if schooling_status  
455 - self.settings[:custom_person_fields]['schooling_status'] = schooling_status  
456 - end  
457 - end  
458 -  
459 - def custom_person_field(field, status)  
460 - if (custom_person_fields[field] && custom_person_fields[field][status] == 'true')  
461 - return true  
462 - end  
463 - false  
464 - end  
465 -  
466 - def active_person_fields  
467 - (custom_person_fields.delete_if { |key, value| !custom_person_field(key, 'active')}).keys || []  
468 - end  
469 -  
470 - def required_person_fields  
471 - required_fields = []  
472 - active_person_fields.each do |field|  
473 - required_fields << field if custom_person_fields[field]['required'] == 'true'  
474 - end  
475 - required_fields  
476 - end  
477 -  
478 - def signup_person_fields  
479 - signup_fields = []  
480 - active_person_fields.each do |field|  
481 - signup_fields << field if custom_person_fields[field]['signup'] == 'true'  
482 - end  
483 - signup_fields  
484 - end  
485 -  
486 - def invitation_mail_template(profile)  
487 - if profile.person?  
488 - message_for_friend_invitation  
489 - else  
490 - message_for_member_invitation  
491 - end  
492 - end  
493 -  
494 - def custom_enterprise_fields  
495 - self.settings[:custom_enterprise_fields].nil? ? {} : self.settings[:custom_enterprise_fields]  
496 - end  
497 -  
498 - def custom_enterprise_fields=(values)  
499 - self.settings[:custom_enterprise_fields] = values.delete_if { |key, value| ! Enterprise.fields.include?(key)}  
500 - self.settings[:custom_enterprise_fields].each_pair do |key, value|  
501 - if value['required'] == 'true'  
502 - self.settings[:custom_enterprise_fields][key]['active'] = 'true'  
503 - self.settings[:custom_enterprise_fields][key]['signup'] = 'true'  
504 - end  
505 - if value['signup'] == 'true'  
506 - self.settings[:custom_enterprise_fields][key]['active'] = 'true'  
507 - end  
508 - end  
509 - end  
510 -  
511 - def custom_enterprise_field(field, status)  
512 - if (custom_enterprise_fields[field] && custom_enterprise_fields[field][status] == 'true')  
513 - return true  
514 - end  
515 - false  
516 - end  
517 -  
518 - def active_enterprise_fields  
519 - (custom_enterprise_fields.delete_if { |key, value| !custom_enterprise_field(key, 'active')}).keys || []  
520 - end  
521 -  
522 - def required_enterprise_fields  
523 - required_fields = []  
524 - active_enterprise_fields.each do |field|  
525 - required_fields << field if custom_enterprise_fields[field]['required'] == 'true'  
526 - end  
527 - required_fields  
528 - end  
529 -  
530 - def signup_enterprise_fields  
531 - signup_fields = []  
532 - active_enterprise_fields.each do |field|  
533 - signup_fields << field if custom_enterprise_fields[field]['signup'] == 'true'  
534 - end  
535 - signup_fields  
536 - end  
537 -  
538 - def custom_community_fields  
539 - self.settings[:custom_community_fields].nil? ? {} : self.settings[:custom_community_fields]  
540 - end  
541 - def custom_community_fields=(values)  
542 - self.settings[:custom_community_fields] = values.delete_if { |key, value| ! Community.fields.include?(key) }  
543 - self.settings[:custom_community_fields].each_pair do |key, value|  
544 - if value['required'] == 'true'  
545 - self.settings[:custom_community_fields][key]['active'] = 'true'  
546 - self.settings[:custom_community_fields][key]['signup'] = 'true'  
547 - end  
548 - if value['signup'] == 'true'  
549 - self.settings[:custom_community_fields][key]['active'] = 'true'  
550 - end  
551 - end  
552 - end  
553 -  
554 - def custom_community_field(field, status)  
555 - if (custom_community_fields[field] && custom_community_fields[field][status] == 'true')  
556 - return true  
557 - end  
558 - false  
559 - end  
560 -  
561 - def active_community_fields  
562 - (custom_community_fields.delete_if { |key, value| !custom_community_field(key, 'active')}).keys  
563 - end  
564 -  
565 - def required_community_fields  
566 - required_fields = []  
567 - active_community_fields.each do |field|  
568 - required_fields << field if custom_community_fields[field]['required'] == 'true'  
569 - end  
570 - required_fields  
571 - end  
572 -  
573 - def signup_community_fields  
574 - signup_fields = []  
575 - active_community_fields.each do |field|  
576 - signup_fields << field if custom_community_fields[field]['signup'] == 'true'  
577 - end  
578 - signup_fields  
579 - end  
580 -  
581 - serialize :signup_welcome_text, Hash  
582 - def signup_welcome_text  
583 - self[:signup_welcome_text] ||= {}  
584 - end  
585 -  
586 - def signup_welcome_text_subject  
587 - self.signup_welcome_text[:subject]  
588 - end  
589 -  
590 - def signup_welcome_text_subject=(subject)  
591 - self.signup_welcome_text[:subject] = subject  
592 - end  
593 -  
594 - def signup_welcome_text_body  
595 - self.signup_welcome_text[:body]  
596 - end  
597 -  
598 - def signup_welcome_text_body=(body)  
599 - self.signup_welcome_text[:body] = body  
600 - end  
601 -  
602 - def has_signup_welcome_text?  
603 - signup_welcome_text && !signup_welcome_text_body.blank?  
604 - end  
605 -  
606 - # #################################################  
607 - # Validations  
608 - # #################################################  
609 -  
610 - # <tt>name</tt> is mandatory  
611 - validates_presence_of :name  
612 -  
613 - # only one environment can be the default one  
614 - validates_uniqueness_of :is_default, :if => (lambda do |environment| environment.is_default? end), :message => N_('Only one Virtual Community can be the default one')  
615 -  
616 - validates_format_of :contact_email, :noreply_email, :with => Noosfero::Constants::EMAIL_FORMAT, :allow_blank => true  
617 -  
618 - xss_terminate :only => [ :message_for_disabled_enterprise ], :with => 'white_list', :on => 'validation'  
619 -  
620 - validates_presence_of :theme  
621 - validates_numericality_of :reports_lower_bound, :allow_nil => false, :only_integer => true, :greater_than_or_equal_to => 0  
622 -  
623 - include WhiteListFilter  
624 - filter_iframes :message_for_disabled_enterprise  
625 - def iframe_whitelist  
626 - trusted_sites_for_iframe  
627 - end  
628 -  
629 - # #################################################  
630 - # Business logic in general  
631 - # #################################################  
632 -  
633 - # the default Environment.  
634 - def self.default  
635 - self.find(:first, :conditions => [ 'is_default = ?', true ] )  
636 - end  
637 -  
638 - # returns an array with the top level categories for this environment.  
639 - def top_level_categories  
640 - Category.top_level_for(self)  
641 - end  
642 -  
643 - # Returns the hostname of the first domain associated to this environment.  
644 - #  
645 - # If #force_www is true, adds 'www.' at the beginning of the hostname. If the  
646 - # environment has not associated domains, returns 'localhost'.  
647 - def default_hostname(email_hostname = false)  
648 - domain = 'localhost'  
649 - unless self.domains(true).empty?  
650 - domain = (self.domains.find_by_is_default(true) || self.domains.find(:first, :order => 'id')).name  
651 - domain = email_hostname ? domain : (force_www ? ('www.' + domain) : domain)  
652 - end  
653 - domain  
654 - end  
655 -  
656 - def admin_url  
657 - { :controller => 'admin_panel', :action => 'index' }  
658 - end  
659 -  
660 - def top_url  
661 - url = 'http://'  
662 - url << (Noosfero.url_options.key?(:host) ? Noosfero.url_options[:host] : default_hostname)  
663 - url << ':' << Noosfero.url_options[:port].to_s if Noosfero.url_options.key?(:port)  
664 - url  
665 - end  
666 -  
667 - def to_s  
668 - self.name || '?'  
669 - end  
670 -  
671 - has_many :articles, :through => :profiles  
672 - def recent_documents(limit = 10, options = {}, pagination = true)  
673 - self.articles.recent(limit, options, pagination)  
674 - end  
675 -  
676 - has_many :events, :through => :profiles, :source => :articles, :class_name => 'Event'  
677 -  
678 - has_many :tags, :through => :articles  
679 -  
680 - def tag_counts  
681 - articles.tag_counts.inject({}) do |memo,tag|  
682 - memo[tag.name] = tag.count  
683 - memo  
684 - end  
685 - end  
686 -  
687 - def themes  
688 - if settings[:themes]  
689 - Theme.system_themes.select { |theme| settings[:themes].include?(theme.id) }  
690 - else  
691 - []  
692 - end  
693 - end  
694 -  
695 - def themes=(values)  
696 - settings[:themes] = values  
697 - end  
698 -  
699 - def add_themes(values)  
700 - if settings[:themes].nil?  
701 - self.themes = values  
702 - else  
703 - settings[:themes] += values  
704 - end  
705 - end  
706 -  
707 - def update_theme(theme)  
708 - self.theme = theme  
709 - self.save!  
710 - end  
711 -  
712 - def update_layout_template(template)  
713 - self.layout_template = template  
714 - self.save!  
715 - end  
716 -  
717 - before_create do |env|  
718 - env.settings[:themes] ||= %w[  
719 - aluminium  
720 - butter  
721 - chameleon  
722 - chocolate  
723 - noosfero  
724 - orange  
725 - plum  
726 - scarletred  
727 - skyblue  
728 - ]  
729 - end  
730 -  
731 - def community_template  
732 - template = Community.find_by_id settings[:community_template_id]  
733 - template if template && template.is_template  
734 - end  
735 -  
736 - def community_template=(value)  
737 - settings[:community_template_id] = value.id  
738 - end  
739 -  
740 - def person_template  
741 - template = Person.find_by_id settings[:person_template_id]  
742 - template if template && template.is_template  
743 - end  
744 -  
745 - def person_template=(value)  
746 - settings[:person_template_id] = value.id  
747 - end  
748 -  
749 - def enterprise_template  
750 - template = Enterprise.find_by_id settings[:enterprise_template_id]  
751 - template if template && template.is_template  
752 - end  
753 -  
754 - def enterprise_template=(value)  
755 - settings[:enterprise_template_id] = value.id  
756 - end  
757 -  
758 - def inactive_enterprise_template  
759 - template = Enterprise.find_by_id settings[:inactive_enterprise_template_id]  
760 - template if template && template.is_template  
761 - end  
762 -  
763 - def inactive_enterprise_template=(value)  
764 - settings[:inactive_enterprise_template_id] = value.id  
765 - end  
766 -  
767 - def replace_enterprise_template_when_enable  
768 - settings[:replace_enterprise_template_when_enable] || false  
769 - end  
770 -  
771 - def replace_enterprise_template_when_enable=(value)  
772 - settings[:replace_enterprise_template_when_enable] = value  
773 - end  
774 -  
775 - def portal_community  
776 - Community[settings[:portal_community_identifier]]  
777 - end  
778 -  
779 - def portal_community=(value)  
780 - settings[:portal_community_identifier] = value.nil? ? nil : value.identifier  
781 - end  
782 -  
783 - def unset_portal_community!  
784 - self.portal_community=nil  
785 - self.portal_folders=nil  
786 - self.news_amount_by_folder=nil  
787 - self.disable('use_portal_community')  
788 - self.save  
789 - end  
790 -  
791 - def is_portal_community?(profile)  
792 - portal_community == profile  
793 - end  
794 -  
795 - def portal_folders  
796 - (settings[:portal_folders] || []).map{|fid| portal_community.articles.find(:first, :conditions => { :id => fid }) }.compact  
797 - end  
798 -  
799 - def portal_folders=(folders)  
800 - settings[:portal_folders] = folders ? folders.map(&:id) : nil  
801 - end  
802 -  
803 - def portal_news_cache_key(language='en')  
804 - "home-page-news/#{cache_key}-#{language}"  
805 - end  
806 -  
807 - def notification_emails  
808 - [noreply_email.blank? ? nil : noreply_email].compact + admins.map(&:email)  
809 - end  
810 -  
811 - after_create :create_templates  
812 -  
813 - def create_templates  
814 - prefix = self.name.to_slug + '_'  
815 -  
816 - enterprise_template = Enterprise.new(  
817 - :name => 'Enterprise template',  
818 - :identifier => prefix + 'enterprise_template'  
819 - )  
820 -  
821 - inactive_enterprise_template = Enterprise.new(  
822 - :name => 'Inactive Enterprise template',  
823 - :identifier => prefix + 'inactive_enterprise_template'  
824 - )  
825 -  
826 - community_template = Community.new(  
827 - :name => 'Community template',  
828 - :identifier => prefix + 'community_template'  
829 - )  
830 -  
831 - [  
832 - enterprise_template,  
833 - inactive_enterprise_template,  
834 - community_template  
835 - ].each do |profile|  
836 - profile.is_template = true  
837 - profile.visible = false  
838 - profile.environment = self  
839 - profile.save!  
840 - end  
841 -  
842 - pass = Digest::MD5.hexdigest rand.to_s  
843 - user = User.new(:login => (prefix + 'person_template'), :email => (prefix + 'template@template.noo'), :password => pass, :password_confirmation => pass)  
844 - user.environment = self  
845 - user.save!  
846 -  
847 - person_template = user.person  
848 - person_template.name = "Person template"  
849 - person_template.is_template = true  
850 - person_template.visible = false  
851 - person_template.save!  
852 -  
853 - self.enterprise_template = enterprise_template  
854 - self.inactive_enterprise_template = inactive_enterprise_template  
855 - self.community_template = community_template  
856 - self.person_template = person_template  
857 - self.save!  
858 - end  
859 -  
860 - after_create :create_default_licenses  
861 - def create_default_licenses  
862 - [  
863 - { :name => 'CC (by)', :url => 'http://creativecommons.org/licenses/by/3.0/legalcode'},  
864 - { :name => 'CC (by-nd)', :url => 'http://creativecommons.org/licenses/by-nd/3.0/legalcode'},  
865 - { :name => 'CC (by-sa)', :url => 'http://creativecommons.org/licenses/by-sa/3.0/legalcode'},  
866 - { :name => 'CC (by-nc)', :url => 'http://creativecommons.org/licenses/by-nc/3.0/legalcode'},  
867 - { :name => 'CC (by-nc-nd)', :url => 'http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode'},  
868 - { :name => 'CC (by-nc-sa)', :url => 'http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode'},  
869 - { :name => 'Free Art', :url => 'http://artlibre.org/licence/lal/en'},  
870 - { :name => 'GNU FDL', :url => 'http://www.gnu.org/licenses/fdl-1.3.txt'},  
871 - ].each do |data|  
872 - license = License.new(data)  
873 - license.environment = self  
874 - license.save!  
875 - end  
876 - end  
877 -  
878 - def highlighted_products_with_image(options = {})  
879 - Product.find(:all, {:conditions => {:highlighted => true, :profile_id => self.enterprises.find(:all, :select => :id) }, :joins => :image}.merge(options))  
880 - end  
881 -  
882 - settings_items :home_cache_in_minutes, :type => :integer, :default => 5  
883 - settings_items :general_cache_in_minutes, :type => :integer, :default => 15  
884 - settings_items :profile_cache_in_minutes, :type => :integer, :default => 15  
885 -  
886 - def image_galleries  
887 - portal_community ? portal_community.image_galleries : []  
888 - end  
889 -  
890 - serialize :languages  
891 -  
892 - before_validation do |environment|  
893 - environment.default_language = nil if environment.default_language.blank?  
894 - end  
895 -  
896 - validate :default_language_available  
897 - validate :languages_available  
898 -  
899 - def locales  
900 - if languages.present?  
901 - languages.inject({}) {|r, l| r.merge({l => Noosfero.locales[l]})}  
902 - else  
903 - Noosfero.locales  
904 - end  
905 - end  
906 -  
907 - def default_locale  
908 - default_language || Noosfero.default_locale  
909 - end  
910 -  
911 - def available_locales  
912 - locales_list = locales.keys  
913 - # move English to the beginning  
914 - if locales_list.include?('en')  
915 - locales_list = ['en'] + (locales_list - ['en']).sort  
916 - end  
917 - locales_list  
918 - end  
919 -  
920 - private  
921 -  
922 - def default_language_available  
923 - if default_language.present? && !available_locales.include?(default_language)  
924 - errors.add(:default_language, _('is not available.'))  
925 - end  
926 - end  
927 -  
928 - def languages_available  
929 - if languages.present?  
930 - languages.each do |language|  
931 - if !Noosfero.available_locales.include?(language)  
932 - errors.add(:languages, _('have unsupported languages.'))  
933 - break  
934 - end  
935 - end  
936 - end  
937 - end  
938 -end