public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('FaqPageID'); $fields->removeByName('FaqTags'); $fields->removeByName('SortOrder'); $fields->addFieldToTab('Root.Main', new TextField('Question', 'Question')); $fields->addFieldToTab('Root.Main', new HtmlEditorField('Answer', 'Answer')); // faq section - has_one relation $map = FaqSection::get()->sort('Title')->map('ID', 'Title'); $field = new DropdownField('FaqSectionID', 'Faq section', $map); $field->setEmptyString('None'); $fields->addFieldToTab('Root.Main', $field, 'Question'); // faq tags - has_many relation $tagMap = FaqTag::get()->sort('Title')->map('ID', 'Title')->toArray(); $tagsField = new ListboxField('FaqTags', 'Faq tags'); $tagsField->setMultiple(true)->setSource($tagMap); $fields->addFieldToTab('Root.Main', $tagsField, 'Question'); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $configTags = GridFieldConfig_RelationEditor::create(); $configTags->getComponentByType('GridFieldPaginator')->setItemsPerPage(10); if (class_exists('GridFieldSortableRows')) { $configTags->addComponent(new GridFieldSortableRows('SortOrder')); } $configTags->getComponentByType('GridFieldAddNewButton')->setButtonName('Add a faq section'); $configTags->getComponentByType('GridFieldDataColumns')->setDisplayFields(array('Title' => 'Title')); $faqSectionsField = new GridField('FaqSections', 'FaqSections', $this->FaqSections(), $configTags); $fields->addFieldToTab('Root.FaqSection', $faqSectionsField); $config = GridFieldConfig_RelationEditor::create(); $config->getComponentByType('GridFieldPaginator')->setItemsPerPage(10); if (class_exists('GridFieldSortableRows')) { $config->addComponent(new GridFieldSortableRows('SortOrder')); } $config->getComponentByType('GridFieldAddNewButton')->setButtonName('Add a faq tag'); $config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array('Title' => 'Title')); $faqTagField = new GridField('FaqTags', 'FaqTags', $this->FaqTags(), $config); $fields->addFieldToTab('Root.FaqTags', $faqTagField); if (FaqSection::get()->count() > 0 && FaqTag::get()->count() > 0) { $config = GridFieldConfig_RelationEditor::create(); $config->getComponentByType('GridFieldPaginator')->setItemsPerPage(10); if (class_exists('GridFieldSortableRows')) { $config->addComponent(new GridFieldSortableRows('SortOrder')); } $config->getComponentByType('GridFieldAddNewButton')->setButtonName('Add a faq'); $config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array('Question' => 'Question')); $faqField = new GridField('Faqs', 'Faqs', $this->Faqs(), $config); } else { $faqField = new LiteralField('faqError', '<p class="message info">You don\'t have faq sections or tags, please create tags in Faq Tag tab and sections in Faq Section tab before adding any faq.</p>'); } $fields->addFieldToTab('Root.Faqs', $faqField); return $fields; }