/**
  * Get grouped categories
  * @return \Magefan\Blog\Model\ResourceModel\Category\Collection
  */
 public function getGroupedChilds()
 {
     $k = 'grouped_childs';
     if (!$this->hasDat($k)) {
         $array = $this->_categoryCollection->addActiveFilter()->addStoreFilter($this->_storeManager->getStore()->getId())->setOrder('position')->getTreeOrderedArray();
         $this->setData($k, $array);
     }
     return $this->getData($k);
 }
 /**
  * Prepare form
  *
  * @return $this
  */
 protected function _prepareForm()
 {
     /* @var $model \Magefan\Blog\Model\Category */
     $model = $this->_coreRegistry->registry('current_model');
     /*
      * Checking if user have permissions to save information
      */
     $isElementDisabled = !$this->_isAllowedAction('Magefan_Blog::category');
     /** @var \Magento\Framework\Data\Form $form */
     $form = $this->_formFactory->create();
     $form->setHtmlIdPrefix('category_');
     $fieldset = $form->addFieldset('base_fieldset', ['legend' => __('Category Information')]);
     if ($model->getId()) {
         $fieldset->addField('category_id', 'hidden', ['name' => 'id']);
     }
     $fieldset->addField('title', 'text', ['name' => 'title', 'label' => __('Category Title'), 'title' => __('Category Title'), 'required' => true, 'disabled' => $isElementDisabled]);
     $fieldset->addField('is_active', 'select', ['label' => __('Status'), 'title' => __('Category Status'), 'name' => 'is_active', 'required' => true, 'options' => $model->getAvailableStatuses(), 'disabled' => $isElementDisabled]);
     if (!$model->getId()) {
         $model->setData('is_active', $isElementDisabled ? '0' : '1');
     }
     $fieldset->addField('identifier', 'text', ['name' => 'identifier', 'label' => __('URL Key'), 'title' => __('URL Key'), 'class' => 'validate-identifier', 'note' => __('Relative to Web Site Base URL'), 'disabled' => $isElementDisabled]);
     /**
      * Check is single store mode
      */
     if (!$this->_storeManager->isSingleStoreMode()) {
         $field = $fieldset->addField('store_id', 'multiselect', ['name' => 'stores[]', 'label' => __('Store View'), 'title' => __('Store View'), 'required' => true, 'values' => $this->_systemStore->getStoreValuesForForm(false, true), 'disabled' => $isElementDisabled]);
         $renderer = $this->getLayout()->createBlock('Magento\\Backend\\Block\\Store\\Switcher\\Form\\Renderer\\Fieldset\\Element');
         $field->setRenderer($renderer);
     } else {
         $fieldset->addField('store_id', 'hidden', ['name' => 'stores[]', 'value' => $this->_storeManager->getStore(true)->getId()]);
         $model->setStoreId($this->_storeManager->getStore(true)->getId());
     }
     $categories[] = ['label' => __('Please select'), 'value' => 0];
     $collection = $this->_categoryCollection->addFieldToFilter('category_id', array('neq' => $model->getId()))->setOrder('position')->getTreeOrderedArray();
     foreach ($collection as $item) {
         if (!$model->isChild($item)) {
             $categories[] = array('label' => $this->_getSpaces($item->getLevel()) . ' ' . $item->getTitle() . ($item->getIsActive() ? '' : ' (' . __('Disabled') . ')'), 'value' => ($item->getPath() ? $item->getPath() . '/' : '') . $item->getId());
         }
     }
     if (count($categories)) {
         $field = $fieldset->addField('path', 'select', ['name' => 'path', 'label' => __('Parent Category'), 'title' => __('Parent Category'), 'values' => $categories, 'disabled' => $isElementDisabled, 'style' => 'width:100%']);
     }
     $fieldset->addField('position', 'text', ['name' => 'position', 'label' => __('Position'), 'title' => __('Position'), 'disabled' => $isElementDisabled]);
     $this->_eventManager->dispatch('magefan_blog_category_edit_tab_main_prepare_form', ['form' => $form]);
     $form->setValues($model->getData());
     $this->setForm($form);
     return parent::_prepareForm();
 }
Ejemplo n.º 3
0
 /**
  * Get data
  *
  * @return array
  */
 public function getData()
 {
     if (isset($this->loadedData)) {
         return $this->loadedData;
     }
     $items = $this->collection->getItems();
     /** @var $category \Magefan\Blog\Model\Category */
     foreach ($items as $category) {
         $this->loadedData[$category->getId()] = $category->getData();
     }
     $data = $this->dataPersistor->get('current_model');
     if (!empty($data)) {
         $category = $this->collection->getNewEmptyItem();
         $category->setData($data);
         $this->loadedData[$category->getId()] = $category->getData();
         $this->dataPersistor->clear('current_model');
     }
     return $this->loadedData;
 }