コード例 #1
0
 /**
  * prepareForm
  * @author Cornelius Hansjakob <*****@*****.**>
  * @version 1.2
  */
 public function prepareForm()
 {
     $this->core->logger->debug('massiveart->generic->forms->GenericForm->prepareForm()');
     try {
         /**
          * add basic hidden fields
          */
         $this->addElement('hidden', 'id', array('value' => $this->setup->getElementId(), 'decorators' => array('Hidden')));
         $this->addElement('hidden', 'formId', array('value' => $this->setup->getFormId(), 'decorators' => array('Hidden')));
         $this->addElement('hidden', 'formVersion', array('value' => $this->setup->getFormVersion(), 'decorators' => array('Hidden')));
         $this->addElement('hidden', 'formTypeId', array('value' => $this->setup->getFormTypeId(), 'decorators' => array('Hidden')));
         $this->addElement('hidden', 'formType', array('value' => $this->setup->getFormType(), 'decorators' => array('Hidden')));
         $this->addElement('hidden', 'templateId', array('value' => $this->setup->getTemplateId(), 'decorators' => array('Hidden')));
         $this->addElement('hidden', 'languageId', array('value' => $this->setup->getLanguageId(), 'decorators' => array('Hidden')));
         $arrRegionTitles = array();
         /**
          * go through the tabs and add to the form
          */
         $intSubFormCounter = 0;
         foreach ($this->setup->Tabs() as $objTab) {
             $intSubFormCounter++;
             $objSubForm = new GenericSubForm();
             $objSubForm->setGenericForm($this);
             $objSubForm->setId($objTab->getTabId());
             $objSubForm->setTitle($objTab->getTabTitle());
             $objSubForm->setHide($intSubFormCounter == 1 ? false : true);
             /**
              * go through the regions and add to the form
              */
             foreach ($objTab->Regions() as $objRegion) {
                 $arrRegionFieldElements = array();
                 if ($objRegion->getRegionIsMultiply() == true) {
                     if (count($objRegion->RegionInstanceIds()) > 0) {
                         foreach ($objRegion->RegionInstanceIds() as $intRegionInstanceId) {
                             /**
                              * go through fields of the region
                              */
                             foreach ($objRegion->getFields() as $objField) {
                                 $objSubForm->addField($objField, $objRegion->getRegionId(), '_' . $intRegionInstanceId, $intRegionInstanceId);
                                 if ($objField->isRegionTitle == 1) {
                                     $arrRegionTitles[$objRegion->getRegionId() . '_' . $intRegionInstanceId] = $objField->getInstanceValue($intRegionInstanceId);
                                 }
                                 /**
                                  * add field to region
                                  */
                                 if (!array_key_exists($objRegion->getRegionId() . '_' . $intRegionInstanceId, $arrRegionFieldElements)) {
                                     $arrRegionFieldElements[$objRegion->getRegionId() . '_' . $intRegionInstanceId] = array();
                                 }
                                 array_push($arrRegionFieldElements[$objRegion->getRegionId() . '_' . $intRegionInstanceId], $objField->name . '_' . $intRegionInstanceId);
                             }
                         }
                     } else {
                         $intRegionInstanceId = 1;
                         $objRegion->addRegionInstanceId($intRegionInstanceId);
                         /**
                          * go through fields of the region
                          */
                         foreach ($objRegion->getFields() as $objField) {
                             $objSubForm->addField($objField, $objRegion->getRegionId(), '_' . $intRegionInstanceId);
                             /**
                              * add field to region
                              */
                             if (!array_key_exists($objRegion->getRegionId() . '_' . $intRegionInstanceId, $arrRegionFieldElements)) {
                                 $arrRegionFieldElements[$objRegion->getRegionId() . '_' . $intRegionInstanceId] = array();
                             }
                             array_push($arrRegionFieldElements[$objRegion->getRegionId() . '_' . $intRegionInstanceId], $objField->name . '_' . $intRegionInstanceId);
                         }
                     }
                     /**
                      * go through fields of the region
                      */
                     foreach ($objRegion->getFields() as $objField) {
                         $objSubForm->addField($objField, $objRegion->getRegionId(), '_REPLACE_n', null, true);
                         if (!array_key_exists($objRegion->getRegionId() . '_REPLACE_n', $arrRegionFieldElements)) {
                             $arrRegionFieldElements[$objRegion->getRegionId() . '_REPLACE_n'] = array();
                         }
                         array_push($arrRegionFieldElements[$objRegion->getRegionId() . '_REPLACE_n'], $objField->name . '_REPLACE_n');
                     }
                 } else {
                     /**
                      * go through fields of the region
                      */
                     foreach ($objRegion->getFields() as $objField) {
                         $objSubForm->addField($objField, $objRegion->getRegionId());
                         /**
                          * add field to region
                          */
                         array_push($arrRegionFieldElements, $objField->name);
                     }
                 }
                 /**
                  * add region to form
                  */
                 $strRegionStyle = '';
                 if ($objRegion->getRegionIsCollapsed() == false) {
                     $strRegionStyle = 'display:none;';
                 }
                 if ($objRegion->getRegionIsMultiply() == true) {
                     $strRegionInstances = '';
                     $intRegionCounter = 0;
                     foreach ($objRegion->RegionInstanceIds() as $intRegionInstanceId) {
                         $intRegionCounter++;
                         $objSubForm->addDisplayGroup($arrRegionFieldElements[$objRegion->getRegionId() . '_' . $intRegionInstanceId], $objRegion->getRegionId() . '_' . $intRegionInstanceId, array('columns' => $objRegion->getRegionCols(), 'regionTypeId' => $objRegion->getRegionTypeId(), 'collapsable' => $objRegion->getRegionCollapsable() == true ? 1 : 0, 'position' => $objRegion->getRegionPosition(), 'regionCounter' => $intRegionCounter, 'style' => $strRegionStyle, 'regionId' => $objRegion->getRegionId(), 'regionExt' => $intRegionInstanceId, 'isMultiply' => true, 'regionTitle' => array_key_exists($objRegion->getRegionId() . '_' . $intRegionInstanceId, $arrRegionTitles) ? $arrRegionTitles[$objRegion->getRegionId() . '_' . $intRegionInstanceId] : ''));
                         $objSubForm->getDisplayGroup($objRegion->getRegionId() . '_' . $intRegionInstanceId)->setLegend($objRegion->getRegionTitle());
                         $objSubForm->getDisplayGroup($objRegion->getRegionId() . '_' . $intRegionInstanceId)->setDecorators(array('FormElements', 'Region'));
                         $strRegionInstances .= '[' . $intRegionInstanceId . ']';
                     }
                     $objSubForm->addDisplayGroup($arrRegionFieldElements[$objRegion->getRegionId() . '_REPLACE_n'], $objRegion->getRegionId() . '_REPLACE_n', array('columns' => $objRegion->getRegionCols(), 'regionTypeId' => $objRegion->getRegionTypeId(), 'collapsable' => $objRegion->getRegionCollapsable() == true ? 1 : 0, 'position' => $objRegion->getRegionPosition(), 'style' => $strRegionStyle, 'regionId' => $objRegion->getRegionId(), 'regionExt' => 'REPLACE_n', 'isMultiply' => true, 'isEmptyWidget' => true));
                     $objSubForm->getDisplayGroup($objRegion->getRegionId() . '_REPLACE_n')->setLegend($objRegion->getRegionTitle());
                     $objSubForm->getDisplayGroup($objRegion->getRegionId() . '_REPLACE_n')->setDecorators(array('FormElements', 'Region'));
                     $objSubForm->addElement('hidden', 'Region_' . $objRegion->getRegionId() . '_Instances', array('value' => $strRegionInstances, 'decorators' => array('Hidden')));
                     $objSubForm->addElement('hidden', 'Region_' . $objRegion->getRegionId() . '_Order', array('value' => '', 'decorators' => array('Hidden')));
                 } else {
                     $objSubForm->addDisplayGroup($arrRegionFieldElements, $objRegion->getRegionId(), array('columns' => $objRegion->getRegionCols(), 'regionTypeId' => $objRegion->getRegionTypeId(), 'collapsable' => $objRegion->getRegionCollapsable() == true ? 1 : 0, 'position' => $objRegion->getRegionPosition(), 'style' => $strRegionStyle));
                     $objSubForm->getDisplayGroup($objRegion->getRegionId())->setLegend($objRegion->getRegionTitle());
                     $objSubForm->getDisplayGroup($objRegion->getRegionId())->setDecorators(array('FormElements', 'Region'));
                 }
             }
             $this->addSubForm($objSubForm, self::SUB_FROM_ID_PREFIX . $objSubForm->getId());
         }
     } catch (Exception $exc) {
         $this->core->logger->err($exc);
     }
 }