/** * Список страниц * * @return void */ public function indexAction() { $grid_options = Phorm_Config::xml('grids/control/page.xml', 'index'); /** * Перезагрузка меню геообъектов */ if ($this->_request->isXmlHttpRequest() && isset($this->_params['pageid'])) { $this->view->setEscape('trim'); $Menu = $this->view->navigation()->menu($this->Page->getNavigationMenu($this->_params['pageid']))->render(); die($Menu); /** * Данные для Grida */ } elseif ($this->_request->isXmlHttpRequest()) { $rows = $this->Page->getPageList($this->_params); $paginator = $this->Page->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $grid_options)); return true; } /** * JS для обновления меню */ if (isset($this->_params['tree']) && $this->_params['tree'] == 'reload' && isset($this->_params['pageid'])) { $js = 'window.parent.trees.page.' . $this->_params['controller'] . '.reload(\'' . $this->view->siteUrl() . '/control/' . $this->_params['controller'] . '/?pageid=' . $this->_params['pageid'] . '\');'; $this->_boot->jquery->addOnload($js); } /** * Grid */ $this->view->assign('PagesDataTable', $this->view->DataGrid('PagesDataTable', $grid_options)); }
/** * Возвращает массив опций для построения таблицы Phorm_JQuery_DataGrid * * @param string $section Секция xml-файла * @return array */ public function getGridOptions($section = 'index') { $options = Phorm_Config::xml('grids/control/users.xml', $section); // Добавляем список ролей на поисковую форму if (isset($options['search']['roleid'])) { $options['search']['roleid']['optiondata'] = $this->getRolesListAsPairs(); } return $options; }
/** * Главная страница * * @return void */ public function indexAction() { $options = Phorm_Config::xml('grids/control/widgets.xml'); if ($this->_request->isXmlHttpRequest()) { $rows = $this->Widget->getWidgetsSetsFullList(); $paginator = $this->Widget->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $options)); } else { $this->view->assign('WidgetsDataTable', $this->view->DataGrid('WidgetsDataTable', $options)); } }
/** * Расширенный рабочий стол * * @return void */ public function extendAction() { $grid_options = Phorm_Config::xml('grids/control/log.xml'); if ($this->_request->isXmlHttpRequest()) { $Log = new Phorm_Log(); $rows = $Log->getLogRecords($this->_params); $paginator = $Log->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $grid_options)); } else { $this->view->assign('LogDataTable', $this->view->DataGrid('LogDataTable', $grid_options)); } }
/** * Возвращает массив опций для построения таблицы Phorm_JQuery_DataGrid * * @param string $section Секция xml-файла * @return array */ public function getGridOptions($section = 'index') { /** * Расширяем конфигурацию на основе мастер-файла */ $files = array_unique(array('resources/grids.xml', $this->_configpath . '/grids.xml')); $options = Phorm_Config::xml($files, $section); /** * Добавляем список разделов на поисковую форму */ if (isset($options['search']['categoryid'])) { $options['search']['categoryid']['optiondata'] = $this->getCategoriesListByModule($this->_moduleid); } return $options; }
/** * Браузер материалов сайта * * @return void */ public function resourcesAction() { $this->Resource = new Phorm_Resource(); $options = Phorm_Config::xml('grids/control/browser.xml', 'resources'); if ($this->_request->isXmlHttpRequest()) { $categories = $this->Resource->getCategoriesPathsByModule(); foreach ($categories as $category) { $options['headings']['categoryid']['optiondata'][] = array('categoryid' => $category['categoryid'], 'categoryname' => str_repeat(' ', $category['clevel'] * 3) . $category['categoryname']); } //$options['headings']['categoryid']['optiondata'] = $this->Resource->getCategoriesListByModule(); //$options['headings']['categoryid']['optiondata'] = $categories; $rows = $this->Resource->getResourcesList($this->_params); $paginator = $this->Resource->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $options)); } else { $this->view->assign('ResourcesDataTable', $this->view->DataGrid('ResourcesDataTable', $options)); } }
/** * Загрузка файлов * Метод переписан для поддержки IE8- и загрузку через iframe * * @return void */ public function uploadAction() { Zend_Controller_Action_HelperBroker::removeHelper('viewRenderer'); if (isset($this->_params['type'])) { $filetype = $this->_params['type']; foreach ($_FILES as $filename => $data) { break; } // Определяем имя элемента загружаемого файла // Получаем конфигурацию формы $config = Phorm_Config::xml('forms/control/media.xml', 'upload'); if (isset($config['elements'][$filetype]) && isset($filename)) { // Выделяем из конфигурации формы нужный тип элемента и инициализируем форму с нужным именем элемента $form = new Phorm_Form(null, null, array('elements' => array($filename => $config['elements'][$filetype]))); // Получаем объект элемента из формы $element = $form->getElement($filename); // Валидируем элемент if ($element->isValid($filename)) { // Получаем информацию о файле $fileinfo = $element->getTransferAdapter()->getFileInfo($filename); // Добавляем тип медиа-файла $fileinfo[$filename]['mediatype'] = $filetype; // Сохраняем файл в медиа-библиотеке if ($MediaInfo = $this->Media->saveUploadedFile($fileinfo[$filename])) { // Возвращаем информацию о файле как об объекте медиа-библиотеки exit(Zend_Json::encode(array($MediaInfo))); } else { // Ошибки сохранения exit(Zend_Json::encode(array(array('errors' => array_values($this->Media->_errors))))); } } else { // Ошибки валидации exit(Zend_Json::encode(array(array('errors' => array_values($form->getMessages()))))); } } else { // Ошибка в запросе типа элемента exit(Zend_Json::encode(array(array('errors' => array(array($this->_translate->_('Неверный тип запроса'))))))); } } else { // Ошибка - не указан тип элемента exit(Zend_Json::encode(array(array('errors' => array(array($this->_translate->_('Не задан тип'))))))); } }
/** * Список записей формы * * @return void */ public function entriesAction() { if (isset($this->_params['resourceid']) && ($FormInfo = $this->Forms->getFullFormInfo($this->_params['resourceid']))) { $options = Phorm_Config::xml('/resources/forms/control/grids.xml', 'entries'); if ($this->_request->isXmlHttpRequest()) { $rows = $this->Forms->getEntriesList($FormInfo['resourceid']); $paginator = $this->Forms->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $options)); } else { $this->view->assign('Header', $this->_translate->_('Список записей формы') . ' «' . $FormInfo['resourcename'] . '»'); $this->view->assign('EntriesDataTable', $this->view->DataGrid('EntriesDataTable', $options)); } } else { return $this->composeErrorMessage('Форма с указанным Id не найдена'); } }
/** * Список типов клиентов * * @return void * @todo Перевести все гриды на compose-метод аля composeDataGrid($gridname,$gridoptions,$model,$methodname) */ public function clientgroupsAction() { $options = Phorm_Config::xml('grids/control/store.xml', 'clientgroups'); if ($this->_request->isXmlHttpRequest()) { $rows = $this->Store->getClientgroupsList($this->_params); $paginator = $this->Store->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $options)); } else { $this->view->assign('GridDataTable', $this->view->DataGrid('GridDataTable', $options)); } }
/** * Список записей в справочнике * * @return void */ public function entriesAction() { if (isset($this->_params['dictionaryid']) && ($DictionaryInfo = $this->Dictionaries->getDictionaryInfo($this->_params['dictionaryid']))) { $options = Phorm_Config::xml('grids/control/dictionaries.xml', 'entries'); if ($this->_request->isXmlHttpRequest()) { $rows = $this->Dictionaries->getEntriesList($DictionaryInfo['dictionaryid'], $this->_params); $paginator = $this->Dictionaries->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $options)); } else { $this->view->assign('Header', $this->_translate->_('Список записей в справочнике') . ' «' . $DictionaryInfo['dictionaryname'] . '»'); $this->view->assign('EntriesDataTable', $this->view->DataGrid('EntriesDataTable', $options)); } } else { return $this->composeErrorMessage('Справочник с указанным Id не найден', '/control/dictionaries/'); } }
/** * Возвращает список макетов в виде массива конфигураций Zend_Config * * @return array */ public function getLayoutsList() { $path = APPLICATION_PATH . '/configs/layouts/'; $handler = opendir($path); $masterfiles = array(); while (($file = readdir($handler)) !== false) { if (strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'xml') { //$masterfiles[pathinfo($file,PATHINFO_FILENAME)] = new Zend_Config_Xml($path . $file); $masterfiles[pathinfo($file, PATHINFO_FILENAME)] = Phorm_Config::xml('/layouts/' . $file); } } closedir($handler); return $masterfiles; }
/** * Список свойств * * @return void */ public function propertiesAction() { $options = Phorm_Config::xml('grids/control/structures.xml', 'properties'); if ($this->_request->isXmlHttpRequest()) { $rows = $this->Structures->getPropertiesList($this->_params); $paginator = $this->Structures->getPaginator(); $this->_helper->json(Phorm_JQuery_DataGrid::data($rows, $paginator, $options)); } else { $this->view->assign('PropertiesDataTable', $this->view->DataGrid('PropertiesDataTable', $options)); } }
/** * Конструктор * * @param mixed $files Путь к файлу формы или массив путей относительно папки application/configs) * @param string $section Имя секции (секция общая для всех файлов !!!) * @param mixed $options Дополнительные опции array | Zend_Config * * @return Zend_Form * @todo Сделать ключи опций регистронезависимыми */ public function __construct($files = null, $section = null, $options = null) { /** * Получаем объект загрузчика */ $front = Zend_Controller_Front::getInstance(); $this->_boot = $front->getParam('bootstrap'); /** * Получаем объект конфигурации */ $config = is_null($files) ? array() : Phorm_Config::xml($files, $section, true); /** * Расширяем конфигурацию */ if ($options instanceof Zend_Config) { $options = $options->toArray(); } if (is_array($options)) { $config = array_merge_recursive($config, $options); } /** * Добавляем наши пути */ $prefixPath = array(array('prefix' => 'ZendX_JQuery_Form', 'path' => 'ZendX/JQuery/Form'), array('prefix' => 'Phorm_Form', 'path' => 'Phorm/Form'), array('prefix' => 'Phorm_JQuery_Form', 'path' => 'Phorm/JQuery/Form')); $config['prefixPath'] = isset($config['prefixPath']) && is_array($config['prefixPath']) ? array_merge(array_values($config['prefixPath']), $prefixPath) : $prefixPath; $elementPrefixPath = array(array('prefix' => 'Phorm_Filter', 'path' => 'Phorm/Filter', 'type' => 'filter'), array('prefix' => 'Phorm_Validate', 'path' => 'Phorm/Validate', 'type' => 'validate')); $config['elementPrefixPath'] = isset($config['elementPrefixPath']) && is_array($config['elementPrefixPath']) ? array_merge(array_values($config['elementPrefixPath']), $elementPrefixPath) : $elementPrefixPath; /** * Удаляем элементы, если это определено в конфигурации */ if (isset($config['elements']) && is_array($config['elements'])) { foreach ($config['elements'] as $elementname => $element) { if (isset($element['options']['isexcluded']) && $element['options']['isexcluded'] == 1) { unset($config['elements'][$elementname]); // Удаляем элемент из групп if (isset($config['displayGroups']) && is_array($config['displayGroups'])) { foreach ($config['displayGroups'] as $groupname => $group) { if (isset($group['elements']) && is_array($group['elements'])) { foreach ($group['elements'] as $gr_elementname => $gr_element) { if ($gr_elementname === $elementname) { unset($config['displayGroups'][$groupname]['elements'][$gr_elementname]); } } } } } } } } /** * Удаляем группы, в которых нет элементов */ if (isset($config['displayGroups']) && is_array($config['displayGroups'])) { foreach ($config['displayGroups'] as $groupname => $group) { if (!isset($group['elements']) || count($group['elements']) === 0) { unset($config['displayGroups'][$groupname]); } } } /** * Добавляем класс для формы ui-form */ $config['attribs']['class'] = isset($config['attribs']['class']) ? $config['attribs']['class'] . ' ui-form' : 'ui-form'; /** * Инициализируем объект Zend_Form */ $this->setOptions($config); $this->setTranslator($this->_boot->translate); $this->init(); $this->loadDefaultDecorators(); /** * Удаляем декораторы для заголовков в группах, где только один элемент */ foreach ($this->getDisplayGroups() as $group) { $elements = $group->getElements(); if (count($elements) === 1) { foreach ($elements as $element) { $element->removeDecorator('Label'); } } } /** * Удаляем декораторы у элементов Zend_Form_Element_Hidden и добавляем unescape на описание всех элементов */ foreach ($this->getElements() as $element) { if ($element->getType() == 'Zend_Form_Element_Hidden') { $element->removeDecorator('Label'); } if ($desc = $element->getDecorator('Description')) { $desc->setEscape(false); } } }