/**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     /** =========================================
          * @var TextareaField $address
          * @var TextareaField $postalAddress
          * @var TextField $mailChimpAPI
          * @var TextareaField $mailChimpSuccessMessage
         ===========================================*/
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     /** -----------------------------------------
      * Details
      * ----------------------------------------*/
     $address = TextareaField::create('Address', 'Address');
     $address->setRows(8);
     $postalAddress = TextareaField::create('PostalAddress', 'Postal Address');
     $postalAddress->setRows(8);
     $fields->findOrMakeTab('Root.Settings.Details');
     $fields->addFieldsToTab('Root.Settings.Details', array(HeaderField::create('', 'Company Details'), Textfield::create('Phone', 'Phone Number'), Textfield::create('Email', 'Public Email Address'), $address, $postalAddress, TextField::create('Facebook', 'Facebook'), TextField::create('LinkedIn', 'LinkedIn'), TextField::create('Pinterest', 'Pinterest'), TextField::create('TwitterHandle', 'Twitter Handle')));
     /** -----------------------------------------
      * Subscription
      * ----------------------------------------*/
     $mailChimpAPI = TextField::create('MailChimpAPI', 'API Key');
     $mailChimpSuccessMessage = TextareaField::create('MailChimpSuccessMessage', 'Success Message (optional)');
     $mailChimpAPI->setRightTitle('<a href="https://us9.admin.mailchimp.com/account/api-key-popup/" target="_blank"><i>How do I get my MailChimp API Key?</i></a>');
     $mailChimpSuccessMessage->setRows(2)->setRightTitle('Message displayed when a user has successfully subscribed to a list.');
     $fields->findOrMakeTab('Root.Settings.Subscription', 'Subscription');
     $fields->addFieldsToTab('Root.Settings.Subscription', array(HeaderField::create('', 'Newsletter Subscription'), LiteralField::create('', '<p>The API key, and list ID are necessary for the Newsletter Subscription form to function.</p>'), $mailChimpAPI, TextField::create('MailChimpListID', 'List ID'), $mailChimpSuccessMessage));
 }
 public function updateCMSFields(FieldList $fields)
 {
     /* -----------------------------------------
         * Color Picker
        ------------------------------------------*/
     Requirements::css('boilerplate/css/colorpicker.css');
     Requirements::javascript('boilerplate/javascript/colorpicker.min.js');
     Requirements::javascript('boilerplate/javascript/colorpicker.init.js');
     /* =========================================
        * Settings
        =========================================*/
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', new TabSet('Settings'));
     }
     /* -----------------------------------------
         * Images
        ------------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.Images', 'Images');
     $fields->addFieldsToTab('Root.Settings.Images', array($logo = new UploadField('LogoImage', _t('BoilerplateConfig.LogoImageLabel', 'Logo')), $favicon = new UploadField('Favicon', _t('BoilerplateConfig.FaviconLabel', 'Favicon'))));
     $logo->setRightTitle('Choose an Image For Your Logo');
     $favicon->setRightTitle('Choose an Image For Your Favicon (16x16)');
     /* -----------------------------------------
         * Company Details
        ------------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.Details', 'Details');
     $fields->addFieldsToTab('Root.Settings.Details', array(new Textfield('Phone', _t('BoilerplateConfig.PhoneLabel', 'Phone Number')), new Textfield('Email', _t('BoilerplateConfig.EmailLabel', 'Public Email Address')), $PhysicalAddress = new HtmlEditorField('PhysicalAddress', _t('BoilerplateConfig.PhysicalAddressLabel', 'Physical Address'))));
     $PhysicalAddress->setRows(3);
     /* -----------------------------------------
         * Tracking Code
        ------------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.TrackingCode', 'Tracking Code');
     $fields->addFieldsToTab('Root.Settings.TrackingCode', array($trackingCode = new TextareaField('TrackingCode', _t('BoilerplateConfig.TrackingCodeLabel', 'Tracking Code'))));
     $trackingCode->setRows(20);
 }
 /**
  * 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 getEditForm($id = null, $fields = null)
 {
     // TODO Duplicate record fetching (see parent implementation)
     if (!$id) {
         $id = $this->currentPageID();
     }
     $form = parent::getEditForm($id);
     // TODO Duplicate record fetching (see parent implementation)
     $record = $this->getRecord($id);
     if ($record && !$record->canView()) {
         return Security::permissionFailure($this);
     }
     $memberList = GridField::create('Members', false, Member::get(), $memberListConfig = GridFieldConfig_RecordEditor::create()->addComponent(new GridFieldButtonRow('after'))->addComponent(new GridFieldExportButton('buttons-after-left')))->addExtraClass("members_grid");
     if ($record && method_exists($record, 'getValidator')) {
         $validator = $record->getValidator();
     } else {
         $validator = Injector::inst()->get('Member')->getValidator();
     }
     $memberListConfig->getComponentByType('GridFieldDetailForm')->setValidator($validator);
     $groupList = GridField::create('Groups', false, Group::get(), GridFieldConfig_RecordEditor::create());
     $columns = $groupList->getConfig()->getComponentByType('GridFieldDataColumns');
     $columns->setDisplayFields(array('Breadcrumbs' => singleton('Group')->fieldLabel('Title')));
     $columns->setFieldFormatting(array('Breadcrumbs' => function ($val, $item) {
         return Convert::raw2xml($item->getBreadcrumbs(' > '));
     }));
     $fields = new FieldList($root = new TabSet('Root', $usersTab = new Tab('Users', _t('SecurityAdmin.Users', 'Users'), $memberList, new LiteralField('MembersCautionText', sprintf('<p class="caution-remove"><strong>%s</strong></p>', _t('SecurityAdmin.MemberListCaution', 'Caution: Removing members from this list will remove them from all groups and the' . ' database')))), $groupsTab = new Tab('Groups', singleton('Group')->i18n_plural_name(), $groupList)), new HiddenField('ID', false, 0));
     // Add import capabilities. Limit to admin since the import logic can affect assigned permissions
     if (Permission::check('ADMIN')) {
         $fields->addFieldsToTab('Root.Users', array(new HeaderField(_t('SecurityAdmin.IMPORTUSERS', 'Import users'), 3), new LiteralField('MemberImportFormIframe', sprintf('<iframe src="%s" id="MemberImportFormIframe" width="100%%" height="250px" frameBorder="0">' . '</iframe>', $this->Link('memberimport')))));
         $fields->addFieldsToTab('Root.Groups', array(new HeaderField(_t('SecurityAdmin.IMPORTGROUPS', 'Import groups'), 3), new LiteralField('GroupImportFormIframe', sprintf('<iframe src="%s" id="GroupImportFormIframe" width="100%%" height="250px" frameBorder="0">' . '</iframe>', $this->Link('groupimport')))));
     }
     // Tab nav in CMS is rendered through separate template
     $root->setTemplate('CMSTabSet');
     // Add roles editing interface
     if (Permission::check('APPLY_ROLES')) {
         $rolesField = GridField::create('Roles', false, PermissionRole::get(), GridFieldConfig_RecordEditor::create());
         $rolesTab = $fields->findOrMakeTab('Root.Roles', _t('SecurityAdmin.TABROLES', 'Roles'));
         $rolesTab->push($rolesField);
     }
     $actionParam = $this->getRequest()->param('Action');
     if ($actionParam == 'groups') {
         $groupsTab->addExtraClass('ui-state-active');
     } elseif ($actionParam == 'users') {
         $usersTab->addExtraClass('ui-state-active');
     } elseif ($actionParam == 'roles') {
         $rolesTab->addExtraClass('ui-state-active');
     }
     $actions = new FieldList();
     $form = Form::create($this, 'EditForm', $fields, $actions)->setHTMLID('Form_EditForm');
     $form->addExtraClass('cms-edit-form');
     $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
     // Tab nav in CMS is rendered through separate template
     if ($form->Fields()->hasTabset()) {
         $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet');
     }
     $form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses());
     $form->setAttribute('data-pjax-fragment', 'CurrentForm');
     $this->extend('updateEditForm', $form);
     return $form;
 }
 public function getCMSFields()
 {
     $fields = new FieldList(new TabSet('Root'));
     $fields->addFieldToTab('Root.Main', new TextField('Title', $this->fieldLabel('Title')));
     $filter = '';
     $reqParent = isset($_REQUEST['ParentID']) ? (int) $_REQUEST['ParentID'] : 0;
     $attachTo = $this->ActionID ? $this->ActionID : $reqParent;
     if ($attachTo) {
         $action = DataObject::get_by_id('WorkflowAction', $attachTo);
         if ($action && $action->ID) {
             $filter = '"WorkflowDefID" = ' . (int) $action->WorkflowDefID;
         }
     }
     $actions = DataObject::get('WorkflowAction', $filter);
     $options = array();
     if ($actions) {
         $options = $actions->map();
     }
     $defaultAction = $action ? $action->ID : "";
     $typeOptions = array('Active' => _t('WorkflowTransition.Active', 'Active'), 'Passive' => _t('WorkflowTransition.Passive', 'Passive'));
     $fields->addFieldToTab('Root.Main', new DropdownField('ActionID', $this->fieldLabel('ActionID'), $options, $defaultAction));
     $fields->addFieldToTab('Root.Main', $nextActionDropdownField = new DropdownField('NextActionID', $this->fieldLabel('NextActionID'), $options));
     $nextActionDropdownField->setEmptyString(_t('WorkflowTransition.SELECTONE', '(Select one)'));
     $fields->addFieldToTab('Root.Main', new DropdownField('Type', _t('WorkflowTransition.TYPE', 'Type'), $typeOptions));
     $members = Member::get();
     $fields->findOrMakeTab('Root.RestrictToUsers', _t('WorkflowTransition.TabTitle', 'Restrict to users'));
     $fields->addFieldToTab('Root.RestrictToUsers', new CheckboxSetField('Users', _t('WorkflowDefinition.USERS', 'Restrict to Users'), $members));
     $fields->addFieldToTab('Root.RestrictToUsers', new TreeMultiselectField('Groups', _t('WorkflowDefinition.GROUPS', 'Restrict to Groups'), 'Group'));
     $this->extend('updateCMSFields', $fields);
     return $fields;
 }
 public function updateFields(FieldList $fields)
 {
     if (!$this->owner->ID) {
         return $fields;
     }
     $tab = $fields->fieldByName('Root') ? $fields->findOrMakeTab('Root.Workflow') : $fields;
     if (Permission::check('APPLY_WORKFLOW')) {
         $definition = new DropdownField('WorkflowDefinitionID', _t('WorkflowApplicable.DEFINITION', 'Applied Workflow'));
         $definitions = $this->workflowService->getDefinitions()->map()->toArray();
         $definition->setSource($definitions);
         $definition->setEmptyString(_t('WorkflowApplicable.INHERIT', 'Inherit from parent'));
         $tab->push($definition);
         // Allow an optional selection of additional workflow definitions.
         if ($this->owner->WorkflowDefinitionID) {
             $fields->removeByName('AdditionalWorkflowDefinitions');
             unset($definitions[$this->owner->WorkflowDefinitionID]);
             $tab->push($additional = ListboxField::create('AdditionalWorkflowDefinitions', _t('WorkflowApplicable.ADDITIONAL_WORKFLOW_DEFINITIONS', 'Additional Workflows')));
             $additional->setSource($definitions);
             $additional->setMultiple(true);
         }
     }
     // Display the effective workflow definition.
     if ($effective = $this->getWorkflowInstance()) {
         $title = $effective->Definition()->Title;
         $tab->push(ReadonlyField::create('EffectiveWorkflow', _t('WorkflowApplicable.EFFECTIVE_WORKFLOW', 'Effective Workflow'), $title));
     }
     if ($this->owner->ID) {
         $config = new GridFieldConfig_Base();
         $config->addComponent(new GridFieldEditButton());
         $config->addComponent(new GridFieldDetailForm());
         $insts = $this->owner->WorkflowInstances();
         $log = new GridField('WorkflowLog', _t('WorkflowApplicable.WORKFLOWLOG', 'Workflow Log'), $insts, $config);
         $tab->push($log);
     }
 }
 public function updateCMSFields(FieldList $fields)
 {
     /** @var Page|MapaelCountryHolderPageExtension $page */
     $page = $this->getOwner();
     $tab = $fields->findOrMakeTab('Root.CountryPagesTab', $page->fieldLabel('CountryPages'));
     $tab->push(GridField::create('CountryPages', $page->fieldLabel('CountryPages'), $page->CountryPages(), GridFieldConfig_RelationEditor::create()));
 }
 /**
  * Create tab to edit fields values
  *
  * @param ManyManyList $list
  * @param FieldList    $fields
  */
 public function buildPageFieldsTab(ManyManyList $list, FieldList $fields)
 {
     $fields->findOrMakeTab('Root.Fields', _t('ConfigurablePage.FIELDS', 'Fields'));
     foreach ($list as $editableField) {
         // Get the raw form field from the editable version
         $field = $editableField->getFormField();
         if (!$field) {
             continue;
         }
         // Set the error / formatting messages
         $field->setCustomValidationMessage($editableField->getErrorMessage());
         // Set the right title on this field
         $right = $editableField->getSetting('RightTitle');
         if ($right) {
             $field->setRightTitle($right);
             $field->addExtraClass('help');
         }
         // Set the required field
         if ($editableField->Required) {
             $this->requiredFields[] = $editableField->Name;
         }
         // Set field extra class
         if ($editableField->getSetting('ExtraClass')) {
             $field->addExtraClass(Convert::raw2att($editableField->getSetting('ExtraClass')));
         }
         // Set the value
         if (!$field instanceof DatalessField) {
             $field->value = Convert::raw2att($editableField->Value);
             $this->setField($editableField->Name, $editableField->Value);
         }
         // Add field to tab
         $fields->addFieldToTab('Root.Fields', $field);
     }
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     Requirements::add_i18n_javascript(ADVANCED_WORKFLOW_DIR . '/javascript/lang');
     // Add timepicker functionality
     // @see https://github.com/trentrichardson/jQuery-Timepicker-Addon
     Requirements::css(ADVANCED_WORKFLOW_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-timepicker-addon.css');
     Requirements::css(ADVANCED_WORKFLOW_DIR . '/css/WorkflowCMS.css');
     Requirements::javascript(ADVANCED_WORKFLOW_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-sliderAccess.js');
     Requirements::javascript(ADVANCED_WORKFLOW_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-timepicker-addon.js');
     Requirements::javascript(ADVANCED_WORKFLOW_DIR . '/javascript/WorkflowField.js');
     $this->setIsWorkflowInEffect();
     $fields->findOrMakeTab('Root.PublishingSchedule', _t('WorkflowEmbargoExpiryExtension.TabTitle', 'Publishing Schedule'));
     if ($this->getIsWorkflowInEffect()) {
         $fields->addFieldsToTab('Root.PublishingSchedule', array(HeaderField::create('PublishDateHeader', _t('WorkflowEmbargoExpiryExtension.REQUESTED_PUBLISH_DATE_H3', 'Expiry and Embargo'), 3), LiteralField::create('PublishDateIntro', $this->getIntroMessage('PublishDateIntro')), $dt = Datetimefield::create('DesiredPublishDate', _t('WorkflowEmbargoExpiryExtension.REQUESTED_PUBLISH_DATE', 'Requested publish date')), $ut = Datetimefield::create('DesiredUnPublishDate', _t('WorkflowEmbargoExpiryExtension.REQUESTED_UNPUBLISH_DATE', 'Requested un-publish date')), Datetimefield::create('PublishOnDate', _t('WorkflowEmbargoExpiryExtension.PUBLISH_ON', 'Scheduled publish date'))->setDisabled(true), Datetimefield::create('UnPublishOnDate', _t('WorkflowEmbargoExpiryExtension.UNPUBLISH_ON', 'Scheduled un-publish date'))->setDisabled(true)));
     } else {
         $fields->addFieldsToTab('Root.PublishingSchedule', array(HeaderField::create('PublishDateHeader', _t('WorkflowEmbargoExpiryExtension.REQUESTED_PUBLISH_DATE_H3', 'Expiry and Embargo'), 3), LiteralField::create('PublishDateIntro', $this->getIntroMessage('PublishDateIntro')), $dt = Datetimefield::create('PublishOnDate', _t('WorkflowEmbargoExpiryExtension.PUBLISH_ON', 'Scheduled publish date')), $ut = Datetimefield::create('UnPublishOnDate', _t('WorkflowEmbargoExpiryExtension.UNPUBLISH_ON', 'Scheduled un-publish date'))));
     }
     $dt->getDateField()->setConfig('showcalendar', true);
     $ut->getDateField()->setConfig('showcalendar', true);
     $dt->getTimeField()->setConfig('timeformat', 'HH:mm:ss');
     $ut->getTimeField()->setConfig('timeformat', 'HH:mm:ss');
     // Enable a jQuery-UI timepicker widget
     if (self::$showTimePicker) {
         $dt->getTimeField()->addExtraClass('hasTimePicker');
         $ut->getTimeField()->addExtraClass('hasTimePicker');
     }
 }
 public function updateCMSFields(FieldList $fields)
 {
     // Use SortableUploadField instead of UploadField!
     $imagesTab = $fields->findOrMakeTab('Root.Images');
     $owner = $this->owner;
     if ($owner::config()->allow_images) {
         $limit = $owner::config()->images_count;
         $uploadClass = class_exists("SortableUploadField") && $this->owner->Sorter == "SortOrder" ? "SortableUploadField" : "UploadField";
         $imageField = $uploadClass::create('Images');
         $imageField->setConfig('allowedMaxFileNumber', $limit);
         $imageField->setFolderName('Uploads/' . $this->owner->ClassName . '/' . $this->owner->ID);
         if ($limit == 1) {
             $imagesTab->setTitle(_t("Object.IMAGETAB", "Images"));
             $imageField->setTitle(_t("Object.IMAGEUPLOADLABEL", "Image"));
         } else {
             $imagesTab->setTitle(_t("Object.IMAGESTAB", "Images"));
             $imageField->setTitle(_t("Object.IMAGESUPLOADLABEL", "Images"));
             $imageField->setDescription(sprintf(_t("Object.IMAGESUPLOADLIMIT", "Images count limit: %s"), $limit));
             if ($this->owner->Sorter == "SortOrder") {
                 $message = class_exists("SortableUploadField") ? _t("Object.IMAGESUPLOADHEADING", "<span style='color: green'>Sort images by draging thumbnail</span>") : _t("Object.IMAGESUPLOADHEADINGWRONG", "<span style='color: red'>Sorting images by draging thumbnails (SortOrder) not allowed. Missing module SortabeUploadField.</span>");
             } else {
                 $message = _t("Object.IMAGESSORTERNOTICE", "Correct image sorting is visible on frontend only (if Sort by = Title, ID)");
             }
             $dropdownSorter = DropdownField::create('Sorter', _t("Object.IMAGESSORTER", "Sort images by: "))->setSource($this->owner->dbObject('Sorter')->enumValues());
             $fields->addFieldToTab('Root.Images', $dropdownSorter);
             $fields->addFieldToTab('Root.Images', HeaderField::create('ImagesNotice', $message)->setHeadingLevel(4));
         }
         $fields->addFieldToTab('Root.Images', $imageField);
     } else {
         $fields->removeByName($imagesTab->Name);
     }
 }
 /**
  * Returns a FieldList with which to create the editing form. {@link SiteTree::getCMSFields()}
  */
 public function updateCMSFields(FieldList $fields)
 {
     $placeholderImageUploadField = new UploadField('PlaceholderImage', _t('PlaceholderImageSiteConfigExtension.PLACEHOLDERIMAGE', 'Placeholder Image'));
     $placeholderImageUploadField->allowedExtensions = array('jpg', 'gif', 'png');
     $fields->findOrMakeTab('Root.Images', _t('PlaceholderImageSiteConfigExtension.IMAGES', 'Images'));
     $fields->addFieldToTab('Root.Images', $placeholderImageUploadField);
 }
 /**
  * @param FieldList
  */
 public function updateCMSFields(FieldList $fields)
 {
     if (!method_exists($this->owner, "getSettingsFields")) {
         $tabset = $fields->findOrMakeTab('Root.Settings');
         $tabset->push(new HeaderField(_t('GoogleShoppingFeed.GoogleShoppingFeed', 'Google Shopping Feed')));
         $tabset->push(new CheckboxField("RemoveFromShoppingFeed"));
     }
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     /** -----------------------------------------
      * Settings
      * ----------------------------------------*/
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     /** -----------------------------------------
      * Images
      * ----------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.Images', 'Images');
     /** @var UploadField $favicon */
     $fields->addFieldsToTab('Root.Settings.Images', array(HeaderField::create('ImagesTabHeading', _t('BoilerplateSiteConfigExtension.ImagesTabHeading', 'Images')), $logo = UploadField::create('LogoImage', _t('BoilerplateSiteConfigExtension.Logo', 'Logo')), $mobileLogo = UploadField::create('MobileLogoImage', _t('BoilerplateSiteConfigExtension.MobileLogoImage', 'Mobile Menu Logo (optional)')), $favicon = UploadField::create('Favicon', _t('BoilerplateSiteConfigExtension.Favicon', 'Favicon'))));
     $favicon->setRightTitle(_t('BoilerplateSiteConfigExtension.FaviconRightTitle', 'Choose an Image For Your Favicon (16px by 16px)'));
     /** -----------------------------------------
      * Company Details
      * ----------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.Details', 'Details');
     /**
      * @var TextareaField $address
      * @var TextareaField $postalAddress
      * @var TextareaField $directions
      */
     $fields->addFieldsToTab('Root.Settings.Details', array(HeaderField::create('DetailsTabHeading', _t('BoilerplateSiteConfigExtension.DetailsTabHeading', 'General')), Textfield::create('Phone', _t('BoilerplateSiteConfigExtension.Phone', 'Phone Number')), Textfield::create('Email', _t('BoilerplateSiteConfigExtension.Email', 'Public Email Address')), $address = TextareaField::create('Address', _t('BoilerplateSiteConfigExtension.Address', 'Address')), $postalAddress = TextareaField::create('PostalAddress', _t('BoilerplateSiteConfigExtension.PostalAddress', 'Postal Address')), $directions = TextareaField::create('Directions', _t('BoilerplateSiteConfigExtension.Directions', 'Google Map Directions')), HeaderField::create('DetailsTabSocialMediaHeading', _t('BoilerplateSiteConfigExtension.DetailsTabSocialMediaHeading', 'Social Media')), TextField::create('Facebook', _t('BoilerplateSiteConfigExtension.Facebook', 'Facebook')), TextField::create('Twitter', _t('BoilerplateSiteConfigExtension.Twitter', 'Twitter')), TextField::create('Youtube', _t('BoilerplateSiteConfigExtension.Youtube', 'Youtube')), TextField::create('GooglePlus', _t('BoilerplateSiteConfigExtension.GooglePlus', 'Google+'))));
     $address->setRows(8);
     $postalAddress->setRows(8);
     $directions->setRows(3);
     $directions->setRightTitle(_t('DirectionsRightTitle', 'The URL of the Address on <a href="https://www.google.com/maps" title="Google Maps" rel="nofollow" target="_blank">Google Maps</a>. This is useful for users on mobile granting the ability to open directions in their native applications.'));
     /** -----------------------------------------
      * Analytics
      * ----------------------------------------*/
     if (Permission::check('ADMIN')) {
         $fields->findOrMakeTab('Root.Settings.Analytics', 'Analytics');
         /**
          * @var TextareaField $googleSiteVerification
          * @var TextareaField $trackingCode
          * @var TextareaField $tagManagerFieldGroup
          */
         $fields->addFieldsToTab('Root.Settings.Analytics', array(HeaderField::create('', 'Analytics'), $googleSiteVerification = TextareaField::create('GoogleSiteVerification', _t('BoilerplateSiteConfigExtension.GoogleSiteVerification', 'Google Site Verification Code')), $trackingCode = TextareaField::create('TrackingCode', _t('BoilerplateSiteConfigExtension.TrackingCode', 'Tracking Code')), $tagManagerFieldGroup = FieldGroup::create(CheckboxField::create('TagManager', _t('BoilerplateSiteConfigExtension.TagManager', 'Does the tracking code above contain Google Tag Manager?')))));
         $googleSiteVerification->setRows(2);
         $trackingCode->setRows(20);
         $tagManagerFieldGroup->setTitle(_t('BoilerplateSiteConfigExtension.TagManagerRightTitle', 'Tag Manager'));
     }
 }
 /**
  * @param FieldSet $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     $fields->findOrMakeTab('Root.Schedule', _t('ScheduledExecution.ScheduleTabTitle', 'Schedule'));
     $fields->addFieldsToTab('Root.Schedule', array($dt = new Datetimefield('FirstExecution', _t('ScheduledExecution.FIRST_EXECUTION', 'First Execution')), FieldGroup::create(new NumericField('ExecuteInterval', ''), new DropdownField('ExecuteEvery', '', array('' => '', 'Minute' => _t('ScheduledExecution.ExecuteEveryMinute', 'Minute'), 'Hour' => _t('ScheduledExecution.ExecuteEveryHour', 'Hour'), 'Day' => _t('ScheduledExecution.ExecuteEveryDay', 'Day'), 'Week' => _t('ScheduledExecution.ExecuteEveryWeek', 'Week'), 'Fortnight' => _t('ScheduledExecution.ExecuteEveryFortnight', 'Fortnight'), 'Month' => _t('ScheduledExecution.ExecuteEveryMonth', 'Month'), 'Year' => _t('ScheduledExecution.ExecuteEveryYear', 'Year'))))->setTitle(_t('ScheduledExecution.EXECUTE_EVERY', 'Execute every')), new TextField('ExecuteFree', _t('ScheduledExecution.EXECUTE_FREE', 'Scheduled (in strtotime format from first execution)'))));
     if ($this->owner->ScheduledJobID) {
         $jobTime = $this->owner->ScheduledJob()->StartAfter;
         $fields->addFieldsToTab('Root.Schedule', array(new ReadonlyField('NextRunDate', _t('ScheduledExecution.NEXT_RUN_DATE', 'Next run date'), $jobTime)));
     }
     $dt->getDateField()->setConfig('showcalendar', true);
     $dt->getTimeField()->setConfig('showdropdown', true);
 }
Example #15
0
 public function updateCMSFields(FieldList $fields)
 {
     /* -----------------------------------------
         * Comments
        ------------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.Comments', 'Comments');
     $fields->addFieldsToTab('Root.Settings.Comments', array($disqusForumShortName = new TextField('DisqusForumShortName', 'Disqus forum shortname')));
     if (!SiteConfig::current_site_config()->DisqusForumShortName) {
         $disqusForumShortName->setRightTitle('Enables Disqus commenting on blog items. Sign up for your Disqus account at: <a href="http://disqus.com/" target="_blank">http://disqus.com/</a>');
     }
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     /** -----------------------------------------
      * Details
      * ----------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.OpenGraph');
     $fields->addFieldsToTab('Root.Settings.OpenGraph', array(HeaderField::create('', 'OOpen Graph'), UploadField::create('DefaultOpenGraphImage', 'Default Facebook Share Image')));
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     /** -----------------------------------------
      * Details
      * ----------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.SEO');
     $fields->addFieldsToTab('Root.Settings.SEO', array(HeaderField::create('', 'SEO Settings'), TextField::create('DefaultSEOMetaTitle', 'Default Meta Title Addition')->setRightTitle('This is additional copy that will be automatically added to all of your pages\' meta titles.'), OptionsetField::create('DefaultSEOMetaTitlePosition', 'Default Meta Title Position', array('before' => 'Prepend to the Meta Title', 'after' => 'Append to the Meta Title'))));
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     /** -----------------------------------------
      * Details
      * ----------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.TwitterCards');
     $fields->addFieldsToTab('Root.Settings.TwitterCards', array(HeaderField::create('', 'Twitter Cards'), Textfield::create('DefaultTwitterHandle', 'Default Twitter Handle'), UploadField::create('DefaultTwitterImage', 'Default Twitter Card Image')));
 }
Example #19
0
 /**
  * Caution: Only call on instances, not through a singleton.
  *
  * @return FieldSet
  */
 public function getCMSFields()
 {
     Requirements::javascript(SAPPHIRE_DIR . '/javascript/PermissionCheckboxSetField.js');
     $fields = new FieldList(new TabSet("Root", new Tab('Members', _t('SecurityAdmin.MEMBERS', 'Members'), new TextField("Title", $this->fieldLabel('Title')), $memberList = new MemberTableField(Controller::has_curr() ? Controller::curr() : new Controller(), "Members", $this, null, false)), $permissionsTab = new Tab('Permissions', _t('SecurityAdmin.PERMISSIONS', 'Permissions'), new PermissionCheckboxSetField('Permissions', false, 'Permission', 'GroupID', $this)), new Tab('IPAddresses', _t('Security.IPADDRESSES', 'IP Addresses'), new LiteralField("", _t('SecurityAdmin.IPADDRESSESHELP', "<p>You can restrict this group to a particular \n\t\t\t\t\t\tIP address range (one range per line). <br />Ranges can be in any of the following forms: <br />\n\t\t\t\t\t\t203.96.152.12<br />\n\t\t\t\t\t\t203.96.152/24<br />\n\t\t\t\t\t\t203.96/16<br />\n\t\t\t\t\t\t203/8<br /><br />If you enter one or more IP address ranges in this box, then members will only get\n\t\t\t\t\t\tthe rights of being in this group if they log on from one of the valid IP addresses.  It won't prevent\n\t\t\t\t\t\tpeople from logging in.  This is because the same user might have to log in to access parts of the\n\t\t\t\t\t\tsystem without IP address restrictions.")), new TextareaField("IPRestrictions", "IP Ranges", 10))));
     // Only add a dropdown for HTML editor configurations if more than one is available.
     // Otherwise Member->getHtmlEditorConfigForCMS() will default to the 'cms' configuration.
     $editorConfigMap = HtmlEditorConfig::get_available_configs_map();
     if (count($editorConfigMap) > 1) {
         $fields->addFieldToTab('Root.Permissions', new DropdownField('HtmlEditorConfig', 'HTML Editor Configuration', $editorConfigMap), 'Permissions');
     }
     if (!Permission::check('EDIT_PERMISSIONS')) {
         $fields->removeFieldFromTab('Root', 'Permissions');
         $fields->removeFieldFromTab('Root', 'IP Addresses');
     }
     // Only show the "Roles" tab if permissions are granted to edit them,
     // and at least one role exists
     if (Permission::check('APPLY_ROLES') && DataObject::get('PermissionRole')) {
         $fields->findOrMakeTab('Root.Roles', _t('SecurityAdmin.ROLES', 'Roles'));
         $fields->addFieldToTab('Root.Roles', new LiteralField("", "<p>" . _t('SecurityAdmin.ROLESDESCRIPTION', "This section allows you to add roles to this group. Roles are logical groupings of permissions, which can be editied in the Roles tab") . "</p>"));
         // Add roles (and disable all checkboxes for inherited roles)
         $allRoles = Permission::check('ADMIN') ? DataObject::get('PermissionRole') : DataObject::get('PermissionRole', 'OnlyAdminCanApply = 0');
         $groupRoles = $this->Roles();
         $inheritedRoles = new ArrayList();
         $ancestors = $this->getAncestors();
         foreach ($ancestors as $ancestor) {
             $ancestorRoles = $ancestor->Roles();
             if ($ancestorRoles) {
                 $inheritedRoles->merge($ancestorRoles);
             }
         }
         $fields->findOrMakeTab('Root.Roles', 'Root.' . _t('SecurityAdmin.ROLES', 'Roles'));
         $fields->addFieldToTab('Root.Roles', $rolesField = new CheckboxSetField('Roles', 'Roles', $allRoles));
         $rolesField->setDefaultItems($inheritedRoles->column('ID'));
         $rolesField->setDisabledItems($inheritedRoles->column('ID'));
     }
     $memberList->setPermissions(array('edit', 'delete', 'export', 'add', 'inlineadd'));
     $memberList->setPopupCaption(_t('SecurityAdmin.VIEWUSER', 'View User'));
     $fields->push($idField = new HiddenField("ID"));
     $this->extend('updateCMSFields', $fields);
     return $fields;
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     /** -----------------------------------------
      * Comments
      * ----------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.Comments', 'Comments');
     /** @var TextField $disqusForumShortName */
     $fields->addFieldsToTab('Root.Settings.Comments', array(HeaderField::create('CommentsTabHeading', _t('BlogConfig.Comments', 'Comments')), LiteralField::create('CommentsTabDescription', _t('BlogConfig.CommentsTabDescription', '<p>If the Disqus Forum Shortname is set Blog Pages will have a comment section appended to the bottom of the article.</p>')), $disqusForumShortName = TextField::create('DisqusForumShortName', _t('BlogConfig.DisqusForumShortName', 'Disqus Forum Shortname'))));
     if (!SiteConfig::current_site_config()->DisqusForumShortName) {
         $disqusForumShortName->setRightTitle(_t('BlogConfig.DisqusForumShortNameRightTitle', 'Enables Disqus commenting on blog items. Sign up for your Disqus account at: <a href="http://disqus.com/" target="_blank">http://disqus.com/</a>'));
     }
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     $fields->findOrMakeTab('Root.Settings.Banner', 'Banner');
     /**
      * @var UploadField $image
      * @var NumericField $defaultSliderHeight
      */
     $fields->addFieldsToTab('Root.Settings.Banner', array(HeaderField::create('', 'Banner'), LiteralField::create('', '<p>Image to be displayed on all pages as a default banner. Can be overridden by a page\'s banner.</p>'), $image = UploadField::create('SliderImage', 'Image'), $defaultSliderHeight = NumericField::create('DefaultSliderHeight', 'Default Height')));
     $image->setFolderName('Uploads/slider');
     $defaultSliderHeight->setRightTitle('Height that will be set across the entire site, this can be overridden in individual pages');
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     /** -----------------------------------------
      * Subscription
      * -------------------------------------------*/
     $fields->findOrMakeTab('Root.Settings.Subscription', 'Subscription');
     /**
      * @var TextField $mailChimpAPI
      * @var TextareaField $mailChimpSuccessMessage
      */
     $fields->addFieldsToTab('Root.Settings.Subscription', array(HeaderField::create('', 'Newsletter Subscription'), LiteralField::create('', '<p>The API key, and list ID are necessary for the Newsletter Subscription form to function.</p>'), $mailChimpAPI = TextField::create('MailChimpAPI', 'API Key'), TextField::create('MailChimpListID', 'List ID'), $mailChimpSuccessMessage = TextareaField::create('MailChimpSuccessMessage', 'Success Message (optional)')));
     $mailChimpAPI->setRightTitle('<a href="https://us9.admin.mailchimp.com/account/api-key-popup/" target="_blank"><i>How do I get my MailChimp API Key?</i></a>');
     $mailChimpSuccessMessage->setRows(2);
     $mailChimpSuccessMessage->setRightTitle('Message displayed when a user has successfully subscribed to a list.');
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     /** =========================================
          * @var UploadField $twitterImage
         ===========================================*/
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     /** -----------------------------------------
      * Details
      * ----------------------------------------*/
     $twitterImage = UploadField::create('DefaultTwitterImage', 'Default Twitter Card Image');
     $twitterImage->setDescription('Ideal size 560px * 750px');
     $fields->findOrMakeTab('Root.Settings.TwitterCards');
     $fields->addFieldsToTab('Root.Settings.TwitterCards', array(HeaderField::create('', 'Twitter Cards'), Textfield::create('DefaultTwitterHandle', 'Default Twitter Handle'), $twitterImage));
 }
 /**
  * Change the member dialog in the CMS
  *
  * This method updates the form in the member dialog to make it possible
  * to edit the new database fields.
  */
 function updateCMSFields(FieldList $fields)
 {
     // let make sure, this runs only once (because member and dataobject both extend updateCMSFields
     // 	making it run twice!)
     $cp = $fields->fieldByName('Root');
     if ($cp && $cp->fieldByName('ExternalAuthentication')) {
         return;
     }
     $sources = ExternalAuthenticator::getIDandNames();
     $sources = array_merge(array("" => "-"), $sources);
     $fields->findOrMakeTab('Root.ExternalAuthentication', _t('ExternalAuthenticator.Title'));
     $fields->addFieldToTab('Root.ExternalAuthentication', new HeaderField('External_Header', _t('ExternalAuthenticator.ModFormHead', 'ID for external authentication source')));
     $fields->addFieldToTab('Root.ExternalAuthentication', new LiteralField('ExternalDescription', _t('ExternalAuthenticator.EnterUser', 'Enter the user id and authentication source for this user')));
     $fields->addFieldToTab('Root.ExternalAuthentication', new DropdownField('External_SourceID', _t('ExternalAuthenticator.Sources'), $sources));
     $fields->addFieldToTab('Root.ExternalAuthentication', new TextField('External_Anchor', _t('ExternalAuthenticator.EnterNewId', 'ID to be used with this source')));
 }
 /**
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     /** -----------------------------------------
          * Settings
         -------------------------------------------*/
     if (!$fields->fieldByName('Root.Settings')) {
         $fields->addFieldToTab('Root', TabSet::create('Settings'));
     }
     /** -----------------------------------------
          * CMS
         -------------------------------------------*/
     if (Permission::check('ADMIN')) {
         $fields->findOrMakeTab('Root.Settings.CMS', 'CMS');
         $fields->addFieldsToTab('Root.Settings.CMS', array(HeaderField::create('', 'CMS Menu'), CheckboxField::create('ShowAssetAdmin'), CheckboxField::create('ShowBlogAdmin'), CheckboxField::create('ShowHelpLink'), CheckboxField::create('ShowMessagesAdmin'), CheckboxField::create('ShowPortfolioAdmin'), CheckboxField::create('ShowReportAdmin'), CheckboxField::create('ShowSecurityAdmin')));
     }
 }
 /**
  * @inheritdoc
  */
 public function updateCMSFields(FieldList $fields)
 {
     if (Config::inst()->get($this->class, 'use_only_on_onepage_slides') && !$this->owner->isOnePageSlide()) {
         return;
     }
     $image = UploadField::create('BackgroundImage', $this->owner->fieldLabel('BackgroundImage'))->setAllowedFileCategories('image')->setAllowedMaxFileNumber(1);
     if ($this->owner->hasMethod('getRootFolderName')) {
         $image->setFolderName($this->owner->getRootFolderName());
     }
     $colorFields = array('BackgroundColor' => 'background_color_palette', 'HeadingColor' => 'heading_color_palette', 'TextColor' => 'text_color_palette');
     $layout = $fields->findOrMakeTab('Root.Layout', _t('OnePageSlide.TABLAYOUT', 'Layout'));
     $layout->push($image);
     foreach ($colorFields as $fieldName => $palette) {
         $layout->push($this->generateColorPalette($fieldName, $palette));
     }
     $layout->push(TextField::create('AdditionalCSSClass', $this->owner->fieldLabel('AdditionalCSSClass')));
 }
 /**
  * Adds or removes GUI elements for the backend editing mask.
  *
  * @param FieldList $fields The original FieldList
  *
  * @return void
  * 
  * @author Sebastian Diel <*****@*****.**>,
  *         Sascha Koehler <*****@*****.**>
  * @since 03.03.2014
  */
 public function updateCMSFields(FieldList $fields)
 {
     $fields->addFieldToTab('Root.Members', new TextField('Code', _t('Group.CODE')));
     if ($this->owner->ID) {
         $gridFieldConfig = SilvercartGridFieldConfig_RelationEditor::create();
         $shippingMethodsTable = new GridField('SilvercartShippingMethods', $this->owner->fieldLabel('SilvercartShippingMethods'), $this->owner->SilvercartShippingMethods(), $gridFieldConfig);
         $fields->findOrMakeTab('Root.SilvercartShippingMethod', $this->owner->fieldLabel('SilvercartShippingMethods'));
         $fields->addFieldToTab("Root.SilvercartShippingMethod", $shippingMethodsTable);
     }
     $enumValues = $this->owner->dbObject('Pricetype')->enumValues();
     $i18nSource = array();
     foreach ($enumValues as $value => $label) {
         $i18nSource[$value] = _t('SilvercartCustomer.' . strtoupper($label), $label);
     }
     $pricetypeField = new DropdownField('Pricetype', $this->owner->fieldLabel('Pricetype'), $i18nSource, $this->owner->Pricetype);
     $fields->addFieldToTab("Root.Members", $pricetypeField, 'Members');
 }
Example #28
0
 public function getEditForm($id = null, $fields = null)
 {
     // TODO Duplicate record fetching (see parent implementation)
     if (!$id) {
         $id = $this->currentPageID();
     }
     $form = parent::getEditForm($id);
     // TODO Duplicate record fetching (see parent implementation)
     $record = $this->getRecord($id);
     if ($record && !$record->canView()) {
         return Security::permissionFailure($this);
     }
     $memberList = GridField::create('Members', false, Member::get(), $memberListConfig = GridFieldConfig_RecordEditor::create()->addComponent(new GridFieldExportButton()))->addExtraClass("members_grid");
     $memberListConfig->getComponentByType('GridFieldDetailForm')->setValidator(new Member_Validator());
     $groupList = GridField::create('Groups', false, Group::get(), GridFieldConfig_RecordEditor::create());
     $columns = $groupList->getConfig()->getComponentByType('GridFieldDataColumns');
     $columns->setDisplayFields(array('Breadcrumbs' => singleton('Group')->fieldLabel('Title')));
     $fields = new FieldList($root = new TabSet('Root', $usersTab = new Tab('Users', _t('SecurityAdmin.Users', 'Users'), $memberList, new LiteralField('MembersCautionText', sprintf('<p class="caution-remove"><strong>%s</strong></p>', _t('SecurityAdmin.MemberListCaution', 'Caution: Removing members from this list will remove them from all groups and the database'))), new HeaderField(_t('SecurityAdmin.IMPORTUSERS', 'Import users'), 3), new LiteralField('MemberImportFormIframe', sprintf('<iframe src="%s" id="MemberImportFormIframe" width="100%%" height="250px" border="0"></iframe>', $this->Link('memberimport')))), $groupsTab = new Tab('Groups', singleton('Group')->plural_name(), $groupList, new HeaderField(_t('SecurityAdmin.IMPORTGROUPS', 'Import groups'), 3), new LiteralField('GroupImportFormIframe', sprintf('<iframe src="%s" id="GroupImportFormIframe" width="100%%" height="250px" border="0"></iframe>', $this->Link('groupimport'))))), new HiddenField('ID', false, 0));
     $root->setTemplate('CMSTabSet');
     // Add roles editing interface
     if (Permission::check('APPLY_ROLES')) {
         $rolesField = GridField::create('Roles', false, PermissionRole::get(), GridFieldConfig_RecordEditor::create());
         $rolesTab = $fields->findOrMakeTab('Root.Roles', _t('SecurityAdmin.TABROLES', 'Roles'));
         $rolesTab->push($rolesField);
     }
     $actionParam = $this->request->param('Action');
     if ($actionParam == 'groups') {
         $groupsTab->addExtraClass('ui-state-selected');
     } elseif ($actionParam == 'users') {
         $usersTab->addExtraClass('ui-state-selected');
     } elseif ($actionParam == 'roles') {
         $rolesTab->addExtraClass('ui-state-selected');
     }
     $actions = new FieldList();
     $form = new Form($this, 'EditForm', $fields, $actions);
     $form->addExtraClass('cms-edit-form');
     $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
     if ($form->Fields()->hasTabset()) {
         $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet');
     }
     $form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses());
     $form->setAttribute('data-pjax-fragment', 'CurrentForm');
     $this->extend('updateEditForm', $form);
     return $form;
 }
 public function updateCMSFields(FieldList $fields)
 {
     // Present a set of checkboxes for filtering this item by locale
     $filterField = FieldGroup::create()->setTitle(_t('Fluent.LocaleFilter', 'Locale Filter'))->setDescription(_t('Fluent.LocaleFilterDescription', 'Check a locale to show this item on that locale'));
     foreach (Fluent::locales() as $locale) {
         $id = Fluent::db_field_for_locale("LocaleFilter", $locale);
         $fields->removeByName($id, true);
         // Remove existing (in case it was auto scaffolded)
         $title = i18n::get_locale_name($locale);
         $filterField->push(new CheckboxField($id, $title));
     }
     if ($fields->hasTabSet()) {
         $fields->findOrMakeTab('Root.Locales', _t('Fluent.TABLOCALES', 'Locales'));
         $fields->addFieldToTab('Root.Locales', $filterField);
     } else {
         $fields->add($filterField);
     }
 }
 public function updateCMSFields(FieldList $fields)
 {
     // vars
     $config = SiteConfig::current_site_config();
     $self = $this->owner;
     $tab = 'Root.SSSEO.TwitterCards';
     //// Type
     $fields->addFieldsToTab($tab, array(DropdownField::create('TwitterCardsType', 'twitter:card', $self->dbObject('TwitterCardsType')->enumValues())));
     // if NOT off
     if ($self->TwitterCardsType != 'off') {
         //
         $fields->addFieldsToTab($tab, array(ReadonlyField::create('ReadonlyTwitterCardsSite', 'twitter:site', $config->Title), TextField::create('TwitterCardsTitle', 'twitter:title')->setAttribute('placeholder', $self->Title), ReadonlyField::create('ReadonlyTwitterCardsURL', 'twitter:url', $self->AbsoluteLink()), TextareaField::create('TwitterCardsDescription', 'twitter:description')->setAttribute('placeholder', $self->GenerateDescription()), UploadField::create('TwitterCardsImage', 'twitter:image')->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif'))->setFolderName('SSSEO/TwitterCards/')->setDescription('file format: JPG, PNG, GIF<br />pixel dimensions: 1200 x 630')));
     } else {
         // add error class
         $tabset = $fields->findOrMakeTab($tab);
         $tabset->addExtraClass('error');
     }
 }