Beispiel #1
0
 public function __construct($groupName, $groupLabel)
 {
     $this->groupName = $groupName;
     $this->setGroupLabel($groupLabel);
     $this->setCssClasses();
     parent::__construct($groupName);
 }
 /**
  * constructor
  * @param $spec
  * @param $options
  */
 public function __construct($spec, $options = null)
 {
     $objLoader = new PluginLoader();
     $objLoader->setPluginLoader($this->getPluginLoader(PluginLoader::TYPE_FORM_DECORATOR));
     $objLoader->setPluginType(PluginLoader::TYPE_FORM_DECORATOR);
     $this->setPluginLoader($objLoader, PluginLoader::TYPE_FORM_DECORATOR);
     parent::__construct($spec, $options);
 }
Beispiel #3
0
 /**
  * Определяем массив опций и дергаем родительский конструктор
  *
  * @param mixed $spec
  * @param array $options
  */
 public function __construct($spec, $options = null)
 {
     require_once "Phorm/Structures.php";
     $Structures = new Phorm_Structures();
     $options['multioptions'] = $Structures->getPropertiesListAsPairs();
     //$this->setSeparator('</li><li>'); // Почему-то нельзя передать в помощнике вида в formRadio...
     parent::__construct($spec, $options);
 }
Beispiel #4
0
 /**
  * Определяем массив модулей и дергаем родительский конструктор
  *
  * @param mixed $spec
  * @param array $options
  */
 public function __construct($spec, $options = null)
 {
     require_once 'Phorm/Resource.php';
     $Resource = new Phorm_Resource();
     $pairs = isset($options['multioptions']) && is_array($options['multioptions']) ? $options['multioptions'] : array();
     $options['multioptions'] = $pairs + $Resource->getModulesListAsPairs();
     parent::__construct($spec, $options);
 }
Beispiel #5
0
 /**
  * Определяем массив опций и дергаем родительский конструктор
  *
  * @param mixed $spec
  * @param array $options
  */
 public function __construct($spec, $options = null)
 {
     require_once "Phorm/Widget.php";
     $translate = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('Translate');
     $Widget = new Phorm_Widget();
     $Widgets = array(null => $translate->_('---Выберите---')) + $Widget->getWidgetsSetsList();
     $options['multioptions'] = $Widgets;
     parent::__construct($spec, $options);
 }
Beispiel #6
0
 public function __construct($sId = 'MultiInput', $sType = '')
 {
     parent::__construct($sId);
     $this->setRegisterInArrayValidator(false);
     $this->setDecorators(array('MultiInput', 'Errors'));
     //s'il s'agit d'un type de champ mail, alors on ajoute le validateur MultiMail
     if ($sType == 'mail') {
         $this->addValidator(new Projet_Validate_MultiMail(), true, array());
     }
 }
Beispiel #7
0
 /**
  * Определяем массив опций и дергаем родительский конструктор
  *
  * @param mixed $spec
  * @param array $options
  */
 public function __construct($spec, $options = null)
 {
     $this->translate = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('Translate');
     $this->elements = $this->getElements();
     $this->configs = $this->getConfigs();
     $this->forms = $this->getForms();
     $this->renders = $this->getRenders();
     /**
      * Формируем выпадающий список с типами элементов
      */
     $options['multioptions'] = array(null => $this->translate->_('---Выберите---'));
     foreach ($this->configs as $fieldtype => $form) {
         $options['multioptions'][$fieldtype] = $form['label'];
     }
     /**
      * Инициализируем родительский конструктор
      */
     parent::__construct($spec, $options);
 }
