Last active
August 29, 2015 14:25
-
-
Save sergant210/f10e1401e00c551001ea to your computer and use it in GitHub Desktop.
Show errors from the system error log in a new window
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
switch ($modx->event->name) { | |
case 'OnManagerPageBeforeRender': | |
// Определяем названия // Define titles on your language | |
$lang['no'] = 'Нет'; //No | |
$lang['yes'] = 'Есть'; //Yes | |
$lang['errors'] = 'Ошибки'; //Errors | |
$lang['errors_title'] = 'Открыть журнал ошибок в новом окне'; //Open the error log in a new window | |
// | |
$response = $modx->runProcessor('system/errorlog/get'); | |
$resObj = $response->getObject(); | |
$fsize = @filesize($resObj['name']); | |
$resObj['size'] = round($fsize / 1000 / 1000,2).' MB'; | |
if ($fsize > 1) { | |
$_txt = '<span>'.$lang['yes'].'</span>'; | |
$resObj['empty'] = false; | |
} else { | |
$_txt = $lang['no']; | |
$resObj['empty'] = true; | |
} | |
$_html = "<style type=\"text/css\"> | |
.errorlog-li a {padding: 0 !important;margin-right: 7px !important;} | |
.errorlog-li a span {color: red; background-color: white;padding: 5px;} | |
#errorlog-box {background-color: #FFF;border: 2px solid #DDD;box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);position: absolute;width: 1200px;z-index: 5000;} | |
#errorlog-box-title {background-color: #EFEFEF;padding: 10px 5px;margin: 3px;} | |
#errorlog-box-body {height: 500px;padding: 10px 8px;overflow: auto;} | |
#errorlog-box-title button {position: absolute;top: 5px;padding: 3px 6px !important;} | |
#clearlog-btn {right: 35px;} | |
#close-btn {right: 8px;} | |
</style>\n"; | |
$_html .= '<script> | |
function showLog(){ | |
var w = new Ext.Window({ | |
id: "errorlog-window", | |
height: 400, | |
width: 1200, | |
title: _("error_log"), | |
buttonAlign: "right", | |
items: [{ | |
xtype: "textarea", | |
name: "log", | |
hideLabel: true, | |
id: "window-error-log-content", | |
value: config.log, | |
readOnly: true, | |
height: "97%", | |
width: "99%", | |
hidden: config.tooLarge ? true : false | |
},{ | |
html: "<p>"+_("error_log_too_large",{name: config.name})+"</p>", | |
id: "too-large-text", | |
border: false, | |
hidden: config.tooLarge ? false : true | |
},{ | |
xtype: "button", | |
text: _("error_log_download",{size: config.size}), | |
cls: "primary-button", | |
id: "error-log-download-btn", | |
style: "margin-top: 15px;", | |
hidden: config.tooLarge ? false : true, | |
handler: function () {location.href = MODx.config.connectors_url+"?action=system/errorlog/download&HTTP_MODAUTH="+MODx.siteId;}, | |
scope: this | |
}], | |
buttons: [{ | |
text: _("error_log"), | |
handler: function () { location.href = "?a=system/event" }, | |
scope: this | |
}, { | |
text: _("clear"), | |
id: "error-log-clear-btn", | |
disabled: config.empty ? true : false, | |
handler: function () { | |
MODx.Ajax.request({ | |
url: MODx.config.connectors_url | |
,params: { | |
action: "system/errorlog/clear" | |
} | |
,listeners: { | |
"success": {fn:function(r) { | |
var log = Ext.getCmp("window-error-log-content"); | |
log.setValue(" "); | |
config.log = " "; | |
Ext.getCmp("error-log-clear-btn").disable(); | |
if (config.tooLarge) { | |
log.show(); | |
Ext.getCmp("too-large-text").hide(); | |
Ext.getCmp("error-log-download-btn").hide(); | |
config.tooLarge = false; | |
} | |
document.getElementById("errorlog-result").innerHTML = lang.no; | |
}} | |
} | |
}); | |
}, scope: this | |
},{ | |
text: _("close"), | |
handler: function () { w.close(); }, | |
scope: this | |
}] | |
}).show(); | |
} | |
var config = '.$modx->toJSON($resObj).', | |
lang = '.$modx->toJSON($lang).'; | |
Ext.onReady(function() { | |
var usermenuUl = document.getElementById("modx-user-menu"), | |
firstLi = usermenuUl.firstChild, | |
errorlogLi = document.createElement("LI"); | |
errorlogLi.innerHTML = "<a href=\"javascript:void(0)\" onclick=\"return false;\">"+lang.errors+":</a><a id=\"errorlog-result\" href=\"javascript:showLog()\" title=\""+lang.errors_title+"\">'.$_txt.'</a>"; | |
errorlogLi.className = "errorlog-li"; | |
usermenuUl.insertBefore(errorlogLi, firstLi); | |
}); | |
</script>'; | |
$modx->controller->addHtml($_html); | |
break; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment