| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?php
- /**
- * @package modx
- * @subpackage manager.controllers
- */
- /**
- * Loads the workspace manager
- *
- * @package modx
- * @subpackage manager.controllers
- */
- class WorkspacesManagerController extends modManagerController {
- public $errors = array();
- /**
- * The template file for this controller
- * @var string $templateFile
- */
- public $templateFile = 'workspaces/index.tpl';
- /**
- * The ID of the default Provider
- * @var int $providerId
- */
- public $providerId = 1;
- /**
- * The name of the default Provider
- * @var string $providerName
- */
- public $providerName = 'modx.com';
- /**
- * Whether or not cURL is enabled on this server
- * @var boolean $curlEnabled
- */
- public $curlEnabled = true;
- /**
- * Check for any permissions or requirements to load page
- * @return bool
- */
- public function checkPermissions() {
- return $this->modx->hasPermission('workspaces');
- }
- /**
- * Register custom CSS/JS for the page
- * @return void
- */
- public function loadCustomCssJs() {
- $mgrUrl = $this->modx->getOption('manager_url',null,MODX_MANAGER_URL);
- $this->addJavascript($mgrUrl.'assets/modext/core/modx.view.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/package.browser.tree.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/package.browser.panels.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/combos.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/package.grid.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/package.windows.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/package.panels.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/package.containers.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/provider.grid.js');
- $this->addJavascript($mgrUrl.'assets/modext/workspace/workspace.panel.js');
- $this->addJavascript($mgrUrl.'assets/modext/util/lightbox.js');
- $this->addHtml("<script>
- Ext.onReady(function() {
- MODx.errors = ".$this->modx->toJSON($this->errors).";
- MODx.defaultProvider = '".$this->providerId."';MODx.provider = '".$this->providerId."';MODx.providerName = '".$this->providerName."';MODx.curlEnabled = ".(integer)$this->curlEnabled."; Ext.ux.Lightbox.register('a.lightbox');
- MODx.add('modx-page-workspace');
- });</script>");
- $this->addJavascript($mgrUrl.'assets/modext/workspace/index.js');
- }
- /**
- * Custom logic code here for setting placeholders, etc
- * @param array $scriptProperties
- * @return mixed
- */
- public function process(array $scriptProperties = array()) {
- /* ensure directories for Package Management are created */
- /** @var modCacheManager $cacheManager */
- $cacheManager = $this->modx->getCacheManager();
- $directoryOptions = array(
- 'new_folder_permissions' => $this->modx->getOption('new_folder_permissions',null,0775),
- );
- $errors = array();
- /* create assets/ */
- $assetsPath = $this->modx->getOption('assets_path',null,MODX_ASSETS_PATH);
- if (!is_dir($assetsPath)) {
- $cacheManager->writeTree($assetsPath,$directoryOptions);
- }
- if (!is_dir($assetsPath) || !is_writable($assetsPath)) {
- $errors[] = $this->modx->lexicon('dir_err_assets',array('path' => $assetsPath));
- }
- unset($assetsPath);
- /* create assets/components/ */
- $assetsCompPath = $this->modx->getOption('assets_path',null,MODX_ASSETS_PATH).'components/';
- if (!is_dir($assetsCompPath)) {
- $cacheManager->writeTree($assetsCompPath,$directoryOptions);
- }
- if (!is_dir($assetsCompPath) || !is_writable($assetsCompPath)) {
- $errors[] = $this->modx->lexicon('dir_err_assets_comp',array('path' => $assetsCompPath));
- }
- unset($assetsCompPath);
- /* create core/components/ */
- $coreCompPath = $this->modx->getOption('core_path',null,MODX_CORE_PATH).'components/';
- if (!is_dir($coreCompPath)) {
- $cacheManager->writeTree($coreCompPath,$directoryOptions);
- }
- if (!is_dir($coreCompPath) || !is_writable($coreCompPath)) {
- $errors[] = $this->modx->lexicon('dir_err_core_comp',array('path' => $coreCompPath));
- }
- if (!function_exists('curl_init') || !in_array('curl',get_loaded_extensions())) {
- $errors[] = $this->modx->lexicon('curl_not_installed');
- $this->curlEnabled = false;
- }
- if (!empty($errors)) {
- $this->errors = $errors;
- }
- $this->getDefaultProvider();
- return true;
- }
- /**
- * Get the default Provider for Package Management
- *
- * @return modTransportProvider|void
- */
- public function getDefaultProvider() {
- $default = $this->modx->getOption('default_provider');
- $c = $this->modx->newQuery('transport.modTransportProvider');
- if ($default) {
- $c->where(array(
- 'id' => $default,
- ));
- } else {
- $c->where(array(
- 'name:=' => 'modxcms.com',
- 'OR:name:=' => 'modx.com',
- ));
- }
- /** @var modTransportProvider $provider */
- $provider = $this->modx->getObject('transport.modTransportProvider',$c);
- if ($provider) {
- $this->providerId = $provider->get('id');
- $this->providerName = $provider->get('name');
- } else {
- $this->modx->log(modX::LOG_LEVEL_ERROR,'Could not find the main provider for some reason with a name of "modx.com". Did you delete it?');
- }
- return $provider;
- }
- /**
- * Return the pagetitle
- *
- * @return string
- */
- public function getPageTitle() {
- return $this->modx->lexicon('package_management');
- }
- /**
- * Return the location of the template file
- * @return string
- */
- public function getTemplateFile() {
- return $this->templateFile;
- }
- /**
- * Specify the language topics to load
- * @return array
- */
- public function getLanguageTopics() {
- return array('workspace','namespace');
- }
- /**
- * Get the Help URL
- * @return string
- */
- public function getHelpUrl() {
- return 'Package+Management';
- }
- }
|