From a1c925f9c924f55f9dc39f840a9e23a62d4b1af1 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Tue, 30 Oct 2012 15:38:12 -0400
Subject: [PATCH] Implemented: - Show status messages to clients as long as the datalog is not processed (changes pending...) - missing: - template code in templates other than database list - language entries other than web_database, web_domain, web_database_user
---
interface/web/sites/templates/database_list.htm | 16 ++++++++
interface/lib/lang/en.lng | 12 ++++++
interface/lib/lang/de.lng | 13 ++++++
interface/lib/app.inc.php | 6 +++
interface/lib/classes/db_mysql.inc.php | 22 +++++++++++
interface/web/themes/default/css/styles.css | 3 +
6 files changed, 71 insertions(+), 1 deletions(-)
diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index 71566e6..e0b237b 100755
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -213,6 +213,12 @@
$this->tpl->setVar('app_title', $this->_conf['app_title']);
if(isset($_SESSION['s']['user'])) {
$this->tpl->setVar('app_version', $this->_conf['app_version']);
+ // get pending datalog changes
+ $datalog = $this->db->datalogStatus();
+ $this->tpl->setVar('datalog_changes_txt', $this->lng('datalog_changes_txt'));
+ $this->tpl->setVar('datalog_changes_end_txt', $this->lng('datalog_changes_end_txt'));
+ $this->tpl->setVar('datalog_changes_count', $datalog['count']);
+ $this->tpl->setLoop('datalog_changes', $datalog['entries']);
} else {
$this->tpl->setVar('app_version', '');
}
diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php
index 1a6cc22..5b50efe 100644
--- a/interface/lib/classes/db_mysql.inc.php
+++ b/interface/lib/classes/db_mysql.inc.php
@@ -317,6 +317,28 @@
return true;
}
+
+ //* get the current datalog status for the specified login (or currently logged in user)
+ public function datalogStatus($login = '') {
+ global $app;
+
+ $return = array('count' => 0, 'entries' => array());
+ if($_SESSION['s']['user']['typ'] == 'admin') return $return; // these information should not be displayed to admin users
+
+ if($login == '' && isset($_SESSION['s']['user'])) {
+ $login = $_SESSION['s']['user']['username'];
+ }
+
+ $result = $this->queryAllRecords("SELECT COUNT( * ) AS cnt, sys_datalog.action, sys_datalog.dbtable FROM sys_datalog, server WHERE server.server_id = sys_datalog.server_id AND sys_datalog.user = '" . $this->quote($login) . "' AND sys_datalog.datalog_id > server.updated GROUP BY sys_datalog.dbtable, sys_datalog.action");
+ foreach($result as $row) {
+ if(!$row['dbtable']) continue;
+ $return['entries'][] = array('table' => $row['dbtable'], 'action' => $row['action'], 'count' => $row['cnt'], 'text' => $app->lng('datalog_status_' . $row['action'] . '_' . $row['dbtable']));
+ $return['count'] += 1;
+ }
+ unset($result);
+
+ return $return;
+ }
public function freeResult($query)
diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng
index 5527584..3fe857d 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -80,5 +80,18 @@
$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.";
+
+$wb['datalog_changes_txt'] = 'Folgende Änderungen wurden noch nicht auf alle Server übernommen:';
+$wb['datalog_changes_end_txt'] = 'Die Übernahme der Änderungen kann bis zu 1 Minute in Anspruch nehmen.';
+$wb['datalog_status_i_web_database'] = 'Neue Datenbank anlegen';
+$wb['datalog_status_u_web_database'] = 'Datenbank ändern';
+$wb['datalog_status_d_web_database'] = 'Datenbank löschen';
+$wb['datalog_status_i_web_database_user'] = 'Datenbank-Benutzer für Datenbank anlegen';
+$wb['datalog_status_u_web_database_user'] = 'Datenbank-Benutzer ändern';
+$wb['datalog_status_d_web_database_user'] = 'Datenbank-Benutzer löschen';
+$wb['datalog_status_i_web_domain'] = 'Neue Webseite anlegen';
+$wb['datalog_status_u_web_domain'] = 'Webseiten-Einstellungen ändern';
+$wb['datalog_status_d_web_domain'] = 'Webseite löschen';
+
?>
diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng
index 09b692b..b2066ed 100644
--- a/interface/lib/lang/en.lng
+++ b/interface/lib/lang/en.lng
@@ -80,4 +80,16 @@
$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.';
+
+$wb['datalog_changes_txt'] = 'The following changes are not yet populated to all servers:';
+$wb['datalog_changes_end_txt'] = 'Storing updates can take up to one minute. Please be patient.';
+$wb['datalog_status_i_web_database'] = 'Create new database';
+$wb['datalog_status_u_web_database'] = 'Update database';
+$wb['datalog_status_d_web_database'] = 'Delete database';
+$wb['datalog_status_i_web_database_user'] = 'Create database user for database';
+$wb['datalog_status_u_web_database_user'] = 'Update database user';
+$wb['datalog_status_d_web_database_user'] = 'Delete database user';
+$wb['datalog_status_i_web_domain'] = 'Create new website';
+$wb['datalog_status_u_web_domain'] = 'Update website settings';
+$wb['datalog_status_d_web_domain'] = 'Delete website';
?>
diff --git a/interface/web/sites/templates/database_list.htm b/interface/web/sites/templates/database_list.htm
index bcd9209..50e450f 100644
--- a/interface/web/sites/templates/database_list.htm
+++ b/interface/web/sites/templates/database_list.htm
@@ -4,6 +4,22 @@
<div class="panel panel_list_database">
<div class="pnl_toolsarea">
+ <tmpl_if name='datalog_changes_count' op='>' value='0'>
+ <div>
+ <div class="systemmonitor-state state-info">
+ <div class="status"></div>
+ <div class="statusMsg">
+ {tmpl_var name="datalog_changes_txt"}
+ <ul>
+ <tmpl_loop name="datalog_changes">
+ <li><strong>{tmpl_var name="text"}:</strong> {tmpl_var name="count"}</li>
+ </tmpl_loop>
+ </ul>
+ {tmpl_var name="datalog_changes_end_txt"}
+ </div>
+ </div><br />
+ </div>
+ </tmpl_if>
<fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
<div class="buttons">
<button class="button iconstxt icoAdd" type="button" onclick="loadContent('sites/database_edit.php');">
diff --git a/interface/web/themes/default/css/styles.css b/interface/web/themes/default/css/styles.css
index a2e7fb1..d860a89 100644
--- a/interface/web/themes/default/css/styles.css
+++ b/interface/web/themes/default/css/styles.css
@@ -1786,4 +1786,5 @@
.ui-combobox { position: relative; display: inline-block; margin-right: 17px; }
.ui-combobox-toggle { position: absolute !important; top: 0; bottom: 0; margin-left: -1px; padding: 1px !important; background: none repeat scroll 0 0 #FFFFFF !important; border: 1px solid #DFDFDF !important;}
.ui-combobox-input { background: none repeat scroll 0 0 #FFFFFF !important; border: 1px solid #DFDFDF !important; padding: 1px; font-weight: normal !important; }
-.panel_install_package .ui-combobox { float: left; }
\ No newline at end of file
+.panel_install_package .ui-combobox { float: left; }
+.clear-float { clear: both; }
\ No newline at end of file
--
Gitblit v1.9.1