/** * 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(); }
/** * 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; }