/manager/controllers/default/system/dashboards/update.class.php
PHP | 154 lines | 82 code | 15 blank | 57 comment | 6 complexity | 028ecd1058e3fd0b4a30c4652bcf7a82 MD5 | raw file
Possible License(s): GPL-2.0, Apache-2.0, BSD-3-Clause, LGPL-2.1
- <?php
- /*
- * This file is part of MODX Revolution.
- *
- * Copyright (c) MODX, LLC. All Rights Reserved.
- *
- * For complete copyright and license information, see the COPYRIGHT and LICENSE
- * files found in the top-level directory of this distribution.
- */
- /**
- * Loads the dashboard update page
- *
- * @package modx
- * @subpackage manager.controllers
- */
- class SystemDashboardsUpdateManagerController extends modManagerController {
- /** @var modDashboard $dashboard */
- public $dashboard;
- /** @var array $dashboardArray */
- public $dashboardArray;
- /**
- * Check for any permissions or requirements to load page
- * @return bool
- */
- public function checkPermissions() {
- return $this->modx->hasPermission('dashboards');
- }
- /**
- * Custom logic code here for setting placeholders, etc
- *
- * @param array $scriptProperties
- * @return array
- */
- public function process(array $scriptProperties = array()) {
- if (empty($this->scriptProperties['id']) || strlen($this->scriptProperties['id']) !== strlen((integer)$this->scriptProperties['id'])) {
- return $this->failure($this->modx->lexicon('dashboard_err_ns'));
- }
- $this->dashboard = $this->modx->getObject('modDashboard', array('id' => $this->scriptProperties['id']));
- if (empty($this->dashboard)) return $this->failure($this->modx->lexicon('dashboard_err_nf'));
- $this->dashboardArray = $this->dashboard->toArray();
- $this->dashboardArray['widgets'] = $this->getWidgets();
- return $this->dashboardArray;
- }
- /**
- * Get all the Widgets placed on this Dashboard
- * @return array
- */
- public function getWidgets() {
- $c = $this->modx->newQuery('modDashboardWidgetPlacement');
- $c->where(array(
- 'dashboard' => $this->dashboard->get('id'),
- ));
- $c->sortby('modDashboardWidgetPlacement.rank','ASC');
- $placements = $this->modx->getCollection('modDashboardWidgetPlacement',$c);
- $list = array();
- /** @var modDashboardWidgetPlacement $placement */
- foreach ($placements as $placement) {
- $placement->getOne('Widget');
- if (!($placement->Widget instanceof modDashboardWidget)) {
- continue;
- }
- if ($placement->Widget->get('lexicon') != 'core:dashboards') {
- $this->modx->lexicon->load($placement->Widget->get('lexicon'));
- }
- $widgetArray = $placement->Widget->toArray();
- $list[] = array(
- $placement->get('dashboard'),
- $placement->get('widget'),
- $placement->get('rank'),
- $widgetArray['name'],
- $widgetArray['name_trans'],
- $widgetArray['description'],
- $widgetArray['description_trans'],
- );
- }
- return $list;
- }
- /**
- * Get all the User Groups assigned to this Dashboard
- * @return array
- */
- public function getUserGroups() {
- $c = $this->modx->newQuery('modUserGroup');
- $c->where(array(
- 'dashboard' => $this->dashboard->get('id'),
- ));
- $c->sortby('name','ASC');
- $usergroups = $this->modx->getCollection('modUserGroup',$c);
- $list = array();
- /** @var modUserGroup $usergroup */
- foreach ($usergroups as $usergroup) {
- $list[] = array($usergroup->get('id'),$usergroup->get('name'));
- }
- return $list;
- }
- /**
- * Register custom CSS/JS for the page
- * @return void
- */
- public function loadCustomCssJs() {
- $this->addJavascript($this->modx->getOption('manager_url')."assets/modext/widgets/system/modx.panel.dashboard.js");
- $this->addJavascript($this->modx->getOption('manager_url').'assets/modext/sections/system/dashboards/update.js');
- $this->addHtml('<script type="text/javascript">Ext.onReady(function() {
- MODx.load({
- xtype: "modx-page-dashboard-update"
- ,record: '.$this->modx->toJSON($this->dashboardArray).'
- });
- });</script>');
- }
- /**
- * Return the pagetitle
- *
- * @return string
- */
- public function getPageTitle() {
- return $this->modx->lexicon('dashboards');
- }
- /**
- * Return the location of the template file
- * @return string
- */
- public function getTemplateFile() {
- return '';
- }
- /**
- * Specify the language topics to load
- * @return array
- */
- public function getLanguageTopics() {
- return array('dashboards','user');
- }
- /**
- * Get the Help URL
- * @return string
- */
- public function getHelpUrl() {
- return 'Dashboards';
- }
- }