コード例 #1
0
ファイル: Page.php プロジェクト: ei-grad/phorm
 /**
  * Список страниц
  * 
  * @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));
 }
コード例 #2
0
ファイル: User.php プロジェクト: ei-grad/phorm
 /**
  * Возвращает массив опций для построения таблицы 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;
 }
コード例 #3
0
ファイル: Widgets.php プロジェクト: ei-grad/phorm
 /**
  * Главная страница
  * 
  * @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));
     }
 }
コード例 #4
0
ファイル: Index.php プロジェクト: ei-grad/phorm
 /**
  * Расширенный рабочий стол
  * 
  * @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));
     }
 }
コード例 #5
0
ファイル: Resource.php プロジェクト: ei-grad/phorm
 /**
  * Возвращает массив опций для построения таблицы 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;
 }
コード例 #6
0
ファイル: Browser.php プロジェクト: ei-grad/phorm
 /**
  * Браузер материалов сайта
  * 
  * @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));
     }
 }
コード例 #7
0
ファイル: Media.php プロジェクト: ei-grad/phorm
 /**
  * Загрузка файлов
  * Метод переписан для поддержки 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->_('Не задан тип')))))));
     }
 }
コード例 #8
0
ファイル: Forms.php プロジェクト: ei-grad/phorm
 /**
  * Список записей формы
  * 
  * @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 не найдена');
     }
 }
コード例 #9
0
ファイル: Store.php プロジェクト: ei-grad/phorm
 /**
  * Список типов клиентов
  * 
  * @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));
     }
 }
コード例 #10
0
ファイル: Dictionaries.php プロジェクト: ei-grad/phorm
 /**
  * Список записей в справочнике
  * 
  * @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/');
     }
 }
コード例 #11
0
ファイル: Widget.php プロジェクト: ei-grad/phorm
 /**
  * Возвращает список макетов в виде массива конфигураций 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;
 }
コード例 #12
0
ファイル: Structures.php プロジェクト: ei-grad/phorm
 /**
  * Список свойств
  * 
  * @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));
     }
 }
コード例 #13
0
ファイル: Form.php プロジェクト: ei-grad/phorm
 /**
  * Конструктор
  *
  * @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);
         }
     }
 }