Esempio n. 1
0
 /**
  * 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);
     }
 }
Esempio n. 3
0
 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');
    }
Esempio n. 5
0
 /**
  * @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');
     }
 }
Esempio n. 6
0
    /**
     * @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>');
            }
        }
    }
Esempio n. 7
0
 /**
  * @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();
     }
 }
Esempio n. 9
0
 public function initialize()
 {
     $this->bigbrother = new BigBrother($this->modx);
     $this->addCss($this->bigbrother->config['css_url'] . 'mgr.css');
     return parent::initialize();
 }