Beispiel #8
0
 /**
  * Определяем массив записей, тип элемента и дергаем родительский конструктор
  *
  * @param mixed $spec
  * @param array $options
  */
 public function __construct($spec, $options = null)
 {
     $translate = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('Translate');
     $pairs = array();
     /**
      * Определяем тип элемента
      * select, radio - одиночный выбор
      * multiselect, checkbox - множественный выбор
      */
     $type = isset($options['type']) && in_array(strtolower($options['type']), array('select', 'multiselect', 'checkbox', 'radio')) ? strtolower($options['type']) : 'select';
     switch ($type) {
         case 'multiselect':
             $this->helper = 'formSelect';
             $this->_isArray = true;
             $this->multiple = 'multiple';
             break;
         case 'checkbox':
             $this->helper = 'formMultiCheckbox';
             $this->_isArray = true;
             $this->multiple = 'multiple';
             break;
         case 'radio':
             $this->helper = 'formRadio';
             break;
         default:
             $pairs = array(null => $translate->_('---Выберите---'));
             break;
     }
     /**
      * Добавляем записи из справочника на элемент
      */
     if (isset($options['dictionaryid'])) {
         require_once 'Phorm/Dictionaries.php';
         $Dictionaries = new Phorm_Dictionaries();
         if (isset($options['multioptions']) && is_array($options['multioptions'])) {
             $pairs += $options['multioptions'];
         }
         $options['multioptions'] = $pairs + $Dictionaries->getEntriesListAsPairs($options['dictionaryid']);
         unset($options['dictionaryid']);
     }
     parent::__construct($spec, $options);
 }
Beispiel #9
0
 /**
  * Определяем массив опций и дергаем родительский конструктор
  *
  * @param mixed $spec
  * @param array $options
  */
 public function __construct($spec, $options = null)
 {
     $this->translate = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('Translate');
     /**
      * Получаем информацию о структуре или структурах
      */
     if (isset($options['structures'])) {
         $options['structures'] = explode(',', $options['structures']);
         require_once 'Phorm/Structures.php';
         $StructuresModel = new Phorm_Structures();
         $structures = array();
         $multioptions = array();
         foreach ($options['structures'] as $key => $structureid) {
             if ($StructureInfo = $StructuresModel->getStructureFullInfo($structureid)) {
                 $structures[$StructureInfo['structureid']] = $StructureInfo;
             } else {
                 unset($options['structures'][$key]);
             }
             $multioptions[$StructureInfo['structureid']] = $StructureInfo['structurename'];
             $options['multioptions'] = $multioptions;
         }
         /**
          * Определяем шаблон формы для элементов структур
          */
         $form_tpl = new Phorm_Form(null, null, array('elements' => $options['elements']));
         /**
          * Создаем форму для каждой из структур
          */
         require_once 'Phorm/Form.php';
         foreach ($structures as $structure) {
             $form = new Phorm_Form();
             $form->removeDecorator('Form');
             $form->removeDecorator('DtDdWrapper');
             foreach ($structure['groups'] as $group) {
                 $form->setElementsBelongTo($spec . '[' . $structure['structureid'] . ']' . '[' . $group['groupid'] . ']');
                 /**
                  * Добавляем элементы на форму
                  * @todo Добавить обязательность заполнения
                  */
                 $elements = array();
                 // массив элементов для добавления в DisplayGroup
                 foreach ($group['properties'] as $property) {
                     /**
                      * Определяем тип используемого элемента
                      */
                     $type = $property['propertytype'];
                     $realtype = in_array($type, array('select', 'structure', 'dictionary')) && $property['ismultiple'] == 'yes' ? 'multiselect' : $type;
                     if ($element = clone $form_tpl->getElement($realtype)) {
                         // Устанавливаем имя и заголовок элемента
                         $element->setLabel($property['propertyname'])->setName($property['propertyid']);
                         // Допиливаем обычный селект
                         if ($type == 'select' && !empty($property['propertyoptions'])) {
                             $propertyoptions = array();
                             // ставим ключи массива опций в их значение
                             foreach ($property['propertyoptions'] as $prop) {
                                 $propertyoptions[$prop] = $prop;
                             }
                             if ($property['ismultiple'] == 'no') {
                                 $propertyoptions = array(null => $this->translate->_('---Выберите---')) + $propertyoptions;
                             }
                             $element->setMultiOptions($propertyoptions);
                         }
                         // Допиливаем селект из другой структуры
                         if ($type == 'structure' && $property['structureid'] > 0) {
                             $propertyoptions = $StructuresModel->getStructureResourcesAsPairs($property['structureid']);
                             if ($property['ismultiple'] == 'no') {
                                 $propertyoptions = array(null => $this->translate->_('---Выберите---')) + $propertyoptions;
                             }
                             $element->setMultiOptions($propertyoptions);
                         }
                         // Допиливаем селект из справочника
                         if ($type == 'dictionary' && $property['dictionaryid'] > 0) {
                             $DictionariesModel = new Phorm_Dictionaries();
                             $propertyoptions = $DictionariesModel->getEntriesListAsPairs($property['dictionaryid']);
                             if ($property['ismultiple'] == 'no') {
                                 $propertyoptions = array(null => $this->translate->_('---Выберите---')) + $propertyoptions;
                             }
                             $element->setMultiOptions($propertyoptions);
                         }
                         $form->addElement($element);
                         $elements[] = $property['propertyid'];
                     }
                 }
                 /**
                  * Если групп несколько, то добавляем DisplayGroup
                  * @todo Добавить в опции возможность задавать css-классы
                  */
                 if (count($structure['groups']) > 1) {
                     $DisplayGroup = $form->addDisplayGroup($elements, 'group-' . $group['groupid'], array('legend' => $group['groupname']));
                 }
             }
             $this->forms[$structure['structureid']] = $form;
             $this->renderforms[$structure['structureid']] = $form->render();
         }
         unset($options['elements']);
     }
     /**
      * Инициализируем родительский конструктор
      */
     parent::__construct($spec, $options);
 }
