public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('Features'); $fields->removeByName('ExtraContent'); $regContent = $fields->dataFieldByName('RegistrationContent'); $afterContent = $fields->dataFieldByName('AfterRegistrationContent'); $profileContent = $fields->dataFieldByName('ProfileContent'); $regContent->addExtraClass('no-pagebreak'); $afterContent->addExtraClass('no-pagebreak'); $profileContent->addExtraClass('no-pagebreak'); $fields->insertAfter(TextareaField::create('ApprovalEmailTemplate', 'Approval Email Template'), 'EmailTemplate'); $fields->insertAfter(TextField::create('ApprovalEmailSubject', 'Approval Email Subject'), 'EmailTemplate'); $fields->insertAfter(TextareaField::create('ExpiryReminderEmailTemplate', 'Expiry Reminder Email Template'), 'ApprovalEmailTemplate'); $fields->insertAfter(TextField::create('ExpiryReminderEmailSubject', 'Expiry Reminder Email Subject'), 'ApprovalEmailTemplate'); $fields->insertAfter(TextareaField::create('ExpiryEmailTemplate', 'Expiry Email Template'), 'ExpiryReminderEmailTemplate'); $fields->insertAfter(TextField::create('ExpiryEmailSubject', 'Expiry Email Subject'), 'ExpiryReminderEmailTemplate'); $fields->addFieldToTab('Root.Members', LiteralField::create('MembersNote', '<p class="message"><strong>Note:</strong> This list has been filtered to include current and pending members only. Use the Members admin area for handling expired memberships and non-member website users.</p>')); $members = Member::get()->exclude(array('MembershipStatus' => 'Not applied'))->exclude(array('MembershipStatus' => 'Expired'))->sort(array('ExpiryDate' => 'ASC')); $gridField = new GridField('Members', 'NZLARP Members', $members, $config = GridFieldConfig_RecordEditor::create()); $gridField->setModelClass('Member'); $columns = $config->getComponentByType('GridFieldDataColumns'); $columns->setFieldFormatting(array('LastEdited' => function ($value, $item) { return $item->LastEditedNice(); })); $columns->setDisplayFields(array('getName' => 'Name', 'Region.Title' => 'Region', 'MembershipStatus' => 'Status', 'ExpiryDate' => 'Expires', 'LastEdited' => 'Last Activity')); $fields->addFieldToTab('Root.Members', $gridField); $config->getComponentByType('GridFieldPaginator')->setItemsPerPage(200); return $fields; }
/** * @covers GridField::getModelClass * @covers GridField::setModelClass */ public function testGridFieldModelClass() { $obj = new GridField('testfield', 'testfield', Member::get()); $this->assertEquals('Member', $obj->getModelClass(), 'Should return Member'); $obj->setModelClass('DataModel'); $this->assertEquals('DataModel', $obj->getModelClass(), 'Should return Member'); }
/** * @covers GridField::getModelClass * @covers GridField::setModelClass */ public function testGridFieldModelClass() { $obj = new GridField('testfield', 'testfield', Member::get()); $this->assertEquals('SilverStripe\\Security\\Member', $obj->getModelClass(), 'Should return Member'); $obj->setModelClass('SilverStripe\\ORM\\DataModel'); $this->assertEquals('SilverStripe\\ORM\\DataModel', $obj->getModelClass(), 'Should return Member'); }
/** * @return FieldList */ public function getCMSFields() { $f = new FieldList($rootTab = new TabSet("Root", $tabMain = new Tab('Main'))); $f->addFieldToTab('Root.Main', new TextField('Name', 'Name')); $f->addFieldToTab('Root.Main', $ddl = new DropdownField('ListType', 'ListType', $this->dbObject('ListType')->enumValues())); $f->addFieldToTab('Root.Main', $ddl2 = new DropdownField('CategoryID', 'Category', PresentationCategory::get()->filter('SummitID', $_REQUEST['SummitID'])->map('ID', 'Title'))); $ddl->setEmptyString('-- Select List Type --'); $ddl2->setEmptyString('-- Select Track --'); if ($this->ID > 0) { $config = GridFieldConfig_RecordEditor::create(25); $config->addComponent(new GridFieldAjaxRefresh(1000, false)); $config->addComponent(new GridFieldPublishSummitEventAction()); $config->removeComponentsByType('GridFieldDeleteAction'); $config->removeComponentsByType('GridFieldAddNewButton'); $config->addComponent($bulk_summit_types = new GridFieldBulkActionAssignSummitTypeSummitEvents()); $bulk_summit_types->setTitle('Set Summit Types'); $result = DB::query("SELECT DISTINCT SummitEvent.*, Presentation.*\nFROM SummitEvent\nINNER JOIN Presentation ON Presentation.ID = SummitEvent.ID\nINNER JOIN SummitSelectedPresentation ON SummitSelectedPresentation.PresentationID = Presentation.ID\nINNER JOIN SummitSelectedPresentationList ON SummitSelectedPresentation.SummitSelectedPresentationListID = {$this->ID}\nORDER BY SummitSelectedPresentation.Order ASC\n"); $presentations = new ArrayList(); foreach ($result as $row) { $presentations->add(new Presentation($row)); } $gridField = new GridField('SummitSelectedPresentations', 'Selected Presentations', $presentations, $config); $gridField->setModelClass('Presentation'); $f->addFieldToTab('Root.Main', $gridField); } return $f; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertBefore(new DropdownField('MemberID', 'Member', Member::get()->map('ID', "FirstName")), 'AttendingWholeEvent'); $siteConfig = SiteConfig::current_site_config(); $current = $siteConfig->getCurrentEventID(); if ($this->ParentID < 1) { $event = Event::get()->byID($current); } else { $event = Event::get()->byID($this->ParentID); } $fields->insertAfter(HiddenField::create('ParentID', 'Event', $event->ID), 'ExtraDetail'); $fields->removeByName('PublicFieldsRaw'); $fields->removeByName('Sort'); if ($this->PlayerGames()->Count() > 0) { $gridField = new GridField('PlayerGames', 'Games', $this->PlayerGames(), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('PlayerGame'); $config->addComponent(new GridFieldOrderableRows()); $config->removeComponentsByType('GridFieldPaginator'); $config->removeComponentsByType('GridFieldPageCount'); $config->addComponent(new GridFieldDeleteAction(false)); $config->addComponent($export = new GridFieldExportButton('before')); $export->setExportColumns(singleton("PlayerGame")->getExportFields()); $fields->addFieldToTab('Root.PlayerGames', $gridField); } return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertBefore(TextareaField::create('Intro', 'Intro'), 'Content'); $fields->insertAfter(ColorPaletteField::create("Colour", "Colour", array('night' => '#333333', 'air' => '#009EE2', 'earth' => ' #79c608', 'passion' => '#b02635', 'people' => '#de347f', 'inspiration' => '#783980')), "Intro"); $fields->insertBefore($image = UploadField::create('SplashImage', 'Splash Image'), 'Content'); $image->setFolderName('Uploads/Splash-Images'); if ($this->ClassName === "Page" || $this->ClassName === "HomePage") { $fields->insertAfter(HTMLEditorField::create('ExtraContent'), 'Content'); $gridField = new GridField('FeatureItems', 'FeatureItems', $this->FeatureItems()->sort(array('Sort' => 'ASC', 'Archived' => 'ASC')), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('FeatureItem'); $fields->addFieldToTab('Root.Features', $gridField); $config->addComponent(new GridFieldOrderableRows()); } else { if ($this->ClassName === "CalendarPage") { $content = $fields->dataFieldByName('Content'); $content->addExtraClass('no-pagebreak'); $events = Event::get()->sort(array('StartDateTime' => 'Desc'))->filterByCallback(function ($record) { return !$record->getIsPastEvent(); }); $gridField = new GridField('Event', 'Upcoming Events', $events, $config = GridFieldConfig_RecordEditor::create()); $gridField->setModelClass('Event'); $dataColumns = $config->getComponentByType('GridFieldDataColumns'); $dataColumns->setDisplayFields(array('Title' => 'Title', 'StartDateTime' => 'Date and Time', 'DatesAndTimeframe' => 'Presentation String')); $fields->addFieldToTab('Root.UpcomingEvents', $gridField); } } return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); // Main Content tab // Carousel tab $carouselItemsGrid = null; // Manay to many relations can only be established if we have an id. So put a place holder instead of a grid if this is a new object. if ($this->ID == 0) { $carouselItemsGrid = TextField::create("CarouselItems", "Carousel Items")->setDisabled(true)->setValue("Page must be saved once before adding Carousel Items."); } else { $carouselItemsGrid = new GridField('CarouselItems', 'Carousel', $this->CarouselItems()->sort('Archived'), GridFieldConfig_RelationEditor::create()); $carouselItemsGridUploadComponent = new GridFieldBulkUpload("Image"); $carouselItemsGridUploadComponent->setUfSetup("setFolderName", $this->ImageFolder("carousel")); $carouselItemsGrid->setModelClass('CarouselItem')->getConfig()->addComponent($carouselItemsGridUploadComponent)->addComponent(new GridFieldOrderableRows("SortID")); } $fields->addFieldToTab('Root.Carousel', $carouselItemsGrid); // Links $fields->addFieldToTab('Root.Links', new TreeDropdownField('LearnMorePageID', 'Page to link the "Learn More" button to:', 'SiteTree')); $fields->addFieldToTab('Root.Links', new TextField('LearnMoreButtonText', 'Text to display on the "Learn More" button:', 'SiteTree')); $quickLinksGrid = new GridField('Quicklinks', 'Quicklinks', $this->Quicklinks(), GridFieldConfig_RelationEditor::create()); $quickLinksGrid->setModelClass('Quicklink'); $quickLinksFieldGroup = FieldGroup::create($quickLinksGrid)->setTitle('Quick Links'); $quickLinksFieldGroup->setName("QuicklinkGroup"); $fields->addFieldToTab('Root.Links', $quickLinksFieldGroup); $fields->removeByName('Translations'); $fields->removeByName('Import'); $fields->addFieldToTab('Root.Features', ToggleCompositeField::create('FeatureOne', _t('SiteTree.FeatureOne', 'Feature One'), array(new TextField('FeatureOneTitle', 'Title'), new DropdownField('FeatureOneCategory', 'Category', singleton('ExpressHomePage')->dbObject('FeatureOneCategory')->enumValues()), new HTMLEditorField('FeatureOneContent', 'Content'), new TreeDropdownField('FeatureOneLinkID', 'Page to link to', 'SiteTree'), new TextField('FeatureOneButtonText', 'Button text')))->setHeadingLevel(3)); $fields->addFieldToTab('Root.Features', ToggleCompositeField::create('FeatureTwo', _t('SiteTree.FeatureTwo', 'Feature Two'), array(new TextField('FeatureTwoTitle', 'Title'), new DropdownField('FeatureTwoCategory', 'Category', singleton('ExpressHomePage')->dbObject('FeatureTwoCategory')->enumValues()), new HTMLEditorField('FeatureTwoContent', 'Content'), new TreeDropdownField('FeatureTwoLinkID', 'Page to link to', 'SiteTree'), new TextField('FeatureTwoButtonText', 'Button text')))->setHeadingLevel(3)); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $gridField = new GridField('CarouselItems', 'Carousel', $this->CarouselItems(), GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('CarouselItem'); $fields->addFieldToTab('Root.Carousel', $gridField); return $fields; }
public function testGetClasses() { $grid = new GridField('TestGridField'); $grid->setModelClass('GridFieldAddNewMultiClassTest_A'); $component = new GridFieldAddNewMultiClass(); $this->assertEquals(array('GridFieldAddNewMultiClassTest_A' => 'A', 'GridFieldAddNewMultiClassTest_B' => 'B', 'GridFieldAddNewMultiClassTest_C' => 'C'), $component->getClasses($grid), 'Subclasses are populated by default and sorted'); $component->setClasses(array('GridFieldAddNewMultiClassTest_B' => 'Custom Title', 'GridFieldAddNewMultiClassTest_A')); $this->assertEquals(array('GridFieldAddNewMultiClassTest_B' => 'Custom Title', 'GridFieldAddNewMultiClassTest_A' => 'A'), $component->getClasses($grid), 'Sorting and custom titles can be specified'); }
public function updateCMSFields(FieldList $fields) { $gridfield_config = new GridFieldConfig_RecordViewer(); $translation = _t('AutoArchiveDestinationExtension.Archivables', 'Archivables'); $fields->addFieldToTab('Root', new Tab('ArchivablesTab', $translation)); $fields->addFieldToTab('Root.ArchivablesTab', $gridfield = new GridField('Archivables', $translation, $this->Archivables(true), $gridfield_config)); $gridfield->setModelClass($this->Archivables()->exists() ? $this->Archivables()->first()->ClassName : AutoArchivableExtension::getExtendedClasses()[0]); $gridfield->setDescription(_t('AutoArchiveDestinationExtension.ArchivablesTabDescription', 'This list shows all pages that will be moved under this page when/if they will be archived in the future.')); }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertAfter(HTMLEditorField::create('ExtraContent'), 'Content'); $gridField = new GridField('Region', 'Regions', Region::get(), $config = GridFieldConfig_RecordEditor::create()); $gridField->setModelClass('Region'); $fields->addFieldToTab('Root.Regions', $gridField); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertAfter(new HTMLEditorField('Sidebar', 'Sidebar Content'), 'Content'); // Slider tab $gridField = new GridField('PromotionalBanners', 'Promotional Banners', $this->PromotionalBanners()->sort(array('Sort' => 'ASC', 'Archived' => 'ASC')), $conf = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('PromotionalBanner'); $fields->addFieldToTab('Root.PromotionalBanners', $gridField); $conf->addComponent(new GridFieldOrderableRows()); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $gridField = new GridField('NewsItems', 'NewsItems', $this->NewsItems()->sort(array('Created' => 'ASC', 'Archived' => 'ASC')), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('NewsItem'); $fields->addFieldtoTab('Root.News', $gridField); $config->addComponent(new GridFieldOrderableRows()); $fields->removeByName('Content'); $fields->removeByName('ExtraContent'); $fields->removeByName('Features'); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('Sidebar'); $fields->removeByName('PromotionalBanners'); $fields->insertBefore(UploadField::create('FeatureImage', 'Feature Image'), 'Content'); // Slider tab $gridField = new GridField('SliderItems', 'Slider', $this->SliderItems()->sort(array('Sort' => 'ASC', 'Archived' => 'ASC')), $sliderConf = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('SliderItem'); $fields->addFieldToTab('Root.Slider', $gridField); $sliderConf->addComponent(new GridFieldOrderableRows()); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); // NewsGrid $gridFieldConfig = GridFieldConfig::create()->addComponents(new GridFieldToolbarHeader(), new GridFieldAddNewSiteTreeItemButton('toolbar-header-right'), new GridFieldSortableHeader(), new GridFieldFilterHeader(), $dataColumns = new GridFieldDataColumns(), new GridFieldPaginator(20), new GridFieldEditSiteTreeItemButton()); $dataColumns->setDisplayFields(array('Title' => 'Title', 'URLSegment' => 'URL', 'formattedPublishDate' => 'Publish date', 'getStatus' => 'Status', 'LastEdited' => 'Changed')); // include both live and stage versions of pages $pages = $this->AllChildrenIncludingDeleted(); // use gridfield as normal; $gridField = new GridField("Subpages", "Manage Blogposts", $pages, $gridFieldConfig); $gridField->setModelClass(self::$default_child); //$gridField->setModelClass("GridFieldPage"); // prevents "GridField doesn't have a modelClassName" error $fields->addFieldToTab("Root.BlogPosts", $gridField); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $gridEventConfig = GridFieldConfig_RecordEditor::create(); $gridEventConfig->removeComponentsByType('GridFieldDetailForm'); $gridEventConfig->addComponent(new CalendarEventPageGridFieldDetailForm()); //Coming events $comingEvents = $this->ComingEvents(); $GridFieldComing = new GridField('ComingEvents', '', $comingEvents, $gridEventConfig); $GridFieldComing->setModelClass('PublicEvent'); $fields->addFieldToTab('Root.ComingEvents', $GridFieldComing); //Past events $pastEvents = $this->PastEvents(); $GridFieldPast = new GridField('PastEvents', '', $pastEvents, $gridEventConfig); $GridFieldPast->setModelClass('PublicEvent'); $fields->addFieldToTab('Root.PastEvents', $GridFieldPast); return $fields; }
function getCMSFields() { $fields = parent::getCMSFields(); // Main Content tab $fields->addFieldToTab('Root.Main', new TreeDropdownField('LearnMorePageID', 'Page to link the "Learn More" button to:', 'SiteTree'), 'Metadata'); // Carousel tab $gridField = new GridField('CarouselItems', 'Carousel', $this->CarouselItems()->sort('Archived'), GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('CarouselItem'); $fields->addFieldToTab('Root.Carousel', $gridField); $gridField = new GridField('Quicklinks', 'Quicklinks', $this->Quicklinks(), GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('Quicklink'); $fields->addFieldToTab('Root.Quicklinks', $gridField); $fields->removeByName('Translations'); $fields->removeByName('Import'); $fields->addFieldToTab('Root.Features', ToggleCompositeField::create('FeatureOne', _t('SiteTree.FeatureOne', 'Feature One'), array(new TextField('FeatureOneTitle', 'Title'), new DropdownField('FeatureOneCategory', 'Category', singleton('ExpressHomePage')->dbObject('FeatureOneCategory')->enumValues(), '', null, 'none'), new HTMLEditorField('FeatureOneContent', 'Content'), new TreeDropdownField('FeatureOneLinkID', 'Page to link to', 'SiteTree'), new TextField('FeatureOneButtonText', 'Button text')))->setHeadingLevel(3)); $fields->addFieldToTab('Root.Features', ToggleCompositeField::create('FeatureTwo', _t('SiteTree.FeatureTwo', 'Feature Two'), array(new TextField('FeatureTwoTitle', 'Title'), new DropdownField('FeatureTwoCategory', 'Category', singleton('ExpressHomePage')->dbObject('FeatureTwoCategory')->enumValues(), '', null, 'none'), new HTMLEditorField('FeatureTwoContent', 'Content'), new TreeDropdownField('FeatureTwoLinkID', 'Page to link to', 'SiteTree'), new TextField('FeatureTwoButtonText', 'Button text')))->setHeadingLevel(3)); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertAfter(new HTMLEditorField('Sidebar', 'Sidebar Content'), 'Content'); $gridField = new GridField('SponsorLinks', 'SponsorLinks', $this->SponsorLinks()->sort(array('Sort' => 'ASC')), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('Link'); $fields->addFieldToTab('Root.SponsorLinks', $gridField); $config->addComponent(new GridFieldOrderableRows()); $gridField = new GridField('NewsItems', 'NewsItems', $this->NewsItems()->sort(array('Sort' => 'ASC', 'Archived' => 'ASC')), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('NewsItem'); $fields->addFieldToTab('Root.News', $gridField); $config->addComponent(new GridFieldOrderableRows()); // Carousel tab $gridField = new GridField('SliderItems', 'Slider', $this->SliderItems()->sort(array('Sort' => 'ASC', 'Archived' => 'ASC')), $sliderConf = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('SliderItem'); $fields->addFieldToTab('Root.Slider', $gridField); $sliderConf->addComponent(new GridFieldOrderableRows()); return $fields; }
/** * Returns the config for a typical inplace-editable gridfield. * @param $name * @param $title * @param $modelClass * @param SS_List $data * @param array $additionalComponents * @return GridFieldConfig */ protected function makeEditableGridField($name, $title, $modelClass, SS_List $data, array $additionalComponents = []) { /** @var GridFieldConfig $config */ $config = GridFieldConfig_RecordEditor::create(1000)->removeComponentsByType('GridFieldDataColumns')->addComponents(new GridFieldOrderableRows(ArtisanHasSortOrderExtension::FieldName), new GridFieldEditableColumns()); foreach ($additionalComponents as $component) { $config->addComponent($component); } $gridField = new GridField($name, $title, $data, $config); $gridField->setModelClass($modelClass); /** @var GridFieldEditableColumns $editableColumns */ $editableColumns = $gridField->getConfig()->getComponentByType('GridFieldEditableColumns'); $model = singleton($modelClass); $fields = []; $model->extend('provideEditableGridFields', $fields); if ($fields) { $summaryFields = $model->summaryFields(); $gridFields = array_merge($summaryFields, $fields); $editableColumns->setDisplayFields($gridFields); } return $gridField; }
public function getCMSFields() { $fields = parent::getCMSFields(); $PageTab = Config::inst()->get($this->owner->className, 'subpage_tab'); // GridFieldPage if (Config::inst()->get($this->owner->className, 'add_default_gridfield')) { $gridFieldConfig = GridFieldConfig::create()->addComponents(new GridFieldToolbarHeader(), new GridFieldAddNewSiteTreeItemButton('toolbar-header-right'), new GridFieldSortableHeader(), new GridFieldFilterHeader(), $dataColumns = new GridFieldDataColumns(), new GridFieldPaginator(20), new GridFieldEditSiteTreeItemButton()); // Orderable is optional, as often pages may be sorted by other means if (Config::inst()->get($this->owner->className, 'apply_sortable')) { // OrderableRows will auto-deactivate when users Sort via SortableHeader $gridFieldConfig->addComponent(new GridFieldOrderableRows()); $fields->addFieldToTab($PageTab, new LiteralField('SortWarning', "<p class=\"message warning\" style=\"display: inline-block;\">" . _t("GridFieldPages.PUBLISHAFTERSORTWARNING", "After reordering, the new sort order will get active after one of the pages gets (re)published") . "</p>")); } $dataColumns->setDisplayFields(array('Title' => 'Title', 'URLSegment' => 'URL', 'getStatus' => 'Status')); // include both live and stage versions of pages // use gridfield as normal $gridField = new GridField("Subpages", Config::inst()->get($this->owner->className, 'gridfield_title'), $this->AllChildrenIncludingDeleted(), $gridFieldConfig); $gridField->setModelClass($this->defaultChild()); $fields->addFieldToTab($PageTab, $gridField); } return $fields; }
/** * Needs to be public because the OrderStep::getCMSFIelds accesses it. * @param String $sourceClass * @param String $title * @param FieldList $fieldList (Optional) * @param FieldList $detailedFormFields (Optional) * * @return GridField **/ public function getOrderStatusLogsTableField($sourceClass = "OrderStatusLog", $title = "", FieldList $fieldList = null, FieldList $detailedFormFields = null) { $gridFieldConfig = GridFieldConfig_RecordViewer::create()->addComponents(new GridFieldAddNewButton('toolbar-header-right'), new GridFieldDetailForm()); $title ? $title : ($title = _t("OrderStatusLog.PLURALNAME", "Order Status Logs")); $source = $this->OrderStatusLogs()->Filter(array("ClassName" => $sourceClass)); $gf = new GridField($sourceClass, $title, $source, $gridFieldConfig); $gf->setModelClass($sourceClass); return $gf; }
public function getCMSFields() { $_REQUEST['SummitID'] = $this->ID; $f = new FieldList($rootTab = new TabSet("Root", $tabMain = new Tab('Main'))); $f->addFieldToTab('Root.Main', new TextField('Title', 'Title')); $f->addFieldToTab('Root.Main', $link = new TextField('Link', 'Summit Page Link')); $link->setDescription('The link to the site page for this summit. Eg: <em>/summit/vancouver-2015/</em>'); $f->addFieldToTab('Root.Main', new CheckboxField('Active', 'This is the active summit')); $f->addFieldToTab('Root.Main', $date_label = new TextField('DateLabel', 'Date label')); $date_label->setDescription('A readable piece of text representing the date, e.g. <em>May 12-20, 2015</em> or <em>December 2016</em>'); $f->addFieldToTab('Root.Main', $registration_link = new TextField('RegistrationLink', 'Registration Link')); $registration_link->setDescription('Link to the site where tickets can be purchased.'); $f->addFieldsToTab('Root.Main', $ddl_timezone = new DropdownField('TimeZone', 'Time Zone', DateTimeZone::listIdentifiers())); $ddl_timezone->setEmptyString('-- Select a Timezone --'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('SummitBeginDate', 'Summit Begin Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('SummitEndDate', 'Summit End Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('StartShowingVenuesDate', 'Start Showing Venues')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('SubmissionBeginDate', 'Submission Begin Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('SubmissionEndDate', 'Submission End Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('VotingBeginDate', 'Voting Begin Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('VotingEndDate', 'Voting End Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('SelectionBeginDate', 'Selection Begin Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('SelectionEndDate', 'Selection End Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('RegistrationBeginDate', 'Registration Begin Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldToTab('Root.Main', $date = new DatetimeField('RegistrationEndDate', 'Registration End Date')); $date->getDateField()->setConfig('showcalendar', true); $date->setConfig('dateformat', 'dd/MM/yyyy'); $logo_field = new UploadField('Logo', 'Logo'); $logo_field->setAllowedMaxFileNumber(1); $logo_field->setAllowedFileCategories('image'); $logo_field->setFolderName('summits/logos/'); $logo_field->getValidator()->setAllowedMaxFileSize(1048576); $f->addFieldToTab('Root.Main', $logo_field); $f->addFieldToTab('Root.Main', new TextField('ComingSoonBtnText', 'Coming Soon Btn Text')); $f->addFieldToTab('Root.Main', new TextField('ExternalEventId', 'Eventbrite Event Id')); if ($this->ID > 0) { // tracks $config = GridFieldConfig_RecordEditor::create(10); $categories = new GridField('Categories', 'Presentation Categories', $this->Categories(), $config); $f->addFieldToTab('Root.Presentation Categories', $categories); // track groups $config = GridFieldConfig_RecordEditor::create(10); $categories = new GridField('CategoryGroups', 'Category Groups', $this->CategoryGroups(), $config); $f->addFieldToTab('Root.Category Groups', $categories); // locations $config = GridFieldConfig_RecordEditor::create(); $config->removeComponentsByType('GridFieldAddNewButton'); $multi_class_selector = new GridFieldAddNewMultiClass(); $multi_class_selector->setClasses(array('SummitVenue' => 'Venue', 'SummitHotel' => 'Hotel', 'SummitAirport' => 'Airport', 'SummitExternalLocation' => 'External Location')); $config->addComponent($multi_class_selector); $config->addComponent($sort = new GridFieldSortableRows('Order')); $gridField = new GridField('Locations', 'Locations', $this->Locations()->where("ClassName <> 'SummitVenueRoom' "), $config); $f->addFieldToTab('Root.Locations', $gridField); // types $config = GridFieldConfig_RecordEditor::create(); $config->addComponent(new GridFieldAddDefaultSummitTypes()); $gridField = new GridField('Types', 'Types', $this->Types(), $config); $f->addFieldToTab('Root.Types', $gridField); // event types $config = GridFieldConfig_RecordEditor::create(); $config->addComponent(new GridFieldAddDefaultEventTypes()); $gridField = new GridField('EventTypes', 'EventTypes', $this->EventTypes(), $config); $f->addFieldToTab('Root.EventTypes', $gridField); //schedule $config = GridFieldConfig_RecordEditor::create(50); $config->addComponent(new GridFieldAjaxRefresh(1000, false)); $config->removeComponentsByType('GridFieldDeleteAction'); $gridField = new GridField('Schedule', 'Schedule', $this->Events()->filter('Published', true)->sort(array('StartDate' => 'ASC', 'EndDate' => 'ASC')), $config); $config->getComponentByType("GridFieldDataColumns")->setFieldCasting(array("Description" => "HTMLText->BigSummary")); $f->addFieldToTab('Root.Schedule', $gridField); $config->addComponent(new GridFieldPublishSummitEventAction()); // events $config = GridFieldConfig_RecordEditor::create(50); $config->addComponent(new GridFieldPublishSummitEventAction()); $config->addComponent(new GridFieldAjaxRefresh(1000, false)); $config->addComponent($bulk_summit_types = new GridFieldBulkActionAssignSummitTypeSummitEvents()); $bulk_summit_types->setTitle('Set Summit Types'); $gridField = new GridField('Events', 'Events', $this->Events()->filter('ClassName', 'SummitEvent'), $config); $config->getComponentByType("GridFieldDataColumns")->setFieldCasting(array("Description" => "HTMLText->BigSummary")); $f->addFieldToTab('Root.Events', $gridField); //track selection list presentations $result = DB::query("SELECT DISTINCT SummitEvent.*, Presentation.*\nFROM SummitEvent\nINNER JOIN Presentation ON Presentation.ID = SummitEvent.ID\nINNER JOIN SummitSelectedPresentation ON SummitSelectedPresentation.PresentationID = Presentation.ID\nINNER JOIN SummitSelectedPresentationList ON SummitSelectedPresentation.SummitSelectedPresentationListID = SummitSelectedPresentationList.ID\nWHERE(ListType = 'Group') AND (SummitEvent.ClassName IN ('Presentation')) AND (SummitEvent.SummitID = {$this->ID})"); $presentations = new ArrayList(); foreach ($result as $row) { $presentations->add(new Presentation($row)); } $config = GridFieldConfig_RecordEditor::create(50); $config->addComponent(new GridFieldPublishSummitEventAction()); $config->addComponent(new GridFieldAjaxRefresh(1000, false)); $config->addComponent($bulk_summit_types = new GridFieldBulkActionAssignSummitTypeSummitEvents()); $bulk_summit_types->setTitle('Set Summit Types'); $config->removeComponentsByType('GridFieldAddNewButton'); $gridField = new GridField('TrackChairs', 'TrackChairs Selection Lists', $presentations, $config); $gridField->setModelClass('Presentation'); $f->addFieldToTab('Root.TrackChairs Selection Lists', $gridField); // attendees $config = GridFieldConfig_RecordEditor::create(50); $gridField = new GridField('Attendees', 'Attendees', $this->Attendees(), $config); $f->addFieldToTab('Root.Attendees', $gridField); //tickets types $config = GridFieldConfig_RecordEditor::create(50); $gridField = new GridField('SummitTicketTypes', 'Ticket Types', $this->SummitTicketTypes(), $config); $f->addFieldToTab('Root.TicketTypes', $gridField); // promo codes $config = GridFieldConfig_RecordEditor::create(50); $config->removeComponentsByType('GridFieldAddNewButton'); $multi_class_selector = new GridFieldAddNewMultiClass(); $multi_class_selector->setClasses(array('SpeakerSummitRegistrationPromoCode' => 'Speaker Promo Code')); $config->addComponent($multi_class_selector); $promo_codes = new GridField('SummitRegistrationPromoCodes', 'Registration Promo Codes', $this->SummitRegistrationPromoCodes(), $config); $f->addFieldToTab('Root.RegistrationPromoCodes', $promo_codes); // speakers $config = GridFieldConfig_RecordEditor::create(50); $gridField = new GridField('Speakers', 'Speakers', $this->Speakers(false), $config); $config->getComponentByType("GridFieldDataColumns")->setFieldCasting(array("Bio" => "HTMLText->BigSummary")); $f->addFieldToTab('Root.Speakers', $gridField); // presentations $config = GridFieldConfig_RecordEditor::create(50); $config->addComponent(new GridFieldPublishSummitEventAction()); $config->addComponent(new GridFieldAjaxRefresh(1000, false)); $config->addComponent($bulk_summit_types = new GridFieldBulkActionAssignSummitTypeSummitEvents()); $bulk_summit_types->setTitle('Set Summit Types'); $gridField = new GridField('Presentations', 'Presentations', $this->Presentations()->where(" Title IS NOT NULL AND Title <>'' "), $config); $config->getComponentByType("GridFieldDataColumns")->setFieldCasting(array("Description" => "HTMLText->BigSummary")); $f->addFieldToTab('Root.Presentations', $gridField); // push notifications $config = GridFieldConfig_RecordEditor::create(50); $config->addComponent(new GridFieldAjaxRefresh(1000, false)); $config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array('Channel' => 'Channel', 'Message' => 'Message', 'Owner.FullName' => 'Owner', 'IsSent' => 'Is Sent?')); $gridField = new GridField('Notifications', 'Notifications', $this->Notifications(), $config); $f->addFieldToTab('Root.Notifications', $gridField); } return $f; }
/** * Used in getCSMFields * @return GridField **/ protected function getAdditionalImagesField() { $gridField = new GridField('AdditionalFiles', _t('Product.ADDITIONALIMAGES', 'Additional files and images'), $this->AdditionalFiles(), GridFieldConfig_RelationEditor::create()); $config = $gridField->getConfig()->removeComponentsByType("GridFieldAddNewButton")->removeComponentsByType("GridFieldAddExistingAutocompleter"); $gridField->setConfig($config); //var_dump($components->items); $gridField->setModelClass("Product_Image"); return $gridField; }
public function updateCMSFields(FieldList $fields) { $fields->addFieldsToTab('Root.Discounts', $grid = new GridField('Discounts', 'Discount', $this->Discounts(), new GridFieldConfig_RecordViewer())); $grid->setModelClass('Discount'); }