/** * @param string $name * @param string $label * @param FormField $field * @param bool $open * * @return ToggleCompositeField */ protected function getToggleField($name, $label, $field, $open = false) { $field = new ToggleCompositeField($name, $label, array($field)); $field->addExtraClass("code-editor-toggle"); $field->setStartClosed(!$open); return $field; }
/** * @return FieldList */ public function getCMSFields() { $fields = new FieldList(); $fields->push($manual = new ToggleCompositeField('TextLinks', 'Enter urls', [new TextField('From', 'From url (e.g. "/my-page/")'), new TextField('To', 'To url (e.g. "/my-page/", "http://google.com/")')])); $fields->push($page = new ToggleCompositeField('SiteTree', 'Select pages from list', [new TreeDropdownField('FromRelationID', 'From', 'SiteTree'), new TreeDropdownField('ToRelationID', 'To', 'SiteTree')])); if ($this->getField('From') || $this->getField('To')) { $manual->setStartClosed(false); } if ($this->getField('FromRelationID') || $this->getField('ToRelationID')) { $page->setStartClosed(false); } return $fields; }
/** * Extracts out the field updating since that could happen at a couple * different extension points. * @param FieldList $fields */ protected function updateFields(FieldList $fields) { // This seemed to cause problems. Moved to config.yml. //Requirements::javascript(SHOP_EXTENDEDPRICING_FOLDER . '/javascript/ExtendedPricingAdmin.js'); $newFields = array(new CheckboxField("PromoActive", "Promotional pricing active?"), new OptionsetField("PromoDisplay", "Display Settings", array("ShowDiscount" => "Show base price crossed out", "HideDiscount" => "Hide base price")), new OptionsetField("PromoType", "Type of discount", array("Percent" => "Percentage of subtotal (eg 25%)", "Amount" => "Fixed amount (eg \$25.00)")), new PercentageField("PromoPercent", "Percent discount"), new NumericField("PromoAmount", "Fixed discount (e.g. 5 = \$5 off)"), new FieldGroup("Valid date range (optional):", array(PromoDatetimeField::create("PromoStartDate", "Start Date / Time"), PromoDatetimeField::create("PromoEndDate", "End Date / Time (you should set the end time to 23:59:59, if you want to include the entire end day)")))); $f = new ToggleCompositeField('PromoFields', 'Promotional Pricing', $newFields); $f->setStartClosed(!$this->getOwner()->PromoActive); if ($fields->hasTabSet()) { $fields->addFieldToTab('Root.Pricing', $f); } else { $fields->push($f); } }
public function updateCMSFields(FieldList $fields) { // Payment Methods $payment_table = GridField::create('PaymentMethods', _t("CheckoutAdmin.PaymentMethods", "Payment Methods"), $this->owner->PaymentMethods(), GridFieldConfig::create()->addComponents(new GridFieldToolbarHeader(), new GridFieldAddNewButton('toolbar-header-right'), new GridFieldSortableHeader(), new GridFieldDataColumns(), new GridFieldPaginator(20), new GridFieldEditButton(), new GridFieldDeleteAction(), new GridFieldDetailForm())); // setup compressed payment options $payment_fields = ToggleCompositeField::create('PaymentSettings', _t("CheckoutAdmin.Payments", "Payment Settings"), array(TextField::create('PaymentNumberPrefix', _t("CheckoutAdmin.OrderPrefix", "Add prefix to order numbers"), null, 9)->setAttribute("placeholder", _t("CheckoutAdmin.OrderPrefixPlaceholder", "EG 'abc'")), TextAreaField::create('PaymentSuccessContent', _t("CheckoutAdmin.PaymentSuccessContent", "Payment successfull content"))->setRows(4)->setColumns(30)->addExtraClass('stacked'), TextAreaField::create('PaymentFailerContent', _t("CheckoutAdmin.PaymentFailerContent", "Payment failer content"))->setRows(4)->setColumns(30)->addExtraClass('stacked'), $payment_table)); // Add html description of how to edit contries $country_html = "<div class=\"field\">"; $country_html .= "<p>First select valid countries using the 2 character "; $country_html .= "shortcode (see http://fasteri.com/list/2/short-names-of-countries-and-iso-3166-codes).</p>"; $country_html .= "<p>You can add multiple countries seperating them with"; $country_html .= "a comma or use a '*' for all countries.</p>"; $country_html .= "</div>"; $country_html_field = LiteralField::create("CountryDescription", $country_html); // Deal with product features $postage_field = new GridField('PostageAreas', '', $this->owner->PostageAreas(), GridFieldConfig::create()->addComponents(new GridFieldButtonRow('before'), new GridFieldToolbarHeader(), new GridFieldTitleHeader(), new GridFieldEditableColumns(), new GridFieldDeleteAction(), new GridFieldAddNewInlineButton('toolbar-header-left'))); // Add country dropdown to inline editing $postage_field->getConfig()->getComponentByType('GridFieldEditableColumns')->setDisplayFields(array('Title' => array('title' => 'Title', 'field' => 'TextField'), 'Country' => array('title' => 'ISO 3166 codes', 'field' => 'TextField'), 'ZipCode' => array('title' => 'Zip/Post Codes', 'field' => 'TextField'), 'Calculation' => array('title' => 'Base unit', 'callback' => function ($record, $column, $grid) { return DropdownField::create($column, "Based on", singleton('PostageArea')->dbObject('Calculation')->enumValues())->setValue("Weight"); }), 'Unit' => array('title' => 'Unit (equals or above)', 'field' => 'NumericField'), 'Cost' => array('title' => 'Cost', 'field' => 'NumericField'), 'Tax' => array('title' => 'Tax (percentage)', 'field' => 'NumericField'))); // Setup compressed postage options $postage_fields = ToggleCompositeField::create('PostageFields', 'Postage Options', array($country_html_field, $postage_field)); // Setup compressed postage options $discount_fields = ToggleCompositeField::create('DiscountFields', 'Discounts', array(GridField::create('Discounts', '', $this->owner->Discounts(), GridFieldConfig_RecordEditor::create()))); // Add config sets $fields->addFieldToTab('Root.Checkout', $payment_fields); $fields->addFieldToTab('Root.Checkout', $postage_fields); $fields->addFieldToTab('Root.Checkout', $discount_fields); }
/** * Updates the fields used in the CMS * @see DataExtension::updateCMSFields() */ public function updateCMSFields(FieldList $fields) { Requirements::CSS('blogcategories/css/cms-blog-categories.css'); // Try to fetch categories from cache $categories = $this->getAllBlogCategories(); if ($categories->count() >= 1) { $cacheKey = md5($categories->sort('LastEdited', 'DESC')->First()->LastEdited); $cache = SS_Cache::factory('BlogCategoriesList'); if (!($categoryList = $cache->load($cacheKey))) { $categoryList = "<ul>"; foreach ($categories->column('Title') as $title) { $categoryList .= "<li>" . Convert::raw2xml($title) . "</li>"; } $categoryList .= "</ul>"; $cache->save($categoryList, $cacheKey); } } else { $categoryList = "<ul><li>No categories exist. Categories can be added from the BlogTree or the BlogHolder page.</li></ul>"; } //categories tab $gridFieldConfig = GridFieldConfig_RelationEditor::create(); $fields->addFieldToTab('Root.Categories', GridField::create('BlogCategories', 'Blog Categories', $this->owner->BlogCategories(), $gridFieldConfig)); $fields->addFieldToTab('Root.Categories', ToggleCompositeField::create('ExistingCategories', 'View Existing Categories', array(new LiteralField("CategoryList", $categoryList)))->setHeadingLevel(4)); // Optionally default category to current holder if (Config::inst()->get('BlogCategory', 'limit_to_holder')) { $holder = $this->owner->Parent(); $gridFieldConfig->getComponentByType('GridFieldDetailForm')->setItemEditFormCallback(function ($form, $component) use($holder) { $form->Fields()->push(HiddenField::create('ParentID', false, $holder->ID)); }); } }
public function getDefaultSearchContext() { $context = parent::getDefaultSearchContext(); $fields = $context->getFields(); $fields->push(CheckboxField::create("HasBeenUsed")); //add date range filtering $fields->push(ToggleCompositeField::create("StartDate", "Start Date", array(DateField::create("q[StartDateFrom]", "From")->setConfig('showcalendar', true), DateField::create("q[StartDateTo]", "To")->setConfig('showcalendar', true)))); $fields->push(ToggleCompositeField::create("EndDate", "End Date", array(DateField::create("q[EndDateFrom]", "From")->setConfig('showcalendar', true), DateField::create("q[EndDateTo]", "To")->setConfig('showcalendar', true)))); //must be enabled in config, because some sites may have many products = slow load time, or memory maxes out //future solution is using an ajaxified field if (self::config()->filter_by_product) { $fields->push(ListboxField::create("Products", "Products", Product::get()->map()->toArray())->setMultiple(true)); } if (self::config()->filter_by_category) { $fields->push(ListboxField::create("Categories", "Categories", ProductCategory::get()->map()->toArray())->setMultiple(true)); } if ($field = $fields->fieldByName("Code")) { $field->setDescription("This can be a partial match."); } //get the array, to maniplulate name, and fullname seperately $filters = $context->getFilters(); $filters['StartDateFrom'] = GreaterThanOrEqualFilter::create('StartDate'); $filters['StartDateTo'] = LessThanOrEqualFilter::create('StartDate'); $filters['EndDateFrom'] = GreaterThanOrEqualFilter::create('EndDate'); $filters['EndDateTo'] = LessThanOrEqualFilter::create('EndDate'); $context->setFilters($filters); return $context; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab('Root.EnquiryForm', HeaderField::create('Enquiry Form Setup', 2)); $gridFieldConfig = GridFieldConfig_RecordEditor::create(100); $gridFieldConfig->addComponent(new GridFieldSortableRows('SortOrder')); /* Unset field-sorting hack */ $gridFieldConfig->getComponentByType('GridFieldSortableHeader')->setFieldSorting(array('FieldName' => 'FieldNameNoSorting', 'FieldType' => 'FieldTypeNoSorting')); $gridField = GridField::create('EnquiryFormFields', false, $this->EnquiryFormFields(), $gridFieldConfig); $fields->addFieldToTab('Root.EnquiryForm', $gridField); $email_settings = array(EmailField::create('EmailTo', 'Send email to'), EmailField::create('EmailFrom', 'Send email from')->setRightTitle('For example website@yourdomain.com'), TextField::create('EmailSubject', 'Email subject'), HeaderField::create('Message on website once completed', 5), HTMLEditorField::create('EmailSubmitCompletion', '')->setRows(10), EmailField::create('EmailBcc', 'Send BCC copy to (optional)')->setRightTitle('If you would like a copy of the enquiry to be sent elsewhere, fill that in here.'), TextField::create('EmailSubmitButtonText', 'Submit button text')); $toggleSettings = ToggleCompositeField::create('FormSettings', 'Enquiry Form Settings', $email_settings); $fields->addFieldsToTab('Root.EnquiryForm', $toggleSettings); $spam_settings = array(); array_push($spam_settings, DropdownField::create('AddCaptcha', 'Add captcha image (optional)', array(0 => 'No', 1 => 'Yes'))->setRightTitle('You can optionally enable an anti-spam "captcha" image. This adds a small image with 4 random numbers which needs to be filled in correctly.')); if (!$this->CaptchaText) { $this->CaptchaText = 'Verification Image'; } array_push($spam_settings, TextField::create('CaptchaText', 'Field name')); array_push($spam_settings, TextField::create('CaptchaHelp', 'Captcha help (optional)')->setRightTitle('If you would like to explain what the captcha is, please explain briefly what it is. This is only used if you have selected to add the captcha image.')); $toggleSpam = ToggleCompositeField::create('SpamSettings', 'Anti-Spam Settings', $spam_settings); $fields->addFieldsToTab('Root.EnquiryForm', $toggleSpam); return $fields; }
function updateCMSFields(FieldList $fields) { $fields->removeByName("SummaryContent"); $fields->removeByName("SummaryImage"); $summary_fields = ToggleCompositeField::create('Summary', 'Summary Info.', array(TextareaField::create("SummaryContent", $this->owner->fieldLabel('SummaryContent')), UploadField::create("SummaryImage", $this->owner->fieldLabel('SummaryImage'))))->setHeadingLevel(4); $fields->addFieldToTab('Root.Main', $summary_fields, 'Metadata'); }
/** * Gets the form used for viewing a time log */ public function getEditForm($id = null, $fields = null) { $record = $this->currentPage(); if ($this->action == 'view' && $record) { $fields = new FieldList(new HeaderField('LogHeader', _t('KapostBridgeLogViewer.VIEWING_ENTRY', '_Viewing Log Entry: {datetime}', array('datetime' => $record->dbObject('Created')->FormatFromSettings())), 3), new ReadonlyField('UserAgent', _t('KapostBridgeLogViewer.USER_AGENT', '_Requestor User Agent')), new ReadonlyField('Method', _t('KapostBridgeLogViewer.METHOD', '_Method')), ToggleCompositeField::create('RequestData', _t('KapostBridgeLogViewer.KAPOST_REQUEST', '_Kapost Request'), new FieldList(ReadonlyField::create('RequestFormatted', '')->setTemplate('KapostBridgeLogField')->addExtraClass('log-contents cms-panel-layout')))->setHeadingLevel(3), ToggleCompositeField::create('ResponseData', _t('KapostBridgeLogViewer.SILVERSTRIPE_RESPONSE', '_SilverStripe Response'), new FieldList(ReadonlyField::create('ResponseFormatted', '')->setTemplate('KapostBridgeLogField')->addExtraClass('log-contents cms-panel-layout')))->setHeadingLevel(3)); $refObj = $record->ReferenceObject; if (!empty($refObj) && $refObj !== false && $refObj->exists()) { if (method_exists($refObj, 'CMSEditLink')) { $fields->insertBefore(new KapostLogLinkField('CMSEditLink', _t('KapostBridgeLogViewer.REFERENCED_OBJECT', '_Referenced Object'), $refObj->CMSEditLink(), _t('KapostBridgeLogViewer.VIEW_REFERENCED_OBJECT', '_View Referenced Object')), 'RequestData'); } else { if ($refObj instanceof File) { $refObjLink = Controller::join_links(LeftAndMain::config()->url_base, AssetAdmin::config()->url_segment, 'EditForm/field/File/item', $refObj->ID, 'edit'); $fields->insertBefore(new KapostLogLinkField('CMSEditLink', _t('KapostBridgeLogViewer.REFERENCED_OBJECT', '_Referenced Object'), $refObjLink, _t('KapostBridgeLogViewer.VIEW_REFERENCED_OBJECT', '_View Referenced Object')), 'RequestData'); } } } } else { $fields = new FieldList(); } $form = new CMSForm($this, 'EditForm', $fields, new FieldList()); $form->setResponseNegotiator($this->getResponseNegotiator()); $form->addExtraClass('cms-edit-form center'); $form->setAttribute('data-layout-type', 'border'); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); $form->setAttribute('data-pjax-fragment', 'CurrentForm'); $form->setHTMLID('Form_EditForm'); if ($record) { $form->loadDataFrom($record); } return $form; }
public function updateCMSFields(FieldList $fields) { $fields->removeByName(array('Lat', 'Lng')); // Adds Lat/Lng fields for viewing in the CMS $compositeField = CompositeField::create(); $compositeField->push($overrideField = CheckboxField::create('LatLngOverride', 'Override Latitude and Longitude?')); $overrideField->setDescription('Check this box and save to be able to edit the latitude and longitude manually.'); if ($this->owner->Lng && $this->owner->Lat) { $googleMapURL = 'http://maps.google.com/?q=' . $this->owner->Lat . ',' . $this->owner->Lng; $googleMapDiv = '<div class="field"><label class="left" for="Form_EditForm_MapURL_Readonly">Google Map</label><div class="middleColumn"><a href="' . $googleMapURL . '" target="_blank">' . $googleMapURL . '</a></div></div>'; $compositeField->push(LiteralField::create('MapURL_Readonly', $googleMapDiv)); } if ($this->owner->LatLngOverride) { $compositeField->push(TextField::create('Lat', 'Lat')); $compositeField->push(TextField::create('Lng', 'Lng')); } else { $compositeField->push(ReadonlyField::create('Lat_Readonly', 'Lat', $this->owner->Lat)); $compositeField->push(ReadonlyField::create('Lng_Readonly', 'Lng', $this->owner->Lng)); } if ($this->owner->hasExtension('Addressable')) { // If using addressable, put the fields with it $fields->addFieldToTab('Root.Address', ToggleCompositeField::create('Coordinates', 'Coordinates', $compositeField)); } else { if ($this->owner instanceof SiteTree) { // If SIteTree but not using Addressable, put after 'Metadata' toggle composite field $fields->insertAfter($compositeField, 'ExtraMeta'); } else { $fields->addFieldToTab('Root.Main', ToggleCompositeField::create('Coordinates', 'Coordinates', $compositeField)); } } }
public function updateCMSFields(FieldList $fields) { $extFields = self::$db; $fields->removeByName(array_keys($extFields)); if (!$this->owner->WordpressID) { return; } $compositeFields = array(); foreach ($extFields as $name => $type) { $value = $this->owner->getField($name); $compositeFields[$name] = ReadonlyField::create($name . '_Readonly', FormField::name_to_label($name), $value); } if ($compositeFields) { $wordpressCompositeField = ToggleCompositeField::create('WordpressCompositeField', 'Wordpress', $compositeFields)->setHeadingLevel(4); if ($fields->fieldByName('Metadata')) { $fields->insertBefore($wordpressCompositeField, 'Metadata'); } else { if ($fields->fieldByName('Root')) { $fields->addFieldToTab('Root.Main', $wordpressCompositeField); } else { $fields->push($wordpressCompositeField); } } } }
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 updateCMSFields(FieldList $fields) { $fields->removeByName('SocialNavLinks'); // Setup compressed postage options $socialnav_fields = ToggleCompositeField::create('SocialNavFields', 'Social Nav', array(GridField::create('SocialNavLinks', '', $this->owner->SocialNavLinks(), GridFieldConfig_RecordEditor::create()))); // Add config sets $fields->addFieldToTab('Root.Main', $socialnav_fields); }
public function getCMSFields() { $fields = parent::getCMSFields(); //we use ToggleCompositeFields instead of tabs. it looks cleaner and 'lite' $fields->addFieldToTab("Root.Main", ToggleCompositeField::create('Options', _t('Page.OPTIONS', 'Options'), array(CheckboxField::create('ShowInMenus', _t('Page.SHOWREGULARMENU', 'Show in regular Menu')), $tabBehaviour = new Tab('Settings', new DropdownField("ClassName", $this->fieldLabel('ClassName'), $this->getClassDropdown()), $parentTypeSelector = new CompositeField(new OptionsetField("ParentType", _t("SiteTree.PAGELOCATION", "Page location"), array("root" => _t("SiteTree.PARENTTYPE_ROOT", "Top-level page"), "subpage" => _t("SiteTree.PARENTTYPE_SUBPAGE", "Sub-page underneath a parent page"))), $parentIDField = new TreeDropdownField("ParentID", $this->fieldLabel('ParentID'), 'SiteTree', 'ID', 'MenuTitle')))))->setHeadingLevel(4), 'Metadata'); $fields->removeByName("ExtraMeta"); return $fields; }
/** * This method holds the functionality to complete the oauth flow through the CMS * * @param $fields FieldList **/ public function updateCMSFields(FieldList $fields) { // Remove fields that may have been added elsewhere. $fields->removeByName("FacebookUser"); $fields->removeByName("FacebookUserID"); $fields->removeByName("FacebookAccessToken"); // Add our new fields. $fields->addFieldsToTab("Root.Main", ToggleCompositeField::create('FacebookUser', 'Facebook User', array(TextField::create("FacebookUserID", "User ID"), TextField::create("FacebookAccessToken", "Access Token")))->setHeadingLevel(4)); }
/** * @return FieldList */ public function getCMSFields() { $fields = new FieldList(); $from = new TextField('From', 'From'); $from->setRightTitle('(e.g "/my-page/")- always include the /'); $to = new TextField('To', 'To'); $to->setRightTitle('e.g "/my-page/" for internal pages or "http://google.com/" for external websites (and include the scheme - http:// or https://)'); $fields->push($manual = new ToggleCompositeField('TextLinks', 'Enter urls', [$from, $to])); $fields->push($page = new ToggleCompositeField('SiteTree', 'Select pages from list', [new TreeDropdownField('FromRelationID', 'From', 'SiteTree'), new TreeDropdownField('ToRelationID', 'To', 'SiteTree')])); $fields->push(new DropdownField('Type', 'Type', ['Vanity' => 'Vanity', 'Permanent' => 'Permanent'])); if ($this->getField('From') || $this->getField('To')) { $manual->setStartClosed(false); } if ($this->getField('FromRelationID') || $this->getField('ToRelationID')) { $page->setStartClosed(false); } return $fields; }
public function updateCMSFields(FieldList $fields) { $fields->addFieldToTab('Root.Main', UploadField::create('Logo')->setFolderName('logos')); $footer_fields = ToggleCompositeField::create('FoooterInfo', 'Footer', array(HTMLEditorField::create('FooterContent', 'Content to appear in footer')->setRows(15)->addExtraClass('stacked')))->setHeadingLevel(4); $contact_fields = ToggleCompositeField::create('ContactInfo', 'Contact Info.', array(TextAreaField::create('ContactAddress', $this->owner->fieldLabel('ContactAddress')), TextField::create('ContactEmail', $this->owner->fieldLabel('ContactEmail')), TextField::create('ContactPhone', $this->owner->fieldLabel('ContactPhone')), TextAreaField::create('MiscContactInfo', $this->owner->fieldLabel('MiscContactInfo')), TextAreaField::create('MapHTML', "HTML to be loaded for mapping info")))->setHeadingLevel(4); $theme_custom_fields = ToggleCompositeField::create('CustomTheme', 'Theme Customisation', array(TextField::create('CustomMainBackground', $this->owner->fieldLabel('CustomMainBackground')), TextField::create('CustomBodyBackground', $this->owner->fieldLabel('CustomBodyBackground')), TextField::create('CustomHeadBackground', $this->owner->fieldLabel('CustomHeadBackground')), TextField::create('CustomFootBackground', $this->owner->fieldLabel('CustomFootBackground')), TextField::create('CustomMaxWidth', $this->owner->fieldLabel('CustomMaxWidth'))))->setHeadingLevel(4); $fields->addFieldToTab('Root.Main', $footer_fields); $fields->addFieldToTab('Root.Main', $contact_fields); $fields->addFieldToTab('Root.Main', $theme_custom_fields); }
/** * @param FieldList $fields */ public function updateCMSFields(FieldList $fields) { /** ========================================= * @var TextareaField $address ===========================================*/ if (!$this->owner->TwitterCardType) { $this->owner->TwitterCardType = 'summary_large_image'; } $fields->addFieldToTab('Root.Main', ToggleCompositeField::create('Twitter Graph', 'Twitter Card', array(LiteralField::create('', '<h2> Twitter Card <img style="position:relative;top:4px;left 4px;" src="' . Director::absoluteBaseURL() . 'twitter-card-meta/images/twitter.png"></h2>'), TextField::create('TwitterCreator', 'Creator Handle')->setAttribute('placeholder', 'e.g @username')->setRightTitle('Twitter account name for the author/creator (Will default to site handle)'), OptionsetField::create('TwitterCardType', 'Twitter Card Type', array('summary_large_image' => 'summary with large image', 'summary' => 'summary'), 'summary_large_image')->setRightTitle('Choose which type of twitter card you would like this page to share as.'), TextField::create('TwitterTitle', 'Twitter Card Title')->setAttribute('placeholder', 'e.g Description Of Page Content')->setRightTitle('Twitter title to to display on the Twitter card'), TextareaField::create('TwitterDescription', '')->setRightTitle('Twitter card description goes here, automatically defaults to the content summary'), UploadField::create('TwitterImage', 'Twitter Card Image')->setRightTitle('Will default too the first image in the WYSIWYG editor or banner image if left blank')))); }
/** * This method holds the functionality to complete the oauth flow through the CMS * * @param $fields FieldList **/ public function updateCMSFields(FieldList $fields) { // Remove fields that may have been added elsewhere. $fields->removeByName("TwitterUser"); $fields->removeByName("TwitterScreenName"); $fields->removeByName("TwitterUserID"); $fields->removeByName("TwitterAccessToken"); $fields->removeByName("TwitterAccessSecret"); // Add our new fields. $fields->push(ToggleCompositeField::create('TwitterUser', 'Twitter User', array(TextField::create("TwitterScreenName", "Screen Name"), TextField::create("TwitterUserID", "User ID"), TextField::create("TwitterAccessToken", "Access Token"), PasswordField::create("TwitterAccessSecret", "Access Secret")))->setHeadingLevel(4)); }
public function getCMSFields() { $fields = parent::getCMSFields(); // Embargo $embargo = ToggleCompositeField::create('Embargo', 'Embargo', array(DateField::create('Starts', 'Allow participation from')->setRightTitle('Optional. If left blank, participation starts when page is published')->setConfig('showcalendar', true), DateField::create('Expires', 'Until')->setRightTitle('Optional. If left blank, participation will end when page is unpublished.')->setConfig('showcalendar', true)))->setStartClosed(false); $fields->addFieldToTab('Root.FormOptions', $embargo, 'SubmitButtonText'); // Reports $config = GridFieldConfig_RecordEditor::create(); $reports = GridField::create('Reports', 'Reports', $this->Reports(), $config); $fields->addFieldToTab('Root.Reports', $reports); return $fields; }
/** * Updates the CMS fields of the extended object. * * @param FieldList $fields */ public function updateCMSFields(FieldList $fields) { // Create Moderno Tab Set: $fields->addFieldToTab('Root', TabSet::create('Moderno', _t('ModernoConfigExtension.MODERNO', 'Moderno'))); // Create Colors Tab: $fields->findOrMakeTab('Root.Moderno.Colors', _t('ModernoConfigExtension.COLORS', 'Colors')); // Create Colors Fields: $fields->addFieldsToTab('Root.Moderno.Colors', array(ColorField::create('ModernoHighlightColor', _t('ModernoConfigExtension.HIGHLIGHTCOLOR', 'Highlight color')), ColorField::create('ModernoLogoBkgColor', _t('ModernoConfigExtension.LOGOBACKGROUNDCOLOR', 'Logo background color')), ColorField::create('ModernoLinkColor', _t('ModernoConfigExtension.LINKCOLOR', 'Link color')), ColorField::create('ModernoProfileLinkColor', _t('ModernoConfigExtension.PROFILELINKCOLOR', 'Profile link color')))); // Create Branding Tab: $fields->findOrMakeTab('Root.Moderno.Branding', _t('ModernoConfigExtension.BRANDING', 'Branding')); // Create Branding Fields: $fields->addFieldsToTab('Root.Moderno.Branding', array(TextField::create('ModernoApplicationName', _t('ModernoConfigExtension.APPLICATIONNAME', 'Application name')), TextField::create('ModernoApplicationLink', _t('ModernoConfigExtension.APPLICATIONLINK', 'Application link')), ToggleCompositeField::create('ModernoLogoToggle', _t('ModernoConfigExtension.LOGOIMAGETOGGLETITLE', 'Logo Image'), array(UploadField::create('ModernoLogoImage', _t('ModernoConfigExtension.LOGOIMAGE', 'Logo image'))->setAllowedFileCategories('image')->setFolderName(self::get_asset_path()), FieldGroup::create(_t('ModernoConfigExtension.DIMENSIONSINPIXELS', 'Dimensions (in pixels)'), array(TextField::create('ModernoLogoImageWidth', '')->setAttribute('placeholder', _t('ModernoConfigExtension.WIDTH', 'Width')), LiteralField::create('ModernoLogoImageBy', '<i class="fa fa-times by"></i>'), TextField::create('ModernoLogoImageHeight', '')->setAttribute('placeholder', _t('ModernoConfigExtension.HEIGHT', 'Height')))), DropdownField::create('ModernoLogoImageResize', _t('ModernoConfigExtension.RESIZEMETHOD', 'Resize method'), self::get_resize_methods())->setEmptyString(' '), CheckboxField::create('ModernoHideSiteName', _t('ModernoConfigExtension.HIDESITENAME', 'Hide site name')), CheckboxField::create('ModernoSupportRetina', _t('ModernoConfigExtension.SUPPORTRETINADEVICES', 'Support Retina devices')))), ToggleCompositeField::create('ModernoLoadingToggle', _t('ModernoConfigExtension.LOADINGIMAGETOGGLETITLE', 'Loading Image'), array(UploadField::create('ModernoLoadingImage', _t('ModernoConfigExtension.LOADINGIMAGE', 'Loading image'))->setAllowedFileCategories('image')->setFolderName(self::get_asset_path()), FieldGroup::create(_t('ModernoConfigExtension.DIMENSIONSINPIXELS', 'Dimensions (in pixels)'), array(TextField::create('ModernoLoadingImageWidth', '')->setAttribute('placeholder', _t('ModernoConfigExtension.WIDTH', 'Width')), LiteralField::create('ModernoLoadingImageBy', '<i class="fa fa-times by"></i>'), TextField::create('ModernoLoadingImageHeight', '')->setAttribute('placeholder', _t('ModernoConfigExtension.HEIGHT', 'Height')))), DropdownField::create('ModernoLoadingImageResize', _t('ModernoConfigExtension.RESIZEMETHOD', 'Resize method'), self::get_resize_methods())->setEmptyString(' '))))); }
public function updateCMSFields(FieldList $fields) { // Slides $config = GridFieldConfig_RecordEditor::create(); if (class_exists('GridFieldSortableRows')) { $config->addComponent(new GridFieldSortableRows('SortOrder')); } $config->removeComponentsByType('GridFieldAddExistingAutocompleter'); $config->removeComponentsByType('GridFieldDeleteAction'); $config->addComponent(new GridFieldDeleteAction(false)); $SlidesField = GridField::create('Slides', 'Slides', $this->owner->Slides()->sort('SortOrder'), $config); $fields->addFieldsToTab('Root.Slides', array(HeaderField::create('SliderHD', 'Slides', 3), $SlidesField, ToggleCompositeField::create('ConfigHD', 'Slider Settings', array(CheckboxField::create('Animate', 'Animate automatically'), DropdownField::create('Animation', 'Animation option', $this->owner->dbObject('Animation')->enumValues()), CheckboxField::create('Loop', 'Loop the carousel'), CheckboxField::create('ThumbnailNav', 'Thumbnail Navigation'))))); }
public function updateCMSFields(FieldList $fields) { $fields->addFieldToTab("Root.Main", TextField::create("BusinessName")); $fields->addFieldToTab("Root.Main", TextField::create("StreetAddress")); $fields->addFieldToTab("Root.Main", TextField::create("City")); $fields->addFieldToTab("Root.Main", TextField::create("Province")); $fields->addFieldToTab("Root.Main", TextField::create("PostalCode")); $fields->addFieldToTab("Root.Main", TextField::create("PhoneNumber")); $fields->addFieldToTab("Root.Main", TextField::create("FaxNumber")); $fields->addFieldToTab("Root.Main", EmailField::create("MainEmail", 'Main Contact Email')); $fields->addFieldToTab("Root.Main", EmailField::create("SiteEmail", 'Email for Contact Forms')); $fields->addFieldToTab("Root.Main", UploadField::create("Logo")); $socialField = ToggleCompositeField::create("SocialGroup", "Social Media", array(TextField::create("Twitter", 'Twitter User Name')->setDescription('User Name WITHOUT the at symobole (@) '), TextField::create("FacebookURL", 'Facebook URL'), TextField::create("LinkedInURL", 'LinkedIn URL'), TextField::create("GooglePlusURL", 'Google+ URL'), TextField::create("PinterestURL", 'Pinterest URL'), TextField::create("YouTubeURL", 'YouTube URL'), TextField::create("InstagramURL", 'Instagram URL'), TextField::create("TumblrURL", 'Tumblr URL'))); $fields->addFieldToTab("Root.Main", $socialField); }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('Order'); $fields->removeByName('Title'); $fields->removeByName('ProcessStages'); $fields->removeByName('StopStages'); if ($this->ID > 0) { $stops = new GridField('StopStages', 'Stopping Points', $this->StopStages(), GridFieldConfig_RelationEditor::create()); $stopGroup = new ToggleCompositeField('StopStages', 'Stopping points in this process', array(LiteralField::create('StopDescription', '<p class="message info">Create all stops for this process. You can then link to these stops from within any stages you create.</p>'), $stops)); $stopGroup->setHeadingLevel(5); } else { $stopGroup = LiteralField::create('NoStopDescription', '<p class="message info">Save this process to add stages and stop stages</p>'); } $fields->addFieldToTab('Root.Main', $processSteps = new CompositeField($title = new TextField('Title', 'Title'), $stopGroup)); $title->addExtraClass('process-noborder'); $processSteps->addExtraClass('process-step'); $fields->insertBefore(new LiteralField('StageTitle', '<h3 class="process-info-header"> <span class="step-label"> <span class="flyout">1</span><span class="arrow"></span> <span class="title">Process details</span> </span> </h3>'), 'Title'); if ($this->ID > 0) { $fields->addFieldToTab('Root.Main', $processSteps = new CompositeField(new GridField('ProcessStages', 'Process Stages', $this->ProcessStages(), $processStages = GridFieldConfig_RelationEditor::create()))); $processStages->addComponent(new GridFieldSortableRows('Order')); $processSteps->addExtraClass('process-step'); $fields->insertBefore(new LiteralField('StageTitle', '<h3 class="process-info-header"> <span class="step-label"> <span class="flyout">2</span><span class="arrow"></span> <span class="title">Stages of this process</span> </span> </h3>'), 'ProcessStages'); } return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByname('ParentID'); $fields->removeByname('MapLocationHelp'); $fields->removeByname('Address'); $fields->removeByname('PostCode'); $fields->removeByname('Latitude'); $fields->removeByname('Longitude'); $fields->removeByname('ZoomLevel'); $fields->removeByname('Content'); if ($this->ID) { $fields->addFieldToTab("Root.Main", HtmlEditorField::create("Content", "Content to be displayed with this map")->addExtraClass('stacked')->setRows(15)); $config_fields = ToggleCompositeField::create('MapConfig', 'Configuration Options', array(LiteralField::create('MapLocationHelp', '<p class="field">Set EITHER an address / post code OR latitude / longitude to generate a map</p>'), TextAreaField::create("Address"), TextField::create("PostCode", "Post Code"), TextField::create("Latitude"), TextField::create("Longitude"), NumericField::create("ZoomLevel", "Zoom (1 = world, 20 = close)")))->setHeadingLevel(4); $fields->addFieldToTab('Root.Main', $config_fields); } 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($params = null) { Requirements::css(DATACHANGE_PATH . '/css/datachange-tracker.css'); $fields = FieldList::create(ToggleCompositeField::create('Details', 'Details', array(ReadonlyField::create('ChangeType', 'Type of change'), ReadonlyField::create('ClassType', 'Record Class'), ReadonlyField::create('ClassID', 'Record ID'), ReadonlyField::create('ObjectTitle', 'Record Title'), ReadonlyField::create('Created', 'Modification Date'), ReadonlyField::create('Stage', 'Stage'), ReadonlyField::create('User', 'User', $this->getMemberDetails()), ReadonlyField::create('CurrentURL', 'URL'), ReadonlyField::create('Referer', 'Referer'), ReadonlyField::create('RemoteIP', 'Remote IP'), ReadonlyField::create('Agent', 'Agent')))->setStartClosed(false)->addExtraClass('datachange-field'), ToggleCompositeField::create('RawData', 'Raw Data', array(ReadonlyField::create('Before'), ReadonlyField::create('After'), ReadonlyField::create('GetVars'), ReadonlyField::create('PostVars')))->setStartClosed(false)->addExtraClass('datachange-field')); if (strlen($this->Before)) { $before = Object::create($this->ClassType, unserialize($this->Before), true); $after = Object::create($this->ClassType, unserialize($this->After), true); $diff = DataDifferencer::create($before, $after); $diffed = $diff->diffedData(); $diffText = ''; $changedFields = array(); foreach ($diffed->toMap() as $field => $prop) { $changedFields[] = $readOnly = ReadonlyField::create('ChangedField' . $field, $field, $prop); $readOnly->dontEscape = true; $readOnly->addExtraClass('datachange-field'); } $fields->insertBefore(ToggleCompositeField::create('FieldChanges', 'Changed Fields', $changedFields)->setStartClosed(false)->addExtraClass('datachange-field'), 'RawData'); } $fields = $fields->makeReadonly(); return $fields; }
public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); $member = \Member::currentUser(); if (!$member) { return $form; } $actions = $form->Actions(); $fields = $form->Fields(); $fields->removeByName('BackupTokens'); $two_factor_fields = [\CheckboxField::create('Has2FA', 'Enable Two Factor Authentication', $member->Has2FA)]; if ($member->Has2FA) { $two_factor_fields[] = \LiteralField::create('SecurityWarning', '<p>The button below reveals your security token for scanning and any backup tokens you may have. ' . 'Please reveal them only when no one else is observing your screen.'); $two_factor_fields[] = \ToggleCompositeField::create('SecurityTokens', 'Security tokens', [\LiteralField::create('PrintableTOTPToken', sprintf('<div id="PrintableTOTPToken" class="field readonly">' . '<label class="left" for="Form_EditForm_PrintableTOTPToken">TOTP Token</label>' . '<div class="middleColumn">' . '<span id="Form_EditForm_PrintableTOTPToken" class="readonly">%s<br />' . '<img src="%s" width=175 height=175 /></span>' . '</div></div>', $member->getPrintableTOTPToken(), $member->generateQRCode())), \LiteralField::create('DisplayBackupTokens', '<div id="DisplayBackupTokens" class="field readonly">' . '<p><b>Backup Tokens:</b> Please copy these and keep in a safe place.</p>' . implode('<br />', $member->BackupTokens()->column('Value')) . '</div>')]); } $fields->addFieldsToTab('Root.TwoFactorAuthentication', $two_factor_fields); if ($member->Has2FA) { $actions->push(\FormAction::create('regenerate_backup_tokens')->setTitle('Create new two-factor backup tokens')->addExtraClass('ss-ui-action-constructive')->addExtraClass('ss-ui-action-destructive')); } return $form; }
public function updateCMSFields(FieldList $fields) { $fields->removeByName('Metadata'); /* split keywords onto new lines for easy editing */ $this->owner->setField('MetaKeywords', $this->keywordsOnNewLine()); $advancedFields = array(); $ExtraMetaFields = array(); array_push($advancedFields, new HeaderField('SeoHdr', 'Search Engine Optimization', 2)); if (!$this->owner->canCreate()) { $fields->removeByName('URLSegment'); $fields->removeByName('MenuTitle'); $fields->removeByName('Title'); array_push($advancedFields, new LiteralField('TitleDescription', '<p class="metatitle" id="Form_EditForm_MetaTitleStats"></p>')); array_push($advancedFields, new TextField('MetaTitle', 'Meta Title', $this->owner->Title)); } array_push($advancedFields, new LiteralField('StatsDescription', '<p class="metastats" id="Form_EditForm_MetaDescriptionStats"></p>')); array_push($advancedFields, $metaFieldDesc = new TextareaField('MetaDescription', 'Meta Description')); /* add class to prevent newlines */ $metaFieldDesc->addExtraClass('noenter'); $metaFieldDesc->setRightTitle(_t('SiteTree.METADESCHELP', "Search engines use this content for displaying search results.")); array_push($ExtraMetaFields, $metaKeywordsDesc = new TextareaField('MetaKeywords', 'Meta Keywords')); $metaKeywordsDesc->setRightTitle(_t('SiteTree.METAKEYWHELP', "Keywords are now ignored by most of the major search engines.")); array_push($ExtraMetaFields, $metaFieldExtra = new TextareaField("ExtraMeta", 'Custom Meta Tags')); $metaFieldExtra->setRightTitle(_t('SiteTree.METAEXTRAHELP', "HTML tags for additional meta information. For example <meta name=\"customName\" content=\"your custom content here\" />")); $MetaStuff = ToggleCompositeField::create('MetaStuff', 'Additional Metadata', $ExtraMetaFields)->setHeadingLevel(5); array_push($advancedFields, $MetaStuff); if ($depTab = $fields->fieldByName('Root.Dependent')) { $dependencyArr = array(); foreach ($depTab as $item) { array_push($dependencyArr, $item); } $dependencyPages = ToggleCompositeField::create('Dependencies', $depTab->Title(), $dependencyArr)->setHeadingLevel(5); array_push($advancedFields, $dependencyPages); $fields->removeByName('Dependent'); } $fields->addFieldsToTab('Root.Advanced', $advancedFields); $seoTab = $fields->findOrMakeTab('Root.Advanced'); $seoTab->addExtraClass('tab-to-right'); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('ParentConfigID'); // Setup Payment Gateway type $payments = ClassInfo::subclassesFor('CommercePaymentMethod'); // Remove parent class from list unset($payments['CommercePaymentMethod']); // Check if any payment types have been hidden and unset foreach ($payments as $payment_type) { if ($payment_type::$hidden) { unset($payments[$payment_type]); } } $classname_field = DropdownField::create('ClassName', 'Type of Payment', $payments)->setHasEmptyDefault(true)->setEmptyString('Select Gateway'); $fields->addFieldToTab('Root.Main', $classname_field); if ($this->ID) { $fields->addFieldToTab("Root.Main", TextField::create('Summary', 'Summary message to appear on website')); $fields->addFieldToTab("Root.Main", TextField::create('URL', 'Payment gateway URL')); $fields->addFieldToTab("Root.Main", CheckboxField::create('Default', 'Default payment method?')); $fields->addFieldToTab("Root.Main", TextareaField::create('GatewayMessage', 'Message to appear when user user is directed to payment provider')); $fields->addFieldToTab("Root.Main", HTMLEditorField::create("PaymentInfo", "Message to appear on payment summary page")); // Setup response URL field $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->ID); // Setup completed URL $complete_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "complete"); // Setup error URL $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "complete", "error"); $url_field = ToggleCompositeField::create("PaymentURLS", "Payment integration URLs", FieldList::create(ReadonlyField::create('ResponseURL', 'Response URL')->setValue($callback_url), ReadonlyField::create('CompletedURL', 'Completed URL')->setValue($complete_url), ReadonlyField::create('ErrorURL', 'Error URL')->setValue($error_url))); $fields->addFieldToTab("Root.Main", $url_field); } else { $fields->removeByName('URL'); $fields->removeByName('Summary'); $fields->removeByName('Default'); $fields->removeByName('GatewayMessage'); $fields->removeByName('PaymentInfo'); } return $fields; }