public function getAdminViewValue() { $sitemapInfo = Sitemap_Sample::get($this->aValue); $result = sprintf(' %s <a href="http:%s" target="_blank">[На сайте]</a>', $sitemapInfo['name'], $sitemapInfo['full_url']); $result .= sprintf(' <a href="%ssitemap/edit.php?id=%d" target="_blank">[К администрированию]</a>', \Extasy\CMS::getDashboardWWWRoot(), $sitemapInfo['id']); return $result; }
/** * Проверяет страницу, если она скрипт редиректит на страницу скрипта, иначе возвращает модель класса * @return */ protected function getModel($id) { // Получаем документ try { $aRow = SiteMap_Sample::get($id); $this->aSitemap = $aRow; } catch (SiteMapException $e) { $this->AddError(_msg('Документ не найден')); $this->jump('./'); } if (!empty($aRow['script'])) { if (!empty($aRow['script_admin_url'])) { $this->jump(\Extasy\CMS::getDashboardWWWRoot() . $aRow['script_admin_url']); } else { $this->addError('У данного скрипта нету панели редактирования'); $this->jump('./'); } } else { $this->szDocumentName = $aRow['document_name']; $this->nId = $aRow['document_id']; $validator = new \Extasy\Validators\IsModelClassNameValidator($aRow['document_name']); if (!$validator->isValid()) { throw new \ForbiddenException('Not a model class:' . $aRow['document_name']); } $szClassName = $aRow['document_name']; } $this->document = new $szClassName(); $found = $this->document->get($this->nId); if (empty($found)) { throw new NotFoundException('Document with id=' . $this->nId . ' not found'); } return $szClassName; }
public function testParseData() { $item = new MenuItem(); $actual = $item->getParseData(); $editLinkBase = sprintf('%ssitemap/edit.php?id=', CMS::getDashboardWWWRoot()); $expected = ['name' => self::Title, 'link' => '#', 'children' => [['link' => '#', 'name' => 'first', 'children' => [['link' => $editLinkBase . '1', 'name' => 'Редактировать'], ['link' => '#', 'name' => 'third', 'children' => [['link' => $editLinkBase . '3', 'name' => 'Редактировать']]]]], ['link' => '#', 'name' => 'second', 'children' => [['link' => $editLinkBase . '2', 'name' => 'Редактировать']]]]]; $this->assertEquals($expected, $actual); }
/** * Отображает вкладку для редактирования sitemap-страницы * @param array $sitemap ряд из таблицы SITEMAP * @param int $tabSheetId вкладка :) */ public static function outputSitemapTabSheet($sitemap, $tabSheetId, $additionalProperties = array()) { self::$sitemap = $sitemap; $design = CMSDesign::getInstance(); $szOpenLink = '<a target="_blank" href="http:' . self::$sitemap['full_url'] . '" >Открыть</a>'; $szLink = <<<HTML \t\t\t\t<a href="#" onclick=" \t\t\t\twindow.open('%ssitemap/move.php?id=%d', \t\t\t\t'_blank', \t\t\t\t'location=no,resizable=no,scrollbars=yes,titlebar=no,toolbar=no,menubar=no,width=800,height=800'); return false; ">Переместить документ</a> HTML; $szLink = sprintf($szLink, \Extasy\CMS::getDashboardWWWRoot(), $sitemap['id']); // Выводим $design->tabContentBegin($tabSheetId); // Вывод блока видимости страницы self::outputVisibility($sitemap['visible']); self::outputAliases(); // Вызов вкладки Sitemap.XML self::outputSitemapXML(); $design->tableBegin(); $design->row2cell('Создан', $sitemap['date_created']); $design->row2cell('Последнее изменение', $sitemap['date_updated']); $design->row2cell('Ревизия', $sitemap['revision_count']); $design->row2cell('Текущий URL', 'http:' . $sitemap['full_url'] . ' ' . $szOpenLink . ' ' . $szLink); if (!empty($sitemap['script'])) { $design->row2cell('Путь к скрипту', $sitemap['script']); } else { self::outputDocumentInfo($sitemap['document_id'], $sitemap['document_name']); } // Дополнительные св-ва foreach ($additionalProperties as $key => $row) { $design->row2cell($key, $row); } $design->tableEnd(); // Если это скрипт, то добавляем еще поле if (!empty($sitemap['script'])) { // Вкладка карты сайта $design->header2('Положение в карте сайта'); $design->tableBegin(); // self::outputNameFormFields(); self::outputUrlFormFields(); self::outputChangeParentFormFields(); $design->tableEnd(); } // Получаем сп $design->tabContentEnd(); }
public function setSitemapInfo($urlInfo) { $adminUrl = ''; // Если это скрипт и у него обозначен admin_page if (!empty($urlInfo['script']) && !empty($urlInfo['script_admin_url'])) { $adminUrl = \Extasy\CMS::getDashboardWWWRoot() . $urlInfo['script_admin_url']; } elseif (!empty($urlInfo['document_name'])) { if (ModelHelper::isEditable($urlInfo['document_name'])) { $adminUrl = \Extasy\CMS::getDashboardWWWRoot() . 'sitemap/edit.php?id=' . $urlInfo['id']; } } if (!empty($adminUrl)) { $this->setAdminUrl($adminUrl); } }
public function __construct() { // $auth = CMSAuth::getInstance(); if (!$auth->isSuperAdmin(UsersLogin::getCurrentSession())) { $this->addError('Access denied'); $this->jump(\Extasy\CMS::getDashboardWWWRoot()); } parent::__construct(); // Вызов формы редактирования $this->addGet('id', 'showEdit'); // Вызов формы добавления $this->addGet('add', 'showAdd'); // Вызов функции редактирования $this->addPost('id,login,password,rights', 'postEdit'); $this->addPost('id,login,password', 'postEdit'); // Вызов функции добавления $this->addPost('login,password,rights', 'postAdd'); $this->addPost('login,password', 'postAdd'); // Удаление $this->addPost('id', 'delete'); }
/** * Отображает ссылку, открывающую попап * @param string $href * @param string $title */ public function popupLink($href, $title) { ?> <a href="<?php echo \Extasy\CMS::getDashboardWWWRoot(); print $href; ?> " onclick=" window.open('<?php echo \Extasy\CMS::getDashboardWWWRoot(); print $href; ?> ', '_blank', 'location=no,resizable=no,scrollbars=yes,titlebar=no,toolbar=no,menubar=no,width=800,height=800'); return false; "><?php print $title; ?> </a> <?php }
protected function searchSitemap() { try { ACLUser::checkCurrentUserGrants([SitemapModel::PermissionName]); $items = \Sitemap_Sample::search($this->searchPhrase, 0, 10); } catch (\Exception $e) { $items = []; } foreach ($items as $row) { $isScript = !empty($row['script_admin_url']); $add = new SearchResultModel(); $add->title = $row['name']; $add->icon = 'glyphicon glyphicon-user'; // if (!$isScript) { $route = CMS::getInstance()->getDispatcher()->getNamed('dashboard.sitemap.manage'); $add->link = $route->buildUrl() . '?id=' . $row['id']; } else { $add->link = sprintf('http://%s%s', CMS::getDashboardWWWRoot(), $row['script_admin_url']); } $this->results[] = $add; } }
/** * Создает документ * @param $document string имя документа * @param $place int индекс документ */ public function add($document, $place) { $place = IntegerHelper::toNatural($place); // try { $validator = new \Extasy\Validators\IsModelClassNameValidator($document); if (!$validator->isValid()) { throw new ForbiddenException('Not a model'); } $model = new $document(); $model->createEmptyDocument($place); } catch (Exception $e) { die($e); throw $e; } $this->jump(\Extasy\CMS::getDashboardWWWRoot() . 'sitemap/edit.php?id=' . $model->getSitemapId()); }
public static function outputLink($userId, $userLogin) { $result = sprintf('<a href="%susers/manage?id=%d" target="_blank">%s</a>', \Extasy\CMS::getDashboardWWWRoot(), $userId, $userLogin); return $result; }
/** * Отображает форму редактирования */ protected function outputEditingForm($sheets, $controls) { $sheetsEmpty = false; if (empty($sheets)) { $sheetsEmpty = true; $sheets = array(array('id' => 'mainTab', 'title' => 'Ошибка')); } if ($this->schema->getSitemapLink()) { $sitemapInfo = Sitemap_Sample::get($this->schema->getSitemapLink()); array_push($sheets, array('id' => 'sitemapTab', 'title' => 'Свойства')); } // $design = CMSDesign::getInstance(); $design->forms->begin(); // Вывод вкладок $design->tabs->sheetsBegin($sheets); // По вкладкам вывод $i = 0; if (!empty($controls)) { foreach ($controls as $list) { $design->tabs->contentBegin($sheets[$i]['id']); $design->table->begin(); foreach ($list as $control) { $design->table->row2cell($control->getTitle(), $control->outputInForm()); } $design->table->end(); $design->tabs->contentEnd(); $i++; } } else { $design->tabs->contentBegin($sheets[0]['id']); $design->decor->contentBegin(); printf('У данной схемы пока нету вкладок для редактирования<br/>'); $auth = CMSAuth::getInstance(); if ($auth->isSuperAdmin(UsersLogin::getCurrentUser())) { printf('Перейти к <a href="%scconfig/manage.php?schema=%s&edit=1">управлению</a> конфигом', \Extasy\CMS::getDashboardWWWRoot(), $this->schema->getName()); } $design->decor->contentEnd(); $design->tabs->contentEnd(); } if (!empty($sitemapInfo)) { $auth = CMSAuth::getInstance(); if ($auth->isSuperAdmin(UsersLogin::getCurrentUser())) { $link = sprintf('<a href="%scconfig/manage.php?schema=%s" target="_blank">Управление конфигом</a>', \Extasy\CMS::getDashboardWWWRoot(), $this->schema->getName()); $property = array('' => $link); } else { $property = array(); } SitemapCMSForms::outputSitemapTabSheet($sitemapInfo, $sheets[sizeof($sheets) - 1]['id'], $property); } $design->tabs->sheetsEnd(); $design->forms->hidden('schema', $this->schema->getName()); // Вывод конца $design->forms->submit('submit', 'Сохранить'); $design->forms->end(); $this->outputFooter(); }
public function main() { $this->jump(\Extasy\CMS::getDashboardWWWRoot()); }
/** * Данный метод все JS & CSS скрипты, которые всегда грузятся при загрузке движка */ public function initialScriptsAndCSS() { CMSDesign::insertCSS(CMS::getResourcesUrl() . 'extasy/ext3/resources/css/ext-all.css'); CMSDesign::insertCSS(CMS::getResourcesUrl() . 'extasy/css/default-theme.css'); CMSDesign::insertScript(CMS::getResourcesUrl() . 'extasy/js/locale/' . strtolower(OUTPUT_LANGUAGE) . '.js'); ?> <script type="text/javascript"> var systemInfo = { http_root: <?php print json_encode(\Extasy\CMS::getDashboardWWWRoot()); ?> }; </script> <!-- GLOBAL:PLACE JS HERE, PLEASE--><script type="text/javascript" src="http://static.hockey.local/resources/vendors/jquery.min.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/angular.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/angular-animate.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/angular-sanitize.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/angular-resource.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/sortable.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/date.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/angular-route.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/ui-bootstrap-0.13.0.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/vendors/angular/ui-bootstrap-tpls-0.13.0.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/extasy/js/api.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/extasy/js/extasyApi.js"></script><script type="text/javascript" src="http://static.hockey.local/resources/extasy/js/vendors/message.js"></script><!-- THANK YOU FOR JS --> <!-- PLACE JS HERE, PLEASE--><script type="text/javascript" src="/resources/extasy/js/vendors/jquery-1.10.2.min.js"></script><script type="text/javascript" src="/resources/extasy/js/vendors/jquery-migrate-1.2.1.js"></script><script type="text/javascript" src="/resources/extasy/js/vendors/bootstrap.js"></script><script type="text/javascript" src="/resources/extasy/js/vendors/bootstrap.submenu.js"></script><script type="text/javascript" src="/resources/extasy/js/vendors/sprintf.min.js"></script><script type="text/javascript" src="/resources/extasy/js/jquery-ui-1.10.3.custom.min.js"></script><script type="text/javascript" src="/resources/extasy/js/vendors/datepicker-ru.js"></script><script type="text/javascript" src="/resources/extasy/js/controller.js"></script><script type="text/javascript" src="/resources/extasy/js/net.js"></script><script type="text/javascript" src="/resources/extasy/js/contentloader.js"></script><script type="text/javascript" src="/resources/extasy/js/sysutils.js"></script><script type="text/javascript" src="/resources/extasy/js/dtree.js"></script><script type="text/javascript" src="/resources/extasy/js/vendors/tmpl.js"></script><script type="text/javascript" src="/resources/extasy/js/vendors/message.js"></script><script type="text/javascript" src="/resources/extasy/js/cms/main.js"></script><script type="text/javascript" src="/resources/extasy/js/cms/hints.js"></script><script type="text/javascript" src="/resources/extasy/js/cms/popup.js"></script><script type="text/javascript" src="/resources/extasy/js/cms/message.js"></script><script type="text/javascript" src="/resources/extasy/js/cms/editDocument.js"></script><script type="text/javascript" src="/resources/extasy/js/administrative/testSuite/index.js"></script><!-- THANK YOU FOR JS --> <?php CMSDesign::insertScript(CMS::getResourcesUrl() . 'extasy/ext3/adapter/ext/ext-base.js'); CMSDesign::insertScript(CMS::getResourcesUrl() . 'extasy/ext3/ext-all.js'); CMSDesign::insertScript(CMS::getResourcesUrl() . 'extasy/ext3/App/App.js'); }
public function getEditLink() { return sprintf('%ssitemap/edit.php?id=%d', CMS::getDashboardWWWRoot(), $this->id->getValue()); }
/** * Собирает информацию по текущему элементу (набор кнопок + возможность сортировки) */ public function getInformation() { $aInfo = Sitemap_Sample::get($this->nParent); $szUrl = $this->standalone ? 'index.php' : 'page-list.php'; if (empty($aInfo)) { throw new Exception('Page not found'); } $this->orderCondition = '`order` asc'; if (!empty($aInfo['script'])) { $aChild = Sitemap_Sample::selectScriptChild($aInfo['script']); foreach ($aChild as $key => $row) { $aChild[$key] = $row['document_name']; } } else { $validator = new \Extasy\Validators\ModelConfigValidator($aInfo['document_name'], array('sitemap', RegisteredDocument::ChildrenConfigName)); if ($validator->isValid()) { $aChild = $validator->getData(); } else { $aChild = array(); } } // Формируем блок кнопок // Добавляем в блок кнопки добавления документа // Если более 3 доступных документов для добавления формируем селект if (sizeof($aChild) > 3) { $useSelect = 1; require_once CONTROL_PATH . 'select.php'; $select = new CSelect(); $select->name = 'document_name'; $select->id = 'document_name'; $items = array(array('id' => '-1', 'name' => 'Добавить...')); } else { } foreach ($aChild as $documentName) { $title = call_user_func(array($documentName, 'getLabel'), \Extasy\Model\Model::labelAddItem); $href = $szUrl . '?parent=' . $this->nParent . '&add=' . $documentName; if (empty($useSelect)) { $this->aButton[$title] = $href; } else { $items[] = array('id' => $href, 'name' => $title); } } if (!empty($useSelect)) { $select->values = $items; $select->current = '-1'; $this->aButton[] = array('code' => $select); } if (!empty($aInfo['document_name']) || !empty($aInfo['script_admin_url'])) { $this->aButton[_msg('Редактировать')] = \Extasy\CMS::getDashboardWWWRoot() . 'sitemap/edit.php?id=' . $aInfo['id']; } $this->aButton[_msg('Сортировать')] = \Extasy\CMS::getDashboardWWWRoot() . 'sitemap/order.php?id=' . $aInfo['id']; }
/** * Формирует хлебные крошки для страницы. * ОБЩИЙ ПРИНЦИП: перебор всех предков, по url_key пытаемся восстановить скрипт, который выводит подветку карты сайта * если не найден скрипт, то подключаем основной блок aSitemap */ protected function selectBegin($aParent, $szTitle) { $aResult = array(); // Начинаем перебор с самого первого предка // Устанавливаем первым 100%-рабочий URL, основной контрол карты сайта $szUrlKey = \Extasy\CMS::getDashboardWWWRoot() . 'sitemap/index.php?id='; foreach ($aParent as $row) { // Обрабатываем ситуация url_key = "" (нарпимер, главная страница сайта) if (empty($row['url_key'])) { $row['url_key'] = 'index'; } // Вырезаем лидирующий слеш if ($row['url_key'][0] == '/') { $row['url_key'] = substr($row['url_key'], 1); } // Формируем путь в админке $szPath = CP_PATH . $row['url_key'] . '/index.php'; // ОП-ПА! Нашли скрипт, теперь все ссылки будут на него :) if (file_exists($szPath)) { // Если конечно в файле вызывается класс Sitemap_Controller_Data_List $szFileContent = file_get_contents($szPath); if (preg_match('#Sitemap_Controller_Data_List#i', $szFileContent)) { $szUrlKey = \Extasy\CMS::getDashboardWWWRoot() . $row['url_key'] . '/index.php?parent='; } } $aResult[$row['name']] = $szUrlKey . $row['id']; } $aResult[$szTitle] = '#'; return $aResult; }