diff --git a/web/skins/classic/includes/logpanel.php b/web/skins/classic/includes/logpanel.php index 5b8512250..e365e58e2 100644 --- a/web/skins/classic/includes/logpanel.php +++ b/web/skins/classic/includes/logpanel.php @@ -67,9 +67,17 @@ function getLogPanelHTML($options=array()) { $levels[$level] = $level; } + # The panel is loaded on every view, so it cannot rely on a per-view + # views/js/.js.php defining a translate object. Carry its own strings. + $strings = array(); + foreach (array('Reason', 'AJAXRequestError', 'ErrorUpdatingLogTable', + 'ErrorDeletingRowFromLogTable', 'DeletingRowsFromTable') as $string) { + $strings[$string] = translate($string); + } + ob_start(); ?> -
+
 -   -  diff --git a/web/skins/classic/js/logpanel.js b/web/skins/classic/js/logpanel.js index c7d6d25b4..bdcfe75c8 100644 --- a/web/skins/classic/js/logpanel.js +++ b/web/skins/classic/js/logpanel.js @@ -37,6 +37,8 @@ function initLogPanel(panel) { // A panel locked to a set of components queries only those and never writes // the user's Log view selection back to the session. const lockedComponents = panel.dataset.components ? JSON.parse(panel.dataset.components) : null; + // The panel's own strings; a view's views/js/.js.php is not loaded here. + const i18n = panel.dataset.i18n ? JSON.parse(panel.dataset.i18n) : {}; let ajax = null; let allowRequest = false; // Allow unscheduled AJAX requests @@ -179,7 +181,7 @@ function initLogPanel(panel) { updateRequestStatus("stopped"); } else { updateRequestStatus("error"); - zmAlert(translate["Reason"] + ": " + jqxhr.statusText + "~~" + translate["ErrorUpdatingLogTable"], translate["AJAXRequestError"]); + zmAlert(i18n["Reason"] + ": " + jqxhr.statusText + "~~" + i18n["ErrorUpdatingLogTable"], i18n["AJAXRequestError"]); } table.bootstrapTable('hideLoading'); logAjaxFail(jqxhr); @@ -241,7 +243,7 @@ function initLogPanel(panel) { deleteProgressBar.appendChild(fill); idsLength = log_ids.length; - handlerAlert = zmAlert(translate["DeletingRowsFromTable"]); + handlerAlert = zmAlert(i18n["DeletingRowsFromTable"]); waitUntil(() => (document.querySelector('#' + handlerAlert + ' .modal-body')), 10000).then((result) => { // We're waiting for the modal information block to appear. @@ -288,7 +290,7 @@ function initLogPanel(panel) { table.bootstrapTable('refresh'); updateRequestStatus("error"); if (handlerAlert) closeZmAlert(handlerAlert); - zmAlert(translate["Reason"] + ": " + jqxhr.statusText + "~~" + translate["ErrorDeletingRowFromLogTable"], translate["AJAXRequestError"]); + zmAlert(i18n["Reason"] + ": " + jqxhr.statusText + "~~" + i18n["ErrorDeletingRowFromLogTable"], i18n["AJAXRequestError"]); } }); } diff --git a/web/skins/classic/views/js/log.js.php b/web/skins/classic/views/js/log.js.php deleted file mode 100644 index dbf3b416a..000000000 --- a/web/skins/classic/views/js/log.js.php +++ /dev/null @@ -1,8 +0,0 @@ -var translate = { - "Reason": "", - "Aborted": "", - "ErrorUpdatingLogTable": "", - "ErrorDeletingRowFromLogTable": "", - "DeletingRowsFromTable": "", - "AJAXRequestError": "", -};