Beispiel #10
0
 /**
  * Определяем массив разделов и дергаем родительский конструктор
  *
  * @param mixed $spec
  * @param array $options
  */
 public function __construct($spec, $options = null)
 {
     /**
      * Определяем тип элемента
      * select, radio - одиночный выбор
      * multiselect, checkbox - множественный выбор
      */
     $this->type = isset($options['type']) && in_array(strtolower($options['type']), array('select', 'multiselect', 'checkbox', 'radio')) ? strtolower($options['type']) : 'select';
     if ($this->type == 'multiselect') {
         $this->_isArray = true;
         $this->multiple = 'multiple';
     }
     if ($this->type == 'checkbox') {
         $this->_isArray = true;
     }
     /**
      * Переопределяем помощник вида при использовании Canonical и чекбоксов
      */
     if ($this->type == 'checkbox' && isset($options['usecanonical']) && $options['usecanonical'] == true) {
         $this->helper = 'selectCanonical';
         // Враппер к formCategories с добавлением JQuery-логики
     }
     /**
      * Манипуляция с разделами
      */
     require_once "Phorm/Categories.php";
     $Categories = new Phorm_Categories();
     /**
      * Получаем список разделов
      */
     if (isset($options['moduleid'])) {
         $CategoriesList = $Categories->getCategoriesPathsByModule($options['moduleid']);
     } else {
         $CategoriesList = $Categories->getList();
     }
     /**
      * Собираем массив пар для мультиопций
      */
     $pairs = isset($options['multioptions']) && is_array($options['multioptions']) ? $options['multioptions'] : array();
     foreach ($CategoriesList as $category) {
         if (isset($options['moduleid']) && $category['moduleid'] != $options['moduleid']) {
             continue;
         }
         $pairs[$category['categoryid']] = $category['categoryname'];
     }
     /**
      * Добавляем разделы для визуализации вложенности в хелпере
      */
     if (isset($options['multioptions']) && is_array($options['multioptions'])) {
         // Унифицируем опции, заданные в конфигурационном файле формы
         foreach ($options['multioptions'] as $key => $val) {
             if (is_string($val) && is_string($key)) {
                 $options['multioptions'][$key] = array('categoryid' => $key, 'categoryname' => $val, 'clevel' => 0, 'visible' => 'yes');
             }
         }
         $options['categories'] = $options['multioptions'] + $CategoriesList;
     } else {
         $options['categories'] = $CategoriesList;
     }
     /**
      * Добавляем мультиопции для валидации
      */
     $options['multioptions'] = $pairs;
     /**
      * Инициализируем родительский конструктор
      */
     parent::__construct($spec, $options);
 }