Commit 3aa65efa4647e9fddfa80a79aca5b6d479f98d26
1 parent
bafa8c0d
Exists in
master
and in
28 other branches
ActionItem629: merging 0.10.x commits
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2393 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
15 changed files
with
307 additions
and
146 deletions
Show diff stats
app/controllers/public/account_controller.rb
| @@ -13,17 +13,17 @@ class AccountController < PublicController | @@ -13,17 +13,17 @@ class AccountController < PublicController | ||
| 13 | def login | 13 | def login |
| 14 | @user = User.new | 14 | @user = User.new |
| 15 | return unless request.post? | 15 | return unless request.post? |
| 16 | - self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) | 16 | + self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) if params[:user] |
| 17 | if logged_in? | 17 | if logged_in? |
| 18 | if params[:remember_me] == "1" | 18 | if params[:remember_me] == "1" |
| 19 | self.current_user.remember_me | 19 | self.current_user.remember_me |
| 20 | cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } | 20 | cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } |
| 21 | end | 21 | end |
| 22 | - go_to_user_initial_page | 22 | + go_to_user_initial_page if redirect? |
| 23 | flash[:notice] = _("Logged in successfully") | 23 | flash[:notice] = _("Logged in successfully") |
| 24 | else | 24 | else |
| 25 | flash[:notice] = _('Incorrect username or password') | 25 | flash[:notice] = _('Incorrect username or password') |
| 26 | - redirect_to :back | 26 | + redirect_to :back if redirect? |
| 27 | end | 27 | end |
| 28 | end | 28 | end |
| 29 | 29 | ||
| @@ -32,6 +32,7 @@ class AccountController < PublicController | @@ -32,6 +32,7 @@ class AccountController < PublicController | ||
| 32 | end | 32 | end |
| 33 | 33 | ||
| 34 | def login_popup | 34 | def login_popup |
| 35 | + @user = User.new | ||
| 35 | render :action => 'login', :layout => false | 36 | render :action => 'login', :layout => false |
| 36 | end | 37 | end |
| 37 | 38 | ||
| @@ -41,25 +42,18 @@ class AccountController < PublicController | @@ -41,25 +42,18 @@ class AccountController < PublicController | ||
| 41 | @user = User.new(params[:user]) | 42 | @user = User.new(params[:user]) |
| 42 | @user.terms_of_use = environment.terms_of_use | 43 | @user.terms_of_use = environment.terms_of_use |
| 43 | @terms_of_use = environment.terms_of_use | 44 | @terms_of_use = environment.terms_of_use |
| 44 | - if request.post? && params[self.icaptcha_field].blank? && answer_correct | 45 | + if request.post? && params[self.icaptcha_field].blank? |
| 45 | @user.save! | 46 | @user.save! |
| 46 | @user.person.environment = environment | 47 | @user.person.environment = environment |
| 47 | @user.person.save! | 48 | @user.person.save! |
| 48 | self.current_user = @user | 49 | self.current_user = @user |
| 49 | owner_role = Role.find_by_name('owner') | 50 | owner_role = Role.find_by_name('owner') |
| 50 | @user.person.affiliate(@user.person, [owner_role]) if owner_role | 51 | @user.person.affiliate(@user.person, [owner_role]) if owner_role |
| 51 | - post_activate_enterprise if params[:enterprise_code] | ||
| 52 | - go_to_user_initial_page | 52 | + go_to_user_initial_page if redirect? |
| 53 | flash[:notice] = _("Thanks for signing up!") | 53 | flash[:notice] = _("Thanks for signing up!") |
| 54 | - else | ||
| 55 | - activate_enterprise if params[:enterprise_code] | ||
| 56 | end | 54 | end |
| 57 | rescue ActiveRecord::RecordInvalid | 55 | rescue ActiveRecord::RecordInvalid |
| 58 | - if params[:enterprise_code] | ||
| 59 | - render :action => 'activate_enterprise' | ||
| 60 | - else | ||
| 61 | - render :action => 'signup' | ||
| 62 | - end | 56 | + render :action => 'signup' |
| 63 | end | 57 | end |
| 64 | end | 58 | end |
| 65 | 59 | ||
| @@ -128,47 +122,87 @@ class AccountController < PublicController | @@ -128,47 +122,87 @@ class AccountController < PublicController | ||
| 128 | end | 122 | end |
| 129 | end | 123 | end |
| 130 | 124 | ||
| 131 | - protected | ||
| 132 | - | ||
| 133 | - def activate_enterprise | ||
| 134 | - enterprise = load_enterprise | ||
| 135 | - @enterprise = enterprise | ||
| 136 | - | ||
| 137 | - unless enterprise | 125 | + def activation_question |
| 126 | + @enterprise = load_enterprise | ||
| 127 | + unless @enterprise | ||
| 138 | render :action => 'invalid_enterprise_code' | 128 | render :action => 'invalid_enterprise_code' |
| 139 | return | 129 | return |
| 140 | end | 130 | end |
| 141 | - | ||
| 142 | - if enterprise.enabled | 131 | + if @enterprise.enabled |
| 143 | render :action => 'already_activated' | 132 | render :action => 'already_activated' |
| 144 | return | 133 | return |
| 145 | end | 134 | end |
| 146 | - | ||
| 147 | - # Reaches here only if answer is not correct | ||
| 148 | - if request.post? && !answer_correct | ||
| 149 | - enterprise.block | ||
| 150 | - end | ||
| 151 | 135 | ||
| 152 | - @question = enterprise.question | ||
| 153 | - | ||
| 154 | - if !@question || enterprise.blocked? | 136 | + @question = @enterprise.question |
| 137 | + if !@question || @enterprise.blocked? | ||
| 155 | render :action => 'blocked' | 138 | render :action => 'blocked' |
| 156 | return | 139 | return |
| 157 | end | 140 | end |
| 141 | + end | ||
| 158 | 142 | ||
| 159 | - render :action => 'activate_enterprise' | 143 | + def accept_terms |
| 144 | + @enterprise = load_enterprise | ||
| 145 | + @question = @enterprise.question | ||
| 146 | + check_answer | ||
| 147 | + @terms_of_enterprise_use = environment.terms_of_enterprise_use | ||
| 160 | end | 148 | end |
| 161 | 149 | ||
| 162 | - def post_activate_enterprise | 150 | + def activate_enterprise |
| 151 | + @enterprise = load_enterprise | ||
| 152 | + @question = @enterprise.question | ||
| 153 | + return unless check_answer | ||
| 154 | + return unless check_acceptance_of_terms | ||
| 155 | + load_user | ||
| 156 | + | ||
| 163 | activation = load_enterprise_activation | 157 | activation = load_enterprise_activation |
| 164 | - if activation | 158 | + if activation && user |
| 165 | activation.requestor = user | 159 | activation.requestor = user |
| 166 | activation.finish | 160 | activation.finish |
| 161 | + redirect_to :controller => 'profile_editor', :action => 'index', :profile => @enterprise.identifier | ||
| 162 | + end | ||
| 163 | + end | ||
| 164 | + | ||
| 165 | + protected | ||
| 166 | + | ||
| 167 | + def redirect? | ||
| 168 | + !@cannot_redirect | ||
| 169 | + end | ||
| 170 | + | ||
| 171 | + def no_redirect | ||
| 172 | + @cannot_redirect = true | ||
| 173 | + end | ||
| 174 | + | ||
| 175 | + def load_user | ||
| 176 | + unless logged_in? | ||
| 177 | + no_redirect | ||
| 178 | + if params[:new_user] | ||
| 179 | + signup | ||
| 180 | + else | ||
| 181 | + login | ||
| 182 | + end | ||
| 183 | + end | ||
| 184 | + true | ||
| 185 | + end | ||
| 186 | + | ||
| 187 | + def check_answer | ||
| 188 | + unless answer_correct | ||
| 189 | + @enterprise.block | ||
| 190 | + render :action => 'blocked' | ||
| 191 | + return | ||
| 192 | + end | ||
| 193 | + true | ||
| 194 | + end | ||
| 195 | + | ||
| 196 | + def check_acceptance_of_terms | ||
| 197 | + unless params[:terms_accepted] | ||
| 198 | + redirect_to :action => 'index' | ||
| 199 | + return | ||
| 167 | end | 200 | end |
| 201 | + true | ||
| 168 | end | 202 | end |
| 169 | 203 | ||
| 170 | def load_enterprise_activation | 204 | def load_enterprise_activation |
| 171 | - EnterpriseActivation.find_by_code(params[:enterprise_code]) | 205 | + @enterprise_activation ||= EnterpriseActivation.find_by_code(params[:enterprise_code]) |
| 172 | end | 206 | end |
| 173 | 207 | ||
| 174 | def load_enterprise | 208 | def load_enterprise |
app/controllers/public/search_controller.rb
| @@ -195,7 +195,7 @@ class SearchController < ApplicationController | @@ -195,7 +195,7 @@ class SearchController < ApplicationController | ||
| 195 | [ | 195 | [ |
| 196 | [ :people, _('People'), @finder.recent('people', limit) ], | 196 | [ :people, _('People'), @finder.recent('people', limit) ], |
| 197 | [ :enterprises, __('Enterprises'), @finder.recent('enterprises', limit) ], | 197 | [ :enterprises, __('Enterprises'), @finder.recent('enterprises', limit) ], |
| 198 | - [ :products, ('Products'), @finder.recent('products', limit) ], | 198 | + [ :products, _('Products'), @finder.recent('products', limit) ], |
| 199 | [ :events, _('Upcoming events'), @finder.upcoming_events({:per_page => limit}) ], | 199 | [ :events, _('Upcoming events'), @finder.upcoming_events({:per_page => limit}) ], |
| 200 | [ :communities, __('Communities'), @finder.recent('communities', limit) ], | 200 | [ :communities, __('Communities'), @finder.recent('communities', limit) ], |
| 201 | [ :most_commented_articles, _('Most commented articles'), @finder.most_commented_articles(limit) ], | 201 | [ :most_commented_articles, _('Most commented articles'), @finder.most_commented_articles(limit) ], |
app/models/environment.rb
| @@ -136,6 +136,23 @@ class Environment < ActiveRecord::Base | @@ -136,6 +136,23 @@ class Environment < ActiveRecord::Base | ||
| 136 | ! self.settings['terms_of_use'].nil? | 136 | ! self.settings['terms_of_use'].nil? |
| 137 | end | 137 | end |
| 138 | 138 | ||
| 139 | + # the environment's terms of enterprise use: every enterprise member must accept them before | ||
| 140 | + # registering or activating enterprises. | ||
| 141 | + def terms_of_enterprise_use | ||
| 142 | + self.settings['terms_of_enterprise_use'] | ||
| 143 | + end | ||
| 144 | + | ||
| 145 | + # sets the environment's terms of enterprise use. | ||
| 146 | + def terms_of_enterprise_use=(value) | ||
| 147 | + self.settings['terms_of_enterprise_use'] = value | ||
| 148 | + end | ||
| 149 | + | ||
| 150 | + # returns <tt>true</tt> if this Environment has terms of enterprise use to be | ||
| 151 | + # accepted by users before registration or activation of enterprises. | ||
| 152 | + def has_terms_of_enterprise_use? | ||
| 153 | + ! self.settings['terms_of_enterprise_use'].blank? | ||
| 154 | + end | ||
| 155 | + | ||
| 139 | def message_for_disabled_enterprise | 156 | def message_for_disabled_enterprise |
| 140 | self.settings['message_for_disabled_enterprise'] | 157 | self.settings['message_for_disabled_enterprise'] |
| 141 | end | 158 | end |
app/models/environment_statistics_block.rb
| @@ -15,8 +15,8 @@ class EnvironmentStatisticsBlock < Block | @@ -15,8 +15,8 @@ class EnvironmentStatisticsBlock < Block | ||
| 15 | 15 | ||
| 16 | info = [ | 16 | info = [ |
| 17 | n_('One user', '%{num} users', users) % { :num => users }, | 17 | n_('One user', '%{num} users', users) % { :num => users }, |
| 18 | - n__('One enterprise', '%{num} enterprises', enterprises) % { :num => enterprises }, | ||
| 19 | - n__('One community', '%{num} communities', communities) % { :num => communities }, | 18 | + n_('One enterprise', '%{num} enterprises', enterprises) % { :num => enterprises }, |
| 19 | + n_('One community', '%{num} communities', communities) % { :num => communities }, | ||
| 20 | ] | 20 | ] |
| 21 | 21 | ||
| 22 | block_title(title) + content_tag('ul', info.map {|item| content_tag('li', item) }.join("\n")) | 22 | block_title(title) + content_tag('ul', info.map {|item| content_tag('li', item) }.join("\n")) |
| @@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
| 1 | +<% labelled_form_for :user, @user, | ||
| 2 | + :url => { :controller => 'account', :action => 'login' }, | ||
| 3 | + :html => { :help => _('If you are a registered user, enter your username and password to be authenticated.')+'<p/>'+_('To join on this environment, click on "<b>I want to be an user!</b>".')+'<p/>'+_('If you forgot your password, click on "<b>I forgot my password!</b>" link.') } do |f| %> | ||
| 4 | + | ||
| 5 | +<%= f.text_field :login, | ||
| 6 | + :id => ( lightbox? ? 'lightbox_' : '' ) + 'user_login', | ||
| 7 | + :help => _('Here goes the nickname that you give on the registration.'), | ||
| 8 | + :onchange => 'this.value = convToValidLogin( this.value )' %> | ||
| 9 | + | ||
| 10 | +<%= f.password_field :password, | ||
| 11 | + :id => ( lightbox? ? 'lightbox_' : '' ) + 'user_password', | ||
| 12 | + :help => _('your password is personal, protect it.') %> | ||
| 13 | + | ||
| 14 | +<% button_bar do %> | ||
| 15 | + <%= submit_button( 'login', _('Log in') )%> | ||
| 16 | + <%= lightbox_close_button(_('Cancel')) if lightbox? %> | ||
| 17 | +<% end %> | ||
| 18 | + | ||
| 19 | +<% end %> |
| @@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
| 1 | +<h1><%= _('Register') %></h1> | ||
| 2 | + | ||
| 3 | +<%= error_messages_for :user %> | ||
| 4 | +<% labelled_form_for :user, @user, | ||
| 5 | + :html => { :help=>_('Fill all this fields to join in this environment.' + | ||
| 6 | + '<p/>If you forgot your password, do not create a new account,' + | ||
| 7 | + ' click on the "<b>I forgot my password!</b>" link. ;-)') | ||
| 8 | + } do |f| -%> | ||
| 9 | + | ||
| 10 | +<%= f.text_field :login, | ||
| 11 | + :help => help=_('"Username" is a simple nickname to recognize you on this environment.'), | ||
| 12 | + :onchange => 'this.value = convToValidLogin( this.value )' %> | ||
| 13 | +<small><%= help %></small> | ||
| 14 | + | ||
| 15 | +<%= f.text_field :email, | ||
| 16 | + :help => help=_('We\'ll send you an e-mail to validate your registration.') %> | ||
| 17 | +<small><%= help %></small> | ||
| 18 | + | ||
| 19 | +<%= f.password_field :password, | ||
| 20 | + :help => help=_('Do not use a obviously password, but try some unforgettable word.') %> | ||
| 21 | +<small><%= help %></small> | ||
| 22 | + | ||
| 23 | +<%= f.password_field :password_confirmation, | ||
| 24 | + :help => help=_('We need to be sure that you wrote correctly your password.') %> | ||
| 25 | +<small><%= help %></small> | ||
| 26 | + | ||
| 27 | +<%= icaptcha_field() %> | ||
| 28 | + | ||
| 29 | +<% if @terms_of_use %> | ||
| 30 | + <p> | ||
| 31 | + <%= @terms_of_use %> | ||
| 32 | + </p> | ||
| 33 | + <p> | ||
| 34 | + <%= check_box 'user', 'terms_accepted' %> | ||
| 35 | + <%= _('I accept the terms of use') %> | ||
| 36 | + </p> | ||
| 37 | +<% end %> | ||
| 38 | + | ||
| 39 | +<% button_bar do %> | ||
| 40 | + <%= submit_button('save', _('Sign up'), :cancel => {:action => 'index'}, :class => 'icon-menu-login') %> | ||
| 41 | +<% end %> | ||
| 42 | +<% end -%> |
| @@ -0,0 +1,6 @@ | @@ -0,0 +1,6 @@ | ||
| 1 | +<div id='terms-of-enterprise-use'><%= @terms_of_enterprise_use %></div> | ||
| 2 | + | ||
| 3 | +<% button_bar do %> | ||
| 4 | + <%= button_to(_('I accept the terms'), {:action => 'activate_enterprise', :terms_accepted => true, :enterprise_code => params[:enterprise_code], :answer => params[:answer]} ) %> | ||
| 5 | + <%= button_to(_('I do NOT accept the terms'), {:controller => 'home', :action => 'index'} ) %> | ||
| 6 | +<% end %> |
app/views/account/activate_enterprise.rhtml
| 1 | -<h1><%= _('Register and activate enterprise') %></h1> | 1 | +<h1><%= _('What user should be the admin of the enterprise page') %></h1> |
| 2 | 2 | ||
| 3 | <%= error_messages_for :user %> | 3 | <%= error_messages_for :user %> |
| 4 | -<% labelled_form_for :user, @user, | ||
| 5 | - :html => { :help=>_('Fill all this fields to activate your enterprise and join in this environment.' + | ||
| 6 | - '<p/>If you forgot your password, do not create a new account,' + | ||
| 7 | - ' click on the "<b>I forgot my password!</b>" link. ;-)') | ||
| 8 | - } do |f| -%> | ||
| 9 | 4 | ||
| 10 | -<%= f.text_field :login, | ||
| 11 | - :help => help=_('"Username" is a simple nickname to recognize you on this environment.'), | ||
| 12 | - :onchange => 'this.value = convToValidLogin( this.value )' %> | ||
| 13 | -<small><%= help %></small> | 5 | +<div id="enterprise-activation-create-user-or-login-button"> |
| 6 | + <%= link_to_function _('Already have user') %> | ||
| 7 | + <%= link_to_function _('Create new user') %> | ||
| 8 | +</div> | ||
| 14 | 9 | ||
| 15 | -<%= f.text_field :email, | ||
| 16 | - :help => help=_('We\'ll send you an e-mail to validate your registration.') %> | ||
| 17 | -<small><%= help %></small> | 10 | +<div id="enterprise-activation-create-user-form"> |
| 11 | + <%= render :partial => 'signup_form' %> | ||
| 12 | +</div> | ||
| 18 | 13 | ||
| 19 | -<%= f.password_field :password, | ||
| 20 | - :help => help=_('Do not use a obviously password, but try some unforgettable word.') %> | ||
| 21 | -<small><%= help %></small> | ||
| 22 | - | ||
| 23 | -<%= f.password_field :password_confirmation, | ||
| 24 | - :help => help=_('We need to be sure that you wrote correctly your password.') %> | ||
| 25 | -<small><%= help %></small> | ||
| 26 | - | ||
| 27 | -<%= ApplicationHelper::NoosferoFormBuilder::output_field(@question == :foundation_year ? _('What year your enterprise was founded?') : _('What is the CNPJ of your enterprise?'), text_field_tag(:answer, nil,:help => help=_('We need to be sure that this is your enterprise'))) %> | ||
| 28 | - | ||
| 29 | -<%= hidden_field_tag :enterprise_code, params[:enterprise_code] %> | ||
| 30 | - | ||
| 31 | -<% if @terms_of_use %> | ||
| 32 | - <p> | ||
| 33 | - <%= @terms_of_use %> | ||
| 34 | - </p> | ||
| 35 | - <p> | ||
| 36 | - <%= check_box 'user', 'terms_accepted' %> | ||
| 37 | - <%= _('I accept the terms of use') %> | ||
| 38 | - </p> | ||
| 39 | -<% end %> | ||
| 40 | - | ||
| 41 | -<% button_bar do %> | ||
| 42 | - <%= submit_button('save', _('Sign up'), :cancel => {:action => 'index'}, :class => 'icon-menu-login') %> | ||
| 43 | -<% end %> | ||
| 44 | -<% end -%> | 14 | +<div id="enterprise-activation-login-form"> |
| 15 | + <%= render :partial => 'login_form' %> | ||
| 16 | +</div> |
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +<% form_tag :action => 'accept_terms' do %> | ||
| 2 | + | ||
| 3 | + <%= ApplicationHelper::NoosferoFormBuilder::output_field(@question == :foundation_year ? _('What year your enterprise was founded?') : _('What is the CNPJ of your enterprise?'), text_field_tag(:answer, nil,:help => help=_('We need to be sure that this is your enterprise'))) %> | ||
| 4 | + | ||
| 5 | + <%= hidden_field_tag :enterprise_code, params[:enterprise_code] %> | ||
| 6 | + | ||
| 7 | + <% button_bar do %> | ||
| 8 | + <%= submit_button('answer', _('Answer'), :cancel => {:action => 'index'} ) %> | ||
| 9 | + <% end %> | ||
| 10 | +<% end %> |
app/views/account/login.rhtml
| @@ -2,9 +2,7 @@ | @@ -2,9 +2,7 @@ | ||
| 2 | 2 | ||
| 3 | <h2><%= _('Login') %></h2> | 3 | <h2><%= _('Login') %></h2> |
| 4 | 4 | ||
| 5 | -<% | ||
| 6 | - @user = User.new if ! @user | ||
| 7 | -%> | 5 | +<% @user = User.new unless @user %> |
| 8 | 6 | ||
| 9 | <% labelled_form_for :user, @user, | 7 | <% labelled_form_for :user, @user, |
| 10 | :url => { :controller => 'account', :action => 'login' }, | 8 | :url => { :controller => 'account', :action => 'login' }, |
app/views/account/signup.rhtml
| 1 | -<h1><%= _('Register') %></h1> | ||
| 2 | - | ||
| 3 | -<%= error_messages_for :user %> | ||
| 4 | -<% labelled_form_for :user, @user, | ||
| 5 | - :html => { :help=>_('Fill all this fields to join in this environment.' + | ||
| 6 | - '<p/>If you forgot your password, do not create a new account,' + | ||
| 7 | - ' click on the "<b>I forgot my password!</b>" link. ;-)') | ||
| 8 | - } do |f| -%> | ||
| 9 | - | ||
| 10 | -<%= f.text_field :login, | ||
| 11 | - :help => help=_('"Username" is a simple nickname to recognize you on this environment.'), | ||
| 12 | - :onchange => 'this.value = convToValidLogin( this.value )' %> | ||
| 13 | -<small><%= help %></small> | ||
| 14 | - | ||
| 15 | -<%= f.text_field :email, | ||
| 16 | - :help => help=_('We\'ll send you an e-mail to validate your registration.') %> | ||
| 17 | -<small><%= help %></small> | ||
| 18 | - | ||
| 19 | -<%= f.password_field :password, | ||
| 20 | - :help => help=_('Do not use a obviously password, but try some unforgettable word.') %> | ||
| 21 | -<small><%= help %></small> | ||
| 22 | - | ||
| 23 | -<%= f.password_field :password_confirmation, | ||
| 24 | - :help => help=_('We need to be sure that you wrote correctly your password.') %> | ||
| 25 | -<small><%= help %></small> | ||
| 26 | - | ||
| 27 | -<%= icaptcha_field() %> | ||
| 28 | - | ||
| 29 | -<% if @terms_of_use %> | ||
| 30 | - <p> | ||
| 31 | - <%= @terms_of_use %> | ||
| 32 | - </p> | ||
| 33 | - <p> | ||
| 34 | - <%= check_box 'user', 'terms_accepted' %> | ||
| 35 | - <%= _('I accept the terms of use') %> | ||
| 36 | - </p> | ||
| 37 | -<% end %> | ||
| 38 | - | ||
| 39 | -<% button_bar do %> | ||
| 40 | - <%= submit_button('save', _('Sign up'), :cancel => {:action => 'index'}, :class => 'icon-menu-login') %> | ||
| 41 | -<% end %> | ||
| 42 | -<% end -%> | 1 | +<%= render :partial => 'signup_form' %> |
db/schema.rb
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | # | 9 | # |
| 10 | # It's strongly recommended to check this file into your version control system. | 10 | # It's strongly recommended to check this file into your version control system. |
| 11 | 11 | ||
| 12 | -ActiveRecord::Schema.define(:version => 49) do | 12 | +ActiveRecord::Schema.define(:version => 50) do |
| 13 | 13 | ||
| 14 | create_table "article_versions", :force => true do |t| | 14 | create_table "article_versions", :force => true do |t| |
| 15 | t.integer "article_id" | 15 | t.integer "article_id" |
| @@ -219,6 +219,7 @@ ActiveRecord::Schema.define(:version => 49) do | @@ -219,6 +219,7 @@ ActiveRecord::Schema.define(:version => 49) do | ||
| 219 | t.text "custom_header" | 219 | t.text "custom_header" |
| 220 | t.text "custom_footer" | 220 | t.text "custom_footer" |
| 221 | t.string "theme" | 221 | t.string "theme" |
| 222 | + t.boolean "public_profile", :default => true | ||
| 222 | end | 223 | end |
| 223 | 224 | ||
| 224 | add_index "profiles", ["environment_id"], :name => "index_profiles_on_environment_id" | 225 | add_index "profiles", ["environment_id"], :name => "index_profiles_on_environment_id" |
test/functional/account_controller_test.rb
| @@ -277,10 +277,16 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -277,10 +277,16 @@ class AccountControllerTest < Test::Unit::TestCase | ||
| 277 | assert_redirected_to :controller => 'profile_editor' | 277 | assert_redirected_to :controller => 'profile_editor' |
| 278 | end | 278 | end |
| 279 | 279 | ||
| 280 | +################################ | ||
| 281 | +# # | ||
| 282 | +# Enterprise activation tests # | ||
| 283 | +# # | ||
| 284 | +################################ | ||
| 285 | + | ||
| 280 | should 'report invalid enterprise code on signup' do | 286 | should 'report invalid enterprise code on signup' do |
| 281 | EnterpriseActivation.expects(:find_by_code).with('some_invalid_code').returns(nil).at_least_once | 287 | EnterpriseActivation.expects(:find_by_code).with('some_invalid_code').returns(nil).at_least_once |
| 282 | 288 | ||
| 283 | - get :signup, :enterprise_code => 'some_invalid_code' | 289 | + get :activation_question, :enterprise_code => 'some_invalid_code' |
| 284 | 290 | ||
| 285 | assert_template 'invalid_enterprise_code' | 291 | assert_template 'invalid_enterprise_code' |
| 286 | end | 292 | end |
| @@ -291,19 +297,19 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -291,19 +297,19 @@ class AccountControllerTest < Test::Unit::TestCase | ||
| 291 | task.expects(:enterprise).returns(ent).at_least_once | 297 | task.expects(:enterprise).returns(ent).at_least_once |
| 292 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 298 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 293 | 299 | ||
| 294 | - get :signup, :enterprise_code => '0123456789' | 300 | + get :activation_question, :enterprise_code => '0123456789' |
| 295 | 301 | ||
| 296 | assert_template 'already_activated' | 302 | assert_template 'already_activated' |
| 297 | end | 303 | end |
| 298 | 304 | ||
| 299 | - should 'load enterprise from code on signup' do | 305 | + should 'load enterprise from code on for validation question' do |
| 300 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent') | 306 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent') |
| 301 | 307 | ||
| 302 | task = mock | 308 | task = mock |
| 303 | task.expects(:enterprise).returns(ent).at_least_once | 309 | task.expects(:enterprise).returns(ent).at_least_once |
| 304 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 310 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 305 | 311 | ||
| 306 | - get :signup, :enterprise_code => '0123456789' | 312 | + get :activation_question, :enterprise_code => '0123456789' |
| 307 | 313 | ||
| 308 | assert_equal ent, assigns(:enterprise) | 314 | assert_equal ent, assigns(:enterprise) |
| 309 | end | 315 | end |
| @@ -315,7 +321,7 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -315,7 +321,7 @@ class AccountControllerTest < Test::Unit::TestCase | ||
| 315 | task.expects(:enterprise).returns(ent).at_least_once | 321 | task.expects(:enterprise).returns(ent).at_least_once |
| 316 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 322 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 317 | 323 | ||
| 318 | - get :signup, :enterprise_code => '0123456789' | 324 | + get :activation_question, :enterprise_code => '0123456789' |
| 319 | 325 | ||
| 320 | assert_template 'blocked' | 326 | assert_template 'blocked' |
| 321 | end | 327 | end |
| @@ -327,34 +333,32 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -327,34 +333,32 @@ class AccountControllerTest < Test::Unit::TestCase | ||
| 327 | task.expects(:enterprise).returns(ent).at_least_once | 333 | task.expects(:enterprise).returns(ent).at_least_once |
| 328 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 334 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 329 | 335 | ||
| 330 | - get :signup, :enterprise_code => '0123456789' | 336 | + get :activation_question, :enterprise_code => '0123456789' |
| 331 | 337 | ||
| 332 | - assert_template 'activate_enterprise' | 338 | + assert_template 'activation_question' |
| 333 | end | 339 | end |
| 334 | 340 | ||
| 335 | should 'show form to those enterprises that have cnpj' do | 341 | should 'show form to those enterprises that have cnpj' do |
| 336 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :cnpj => '0'*14, :enabled => false) | 342 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :cnpj => '0'*14, :enabled => false) |
| 337 | 343 | ||
| 338 | - | ||
| 339 | task = mock | 344 | task = mock |
| 340 | task.expects(:enterprise).returns(ent).at_least_once | 345 | task.expects(:enterprise).returns(ent).at_least_once |
| 341 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 346 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 342 | 347 | ||
| 343 | - get :signup, :enterprise_code => '0123456789' | 348 | + get :activation_question, :enterprise_code => '0123456789' |
| 344 | 349 | ||
| 345 | - assert_template 'activate_enterprise' | 350 | + assert_template 'activation_question' |
| 346 | end | 351 | end |
| 347 | 352 | ||
| 348 | should 'block those who are blocked' do | 353 | should 'block those who are blocked' do |
| 349 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => '1998', :enabled => false) | 354 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => '1998', :enabled => false) |
| 350 | ent.block | 355 | ent.block |
| 351 | 356 | ||
| 352 | - | ||
| 353 | task = mock | 357 | task = mock |
| 354 | task.expects(:enterprise).returns(ent).at_least_once | 358 | task.expects(:enterprise).returns(ent).at_least_once |
| 355 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 359 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 356 | 360 | ||
| 357 | - get :signup, :enterprise_code => '0123456789' | 361 | + get :activation_question, :enterprise_code => '0123456789' |
| 358 | 362 | ||
| 359 | assert_template 'blocked' | 363 | assert_template 'blocked' |
| 360 | end | 364 | end |
| @@ -366,7 +370,8 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -366,7 +370,8 @@ class AccountControllerTest < Test::Unit::TestCase | ||
| 366 | task.expects(:enterprise).returns(ent).at_least_once | 370 | task.expects(:enterprise).returns(ent).at_least_once |
| 367 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 371 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 368 | 372 | ||
| 369 | - create_user({}, :enterprise_code => '0123456789', :answer => '1997') | 373 | + post :accept_terms, :enterprise_code => '0123456789', :answer => '1997' |
| 374 | + | ||
| 370 | ent.reload | 375 | ent.reload |
| 371 | 376 | ||
| 372 | assert_nil User.find_by_login('test_user') | 377 | assert_nil User.find_by_login('test_user') |
| @@ -374,17 +379,97 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -374,17 +379,97 @@ class AccountControllerTest < Test::Unit::TestCase | ||
| 374 | assert_template 'blocked' | 379 | assert_template 'blocked' |
| 375 | end | 380 | end |
| 376 | 381 | ||
| 377 | - should 'activate enterprise for those who answer the question right and make them admin of the enterprise' do | 382 | + should 'show terms of use for enterprise owners' do |
| 383 | + env = Environment.default | ||
| 384 | + env.terms_of_enterprise_use = 'Some terms' | ||
| 385 | + env.save! | ||
| 386 | + | ||
| 387 | + ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) | ||
| 388 | + task = EnterpriseActivation.create!(:enterprise => ent) | ||
| 389 | + EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | ||
| 390 | + | ||
| 391 | + post :accept_terms, :enterprise_code => '0123456789', :answer => '1998' | ||
| 392 | + | ||
| 393 | + assert_template 'accept_terms' | ||
| 394 | + assert_tag :tag => 'div', :content => 'Some terms' | ||
| 395 | + end | ||
| 396 | + | ||
| 397 | + should 'not activate if user does not accept terms' do | ||
| 398 | + ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) | ||
| 399 | + p = User.create!(:login => 'test_user', :password => 'blih', :password_confirmation => 'blih', :email => 'test@noosfero.com').person | ||
| 400 | + login_as(p.identifier) | ||
| 401 | + | ||
| 402 | + task = EnterpriseActivation.create!(:enterprise => ent) | ||
| 403 | + EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | ||
| 404 | + | ||
| 405 | + post :activate_enterprise, :enterprise_code => '0123456789', :answer => '1998', :terms_accepted => false | ||
| 406 | + ent.reload | ||
| 407 | + | ||
| 408 | + assert !ent.enabled | ||
| 409 | + assert_not_includes ent.members, p | ||
| 410 | + end | ||
| 411 | + | ||
| 412 | + should 'ask for login or singup if not logged in' do | ||
| 413 | + ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) | ||
| 414 | + task = EnterpriseActivation.create!(:enterprise => ent) | ||
| 415 | + EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | ||
| 416 | + | ||
| 417 | + post :activate_enterprise, :enterprise_code => '0123456789', :answer => '1998', :terms_accepted => true | ||
| 418 | + | ||
| 419 | + assert_template 'activate_enterprise' | ||
| 420 | + end | ||
| 421 | + | ||
| 422 | + should 'activate enterprise and make logged user admin' do | ||
| 378 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) | 423 | ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) |
| 424 | + p = User.create!(:login => 'test_user', :password => 'blih', :password_confirmation => 'blih', :email => 'test@noosfero.com').person | ||
| 425 | + login_as(p.identifier) | ||
| 379 | 426 | ||
| 380 | task = EnterpriseActivation.create!(:enterprise => ent) | 427 | task = EnterpriseActivation.create!(:enterprise => ent) |
| 381 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 428 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 382 | 429 | ||
| 383 | - create_user({}, :enterprise_code => '0123456789', :answer => '1998') | 430 | + post :activate_enterprise, :enterprise_code => '0123456789', :answer => '1998', :terms_accepted => true |
| 384 | ent.reload | 431 | ent.reload |
| 385 | 432 | ||
| 386 | assert ent.enabled | 433 | assert ent.enabled |
| 387 | - assert_includes ent.members, assigns(:user).person | 434 | + assert_includes ent.members, p |
| 435 | + end | ||
| 436 | + | ||
| 437 | + should 'not activate enterprise for inexistent user' do | ||
| 438 | + ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) | ||
| 439 | + task = EnterpriseActivation.create!(:enterprise => ent) | ||
| 440 | + EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | ||
| 441 | + | ||
| 442 | + post :activate_enterprise, :enterprise_code => '0123456789', :answer => '1998', :terms_accepted => true, :user => { :login => 'inexistent_user', :password => 'inexistent_password' } | ||
| 443 | + ent.reload | ||
| 444 | + | ||
| 445 | + assert !ent.enabled | ||
| 446 | + end | ||
| 447 | + | ||
| 448 | + should 'activate enterprise and make unlogged user admin' do | ||
| 449 | + ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) | ||
| 450 | + p = User.create!(:login => 'test_user', :password => 'blih', :password_confirmation => 'blih', :email => 'test@noosfero.com').person | ||
| 451 | + | ||
| 452 | + task = EnterpriseActivation.create!(:enterprise => ent) | ||
| 453 | + EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | ||
| 454 | + | ||
| 455 | + post :activate_enterprise, :enterprise_code => '0123456789', :answer => '1998', :terms_accepted => true, :user => { :login => 'test_user', :password => 'blih' } | ||
| 456 | + ent.reload | ||
| 457 | + | ||
| 458 | + assert ent.enabled | ||
| 459 | + assert_includes ent.members, p | ||
| 460 | + end | ||
| 461 | + | ||
| 462 | + should 'activate enterprise, create user and make admin' do | ||
| 463 | + ent = Enterprise.create!(:name => 'test enterprise', :identifier => 'test_ent', :foundation_year => 1998, :enabled => false) | ||
| 464 | + | ||
| 465 | + task = EnterpriseActivation.create!(:enterprise => ent) | ||
| 466 | + EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | ||
| 467 | + | ||
| 468 | + post :activate_enterprise, :enterprise_code => '0123456789', :answer => '1998', :terms_accepted => true, :new_user => true, :user => { :login => 'test_user', :password => 'blih', :password_confirmation => 'blih', :email => 'test@noosfero.com' } | ||
| 469 | + ent.reload | ||
| 470 | + | ||
| 471 | + assert ent.enabled | ||
| 472 | + assert_includes ent.members.map(&:identifier), 'test_user' | ||
| 388 | end | 473 | end |
| 389 | 474 | ||
| 390 | should 'put hidden field with enterprise code for answering question' do | 475 | should 'put hidden field with enterprise code for answering question' do |
| @@ -394,12 +479,13 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -394,12 +479,13 @@ class AccountControllerTest < Test::Unit::TestCase | ||
| 394 | task.expects(:enterprise).returns(ent).at_least_once | 479 | task.expects(:enterprise).returns(ent).at_least_once |
| 395 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once | 480 | EnterpriseActivation.expects(:find_by_code).with('0123456789').returns(task).at_least_once |
| 396 | 481 | ||
| 397 | - get :signup, :enterprise_code => '0123456789' | 482 | + get :activation_question, :enterprise_code => '0123456789' |
| 398 | 483 | ||
| 399 | assert_tag :tag => 'input', :attributes => { :type => 'hidden', :name => 'enterprise_code', :value => '0123456789'} | 484 | assert_tag :tag => 'input', :attributes => { :type => 'hidden', :name => 'enterprise_code', :value => '0123456789'} |
| 400 | - | ||
| 401 | end | 485 | end |
| 402 | 486 | ||
| 487 | +# end of enterprise activation tests | ||
| 488 | + | ||
| 403 | should 'not be able to signup while inverse captcha field filled' do | 489 | should 'not be able to signup while inverse captcha field filled' do |
| 404 | assert_no_difference User, :count do | 490 | assert_no_difference User, :count do |
| 405 | create_user({}, @controller.icaptcha_field => 'bli@bla.email.foo') | 491 | create_user({}, @controller.icaptcha_field => 'bli@bla.email.foo') |
test/functional/search_controller_test.rb
| @@ -307,15 +307,16 @@ class SearchControllerTest < Test::Unit::TestCase | @@ -307,15 +307,16 @@ class SearchControllerTest < Test::Unit::TestCase | ||
| 307 | get :index, :query => 'display' | 307 | get :index, :query => 'display' |
| 308 | 308 | ||
| 309 | names = { | 309 | names = { |
| 310 | - :articles => 'Articles', | ||
| 311 | - :enterprises => 'Enterprises', | ||
| 312 | - :communities => 'Communities', | ||
| 313 | - :products => 'Products', | ||
| 314 | - :events => 'Events', | 310 | + :articles => ['Articles', article], |
| 311 | + :enterprises => ['Enterprises', ent], | ||
| 312 | + :communities => ['Communities', community], | ||
| 313 | + :products => ['Products', product], | ||
| 314 | + :events => ['Events', event], | ||
| 315 | } | 315 | } |
| 316 | names.each do |thing, description| | 316 | names.each do |thing, description| |
| 317 | + description, object = description | ||
| 317 | assert_tag :tag => 'div', :attributes => { :class => /search-results-#{thing}/ }, :descendant => { :tag => 'h3', :content => Regexp.new(description) } | 318 | assert_tag :tag => 'div', :attributes => { :class => /search-results-#{thing}/ }, :descendant => { :tag => 'h3', :content => Regexp.new(description) } |
| 318 | - assert_tag :tag => 'a', :content => "display #{thing.to_s.singularize}" | 319 | + assert_tag :tag => 'a', :content => object.respond_to?(:short_name) ? object.short_name : object.name |
| 319 | end | 320 | end |
| 320 | 321 | ||
| 321 | # display only first name on people listing | 322 | # display only first name on people listing |
test/unit/environment_test.rb
| @@ -78,6 +78,22 @@ class EnvironmentTest < Test::Unit::TestCase | @@ -78,6 +78,22 @@ class EnvironmentTest < Test::Unit::TestCase | ||
| 78 | assert v.has_terms_of_use? | 78 | assert v.has_terms_of_use? |
| 79 | end | 79 | end |
| 80 | 80 | ||
| 81 | + def test_terms_of_enterprise_use | ||
| 82 | + v = Environment.new(:name => 'My test environment') | ||
| 83 | + assert_nil v.terms_of_enterprise_use | ||
| 84 | + v.terms_of_enterprise_use = 'To be owner of an enterprise in this environment, you must accept the following terms: ...' | ||
| 85 | + assert v.save | ||
| 86 | + id = v.id | ||
| 87 | + assert_equal 'To be owner of an enterprise in this environment, you must accept the following terms: ...', Environment.find(id).terms_of_enterprise_use | ||
| 88 | + end | ||
| 89 | + | ||
| 90 | + def test_has_terms_of_enterprise_use | ||
| 91 | + v = Environment.new | ||
| 92 | + assert !v.has_terms_of_enterprise_use? | ||
| 93 | + v.terms_of_enterprise_use = 'some terms of enterprise use' | ||
| 94 | + assert v.has_terms_of_enterprise_use? | ||
| 95 | + end | ||
| 96 | + | ||
| 81 | def test_should_list_top_level_categories | 97 | def test_should_list_top_level_categories |
| 82 | env = Environment.create!(:name => 'a test environment') | 98 | env = Environment.create!(:name => 'a test environment') |
| 83 | cat1 = Category.create!(:name => 'first category', :environment_id => env.id) | 99 | cat1 = Category.create!(:name => 'first category', :environment_id => env.id) |