Example #1
0
 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;
 }