Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1068011
in-portal
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Jul 16, 7:30 AM
Size
21 KB
Mime Type
text/x-diff
Expires
Fri, Jul 18, 7:30 AM (8 h, 7 m)
Engine
blob
Format
Raw Data
Handle
691088
Attached To
rINP In-Portal
in-portal
View Options
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="" />
<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>
</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"> *</span></inp2:m_if>:<inp2:m_if check="Field" name="HintLabel"><span> <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"/> </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"/> </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=" > " 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"> </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
Log In to Comment