Изменения документа Registration
Редактировал(а) Dmitriy Rybakov 20.06.2025
От версии 2.1
отредактировано Dmitriy Rybakov
на 04.10.2024
на 04.10.2024
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-administration-ui/15.10.12]
К версии 1.1
отредактировано Полина Герасимова
на 20.09.2024
на 20.09.2024
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-administration-ui/11.8.1]
Сводка
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
-
Свойства класса (3 изменено, 2 добавлено, 5 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -xwiki:XWiki.r ybakovds1 +xwiki:XWiki.gerasimovapd - Содержимое
-
... ... @@ -1,5 +3,3 @@ 1 -{{template name="register_macros.vm"/}} 2 - 3 3 {{velocity}} 4 4 ## The registration is enabled: 5 5 ## - on the main wiki ... ... @@ -13,14 +13,24 @@ 13 13 #set($loginAction = 'loginsubmit') 14 14 ## 15 15 #set($documentName = 'XWiki.Registration') 14 + #set($configurationClassName = 'XWiki.Registration') 16 16 ## 17 17 ## Security measure: 18 18 ## If this document is changed such that it must have programming permission in order to run, change this to false. 19 19 #set($sandbox = true) 20 20 ## 21 - # set($registrationConfig=$NULL)22 - # _loadConfig($registrationConfig)20 + ## Load the configuration from a seperate document. 21 + #loadConfig('XWiki.RegistrationConfig') 23 23 ## 23 + ## Defines what server generated error messages should look like 24 + ## The error message when a field is entered incorrectly 25 + #set($failureMessageParams = { 'class' : 'LV_validation_message LV_invalid'}) 26 + ## 'LV_validation_message LV_invalid' depends on this: 27 + $xwiki.get('ssfx').use('uicomponents/widgets/validation/livevalidation.css', true) 28 + ## 29 + ## The * next to the fields to denote they are mandatory. 30 + #set($fieldMandatoryStar = { 'class' : 'xRequired'}) 31 + ## 24 24 #* 25 25 * You may include this document in other documents using {{include reference="XWiki.Registration"/}} 26 26 * To specify that the user is invited and should be allowed to register even if Guest does not have permission to ... ... @@ -125,8 +125,7 @@ 125 125 'label' : $services.localization.render('core.register.firstName'), 126 126 'params' : { 127 127 'type' : 'text', 128 - 'size' : '60', 129 - 'autocomplete' : 'given-name' 136 + 'size' : '60' 130 130 } 131 131 }) 132 132 #set($discard = $fields.add($field)) ... ... @@ -137,8 +137,7 @@ 137 137 'label' : $services.localization.render('core.register.lastName'), 138 138 'params' : { 139 139 'type' : 'text', 140 - 'size' : '60', 141 - 'autocomplete' : 'family-name' 147 + 'size' : '60' 142 142 } 143 143 }) 144 144 #set($discard = $fields.add($field)) ... ... @@ -150,8 +150,7 @@ 150 150 'params' : { 151 151 'type' : 'text', 152 152 'onfocus' : 'prepareName(document.forms.register);', 153 - 'size' : '60', 154 - 'autocomplete' : 'username' 159 + 'size' : '60' 155 155 }, 156 156 'validate' : { 157 157 'mandatory' : { ... ... @@ -166,15 +166,57 @@ 166 166 #set($discard = $fields.add($field)) 167 167 ## Make sure the chosen user name is not already taken 168 168 ## This macro is called by programmaticValidation for xwikiname (above) 169 - #macro (nameAvailable, $name)170 - #if ($xwiki.exists("$userSpace$name"))174 + #macro(nameAvailable, $name) 175 + #if($xwiki.exists("$userSpace$name")) 171 171 failed 172 172 #end 173 173 #end 174 174 ## 175 175 ##The password field, mandatory and must be at least 6 characters long. 181 + #set($field = 182 + {'name' : 'register_password', 183 + 'label' : $services.localization.render('core.register.password'), 184 + 'params' : { 185 + 'type' : 'password', 186 + 'autocomplete' : 'off', 187 + 'size' : '60' 188 + }, 189 + 'validate' : { 190 + 'mandatory' : { 191 + 'failureMessage' : $services.localization.render('core.validation.required.message') 192 + }, 193 + 'regex' : { 194 + 'pattern' : '/.{6,}/', 195 + 'failureMessage' : $services.localization.render('xe.admin.registration.passwordTooShort') 196 + } 197 + } 198 + }) 199 + #set($discard = $fields.add($field)) 200 + ## 176 176 ##The confirm password field, mandatory, must match password field, and must also be 6+ characters long. 177 - #definePasswordFields($fields, 'register_password', 'register2_password', $registrationConfig.passwordOptions) 202 + #set($field = 203 + {'name' : 'register2_password', 204 + 'label' : $services.localization.render('core.register.passwordRepeat'), 205 + 'params' : { 206 + 'type' : 'password', 207 + 'autocomplete' : 'off', 208 + 'size' : '60' 209 + }, 210 + 'validate' : { 211 + 'mandatory' : { 212 + 'failureMessage' : $services.localization.render('core.validation.required.message') 213 + }, 214 + 'mustMatch' : { 215 + 'name' : 'register_password', 216 + 'failureMessage' : $services.localization.render('xe.admin.registration.passwordMismatch') 217 + }, 218 + 'regex' : { 219 + 'pattern' : '/.{6,}/', 220 + 'failureMessage' : $services.localization.render('xe.admin.registration.passwordTooShort') 221 + } 222 + } 223 + }) 224 + #set($discard = $fields.add($field)) 178 178 ## 179 179 ## The email address field, regex checked with an email pattern. Mandatory if registration uses email verification 180 180 #set($field = ... ... @@ -182,8 +182,7 @@ 182 182 'label' : $services.localization.render('core.register.email'), 183 183 'params' : { 184 184 'type' : 'text', 185 - 'size' : '60', 186 - 'autocomplete' : 'email' 232 + 'size' : '60' 187 187 }, 188 188 'validate' : { 189 189 'regex' : { ... ... @@ -192,7 +192,7 @@ 192 192 } 193 193 } 194 194 }) 195 - #if($ registrationConfig.useEmailVerification)241 + #if($xwiki.getXWikiPreferenceAsInt('use_email_verification', 0) == 1) 196 196 #set($field.validate.mandatory = {'failureMessage' : $services.localization.render('core.validation.required.message')}) 197 197 #end 198 198 #set($discard = $fields.add($field)) ... ... @@ -238,7 +238,7 @@ 238 238 #if($services.captcha 239 239 && !$invited 240 240 && $xcontext.getUser() == "XWiki.XWikiGuest" 241 - && $re gistrationConfig.requireCaptcha)287 + && $requireCaptcha) 242 242 ## The CAPTCHA field, programmatically checked to make sure the CAPTCHA is right. 243 243 ## Not checked by javascript because javascript can't check the CAPTCHA and the Ok message because it passes the 244 244 ## mandatory test is misleading. ... ... @@ -259,6 +259,17 @@ 259 259 }) 260 260 #set($discard = $fields.add($field)) 261 261 #end 308 + ## 309 + ## Pass the name of the template to $xwiki.createUser so any contained information will be passed in. 310 + #set($field = 311 + {'name' : 'template', 312 + 'params' : { 313 + 'type' : 'hidden', 314 + 'value' : 'XWiki.XWikiUserTemplate' 315 + } 316 + }) 317 + #set($discard = $fields.add($field)) 318 + ## 262 262 ## Pass the redirect parameter on so that the login page may redirect to the right place. 263 263 ## Not necessary in Firefox 3.0.10 or Opera 9.64, I don't know about IE or Safari. 264 264 #set($field = ... ... @@ -273,6 +273,10 @@ 273 273 ## The Code. 274 274 ####################################################################### 275 275 ## 333 + #if($useLiveValidation) 334 + $xwiki.get('jsfx').use('uicomponents/widgets/validation/livevalidation_prototype.js') 335 + $xwiki.get('ssfx').use('uicomponents/widgets/validation/livevalidation.css', true) 336 + #end 276 276 ## This application's HTML is dynamically generated and editing in WYSIWYG would not work 277 277 #if($xcontext.getAction() == 'edit') 278 278 $response.sendRedirect("$xwiki.getURL($doc.getFullName(), 'edit')?editor=wiki") ... ... @@ -299,7 +299,7 @@ 299 299 #end 300 300 ## 301 301 ## Display the heading 302 - $ registrationConfig.heading363 + $heading 303 303 ## If the submit button has been pressed, then we test the input and maybe create the user. 304 304 #if($request.getParameter('xwikiname')) 305 305 ## Do server side validation of input fields. ... ... @@ -306,7 +306,7 @@ 306 306 ## This must not be in a #set directive as it will output messages if something goes wrong. 307 307 #validateFields($fields, $request) 308 308 ## If server side validation was successfull, create the user 309 - #if($a llFieldsValid)370 + #if(!$registrationFailed) 310 310 #createUser($fields, $request, $response, $doAfterRegistration) 311 311 #end 312 312 #end ... ... @@ -313,7 +313,7 @@ 313 313 ## If the registration was not successful or if the user hasn't submitted the info yet 314 314 ## Then we display the registration form. 315 315 #if(!$registrationDone) 316 - $ registrationConfig.welcomeMessage377 + $welcomeMessage 317 317 318 318 {{html clean="false"}} 319 319 <form id="register" action="$xwiki.relativeRequestURL" method="post" class="xform half"> ... ... @@ -321,18 +321,21 @@ 321 321 #if ($request.xpage == 'registerinline') 322 322 #skinExtensionHooks 323 323 #end 385 + <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> 324 324 #set ($userDirectoryReference = $services.model.createDocumentReference('', 'Main', 'UserDirectory')) 325 325 #if ($xwiki.exists($userDirectoryReference)) 326 326 <input type="hidden" name="parent" value="$!{services.model.serialize($userDirectoryReference, 'default')}" /> 327 327 #end 328 328 </div> 329 - ## Note that the macro inject the form_token field. 330 - #generateHtml($fields, $request) 391 + #generateHtml($fields, $fieldMandatoryStar, $failureMessageParams) 331 331 <p class="buttons"> 332 332 <span class="buttonwrapper"> 333 333 <input type="submit" value="$services.localization.render('core.register.submit')" class="button"/> 334 334 </span> 335 335 </p> 397 + #if ($useLiveValidation) 398 + #generateJavascript($fields) 399 + #end 336 336 </form> 337 337 {{/html}} 338 338 ... ... @@ -350,7 +350,93 @@ 350 350 #set($temp = $response.sendRedirect($xwiki.getURL($mainWikiRegisterPageReference, 'register', $request.queryString))) 351 351 #end 352 352 ## 417 +####### The Macros (nothing below this point is run directly) ######### 353 353 #* 419 + * Server side validation, this is necessary for security and because not everyone has Javascript 420 + * 421 + * @param $fields The array of fields to validate. 422 + * @param $request An XWikiRequest object which made the register request, used to get parameters. 423 + *### 424 +#macro(validateFields, $fields, $request) 425 + #foreach($field in $fields) 426 + #if($field.get('validate') && $field.get('name')) 427 + #set($fieldName = $field.get('name')) 428 + #set($validate = $field.get('validate')) 429 + #set($error = '') 430 + #set($value = $request.get($fieldName)) 431 + #if("$!value" != '' || $field.get('type') == 'html') 432 + ## 433 + ## mustMatch validation 434 + #if($error == '' && $validate.get('mustMatch')) 435 + #set($mustMatch = $validate.get('mustMatch')) 436 + #if($mustMatch.get('name') && $mustMatch.get('failureMessage')) 437 + #if($request.get($fieldName) != $request.get($mustMatch.get('name'))) 438 + #set($error = $mustMatch.get('failureMessage')) 439 + #end 440 + #else 441 + ERROR: In field: ${fieldName}: mustMatch validation required both name 442 + (of field which this field must match) and failureMessage. 443 + #end 444 + #end 445 + ## 446 + ## Regex validation 447 + ## We won't bother with regex validation if there is no entry, that would defeat the purpose of 'mandatory' 448 + #if($error == '' && $validate.get('regex') && $value && $value != '') 449 + #set($regex = $validate.get('regex')) 450 + #if($regex.get('pattern') && $regex.get('failureMessage')) 451 + ## Make Java regexes more compatible with Perl/js style regexes by removing leading and trailing / 452 + #if($regex.get('pattern').length() > 1) 453 + #set($pattern = $regex.get('pattern')) 454 + #if($pattern.lastIndexOf('/') < $pattern.length() - 1) 455 + ERROR: In field: ${fieldName}: regex validation does not allow flags after the /, please fix [${pattern}]. 456 + #end 457 + #set($pattern = $pattern.substring($mathtool.add(1, $pattern.indexOf('/')), $pattern.lastIndexOf('/'))) 458 + #else 459 + ## I don't expect this but want to maintain compatibility. 460 + #set($pattern = $regex.get('pattern')) 461 + #end 462 + #if($regextool.find($value, $pattern).isEmpty()) 463 + #set($error = $regex.get('failureMessage')) 464 + #end 465 + #elseif($regex.get('pattern')) 466 + ERROR: In field: ${fieldName}: regex validation must include failureMessage. 467 + #end 468 + #end 469 + ## 470 + ## If regex and mustMatch validation passed, try programmatic validation 471 + #if($error == '' && $validate.get('programmaticValidation')) 472 + #set($pv = $validate.get('programmaticValidation')) 473 + #if($pv.get('code') && $pv.get('failureMessage')) 474 + #set($pvReturn = "#evaluate($pv.get('code'))") 475 + #if($pvReturn.indexOf('failed') != -1) 476 + #set($error = $pv.get('failureMessage')) 477 + #end 478 + #else 479 + ERROR: In field: ${fieldName}: programmaticValidation requires code and failureMessage 480 + #end 481 + #end 482 + #else 483 + ## 484 + ## If no content, check if content is mandatory 485 + #if($validate.get('mandatory')) 486 + #set($mandatory = $validate.get('mandatory')) 487 + #if($mandatory.get('failureMessage')) 488 + #set($error = $mandatory.get('failureMessage')) 489 + #else 490 + ERROR: In field: ${fieldName}: mandatory validation requires a failureMessage 491 + #end 492 + #end 493 + #end 494 + #if($error != '') 495 + #set($discard = $field.put('error', $error)) 496 + #set($registrationFailed = true) 497 + #end 498 + #elseif(!$field.get('name')) 499 + ERROR: Field with no name. 500 + #end##if(validate) 501 + #end##loop 502 +#end##macro 503 +#* 354 354 * Create the user. 355 355 * Calls $xwiki.createUser to create a new user. 356 356 * ... ... @@ -381,9 +381,6 @@ 381 381 {{translation key="core.register.userAlreadyExists"/}} 382 382 #elseif($reg == -4) 383 383 {{translation key="core.register.invalidUsername"/}} 384 - #elseif ($reg == -9) 385 - {{translation key="core.register.invalidCaptcha"/}} 386 - ## Note that -10 is reserved already (see api.XWiki#createUser) 387 387 #elseif($reg == -11) 388 388 {{translation key="core.register.mailSenderWronglyConfigured"/}} 389 389 #else ... ... @@ -411,16 +411,16 @@ 411 411 #if("$!request.getParameter($redirectParam)" != '') 412 412 #set($redirect = $request.getParameter($redirectParam)) 413 413 #else 414 - #set($redirect = $ registrationConfig.defaultRedirect)561 + #set($redirect = $defaultRedirect) 415 415 #end 416 416 ## Display a "registration successful" message 417 417 418 - #evaluate($registration Config.registrationSuccessMessage)565 + #evaluate($registrationSuccessMessage) 419 419 420 420 ## Empty line prevents message from being forced into a <p> block. 421 421 422 422 ## Give the user a login button which posts their username and password to loginsubmit 423 - #if($ registrationConfig.loginButton)570 + #if($loginButton) 424 424 425 425 {{html clean=false wiki=false}} 426 426 <form id="loginForm" action="$loginURL" method="post"> ... ... @@ -435,8 +435,8 @@ 435 435 </div> 436 436 </form> 437 437 ## We don't want autoLogin if we are administrators adding users... 438 - #if ($ registrationConfig.autoLogin && $request.xpage != 'registerinline')439 - <script> 585 + #if ($autoLogin && $request.xpage != 'registerinline') 586 + <script type='text/javascript'> 440 440 document.observe('xwiki:dom:loaded', function() { 441 441 document.forms['loginForm'].submit(); 442 442 }); ... ... @@ -448,4 +448,207 @@ 448 448 #end 449 449 ## 450 450 #end## createUser Macro 598 +#* 599 + * Generate HTML form, this is the only place where HTML is written. 600 + * 601 + * @param $fields The array of fields to use for generating html code. 602 + * @param $fieldMandatoryStar The tag parameters for a * indicating a mandatory field. 603 + * @param $failureMessageParams The tag parameters for a failure message. 604 + *### 605 +#macro(generateHtml, $fields, $fieldMandatoryStar, $failureMessageParams) 606 + ## Put the same values back into the fields. 607 + #getParams($fields) 608 + ## 609 + <dl> 610 + #foreach($field in $fields) 611 + #if($field.get('name')) 612 + #set($fieldName = $field.get('name')) 613 + #if($field.get('label')) 614 + #set($label = $field.get('label')) 615 + <dt><label #if (!$field.get('skipLabelFor'))for="$fieldName"#end>$label 616 + #if($field.get('validate').get('mandatory')) 617 + <span ## 618 + #foreach($entry in $fieldMandatoryStar.entrySet()) 619 + $entry.getKey()="$entry.getValue()" ## 620 + #end 621 + >$services.localization.render('core.validation.required')</span> 622 + #end 623 + </label> 624 + </dt> 625 + #end 626 + <dd> 627 + #if ($field.get('type') == 'html') 628 + $field.get('html') 629 + #elseif ($field.get('type') == 'tag' || "$!{field.get('type')}" == '') 630 + ## If no tag then default tag is <input> 631 + #if($field.get('tag')) 632 + #set($tag = $field.get('tag')) 633 + #else 634 + #set($tag = 'input') 635 + #end 636 + <$tag id="$fieldName" ## 637 + #set($params = $field.get('params')) 638 + ## If no name parameter is spacified, then we use the field name 639 + #if(!$params.get('name')) 640 + #set($discard = $params.put('name', $fieldName)) 641 + #end 642 + #foreach($entry in $params.entrySet()) 643 + ## If a parameter is specified as '' then we don't include it. 644 + #if($entry.getValue() != '') 645 + $entry.getKey()="$escapetool.xml($entry.getValue())" ## 646 + #end 647 + #end 648 + ## Close the opened tag in a way that is valid for its type (i.e. with "/>" or with "></tag>"). 649 + #if ($tag == 'input') 650 + #set ($voidTag = true) 651 + #end 652 + #if ($voidTag)/#end>#if (!$voidTag)</$tag>#end 653 + #end 654 + #if($field.get('error')) 655 + <span ## 656 + #foreach($entry in $failureMessageParams.entrySet()) 657 + $entry.getKey()="$entry.getValue()" ## 658 + #end 659 + >$field.get('error')</span> 660 + #end 661 + </dd> 662 + #else 663 + ERROR: Field with no name. 664 + #end##if fieldName exists 665 + #end 666 + </dl> 667 +#end 668 +#* 669 + * Generate the Javascript for interacting with LiveValidation. 670 + * 671 + * @param $fields The array of fields which to validate. 672 + *### 673 +#macro(generateJavascript, $fields) 674 + <script type='text/javascript'> 675 + /* <![CDATA[ */ 676 + var initRegistrationFormValidation = function() { 677 + ## 678 + #foreach($field in $fields) 679 + #if($field.get('validate') && $field.get('name')) 680 + #set($validate = $field.get('validate')) 681 + #if(($validate.get('mandatory') && !$validate.get('mandatory').get('noscript')) 682 + || ($validate.get('regex') && !$validate.get('regex').get('noscript')) 683 + || ($validate.get('mustMatch') && !$validate.get('mustMatch').get('noscript'))) 684 + #set($fieldName = $field.get('name')) 685 + #if($validate.get('fieldOkayMessage')) 686 + #set($okayMessage = $validate.get('fieldOkayMessage')) 687 + #else 688 + #set($okayMessage = $defaultFieldOkayMessage) 689 + #end 690 + var ${fieldName}Validator = new LiveValidation("$fieldName", { validMessage: "$okayMessage", wait: 500} ); 691 + ## 692 + #if($validate.get('mandatory')) 693 + #set($mandatory = $validate.get('mandatory')) 694 + #if($mandatory.get('failureMessage') && !$mandatory.get('noscript')) 695 + ${fieldName}Validator.add( Validate.Presence, { failureMessage: "$!mandatory.get('failureMessage')"} ); 696 + #end 697 + #end 698 + ## 699 + #if($validate.get('mustMatch')) 700 + #set($mustMatch = $validate.get('mustMatch')) 701 + #if($mustMatch.get('name') && $mustMatch.get('failureMessage') && !$mustMatch.get('noscript')) 702 + ${fieldName}Validator.add( Validate.Confirmation, { match: $$("input[name=$!mustMatch.get('name')]")[0], failureMessage: "$!mustMatch.get('failureMessage')"} ); 703 + #end 704 + #end 705 + ## 706 + #if($validate.get('regex')) 707 + #set($regex = $validate.get('regex')) 708 + #set($pattern = "") 709 + #if($regex.get('jsPattern')) 710 + #set($pattern = $regex.get('jsPattern')) 711 + #elseif($regex.get('pattern')) 712 + #set($pattern = $regex.get('pattern')) 713 + #end 714 + #set($failMessage = "") 715 + #if($regex.get('jsFailureMessage')) 716 + #set($failMessage = $regex.get('jsFailureMessage')) 717 + #elseif($regex.get('failureMessage')) 718 + #set($failMessage = $regex.get('failureMessage')) 719 + #end 720 + #if($pattern != '' && $failMessage != '' && !$regex.get('noscript')) 721 + ${fieldName}Validator.add( Validate.Format, { pattern: $pattern, failureMessage: "$failMessage"} ); 722 + #end 723 + #end##if regex 724 + #end##if contains js validateable fields. 725 + #end##if validate 726 + #end##loop 727 + }; 728 + document.observe('xwiki:dom:loaded', initRegistrationFormValidation); 729 + document.observe('xwiki:dom:updated', function(event) { 730 + var container = (event && event.memo && event.memo.elements && event.memo.elements[0]) || $('body'); 731 + if (container.down('form#register')) { 732 + initRegistrationFormValidation(); 733 + } 734 + });// ]]> 735 + </script> 736 +#end##macro 737 +#* 738 + * Get parameters from request so that values will be filled in if there is a mistake 739 + * in one of the entries. Entries will be returned to fields[n].params.value 740 + * Fields will not be returned if they have either noReturn or error specified. 741 + * 742 + * @param $fields The array of fields to get parameters for. 743 + *### 744 +#macro(getParams $fields) 745 + #foreach($field in $fields) 746 + #if($field.get('name') && $request.get($field.get('name'))) 747 + #if(!$field.get('noReturn') && !$field.get('error')) 748 + #if(!$field.get('params')) 749 + #set($params = {}) 750 + #set($discard = $field.put('params', $params)) 751 + #else 752 + #set($params = $field.get('params')) 753 + #end 754 + #set($discard = $params.put('value', $request.get($field.get('name')))) 755 + #end 756 + #end 757 + #end 758 +#end 759 +#* 760 + * Get the configuration from the configuration object. 761 + * 762 + * @param $configDocumentName The name of the document to get the configuration from. 763 + *### 764 +#macro(loadConfig, $configDocumentName) 765 + #set($configDocument = $xwiki.getDocument($configDocumentName)) 766 + #if(!$configDocument || !$configDocument.getObject($configurationClassName)) 767 + ## No config document, load defaults. 768 + #set($heading = "$services.localization.render('core.register.title')") 769 + #set($welcomeMessage = "$services.localization.render('core.register.welcome')") 770 + #set($useLiveValidation = true) 771 + #set($defaultFieldOkayMessage = "$services.localization.render('core.validation.valid.message')") 772 + #set($loginButton = true) 773 + #set($defaultRedirect = "$xwiki.getURL($services.model.resolveDocument('', 'default', $doc.documentReference.extractReference('WIKI')))") 774 + #set($userFullName = "$request.get('register_first_name') $request.get('register_last_name')") 775 + #set($registrationSuccessMessage = '{{info}}$services.localization.render("core.register.successful", ["[[${userFullName}>>${userSpace}${userName}]]", ${userName}]){{/info}}') 776 + #else 777 + #set($configObject = $configDocument.getObject($configurationClassName)) 778 + #if ($xcontext.action == 'register') 779 + #set ($heading = "(% id='document-title'%)((( = #evaluate($configObject.getProperty('heading').getValue()) = )))(%%)") 780 + #else 781 + #set ($heading = "= #evaluate($configObject.getProperty('heading').getValue()) =") 782 + #end 783 + #set($welcomeMessage = "#evaluate($configObject.getProperty('welcomeMessage').getValue())") 784 + #if($configObject.getProperty('liveValidation_enabled').getValue() == 1) 785 + #set($useLiveValidation = true) 786 + #end 787 + #set($defaultFieldOkayMessage = "#evaluate($configObject.getProperty('liveValidation_defaultFieldOkMessage').getValue())") 788 + #if($configObject.getProperty('loginButton_enabled').getValue() == 1) 789 + #set($loginButton = true) 790 + #end 791 + #if($configObject.getProperty('loginButton_autoLogin_enabled').getValue() == 1) 792 + #set($autoLogin = true) 793 + #end 794 + #set($defaultRedirect = "#evaluate($configObject.getProperty('defaultRedirect').getValue())") 795 + #set($registrationSuccessMessage = "$configObject.getProperty('registrationSuccessMessage').getValue()") 796 + #if($configObject.getProperty('requireCaptcha').getValue() == 1) 797 + #set($requireCaptcha = true) 798 + #end 799 + #end 800 +#end 451 451 {{/velocity}}
- defaultRedirect
-
- liveValidation_defaultFieldOkMessage
-
- Name
-
... ... @@ -1,0 +1,1 @@ 1 +liveValidation_defaultFieldOkMessage - Pretty Name
-
... ... @@ -1,0 +1,1 @@ 1 +Default field okay message - Size
-
... ... @@ -1,0 +1,1 @@ 1 +30 - Number
-
... ... @@ -1,0 +1,1 @@ 1 +4 - Use Suggest
-
... ... @@ -1,0 +1,1 @@ 1 +0
- liveValidation_enabled
-
- Name
-
... ... @@ -1,0 +1,1 @@ 1 +liveValidation_enabled - Pretty Name
-
... ... @@ -1,0 +1,1 @@ 1 +Enable Javascript field validation - Display Form Type
-
... ... @@ -1,0 +1,1 @@ 1 +checkbox - Number
-
... ... @@ -1,0 +1,1 @@ 1 +3
- registrationSuccessMessage
-
- Ограниченный
-
... ... @@ -1,1 +1,0 @@ 1 -0
- welcomeMessage
-
- Ограниченный
-
... ... @@ -1,1 +1,0 @@ 1 -0
- passwordLength
-
- Name
-
... ... @@ -1,1 +1,0 @@ 1 -passwordLength - Pretty Name
-
... ... @@ -1,1 +1,0 @@ 1 -Require a password with the given length - Size
-
... ... @@ -1,1 +1,0 @@ 1 -10 - Number Type
-
... ... @@ -1,1 +1,0 @@ 1 -integer - Number
-
... ... @@ -1,1 +1,0 @@ 1 -10
- passwordRuleOneLowerCaseEnabled
-
- Name
-
... ... @@ -1,1 +1,0 @@ 1 -passwordRuleOneLowerCaseEnabled - Pretty Name
-
... ... @@ -1,1 +1,0 @@ 1 -Require at least one lower case character in the password - Display Form Type
-
... ... @@ -1,1 +1,0 @@ 1 -checkbox - Number
-
... ... @@ -1,1 +1,0 @@ 1 -11
- passwordRuleOneNumberEnabled
-
- Name
-
... ... @@ -1,1 +1,0 @@ 1 -passwordRuleOneNumberEnabled - Pretty Name
-
... ... @@ -1,1 +1,0 @@ 1 -Require at least one number in the password - Display Form Type
-
... ... @@ -1,1 +1,0 @@ 1 -checkbox - Number
-
... ... @@ -1,1 +1,0 @@ 1 -13
- passwordRuleOneSymbolEnabled
-
- Name
-
... ... @@ -1,1 +1,0 @@ 1 -passwordRuleOneSymbolEnabled - Pretty Name
-
... ... @@ -1,1 +1,0 @@ 1 -Require at least one symbol character in the password - Display Form Type
-
... ... @@ -1,1 +1,0 @@ 1 -checkbox - Number
-
... ... @@ -1,1 +1,0 @@ 1 -14
- passwordRuleOneUpperCaseEnabled
-
- Name
-
... ... @@ -1,1 +1,0 @@ 1 -passwordRuleOneUpperCaseEnabled - Pretty Name
-
... ... @@ -1,1 +1,0 @@ 1 -Require at least one upper case character in the password - Display Form Type
-
... ... @@ -1,1 +1,0 @@ 1 -checkbox - Number
-
... ... @@ -1,1 +1,0 @@ 1 -12