manager/controllers/default/welcome.class.php
<?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 welcome page
*
* @package modx
* @subpackage manager.controllers
*/
class WelcomeManagerController extends modManagerController {
/**
* Whether or not to show the welcome screen
* @var boolean $showWelcomeScreen
*/
public $showWelcomeScreen = false;
/**
* The current, active dashboard for the user
* @var null|modDashboard $dashboard
*/
public $dashboard = null;
/**
* Check for any permissions or requirements to load page
* @return bool
*/
public function checkPermissions() {
return $this->modx->hasPermission('home');
}
/**
* Register custom CSS/JS for the page
* @return void
*/
public function loadCustomCssJs() {
$this->addJavascript($this->modx->getOption('manager_url').'assets/modext/widgets/modx.panel.welcome.js');
$this->addJavascript($this->modx->getOption('manager_url').'assets/modext/sections/welcome.js');
$this->addHtml('<script>
Ext.onReady(function() {
MODx.load({
xtype: "modx-page-welcome"
,dashboard: '.$this->modx->toJSON($this->dashboard->toArray()).'
});
});
</script>');
if ($this->showWelcomeScreen) {
$url = $this->modx->getOption('welcome_screen_url',null,'http://misc.modx.com/revolution/welcome.20.html');
$this->addHtml('<script>
// <![CDATA[
Ext.onReady(function() { MODx.loadWelcomePanel("'.$url.'"); });
// ]]></script>');
}
}
/**
* Custom logic code here for setting placeholders, etc
* @param array $scriptProperties
* @return array
*/
public function process(array $scriptProperties = array()) {
$placeholders = array();
$this->checkForWelcomeScreen();
$this->dashboard = $this->modx->user->getDashboard();
$placeholders['dashboard'] = $this->dashboard->render($this);
return $placeholders;
}
/**
* Check to show if we need to show the Welcome Screen for the user
* @return void
*/
public function checkForWelcomeScreen() {
if ($this->modx->getOption('welcome_screen',null,false)) {
$this->showWelcomeScreen = true;
/** @var modSystemSetting $setting */
$setting = $this->modx->getObject('modSystemSetting','welcome_screen');
if ($setting) {
$setting->set('value',false);
$setting->save();
}
/** @var modUserSetting $setting */
$setting = $this->modx->getObject('modUserSetting',array(
'key' => 'welcome_screen',
'user' => $this->modx->user->get('id'),
));
if ($setting) {
$setting->set('value',false);
$setting->save();
}
$this->modx->reloadConfig();
}
}
/**
* Return the pagetitle
*
* @return string
*/
public function getPageTitle() {
return $this->modx->lexicon('dashboard');
}
/**
* Return the location of the template file
* @return string
*/
public function getTemplateFile() {
return 'welcome.tpl';
}
/**
* Specify the language topics to load
* @return array
*/
public function getLanguageTopics() {
return array('welcome','configcheck');
}
}