Commit 0ba97d3054159c5a4d734ee9715f383d5d63703d
1 parent
20541556
Exists in
master
and in
29 other branches
ActionItem833: port unifreire-specific changes as configuration into master branch
* making fields appear on signup form * environment has a list of Category subclasses that must be available for users; if there is only one category type available, no need of asking for category type * environment has a setting categories_menu which enables/disables the category menu. If it is disabled, then no need to ask for a color in the menu * add a configuration to the environment called disable_gender_icon. When it is false, don't display gender icons. * adding css for profile_data * adding required on label for schooling fixing javascript * adding fields on signup and option to admin manage * adding required message on required fields * adding partials for person/enterprise/community fields * adding methods for person/community/enterprise custom_fields * adding option to admin manage person fields
Showing
36 changed files
with
1538 additions
and
107 deletions
Show diff stats
app/controllers/admin/features_controller.rb
| ... | ... | @@ -15,4 +15,40 @@ class FeaturesController < AdminController |
| 15 | 15 | end |
| 16 | 16 | end |
| 17 | 17 | |
| 18 | + def manage_fields | |
| 19 | + @person_fields = Person.fields | |
| 20 | + @enterprise_fields = Enterprise.fields | |
| 21 | + @community_fields = Community.fields | |
| 22 | + end | |
| 23 | + | |
| 24 | + def manage_person_fields | |
| 25 | + environment.custom_person_fields = params[:person_fields] | |
| 26 | + if environment.save! | |
| 27 | + flash[:notice] = _('Custom person fields updated successfully.') | |
| 28 | + else | |
| 29 | + flash[:error] = _('Custom person fields not updated successfully.') | |
| 30 | + end | |
| 31 | + redirect_to :action => 'manage_fields' | |
| 32 | + end | |
| 33 | + | |
| 34 | + def manage_enterprise_fields | |
| 35 | + environment.custom_enterprise_fields = params[:enterprise_fields] | |
| 36 | + if environment.save! | |
| 37 | + flash[:notice] = _('Custom enterprise fields updated successfully.') | |
| 38 | + else | |
| 39 | + flash[:error] = _('Custom enterprise fields not updated successfully.') | |
| 40 | + end | |
| 41 | + redirect_to :action => 'manage_fields' | |
| 42 | + end | |
| 43 | + | |
| 44 | + def manage_community_fields | |
| 45 | + environment.custom_community_fields = params[:community_fields] | |
| 46 | + if environment.save! | |
| 47 | + flash[:notice] = _('Custom community fields updated successfully.') | |
| 48 | + else | |
| 49 | + flash[:error] = _('Custom community fields not updated successfully.') | |
| 50 | + end | |
| 51 | + redirect_to :action => 'manage_fields' | |
| 52 | + end | |
| 53 | + | |
| 18 | 54 | end | ... | ... |
app/controllers/public/account_controller.rb
| ... | ... | @@ -14,6 +14,7 @@ class AccountController < ApplicationController |
| 14 | 14 | # action to perform login to the application |
| 15 | 15 | def login |
| 16 | 16 | @user = User.new |
| 17 | + @person = @user.build_person | |
| 17 | 18 | return unless request.post? |
| 18 | 19 | self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) if params[:user] |
| 19 | 20 | if logged_in? |
| ... | ... | @@ -46,8 +47,10 @@ class AccountController < ApplicationController |
| 46 | 47 | @user.terms_of_use = environment.terms_of_use |
| 47 | 48 | @user.environment = environment |
| 48 | 49 | @terms_of_use = environment.terms_of_use |
| 50 | + @person = @user.build_person(params[:profile_data]) | |
| 51 | + @person.environment = @user.environment | |
| 49 | 52 | if request.post? && params[self.icaptcha_field].blank? |
| 50 | - @user.save! | |
| 53 | + @user.signup! | |
| 51 | 54 | self.current_user = @user |
| 52 | 55 | owner_role = Role.find_by_name('owner') |
| 53 | 56 | @user.person.affiliate(@user.person, [owner_role]) if owner_role |
| ... | ... | @@ -55,6 +58,7 @@ class AccountController < ApplicationController |
| 55 | 58 | flash[:notice] = _("Thanks for signing up!") |
| 56 | 59 | end |
| 57 | 60 | rescue ActiveRecord::RecordInvalid |
| 61 | + @person.valid? | |
| 58 | 62 | render :action => 'signup' |
| 59 | 63 | end |
| 60 | 64 | end | ... | ... |
app/helpers/application_helper.rb
| ... | ... | @@ -19,7 +19,9 @@ module ApplicationHelper |
| 19 | 19 | include DatesHelper |
| 20 | 20 | |
| 21 | 21 | include FolderHelper |
| 22 | - | |
| 22 | + | |
| 23 | + include ProfileEditorHelper | |
| 24 | + | |
| 23 | 25 | # Displays context help. You can pass the content of the help message as the |
| 24 | 26 | # first parameter or using template code inside a block passed to this |
| 25 | 27 | # method. *Note*: the block is ignored if <tt>content</tt> is not |
| ... | ... | @@ -289,7 +291,6 @@ module ApplicationHelper |
| 289 | 291 | @controller.send(:user) |
| 290 | 292 | end |
| 291 | 293 | |
| 292 | - | |
| 293 | 294 | def stylesheet_import(*sources) |
| 294 | 295 | options = sources.last.is_a?(Hash) ? sources.pop : { } |
| 295 | 296 | themed_source = options.delete(:themed_source) |
| ... | ... | @@ -378,16 +379,14 @@ module ApplicationHelper |
| 378 | 379 | end |
| 379 | 380 | |
| 380 | 381 | def profile_sex_icon( profile ) |
| 381 | - if profile.class == Person | |
| 382 | - sex = ( profile.sex ? profile.sex.to_s() : 'undef' ) | |
| 383 | - title = ( sex == 'undef' ? _('non registered gender') : ( sex == 'male' ? _('Male') : _('Female') ) ) | |
| 384 | - sex = content_tag 'span', | |
| 385 | - content_tag( 'span', sex ), | |
| 386 | - :class => 'sex-'+sex, | |
| 387 | - :title => title | |
| 388 | - else | |
| 389 | - sex = '' | |
| 390 | - end | |
| 382 | + return '' unless profile.is_a?(Person) | |
| 383 | + return '' unless !environment.enabled?('disable_gender_icon') | |
| 384 | + sex = ( profile.sex ? profile.sex.to_s() : 'undef' ) | |
| 385 | + title = ( sex == 'undef' ? _('non registered gender') : ( sex == 'male' ? _('Male') : _('Female') ) ) | |
| 386 | + sex = content_tag 'span', | |
| 387 | + content_tag( 'span', sex ), | |
| 388 | + :class => 'sex-'+sex, | |
| 389 | + :title => title | |
| 391 | 390 | sex |
| 392 | 391 | end |
| 393 | 392 | |
| ... | ... | @@ -692,6 +691,23 @@ module ApplicationHelper |
| 692 | 691 | form_for(name, object, { :builder => NoosferoFormBuilder }.merge(options), &proc) |
| 693 | 692 | end |
| 694 | 693 | |
| 694 | + def custom_field(profile, name, field_html, options = {}) | |
| 695 | + result = "" | |
| 696 | + if (controller.action_name == 'signup') | |
| 697 | + if profile.signup_fields.include?(name) | |
| 698 | + result = field_html | |
| 699 | + end | |
| 700 | + else | |
| 701 | + if profile.active_fields.include?(name) | |
| 702 | + result = field_html | |
| 703 | + end | |
| 704 | + end | |
| 705 | + if profile.required_fields.include?(name) | |
| 706 | + result = required(result) | |
| 707 | + end | |
| 708 | + result | |
| 709 | + end | |
| 710 | + | |
| 695 | 711 | def search_page_title(title, options={}) |
| 696 | 712 | title = "<h1>" + title + "</h1>" |
| 697 | 713 | title += "<h2 align='center'>" + _("Searched for '%s'") % options[:query] + "</h2>" if !options[:query].blank? | ... | ... |
app/helpers/categories_helper.rb
| ... | ... | @@ -35,7 +35,8 @@ module CategoriesHelper |
| 35 | 35 | |
| 36 | 36 | def select_category_type(field) |
| 37 | 37 | value = params[field] |
| 38 | - labelled_form_field(_('Type of category'), select_tag('type', options_for_select(CategoriesHelper::TYPES, value))) | |
| 38 | + types = TYPES.select { |title,typename| environment.category_types.include?(typename) } | |
| 39 | + labelled_form_field(_('Type of category'), select_tag('type', options_for_select(types, value))) | |
| 39 | 40 | end |
| 40 | 41 | |
| 41 | 42 | end | ... | ... |
| ... | ... | @@ -0,0 +1,362 @@ |
| 1 | +module ProfileEditorHelper | |
| 2 | + | |
| 3 | + include GetText | |
| 4 | + | |
| 5 | + AREAS_OF_STUDY = [ | |
| 6 | + N_('Agrometeorology'), | |
| 7 | + N_('Agronomy'), | |
| 8 | + N_('Foods'), | |
| 9 | + N_('Anthropology'), | |
| 10 | + N_('Architecture'), | |
| 11 | + N_('Arts'), | |
| 12 | + N_('Astronomy'), | |
| 13 | + N_('Librarianship'), | |
| 14 | + N_('Biosciences'), | |
| 15 | + N_('Biophysics'), | |
| 16 | + N_('Biology'), | |
| 17 | + N_('Biotechnology'), | |
| 18 | + N_('Botany'), | |
| 19 | + N_('Science Politics'), | |
| 20 | + N_('Accounting and Actuarial Science'), | |
| 21 | + N_('Morphologic Sciences'), | |
| 22 | + N_('Computation'), | |
| 23 | + N_('Rural Development'), | |
| 24 | + N_('Law'), | |
| 25 | + N_('Ecology'), | |
| 26 | + N_('Economy'), | |
| 27 | + N_('Education'), | |
| 28 | + N_('Long-distance Education'), | |
| 29 | + N_('Physical Education'), | |
| 30 | + N_('Professional Education'), | |
| 31 | + N_('Nursing'), | |
| 32 | + N_('Engineerings'), | |
| 33 | + N_('Basic and Average education'), | |
| 34 | + N_('Statistics'), | |
| 35 | + N_('Stratigraphy'), | |
| 36 | + N_('Pharmacy'), | |
| 37 | + N_('Pharmacology'), | |
| 38 | + N_('Philosophy'), | |
| 39 | + N_('Physics'), | |
| 40 | + N_('Plant Protection'), | |
| 41 | + N_('Genetics'), | |
| 42 | + N_('Geosciences'), | |
| 43 | + N_('Geography'), | |
| 44 | + N_('Geology'), | |
| 45 | + N_('Hydrology'), | |
| 46 | + N_('Hydromechanics'), | |
| 47 | + N_('History'), | |
| 48 | + N_('Horticulture'), | |
| 49 | + N_('Informatics'), | |
| 50 | + N_('Interdisciplinary'), | |
| 51 | + N_('Journalism'), | |
| 52 | + N_('Letters'), | |
| 53 | + N_('Languages'), | |
| 54 | + N_('Mathematics'), | |
| 55 | + N_('Medicines'), | |
| 56 | + N_('Medicine'), | |
| 57 | + N_('Metallurgy'), | |
| 58 | + N_('Microbiology'), | |
| 59 | + N_('Mineralogy'), | |
| 60 | + N_('Music'), | |
| 61 | + N_('Nutrition'), | |
| 62 | + N_('Odontology'), | |
| 63 | + N_('Paleontology'), | |
| 64 | + N_('Petrology'), | |
| 65 | + N_('Production'), | |
| 66 | + N_('Psychology'), | |
| 67 | + N_('Psychiatry'), | |
| 68 | + N_('Quality'), | |
| 69 | + N_('Chemistry'), | |
| 70 | + N_('Health'), | |
| 71 | + N_('Remote Sensing'), | |
| 72 | + N_('Forestry'), | |
| 73 | + N_('Sociology'), | |
| 74 | + N_('Ground'), | |
| 75 | + N_('Theater'), | |
| 76 | + N_('Transport'), | |
| 77 | + N_('Urbanism'), | |
| 78 | + N_('Veterinary Medicine'), | |
| 79 | + N_('Zoology'), | |
| 80 | + N_('Zootecnia'), | |
| 81 | + N_('Others') | |
| 82 | + ] | |
| 83 | + | |
| 84 | + COUNTRIES = [ | |
| 85 | + ("Afeganistão (افغانستان)"), | |
| 86 | + ("África do Sul (South Africa)"), | |
| 87 | + ("Albânia (Shqipëria)"), | |
| 88 | + ("Alemanha (Deutschland)"), | |
| 89 | + ("Andorra"), | |
| 90 | + ("Angola"), | |
| 91 | + ("Anguila (Anguilla)"), | |
| 92 | + ("Antártica (Antarctica)"), | |
| 93 | + ("Antígua e Barbuda (Antigua and Barbuda)"), | |
| 94 | + ("Antilhas Holandesas (Netherlands Antilles)"), | |
| 95 | + ("Arábia Saudita (العربية السعودية)"), | |
| 96 | + ("Argélia (الجمهورية الجزائرية)"), | |
| 97 | + ("Argentina"), | |
| 98 | + ("Armênia (Հայաստան)"), | |
| 99 | + ("Aruba"), | |
| 100 | + ("Austrália (Australia)"), | |
| 101 | + ("Áustria (Österreich)"), | |
| 102 | + ("Azerbaijão (Azərbaycan)"), | |
| 103 | + ("Bahamas"), | |
| 104 | + ("Bangladesh (বাংলাদেশ)"), | |
| 105 | + ("Barbados"), | |
| 106 | + ("Barein (بحرين)"), | |
| 107 | + ("Bélgica (België)"), | |
| 108 | + ("Belize"), | |
| 109 | + ("Benin (Bénin)"), | |
| 110 | + ("Bermudas (Bermuda)"), | |
| 111 | + ("Bielo-Rússia (Белару́сь)"), | |
| 112 | + ("Bolívia (Bolivia)"), | |
| 113 | + ("Bósnia-Herzegovina (Bosna i Hercegovina)"), | |
| 114 | + ("Botsuana (Botswana)"), | |
| 115 | + ("Brasil"), | |
| 116 | + ("Brunei (Brunei Darussalam)"), | |
| 117 | + ("Bulgária (България)"), | |
| 118 | + ("Burkina Fasso (Burkina Faso)"), | |
| 119 | + ("Burundi (Uburundi)"), | |
| 120 | + ("Butão (འབྲུག་ཡུལ)"), | |
| 121 | + ("Cabo Verde"), | |
| 122 | + ("Camarões (Cameroun)"), | |
| 123 | + ("Camboja (Kampuchea)"), | |
| 124 | + ("Canadá (Canada)"), | |
| 125 | + ("Catar (قطر)"), | |
| 126 | + ("Cazaquistão (Қазақстан)"), | |
| 127 | + ("Chade (Tchad)"), | |
| 128 | + ("Chile"), | |
| 129 | + ("China (中国)"), | |
| 130 | + ("Chipre (Κυπρος)"), | |
| 131 | + ("Cidade do Vaticano (Città del Vaticano)"), | |
| 132 | + ("Cingapura (Singapura)"), | |
| 133 | + ("Colômbia (Colombia)"), | |
| 134 | + ("Comores"), | |
| 135 | + ("Congo"), | |
| 136 | + ("Congo, República democrática do (Congo, Democratic Republic of the)"), | |
| 137 | + ("Coréia do Norte (조선)"), | |
| 138 | + ("Coréia do Sul (한국)"), | |
| 139 | + ("Costa do Marfim (Côte d'Ivoire)"), | |
| 140 | + ("Costa Rica"), | |
| 141 | + ("Croácia (Hrvatska)"), | |
| 142 | + ("Cuba"), | |
| 143 | + ("Dinamarca (Danmark)"), | |
| 144 | + ("Djibuti (Djibouti)"), | |
| 145 | + ("Dominica"), | |
| 146 | + ("Egito (مصر)"), | |
| 147 | + ("El Salvador"), | |
| 148 | + ("Emirados Árabes Unidos (الإمارات العربيّة المتّحد)"), | |
| 149 | + ("Equador (Ecuador)"), | |
| 150 | + ("Eritréia (Ertra)"), | |
| 151 | + ("Eslováquia (Slovensko)"), | |
| 152 | + ("Eslovênia (Slovenija)"), | |
| 153 | + ("Espanha (España)"), | |
| 154 | + ("Estados Unidos (United States)"), | |
| 155 | + ("Estônia (Eesti)"), | |
| 156 | + ("Etiópia (Ityop'iya)"), | |
| 157 | + ("Fiji"), | |
| 158 | + ("Filipinas (Pilipinas)"), | |
| 159 | + ("Finlândia (Suomi)"), | |
| 160 | + ("França (France)"), | |
| 161 | + ("Gabão (Gabon)"), | |
| 162 | + ("Gâmbia (Gambia)"), | |
| 163 | + ("Gana (Ghana)"), | |
| 164 | + ("Geórgia (საქართველო)"), | |
| 165 | + ("Geórgia do Sul e Ilhas Sandwich do Sul (South Georgia and the South Sandwich Islands)"), | |
| 166 | + ("Gibraltar"), | |
| 167 | + ("Granada (Grenada)"), | |
| 168 | + ("Grécia (Eλλας)"), | |
| 169 | + ("Groenlândia (Greenland)"), | |
| 170 | + ("Guadalupe (Guadeloupe)"), | |
| 171 | + ("Guam"), | |
| 172 | + ("Guatemala"), | |
| 173 | + ("Guernsey"), | |
| 174 | + ("Guiana (Guyana)"), | |
| 175 | + ("Guiana Francesa (French Guiana)"), | |
| 176 | + ("Guiné (Guinée)"), | |
| 177 | + ("Guiné-Bissau"), | |
| 178 | + ("Guiné Equatorial (Guinea Ecuatorial)"), | |
| 179 | + ("Haiti (Haïti)"), | |
| 180 | + ("Holanda (Nederland)"), | |
| 181 | + ("Honduras"), | |
| 182 | + ("Hong Kong"), | |
| 183 | + ("Hungria (Magyarország)"), | |
| 184 | + ("Iêmen (اليمن)"), | |
| 185 | + ("Ilha Aland (Aland Islands)"), | |
| 186 | + ("Ilha Bouvet (Bouvet Island)"), | |
| 187 | + ("Ilha Christmas (Christmas Island)"), | |
| 188 | + ("Ilha de Man (Isle of Man)"), | |
| 189 | + ("Ilha Norfolk (Norfolk Island)"), | |
| 190 | + ("Ilhas Cayman (Cayman Islands)"), | |
| 191 | + ("Ilhas Cocos (Keeling) (Cocos Islands)"), | |
| 192 | + ("Ilhas Cook (Cook Islands)"), | |
| 193 | + ("Ilhas Falkland (Malvinas) (Falkland Islands)"), | |
| 194 | + ("Ilhas Faroé (Faroe Islands)"), | |
| 195 | + ("Ilhas Heard e McDonald (Heard Island and McDonald Islands)"), | |
| 196 | + ("Ilhas Marianas do Norte (Northern Mariana Islands)"), | |
| 197 | + ("Ilhas Marshall (Marshall Islands)"), | |
| 198 | + ("Ilhas Maurício (Mauritius)"), | |
| 199 | + ("Ilhas Reunião (Reunion)"), | |
| 200 | + ("Ilhas Salomão (Solomon Islands)"), | |
| 201 | + ("Ilhas Svalbard e Jan Mayen (Svalbard and Jan Mayen)"), | |
| 202 | + ("Ilhas Tokelau (Tokelau)"), | |
| 203 | + ("Ilhas Turks e Caicos (Turks and Caicos Islands)"), | |
| 204 | + ("Ilhas Virgens, Britânicas (Virgin Islands, British)"), | |
| 205 | + ("Ilhas Virgens, EUA (Virgin Islands, U.S.)"), | |
| 206 | + ("Ilhas Wallis e Futuna (Wallis and Futuna)"), | |
| 207 | + ("Índia (India)"), | |
| 208 | + ("Indonésia (Indonesia)"), | |
| 209 | + ("Irã (ایران)"), | |
| 210 | + ("Iraque (العراق)"), | |
| 211 | + ("Irlanda (Ireland)"), | |
| 212 | + ("Islândia (Ísland)"), | |
| 213 | + ("Israel (ישראל)"), | |
| 214 | + ("Itália (Italia)"), | |
| 215 | + ("Jamaica"), | |
| 216 | + ("Japão (日本)"), | |
| 217 | + ("Jordânia (الارد)"), | |
| 218 | + ("Kiribati"), | |
| 219 | + ("Kuwait (الكويت)"), | |
| 220 | + ("Laos (ນລາວ)"), | |
| 221 | + ("Lesoto (Lesotho)"), | |
| 222 | + ("Letônia (Latvija)"), | |
| 223 | + ("Líbano (لبنان)"), | |
| 224 | + ("Libéria (Liberia)"), | |
| 225 | + ("Líbia (ليبية)"), | |
| 226 | + ("Liechtenstein"), | |
| 227 | + ("Lituânia (Lietuva)"), | |
| 228 | + ("Luxemburgo (Lëtzebuerg)"), | |
| 229 | + ("Macau (Macao)"), | |
| 230 | + ("Macedônia (Македонија)"), | |
| 231 | + ("Madagáscar (Madagasikara)"), | |
| 232 | + ("Maiote (Mayotte)"), | |
| 233 | + ("Malásia (Malaysia)"), | |
| 234 | + ("Malavi (Malawi)"), | |
| 235 | + ("Maldivas (ގުޖޭއްރާ ޔާއްރިހޫމްޖ)"), | |
| 236 | + ("Mali"), | |
| 237 | + ("Malta"), | |
| 238 | + ("Marrocos (مغرب)"), | |
| 239 | + ("Martinica (Martinique)"), | |
| 240 | + ("Mauritânia (موريتانية)"), | |
| 241 | + ("México"), | |
| 242 | + ("Micronésia (Micronesia)"), | |
| 243 | + ("Moçambique"), | |
| 244 | + ("Moldávia (Moldova)"), | |
| 245 | + ("Mônaco (Monaco)"), | |
| 246 | + ("Mongólia (Монгол Улс)"), | |
| 247 | + ("Montserrat"), | |
| 248 | + ("Myanmar (Լեռնային Ղարաբաղ)"), | |
| 249 | + ("Namíbia (Namibia)"), | |
| 250 | + ("Nauru (Naoero)"), | |
| 251 | + ("Nepal (नेपाल)"), | |
| 252 | + ("Nicarágua (Nicaragua)"), | |
| 253 | + ("Níger (Niger)"), | |
| 254 | + ("Nigéria (Nigeria)"), | |
| 255 | + ("Niue"), | |
| 256 | + ("Noruega (Norge)"), | |
| 257 | + ("Nova Caledônia (New Caledonia)"), | |
| 258 | + ("Nova Jérsei (Jersey)"), | |
| 259 | + ("Nova Zelândia (New Zealand)"), | |
| 260 | + ("Omã (عمان)"), | |
| 261 | + ("Palau (Belau)"), | |
| 262 | + ("Palestina (Palestine)"), | |
| 263 | + ("Panamá"), | |
| 264 | + ("Papua-Nova Guiné (Papua New Guinea)"), | |
| 265 | + ("Paquistão (پاکستان)"), | |
| 266 | + ("Paraguai (Paraguay)"), | |
| 267 | + ("Peru (Perú)"), | |
| 268 | + ("Pitcairn"), | |
| 269 | + ("Polinésia Francesa (French Polynesia)"), | |
| 270 | + ("Polônia (Polska)"), | |
| 271 | + ("Porto Rico (Puerto Rico)"), | |
| 272 | + ("Portugal"), | |
| 273 | + ("Quênia (Kenya)"), | |
| 274 | + ("Quirquistão (Кыргызстан)"), | |
| 275 | + ("Reino Unido (United Kingdom)"), | |
| 276 | + ("República Centro-Africana (République Centrafricaine)"), | |
| 277 | + ("República Dominicana (Dominican Republic)"), | |
| 278 | + ("República Tcheca (Česko)"), | |
| 279 | + ("Romênia (România)"), | |
| 280 | + ("Ruanda (Rwanda)"), | |
| 281 | + ("Rússia (Россия)"), | |
| 282 | + ("Saara Ocidental (صحراوية)"), | |
| 283 | + ("Samoa"), | |
| 284 | + ("Samoa Americana (American Samoa)"), | |
| 285 | + ("San Marino"), | |
| 286 | + ("Santa Helena (Saint Helena)"), | |
| 287 | + ("Santa Lúcia (Saint Lucia)"), | |
| 288 | + ("São Cristóvão e Névis (Saint Kitts and Nevis)"), | |
| 289 | + ("São Pierre e Miquelon (Saint Pierre and Miquelon)"), | |
| 290 | + ("São Tomé e Príncipe (São Tomé and Príncipe)"), | |
| 291 | + ("São Vincente e Granadinas (Saint Vincent and the Grenadines)"), | |
| 292 | + ("Seicheles (Seychelles)"), | |
| 293 | + ("Senegal (Sénégal)"), | |
| 294 | + ("Serra Leoa (Sierra Leone)"), | |
| 295 | + ("Sérvia e Montenegro (Србија и Црна Гора)"), | |
| 296 | + ("Síria (سورية)"), | |
| 297 | + ("Somália (Soomaaliya)"), | |
| 298 | + ("Sri Lanka"), | |
| 299 | + ("Suazilândia (Swaziland)"), | |
| 300 | + ("Sudão (السودان)"), | |
| 301 | + ("Suécia (Sverige)"), | |
| 302 | + ("Suíça (Schweiz)"), | |
| 303 | + ("Suriname"), | |
| 304 | + ("Tailândia (ราชอาณาจักรไทย)"), | |
| 305 | + ("Taiwan (台灣)"), | |
| 306 | + ("Tajiquistão (Тоҷикистон)"), | |
| 307 | + ("Tanzânia (Tanzania)"), | |
| 308 | + ("Território Britânico do Oceano Índico (British Indian Ocean Territory)"), | |
| 309 | + ("Territórios Franceses do Sul (French Southern Territories)"), | |
| 310 | + ("Territórios Insulares dos Estados Unidos (United States minor outlying islands)"), | |
| 311 | + ("Timor Leste (Timor-Leste)"), | |
| 312 | + ("Togo"), | |
| 313 | + ("Tonga"), | |
| 314 | + ("Trinidad e Tobago (Trinidad and Tobago)"), | |
| 315 | + ("Tunísia (تونس)"), | |
| 316 | + ("Turcomenistão (Türkmenistan)"), | |
| 317 | + ("Turquia (Türkiye)"), | |
| 318 | + ("Tuvalu"), | |
| 319 | + ("Ucrânia (Україна)"), | |
| 320 | + ("Uganda"), | |
| 321 | + ("Uruguai (Uruguay)"), | |
| 322 | + ("Uzbequistão (O'zbekiston)"), | |
| 323 | + ("Vanuatu"), | |
| 324 | + ("Venezuela"), | |
| 325 | + ("Vietnã (Việt Nam)"), | |
| 326 | + ("Zâmbia (Zambia)"), | |
| 327 | + ("Zimbábue (Zimbabwe)") | |
| 328 | + ] | |
| 329 | + | |
| 330 | + SCHOOLING = [ | |
| 331 | + N_('Post-Doctoral'), | |
| 332 | + N_('Ph.D.'), | |
| 333 | + N_('Masters'), | |
| 334 | + N_('Undergraduate'), | |
| 335 | + N_('Graduate'), | |
| 336 | + N_('High School'), | |
| 337 | + N_('Elementary School') | |
| 338 | + ] | |
| 339 | + | |
| 340 | + SCHOOLING_STATUS = [ | |
| 341 | + N_('Concluded'), | |
| 342 | + N_('Incomplete'), | |
| 343 | + N_('Ongoing') | |
| 344 | + ] | |
| 345 | + | |
| 346 | + def select_area(title, object, method, options) | |
| 347 | + labelled_form_field(title, select(object, method, [[_('[Select ...]'), nil]] + ProfileEditorHelper::AREAS_OF_STUDY.map{|s| [gettext(s), s]}, {}, options)) | |
| 348 | + end | |
| 349 | + | |
| 350 | + def select_country(title, object, method, options) | |
| 351 | + labelled_form_field(title, select(object, method, [[_('[Select ...]'), nil]] + ProfileEditorHelper::COUNTRIES.map{|s| [s]}, {}, options)) | |
| 352 | + end | |
| 353 | + | |
| 354 | + def select_schooling(object, method, options) | |
| 355 | + select(object, method, [[_('[Select ...]'), nil]] + ProfileEditorHelper::SCHOOLING.map{|s| [gettext(s), s]}, {}, options) | |
| 356 | + end | |
| 357 | + | |
| 358 | + def select_schooling_status(object, method, options) | |
| 359 | + select(object, method, [[_('[Select ...]'), nil]] + ProfileEditorHelper::SCHOOLING_STATUS.map{|s| [gettext(s), s]}, {}, options) | |
| 360 | + end | |
| 361 | + | |
| 362 | +end | ... | ... |
app/models/community.rb
| 1 | 1 | class Community < Organization |
| 2 | 2 | N_('Community') |
| 3 | + N_('Language') | |
| 3 | 4 | |
| 4 | 5 | settings_items :description |
| 6 | + settings_items :language | |
| 5 | 7 | |
| 6 | 8 | xss_terminate :only => [ :name, :address, :contact_phone, :description ] |
| 7 | 9 | |
| 10 | + FIELDS = %w[ | |
| 11 | + description | |
| 12 | + language | |
| 13 | + ] | |
| 14 | + | |
| 15 | + def self.fields | |
| 16 | + super + FIELDS | |
| 17 | + end | |
| 18 | + | |
| 19 | + def validate | |
| 20 | + self.required_fields.each do |field| | |
| 21 | + if self.send(field).blank? | |
| 22 | + self.errors.add(field, _('%{fn} is mandatory')) | |
| 23 | + end | |
| 24 | + end | |
| 25 | + end | |
| 26 | + | |
| 27 | + def active_fields | |
| 28 | + environment ? environment.active_community_fields : [] | |
| 29 | + end | |
| 30 | + | |
| 31 | + def required_fields | |
| 32 | + environment ? environment.required_community_fields : [] | |
| 33 | + end | |
| 34 | + | |
| 8 | 35 | def name=(value) |
| 9 | 36 | super(value) |
| 10 | 37 | self.identifier = value.to_slug | ... | ... |
app/models/enterprise.rb
| ... | ... | @@ -8,6 +8,40 @@ class Enterprise < Organization |
| 8 | 8 | |
| 9 | 9 | extra_data_for_index :product_categories |
| 10 | 10 | |
| 11 | + N_('Organization website'); N_('Historic and current context'); N_('Activities short description'); N_('City'); N_('State'); N_('Country'); N_('ZIP code') | |
| 12 | + | |
| 13 | + settings_items :organization_website, :historic_and_current_context, :activities_short_description, :zip_code, :city, :state, :country | |
| 14 | + | |
| 15 | + FIELDS = %w[ | |
| 16 | + zip_code | |
| 17 | + city | |
| 18 | + state | |
| 19 | + country | |
| 20 | + organization_website | |
| 21 | + historic_and_current_context | |
| 22 | + activities_short_description | |
| 23 | + ] | |
| 24 | + | |
| 25 | + def self.fields | |
| 26 | + super + FIELDS | |
| 27 | + end | |
| 28 | + | |
| 29 | + def validate | |
| 30 | + self.required_fields.each do |field| | |
| 31 | + if self.send(field).blank? | |
| 32 | + self.errors.add(field, _('%{fn} is mandatory')) | |
| 33 | + end | |
| 34 | + end | |
| 35 | + end | |
| 36 | + | |
| 37 | + def active_fields | |
| 38 | + environment ? environment.active_enterprise_fields : [] | |
| 39 | + end | |
| 40 | + | |
| 41 | + def required_fields | |
| 42 | + environment ? environment.required_enterprise_fields : [] | |
| 43 | + end | |
| 44 | + | |
| 11 | 45 | def product_categories |
| 12 | 46 | products.map{|p| p.category_full_name}.compact |
| 13 | 47 | end | ... | ... |
app/models/environment.rb
| ... | ... | @@ -32,6 +32,8 @@ class Environment < ActiveRecord::Base |
| 32 | 32 | 'disable_categories' => _('Disable categories'), |
| 33 | 33 | 'disable_cms' => _('Disable CMS'), |
| 34 | 34 | 'disable_header_and_footer' => _('Disable header/footer editing by users'), |
| 35 | + 'disable_gender_icon' => _('Disable gender icon'), | |
| 36 | + 'disable_categories_menu' => _('Disable the categories menu'), | |
| 35 | 37 | } |
| 36 | 38 | end |
| 37 | 39 | |
| ... | ... | @@ -231,6 +233,109 @@ class Environment < ActiveRecord::Base |
| 231 | 233 | end |
| 232 | 234 | end |
| 233 | 235 | |
| 236 | + def custom_person_fields | |
| 237 | + self.settings[:custom_person_fields].nil? ? {} : self.settings[:custom_person_fields] | |
| 238 | + end | |
| 239 | + | |
| 240 | + def custom_person_fields=(values) | |
| 241 | + if values['schooling'] && values['schooling']['active'] == 'true' | |
| 242 | + schooling_status = values['schooling'] | |
| 243 | + end | |
| 244 | + self.settings[:custom_person_fields] = values.delete_if { |key, value| ! Person.fields.include?(key)} | |
| 245 | + if schooling_status | |
| 246 | + self.settings[:custom_person_fields]['schooling_status'] = schooling_status | |
| 247 | + end | |
| 248 | + end | |
| 249 | + | |
| 250 | + def custom_person_field(field, status) | |
| 251 | + if (custom_person_fields[field] && custom_person_fields[field][status] == 'true') | |
| 252 | + return true | |
| 253 | + end | |
| 254 | + false | |
| 255 | + end | |
| 256 | + | |
| 257 | + def active_person_fields | |
| 258 | + (custom_person_fields.delete_if { |key, value| !custom_person_field(key, 'active')}).keys || [] | |
| 259 | + end | |
| 260 | + | |
| 261 | + def required_person_fields | |
| 262 | + required_fields = [] | |
| 263 | + active_person_fields.each do |field| | |
| 264 | + required_fields << field if custom_person_fields[field]['required'] == 'true' | |
| 265 | + end | |
| 266 | + required_fields | |
| 267 | + end | |
| 268 | + | |
| 269 | + def signup_person_fields | |
| 270 | + signup_fields = [] | |
| 271 | + active_person_fields.each do |field| | |
| 272 | + signup_fields << field if custom_person_fields[field]['signup'] == 'true' | |
| 273 | + end | |
| 274 | + signup_fields | |
| 275 | + end | |
| 276 | + | |
| 277 | + def custom_enterprise_fields | |
| 278 | + self.settings[:custom_enterprise_fields].nil? ? {} : self.settings[:custom_enterprise_fields] | |
| 279 | + end | |
| 280 | + | |
| 281 | + def custom_enterprise_fields=(values) | |
| 282 | + self.settings[:custom_enterprise_fields] = values.delete_if { |key, value| ! Enterprise.fields.include?(key)} | |
| 283 | + end | |
| 284 | + | |
| 285 | + def custom_enterprise_field(field, status) | |
| 286 | + if (custom_enterprise_fields[field] && custom_enterprise_fields[field][status] == 'true') | |
| 287 | + return true | |
| 288 | + end | |
| 289 | + false | |
| 290 | + end | |
| 291 | + | |
| 292 | + def active_enterprise_fields | |
| 293 | + (custom_enterprise_fields.delete_if { |key, value| !custom_enterprise_field(key, 'active')}).keys || [] | |
| 294 | + end | |
| 295 | + | |
| 296 | + def required_enterprise_fields | |
| 297 | + required_fields = [] | |
| 298 | + active_enterprise_fields.each do |field| | |
| 299 | + required_fields << field if custom_enterprise_fields[field]['required'] == 'true' | |
| 300 | + end | |
| 301 | + required_fields | |
| 302 | + end | |
| 303 | + | |
| 304 | + def custom_community_fields | |
| 305 | + self.settings[:custom_community_fields].nil? ? {} : self.settings[:custom_community_fields] | |
| 306 | + end | |
| 307 | + | |
| 308 | + def custom_community_fields=(values) | |
| 309 | + self.settings[:custom_community_fields] = values.delete_if { |key, value| ! Community.fields.include?(key)} | |
| 310 | + end | |
| 311 | + | |
| 312 | + def custom_community_field(field, status) | |
| 313 | + if (custom_community_fields[field] && custom_community_fields[field][status] == 'true') | |
| 314 | + return true | |
| 315 | + end | |
| 316 | + false | |
| 317 | + end | |
| 318 | + | |
| 319 | + def active_community_fields | |
| 320 | + (custom_community_fields.delete_if { |key, value| !custom_community_field(key, 'active')}).keys | |
| 321 | + end | |
| 322 | + | |
| 323 | + def required_community_fields | |
| 324 | + required_fields = [] | |
| 325 | + active_community_fields.each do |field| | |
| 326 | + required_fields << field if custom_community_fields[field]['required'] == 'true' | |
| 327 | + end | |
| 328 | + required_fields | |
| 329 | + end | |
| 330 | + | |
| 331 | + def category_types | |
| 332 | + self.settings[:category_types].nil? ? ['Category'] : self.settings[:category_types] | |
| 333 | + end | |
| 334 | + | |
| 335 | + def category_types=(values) | |
| 336 | + self.settings[:category_types] = values | |
| 337 | + end | |
| 338 | + | |
| 234 | 339 | # Whether this environment should force having 'www.' in its domain name or |
| 235 | 340 | # not. Defauls to false. |
| 236 | 341 | # | ... | ... |
app/models/organization.rb
| ... | ... | @@ -43,6 +43,29 @@ class Organization < Profile |
| 43 | 43 | !self.validation_info.nil? |
| 44 | 44 | end |
| 45 | 45 | |
| 46 | + FIELDS = %w[ | |
| 47 | + nickname | |
| 48 | + contact_person | |
| 49 | + contact_phone | |
| 50 | + contact_email | |
| 51 | + legal_form | |
| 52 | + economic_activity | |
| 53 | + management_information | |
| 54 | + address | |
| 55 | + ] | |
| 56 | + | |
| 57 | + def self.fields | |
| 58 | + FIELDS | |
| 59 | + end | |
| 60 | + | |
| 61 | + def required_fields | |
| 62 | + [] | |
| 63 | + end | |
| 64 | + | |
| 65 | + def active_fields | |
| 66 | + [] | |
| 67 | + end | |
| 68 | + | |
| 46 | 69 | N_('Contact person'); N_('Contact email'); N_('Acronym'); N_('Foundation year'); N_('Legal form'); N_('Economic activity'); N_('Management information'); N_('Validated') |
| 47 | 70 | settings_items :contact_person, :contact_email, :acronym, :foundation_year, :legal_form, :economic_activity, :management_information, :validated, :cnpj |
| 48 | 71 | ... | ... |
app/models/person.rb
| ... | ... | @@ -41,6 +41,70 @@ class Person < Profile |
| 41 | 41 | friends.delete(friend) |
| 42 | 42 | end |
| 43 | 43 | |
| 44 | + FIELDS = %w[ | |
| 45 | + nickname | |
| 46 | + sex | |
| 47 | + address | |
| 48 | + zip_code | |
| 49 | + city | |
| 50 | + state | |
| 51 | + country | |
| 52 | + nationality | |
| 53 | + birth_date | |
| 54 | + cell_phone | |
| 55 | + comercial_phone | |
| 56 | + schooling | |
| 57 | + professional_activity | |
| 58 | + organization | |
| 59 | + organization_website | |
| 60 | + area_of_study | |
| 61 | + custom_area_of_study | |
| 62 | + formation | |
| 63 | + custom_formation | |
| 64 | + contact_phone | |
| 65 | + contact_information | |
| 66 | + ] | |
| 67 | + | |
| 68 | + def self.fields | |
| 69 | + FIELDS | |
| 70 | + end | |
| 71 | + | |
| 72 | + def validate | |
| 73 | + self.required_fields.each do |field| | |
| 74 | + if self.send(field).blank? | |
| 75 | + unless (field == 'custom_area_of_study' && self.area_of_study != 'Others') || (field == 'custom_formation' && self.formation != 'Others') | |
| 76 | + self.errors.add(field, _('%{fn} is mandatory')) | |
| 77 | + end | |
| 78 | + end | |
| 79 | + end | |
| 80 | + end | |
| 81 | + | |
| 82 | + before_save do |person| | |
| 83 | + person.custom_formation = nil if (! person.formation.nil? && person.formation != 'Others') | |
| 84 | + person.custom_area_of_study = nil if (! person.area_of_study.nil? && person.area_of_study != 'Others') | |
| 85 | + end | |
| 86 | + | |
| 87 | + def active_fields | |
| 88 | + environment ? environment.active_person_fields : [] | |
| 89 | + end | |
| 90 | + | |
| 91 | + def required_fields | |
| 92 | + environment ? environment.required_person_fields : [] | |
| 93 | + end | |
| 94 | + | |
| 95 | + def signup_fields | |
| 96 | + environment ? environment.signup_person_fields : [] | |
| 97 | + end | |
| 98 | + | |
| 99 | + N_('Cell phone'); N_('Comercial phone'); N_('Nationality'); N_('Schooling'); N_('Area of study'); N_('Professional activity'); N_('Organization'); N_('Organization website'); | |
| 100 | + settings_items :cell_phone, :comercial_phone, :nationality, :schooling, :area_of_study, :professional_activity, :organization, :organization_website | |
| 101 | + | |
| 102 | + N_('Schooling status') | |
| 103 | + settings_items :schooling_status | |
| 104 | + | |
| 105 | + N_('Formation'); N_('Custom formation'); N_('Custom area of study'); | |
| 106 | + settings_items :formation, :custom_formation, :custom_area_of_study | |
| 107 | + | |
| 44 | 108 | N_('Contact information'); N_('Birth date'); N_('City'); N_('State'); N_('Country'); N_('Sex'); N_('Zip code') |
| 45 | 109 | settings_items :photo, :contact_information, :birth_date, :sex, :city, :state, :country, :zip_code |
| 46 | 110 | ... | ... |
app/models/user.rb
| ... | ... | @@ -28,6 +28,13 @@ class User < ActiveRecord::Base |
| 28 | 28 | user.person.name ||= user.login |
| 29 | 29 | user.person.update_attributes(:identifier => user.login, :user_id => user.id, :environment_id => user.environment_id) |
| 30 | 30 | end |
| 31 | + | |
| 32 | + def signup! | |
| 33 | + User.transaction do | |
| 34 | + self.save! | |
| 35 | + self.person.save! | |
| 36 | + end | |
| 37 | + end | |
| 31 | 38 | |
| 32 | 39 | has_one :person, :dependent => :destroy |
| 33 | 40 | belongs_to :environment | ... | ... |
app/views/account/_signup_form.rhtml
| 1 | -<%= error_messages_for :user %> | |
| 1 | +<%= error_messages_for :user, :person %> | |
| 2 | + | |
| 3 | +<% if ! defined? hidden_atention || ! hidden_atention %> | |
| 4 | +<p/> | |
| 5 | +<div class="atention"> | |
| 6 | +<%= _('Dear user, welcome to the %s network. To start your participation | |
| 7 | +in this space, fill in the fields below. After this operation, your login and | |
| 8 | +password will be registered, allowing you to create communities and enterprises | |
| 9 | +in this environment.') % environment.name %> | |
| 10 | +</div> | |
| 11 | +<% end %> | |
| 2 | 12 | |
| 3 | 13 | <% labelled_form_for :user, @user, |
| 4 | 14 | :html => { :help=>_('Fill all this fields to join in this environment. <p/> If you forgot your password, do not create a new account, click on the "<b>I forgot my password!</b>" link. ;-)'), :id => 'profile-data' |
| ... | ... | @@ -22,6 +32,10 @@ |
| 22 | 32 | :help => help=_('To confirm, repeat your password.')) %> |
| 23 | 33 | <small><%= help %></small> |
| 24 | 34 | |
| 35 | +<% labelled_fields_for :profile_data, @person do |f| %> | |
| 36 | + <%= render :partial => 'profile_editor/person_form', :locals => {:f => f} %> | |
| 37 | +<% end %> | |
| 38 | + | |
| 25 | 39 | <%= icaptcha_field() %> |
| 26 | 40 | |
| 27 | 41 | <% if @terms_of_use %> |
| ... | ... | @@ -41,16 +55,6 @@ |
| 41 | 55 | <%= hidden_field_tag :new_user, true %> |
| 42 | 56 | <% end %> |
| 43 | 57 | |
| 44 | -<% if ! defined? hidden_atention || ! hidden_atention %> | |
| 45 | -<p/> | |
| 46 | -<div class="atention"> | |
| 47 | -<%= _('Dear user, welcome to the %s network. To start your participation | |
| 48 | -in this space, fill in the fields below. After this operation, your login and | |
| 49 | -password will be registered, allowing you to create communities and enterprises | |
| 50 | -in this environment.') % environment.name %> | |
| 51 | -</div> | |
| 52 | -<% end %> | |
| 53 | - | |
| 54 | 58 | <% button_bar do %> |
| 55 | 59 | <%= submit_button('save', _('Sign up'), :cancel => {:action => 'index'}, :class => 'icon-menu-login') %> |
| 56 | 60 | <% end %> | ... | ... |
app/views/admin_panel/index.rhtml
| ... | ... | @@ -11,4 +11,6 @@ |
| 11 | 11 | <li><%= link_to _('Manage User roles'), :controller => 'role' %></li> |
| 12 | 12 | <li><%= link_to _('Manage Validators by region'), :controller => 'region_validators' %></li> |
| 13 | 13 | <li><%= link_to _('Manage Templates'), :action => 'manage_templates' %></li> |
| 14 | + <li><%= link_to _('Edit Templates'), :action => 'edit_templates' %></li> | |
| 15 | + <li><%= link_to _('Manage Fields'), :controller => 'features', :action => 'manage_fields' %></li> | |
| 14 | 16 | </ul> | ... | ... |
app/views/categories/_form.rhtml
| ... | ... | @@ -9,11 +9,15 @@ |
| 9 | 9 | <%= hidden_field_tag('parent_id', @category.parent.id) %> |
| 10 | 10 | <%= hidden_field_tag('type', @category.parent.class.name) %> |
| 11 | 11 | <% else %> |
| 12 | - <%= select_category_type :type %> | |
| 12 | + <% if environment.category_types.length > 1 %> | |
| 13 | + <%= select_category_type :type %> | |
| 14 | + <% else %> | |
| 15 | + <%= hidden_field_tag('type', environment.category_types.to_s) %> | |
| 16 | + <% end%> | |
| 13 | 17 | <% end %> |
| 14 | 18 | <% end %> |
| 15 | 19 | |
| 16 | - <%= select_color_for_category %> | |
| 20 | + <%= select_color_for_category if !environment.enabled?('disable_categories_menu') %> | |
| 17 | 21 | |
| 18 | 22 | <%= required f.text_field('name') %> |
| 19 | 23 | ... | ... |
| ... | ... | @@ -0,0 +1,46 @@ |
| 1 | +<h2><%= _('Manage community fields') %></h2> | |
| 2 | + | |
| 3 | +<% labelled_form_for(:environment, @environment, :url => {:action => 'manage_community_fields'}) do |f| %> | |
| 4 | + | |
| 5 | +<table id='community_fields_conf'> | |
| 6 | + <tr> | |
| 7 | + <th><%= _('Field') %></th> | |
| 8 | + <th><%= _('Active') %></th> | |
| 9 | + <th><%= _('Required') %></th> | |
| 10 | + </tr> | |
| 11 | + <% @community_fields.each do |field| %> | |
| 12 | + <tr> | |
| 13 | + <td><label for="community_fields[<%= field %>][active]"><%= _(field.humanize) %></label></td> | |
| 14 | + <td> | |
| 15 | + <%= check_box_tag "community_fields[#{field}][active]", true, environment.custom_community_field(field, 'active'), :onclick => "$('community_fields[#{field}][required]').disabled=!this.checked" %> | |
| 16 | + <%= hidden_field_tag "community_fields[#{field}][active]", false %> | |
| 17 | + </td> | |
| 18 | + <td> | |
| 19 | + <%= check_box_tag "community_fields[#{field}][required]", true, environment.custom_community_field(field, 'required') %> | |
| 20 | + <%= hidden_field_tag "community_fields[#{field}][required]", false %> | |
| 21 | + </td> | |
| 22 | + </tr> | |
| 23 | + <% end %> | |
| 24 | +</table> | |
| 25 | + | |
| 26 | +<script type='text/javascript'> | |
| 27 | + var trs = $$('#community_fields_conf tr'); | |
| 28 | + var tr, td2; | |
| 29 | + for ( var i=0; tr=trs[i]; i++ ) { | |
| 30 | + if ( td2 = tr.getElementsByTagName('td')[1] ) { | |
| 31 | + td2.getElementsByTagName('input')[0].onclick(); | |
| 32 | + } | |
| 33 | + } | |
| 34 | +</script> | |
| 35 | + | |
| 36 | +<div> | |
| 37 | + <% button_bar do %> | |
| 38 | + <%= submit_button('save', _('Save changes')) %> | |
| 39 | + <% end %> | |
| 40 | +</div> | |
| 41 | + | |
| 42 | +<% end %> | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | ... | ... |
| ... | ... | @@ -0,0 +1,46 @@ |
| 1 | +<h2><%= _('Manage enterprise fields') %></h2> | |
| 2 | + | |
| 3 | +<% labelled_form_for(:environment, @environment, :url => {:action => 'manage_enterprise_fields'}) do |f| %> | |
| 4 | + | |
| 5 | +<table id='enterprise_fields_conf'> | |
| 6 | + <tr> | |
| 7 | + <th><%= _('Field') %></th> | |
| 8 | + <th><%= _('Active') %></th> | |
| 9 | + <th><%= _('Required') %></th> | |
| 10 | + </tr> | |
| 11 | + <% @enterprise_fields.each do |field| %> | |
| 12 | + <tr> | |
| 13 | + <td><label for="enterprise_fields[<%= field %>][active]"><%= _(field.humanize) %></label></td> | |
| 14 | + <td> | |
| 15 | + <%= check_box_tag "enterprise_fields[#{field}][active]", true, environment.custom_enterprise_field(field, 'active'), :onclick => "$('enterprise_fields[#{field}][required]').disabled=!this.checked" %> | |
| 16 | + <%= hidden_field_tag "enterprise_fields[#{field}][active]", false %> | |
| 17 | + </td> | |
| 18 | + <td> | |
| 19 | + <%= check_box_tag "enterprise_fields[#{field}][required]", true, environment.custom_enterprise_field(field, 'required') %> | |
| 20 | + <%= hidden_field_tag "enterprise_fields[#{field}][required]", false %> | |
| 21 | + </td> | |
| 22 | + </tr> | |
| 23 | + <% end %> | |
| 24 | +</table> | |
| 25 | + | |
| 26 | +<script type='text/javascript'> | |
| 27 | + var trs = $$('#enterprise_fields_conf tr'); | |
| 28 | + var tr, td2; | |
| 29 | + for ( var i=0; tr=trs[i]; i++ ) { | |
| 30 | + if ( td2 = tr.getElementsByTagName('td')[1] ) { | |
| 31 | + td2.getElementsByTagName('input')[0].onclick(); | |
| 32 | + } | |
| 33 | + } | |
| 34 | +</script> | |
| 35 | + | |
| 36 | +<div> | |
| 37 | + <% button_bar do %> | |
| 38 | + <%= submit_button('save', _('Save changes')) %> | |
| 39 | + <% end %> | |
| 40 | +</div> | |
| 41 | + | |
| 42 | +<% end %> | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | ... | ... |
| ... | ... | @@ -0,0 +1,52 @@ |
| 1 | +<h2><%= _('Manage person fields') %></h2> | |
| 2 | + | |
| 3 | +<% labelled_form_for(:environment, @environment, :url => {:action => 'manage_person_fields'}) do |f| %> | |
| 4 | + | |
| 5 | +<table id='person_fields_conf'> | |
| 6 | + <tr> | |
| 7 | + <th><%= _('Field') %></th> | |
| 8 | + <th><%= _('Active') %></th> | |
| 9 | + <th><%= _('Required') %></th> | |
| 10 | + <th><%= _('Display on signup?') %></th> | |
| 11 | + </tr> | |
| 12 | + <% @person_fields.each do |field| %> | |
| 13 | + <tr> | |
| 14 | + <td><label for="person_fields[<%= field %>][active]"><%= _(field.humanize) %></label></td> | |
| 15 | + <td> | |
| 16 | + <%= check_box_tag "person_fields[#{field}][active]", true, environment.custom_person_field(field, 'active'), :onclick => "$('person_fields[#{field}][required]').disabled=$('person_fields[#{field}][signup]').disabled=!this.checked" %> | |
| 17 | + <%= hidden_field_tag "person_fields[#{field}][active]", false %> | |
| 18 | + </td> | |
| 19 | + <td> | |
| 20 | + <%= check_box_tag "person_fields[#{field}][required]", true, environment.custom_person_field(field, 'required') %> | |
| 21 | + <%= hidden_field_tag "person_fields[#{field}][required]", false %> | |
| 22 | + </td> | |
| 23 | + <td> | |
| 24 | + <%= check_box_tag "person_fields[#{field}][signup]", true, environment.custom_person_field(field, 'signup') %> | |
| 25 | + <%= hidden_field_tag "person_fields[#{field}][signup]", false %> | |
| 26 | + </td> | |
| 27 | + </tr> | |
| 28 | + <% end %> | |
| 29 | +</table> | |
| 30 | + | |
| 31 | +<script type='text/javascript'>// <!-- | |
| 32 | + var trs = $$('#person_fields_conf tr'); | |
| 33 | + var tr, td2; | |
| 34 | + for ( var i=0; tr=trs[i]; i++ ) { | |
| 35 | + if ( td2 = tr.getElementsByTagName('td')[1] ) { | |
| 36 | + td2.getElementsByTagName('input')[0].onclick(); | |
| 37 | + } | |
| 38 | + } | |
| 39 | + // --> | |
| 40 | +</script> | |
| 41 | + | |
| 42 | +<div> | |
| 43 | + <% button_bar do %> | |
| 44 | + <%= submit_button('save', _('Save changes')) %> | |
| 45 | + <% end %> | |
| 46 | +</div> | |
| 47 | + | |
| 48 | +<% end %> | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | ... | ... |
| ... | ... | @@ -0,0 +1,11 @@ |
| 1 | +<%= custom_field(@profile, 'contact_phone', f.text_field(:contact_phone)) %> | |
| 2 | +<%= custom_field(@profile, 'address', labelled_form_field(_('Address (street and number)'), text_field(:profile_data, :address))) %> | |
| 3 | + | |
| 4 | +<%= custom_field(@profile, 'zip_code', labelled_form_field(_('ZIP code'), text_field(:profile_data, :zip_code))) %> | |
| 5 | +<%= custom_field(@profile, 'city', f.text_field(:city)) %> | |
| 6 | +<%= custom_field(@profile, 'state', f.text_field(:state)) %> | |
| 7 | +<%= custom_field(@profile, 'country', select_country(_('Country'), 'profile_data', 'country', {:class => 'type-select'})) %> | |
| 8 | +<%= custom_field(@profile, 'organization_website', f.text_field(:organization_website)) %> | |
| 9 | +<%= custom_field(@profile, 'historic_and_current_context', f.text_area(:historic_and_current_context, :rows => 5)) %> | |
| 10 | +<%= custom_field(@profile, 'activities_short_description', f.text_area(:activities_short_description, :rows => 5)) %> | |
| 11 | +<%= custom_field(@profile, 'management_information', f.text_area(:management_information, :rows => 5)) %> | ... | ... |
app/views/profile_editor/_organization.rhtml
| 1 | 1 | <h2><%= _('General information') %></h2> |
| 2 | 2 | |
| 3 | + <%= required_fields_message if @profile.required_fields.any? %> | |
| 4 | + | |
| 3 | 5 | <div class="formfieldline"> |
| 4 | 6 | <label class="formlabel" for="profile_data_nickname"><%= _('Display name') %></label> |
| 5 | 7 | <div class="formfield type-text"> |
| ... | ... | @@ -9,13 +11,16 @@ |
| 9 | 11 | |
| 10 | 12 | </div> |
| 11 | 13 | <%= f.text_field(:acronym) %> |
| 12 | - <%= f.text_field(:address, 'size' => 50) if @profile.enterprise? %> | |
| 13 | 14 | <%= f.text_field(:foundation_year) %> |
| 14 | - <%= f.text_field(:contact_person) %> | |
| 15 | - <%= f.text_field(:contact_email) %> | |
| 16 | - <%= f.text_field(:economic_activity) %> | |
| 17 | - <%= f.text_area(:description, :rows => 5) if @profile.community? %> | |
| 15 | + <%= custom_field(@profile, 'contact_person', f.text_field(:contact_person)) %> | |
| 16 | + <%= custom_field(@profile, 'contact_email', f.text_field(:contact_email)) %> | |
| 17 | + <%= custom_field(@profile, 'economic_activity', f.text_field(:economic_activity)) %> | |
| 18 | + <%= custom_field(@profile, 'description', f.text_area(:description, :rows => 5)) if @profile.community? %> | |
| 18 | 19 | <%= f.check_box(:enable_contact_us) if @profile.enterprise? %> |
| 20 | + | |
| 21 | + <%= render :partial => 'community_fields', :locals => { :f => f } if @profile.community? %> | |
| 22 | + <%= render :partial => 'enterprise_fields', :locals => { :f => f } if @profile.enterprise? %> | |
| 23 | + | |
| 19 | 24 | <h1><%= _('Moderation options') %></h1> |
| 20 | 25 | <div style='margin-bottom: 1em'> |
| 21 | 26 | <%= _('New members must be approved:')%> | ... | ... |
app/views/profile_editor/_person.rhtml
| 1 | 1 | <h2><%= _('Personal information') %></h2> |
| 2 | 2 | |
| 3 | - <%= f.text_field(:email)%> | |
| 3 | + <%= required_fields_message %> | |
| 4 | + | |
| 5 | + <%= required f.text_field(:email)%> | |
| 6 | + <%= labelled_form_field _('Full name'), text_field(:profile_data, :name) %> | |
| 4 | 7 | |
| 5 | 8 | <%= render :partial => 'person_form', :locals => {:f => f} %> | ... | ... |
app/views/profile_editor/_person_form.rhtml
| 1 | -<%= f.text_field(:nickname, :maxlength => 16, :size => 30) %> | |
| 2 | -<div> | |
| 3 | - <small><em><%= _('A short name by which you like to be known. Will be used in friends listings, community member listings etc.') %></em></small> | |
| 4 | -</div> | |
| 5 | - | |
| 6 | -<%= f.text_field(:name) %> | |
| 7 | -<%= f.text_field(:contact_information) %> | |
| 8 | -<%= f.text_field(:contact_phone) %> | |
| 9 | -<%# use :size => 3 if you want 3 radios by line %> | |
| 10 | -<%= f.radio_group :profile_data, :sex, [ ['male',_('Male')], ['female',_('Female')] ] %> | |
| 11 | -<%= f.text_field(:birth_date) %> | |
| 12 | -<%= labelled_form_field(_('Address (street and number)'), text_field(:profile_data, :address)) %> | |
| 13 | -<%= labelled_form_field(_('ZIP code'), text_field(:profile_data, :zip_code)) %> | |
| 14 | -<%= f.text_field(:city) %> | |
| 15 | -<%= f.text_field(:state) %> | |
| 16 | -<%= f.text_field(:country) %> | |
| 1 | +<% @person ||= @profile %> | |
| 2 | + | |
| 3 | +<%= custom_field(@person, 'nickname', f.text_field(:nickname, :maxlength => 16, :size => 30)) %> | |
| 4 | + | |
| 5 | +<% nickname_tip = "<div><small><em>" + _('A short name by which you like to be known. Will be used in friends listings, community member listings etc.') + "</em></small></div>" %> | |
| 6 | +<% if controller.action_name == 'signup' %> | |
| 7 | + <% if @person.signup_fields.include?('nickname') %> | |
| 8 | + <%= nickname_tip %> | |
| 9 | + <% end%> | |
| 10 | +<% elsif @person.active_fields.include?('nickname') %> | |
| 11 | + <%= nickname_tip %> | |
| 12 | +<% end %> | |
| 13 | + | |
| 14 | +<%= custom_field(@person, 'contact_information', f.text_field(:contact_information)) %> | |
| 15 | +<%= custom_field(@person, 'contact_phone', labelled_form_field(_('Home phone'), text_field(:profile_data, :contact_phone))) %> | |
| 16 | +<%= custom_field(@person, 'cell_phone', f.text_field(:cell_phone)) %> | |
| 17 | +<%= custom_field(@person, 'comercial_phone', f.text_field(:comercial_phone)) %> | |
| 18 | +<%= custom_field(@person, 'sex', f.radio_group(:profile_data, :sex, [ ['male',_('Male')], ['female',_('Female')] ])) %> | |
| 19 | +<%= custom_field(@person, 'birth_date', f.text_field(:birth_date)) %> | |
| 20 | +<%= custom_field(@person, 'address', labelled_form_field(_('Address (street and number)'), text_field(:profile_data, :address))) %> | |
| 21 | +<%= custom_field(@person, 'zip_code', labelled_form_field(_('ZIP code'), text_field(:profile_data, :zip_code))) %> | |
| 22 | +<%= custom_field(@person, 'city', f.text_field(:city)) %> | |
| 23 | +<%= custom_field(@person, 'state', f.text_field(:state)) %> | |
| 24 | +<%= custom_field(@person, 'country', select_country(_('Country'), 'profile_data', 'country', {:class => 'type-select'})) %> | |
| 25 | +<%= custom_field(@person, 'nationality', f.text_field(:nationality)) %> | |
| 26 | + | |
| 27 | +<% if @person.active_fields.include?('schooling') %> | |
| 28 | + <% schooling_label = "<label class='formlabel' for='profile_data_schooling'>#{_('Schooling')}</label>" %> | |
| 29 | + <div class="formfieldline"><%= @person.required_fields.include?('schooling') ? required(schooling_label) : schooling_label %> | |
| 30 | + <div class="formfield type-select"> | |
| 31 | + <%= custom_field(@person, 'schooling', select_schooling('profile_data', 'schooling', {:class => 'select-schooling'})) %> | |
| 32 | + <%= custom_field(@person, 'schooling_status', select_schooling_status('profile_data', 'schooling_status', {:class => 'select-schooling'})) %> | |
| 33 | + </div> | |
| 34 | + </div> | |
| 35 | +<% end %> | |
| 36 | + | |
| 37 | +<script type='text/javascript'> | |
| 38 | + function toggle_text_field(id, span_id) { | |
| 39 | + if ($(id).value == "Others") { | |
| 40 | + $(span_id).show(); return false; | |
| 41 | + } else { | |
| 42 | + $(span_id).hide(); return false; | |
| 43 | + } | |
| 44 | + } | |
| 45 | +</script> | |
| 46 | + | |
| 47 | +<%= custom_field(@person, 'formation', select_area(_('Formation'), 'profile_data', 'formation', {:class => 'type-select-full-line'})) %> | |
| 48 | + | |
| 49 | +<span id='profile_data_custom_formation_span' <%= "style='display:none'" if ! ['Others', nil].include?(@person.formation) %> > | |
| 50 | + <%= custom_field(@person, 'custom_formation', f.text_field(:custom_formation)) %> | |
| 51 | +</span> | |
| 52 | +<%= observe_field 'profile_data_formation', :function =>'toggle_text_field("profile_data_formation", "profile_data_custom_formation_span")' %> | |
| 53 | + | |
| 54 | +<%= custom_field(@person, 'area_of_study', select_area(_('Area of study'), 'profile_data', 'area_of_study', {:class => 'type-select-full-line'})) %> | |
| 55 | + | |
| 56 | +<span id='profile_data_custom_area_of_study_span' <%= "style='display:none'" if ! ['Others', nil].include?(@person.area_of_study) %> > | |
| 57 | + <%= custom_field(@person, 'custom_area_of_study', f.text_field(:custom_area_of_study)) %> | |
| 58 | +</span> | |
| 59 | +<%= observe_field 'profile_data_area_of_study', :function =>'toggle_text_field("profile_data_area_of_study", "profile_data_custom_area_of_study_span")' %> | |
| 60 | + | |
| 61 | +<%= custom_field(@person, 'professional_activity', f.text_field(:professional_activity)) %> | |
| 62 | +<%= custom_field(@person, 'organization', f.text_field(:organization)) %> | |
| 63 | +<%= custom_field(@person, 'organization_website', f.text_field(:organization_website)) %> | |
| 64 | + | ... | ... |
app/views/profile_editor/edit.rhtml
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | |
| 3 | 3 | <%= error_messages_for :profile %> |
| 4 | 4 | |
| 5 | -<% labelled_form_for :profile_data, @profile, :html => { :multipart => true } do |f| %> | |
| 5 | +<% labelled_form_for :profile_data, @profile, :html => { :id => 'profile-data', :multipart => true } do |f| %> | |
| 6 | 6 | |
| 7 | 7 | <%= render :partial => partial_for_class(@profile.class), :locals => { :f => f } %> |
| 8 | 8 | |
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | <%= _('This profile is:') %> |
| 19 | 19 | </p> |
| 20 | 20 | |
| 21 | - <% if profile.kind_of?(Person) %> | |
| 21 | + <% if profile.person? %> | |
| 22 | 22 | <table> |
| 23 | 23 | <tr> |
| 24 | 24 | <th></th> | ... | ... |
test/functional/account_controller_test.rb
| ... | ... | @@ -594,6 +594,12 @@ class AccountControllerTest < Test::Unit::TestCase |
| 594 | 594 | assert_no_tag :tag => 'form', :attributes => { :action => /^https:\/\// } |
| 595 | 595 | end |
| 596 | 596 | |
| 597 | + should 'render person partial' do | |
| 598 | + Environment.any_instance.expects(:signup_person_fields).returns(['contact_phone']).at_least_once | |
| 599 | + get :signup | |
| 600 | + assert_tag :tag => 'input', :attributes => { :name => "profile_data[contact_phone]" } | |
| 601 | + end | |
| 602 | + | |
| 597 | 603 | protected |
| 598 | 604 | def new_user(options = {}, extra_options ={}) |
| 599 | 605 | data = {:profile_data => person_data} | ... | ... |
test/functional/categories_controller_test.rb
| ... | ... | @@ -137,4 +137,41 @@ class CategoriesControllerTest < Test::Unit::TestCase |
| 137 | 137 | post :new, :category => { :display_in_menu => '1' } |
| 138 | 138 | end |
| 139 | 139 | |
| 140 | + should 'not display color selection if environment.categories_menu is false' do | |
| 141 | + env.enable('disable_categories_menu') | |
| 142 | + env.save! | |
| 143 | + get :new | |
| 144 | + | |
| 145 | + assert_no_tag :tag => 'select', :attributes => { :name => "category[display_color]" } | |
| 146 | + end | |
| 147 | + | |
| 148 | + should 'display color selection if environment.categories_menu is true' do | |
| 149 | + env.disable('disable_categories_menu') | |
| 150 | + env.save! | |
| 151 | + get :new | |
| 152 | + | |
| 153 | + assert_tag :tag => 'select', :attributes => { :name => "category[display_color]" } | |
| 154 | + end | |
| 155 | + | |
| 156 | + should 'not display category_type if only one category is available' do | |
| 157 | + env.category_types = ['Category'] | |
| 158 | + get :new | |
| 159 | + | |
| 160 | + assert_no_tag :tag => 'select', :attributes => { :name => "type" } | |
| 161 | + end | |
| 162 | + | |
| 163 | + should 'have hidden_tag type if only one category is available' do | |
| 164 | + env.category_types = ['Category'] | |
| 165 | + env.save! | |
| 166 | + get :new | |
| 167 | + | |
| 168 | + assert_tag :tag => 'input', :attributes => { :name => 'type', :value => "Category", :type => 'hidden' } | |
| 169 | + end | |
| 170 | + | |
| 171 | + should 'display category_type if more than one category is available' do | |
| 172 | + env.category_types = 'Category', 'ProductCategory' | |
| 173 | + get :new | |
| 174 | + | |
| 175 | + assert_tag :tag => 'select', :attributes => { :name => "type" } | |
| 176 | + end | |
| 140 | 177 | end | ... | ... |
test/functional/features_controller_test.rb
| ... | ... | @@ -76,8 +76,78 @@ class FeaturesControllerTest < Test::Unit::TestCase |
| 76 | 76 | post :index |
| 77 | 77 | |
| 78 | 78 | assert_tag :tag => 'select', :attributes => { :name => 'environment[organization_approval_method]' }, :descendant => { :tag => 'option', :attributes => { :value => 'region', :selected => true } } |
| 79 | + end | |
| 80 | + | |
| 81 | + should 'list possible person fields' do | |
| 82 | + uses_host 'anhetegua.net' | |
| 83 | + Person.expects(:fields).returns(['cell_phone', 'comercial_phone']).at_least_once | |
| 84 | + get :manage_fields | |
| 85 | + assert_template 'manage_fields' | |
| 86 | + Person.fields.each do |field| | |
| 87 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "person_fields[#{field}][active]"}) | |
| 88 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "person_fields[#{field}][required]"}) | |
| 89 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "person_fields[#{field}][signup]"}) | |
| 90 | + end | |
| 91 | + end | |
| 92 | + | |
| 93 | + should 'update custom_person_fields' do | |
| 94 | + uses_host 'anhetegua.net' | |
| 95 | + e = Environment.find(2) | |
| 96 | + Person.expects(:fields).returns(['cell_phone', 'comercial_phone']).at_least_once | |
| 97 | + | |
| 98 | + post :manage_person_fields, :person_fields => { :cell_phone => {:active => true, :required => true }} | |
| 99 | + assert_redirected_to :action => 'manage_fields' | |
| 100 | + e.reload | |
| 101 | + assert_equal true, e.custom_person_fields['cell_phone']['active'] | |
| 102 | + assert_equal true, e.custom_person_fields['cell_phone']['required'] | |
| 103 | + end | |
| 79 | 104 | |
| 105 | + should 'disable check_box for required if active is not checked' | |
| 106 | + | |
| 107 | + should 'list possible enterprise fields' do | |
| 108 | + uses_host 'anhetegua.net' | |
| 109 | + Enterprise.expects(:fields).returns(['contact_person', 'contact_email']).at_least_once | |
| 110 | + get :manage_fields | |
| 111 | + assert_template 'manage_fields' | |
| 112 | + Enterprise.fields.each do |field| | |
| 113 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "enterprise_fields[#{field}][active]"}) | |
| 114 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "enterprise_fields[#{field}][required]"}) | |
| 115 | + end | |
| 116 | + end | |
| 117 | + | |
| 118 | + should 'update custom_enterprise_fields' do | |
| 119 | + uses_host 'anhetegua.net' | |
| 120 | + e = Environment.find(2) | |
| 121 | + Enterprise.expects(:fields).returns(['contact_person', 'contact_email']).at_least_once | |
| 122 | + | |
| 123 | + post :manage_enterprise_fields, :enterprise_fields => { :contact_person => {:active => true, :required => true }} | |
| 124 | + assert_redirected_to :action => 'manage_fields' | |
| 125 | + e.reload | |
| 126 | + assert_equal true, e.custom_enterprise_fields['contact_person']['active'] | |
| 127 | + assert_equal true, e.custom_enterprise_fields['contact_person']['required'] | |
| 128 | + end | |
| 129 | + | |
| 130 | + should 'list possible community fields' do | |
| 131 | + uses_host 'anhetegua.net' | |
| 132 | + Community.expects(:fields).returns(['contact_person', 'contact_email']).at_least_once | |
| 133 | + get :manage_fields | |
| 134 | + assert_template 'manage_fields' | |
| 135 | + Community.fields.each do |field| | |
| 136 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "community_fields[#{field}][active]"}) | |
| 137 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "community_fields[#{field}][required]"}) | |
| 138 | + end | |
| 139 | + end | |
| 140 | + | |
| 141 | + should 'update custom_community_fields' do | |
| 142 | + uses_host 'anhetegua.net' | |
| 143 | + e = Environment.find(2) | |
| 144 | + Community.expects(:fields).returns(['contact_person', 'contact_email']).at_least_once | |
| 80 | 145 | |
| 146 | + post :manage_community_fields, :community_fields => { :contact_person => {:active => true, :required => true }} | |
| 147 | + assert_redirected_to :action => 'manage_fields' | |
| 148 | + e.reload | |
| 149 | + assert_equal true, e.custom_community_fields['contact_person']['active'] | |
| 150 | + assert_equal true, e.custom_community_fields['contact_person']['required'] | |
| 81 | 151 | end |
| 82 | 152 | |
| 83 | 153 | end | ... | ... |
test/functional/profile_editor_controller_test.rb
| ... | ... | @@ -105,66 +105,68 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 105 | 105 | end |
| 106 | 106 | |
| 107 | 107 | should 'filter html from contact_person to organization' do |
| 108 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 108 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 109 | 109 | contact = "name <strong id='name_html_test'>with</strong> html" |
| 110 | 110 | post :edit, :profile => org.identifier, :profile_data => { :contact_person => contact } |
| 111 | 111 | assert_sanitized assigns(:profile).contact_person |
| 112 | 112 | end |
| 113 | 113 | |
| 114 | 114 | should 'filter html from acronym organization' do |
| 115 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 115 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 116 | 116 | value = "name <strong id='name_html_test'>with</strong> html" |
| 117 | 117 | post :edit, :profile => org.identifier, :profile_data => { :acronym => value } |
| 118 | 118 | assert_sanitized assigns(:profile).acronym |
| 119 | 119 | end |
| 120 | 120 | |
| 121 | 121 | should 'filter html from legal_form organization' do |
| 122 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 122 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 123 | 123 | value = "name <strong id='name_html_test'>with</strong> html" |
| 124 | 124 | post :edit, :profile => org.identifier, :profile_data => { :legal_form => value } |
| 125 | 125 | assert_sanitized assigns(:profile).legal_form |
| 126 | 126 | end |
| 127 | 127 | |
| 128 | 128 | should 'filter html from economic_activity organization' do |
| 129 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 129 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 130 | 130 | value = "name <strong id='name_html_test'>with</strong> html" |
| 131 | 131 | post :edit, :profile => org.identifier, :profile_data => { :economic_activity => value } |
| 132 | 132 | assert_sanitized assigns(:profile).economic_activity |
| 133 | 133 | end |
| 134 | 134 | |
| 135 | 135 | should 'filter html from management_information organization' do |
| 136 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 136 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 137 | 137 | value = "name <strong id='name_html_test'>with</strong> html" |
| 138 | 138 | post :edit, :profile => org.identifier, :profile_data => { :management_information => value } |
| 139 | 139 | assert_sanitized assigns(:profile).management_information |
| 140 | 140 | end |
| 141 | 141 | |
| 142 | 142 | should 'saving profile organization_info' do |
| 143 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 143 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 144 | 144 | post :edit, :profile => 'testorg', :profile_data => { :contact_person => 'contact person' } |
| 145 | 145 | assert_equal 'contact person', Organization.find(org.id).contact_person |
| 146 | 146 | end |
| 147 | 147 | |
| 148 | - should 'show contact_person field on edit organization' do | |
| 149 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 148 | + should 'show contact_phone field on edit enterprise' do | |
| 149 | + org = Enterprise.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 150 | + Enterprise.any_instance.expects(:active_fields).returns(['contact_phone']).at_least_once | |
| 150 | 151 | get :edit, :profile => org.identifier |
| 151 | - assert_tag :tag => 'input', :attributes => { :name => 'profile_data[contact_person]' } | |
| 152 | + assert_tag :tag => 'input', :attributes => { :name => 'profile_data[contact_phone]' } | |
| 152 | 153 | end |
| 153 | 154 | |
| 154 | 155 | should 'save community description' do |
| 155 | - org = Community.create!(:name => 'test org', :identifier => 'testorg') | |
| 156 | + org = Community.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 156 | 157 | post :edit, :profile => 'testorg', :profile_data => { :description => 'my description' } |
| 157 | 158 | assert_equal 'my description', Organization.find(org.id).description |
| 158 | 159 | end |
| 159 | 160 | |
| 160 | 161 | should 'show community description' do |
| 161 | - org = Community.create!(:name => 'test org', :identifier => 'testorg') | |
| 162 | + org = Community.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 163 | + Community.any_instance.expects(:active_fields).returns(['description']).at_least_once | |
| 162 | 164 | get :edit, :profile => 'testorg' |
| 163 | 165 | assert_tag :tag => 'textarea', :attributes => { :name => 'profile_data[description]' } |
| 164 | 166 | end |
| 165 | 167 | |
| 166 | - should 'not show organization description' do | |
| 167 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 168 | + should 'not show enterprise description' do | |
| 169 | + org = Enterprise.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 168 | 170 | get :edit, :profile => 'testorg' |
| 169 | 171 | assert_no_tag :tag => 'textarea', :attributes => { :name => 'profile_data[description]' } |
| 170 | 172 | end |
| ... | ... | @@ -176,13 +178,23 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 176 | 178 | end |
| 177 | 179 | |
| 178 | 180 | should 'save enterprise contact_person' do |
| 179 | - org = Enterprise.create!(:name => 'test org', :identifier => 'testorg') | |
| 181 | + org = Enterprise.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 180 | 182 | post :edit, :profile => 'testorg', :profile_data => { :contact_person => 'my contact' } |
| 181 | 183 | assert_equal 'my contact', Enterprise.find(org.id).contact_person |
| 182 | 184 | end |
| 183 | 185 | |
| 184 | - should 'show field values on edit organization info' do | |
| 185 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 186 | + should 'show field values on edit community info' do | |
| 187 | + Community.any_instance.expects(:active_fields).returns(['contact_person']).at_least_once | |
| 188 | + org = Community.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 189 | + org.contact_person = 'my contact' | |
| 190 | + org.save! | |
| 191 | + get :edit, :profile => 'testorg' | |
| 192 | + assert_tag :tag => 'input', :attributes => { :name => 'profile_data[contact_person]', :value => 'my contact' } | |
| 193 | + end | |
| 194 | + | |
| 195 | + should 'show field values on edit enterprise info' do | |
| 196 | + Enterprise.any_instance.expects(:active_fields).returns(['contact_person']).at_least_once | |
| 197 | + org = Enterprise.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 186 | 198 | org.contact_person = 'my contact' |
| 187 | 199 | org.save! |
| 188 | 200 | get :edit, :profile => 'testorg' |
| ... | ... | @@ -214,20 +226,27 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 214 | 226 | end |
| 215 | 227 | |
| 216 | 228 | should 'show error messages for invalid foundation_year' do |
| 217 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
| 229 | + org = Community.create!(:name => 'test org', :identifier => 'testorg', :environment => Environment.default) | |
| 218 | 230 | post :edit, :profile => 'testorg', :profile_data => { :foundation_year => 'aaa' } |
| 219 | 231 | assert_tag :tag => 'div', :attributes => { :id => 'errorExplanation' } |
| 220 | 232 | end |
| 221 | 233 | |
| 222 | 234 | should 'edit enterprise' do |
| 223 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent') | |
| 235 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :environment => Environment.default) | |
| 224 | 236 | get :edit, :profile => 'testent' |
| 225 | 237 | assert_response :success |
| 226 | 238 | end |
| 227 | 239 | |
| 228 | - should 'back when update organization info fail' do | |
| 229 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact') | |
| 230 | - Organization.any_instance.stubs(:update_attributes).returns(false) | |
| 240 | + should 'back when update community info fail' do | |
| 241 | + org = Community.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :environment => Environment.default) | |
| 242 | + Community.any_instance.stubs(:update_attributes).returns(false) | |
| 243 | + post :edit, :profile => 'testorg' | |
| 244 | + assert_template 'edit' | |
| 245 | + end | |
| 246 | + | |
| 247 | + should 'back when update enterprise info fail' do | |
| 248 | + org = Enterprise.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :environment => Environment.default) | |
| 249 | + Enterprise.any_instance.stubs(:update_attributes).returns(false) | |
| 231 | 250 | post :edit, :profile => 'testorg' |
| 232 | 251 | assert_template 'edit' |
| 233 | 252 | end |
| ... | ... | @@ -259,9 +278,22 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 259 | 278 | end |
| 260 | 279 | |
| 261 | 280 | should 'render person partial' do |
| 281 | + person = create_user('test_profile', :environment => Environment.default).person | |
| 282 | + Person.any_instance.expects(:active_fields).returns(['contact_phone', 'birth_date', 'address']).at_least_once | |
| 283 | + get :edit, :profile => person.identifier | |
| 284 | + person.active_fields.each do |field| | |
| 285 | + assert_tag :tag => 'input', :attributes => { :name => "profile_data[#{field}]" } | |
| 286 | + end | |
| 287 | + end | |
| 288 | + | |
| 289 | + should 'display only active person fields' do | |
| 290 | + Person.any_instance.expects(:active_fields).returns(['cell_phone']).at_least_once | |
| 262 | 291 | person = create_user('test_profile').person |
| 292 | + | |
| 263 | 293 | get :edit, :profile => person.identifier |
| 264 | - assert_tag :tag => 'input', :attributes => { :name => 'profile_data[contact_phone]' } | |
| 294 | + | |
| 295 | + assert_tag :tag => 'input', :attributes => { :name => "profile_data[cell_phone]" } | |
| 296 | + assert_no_tag :tag => 'input', :attributes => { :name => "profile_data[comercial_phone]" } | |
| 265 | 297 | end |
| 266 | 298 | |
| 267 | 299 | should 'be able to upload an image' do |
| ... | ... | @@ -271,8 +303,16 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 271 | 303 | assert_not_nil assigns(:profile).image |
| 272 | 304 | end |
| 273 | 305 | |
| 306 | + should 'display closed attribute for enterprise when it is set' do | |
| 307 | + org = Enterprise.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => true, :environment => Environment.default) | |
| 308 | + get :edit, :profile => 'testorg' | |
| 309 | + | |
| 310 | + assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'true', :checked => 'checked' } | |
| 311 | + assert_no_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'false', :checked => 'checked' } | |
| 312 | + end | |
| 313 | + | |
| 274 | 314 | should 'display closed attribute for organizations when it is set' do |
| 275 | - org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => true) | |
| 315 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => true, :environment => Environment.default) | |
| 276 | 316 | get :edit, :profile => 'testorg' |
| 277 | 317 | |
| 278 | 318 | assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'true', :checked => 'checked' } |
| ... | ... | @@ -311,7 +351,7 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 311 | 351 | |
| 312 | 352 | should 'display manage members options if has permission' do |
| 313 | 353 | profile = Profile['ze'] |
| 314 | - community = Community.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact') | |
| 354 | + community = Community.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :environment => Environment.default) | |
| 315 | 355 | @controller.stubs(:user).returns(profile) |
| 316 | 356 | @controller.stubs(:profile).returns(community) |
| 317 | 357 | profile.stubs(:has_permission?).returns(true) |
| ... | ... | @@ -321,7 +361,7 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 321 | 361 | |
| 322 | 362 | should 'not display manage members options if has no permission' do |
| 323 | 363 | profile = Profile['ze'] |
| 324 | - community = Community.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact') | |
| 364 | + community = Community.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :environment => Environment.default) | |
| 325 | 365 | @controller.stubs(:user).returns(profile) |
| 326 | 366 | @controller.stubs(:profile).returns(community) |
| 327 | 367 | profile.stubs(:has_permission?).returns(false) |
| ... | ... | @@ -329,6 +369,24 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 329 | 369 | assert_no_tag :tag => 'a', :content => 'Manage Members' |
| 330 | 370 | end |
| 331 | 371 | |
| 372 | + should 'render enterprise partial' do | |
| 373 | + ent = Enterprise.create(:name => 'test_profile', :identifier => 'testorg', :environment => Environment.default) | |
| 374 | + Enterprise.any_instance.expects(:active_fields).returns(['contact_phone', 'contact_person', 'contact_email']).at_least_once | |
| 375 | + get :edit, :profile => ent.identifier | |
| 376 | + ent.active_fields.each do |field| | |
| 377 | + assert_tag :tag => 'input', :attributes => { :name => "profile_data[#{field}]" } | |
| 378 | + end | |
| 379 | + end | |
| 380 | + | |
| 381 | + should 'render community partial' do | |
| 382 | + community = Community.create(:name => 'test_profile', :identifier => 'testorg', :environment => Environment.default) | |
| 383 | + Community.any_instance.expects(:active_fields).returns(['contact_person', 'language']).at_least_once | |
| 384 | + get :edit, :profile => community.identifier | |
| 385 | + community.active_fields.each do |field| | |
| 386 | + assert_tag :tag => 'input', :attributes => { :name => "profile_data[#{field}]" } | |
| 387 | + end | |
| 388 | + end | |
| 389 | + | |
| 332 | 390 | should 'show task if user has permission' do |
| 333 | 391 | user1 = create_user('userone').person |
| 334 | 392 | user2 = create_user('usertwo').person |
| ... | ... | @@ -385,13 +443,13 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 385 | 443 | end |
| 386 | 444 | |
| 387 | 445 | should 'link to enable enterprise' do |
| 388 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false) | |
| 446 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false, :environment => Environment.default) | |
| 389 | 447 | get :index, :profile => 'testent' |
| 390 | 448 | assert_tag :tag => 'a', :attributes => { :href => '/myprofile/testent/profile_editor/enable' } |
| 391 | 449 | end |
| 392 | 450 | |
| 393 | 451 | should 'link to disable enterprise' do |
| 394 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => true) | |
| 452 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => true, :environment => Environment.default) | |
| 395 | 453 | get :index, :profile => 'testent' |
| 396 | 454 | assert_tag :tag => 'a', :attributes => { :href => '/myprofile/testent/profile_editor/disable' } |
| 397 | 455 | end |
| ... | ... | @@ -403,31 +461,31 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
| 403 | 461 | end |
| 404 | 462 | |
| 405 | 463 | should 'request enable enterprise confirmation' do |
| 406 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false) | |
| 464 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false, :environment => Environment.default) | |
| 407 | 465 | get :enable, :profile => 'testent' |
| 408 | 466 | assert_tag :tag => 'form', :attributes => { :action => '/myprofile/testent/profile_editor/enable', :method => 'post' } |
| 409 | 467 | end |
| 410 | 468 | |
| 411 | 469 | should 'enable enterprise after confirmation' do |
| 412 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false) | |
| 470 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false, :environment => Environment.default) | |
| 413 | 471 | post :enable, :profile => 'testent', :confirmation => 1 |
| 414 | 472 | assert assigns(:to_enable).enabled? |
| 415 | 473 | end |
| 416 | 474 | |
| 417 | 475 | should 'not enable enterprise without confirmation' do |
| 418 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false) | |
| 476 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => false, :environment => Environment.default) | |
| 419 | 477 | post :enable, :profile => 'testent' |
| 420 | 478 | assert !assigns(:to_enable).enabled? |
| 421 | 479 | end |
| 422 | 480 | |
| 423 | 481 | should 'disable enterprise after confirmation' do |
| 424 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => true) | |
| 482 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => true, :environment => Environment.default) | |
| 425 | 483 | post :disable, :profile => 'testent', :confirmation => 1 |
| 426 | 484 | assert !assigns(:to_disable).enabled? |
| 427 | 485 | end |
| 428 | 486 | |
| 429 | 487 | should 'not disable enterprise without confirmation' do |
| 430 | - ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => true) | |
| 488 | + ent = Enterprise.create!(:name => 'test org', :identifier => 'testent', :enabled => true, :environment => Environment.default) | |
| 431 | 489 | post :disable, :profile => 'testent' |
| 432 | 490 | assert assigns(:to_disable).enabled? |
| 433 | 491 | end | ... | ... |
test/unit/application_helper_test.rb
| ... | ... | @@ -231,6 +231,38 @@ class ApplicationHelperTest < Test::Unit::TestCase |
| 231 | 231 | assert_tag_in_string meta_tags_for_article(b), :tag => 'link', :attributes => {:type => 'application/rss+xml', :title => 'feed'} |
| 232 | 232 | end |
| 233 | 233 | |
| 234 | + should 'provide sex icon for males' do | |
| 235 | + stubs(:environment).returns(Environment.default) | |
| 236 | + expects(:content_tag).with(anything, 'male').returns('MALE!!') | |
| 237 | + expects(:content_tag).with(anything, 'MALE!!', is_a(Hash)).returns("FINAL") | |
| 238 | + assert_equal "FINAL", profile_sex_icon(Person.new(:sex => 'male')) | |
| 239 | + end | |
| 240 | + | |
| 241 | + should 'provide sex icon for females' do | |
| 242 | + stubs(:environment).returns(Environment.default) | |
| 243 | + expects(:content_tag).with(anything, 'female').returns('FEMALE!!') | |
| 244 | + expects(:content_tag).with(anything, 'FEMALE!!', is_a(Hash)).returns("FINAL") | |
| 245 | + assert_equal "FINAL", profile_sex_icon(Person.new(:sex => 'female')) | |
| 246 | + end | |
| 247 | + | |
| 248 | + should 'provide undef sex icon' do | |
| 249 | + stubs(:environment).returns(Environment.default) | |
| 250 | + expects(:content_tag).with(anything, 'undef').returns('UNDEF!!') | |
| 251 | + expects(:content_tag).with(anything, 'UNDEF!!', is_a(Hash)).returns("FINAL") | |
| 252 | + assert_equal "FINAL", profile_sex_icon(Person.new(:sex => nil)) | |
| 253 | + end | |
| 254 | + | |
| 255 | + should 'not draw sex icon for non-person profiles' do | |
| 256 | + assert_equal '', profile_sex_icon(Community.new) | |
| 257 | + end | |
| 258 | + | |
| 259 | + should 'not draw sex icon when disabled in the environment' do | |
| 260 | + env = Environment.create!(:name => 'env test') | |
| 261 | + env.expects(:enabled?).with('disable_gender_icon').returns(true) | |
| 262 | + stubs(:environment).returns(env) | |
| 263 | + assert_equal '', profile_sex_icon(Person.new(:sex => 'male')) | |
| 264 | + end | |
| 265 | + | |
| 234 | 266 | protected |
| 235 | 267 | |
| 236 | 268 | def url_for(args = {}) | ... | ... |
| ... | ... | @@ -0,0 +1,33 @@ |
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | |
| 2 | + | |
| 3 | +class CategoriesHelperTest < Test::Unit::TestCase | |
| 4 | + | |
| 5 | + include CategoriesHelper | |
| 6 | + | |
| 7 | + def setup | |
| 8 | + @environment = Environment.default | |
| 9 | + end | |
| 10 | + attr_reader :environment | |
| 11 | + def _(s); s; end | |
| 12 | + | |
| 13 | + should 'generate list of category types for selection' do | |
| 14 | + environment.category_types = ['Category', 'ProductCategory', 'Region'] | |
| 15 | + expects(:params).returns({'fieldname' => 'fieldvalue'}) | |
| 16 | + expects(:options_for_select).with([['General Category', 'Category'],[ 'Product Category', 'ProductCategory'],[ 'Region', 'Region' ]], 'fieldvalue').returns('OPTIONS') | |
| 17 | + expects(:select_tag).with('type', 'OPTIONS').returns('TAG') | |
| 18 | + expects(:labelled_form_field).with(anything, 'TAG').returns('RESULT') | |
| 19 | + | |
| 20 | + assert_equal 'RESULT', select_category_type('fieldname') | |
| 21 | + end | |
| 22 | + | |
| 23 | + should 'only list the available types' do | |
| 24 | + environment.category_types = ['Category'] | |
| 25 | + expects(:params).returns({'fieldname' => 'fieldvalue'}) | |
| 26 | + expects(:options_for_select).with([['General Category', 'Category']], 'fieldvalue').returns('OPTIONS') | |
| 27 | + expects(:select_tag).with('type', 'OPTIONS').returns('TAG') | |
| 28 | + expects(:labelled_form_field).with(anything, 'TAG').returns('RESULT') | |
| 29 | + | |
| 30 | + assert_equal 'RESULT', select_category_type('fieldname') | |
| 31 | + end | |
| 32 | + | |
| 33 | +end | ... | ... |
test/unit/community_test.rb
| ... | ... | @@ -7,19 +7,19 @@ class CommunityTest < Test::Unit::TestCase |
| 7 | 7 | end |
| 8 | 8 | |
| 9 | 9 | should 'convert name into identifier' do |
| 10 | - c = Community.new(:name =>'My shiny new Community') | |
| 10 | + c = Community.new(:environment => Environment.default, :name =>'My shiny new Community') | |
| 11 | 11 | assert_equal 'My shiny new Community', c.name |
| 12 | 12 | assert_equal 'my-shiny-new-community', c.identifier |
| 13 | 13 | end |
| 14 | 14 | |
| 15 | 15 | should 'have a description attribute' do |
| 16 | - c = Community.new | |
| 16 | + c = Community.new(:environment => Environment.default) | |
| 17 | 17 | c.description = 'the description of the community' |
| 18 | 18 | assert_equal 'the description of the community', c.description |
| 19 | 19 | end |
| 20 | 20 | |
| 21 | 21 | should 'create default set of blocks' do |
| 22 | - c = Community.create!(:name => 'my new community') | |
| 22 | + c = Community.create!(:environment => Environment.default, :name => 'my new community') | |
| 23 | 23 | |
| 24 | 24 | assert c.boxes[0].blocks.map(&:class).include?(MainBlock) |
| 25 | 25 | |
| ... | ... | @@ -33,19 +33,19 @@ class CommunityTest < Test::Unit::TestCase |
| 33 | 33 | end |
| 34 | 34 | |
| 35 | 35 | should 'get a default home page and RSS feed' do |
| 36 | - community = Community.create!(:name => 'my new community') | |
| 36 | + community = Community.create!(:environment => Environment.default, :name => 'my new community') | |
| 37 | 37 | |
| 38 | 38 | assert_kind_of Article, community.home_page |
| 39 | 39 | assert_kind_of RssFeed, community.articles.find_by_path('feed') |
| 40 | 40 | end |
| 41 | 41 | |
| 42 | 42 | should 'have contact_person' do |
| 43 | - community = Community.new(:name => 'my new community') | |
| 43 | + community = Community.new(:environment => Environment.default, :name => 'my new community') | |
| 44 | 44 | assert_respond_to community, :contact_person |
| 45 | 45 | end |
| 46 | 46 | |
| 47 | 47 | should 'allow to add new members' do |
| 48 | - c = Community.create!(:name => 'my test profile', :identifier => 'mytestprofile') | |
| 48 | + c = Community.create!(:environment => Environment.default, :name => 'my test profile', :identifier => 'mytestprofile') | |
| 49 | 49 | p = create_user('mytestuser').person |
| 50 | 50 | |
| 51 | 51 | c.add_member(p) |
| ... | ... | @@ -54,7 +54,7 @@ class CommunityTest < Test::Unit::TestCase |
| 54 | 54 | end |
| 55 | 55 | |
| 56 | 56 | should 'allow to remove members' do |
| 57 | - c = Community.create!(:name => 'my other test profile', :identifier => 'myothertestprofile') | |
| 57 | + c = Community.create!(:environment => Environment.default, :name => 'my other test profile', :identifier => 'myothertestprofile') | |
| 58 | 58 | p = create_user('myothertestuser').person |
| 59 | 59 | |
| 60 | 60 | c.add_member(p) |
| ... | ... | @@ -65,7 +65,7 @@ class CommunityTest < Test::Unit::TestCase |
| 65 | 65 | end |
| 66 | 66 | |
| 67 | 67 | should 'clear relationships after destroy' do |
| 68 | - c = Community.create!(:name => 'my test profile', :identifier => 'mytestprofile') | |
| 68 | + c = Community.create!(:environment => Environment.default, :name => 'my test profile', :identifier => 'mytestprofile') | |
| 69 | 69 | member = create_user('memberuser').person |
| 70 | 70 | admin = create_user('adminuser').person |
| 71 | 71 | moderator = create_user('moderatoruser').person |
| ... | ... | @@ -85,8 +85,36 @@ class CommunityTest < Test::Unit::TestCase |
| 85 | 85 | |
| 86 | 86 | should 'have a community template' do |
| 87 | 87 | env = Environment.create!(:name => 'test env') |
| 88 | - p = Community.create!(:name => 'test_com', :identifier => 'test_com', :environment => env) | |
| 88 | + p = Community.create!(:environment => Environment.default, :name => 'test_com', :identifier => 'test_com', :environment => env) | |
| 89 | 89 | assert_kind_of Community, p.template |
| 90 | 90 | end |
| 91 | 91 | |
| 92 | + should 'return active_community_fields' do | |
| 93 | + e = Environment.default | |
| 94 | + e.expects(:active_community_fields).returns(['contact_phone', 'contact_email']).at_least_once | |
| 95 | + ent = Community.new(:environment => e) | |
| 96 | + | |
| 97 | + assert_equal e.active_community_fields, ent.active_fields | |
| 98 | + end | |
| 99 | + | |
| 100 | + should 'return required_community_fields' do | |
| 101 | + e = Environment.default | |
| 102 | + e.expects(:required_community_fields).returns(['contact_phone', 'contact_email']).at_least_once | |
| 103 | + community = Community.new(:environment => e) | |
| 104 | + | |
| 105 | + assert_equal e.required_community_fields, community.required_fields | |
| 106 | + end | |
| 107 | + | |
| 108 | + should 'require fields if community needs' do | |
| 109 | + e = Environment.default | |
| 110 | + e.expects(:required_community_fields).returns(['contact_phone']).at_least_once | |
| 111 | + community = Community.new(:environment => e) | |
| 112 | + assert ! community.valid? | |
| 113 | + assert community.errors.invalid?(:contact_phone) | |
| 114 | + | |
| 115 | + community.contact_phone = '99999' | |
| 116 | + community.valid? | |
| 117 | + assert ! community.errors.invalid?(:contact_phone) | |
| 118 | + end | |
| 119 | + | |
| 92 | 120 | end | ... | ... |
test/unit/enterprise_test.rb
| ... | ... | @@ -174,7 +174,7 @@ class EnterpriseTest < Test::Unit::TestCase |
| 174 | 174 | ent.reload |
| 175 | 175 | assert_equal 1, ent.boxes.size |
| 176 | 176 | assert_equal 1, ent.boxes[0].blocks.size |
| 177 | - end | |
| 177 | + end | |
| 178 | 178 | |
| 179 | 179 | should 'not replace template if environment doesnt allow' do |
| 180 | 180 | template = Enterprise.create!(:name => 'template enteprise', :identifier => 'template_enterprise', :enabled => false) |
| ... | ... | @@ -195,7 +195,8 @@ class EnterpriseTest < Test::Unit::TestCase |
| 195 | 195 | assert_equal 1, ent.boxes.size |
| 196 | 196 | assert_equal 1, ent.boxes[0].blocks.size |
| 197 | 197 | end |
| 198 | - should 'create EnterpriseActivation task when creating with enabled = false' do | |
| 198 | + | |
| 199 | + should 'create EnterpriseActivation task when creating with enabled = false' do | |
| 199 | 200 | EnterpriseActivation.delete_all |
| 200 | 201 | ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent', :enabled => false) |
| 201 | 202 | assert_equal [ent], EnterpriseActivation.find(:all).map(&:enterprise) |
| ... | ... | @@ -256,4 +257,32 @@ class EnterpriseTest < Test::Unit::TestCase |
| 256 | 257 | assert e.enable_contact_us |
| 257 | 258 | end |
| 258 | 259 | |
| 260 | + should 'return active_enterprise_fields' do | |
| 261 | + e = Environment.default | |
| 262 | + e.expects(:active_enterprise_fields).returns(['contact_phone', 'contact_email']).at_least_once | |
| 263 | + ent = Enterprise.new(:environment => e) | |
| 264 | + | |
| 265 | + assert_equal e.active_enterprise_fields, ent.active_fields | |
| 266 | + end | |
| 267 | + | |
| 268 | + should 'return required_enterprise_fields' do | |
| 269 | + e = Environment.default | |
| 270 | + e.expects(:required_enterprise_fields).returns(['contact_phone', 'contact_email']).at_least_once | |
| 271 | + enterprise = Enterprise.new(:environment => e) | |
| 272 | + | |
| 273 | + assert_equal e.required_enterprise_fields, enterprise.required_fields | |
| 274 | + end | |
| 275 | + | |
| 276 | + should 'require fields if enterprise needs' do | |
| 277 | + e = Environment.default | |
| 278 | + e.expects(:required_enterprise_fields).returns(['contact_phone']).at_least_once | |
| 279 | + enterprise = Enterprise.new(:environment => e) | |
| 280 | + assert ! enterprise.valid? | |
| 281 | + assert enterprise.errors.invalid?(:contact_phone) | |
| 282 | + | |
| 283 | + enterprise.contact_phone = '99999' | |
| 284 | + enterprise.valid? | |
| 285 | + assert ! enterprise.errors.invalid?(:contact_phone) | |
| 286 | + end | |
| 287 | + | |
| 259 | 288 | end | ... | ... |
test/unit/environment_test.rb
| ... | ... | @@ -532,4 +532,153 @@ class EnvironmentTest < Test::Unit::TestCase |
| 532 | 532 | assert_equal false, Environment.new.replace_enterprise_template_when_enable |
| 533 | 533 | end |
| 534 | 534 | |
| 535 | + should 'set custom_person_fields' do | |
| 536 | + env = Environment.new | |
| 537 | + env.custom_person_fields = {'cell_phone' => {'required' => 'true', 'active' => 'true'},'comercial_phone'=> {'required' => 'true', 'active' => 'true'}} | |
| 538 | + | |
| 539 | + assert_equal({'cell_phone' => {'required' => 'true', 'active' => 'true'},'comercial_phone'=> {'required' => 'true', 'active' => 'true'}}, env.custom_person_fields) | |
| 540 | + end | |
| 541 | + | |
| 542 | + should 'have no custom_person_fields by default' do | |
| 543 | + assert_equal({}, Environment.new.custom_person_fields) | |
| 544 | + end | |
| 545 | + | |
| 546 | + should 'not set in custom_person_fields if not in person.fields' do | |
| 547 | + env = Environment.default | |
| 548 | + Person.stubs(:fields).returns(['cell_phone', 'comercial_phone']) | |
| 549 | + | |
| 550 | + env.custom_person_fields = { 'birth_date' => {'required' => 'true', 'active' => 'true'}, 'cell_phone' => {'required' => 'true', 'active' => 'true'}} | |
| 551 | + assert_equal({'cell_phone' => {'required' => 'true', 'active' => 'true'}}, env.custom_person_fields) | |
| 552 | + assert ! env.custom_person_fields.keys.include?('birth_date') | |
| 553 | + end | |
| 554 | + | |
| 555 | + should 'add schooling_status if custom_person_fields has schooling' do | |
| 556 | + env = Environment.default | |
| 557 | + Person.stubs(:fields).returns(['cell_phone', 'schooling']) | |
| 558 | + | |
| 559 | + env.custom_person_fields = { 'schooling' => {'required' => 'true', 'active' => 'true'}} | |
| 560 | + assert_equal({'schooling' => {'required' => 'true', 'active' => 'true'}, 'schooling_status' => {'required' => 'true', 'active' => 'true'}}, env.custom_person_fields) | |
| 561 | + assert ! env.custom_person_fields.keys.include?('birth_date') | |
| 562 | + end | |
| 563 | + | |
| 564 | + should 'return person_fields status' do | |
| 565 | + env = Environment.default | |
| 566 | + | |
| 567 | + env.expects(:custom_person_fields).returns({ 'birth_date' => {'required' => 'true', 'active' => 'false'}}).at_least_once | |
| 568 | + | |
| 569 | + assert_equal true, env.custom_person_field('birth_date', 'required') | |
| 570 | + assert_equal false, env.custom_person_field('birth_date', 'active') | |
| 571 | + end | |
| 572 | + | |
| 573 | + should 'select active fields from person' do | |
| 574 | + env = Environment.default | |
| 575 | + env.expects(:custom_person_fields).returns({ 'birth_date' => {'required' => 'true', 'active' => 'true'}, 'cell_phone' => {'required' => 'true', 'active' => 'false'}}).at_least_once | |
| 576 | + | |
| 577 | + assert_equal ['birth_date'], env.active_person_fields | |
| 578 | + end | |
| 579 | + | |
| 580 | + should 'select required fields from person' do | |
| 581 | + env = Environment.default | |
| 582 | + env.expects(:custom_person_fields).returns({ 'birth_date' => {'required' => 'true', 'active' => 'true'}, 'cell_phone' => {'required' => 'false', 'active' => 'true'}}).at_least_once | |
| 583 | + | |
| 584 | + assert_equal ['birth_date'], env.required_person_fields | |
| 585 | + end | |
| 586 | + | |
| 587 | + should 'set custom_enterprises_fields' do | |
| 588 | + env = Environment.new | |
| 589 | + env.custom_enterprise_fields = {'contact_person' => {'required' => 'true', 'active' => 'true'},'contact_email'=> {'required' => 'true', 'active' => 'true'}} | |
| 590 | + | |
| 591 | + assert_equal({'contact_person' => {'required' => 'true', 'active' => 'true'},'contact_email'=> {'required' => 'true', 'active' => 'true'}}, env.custom_enterprise_fields) | |
| 592 | + end | |
| 593 | + | |
| 594 | + should 'have no custom_enterprise_fields by default' do | |
| 595 | + assert_equal({}, Environment.new.custom_enterprise_fields) | |
| 596 | + end | |
| 597 | + | |
| 598 | + should 'not set in custom_enterprise_fields if not in enterprise.fields' do | |
| 599 | + env = Environment.default | |
| 600 | + Enterprise.stubs(:fields).returns(['contact_person', 'comercial_phone']) | |
| 601 | + | |
| 602 | + env.custom_enterprise_fields = { 'contact_email' => {'required' => 'true', 'active' => 'true'}, 'contact_person' => {'required' => 'true', 'active' => 'true'}} | |
| 603 | + assert_equal({'contact_person' => {'required' => 'true', 'active' => 'true'}}, env.custom_enterprise_fields) | |
| 604 | + assert ! env.custom_enterprise_fields.keys.include?('contact_email') | |
| 605 | + end | |
| 606 | + | |
| 607 | + should 'return enteprise_fields status' do | |
| 608 | + env = Environment.default | |
| 609 | + | |
| 610 | + env.expects(:custom_enterprise_fields).returns({ 'contact_email' => {'required' => 'true', 'active' => 'false'}}).at_least_once | |
| 611 | + | |
| 612 | + assert_equal true, env.custom_enterprise_field('contact_email', 'required') | |
| 613 | + assert_equal false, env.custom_enterprise_field('contact_email', 'active') | |
| 614 | + end | |
| 615 | + | |
| 616 | + should 'select active fields from enterprise' do | |
| 617 | + env = Environment.default | |
| 618 | + env.expects(:custom_enterprise_fields).returns({ 'contact_email' => {'required' => 'true', 'active' => 'true'}, 'contact_person' => {'required' => 'true', 'active' => 'false'}}).at_least_once | |
| 619 | + | |
| 620 | + assert_equal ['contact_email'], env.active_enterprise_fields | |
| 621 | + end | |
| 622 | + | |
| 623 | + should 'select required fields from enterprise' do | |
| 624 | + env = Environment.default | |
| 625 | + env.expects(:custom_enterprise_fields).returns({ 'contact_email' => {'required' => 'true', 'active' => 'true'}, 'contact_person' => {'required' => 'false', 'active' => 'true'}}).at_least_once | |
| 626 | + | |
| 627 | + assert_equal ['contact_email'], env.required_enterprise_fields | |
| 628 | + end | |
| 629 | + | |
| 630 | + should 'set custom_communitys_fields' do | |
| 631 | + env = Environment.new | |
| 632 | + env.custom_community_fields = {'contact_person' => {'required' => 'true', 'active' => 'true'},'contact_email'=> {'required' => 'true', 'active' => 'true'}} | |
| 633 | + | |
| 634 | + assert_equal({'contact_person' => {'required' => 'true', 'active' => 'true'},'contact_email'=> {'required' => 'true', 'active' => 'true'}}, env.custom_community_fields) | |
| 635 | + end | |
| 636 | + | |
| 637 | + should 'have no custom_community_fields by default' do | |
| 638 | + assert_equal({}, Environment.new.custom_community_fields) | |
| 639 | + end | |
| 640 | + | |
| 641 | + should 'not set in custom_community_fields if not in community.fields' do | |
| 642 | + env = Environment.default | |
| 643 | + Community.stubs(:fields).returns(['contact_person', 'comercial_phone']) | |
| 644 | + | |
| 645 | + env.custom_community_fields = { 'contact_email' => {'required' => 'true', 'active' => 'true'}, 'contact_person' => {'required' => 'true', 'active' => 'true'}} | |
| 646 | + assert_equal({'contact_person' => {'required' => 'true', 'active' => 'true'}}, env.custom_community_fields) | |
| 647 | + assert ! env.custom_community_fields.keys.include?('contact_email') | |
| 648 | + end | |
| 649 | + | |
| 650 | + should 'return community_fields status' do | |
| 651 | + env = Environment.default | |
| 652 | + | |
| 653 | + env.expects(:custom_community_fields).returns({ 'contact_email' => {'required' => 'true', 'active' => 'false'}}).at_least_once | |
| 654 | + | |
| 655 | + assert_equal true, env.custom_community_field('contact_email', 'required') | |
| 656 | + assert_equal false, env.custom_community_field('contact_email', 'active') | |
| 657 | + end | |
| 658 | + | |
| 659 | + should 'select active fields from community' do | |
| 660 | + env = Environment.default | |
| 661 | + env.expects(:custom_community_fields).returns({ 'contact_email' => {'required' => 'true', 'active' => 'true'}, 'contact_person' => {'required' => 'true', 'active' => 'false'}}).at_least_once | |
| 662 | + | |
| 663 | + assert_equal ['contact_email'], env.active_community_fields | |
| 664 | + end | |
| 665 | + | |
| 666 | + should 'select required fields from community' do | |
| 667 | + env = Environment.default | |
| 668 | + env.expects(:custom_community_fields).returns({ 'contact_email' => {'required' => 'true', 'active' => 'true'}, 'contact_person' => {'required' => 'false', 'active' => 'true'}}).at_least_once | |
| 669 | + | |
| 670 | + assert_equal ['contact_email'], env.required_community_fields | |
| 671 | + end | |
| 672 | + | |
| 673 | + should 'set category_types' do | |
| 674 | + env = Environment.new | |
| 675 | + env.category_types = ['Category', 'ProductCategory'] | |
| 676 | + | |
| 677 | + assert_equal ['Category', 'ProductCategory'], env.category_types | |
| 678 | + end | |
| 679 | + | |
| 680 | + should 'have type /Category/ on category_types by default' do | |
| 681 | + assert_equal ['Category'], Environment.new.category_types | |
| 682 | + end | |
| 683 | + | |
| 535 | 684 | end | ... | ... |
test/unit/friendship_test.rb
| ... | ... | @@ -3,8 +3,8 @@ require File.dirname(__FILE__) + '/../test_helper' |
| 3 | 3 | class FriendshipTest < Test::Unit::TestCase |
| 4 | 4 | |
| 5 | 5 | should 'connect a person to another' do |
| 6 | - p1 = Person.new | |
| 7 | - p2 = Person.new | |
| 6 | + p1 = Person.new(:environment => Environment.default) | |
| 7 | + p2 = Person.new(:environment => Environment.default) | |
| 8 | 8 | |
| 9 | 9 | f = Friendship.new |
| 10 | 10 | assert_raise ActiveRecord::AssociationTypeMismatch do | ... | ... |
test/unit/person_test.rb
| ... | ... | @@ -4,7 +4,7 @@ class PersonTest < Test::Unit::TestCase |
| 4 | 4 | fixtures :profiles, :users, :environments |
| 5 | 5 | |
| 6 | 6 | def test_person_must_come_form_the_cration_of_an_user |
| 7 | - p = Person.new(:name => 'John', :identifier => 'john') | |
| 7 | + p = Person.new(:environment => Environment.default, :name => 'John', :identifier => 'john') | |
| 8 | 8 | assert !p.valid? |
| 9 | 9 | p.user = create_user('john', :email => 'john@doe.org', :password => 'dhoe', :password_confirmation => 'dhoe') |
| 10 | 10 | assert !p.valid? |
| ... | ... | @@ -59,21 +59,21 @@ class PersonTest < Test::Unit::TestCase |
| 59 | 59 | p1 = u.person |
| 60 | 60 | assert_equal u, p1.user |
| 61 | 61 | |
| 62 | - p2 = Person.new | |
| 62 | + p2 = Person.new(:environment => Environment.default) | |
| 63 | 63 | p2.user = u |
| 64 | 64 | assert !p2.valid? |
| 65 | 65 | assert p2.errors.invalid?(:user_id) |
| 66 | 66 | end |
| 67 | 67 | |
| 68 | 68 | should "have person info fields" do |
| 69 | - p = Person.new | |
| 69 | + p = Person.new(:environment => Environment.default) | |
| 70 | 70 | [ :name, :photo, :contact_information, :birth_date, :sex, :address, :city, :state, :country, :zip_code ].each do |i| |
| 71 | 71 | assert_respond_to p, i |
| 72 | 72 | end |
| 73 | 73 | end |
| 74 | 74 | |
| 75 | 75 | should 'not have person_info class' do |
| 76 | - p = Person.new | |
| 76 | + p = Person.new(:environment => Environment.default) | |
| 77 | 77 | assert_raise NoMethodError do |
| 78 | 78 | p.person_info |
| 79 | 79 | end |
| ... | ... | @@ -108,7 +108,7 @@ class PersonTest < Test::Unit::TestCase |
| 108 | 108 | end |
| 109 | 109 | |
| 110 | 110 | should 'get no email address when there is no associated user' do |
| 111 | - p = Person.new | |
| 111 | + p = Person.new(:environment => Environment.default) | |
| 112 | 112 | assert_nil p.email |
| 113 | 113 | end |
| 114 | 114 | |
| ... | ... | @@ -173,12 +173,12 @@ class PersonTest < Test::Unit::TestCase |
| 173 | 173 | end |
| 174 | 174 | |
| 175 | 175 | should 'suggest default friend groups list' do |
| 176 | - p = Person.new | |
| 176 | + p = Person.new(:environment => Environment.default) | |
| 177 | 177 | assert_equivalent [ 'friends', 'work', 'school', 'family' ], p.suggested_friend_groups |
| 178 | 178 | end |
| 179 | 179 | |
| 180 | 180 | should 'suggest current groups as well' do |
| 181 | - p = Person.new | |
| 181 | + p = Person.new(:environment => Environment.default) | |
| 182 | 182 | p.expects(:friend_groups).returns(['group1', 'group2']) |
| 183 | 183 | assert_equivalent [ 'friends', 'work', 'school', 'family', 'group1', 'group2' ], p.suggested_friend_groups |
| 184 | 184 | end |
| ... | ... | @@ -264,14 +264,14 @@ class PersonTest < Test::Unit::TestCase |
| 264 | 264 | end |
| 265 | 265 | |
| 266 | 266 | should 'provide desired info fields' do |
| 267 | - p = Person.new | |
| 267 | + p = Person.new(:environment => Environment.default) | |
| 268 | 268 | assert p.respond_to?(:photo) |
| 269 | 269 | assert p.respond_to?(:address) |
| 270 | 270 | assert p.respond_to?(:contact_information) |
| 271 | 271 | end |
| 272 | 272 | |
| 273 | 273 | should 'required name' do |
| 274 | - person = Person.new | |
| 274 | + person = Person.new(:environment => Environment.default) | |
| 275 | 275 | assert !person.valid? |
| 276 | 276 | assert person.errors.invalid?(:name) |
| 277 | 277 | end |
| ... | ... | @@ -285,7 +285,7 @@ class PersonTest < Test::Unit::TestCase |
| 285 | 285 | |
| 286 | 286 | should 'have e-mail addresses' do |
| 287 | 287 | env = Environment.create!(:name => 'sample env', :domains => [Domain.new(:name => 'somedomain.com')]) |
| 288 | - person = Person.new(:identifier => 'testuser') | |
| 288 | + person = Person.new(:environment => env, :identifier => 'testuser') | |
| 289 | 289 | person.expects(:environment).returns(env) |
| 290 | 290 | |
| 291 | 291 | assert_equal ['testuser@somedomain.com'], person.email_addresses |
| ... | ... | @@ -295,7 +295,7 @@ class PersonTest < Test::Unit::TestCase |
| 295 | 295 | env = Environment.create!(:name => 'sample env', :domains => [Domain.new(:name => 'somedomain.com')]) |
| 296 | 296 | env.force_www = true |
| 297 | 297 | env.save |
| 298 | - person = Person.new(:identifier => 'testuser') | |
| 298 | + person = Person.new(:environment => env, :identifier => 'testuser') | |
| 299 | 299 | person.expects(:environment).returns(env) |
| 300 | 300 | |
| 301 | 301 | assert_equal ['testuser@somedomain.com'], person.email_addresses |
| ... | ... | @@ -387,4 +387,76 @@ class PersonTest < Test::Unit::TestCase |
| 387 | 387 | assert_equal 'pt_BR', Person['user_lang_test'].last_lang |
| 388 | 388 | end |
| 389 | 389 | |
| 390 | + should 'return active_person_fields' do | |
| 391 | + e = Environment.default | |
| 392 | + e.expects(:active_person_fields).returns(['cell_phone', 'comercial_phone']).at_least_once | |
| 393 | + person = Person.new(:environment => e) | |
| 394 | + | |
| 395 | + assert_equal e.active_person_fields, person.active_fields | |
| 396 | + end | |
| 397 | + | |
| 398 | + should 'return required_person_fields' do | |
| 399 | + e = Environment.default | |
| 400 | + e.expects(:required_person_fields).returns(['cell_phone', 'comercial_phone']).at_least_once | |
| 401 | + person = Person.new(:environment => e) | |
| 402 | + | |
| 403 | + assert_equal e.required_person_fields, person.required_fields | |
| 404 | + end | |
| 405 | + | |
| 406 | + should 'require fields if person needs' do | |
| 407 | + e = Environment.default | |
| 408 | + e.expects(:required_person_fields).returns(['cell_phone']).at_least_once | |
| 409 | + person = Person.new(:environment => e) | |
| 410 | + assert ! person.valid? | |
| 411 | + assert person.errors.invalid?(:cell_phone) | |
| 412 | + | |
| 413 | + person.cell_phone = '99999' | |
| 414 | + person.valid? | |
| 415 | + assert ! person.errors.invalid?(:cell_phone) | |
| 416 | + end | |
| 417 | + | |
| 418 | + should 'require custom_area_of_study if area_of_study is others' do | |
| 419 | + e = Environment.default | |
| 420 | + e.expects(:required_person_fields).returns(['area_of_study', 'custom_area_of_study']).at_least_once | |
| 421 | + | |
| 422 | + person = Person.new(:environment => e, :area_of_study => 'Others') | |
| 423 | + assert !person.valid? | |
| 424 | + assert person.errors.invalid?(:custom_area_of_study) | |
| 425 | + | |
| 426 | + person.custom_area_of_study = 'Customized area of study' | |
| 427 | + person.valid? | |
| 428 | + assert ! person.errors.invalid?(:custom_area_of_study) | |
| 429 | + end | |
| 430 | + | |
| 431 | + should 'not require custom_area_of_study if area_of_study is not others' do | |
| 432 | + e = Environment.default | |
| 433 | + e.expects(:required_person_fields).returns(['area_of_study']).at_least_once | |
| 434 | + | |
| 435 | + person = Person.new(:environment => e, :area_of_study => 'Agrometeorology') | |
| 436 | + person.valid? | |
| 437 | + assert ! person.errors.invalid?(:custom_area_of_study) | |
| 438 | + end | |
| 439 | + | |
| 440 | + should 'require custom_formation if formation is others' do | |
| 441 | + e = Environment.default | |
| 442 | + e.expects(:required_person_fields).returns(['formation', 'custom_formation']).at_least_once | |
| 443 | + | |
| 444 | + person = Person.new(:environment => e, :formation => 'Others') | |
| 445 | + assert !person.valid? | |
| 446 | + assert person.errors.invalid?(:custom_formation) | |
| 447 | + | |
| 448 | + person.custom_formation = 'Customized formation' | |
| 449 | + person.valid? | |
| 450 | + assert ! person.errors.invalid?(:custom_formation) | |
| 451 | + end | |
| 452 | + | |
| 453 | + should 'not require custom_formation if formation is not others' do | |
| 454 | + e = Environment.default | |
| 455 | + e.expects(:required_person_fields).returns(['formation']).at_least_once | |
| 456 | + | |
| 457 | + person = Person.new(:environment => e, :formation => 'Agrometeorology') | |
| 458 | + assert !person.valid? | |
| 459 | + assert ! person.errors.invalid?(:custom_formation) | |
| 460 | + end | |
| 461 | + | |
| 390 | 462 | end | ... | ... |