Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Wed, Jul 16, 7:30 AM

in-portal

Index: branches/5.2.x/core/admin_templates/incs/config_blocks.tpl
===================================================================
--- branches/5.2.x/core/admin_templates/incs/config_blocks.tpl (revision 14964)
+++ branches/5.2.x/core/admin_templates/incs/config_blocks.tpl (revision 14965)
@@ -1,132 +1,132 @@
<inp2:m_DefineElement name="config_edit_text">
<input type="text" tabindex="<inp2:m_get param='tab_index'/>" name="<inp2:InputName field='$field'/>" id="<inp2:InputName field='$field'/>" value="<inp2:Field field='$field' />"<inp2:m_if check="m_Param" name="field_params"> <inp2:m_Param name="field_params"/><inp2:m_else/> style="width:100%"</inp2:m_if>/>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_edit_password">
- <input type="password" tabindex="<inp2:m_get param='tab_index'/>" primarytype="password" name="<inp2:InputName field='$field'/>" id="<inp2:InputName field='$field'/>" value="" />
+ <input type="password" autocomplete="off" tabindex="<inp2:m_get param='tab_index'/>" primarytype="password" name="<inp2:InputName field='$field'/>" id="<inp2:InputName field='$field'/>" value="" />
<inp2:m_Inc param="tab_index" by="1"/>
- <input type="password" tabindex="<inp2:m_get param='tab_index'/>" name="verify_<inp2:InputName field='$field'/>" id="verify_<inp2:InputName field='$field'/>" value="" />
+ <input type="password" autocomplete="off" tabindex="<inp2:m_get param='tab_index'/>" name="verify_<inp2:InputName field='$field'/>" id="verify_<inp2:InputName field='$field'/>" value="" />
&nbsp;<span class="error" id="error_<inp2:InputName field="$field"/>"></span>
<script type="text/javascript">
- addLoadEvent(
+ $(document).ready(
function() {
// fixes Firefox 2.0+ bug will password autocomplete
document.getElementById('<inp2:InputName field="$field"/>').value = '';
document.getElementById('verify_<inp2:InputName field="$field"/>').value = '';
}
);
</script>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_edit_option">
<option value="<inp2:m_param name='key'/>"<inp2:m_param name="selected"/>><inp2:m_param name="option"/></option>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_edit_select">
<select name="<inp2:InputName field='$field'/>" id="<inp2:InputName field='$field'/>" tabindex="<inp2:m_get param='tab_index'/>">
<inp2:PredefinedOptions field="$field" block="config_edit_option" selected="selected"/>
</select>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_edit_multiselect">
<select id="<inp2:InputName field='$field'/>_select" onchange="update_multiple_options('<inp2:InputName field='$field'/>');" tabindex="<inp2:m_get param='tab_index'/>" multiple>
<inp2:PredefinedOptions field="$field" block="config_edit_option" selected="selected"/>
</select>
<input type="hidden" id="<inp2:InputName field='$field'/>" name="<inp2:InputName field='$field'/>" value="<inp2:Field field='$field'/>"/>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_edit_checkbox" field_class="">
<input type="hidden" id="<inp2:InputName field='$field'/>" name="<inp2:InputName field='$field'/>" value="<inp2:Field field='$field' db='db'/>">
<input tabindex="<inp2:m_get param='tab_index'/>" type="checkbox" id="_cb_<inp2:m_param name='field'/>" name="_cb_<inp2:InputName field='$field'/>" <inp2:Field field="$field" checked="checked" db="db"/> class="<inp2:m_param name="field_class"/>" onclick="update_checkbox(this, document.getElementById('<inp2:InputName field="$field"/>'))">
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_edit_textarea">
<textarea tabindex="<inp2:m_get param='tab_index'/>" name="<inp2:InputName field='$field'/>" id="<inp2:InputName field='$field'/>" <inp2:m_param name="field_params" />><inp2:Field field="$field" /></textarea>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_radio_item">
<input type="radio" <inp2:m_param name="checked"/> name="<inp2:InputName field="$field"/>" id="<inp2:InputName field="$field"/>_<inp2:m_param name="key"/>" value="<inp2:m_param name="key"/>"><label for="<inp2:InputName field="$field"/>_<inp2:m_param name="key"/>"><inp2:m_param name="option"/></label>&nbsp;
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_edit_radio">
<inp2:PredefinedOptions field="$field" block="config_radio_item" selected="checked"/>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="cf_default_value">
<inp2:ConfigFormElement PrefixSpecial="$PrefixSpecial" field="VariableValue" blocks_prefix="config_edit_" element_type_field="ElementType" value_list_field="ValueList"/>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="cf_default_caption">
<td style="width: 500px;">
<inp2:Field name="VariableName" result_to_var="error_field"/>
<span class="<inp2:m_if check='HasError' field='$error_field' id_field='VariableName'>error-cell</inp2:m_if>">
<inp2:Field field="Prompt" as_label="1" /></span><inp2:m_if check="IsRequired"><span class="field-required">&nbsp;*</span></inp2:m_if>:<inp2:m_if check="Field" name="HintLabel"><span>&nbsp;<img src="<inp2:m_TemplatesBase/>/img/hint_icon.png" width="12" height="13" title="<inp2:Field name='HintLabel' as_label='1' html_escape='1'/>" alt="<inp2:Field name='HintLabel' as_label='1' html_escape='1'/>"/></inp2:m_if>
<inp2:m_if check="m_IsDebugMode">
<br/><small style="color: gray;">[<inp2:Field field="DisplayOrder"/>] <inp2:Field field="VariableName"/></small>
</inp2:m_if>
</td>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_block">
<inp2:m_inc param="tab_index" by="1"/>
<inp2:m_if check="m_ParamEquals" name="show_heading" value="1">
<tr class="subsectiontitle">
<td colspan="2">
<inp2:Field name="Heading" as_label="1"/>
</td>
<td align="right">
<a class="config-header" href="javascript:toggle_section('<inp2:Field name="Heading"/>');" id="toggle_mark[<inp2:Field name="Heading"/>]" title="Collapse/Expand Section">[-]</a>
</td>
</tr>
</inp2:m_if>
<tr class="<inp2:m_odd_even odd='table-color1' even='table-color2'/>" id="<inp2:m_param name="PrefixSpecial"/>_<inp2:field field="$IdField"/>" header_label="<inp2:Field name="Heading"/>">
<inp2:m_RenderElement name="cf_default_caption" pass_params="1"/>
<td>
<inp2:m_RenderElement name="$value_render_as" pass_params="1"/>
</td>
<td class="error"><inp2:Error id_field="VariableName"/>&nbsp;</td>
</tr>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_block1">
<inp2:m_inc param="tab_index" by="1"/>
<inp2:m_if check="m_ParamEquals" name="show_heading" value="1">
<tr class="subsectiontitle">
<td colspan="2">
<inp2:Field name="Heading" as_label="1"/>
</td>
<td align="right">
<a class="config-header" href="javascript:toggle_section('<inp2:Field name="Heading"/>');" id="toggle_mark[<inp2:Field name="Heading"/>]" title="Collapse/Expand Section">[-]</a>
</td>
</tr>
</inp2:m_if>
<tr class="<inp2:m_odd_even odd='table-color1' even='table-color2'/>" id="<inp2:m_param name="PrefixSpecial"/>_<inp2:Field field="$IdField"/>" header_label="<inp2:Field name="Heading"/>">
<inp2:m_RenderElement name="cf_default_caption" pass_params="1"/>
<td>
<nobr><inp2:m_RenderElement name="$value_render_as" pass_params="1"/>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="config_block2">
<inp2:m_RenderElement name="$value_render_as" pass_params="1"/></nobr>
</td>
<td class="error"><inp2:Error id_field="VariableName"/>&nbsp;</td>
</tr>
</inp2:m_DefineElement>
<inp2:m_ModuleInclude template="config/custom_variables"/>
<inp2:m_DefineElement name="config_updated_notice">
<inp2:m_if check="m_Recall" var="config_was_updated">
<inp2:m_RenderElement design="form_message" type="notice">
<inp2:m_Phrase name="la_msg_YourChangesWereSuccessfullySaved"/><br/>
</inp2:m_RenderElement>
<inp2:m_RemoveVar name="config_was_updated" />
</inp2:m_if>
</inp2:m_DefineElement>
Index: branches/5.2.x/core/admin_templates/config/config_general.tpl
===================================================================
--- branches/5.2.x/core/admin_templates/config/config_general.tpl (revision 14964)
+++ branches/5.2.x/core/admin_templates/config/config_general.tpl (revision 14965)
@@ -1,134 +1,156 @@
<inp2:m_include t="incs/header"/>
<inp2:m_Get name="section" result_to_var="section"/>
<inp2:m_RenderElement name="combined_header" prefix="conf" section="$section" perm_event="conf:OnLoad" title_preset="config_list_general"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
-<tbody>
- <tr>
- <td>
- <script type="text/javascript">
-
- function ValidatePassFld(fieldId){
- var passFld=document.getElementById(fieldId);
- var passVerifyFld=document.getElementById('verify_'+fieldId);
- if (passFld && passVerifyFld && passFld.value == passVerifyFld.value) {
- return true;
- }
- else {
- var passErrorCell=document.getElementById('error_'+fieldId);
- if (passErrorCell){
- passErrorCell.innerHTML='<inp2:m_phrase name="la_error_PasswordMatch" />';
- }
- return false;
- }
- }
-
- function ValidatePassFields(){
- var el=false;
- var validated=true;
- for (var i=0; i<document.forms.kernel_form.elements.length; i++){
- el=document.forms.kernel_form.elements[i];
- if (el.getAttribute('primarytype')=='password'){
- if (!ValidatePassFld(el.id)){
- validated=false;
- }
- }
- }
- return validated;
- }
-
- function toggle_section($label) {
- var $table = document.getElementById('config_table');
- var $row = null;
- var $is_visible = false;
-
- for (var $i = 0; $i < $table.rows.length; $i++) {
- $row = $table.rows[$i];
- if ($row.getAttribute('header_label') != $label) {
- continue;
- }
-
- if (!$row.style.display) {
- $row.style.display = document.all ? 'block' : 'table-row';
- }
-
- $is_visible = !($row.style.display == 'none');
- $row.style.display = $is_visible ? 'none' : (document.all ? 'block' : 'table-row');
-
- document.getElementById('toggle_mark['+$label+']').innerHTML = '[' + ($is_visible ? '+' : '-') + ']';
- }
- }
-
- var a_toolbar = new ToolBar();
- a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
- if (ValidatePassFields()){
- submit_event('conf','<inp2:conf_SaveEvent/>');
+ <tbody>
+ <tr>
+ <td>
+ <script type="text/javascript">
+ function validate_password_fields() {
+ var $validated = true;
+
+ $("input[primarytype='password']", '#' + $form_name).each(
+ function ($e) {
+ if ( !validate_password_field(this.id) ) {
+ $validated = false;
+ }
}
+ );
+
+ return $validated;
+ }
+
+ function validate_password_field($field_id) {
+ var password_field = document.getElementById($field_id),
+ password_verify_field = document.getElementById('verify_' + $field_id);
+
+ if ( password_field && password_verify_field && password_field.value == password_verify_field.value ) {
+ return true;
}
- ) );
- a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
- submit_event('conf','OnCancel');
+ else {
+ var password_error_cell = document.getElementById('error_' + $field_id);
+
+ if ( password_error_cell ) {
+ $(window).scrollTop($(password_field).position().top - 15);
+ password_error_cell.innerHTML = '<inp2:m_Phrase name="la_error_PasswordMatch"/>';
+ }
+
+ return false;
}
- ) );
+ }
- a_toolbar.Render();
- </script>
- </td>
- </tr>
-</tbody>
+ function toggle_section($label) {
+ var $table = document.getElementById('config_table');
+ var $row = null;
+ var $is_visible = false;
+
+ for (var $i = 0; $i < $table.rows.length; $i++) {
+ $row = $table.rows[$i];
+ if ( $row.getAttribute('header_label') != $label ) {
+ continue;
+ }
+
+ if ( !$row.style.display ) {
+ $row.style.display = document.all ? 'block' : 'table-row';
+ }
+
+ $is_visible = !($row.style.display == 'none');
+ $row.style.display = $is_visible ? 'none' : (document.all ? 'block' : 'table-row');
+
+ document.getElementById('toggle_mark[' + $label + ']').innerHTML = '[' + ($is_visible ? '+' : '-') + ']';
+ }
+ }
+
+ var a_toolbar = new ToolBar();
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'select',
+ '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>',
+ function() {
+ submit_event('conf','<inp2:conf_SaveEvent/>');
+ }
+ )
+ );
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'cancel',
+ '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>',
+ function() {
+ submit_event('conf','OnCancel');
+ }
+ )
+ );
+
+ <inp2:m_ModuleInclude template = "config/custom_toolbar"/>
+
+ a_toolbar.Render();
+ </script>
+ </td>
+ </tr>
+ </tbody>
</table>
<inp2:m_include t="incs/config_blocks"/>
<inp2:m_RenderElement name="config_updated_notice"/>
<inp2:conf_SaveWarning name="grid_save_warning"/>
<table width="100%" border="0" cellspacing="0" cellpadding="4" class="bordered" id="config_table">
<!-- module root category selector: begin -->
<tr class="subsectiontitle">
<td colspan="2">
<inp2:m_phrase name="la_Text_RootCategory" />
</td>
<td align="right">
<a class="config-header" href="javascript:toggle_section('la_Text_RootCategory');" id="toggle_mark[la_Text_RootCategory]" title="Collapse/Expand Section">[-]</a>
</td>
</tr>
<tr class="<inp2:m_odd_even odd="table-color1" even="table-color2"/>" header_label="la_Text_RootCategory">
<td>
<span class="text"><inp2:m_phrase name="la_prompt_RootCategory" /></span>
</td>
<td>
<inp2:m_DefineElement name="category_caption">
<inp2:m_ifnot check="m_Param" name="is_first">
<inp2:m_param name="separator"/>
</inp2:m_ifnot>
<inp2:m_param name="cat_name"/>
</inp2:m_DefineElement>
<b><inp2:conf_CategoryPath separator=" &gt; " render_as="category_caption" /></b>
<input type="hidden" name="conf[ModuleRootCategory][VariableValue]" value="<inp2:conf_ModuleRootCategory/>"/>
<a href="javascript:openSelector('conf', '<inp2:adm_SelectorLink prefix="conf" selection_mode="single" tab_prefixes="none"/>', 'ModuleRootCategory', '950x600');"><img src="img/icons/icon24_cat.gif" border="0" align="absmiddle" /></a>
</td>
<td class="error">&nbsp;</td>
</tr>
<!-- module root category selector: end -->
<inp2:conf_PrintList block="config_block" per_page="-1" full_block="config_block" half_block1="config_block1" half_block2="config_block2" value_render_as="cf_default_value"/>
</table>
<script type="text/javascript">
<inp2:m_if check="m_Get" name="refresh_tree">
getFrame('menu').location.reload();
</inp2:m_if>
<inp2:m_if check="m_Get" name="refresh_all">
var $menu_frame = getFrame('menu');
$menu_frame.parent.location.href = $menu_frame.parent.location.href;
</inp2:m_if>
+
+ Application.setHook(
+ 'conf:*',
+ function ($event) {
+ $event.status = $event.Name == 'OnCancel' ? true : validate_password_fields();
+ }
+ );
</script>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/5.2.x/core/admin_templates/config/config_universal.tpl
===================================================================
--- branches/5.2.x/core/admin_templates/config/config_universal.tpl (revision 14964)
+++ branches/5.2.x/core/admin_templates/config/config_universal.tpl (revision 14965)
@@ -1,118 +1,127 @@
<inp2:m_include t="incs/header"/>
<inp2:conf_InitList name="Default" per_page="-1"/>
<inp2:m_Get name="section" result_to_var="section"/>
<inp2:m_RenderElement name="combined_header" prefix="conf" section="$section" title_preset="section_label" perm_event="conf:OnLoad"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
-<tbody>
- <tr>
- <td>
- <script type="text/javascript">
- function ValidatePassFld(fieldId) {
- var passFld=document.getElementById(fieldId);
- var passVerifyFld=document.getElementById('verify_'+fieldId);
- if (passFld && passVerifyFld && passFld.value == passVerifyFld.value) {
- return true;
- }
- else {
- var passErrorCell=document.getElementById('error_'+fieldId);
- if (passErrorCell){
- passErrorCell.innerHTML='<inp2:m_phrase name="la_error_PasswordMatch" />';
- }
- return false;
- }
- }
-
- function ValidatePassFields() {
- var el=false;
- var validated=true;
- for (var i=0; i<document.forms.kernel_form.elements.length; i++){
- el=document.forms.kernel_form.elements[i];
- if (el.getAttribute('primarytype')=='password'){
- if (!ValidatePassFld(el.id)){
- validated=false;
- }
- }
- }
- return validated;
- }
-
- function toggle_section($label) {
- var $table = document.getElementById('config_table');
- var $row = null;
- var $is_visible = false;
-
- for (var $i = 0; $i < $table.rows.length; $i++) {
- $row = $table.rows[$i];
- if ($row.getAttribute('header_label') != $label) {
- continue;
- }
-
- if (!$row.style.display) {
- $row.style.display = document.all ? 'block' : 'table-row';
- }
-
- $is_visible = !($row.style.display == 'none');
- $row.style.display = $is_visible ? 'none' : (document.all ? 'block' : 'table-row');
-
- document.getElementById('toggle_mark['+$label+']').innerHTML = '[' + ($is_visible ? '+' : '-') + ']';
- }
- }
-
- var a_toolbar = new ToolBar();
-
- a_toolbar.AddButton(
- new ToolBarButton(
- 'select',
- '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>',
- function() {
- if (ValidatePassFields()) {
- submit_event('conf', '<inp2:conf_SaveEvent/>');
+ <tbody>
+ <tr>
+ <td>
+ <script type="text/javascript">
+ function validate_password_fields() {
+ var $validated = true;
+
+ $("input[primarytype='password']", '#' + $form_name).each(
+ function ($e) {
+ if ( !validate_password_field(this.id) ) {
+ $validated = false;
+ }
+ }
+ );
+
+ return $validated;
+ }
+
+ function validate_password_field($field_id) {
+ var password_field = document.getElementById($field_id),
+ password_verify_field = document.getElementById('verify_' + $field_id);
+
+ if ( password_field && password_verify_field && password_field.value == password_verify_field.value ) {
+ return true;
+ }
+ else {
+ var password_error_cell = document.getElementById('error_' + $field_id);
+
+ if ( password_error_cell ) {
+ $(window).scrollTop($(password_field).position().top - 15);
+ password_error_cell.innerHTML = '<inp2:m_Phrase name="la_error_PasswordMatch"/>';
}
+
+ return false;
}
- )
- );
+ }
+
+ function toggle_section($label) {
+ var $row = null,
+ $is_visible = false,
+ $table = document.getElementById('config_table');
+
+ for (var $i = 0; $i < $table.rows.length; $i++) {
+ $row = $table.rows[$i];
+ if ( $row.getAttribute('header_label') != $label ) {
+ continue;
+ }
- a_toolbar.AddButton(
- new ToolBarButton(
- 'cancel',
- '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>',
- function() {
- submit_event('conf', 'OnCancel');
+ if ( !$row.style.display ) {
+ $row.style.display = document.all ? 'block' : 'table-row';
+ }
+
+ $is_visible = !($row.style.display == 'none');
+ $row.style.display = $is_visible ? 'none' : (document.all ? 'block' : 'table-row');
+
+ document.getElementById('toggle_mark[' + $label + ']').innerHTML = '[' + ($is_visible ? '+' : '-') + ']';
}
- )
- );
+ }
+
+ var a_toolbar = new ToolBar();
+
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'select',
+ '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>',
+ function () {
+ submit_event('conf', '<inp2:conf_SaveEvent/>');
+ }
+ )
+ );
- <inp2:m_ModuleInclude template="config/custom_toolbar"/>
+ a_toolbar.AddButton(
+ new ToolBarButton(
+ 'cancel',
+ '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>',
+ function () {
+ submit_event('conf', 'OnCancel');
+ }
+ )
+ );
- a_toolbar.Render();
- </script>
- </td>
- </tr>
-</tbody>
+ <inp2:m_ModuleInclude template = "config/custom_toolbar"/>
+
+ a_toolbar.Render();
+ </script>
+ </td>
+ </tr>
+ </tbody>
</table>
<inp2:m_include t="incs/config_blocks"/>
<inp2:m_RenderElement name="config_updated_notice"/>
<inp2:conf_SaveWarning name="grid_save_warning"/>
<table width="100%" border="0" cellspacing="0" cellpadding="4" class="bordered" id="config_table">
<inp2:conf_PrintList list_name="default" block="config_block" full_block="config_block" half_block1="config_block1" half_block2="config_block2" value_render_as="cf_default_value"/>
</table>
<script type="text/javascript">
<inp2:m_if check="m_Get" name="refresh_tree">
getFrame('menu').location.reload();
</inp2:m_if>
<inp2:m_if check="m_Get" name="refresh_all">
var $menu_frame = getFrame('menu');
$menu_frame.parent.location.href = $menu_frame.parent.location.href;
</inp2:m_if>
+
+ Application.setHook(
+ 'conf:*',
+ function ($event) {
+ $event.status = $event.Name == 'OnCancel' ? true : validate_password_fields();
+ }
+ );
</script>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file

Event Timeline