Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 /**
  *   Проверяет страницу, если она скрипт редиректит на страницу скрипта, иначе возвращает модель класса
  * @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;
 }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
    /**
     * Отображает вкладку для редактирования 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();
    }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 6
0
 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');
 }
Ejemplo n.º 7
0
    /**
     * Отображает ссылку, открывающую попап
     * @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 
    }
Ejemplo n.º 8
0
 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;
     }
 }
Ejemplo n.º 9
0
 /**
  * Создает документ 
  * @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());
 }
Ejemplo n.º 10
0
 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;
 }
Ejemplo n.º 11
0
 /**
  * Отображает форму редактирования
  */
 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();
 }
Ejemplo n.º 12
0
 public function main()
 {
     $this->jump(\Extasy\CMS::getDashboardWWWRoot());
 }
Ejemplo n.º 13
0
    /**
     * Данный метод все 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');
    }
Ejemplo n.º 14
0
 public function getEditLink()
 {
     return sprintf('%ssitemap/edit.php?id=%d', CMS::getDashboardWWWRoot(), $this->id->getValue());
 }
Ejemplo n.º 15
0
 /**
  * Собирает информацию по текущему элементу (набор кнопок + возможность сортировки)
  */
 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'];
 }
Ejemplo n.º 16
0
 /**
  * Формирует хлебные крошки для страницы. 
  * ОБЩИЙ ПРИНЦИП: перебор всех предков, по 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;
 }