protected function actRenderCM() { global $_ARRAYLANG, $_CORELANG, $_CONFIG; \JS::activate('jqueryui'); \JS::activate('cx'); \JS::activate('ckeditor'); \JS::activate('cx-form'); \JS::activate('jstree'); \JS::registerJS('lib/javascript/lock.js'); \JS::registerJS('lib/javascript/jquery/jquery.history.max.js'); // this can be used to debug the tree, just add &tree=verify or &tree=fix $tree = null; if (isset($_GET['tree'])) { $tree = contrexx_input2raw($_GET['tree']); } if ($tree == 'verify') { echo '<pre>'; print_r($this->nodeRepository->verify()); echo '</pre>'; } else { if ($tree == 'fix') { // this should print "bool(true)" var_dump($this->nodeRepository->recover()); } } $objCx = \ContrexxJavascript::getInstance(); $themeRepo = new \Cx\Core\View\Model\Repository\ThemeRepository(); $defaultTheme = $themeRepo->getDefaultTheme(); $objCx->setVariable('themeId', $defaultTheme->getId(), 'contentmanager/theme'); foreach ($themeRepo->findAll() as $theme) { if ($theme == $defaultTheme) { $objCx->setVariable('themeName', $theme->getFoldername(), 'contentmanager/theme'); } } $this->template->addBlockfile('ADMIN_CONTENT', 'content_manager', 'Skeleton.html'); // user has no permission to create new page, hide navigation item in admin navigation if (!\Permission::checkAccess(127, 'static', true)) { $this->template->hideBlock('content_manager_create_new_page_navigation_item'); } $this->template->touchBlock('content_manager'); $this->template->addBlockfile('CONTENT_MANAGER_MEAT', 'content_manager_meat', 'Page.html'); $this->template->touchBlock('content_manager_meat'); if (\Permission::checkAccess(78, 'static', true)) { \JS::registerCode("var publishAllowed = true;"); } else { \JS::registerCode("var publishAllowed = false;"); } if (\Permission::checkAccess(78, 'static', true) && \Permission::checkAccess(115, 'static', true)) { \JS::registerCode("var aliasManagementAllowed = true;"); $alias_permission = "block"; $alias_denial = "none !important"; } else { \JS::registerCode("var aliasManagementAllowed = false;"); $alias_permission = "none !important"; $alias_denial = "block"; } $mediaBrowser = new MediaBrowser(); $mediaBrowser->setCallback('target_page_callback'); $mediaBrowser->setOptions(array('type' => 'button', 'data-cx-mb-views' => 'sitestructure', 'id' => 'page_target_browse')); $mediaBrowserCkeditor = new MediaBrowser(); $mediaBrowserCkeditor->setCallback('ckeditor_image_callback'); $mediaBrowserCkeditor->setOptions(array('id' => 'ckeditor_image_button', 'type' => 'button', 'style' => 'display:none')); $this->template->setVariable(array('MEDIABROWSER_BUTTON' => $mediaBrowser->getXHtml($_ARRAYLANG['TXT_CORE_CM_BROWSE']), 'MEDIABROWSER_BUTTON_CKEDITOR' => $mediaBrowserCkeditor->getXHtml($_ARRAYLANG['TXT_CORE_CM_BROWSE']))); $this->template->setVariable(array('ALIAS_PERMISSION' => $alias_permission, 'ALIAS_DENIAL' => $alias_denial, 'CONTREXX_BASE_URL' => ASCMS_PROTOCOL . '://' . $_CONFIG['domainUrl'] . ASCMS_PATH_OFFSET . '/', 'CONTREXX_LANG' => \FWLanguage::getLanguageCodeById(BACKEND_LANG_ID))); global $_CORELANG; $this->template->setVariable($_CORELANG); $objCx->setVariable('TXT_CORE_CM_VIEW', $_CORELANG['TXT_CORE_CM_VIEW'], 'contentmanager/lang'); $objCx->setVariable('TXT_CORE_CM_ACTIONS', $_CORELANG['TXT_CORE_CM_ACTIONS'], 'contentmanager/lang'); $objCx->setVariable('TXT_CORE_CM_VALIDATION_FAIL', $_CORELANG['TXT_CORE_CM_VALIDATION_FAIL'], 'contentmanager/lang'); $objCx->setVariable('TXT_CORE_CM_HOME_FAIL', $_CORELANG['TXT_CORE_CM_HOME_FAIL'], 'contentmanager/lang'); $arrLangVars = array('actions' => array('new' => 'TXT_CORE_CM_ACTION_NEW', 'copy' => 'TXT_CORE_CM_ACTION_COPY', 'activate' => 'TXT_CORE_CM_ACTION_PUBLISH', 'deactivate' => 'TXT_CORE_CM_ACTION_UNPUBLISH', 'publish' => 'TXT_CORE_CM_ACTION_PUBLISH_DRAFT', 'show' => 'TXT_CORE_CM_ACTION_SHOW', 'hide' => 'TXT_CORE_CM_ACTION_HIDE', 'delete' => 'TXT_CORE_CM_ACTION_DELETE', 'recursiveQuestion' => 'TXT_CORE_CM_RECURSIVE_QUESTION'), 'tooltip' => array('TXT_CORE_CM_LAST_MODIFIED' => 'TXT_CORE_CM_LAST_MODIFIED', 'TXT_CORE_CM_PUBLISHING_INFO_STATUSES' => 'TXT_CORE_CM_PUBLISHING_INFO_STATUSES', 'TXT_CORE_CM_PUBLISHING_INFO_ACTION_ACTIVATE' => 'TXT_CORE_CM_PUBLISHING_INFO_ACTION_ACTIVATE', 'TXT_CORE_CM_PUBLISHING_INFO_ACTION_DEACTIVATE' => 'TXT_CORE_CM_PUBLISHING_INFO_ACTION_DEACTIVATE', 'TXT_CORE_CM_PUBLISHING_DRAFT' => 'TXT_CORE_CM_PUBLISHING_DRAFT', 'TXT_CORE_CM_PUBLISHING_DRAFT_WAITING' => 'TXT_CORE_CM_PUBLISHING_DRAFT_WAITING', 'TXT_CORE_CM_PUBLISHING_LOCKED' => 'TXT_CORE_CM_PUBLISHING_LOCKED', 'TXT_CORE_CM_PUBLISHING_PUBLISHED' => 'TXT_CORE_CM_PUBLISHING_PUBLISHED', 'TXT_CORE_CM_PUBLISHING_UNPUBLISHED' => 'TXT_CORE_CM_PUBLISHING_UNPUBLISHED', 'TXT_CORE_CM_PAGE_INFO_STATUSES' => 'TXT_CORE_CM_PAGE_INFO_STATUSES', 'TXT_CORE_CM_PUBLISHING_INFO_TYPES' => 'TXT_CORE_CM_PUBLISHING_INFO_TYPES', 'TXT_CORE_CM_PAGE_INFO_ACTION_SHOW' => 'TXT_CORE_CM_PAGE_INFO_ACTION_SHOW', 'TXT_CORE_CM_PAGE_INFO_ACTION_HIDE' => 'TXT_CORE_CM_PAGE_INFO_ACTION_HIDE', 'TXT_CORE_CM_PAGE_STATUS_BROKEN' => 'TXT_CORE_CM_PAGE_STATUS_BROKEN', 'TXT_CORE_CM_PAGE_STATUS_VISIBLE' => 'TXT_CORE_CM_PAGE_STATUS_VISIBLE', 'TXT_CORE_CM_PAGE_STATUS_INVISIBLE' => 'TXT_CORE_CM_PAGE_STATUS_INVISIBLE', 'TXT_CORE_CM_PAGE_STATUS_PROTECTED' => 'TXT_CORE_CM_PAGE_STATUS_PROTECTED', 'TXT_CORE_CM_PAGE_TYPE_HOME' => 'TXT_CORE_CM_PAGE_TYPE_HOME', 'TXT_CORE_CM_PAGE_TYPE_CONTENT_SITE' => 'TXT_CORE_CM_PAGE_TYPE_CONTENT_SITE', 'TXT_CORE_CM_PAGE_TYPE_APPLICATION' => 'TXT_CORE_CM_PAGE_TYPE_APPLICATION', 'TXT_CORE_CM_PAGE_TYPE_REDIRECTION' => 'TXT_CORE_CM_PAGE_TYPE_REDIRECTION', 'TXT_CORE_CM_PAGE_TYPE_SYMLINK' => 'TXT_CORE_CM_PAGE_TYPE_SYMLINK', 'TXT_CORE_CM_PAGE_TYPE_FALLBACK' => 'TXT_CORE_CM_PAGE_TYPE_FALLBACK', 'TXT_CORE_CM_PAGE_MOVE_INFO' => 'TXT_CORE_CM_PAGE_MOVE_INFO', 'TXT_CORE_CM_TRANSLATION_INFO' => 'TXT_CORE_CM_TRANSLATION_INFO', 'TXT_CORE_CM_PREVIEW_INFO' => 'TXT_CORE_CM_PREVIEW_INFO')); foreach ($arrLangVars as $subscope => $arrLang) { foreach ($arrLang as $name => $value) { $objCx->setVariable($name, $_CORELANG[$value], 'contentmanager/lang/' . $subscope); } } // Mediabrowser $mediaBrowser = new \Cx\Core_Modules\MediaBrowser\Model\Entity\MediaBrowser(); $mediaBrowser->setOptions(array('type' => 'button')); $mediaBrowser->setCallback('setWebPageUrlCallback'); $mediaBrowser->setOptions(array('data-cx-mb-startview' => 'sitestructure', 'id' => 'page_target_browse')); $this->template->setVariable(array('CM_MEDIABROWSER_BUTTON' => $mediaBrowser->getXHtml($_ARRAYLANG['TXT_CORE_CM_BROWSE']))); $toggleTitles = !empty($_SESSION['contentManager']['toggleStatuses']['toggleTitles']) ? $_SESSION['contentManager']['toggleStatuses']['toggleTitles'] : 'block'; $toggleType = !empty($_SESSION['contentManager']['toggleStatuses']['toggleType']) ? $_SESSION['contentManager']['toggleStatuses']['toggleType'] : 'block'; $toggleNavigation = !empty($_SESSION['contentManager']['toggleStatuses']['toggleNavigation']) ? $_SESSION['contentManager']['toggleStatuses']['toggleNavigation'] : 'block'; $toggleBlocks = !empty($_SESSION['contentManager']['toggleStatuses']['toggleBlocks']) ? $_SESSION['contentManager']['toggleStatuses']['toggleBlocks'] : 'block'; $toggleThemes = !empty($_SESSION['contentManager']['toggleStatuses']['toggleThemes']) ? $_SESSION['contentManager']['toggleStatuses']['toggleThemes'] : 'block'; $toggleApplication = !empty($_SESSION['contentManager']['toggleStatuses']['toggleApplication']) ? $_SESSION['contentManager']['toggleStatuses']['toggleApplication'] : 'block'; $toggleSidebar = !empty($_SESSION['contentManager']['toggleStatuses']['sidebar']) ? $_SESSION['contentManager']['toggleStatuses']['sidebar'] : 'block'; $objCx->setVariable('toggleTitles', $toggleTitles, 'contentmanager/toggle'); $objCx->setVariable('toggleType', $toggleType, 'contentmanager/toggle'); $objCx->setVariable('toggleNavigation', $toggleNavigation, 'contentmanager/toggle'); $objCx->setVariable('toggleBlocks', $toggleBlocks, 'contentmanager/toggle'); $objCx->setVariable('toggleThemes', $toggleThemes, 'contentmanager/toggle'); $objCx->setVariable('toggleApplication', $toggleApplication, 'contentmanager/toggle'); $objCx->setVariable('sidebar', $toggleSidebar, 'contentmanager/toggle'); // get initial tree data $objJsonData = new \Cx\Core\Json\JsonData(); $treeData = $objJsonData->jsondata('node', 'getTree', array('get' => $_GET), false); $objCx->setVariable('tree-data', $treeData, 'contentmanager/tree'); if (!empty($_GET['act']) && $_GET['act'] == 'new') { $this->template->setVariable(array('TITLES_DISPLAY_STYLE' => 'display: block;', 'TITLES_TOGGLE_CLASS' => 'open', 'TYPE_DISPLAY_STYLE' => 'display: block;', 'TYPE_TOGGLE_CLASS' => 'open', 'NAVIGATION_DISPLAY_STYLE' => 'display: block;', 'NAVIGATION_TOGGLE_CLASS' => 'open', 'BLOCKS_DISPLAY_STYLE' => 'display: block;', 'BLOCKS_TOGGLE_CLASS' => 'open', 'THEMES_DISPLAY_STYLE' => 'display: block;', 'THEMES_TOGGLE_CLASS' => 'open', 'APPLICATION_DISPLAY_STYLE' => 'display: block;', 'APPLICATION_TOGGLE_CLASS' => 'open', 'MULTIPLE_ACTIONS_STRIKE_STYLE' => 'display: none;')); } else { $this->template->setVariable(array('TITLES_DISPLAY_STYLE' => $toggleTitles == 'none' ? 'display: none;' : 'display: block;', 'TITLES_TOGGLE_CLASS' => $toggleTitles == 'none' ? 'closed' : 'open', 'TYPE_DISPLAY_STYLE' => $toggleType == 'none' ? 'display: none;' : 'display: block;', 'TYPE_TOGGLE_CLASS' => $toggleType == 'none' ? 'closed' : 'open', 'NAVIGATION_DISPLAY_STYLE' => $toggleNavigation == 'none' ? 'display: none;' : 'display: block;', 'NAVIGATION_TOGGLE_CLASS' => $toggleNavigation == 'none' ? 'closed' : 'open', 'BLOCKS_DISPLAY_STYLE' => $toggleBlocks == 'none' ? 'display: none;' : 'display: block;', 'BLOCKS_TOGGLE_CLASS' => $toggleBlocks == 'none' ? 'closed' : 'open', 'THEMES_DISPLAY_STYLE' => $toggleThemes == 'none' ? 'display: none;' : 'display: block;', 'THEMES_TOGGLE_CLASS' => $toggleThemes == 'none' ? 'closed' : 'open', 'APPLICATION_DISPLAY_STYLE' => $toggleApplication == 'none' ? 'display: none;' : 'display: block;', 'APPLICATION_TOGGLE_CLASS' => $toggleApplication == 'none' ? 'closed' : 'open')); } $modules = $this->db->Execute("SELECT * FROM " . DBPREFIX . "modules WHERE `status` = 'y' ORDER BY `name`"); while (!$modules->EOF) { $this->template->setVariable('MODULE_KEY', $modules->fields['name']); // $this->template->setVariable('MODULE_TITLE', $_CORELANG[$modules->fields['description_variable']]); $this->template->setVariable('MODULE_TITLE', ucwords($modules->fields['name'])); $this->template->parse('module_option'); $modules->MoveNext(); } $newPageFirstLevel = isset($_GET['act']) && $_GET['act'] == 'new'; if (\Permission::checkAccess(36, 'static', true)) { $this->template->touchBlock('page_permissions_tab'); $this->template->touchBlock('page_permissions'); } else { $this->template->hideBlock('page_permissions_tab'); $this->template->hideBlock('page_permissions'); } //show the caching options only if the caching system is actually active if ($_CONFIG['cacheEnabled'] == 'on') { $this->template->touchBlock('show_caching_option'); } else { $this->template->hideBlock('show_caching_option'); } if (\Permission::checkAccess(78, 'static', true)) { $this->template->hideBlock('release_button'); } else { $this->template->hideBlock('publish_button'); $this->template->hideBlock('refuse_button'); } // show no access page if the user wants to create new page in first level but he does not have enough permissions if ($newPageFirstLevel) { \Permission::checkAccess(127, 'static'); } $editViewCssClass = ''; if ($newPageFirstLevel) { $editViewCssClass = 'edit_view'; $this->template->hideBlock('refuse_button'); } $cxjs = \ContrexxJavascript::getInstance(); $cxjs->setVariable('confirmDeleteQuestion', $_ARRAYLANG['TXT_CORE_CM_CONFIRM_DELETE'], 'contentmanager/lang'); $cxjs->setVariable('cleanAccessData', $objJsonData->jsondata('page', 'getAccessData', array(), false), 'contentmanager'); $cxjs->setVariable('contentTemplates', $this->getCustomContentTemplates(), 'contentmanager'); $cxjs->setVariable('defaultTemplates', $this->getDefaultTemplates(), 'contentmanager/themes'); $cxjs->setVariable('templateFolders', $this->getTemplateFolders(), 'contentmanager/themes'); $cxjs->setVariable('availableBlocks', $objJsonData->jsondata('Block', 'getBlocks', array(), false), 'contentmanager'); // TODO: move including of add'l JS dependencies to cx obj from /cadmin/index.html $getLangOptions = $this->getLangOptions(); $statusPageLayout = ''; $languageDisplay = ''; if ((!empty($_GET['act']) && $_GET['act'] == 'new' || !empty($_GET['page'])) && $getLangOptions == "") { $statusPageLayout = 'margin0'; $languageDisplay = 'display:none'; } $this->template->setVariable('ADMIN_LIST_MARGIN', $statusPageLayout); $this->template->setVariable('LANGUAGE_DISPLAY', $languageDisplay); // TODO: move including of add'l JS dependencies to cx obj from /cadmin/index.html $this->template->setVariable('SKIN_OPTIONS', $this->getSkinOptions()); $this->template->setVariable('LANGSWITCH_OPTIONS', $this->getLangOptions()); $this->template->setVariable('LANGUAGE_ARRAY', json_encode($this->getLangArray())); $this->template->setVariable('FALLBACK_ARRAY', json_encode($this->getFallbackArray())); $this->template->setVariable('LANGUAGE_LABELS', json_encode($this->getLangLabels())); $this->template->setVariable('EDIT_VIEW_CSS_CLASS', $editViewCssClass); $this->template->touchBlock('content_manager_language_selection'); $editmodeTemplate = new \Cx\Core\Html\Sigma(ASCMS_CORE_PATH . '/ContentManager/View/Template/Backend'); $editmodeTemplate->loadTemplateFile('content_editmode.html'); $editmodeTemplate->setVariable(array('TXT_EDITMODE_TEXT' => $_CORELANG['TXT_FRONTEND_EDITING_SELECTION_TEXT'], 'TXT_EDITMODE_CODE' => $_CORELANG['TXT_FRONTEND_EDITING_SELECTION_MODE_PAGE'], 'TXT_EDITMODE_CONTENT' => $_CORELANG['TXT_FRONTEND_EDITING_SELECTION_MODE_CONTENT'])); $cxjs->setVariable(array('editmodetitle' => $_CORELANG['TXT_FRONTEND_EDITING_SELECTION_TITLE'], 'editmodecontent' => $editmodeTemplate->get(), 'ckeditorconfigpath' => substr(\Env::get('ClassLoader')->getFilePath(ASCMS_CORE_PATH . '/Wysiwyg/ckeditor.config.js.php'), strlen(ASCMS_DOCUMENT_ROOT) + 1), 'regExpUriProtocol' => \FWValidator::REGEX_URI_PROTO, 'contrexxBaseUrl' => ASCMS_PROTOCOL . '://' . $_CONFIG['domainUrl'] . ASCMS_PATH_OFFSET . '/', 'contrexxPathOffset' => ASCMS_PATH_OFFSET), 'contentmanager'); }