diff --git a/install/setup.sql b/install/setup.sql index 18533f722d..bae0c3cb95 100755 --- a/install/setup.sql +++ b/install/setup.sql @@ -1102,6 +1102,7 @@ REPLACE INTO `{PREFIX}system_eventnames` ('214','OnManagerMenuPrerender','2',''), ('215','OnManagerTopPrerender','2',''), ('224','OnDocFormTemplateRender','1','Documents'), +('225','OnBeforeMinifyCss', '1', ''), ('999','OnPageUnauthorized','1',''), ('1000','OnPageNotFound','1',''), ('1001','OnFileBrowserUpload','1','File Browser Events'); diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index c73e063262..b3e60f605b 100755 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -203,7 +203,7 @@ public function __construct() $this->q = self::_getCleanQueryString(); } - + final public function __clone() { } @@ -5442,8 +5442,8 @@ public function invokeEvent($evtName, $extParams = array()) $this->pluginsCode .= '
'; $this->pluginsTime["{$evtName} / {$pluginName}"] += $eventtime; } - if ($e->_output != '') { - $results[] = $e->_output; + if ($e->getOutput() != '') { + $results[] = $e->getOutput(); } if ($e->_propagate != true) { break; @@ -6704,7 +6704,11 @@ class SystemEvent { public $name = ''; public $_propagate = true; - public $_output = ''; + /** + * @deprecated use setOutput(), getOutput() + * @var string + */ + public $_output; public $activated = false; public $activePlugin = ''; public $params = array(); @@ -6743,12 +6747,29 @@ public function alert($msg) * Output * * @param string $msg + * @deprecated see addOutput */ public function output($msg) { $this->_output .= $msg; } + /** + * @param mixed $data + */ + public function setOutput($data) + { + $this->_output = $data; + } + + /** + * @return mixed + */ + public function getOutput() + { + return $this->_output; + } + /** * Stop event propogation */ @@ -6761,7 +6782,7 @@ public function _resetEventObject() { unset ($this->returnedValues); $this->name = ""; - $this->_output = ""; + $this->setOutput(null); $this->_propagate = true; $this->activated = false; } diff --git a/manager/includes/header.inc.php b/manager/includes/header.inc.php index 147c0f6e04..048f0a17e0 100755 --- a/manager/includes/header.inc.php +++ b/manager/includes/header.inc.php @@ -30,19 +30,36 @@ if ($modx->config['manager_theme'] == 'default') { if (!file_exists(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/styles.min.css') && is_writable(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css')) { + $files = array( + 'bootstrap' => MODX_MANAGER_PATH . 'media/style/common/bootstrap/css/bootstrap.min.css', + 'font-awesome' => MODX_MANAGER_PATH . 'media/style/common/font-awesome/css/font-awesome.min.css', + 'fonts' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/fonts.css', + 'forms' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/forms.css', + 'mainmenu' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/mainmenu.css', + 'tree' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/tree.css', + 'custom' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/custom.css', + 'tabpane' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/tabpane.css', + 'contextmenu' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/contextmenu.css', + 'index' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/index.css', + 'main' => MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/main.css' + ); + $evtOut = $modx->invokeEvent('OnBeforeMinifyCss', array( + 'files' => $files, + 'source' => 'manager', + 'theme' => $modx->config['manager_theme'] + )); + switch (true) { + case empty($evtOut): + case is_array($evtOut) && count($evtOut) === 0: + break; + case is_array($evtOut) && count($evtOut) === 1: + $files = $evtOut[0]; + break; + default: + $modx->webAlertAndQuit(sprintf($_lang['invalid_event_response'], 'OnBeforeMinifyManagerCss')); + } require_once MODX_BASE_PATH . 'assets/lib/Formatter/CSSMinify.php'; - $minifier = new Formatter\CSSMinify(); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/common/bootstrap/css/bootstrap.min.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/common/font-awesome/css/font-awesome.min.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/fonts.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/forms.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/mainmenu.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/tree.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/custom.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/tabpane.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/contextmenu.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/index.css'); - $minifier->addFile(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/main.css'); + $minifier = new Formatter\CSSMinify($files); $css = $minifier->minify(); file_put_contents( MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/css/styles.min.css', diff --git a/manager/includes/lang/english.inc.php b/manager/includes/lang/english.inc.php index 69432a70ad..3531f93db9 100755 --- a/manager/includes/lang/english.inc.php +++ b/manager/includes/lang/english.inc.php @@ -1503,3 +1503,5 @@ $_lang['manager_menu_position_title'] = 'Main menu position'; $_lang['manager_menu_position_top'] = 'top'; $_lang['manager_menu_position_left'] = 'left'; + +$_lang['invalid_event_response'] = 'The %s event has ivalid output'; diff --git a/manager/includes/lang/russian-UTF8.inc.php b/manager/includes/lang/russian-UTF8.inc.php index 6789971195..1da7dd9fd0 100755 --- a/manager/includes/lang/russian-UTF8.inc.php +++ b/manager/includes/lang/russian-UTF8.inc.php @@ -1474,4 +1474,6 @@ $_lang['manager_menu_position_title'] = 'Расположение основного меню'; $_lang['manager_menu_position_top'] = 'вверху'; -$_lang['manager_menu_position_left'] = 'слева'; \ No newline at end of file +$_lang['manager_menu_position_left'] = 'слева'; + +$_lang['invalid_event_response'] = 'Событие %s вернуло неверный результат'; \ No newline at end of file