From 73ec6bfbfbfb5a03162777632a77c05093d92549 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Fri, 24 Aug 2012 08:51:46 -0400
Subject: [PATCH] Fixed theme paths Implemented: FS#2388 - Optional confirm window on changing tabs
---
interface/web/admin/lib/lang/en_system_config.lng | 3 +
interface/web/index.php | 15 +++++++
interface/web/themes/default/templates/main.tpl.htm | 2 +
interface/lib/lang/en.lng | 2 +
interface/web/admin/lib/lang/de_system_config.lng | 3 +
interface/lib/lang/de.lng | 2 +
interface/web/themes/default/templates/tabbed_form.tpl.htm | 4 +-
interface/web/admin/form/system_config.tform.php | 12 ++++++
interface/web/admin/templates/system_config_misc_edit.htm | 12 ++++++
interface/web/js/scrigo.js.php | 37 +++++++++++++++++-
10 files changed, 88 insertions(+), 4 deletions(-)
diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng
index 9044fac..050fbb2 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -77,4 +77,6 @@
$wb['globalsearch_noresults_limit_txt'] = '0 Treffer';
$wb['globalsearch_searchfield_watermark_txt'] = 'Suche';
$wb['globalsearch_suggestions_text_txt'] = 'Vorschläge';
+$wb['global_tabchange_warning_txt'] = 'Die Eingaben in diesem Tab werden gespeichert, wenn Sie OK klicken, bei Abbrechen werden die Änderungen verworfen.';
+$wb['global_tabchange_discard_txt'] = 'Achtung, Sie haben ungespeicherte Änderungen in diesem Tab. Wenn Sie fortfahren werden die Änderungen verworfen.';
?>
diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng
index ea7ab52..aad4f5c 100644
--- a/interface/lib/lang/en.lng
+++ b/interface/lib/lang/en.lng
@@ -77,4 +77,6 @@
$wb['globalsearch_noresults_limit_txt'] = "0 results";
$wb['globalsearch_searchfield_watermark_txt'] = "Search";
$wb['globalsearch_suggestions_text_txt'] = "Suggestions";
+$wb['global_tabchange_warning_txt'] = 'Changed data in this tab will be changed if you press OK. On cancel they will be discarded.';
+$wb['global_tabchange_discard_txt'] = 'You have unsaved changes in this tab. Changes will be discarded if you continue.';
?>
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index efabdd0..1317bf7 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -334,6 +334,18 @@
'default' => '',
'value' => ''
),
+ 'tab_change_discard' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'tab_change_warning' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
'maintenance_mode' => array (
'datatype' => 'VARCHAR',
'formtype' => 'CHECKBOX',
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index db46bfd..9e4782d 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -2,6 +2,9 @@
$wb['system_config_desc_txt'] = '';
$wb['smtp_missing_admin_mail_txt'] = 'Bitte geben Sie die Administrator E-Mail und den Namen ein, wenn Sie SMTP Versand nutzen wollen.';
$wb['warning'] = 'Bearbeiten Sie diese Werte sorgfältig! Entfernen Sie die Prefixe nicht auf Systemen mit mehr als einem Client.';
+$wb['tab_change_warning_txt'] = 'Tab-Wechsel-Warnung';
+$wb['tab_change_discard_txt'] = 'Verwerfe Änderungen bei Tab-Wechsel';
+$wb['tab_change_warning_note_txt'] = 'Zeigt eine Warnung an, wenn der Tab in einem Formular gewechselt wird und Daten geändert wurden.';
$wb['dbname_prefix_txt'] = 'Datenbanknamen Prefix';
$wb['dbuser_prefix_txt'] = 'Datenbankbenutzer Prefix';
$wb['shelluser_prefix_txt'] = 'Shellbenutzer Prefix';
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 1e03f8b..b774dd0 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -5,6 +5,9 @@
$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
$wb["warning"] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.';
+$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
+$wb['tab_change_warning_txt'] = 'Tab change warning';
+$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data have been altered by the user.';
$wb["dbname_prefix_txt"] = 'Database name prefix';
$wb["dbuser_prefix_txt"] = 'Database user prefix';
$wb["shelluser_prefix_txt"] = 'Shell user prefix';
diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm
index 31350cd..dfb19eb 100644
--- a/interface/web/admin/templates/system_config_misc_edit.htm
+++ b/interface/web/admin/templates/system_config_misc_edit.htm
@@ -22,6 +22,18 @@
<input name="monitor_key" id="monitor_key" value="{tmpl_var name='monitor_key'}" size="" maxlength="" type="text" class="textInput" />
</div>
<div class="ctrlHolder">
+ <p class="label">{tmpl_var name='tab_change_discard_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='tab_change_discard'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='tab_change_warning_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='tab_change_warning'}<br/>{tmpl_var name='tab_change_warning_note_txt'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
<p class="label">{tmpl_var name='maintenance_mode_txt'}</p>
<div class="multiField">
{tmpl_var name='maintenance_mode'}
diff --git a/interface/web/index.php b/interface/web/index.php
index b131396..f0a9635 100644
--- a/interface/web/index.php
+++ b/interface/web/index.php
@@ -36,6 +36,21 @@
$app->uses('tpl');
$app->tpl->newTemplate('main.tpl.htm');
+// tab change warning?
+// read misc config
+$app->uses('getconf');
+$sys_config = $app->getconf->get_global_config('misc');
+if($sys_config['tab_change_warning'] == 'y') {
+ $app->tpl->setVar('tabchange_warning_enabled', 'y');
+ $app->tpl->setVar('global_tabchange_warning_txt', $app->lng('global_tabchange_warning_txt'));
+} else {
+ $app->tpl->setVar('tabchange_warning_enabled', 'n');
+}
+$app->tpl->setVar('tabchange_discard_enabled', $sys_config['tab_change_discard']);
+if($sys_config['tab_change_discard'] == 'y') {
+ $app->tpl->setVar('global_tabchange_discard_txt', $app->lng('global_tabchange_discard_txt'));
+}
+
$app->tpl_defaults();
$app->tpl->pparse();
?>
\ No newline at end of file
diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php
index b44ff10..e1ef2c3 100644
--- a/interface/web/js/scrigo.js.php
+++ b/interface/web/js/scrigo.js.php
@@ -4,7 +4,11 @@
$lang = (isset($_SESSION['s']['language']) && $_SESSION['s']['language'] != '')?$_SESSION['s']['language']:'en';
include_once(ISPC_ROOT_PATH.'/web/strengthmeter/lib/lang/'.$lang.'_strengthmeter.lng');
?>
-
+var pageFormChanged = false;
+var tabChangeWarningTxt = '';
+var tabChangeDiscardTxt = '';
+var tabChangeWarning = false;
+var tabChangeDiscard = false;
redirect = '';
function reportError(request) {
@@ -24,6 +28,7 @@
dataType: "html",
success: function(data, textStatus, jqXHR) {
jQuery('#pageContent').html(jqXHR.responseText);
+ pageFormChanged = false;
},
error: function() {
reportError('Ajax Request was not successful.'+pagename);
@@ -87,6 +92,7 @@
document.location.href = 'index.php';
} else {
jQuery('#pageContent').html(jqXHR.responseText);
+ pageFormChanged = false;
}
loadMenus();
},
@@ -118,6 +124,7 @@
//window.setTimeout('loadContent(redirect)', 1000);
} else {
jQuery('#pageContent').html(jqXHR.responseText);
+ pageFormChanged = false;
}
},
error: function(jqXHR, textStatus, errorThrown) {
@@ -150,6 +157,7 @@
//window.setTimeout('loadContent(redirect)', 1000);
} else {
jQuery('#pageContent').html(jqXHR.responseText);
+ pageFormChanged = false;
}
},
error: function(jqXHR, textStatus, errorThrown) {
@@ -202,8 +210,10 @@
}
function loadContent(pagename) {
+ var params = arguments[1];
var pageContentObject2 = jQuery.ajax({ type: "GET",
url: pagename,
+ data: (params ? params : null),
dataType: "html",
beforeSend: function() {
jQuery('#pageContent').html('<div id="ajaxloader"><img src="themes/default/images/ajax-loader.gif" /></div>');
@@ -222,6 +232,7 @@
//jQuery.each(reponseScript, function(idx, val) { eval(val.text); } );
jQuery('#pageContent').html(jqXHR.responseText);
+ pageFormChanged = false;
}
},
error: function() {
@@ -242,6 +253,7 @@
loadContent(parts[1]);
} else {
jQuery('#pageContent').html(jqXHR.responseText);
+ pageFormChanged = false;
}
},
error: function() {
@@ -293,7 +305,28 @@
function changeTab(tab,target) {
//document.forms[0].next_tab.value = tab;
document.pageForm.next_tab.value = tab;
- submitForm('pageForm',target);
+
+ var id = document.pageForm.id.value;
+ if(tabChangeDiscard == 'y') {
+ if(id && (pageFormChanged == false || window.confirm(tabChangeDiscardTxt))) {
+ var next_tab = tab;
+ loadContent(target, {'next_tab': next_tab, 'id': id});
+ } else {
+ return false;
+ }
+ } else {
+ if(id && tabChangeWarning == 'y' && pageFormChanged == true) {
+ if(window.confirm(tabChangeWarningTxt)) {
+ submitForm('pageForm', target);
+ } else {
+ var next_tab = tab;
+ var id = document.pageForm.id.value;
+ loadContent(target, {'next_tab': next_tab, 'id': id});
+ }
+ } else {
+ submitForm('pageForm',target);
+ }
+ }
}
function del_record(link,confirmation) {
diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm
index a96c876..9055b16 100644
--- a/interface/web/themes/default/templates/main.tpl.htm
+++ b/interface/web/themes/default/templates/main.tpl.htm
@@ -44,8 +44,10 @@
jQuery('.ttip').tipsy({live: true, gravity: 'ne', html: true});
+ tabChangeDiscard = '<tmpl_var name="tabchange_discard_enabled>';
tabChangeWarning = '<tmpl_var name="tabchange_warning_enabled>';
tabChangeWarningTxt = '<tmpl_var name="global_tabchange_warning_txt">';
+ tabChangeDiscardTxt = '<tmpl_var name="global_tabchange_discard_txt">';
});
diff --git a/interface/web/themes/default/templates/tabbed_form.tpl.htm b/interface/web/themes/default/templates/tabbed_form.tpl.htm
index 2890e1b..08002d5 100644
--- a/interface/web/themes/default/templates/tabbed_form.tpl.htm
+++ b/interface/web/themes/default/templates/tabbed_form.tpl.htm
@@ -5,9 +5,9 @@
<ul>
<tmpl_loop name="formTab">
<tmpl_if name="active">
- <li class="active"><a href="javascript:changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
+ <li class="active"><a href="#" onclick="return changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
<tmpl_else>
- <li><a href="javascript:changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
+ <li><a href="#" onclick="return changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
</tmpl_if>
</tmpl_loop>
</ul>
--
Gitblit v1.9.1