diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index 9044facf63e39e1293f5fc015fc6d25d8cbf6312..050fbb25f54f5c2b90ef209aa9defd96c9392c50 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -77,4 +77,6 @@ $wb['globalsearch_noresults_text_txt'] = 'Keine Treffer.'; $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 ea7ab52573aede162b37bf9e22e2047c9b46a731..aad4f5cc0407ca18cffd8db8f130be82ae91a962 100644 --- a/interface/lib/lang/en.lng +++ b/interface/lib/lang/en.lng @@ -77,4 +77,6 @@ $wb['globalsearch_noresults_text_txt'] = "No results."; $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 efabdd0ff574ed6146df61b5a3774ced17f03b1c..1317bf77ccdeb092717e4d519263b7c5267c3eab 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -334,6 +334,18 @@ $form["tabs"]['misc'] = array ( '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 db46bfd3863c67d839bf8296acf2e5d55263fe72..9e4782d9eead207441c8738426a67b492b79acf3 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 1e03f8bc604f756a3ea5d17c30bf9857c9b13b0f..b774dd0208b5f6d88abc846cb51d64e207f19cb8 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_admin_txt'] = 'Dashboard atom feed URL (admin)'; $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 31350cdb978fb1cdee8d34a613a29ef4b02403e9..dfb19eb5b7259444fc63a69cf024d3a975768a8a 100644 --- a/interface/web/admin/templates/system_config_misc_edit.htm +++ b/interface/web/admin/templates/system_config_misc_edit.htm @@ -21,6 +21,18 @@ +
+

{tmpl_var name='tab_change_discard_txt'}

+
+ {tmpl_var name='tab_change_discard'} +
+
+
+

{tmpl_var name='tab_change_warning_txt'}

+
+ {tmpl_var name='tab_change_warning'}
{tmpl_var name='tab_change_warning_note_txt'} +
+

{tmpl_var name='maintenance_mode_txt'}

diff --git a/interface/web/index.php b/interface/web/index.php index b131396cefd278356d747edf4d680b02855e398e..f0a9635eafdb07bc207512c7dfb5b3038a0deaa8 100644 --- a/interface/web/index.php +++ b/interface/web/index.php @@ -36,6 +36,21 @@ if(!isset($_SESSION['s']['module']['name'])) $_SESSION['s']['module']['name'] = $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 b44ff105958008d44f55878b78a9ff24ab1aad2c..e1ef2c346782ad8a2cd8271b7b39c4652accdee1 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 @@ function loadContentRefresh(pagename) { 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 @@ function submitLoginForm(formname) { document.location.href = 'index.php'; } else { jQuery('#pageContent').html(jqXHR.responseText); + pageFormChanged = false; } loadMenus(); }, @@ -118,6 +124,7 @@ function submitForm(formname,target) { //window.setTimeout('loadContent(redirect)', 1000); } else { jQuery('#pageContent').html(jqXHR.responseText); + pageFormChanged = false; } }, error: function(jqXHR, textStatus, errorThrown) { @@ -150,6 +157,7 @@ function submitFormConfirm(formname,target,confirmation) { //window.setTimeout('loadContent(redirect)', 1000); } else { jQuery('#pageContent').html(jqXHR.responseText); + pageFormChanged = false; } }, error: function(jqXHR, textStatus, errorThrown) { @@ -202,8 +210,10 @@ function submitUploadForm(formname,target) { } 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('
'); @@ -222,6 +232,7 @@ function loadContent(pagename) { //jQuery.each(reponseScript, function(idx, val) { eval(val.text); } ); jQuery('#pageContent').html(jqXHR.responseText); + pageFormChanged = false; } }, error: function() { @@ -242,6 +253,7 @@ function loadInitContent() { loadContent(parts[1]); } else { jQuery('#pageContent').html(jqXHR.responseText); + pageFormChanged = false; } }, error: function() { @@ -293,7 +305,28 @@ function loadMenus() { 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 a96c876772e173fccbbca66f4369fc58d2236042..9055b168c4e29fa9bfc3d00bf5913fb0b0dd4fdf 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 = ''; tabChangeWarningTxt = ''; + tabChangeDiscardTxt = ''; }); diff --git a/interface/web/themes/default/templates/tabbed_form.tpl.htm b/interface/web/themes/default/templates/tabbed_form.tpl.htm index 2890e1b17af580cac175483bc62752a716ee6e71..08002d5282c918377fac880c45db6ba926bbc5e6 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 @@
    -
  • +
  • -
  • +