예제 #1
0
 /**
  * generate all tooltips
  *
  * @return \Umc\Base\Model\Tooltip[]
  */
 public function getTooltips()
 {
     if (!$this->_scopeConfig->isSetFlag(AbstractTab::XML_TOOLTIPS_ENABLED_PATH)) {
         return [];
     }
     if (is_null($this->tooltips)) {
         $this->tooltips = [];
         foreach ($this->formConfig->getConfig('form') as $entityId => $entitySettings) {
             if (isset($entitySettings['fieldset'])) {
                 foreach ($entitySettings['fieldset'] as $fieldsetSettings) {
                     if (isset($fieldsetSettings['field'])) {
                         foreach ($fieldsetSettings['field'] as $fieldId => $fieldSettings) {
                             if (isset($fieldSettings['tooltip']) && isset($fieldSettings['label'])) {
                                 /** @var \Umc\Base\Model\Tooltip  $tooltip */
                                 $tooltip = $this->factory->create();
                                 $tooltip->setTitle(__($fieldSettings['label']));
                                 $tooltip->setMessage(__($fieldSettings['tooltip']));
                                 $tooltip->setId($entityId . '_' . $fieldId);
                                 $this->tooltips[] = $tooltip;
                             }
                         }
                     }
                 }
             }
         }
     }
     return $this->tooltips;
 }
예제 #2
0
 /**
  * render the form
  *
  * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  * @return string
  */
 public function render(AbstractElement $element)
 {
     $html = $this->_getHeaderHtml($element);
     $formName = $this->getFormName();
     $config = $this->formConfig->getConfig('form/' . $formName, true, []);
     foreach ($config['fieldset'] as $fieldset) {
         foreach ($fieldset['field'] as $id => $field) {
             if ($this->formConfig->getBoolValue($field, 'system') && $field['type'] != 'hidden') {
                 $html .= $this->getFieldHtml($element, $id, $field);
             }
         }
     }
     $html .= $this->_getFooterHtml($element);
     return $html;
 }
예제 #3
0
 /**
  * get form fields
  *
  * @return array
  */
 public function getFields()
 {
     $entities = [$this->moduleInstance->getEntityCode() => __('MODULE'), $this->settingsInstance->getEntityCode() => __('SETTINGS'), $this->entityInstance->getEntityCode() => __('ENTITY'), $this->attributeInstance->getEntityCode() => __('ATTRIBUTE')];
     $data = [];
     foreach ($entities as $entityCode => $entityLabel) {
         $data[] = ['__colspan' => $entityLabel];
         $config = $this->formConfig->getConfig('form/' . $entityCode, true, []);
         foreach ($config['fieldset'] as $fieldset) {
             $data[] = ['__colspan' => $fieldset['label']];
             foreach ($fieldset['field'] as $field) {
                 if ($field['type'] != 'hidden') {
                     $data[] = ['field' => $field['label'], 'type' => $field['type'], 'description' => isset($field['tooltip']) ? $field['tooltip'] : ''];
                 }
             }
         }
     }
     return $data;
 }
예제 #4
0
 /**
  * validate model
  *
  * @return array
  */
 public function validate()
 {
     $configData = $this->formConfig->getConfig('form/' . $this->getEntityCode(), true, []);
     $errors = [];
     if (isset($configData['fieldset'])) {
         foreach ($configData['fieldset'] as $settings) {
             foreach ($settings['field'] as $fieldId => $fieldSettings) {
                 if ($this->shouldValidateField($fieldId, $fieldSettings)) {
                     $fieldErrors = $this->validateField($fieldId, $fieldSettings);
                     if (count($fieldErrors)) {
                         $key = $this->getValidationErrorKey($fieldId);
                         if (!isset($errors[$key])) {
                             $errors[$key] = [];
                         }
                         $errors[$key] = array_merge($errors[$key], $fieldErrors);
                     }
                 }
             }
         }
     }
     return $errors;
 }
예제 #5
0
 /**
  * prepare the form
  *
  * @return $this
  */
 protected function _prepareForm()
 {
     $configData = $this->formConfig->getConfig('form/' . $this->model->getEntityCode(), true, []);
     $this->buildForm($configData);
     return $this;
 }