public function updateCMSFields(\FieldList $fields)
 {
     if (!$this->owner->exists()) {
         return;
     }
     $fields->addFieldsToTab('Root.Recommended', [\TextField::create('Recommended_Title', _t('Product.Recommended_Title', 'Title'))->setAttribute('placeholder', $this->owner->config()->recommended_title ?: _t('Product.Default-Recommended_Title', 'Recommended Products')), \CheckboxField::create('Recommended_AlsoBought', _t('Product.Recommended_AlsoBought', 'Prioritise products that were bought with this product?'))->setDescription(_t('Product.Desc-Recommended_AlsoBought', 'This will use products that previous customers have bought with this product, otherwise it will select from your choice below.')), \SelectionGroup::create('Recommended_FindBy', $this->getMethodFormFields())]);
 }
 public function getCMSFields($params = null)
 {
     //fields that shouldn't be changed once coupon is used
     $fields = new FieldList(array($tabset = new TabSet("Root", $maintab = new Tab("Main", TextField::create("Title"), CheckboxField::create("Active", "Active")->setDescription("Enable/disable all use of this discount."), HeaderField::create("ActionTitle", "Action", 3), $typefield = SelectionGroup::create("Type", array(new SelectionGroup_Item("Percent", $percentgroup = FieldGroup::create($percentfield = NumericField::create("Percent", "Percentage", "0.00")->setDescription("e.g. 0.05 = 5%, 0.5 = 50%, and 5 = 500%"), $maxamountfield = CurrencyField::create("MaxAmount", _t("MaxAmount", "Maximum Amount"))->setDescription("The total allowable discount. 0 means unlimited.")), "Discount by percentage"), new SelectionGroup_Item("Amount", $amountfield = CurrencyField::create("Amount", "Amount", "\$0.00"), "Discount by fixed amount")))->setTitle("Type"), OptionSetField::create("For", "Applies to", array("Order" => "Entire Order", "Cart" => "Cart Subtotal", "Shipping" => "Shipping Subtotal", "Items" => "Each Individual Item")), new Tab("Main", HeaderField::create("ConstraintsTitle", "Constraints", 3), LabelField::create("ConstraintsDescription", "Configure the requirements an order must meet for this discount to be valid:")), new TabSet("Constraints")))));
     if (!$this->isInDB()) {
         $fields->addFieldToTab("Root.Main", LiteralField::create("SaveNote", "<p class=\"message good\">More constraints will show up after you save for the first time.</p>"), "Constraints");
     }
     $this->extend("updateCMSFields", $fields, $params);
     if ($count = $this->getUseCount()) {
         $fields->addFieldsToTab("Root.Usage", array(HeaderField::create("UseCount", sprintf("This discount has been used {$count} time%s.", $count > 1 ? "s" : "")), HeaderField::create("TotalSavings", sprintf("A total of %s has been saved by customers using this discount.", $this->SavingsTotal), "3"), GridField::create("Orders", "Orders", $this->getAppliedOrders(), GridFieldConfig_RecordViewer::create()->removeComponentsByType("GridFieldViewButton"))));
     }
     if ($params && isset($params['forcetype'])) {
         $valuefield = $params['forcetype'] == "Percent" ? $percentfield : $amountfield;
         $fields->insertAfter($valuefield, "Type");
         $fields->removeByName("Type");
     } elseif ($this->Type && (double) $this->{$this->Type}) {
         $valuefield = $this->Type == "Percent" ? $percentfield : $amountfield;
         $fields->removeByName("Type");
         $fields->insertAfter($valuefield, "ActionTitle");
         $fields->replaceField($this->Type, $valuefield->performReadonlyTransformation());
         if ($this->Type == "Percent") {
             $fields->insertAfter($maxamountfield, "Percent");
         }
     }
     return $fields;
 }
 /**
  *	Display CMS link mapping configuration.
  */
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     Requirements::css(MISDIRECTION_PATH . '/css/misdirection.css');
     // Remove any fields that are not required in their default state.
     $fields->removeByName('MappedLink');
     $fields->removeByName('IncludesHostname');
     $fields->removeByName('Priority');
     $fields->removeByName('RedirectType');
     $fields->removeByName('RedirectLink');
     $fields->removeByName('RedirectPageID');
     $fields->removeByName('ResponseCode');
     $fields->removeByName('ForwardPOSTRequest');
     $fields->removeByName('HostnameRestriction');
     // Update any fields that are displayed.
     $fields->dataFieldByName('LinkType')->addExtraClass('link-type')->setTitle('Type');
     // Instantiate the required fields.
     $fields->insertBefore(HeaderField::create('MappedLinkHeader', 'Mapping', 3), 'LinkType');
     // Retrieve the mapped link configuration as a single grouping.
     $URL = FieldGroup::create(TextField::create('MappedLink', '')->setRightTitle('This should <strong>not</strong> include the <strong>HTTP/S</strong> scheme'), CheckboxField::create('IncludesHostname', 'Includes Hostname?'))->addExtraClass('mapped-link')->setTitle('URL');
     $fields->addFieldToTab('Root.Main', $URL);
     // Generate the 1 - 10 priority selection.
     $range = array();
     for ($iteration = 1; $iteration <= 10; $iteration++) {
         $range[$iteration] = $iteration;
     }
     $fields->addFieldToTab('Root.Main', DropdownField::create('Priority', null, $range));
     // Retrieve the redirection configuration as a single grouping.
     $fields->addFieldToTab('Root.Main', HeaderField::create('RedirectionHeader', 'Redirection', 3));
     $redirect = FieldGroup::create()->addExtraClass('redirect-link');
     $redirect->push(TextField::create('RedirectLink', '')->setRightTitle('This requires the <strong>HTTP/S</strong> scheme for an external URL'));
     // Allow redirect page configuration when the CMS module is present.
     if (ClassInfo::exists('SiteTree')) {
         // Allow redirect type configuration.
         if (!$this->RedirectType) {
             // Initialise the default redirect type.
             $this->RedirectType = 'Link';
         }
         $fields->addFieldToTab('Root.Main', SelectionGroup::create('RedirectType', array('Link//To URL' => $redirect, 'Page//To Page' => TreeDropdownField::create('RedirectPageID', '', 'SiteTree')))->addExtraClass('field redirect'));
     } else {
         $redirect->setTitle('To URL');
         $fields->addFieldToTab('Root.Main', $redirect);
     }
     // Use third party validation against an external URL.
     if ($this->canEdit()) {
         Requirements::javascript(MISDIRECTION_PATH . '/javascript/misdirection-link-mapping.js');
         $redirect->push(CheckboxField::create('ValidateExternal', 'Validate External URL?')->addExtraClass('validate-external'));
     }
     // Retrieve the response code selection.
     $responses = Config::inst()->get('SS_HTTPResponse', 'status_codes');
     $selection = array();
     foreach ($responses as $code => $description) {
         if ($code >= 300 && $code < 400) {
             $selection[$code] = "{$code}: {$description}";
         }
     }
     // Retrieve the response code configuration as a single grouping.
     $response = FieldGroup::create(DropdownField::create('ResponseCode', '', $selection), CheckboxField::create('ForwardPOSTRequest', 'Forward POST Request?'))->addExtraClass('response')->setTitle('Response Code');
     $fields->addFieldToTab('Root.Main', $response);
     // The optional hostname restriction is now deprecated.
     if ($this->HostnameRestriction) {
         $fields->addFieldToTab('Root.Optional', TextField::create('HostnameRestriction'));
     }
     // Allow extension customisation.
     $this->extend('updateLinkMappingCMSFields', $fields);
     return $fields;
 }
 /**
  * @return array
  */
 protected function getTagFields()
 {
     $fields = new FieldList(LiteralField::create('BlockScrapeTitle', '<p>Block tag and meta keywords generation</p>'), SelectionGroup::create('BlockScrape', [new SelectionGroup_Item(true, [], 'Yes'), new SelectionGroup_Item(false, [new CheckboxField('ReGenerateTags', 'Regenerate tags on save'), new CheckboxField('ReGenerateKeywords', 'Regenerate keywords on save'), new CheckboxField('RestrictToKnownTags', 'Restrict to known terms when regenerating'), new CheckboxField('TreatHashTagsAsKnownTags', 'Treat hash tags as known tags')], 'No')])->addExtraClass('field'), new TextField('MetaKeywords', 'Meta Keywords (comma separated)'), new TextField('Tags', 'Tags (comma separated)'));
     return $fields;
 }
