diff --git a/pandora_console/include/chart_generator.php b/pandora_console/include/chart_generator.php
index 6ca2caa53b..fe356b737c 100644
--- a/pandora_console/include/chart_generator.php
+++ b/pandora_console/include/chart_generator.php
@@ -83,6 +83,7 @@ if (check_login(false) === false) {
+
@@ -140,6 +141,7 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
")
- .addClass("arrow")
- .addClass(feedback.vertical)
- .addClass(feedback.horizontal)
- .appendTo(this);
- }
- }
- });
- $(this).tooltip("open");
-
- var element = $(this);
- setTimeout(
- function(element) {
- element.tooltip("destroy");
- element.removeAttr("title");
- },
- 3000,
- element
- );
-
- flagError = true;
- }
-
- if (this.type == "file") {
- if ($(this).prop("files")[0]) {
- formdata.append(this.name, $(this).prop("files")[0]);
- }
- } else {
- if ($(this).attr("type") == "checkbox") {
- if (this.checked) {
- formdata.append(this.name, "on");
- }
- } else {
- formdata.append(this.name, $(this).val());
- }
- }
- });
-
- if (flagError === false) {
- $.ajax({
- method: "post",
- url: settings.url,
- processData: false,
- contentType: false,
- data: formdata,
- dataType: settings.onsubmit.dataType,
- success: function(data) {
- if (settings.ajax_callback != undefined) {
- if (settings.idMsgCallback != undefined) {
- settings.ajax_callback(data, settings.idMsgCallback);
- } else {
- settings.ajax_callback(data);
- }
- }
- AJAX_RUNNING = 0;
- }
- });
- } else {
- AJAX_RUNNING = 0;
- }
- } else {
- // No onsumbit configured. Directly close.
- $(this).dialog("close");
- }
- },
- error: function(data) {
- // console.log(data);
- AJAX_RUNNING = 0;
- }
- });
- }
-
- $.ajax({
- method: "post",
- url: settings.url,
- processData: false,
- contentType: false,
- data: data,
- success: function(data) {
- settings.target.html(data);
- if (settings.onload != undefined) {
- settings.onload(data);
- }
- settings.target.dialog({
- resizable: true,
- draggable: true,
- modal: true,
- title: settings.modal.title,
- width: width,
- overlay: settings.modal.overlay,
- buttons: required_buttons,
- closeOnEscape: false,
- open: function() {
- $(".ui-dialog-titlebar-close").hide();
- },
- close: function() {
- if (id_modal_target != undefined) {
- $(id_modal_target).remove();
- }
- }
- });
- },
- error: function(data) {
- // console.log(data);
- }
- });
-}
-
-//Function that shows a dialog box to confirm closures of generic manners. The modal id is random
-function confirmDialog(settings) {
- var randomStr = uniqId();
-
- $("body").append(
- '
' + settings.message + "
"
- );
- $("#confirm_" + randomStr);
- $("#confirm_" + randomStr)
- .dialog({
- title: settings.title,
- close: false,
- width: 350,
- modal: true,
- buttons: [
- {
- text: "Cancel",
- class:
- "ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
- click: function() {
- $(this).dialog("close");
- if (typeof settings.onDeny == "function") settings.onDeny();
- }
- },
- {
- text: "Ok",
- class:
- "ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
- click: function() {
- $(this).dialog("close");
- if (typeof settings.onAccept == "function") settings.onAccept();
- }
- }
- ]
- })
- .show();
-}
-
function uniqId() {
var randomStr =
Math.random()
@@ -2174,58 +1838,6 @@ function uniqId() {
return randomStr;
}
-/**
- * Function to show modal with message Validation.
- *
- * @param {json} data Json example:
- * $return = [
- * 'error' => 0 or 1,
- * 'title' => [
- * Failed,
- * Success,
- * ],
- * 'text' => [
- * Failed,
- * Success,
- * ],
- *];
- * @param {string} idMsg ID div charge modal.
- *
- * @return {void}
- */
-function generalShowMsg(data, idMsg) {
- var title = data.title[data.error];
- var text = data.text[data.error];
- var failed = !data.error;
-
- $("#" + idMsg).empty();
- $("#" + idMsg).html(text);
- $("#" + idMsg).dialog({
- width: 450,
- position: {
- my: "center",
- at: "center",
- of: window,
- collision: "fit"
- },
- title: title,
- buttons: [
- {
- class:
- "ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
- text: "OK",
- click: function(e) {
- if (!failed) {
- $(".ui-dialog-content").dialog("close");
- } else {
- $(this).dialog("close");
- }
- }
- }
- ]
- });
-}
-
/**
* Function for AJAX request.
*
diff --git a/pandora_console/include/javascript/pandora_ui.js b/pandora_console/include/javascript/pandora_ui.js
new file mode 100644
index 0000000000..37f91e7950
--- /dev/null
+++ b/pandora_console/include/javascript/pandora_ui.js
@@ -0,0 +1,399 @@
+/* global $ */
+/* exported load_modal */
+/*JS to Show user modals :
+ - Confirm dialogs.
+ - Display dialogs.
+ - Load modal windows.
+ - Logo Previews.
+ - General show messages.
+*/
+
+var ENTERPRISE_DIR = "enterprise";
+
+/**
+ * Display a dialog with an image
+ *
+ * @param {string} icon_name The name of the icon you will display
+ * @param {string} icon_path The path to the icon
+ * @param {Object} incoming_options All options
+ * grayed: {bool} True to display the background black
+ * title {string} 'Logo preview' by default
+ */
+function logo_preview(icon_name, icon_path, incoming_options) {
+ // Get the options
+ options = {
+ grayed: false,
+ title: "Logo preview"
+ };
+ $.extend(options, incoming_options);
+
+ if (icon_name == "") return;
+
+ $dialog = $("
");
+ $image = $('

');
+ $image.css("max-width", "500px").css("max-height", "500px");
+
+ try {
+ $dialog
+ .hide()
+ .html($image)
+ .dialog({
+ title: options.title,
+ resizable: true,
+ draggable: true,
+ modal: true,
+ dialogClass: options.grayed ? "dialog-grayed" : "",
+ overlay: {
+ opacity: 0.5,
+ background: "black"
+ },
+ minHeight: 1,
+ width: $image.width,
+ close: function() {
+ $dialog.empty().remove();
+ }
+ })
+ .show();
+ } catch (err) {
+ // console.log(err);
+ }
+}
+
+// Advanced Form control.
+function load_modal(settings) {
+ var AJAX_RUNNING = 0;
+ var data = new FormData();
+ if (settings.extradata) {
+ settings.extradata.forEach(function(item) {
+ if (item.value != undefined) data.append(item.name, item.value);
+ });
+ }
+ data.append("page", settings.onshow.page);
+ data.append("method", settings.onshow.method);
+ if (settings.onshow.extradata != undefined) {
+ data.append("extradata", JSON.stringify(settings.onshow.extradata));
+ }
+
+ if (settings.target == undefined) {
+ var uniq = uniqId();
+ var div = document.createElement("div");
+ div.id = "div-modal-" + uniq;
+ div.style.display = "none";
+
+ document.getElementById("main").append(div);
+
+ var id_modal_target = "#div-modal-" + uniq;
+
+ settings.target = $(id_modal_target);
+ }
+
+ var width = 630;
+ if (settings.onshow.width) {
+ width = settings.onshow.width;
+ }
+
+ if (settings.modal.overlay == undefined) {
+ settings.modal.overlay = {
+ opacity: 0.5,
+ background: "black"
+ };
+ }
+
+ settings.target.html("Loading modal...");
+ settings.target
+ .dialog({
+ title: "Loading",
+ close: false,
+ width: 200,
+ buttons: []
+ })
+ .show();
+ var required_buttons = [];
+ if (settings.modal.cancel != undefined) {
+ //The variable contains a function
+ // that is responsible for executing the method it receives from settings
+ // which confirms the closure of a modal
+ var cancelModal = function() {
+ settings.target.dialog("close");
+ if (AJAX_RUNNING) return;
+ AJAX_RUNNING = 1;
+ var formdata = new FormData();
+
+ formdata.append("page", settings.oncancel.page);
+ formdata.append("method", settings.oncancel.method);
+
+ $.ajax({
+ method: "post",
+ url: settings.url,
+ processData: false,
+ contentType: false,
+ data: formdata,
+ success: function(data) {
+ if (typeof settings.oncancel.callback == "function") {
+ settings.oncancel.callback(data);
+ settings.target.dialog("close");
+ }
+ AJAX_RUNNING = 0;
+ },
+ error: function(data) {
+ // console.log(data);
+ AJAX_RUNNING = 0;
+ }
+ });
+ };
+
+ required_buttons.push({
+ class:
+ "ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
+ text: settings.modal.cancel,
+ click: function() {
+ if (settings.oncancel != undefined) {
+ if (typeof settings.oncancel.confirm == "function") {
+ //receive function
+ settings.oncancel.confirm(cancelModal);
+ } else if (settings.oncancel != undefined) {
+ cancelModal();
+ }
+ } else {
+ $(this).dialog("close");
+ }
+ }
+ });
+ }
+
+ if (settings.modal.ok != undefined) {
+ required_buttons.push({
+ class:
+ "ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
+ text: settings.modal.ok,
+ click: function() {
+ if (AJAX_RUNNING) return;
+
+ if (settings.onsubmit != undefined) {
+ if (settings.onsubmit.preaction != undefined) {
+ settings.onsubmit.preaction();
+ }
+ AJAX_RUNNING = 1;
+ if (settings.onsubmit.dataType == undefined) {
+ settings.onsubmit.dataType = "html";
+ }
+
+ var formdata = new FormData();
+ if (settings.extradata) {
+ settings.extradata.forEach(function(item) {
+ if (item.value != undefined)
+ formdata.append(item.name, item.value);
+ });
+ }
+ formdata.append("page", settings.onsubmit.page);
+ formdata.append("method", settings.onsubmit.method);
+
+ var flagError = false;
+
+ $("#" + settings.form + " :input").each(function() {
+ if (this.checkValidity() === false) {
+ $(this).attr("title", this.validationMessage);
+ $(this).tooltip({
+ tooltipClass: "uitooltip",
+ position: {
+ my: "right bottom",
+ at: "right top",
+ using: function(position, feedback) {
+ $(this).css(position);
+ $("
")
+ .addClass("arrow")
+ .addClass(feedback.vertical)
+ .addClass(feedback.horizontal)
+ .appendTo(this);
+ }
+ }
+ });
+ $(this).tooltip("open");
+
+ var element = $(this);
+ setTimeout(
+ function(element) {
+ element.tooltip("destroy");
+ element.removeAttr("title");
+ },
+ 3000,
+ element
+ );
+
+ flagError = true;
+ }
+
+ if (this.type == "file") {
+ if ($(this).prop("files")[0]) {
+ formdata.append(this.name, $(this).prop("files")[0]);
+ }
+ } else {
+ if ($(this).attr("type") == "checkbox") {
+ if (this.checked) {
+ formdata.append(this.name, "on");
+ }
+ } else {
+ formdata.append(this.name, $(this).val());
+ }
+ }
+ });
+
+ if (flagError === false) {
+ $.ajax({
+ method: "post",
+ url: settings.url,
+ processData: false,
+ contentType: false,
+ data: formdata,
+ dataType: settings.onsubmit.dataType,
+ success: function(data) {
+ if (settings.ajax_callback != undefined) {
+ if (settings.idMsgCallback != undefined) {
+ settings.ajax_callback(data, settings.idMsgCallback);
+ } else {
+ settings.ajax_callback(data);
+ }
+ }
+ AJAX_RUNNING = 0;
+ }
+ });
+ } else {
+ AJAX_RUNNING = 0;
+ }
+ } else {
+ // No onsumbit configured. Directly close.
+ $(this).dialog("close");
+ }
+ },
+ error: function(data) {
+ // console.log(data);
+ AJAX_RUNNING = 0;
+ }
+ });
+ }
+
+ $.ajax({
+ method: "post",
+ url: settings.url,
+ processData: false,
+ contentType: false,
+ data: data,
+ success: function(data) {
+ settings.target.html(data);
+ if (settings.onload != undefined) {
+ settings.onload(data);
+ }
+ settings.target.dialog({
+ resizable: true,
+ draggable: true,
+ modal: true,
+ title: settings.modal.title,
+ width: width,
+ overlay: settings.modal.overlay,
+ buttons: required_buttons,
+ closeOnEscape: false,
+ open: function() {
+ $(".ui-dialog-titlebar-close").hide();
+ },
+ close: function() {
+ if (id_modal_target != undefined) {
+ $(id_modal_target).remove();
+ }
+ }
+ });
+ },
+ error: function(data) {
+ // console.log(data);
+ }
+ });
+}
+
+//Function that shows a dialog box to confirm closures of generic manners. The modal id is random
+function confirmDialog(settings) {
+ var randomStr = uniqId();
+
+ $("body").append(
+ '
' + settings.message + "
"
+ );
+ $("#confirm_" + randomStr);
+ $("#confirm_" + randomStr)
+ .dialog({
+ title: settings.title,
+ close: false,
+ width: 350,
+ modal: true,
+ buttons: [
+ {
+ text: "Cancel",
+ class:
+ "ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
+ click: function() {
+ $(this).dialog("close");
+ if (typeof settings.onDeny == "function") settings.onDeny();
+ }
+ },
+ {
+ text: "Ok",
+ class:
+ "ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
+ click: function() {
+ $(this).dialog("close");
+ if (typeof settings.onAccept == "function") settings.onAccept();
+ }
+ }
+ ]
+ })
+ .show();
+}
+
+/**
+ * Function to show modal with message Validation.
+ *
+ * @param {json} data Json example:
+ * $return = [
+ * 'error' => 0 or 1,
+ * 'title' => [
+ * Failed,
+ * Success,
+ * ],
+ * 'text' => [
+ * Failed,
+ * Success,
+ * ],
+ *];
+ * @param {string} idMsg ID div charge modal.
+ *
+ * @return {void}
+ */
+function generalShowMsg(data, idMsg) {
+ var title = data.title[data.error];
+ var text = data.text[data.error];
+ var failed = !data.error;
+
+ $("#" + idMsg).empty();
+ $("#" + idMsg).html(text);
+ $("#" + idMsg).dialog({
+ width: 450,
+ position: {
+ my: "center",
+ at: "center",
+ of: window,
+ collision: "fit"
+ },
+ title: title,
+ buttons: [
+ {
+ class:
+ "ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
+ text: "OK",
+ click: function(e) {
+ if (!failed) {
+ $(".ui-dialog-content").dialog("close");
+ } else {
+ $(this).dialog("close");
+ }
+ }
+ }
+ ]
+ });
+}
diff --git a/pandora_console/mobile/include/ui.class.php b/pandora_console/mobile/include/ui.class.php
index ff411a86e0..87954cf96e 100755
--- a/pandora_console/mobile/include/ui.class.php
+++ b/pandora_console/mobile/include/ui.class.php
@@ -775,6 +775,7 @@ class Ui
echo " \n";
echo " \n";
echo " \n";
+ echo " \n";
echo " \n";
echo " \n";
diff --git a/pandora_console/operation/agentes/realtime_win.php b/pandora_console/operation/agentes/realtime_win.php
index 5223a4bb2e..93c8c85ea2 100644
--- a/pandora_console/operation/agentes/realtime_win.php
+++ b/pandora_console/operation/agentes/realtime_win.php
@@ -65,6 +65,7 @@ echo '
+
diff --git a/pandora_console/operation/agentes/stat_win.php b/pandora_console/operation/agentes/stat_win.php
index 05fd4c7c4b..c558530459 100644
--- a/pandora_console/operation/agentes/stat_win.php
+++ b/pandora_console/operation/agentes/stat_win.php
@@ -73,6 +73,7 @@ $label = db_get_value('nombre', 'tagente_modulo', 'id_agente_modulo', $id)
+