/** * Build the requested menu "container" and set it as a placeholder * * @param string $name The container name (topnav, usernav) * @param string $placeholder The placeholder to display the built menu to * * @return void */ public function buildMenu($name, $placeholder) { if (!$placeholder) { $placeholder = $name; } // Grab the menus to process $menus = $this->getCache($name); // Iterate foreach ($menus as $menu) { $this->childrenCt = 0; if (!$this->hasPermission($menu['permissions'])) { continue; } $description = ''; if ($this->showDescriptions && !empty($menu['description'])) { $description = '<span class="description">' . $menu['description'] . '</span>' . "\n"; } $label = $menu['text']; $title = ' title="' . $menu['description'] . '"'; $icon = false; if (!empty($menu['icon'])) { $icon = true; // Use the icon as label $label = $menu['icon']; // Reset the description (which is set as text in $title) $description = ''; } $top = !empty($menu['children']) ? ' class="top"' : ''; $menuTpl = '<li id="limenu-' . $menu['id'] . '"' . $top . '>' . "\n"; if (!empty($menu['handler'])) { $menuTpl .= '<a href="javascript:;" onclick="' . str_replace('"', '\'', $menu['handler']) . '">' . $label . '</a>' . "\n"; } elseif (!empty($menu['action'])) { if ($menu['namespace'] != 'core') { // Handle the namespace $menu['action'] .= '&namespace=' . $menu['namespace']; } if (!$icon) { // No icon, no title property $title = ''; } $menuTpl .= '<a id="' . $menu['action'] . '-link" href="?a=' . $menu['action'] . $menu['params'] . '"' . ($top ? ' class="top-link"' : '') . $title . '>' . $label . $description . '</a>' . "\n"; } else { $menuTpl .= '<a href="javascript:;">' . $label . '</a>' . "\n"; } if (!empty($menu['children'])) { $menuTpl .= '<ul class="modx-subnav">' . "\n"; $this->processSubMenus($menuTpl, $menu['children']); $menuTpl .= '</ul>' . "\n"; } $menuTpl .= '</li>' . "\n"; /* if has no permissable children, and is not clickable, hide top menu item */ if (!empty($this->childrenCt) || !empty($menu['action']) || !empty($menu['handler'])) { $this->output .= $menuTpl; } $this->order++; } //$this->cleanEmptySubMenus(); $this->controller->setPlaceholder($placeholder, $this->output); $this->resetCounters(); }
public function setUp() { parent::setUp(); /* load smarty template engine */ $templatePath = $this->modx->getOption('manager_path') . 'templates/default/'; $this->modx->getService('smarty', 'smarty.modSmarty', '', array('template_dir' => $templatePath)); $this->modx->smarty->setCachePath('mgr/smarty/default/'); $this->modx->smarty->assign('_config', $this->modx->config); $this->modx->smarty->assignByRef('modx', $this->modx); $this->modx->loadClass('modManagerController', MODX_CORE_PATH . 'model/modx/', true, true); require_once MODX_MANAGER_PATH . 'controllers/default/' . $this->controllerPath . '.class.php'; $className = $this->controllerName; if (!empty($className)) { $this->controller = new $className($this->modx, array('namespace' => 'core', 'namespace_name' => 'core', 'namespace_path' => MODX_MANAGER_PATH, 'controller' => $this->controllerPath)); $this->controller->setProperties($_REQUEST); } }
public function initialize() { $this->formz = new Formz($this->modx); $this->addCss($this->formz->config['cssUrl'] . 'mgr.css'); $this->addJavascript($this->formz->config['jsUrl'] . 'mgr/formz.js'); $this->addHtml('<script type="text/javascript"> Ext.onReady(function() { Formz.config = ' . $this->modx->toJSON($this->formz->config) . '; Formz.config.connector_url = "' . $this->formz->config['connectorUrl'] . '"; }); </script>'); return parent::initialize(); }
/** * @param modManagerController $controller * @param modResource $resource */ public function loadManagerFiles(modManagerController $controller, modResource $resource) { $modx23 = (int) $this->systemVersion(); $cssUrl = $this->config['cssUrl'] . 'mgr/'; $jsUrl = $this->config['jsUrl'] . 'mgr/'; $properties = $resource->getProperties('modupdater'); $controller->addLexiconTopic('modupdater:default'); $controller->addJavascript($jsUrl . 'modupdater.js'); $controller->addLastJavascript($jsUrl . 'misc/utils.js'); $controller->addCss($cssUrl . 'main.css'); if (!$modx23) { $controller->addCss($cssUrl . 'font-awesome.min.css'); } $controller->addHtml(' <script type="text/javascript"> MODx.modx23 = ' . $modx23 . '; modUpdater.config = ' . $this->modx->toJSON($this->config) . '; modUpdater.config.resID = ' . $resource->id . '; modUpdater.config.connector_url = "' . $this->config['connectorUrl'] . '"; </script>', true); $controller->addLastJavascript($jsUrl . 'widgets/items.windows.js'); }
/** * @param modManagerController $controller * @param array $properties */ public function loadManagerFiles(modManagerController $controller, array $properties = array()) { $modx23 = (int) $this->systemVersion(); $ticketsAssetsUrl = $this->config['assetsUrl']; $connectorUrl = $this->config['connectorUrl']; $ticketsCssUrl = $this->config['cssUrl'] . 'mgr/'; $ticketsJsUrl = $this->config['jsUrl'] . 'mgr/'; if (!empty($properties['config'])) { $tmp = array('assets_js' => $ticketsAssetsUrl, 'connector_url' => $connectorUrl); $controller->addHtml('<script type="text/javascript">MODx.modx23 = ' . $modx23 . ';Tickets.config = ' . $this->modx->toJSON($tmp) . ';</script>', true); } if (!empty($properties['utils'])) { $controller->addJavascript($ticketsJsUrl . 'tickets.js'); $controller->addLastJavascript($ticketsJsUrl . 'misc/utils.js'); $controller->addLastJavascript($ticketsJsUrl . 'misc/combos.js'); } if (!empty($properties['css'])) { $controller->addCss($ticketsCssUrl . 'tickets.css'); $controller->addCss($ticketsCssUrl . 'bootstrap.buttons.css'); if (!$modx23) { $controller->addCss($ticketsCssUrl . 'font-awesome.min.css'); } } if (!empty($properties['section'])) { $controller->addLastJavascript($ticketsJsUrl . 'section/section.common.js'); $controller->addLastJavascript($ticketsJsUrl . 'ticket/tickets.panel.js'); $controller->addLastJavascript($ticketsJsUrl . 'ticket/tickets.grid.js'); } if (!empty($properties['ticket'])) { $controller->addLastJavascript($ticketsJsUrl . 'ticket/ticket.common.js'); } if (!empty($properties['tickets'])) { $controller->addLastJavascript($ticketsJsUrl . 'ticket/tickets.panel.js'); $controller->addLastJavascript($ticketsJsUrl . 'ticket/tickets.grid.js'); } if (!empty($properties['threads'])) { $controller->addLastJavascript($ticketsJsUrl . 'thread/threads.panel.js'); $controller->addLastJavascript($ticketsJsUrl . 'thread/threads.grid.js'); $controller->addLastJavascript($ticketsJsUrl . 'thread/thread.window.js'); $controller->addLastJavascript($ticketsJsUrl . 'comment/comments.grid.js'); $controller->addLastJavascript($ticketsJsUrl . 'comment/comment.window.js'); } if (!empty($properties['comments'])) { $controller->addLastJavascript($ticketsJsUrl . 'comment/comments.panel.js'); $controller->addLastJavascript($ticketsJsUrl . 'comment/comments.grid.js'); $controller->addLastJavascript($ticketsJsUrl . 'comment/comment.window.js'); } if (!empty($properties['authors'])) { $controller->addLastJavascript($ticketsJsUrl . 'author/authors.panel.js'); $controller->addLastJavascript($ticketsJsUrl . 'author/authors.grid.js'); } }
/** * @param modManagerController $controller * @param modResource $resource */ public function loadManagerFiles(modManagerController $controller, modResource $resource) { $modx23 = (int) $this->systemVersion(); $cssUrl = $this->config['cssUrl'] . 'mgr/'; $jsUrl = $this->config['jsUrl'] . 'mgr/'; $properties = $resource->getProperties('ms2gallery'); if (empty($properties['media_source'])) { if (!($source_id = $resource->getTVValue('ms2Gallery'))) { /** @var modContextSetting $setting */ $setting = $this->modx->getObject('modContextSetting', array('key' => 'ms2gallery_source_default', 'context_key' => $resource->get('context_key'))); $source_id = !empty($setting) ? $setting->get('value') : $this->modx->getOption('ms2gallery_source_default'); } $resource->setProperties(array('media_source' => $source_id), 'ms2gallery'); $resource->save(); } else { $source_id = $properties['media_source']; } if (empty($source_id)) { $source_id = $this->modx->getOption('ms2gallery_source_default'); } $resource->set('media_source', $source_id); $controller->addLexiconTopic('ms2gallery:default'); $controller->addJavascript($jsUrl . 'ms2gallery.js'); $controller->addLastJavascript($jsUrl . 'misc/ms2.combo.js'); $controller->addLastJavascript($jsUrl . 'misc/ms2.utils.js'); $controller->addLastJavascript($jsUrl . 'misc/plupload/plupload.full.js'); $controller->addLastJavascript($jsUrl . 'misc/ext.ddview.js'); $controller->addLastJavascript($jsUrl . 'gallery.view.js'); $controller->addLastJavascript($jsUrl . 'gallery.window.js'); $controller->addLastJavascript($jsUrl . 'gallery.toolbar.js'); $controller->addLastJavascript($jsUrl . 'gallery.panel.js'); $controller->addCss($cssUrl . 'main.css'); if (!$modx23) { $controller->addCss($cssUrl . 'font-awesome.min.css'); } $source_config = array(); /** @var modMediaSource $source */ if ($source = $this->modx->getObject('modMediaSource', $source_id)) { $tmp = $source->getProperties(); foreach ($tmp as $v) { $source_config[$v['name']] = $v['value']; } } $controller->addHtml(' <script type="text/javascript"> MODx.modx23 = ' . $modx23 . '; ms2Gallery.config = ' . $this->modx->toJSON($this->config) . '; ms2Gallery.config.media_source = ' . $this->modx->toJSON($source_config) . '; </script>'); if ($this->modx->getOption('ms2gallery_new_tab_mode', null, true)) { $controller->addLastJavascript($jsUrl . 'tab.js'); } else { $insert = ' tabs.add({ xtype: "ms2gallery-page", id: "ms2gallery-page", title: _("ms2gallery"), record: { id: ' . $resource->get('id') . ', source: ' . $source_id . ', } }); '; if ($this->modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) { $controller->addHtml(' <script type="text/javascript"> Ext.onReady(function() { window.setTimeout(function() { var tabs = Ext.getCmp("modx-resource-tabs"); if (tabs) { ' . $insert . ' } }, 10); }); </script>'); } else { $controller->addHtml(' <script type="text/javascript"> Ext.ComponentMgr.onAvailable("modx-resource-tabs", function() { var tabs = this; tabs.on("beforerender", function() { ' . $insert . ' }); }); </script>'); } } }
/** * @param modManagerController $controller * @param array $opts */ public function loadControllerFiles(modManagerController $controller, array $opts = array()) { $config = $this->config; $config['connector_url'] = $this->config['connectorUrl']; $config['fields_grid_domain'] = $this->getDomainGridFields(); if (!empty($opts['css'])) { $controller->addCss($this->config['cssUrl'] . 'mgr/main.css'); $controller->addCss($this->config['cssUrl'] . 'mgr/bootstrap.buttons.css'); } if (!empty($opts['config'])) { $controller->addHtml("<script type='text/javascript'>subdomainsfolder.config={$this->modx->toJSON($config)}</script>"); } if (!empty($opts['tools'])) { $controller->addJavascript($this->config['jsUrl'] . 'mgr/subdomainsfolder.js'); $controller->addJavascript($this->config['jsUrl'] . 'mgr/misc/tools.js'); $controller->addJavascript($this->config['jsUrl'] . 'mgr/misc/combo.js'); } if (!empty($opts['domain'])) { $controller->addLastJavascript($this->config['jsUrl'] . 'mgr/domain/domain.window.js'); $controller->addLastJavascript($this->config['jsUrl'] . 'mgr/domain/domain.grid.js'); $controller->addLastJavascript($this->config['jsUrl'] . 'mgr/domain/domain.panel.js'); } }
/** * Registers CSS/JS to manager interface */ public function registerCssJs() { $versionPostFix = $this->_prepareVersionPostfix(); /* if true, use compressed JS */ if ($this->modx->getOption('compress_js', null, false)) { foreach ($this->modx->sjscripts as &$scr) { $pos = strpos($scr, '.js'); if ($pos) { $newUrl = substr($scr, 0, $pos) . '-min' . substr($scr, $pos, strlen($scr)); } else { continue; } $pos = strpos($newUrl, 'modext/'); if ($pos) { $pos = $pos + 7; $newUrl = substr($newUrl, 0, $pos) . 'build/' . substr($newUrl, $pos, strlen($newUrl)); } $path = str_replace(array($this->modx->getOption('manager_url') . 'assets/modext/', '<script type="text/javascript" src="', '"></script>'), '', $newUrl); if (file_exists($this->modx->getOption('manager_path') . 'assets/modext/' . $path)) { $scr = $newUrl; } /* append version string */ $scr = $this->_postfixVersionToScript($scr, $versionPostFix); } } else { foreach ($this->modx->sjscripts as &$scr) { $scr = $this->_postfixVersionToScript($scr, $versionPostFix); } } /* assign css/js to header */ $this->setPlaceholder('cssjs', $this->modx->sjscripts); if (!empty($this->head['js']) || !empty($this->head['lastjs']) || !empty($this->head['css']) || !empty($this->head['html'])) { // Some plugin probably registered additional assets (ie. OnBeforeManagerPageInit), let's load them parent::registerCssJs(); } }
public function initialize() { $this->bigbrother = new BigBrother($this->modx); $this->addCss($this->bigbrother->config['css_url'] . 'mgr.css'); return parent::initialize(); }