示例#5
0
 /**
  * Frontend fields
  * Simple list of the basic fields - how they're intended to be edited
  */
 function getFrontEndFields($params = null)
 {
     //parent::getFrontEndFields($params);
     $timeFrameHeaderText = 'Time Frame';
     if (!CalendarConfig::subpackage_setting('events', 'force_end')) {
         $timeFrameHeaderText = 'End Date / Time (optional)';
     }
     $fields = FieldList::create(TextField::create('Title')->setAttribute('placeholder', 'Enter a title'), CheckboxField::create('AllDay', 'All-day'), $startDateTime = DatetimeField::create('StartDateTime', 'Start'), CheckboxField::create('NoEnd', 'Open End'), HeaderField::create('TimeFrameHeader', $timeFrameHeaderText, 5), SelectionGroup::create('TimeFrameType', array("Duration//Duration" => TimeField::create('Duration', '')->setRightTitle('up to 24h')->setAttribute('placeholder', 'Enter duration'), "DateTime//Date/Time" => $endDateTime = DateTimeField::create('EndDateTime', ''))), LiteralField::create('Clear', '<div class="clear"></div>'));
     //Date field settings
     $timeExpl = 'Time, e.g. 11:15am or 15:30';
     //$startDateTime->setConfig('datavalueformat', 'YYYY-MM-dd HH:mm');
     //$endDateTime->setConfig('datavalueformat', 'YYYY-MM-dd HH:mm');
     $startDateTime->getDateField()->setConfig('showcalendar', 1)->setAttribute('placeholder', 'Enter date')->setAttribute('readonly', 'true');
     //we only want input through the datepicker
     $startDateTime->getTimeField()->setConfig('timeformat', 'HH:mm')->setAttribute('placeholder', 'Enter time');
     $endDateTime->getDateField()->setConfig('showcalendar', 1)->setAttribute('placeholder', 'Enter date')->setAttribute('readonly', 'true');
     //we only want input through the datepicker
     $endDateTime->getTimeField()->setConfig('timeformat', 'HH:mm')->setAttribute('placeholder', 'Enter time');
     //removing AllDay checkbox if allday events are disabled
     if (!CalendarConfig::subpackage_setting('events', 'enable_allday_events')) {
         $fields->removeByName('AllDay');
     }
     //removing NoEnd checkbox if end dates are enforced
     if (CalendarConfig::subpackage_setting('events', 'force_end')) {
         $fields->removeByName('NoEnd');
     } else {
         //we don't want the NoEnd checkbox when creating new events
         if (!$this->ID) {
             //$fields->removeByName('NoEnd');
         }
     }
     $this->extend('updateFrontEndFields', $fields);
     return $fields;
 }