/** * Updates the CMS fields adding the fields defined in this extension * @param {FieldList} $fields Field List that new fields will be added to */ public function updateSettingsFields(FieldList $fields) { $kapostRefID = $this->owner->KapostRefID; if (!empty($kapostRefID)) { if (CMSPageSettingsController::has_extension('KapostPageSettingsControllerExtension')) { $messageContent = _t('KapostSiteTreeExtension.KAPOST_CONTENT_WARNING_RO', '_This Page\'s content is being populated by Kapost, some fields are not editable.'); } else { $messageContent = _t('KapostSiteTreeExtension.KAPOST_CONTENT_WARNING', '_This Page\'s content is being populated by Kapost.'); } //Edit in kapost link $kapostBase = KapostAdmin::config()->kapost_base_url; if (!empty($kapostBase)) { $messageContent .= ' <a href="' . Controller::join_links($kapostBase, 'posts', $kapostRefID) . '" target="_blank">' . _t('KapostSiteTreeExtension.KAPOST_CONTENT_EDIT_LABEL', '_Click here to edit in Kapost') . '</a>'; } $fields->insertBefore(new LiteralField('KapostContentWarning', '<div class="message warning">' . $messageContent . '</div>'), 'ClassName'); //Detect Incoming Changes if (Permission::check('CMS_ACCESS_KapostAdmin')) { $incoming = KapostObject::get()->filter('KapostRefID', Convert::raw2sql($kapostRefID)); if ($incoming->count() >= 1) { $link = Controller::join_links(AdminRootController::config()->url_base, KapostAdmin::config()->url_segment, 'KapostObject/EditForm/field/KapostObject/item', $incoming->first()->ID, 'edit'); $messageContent = _t('KapostSiteTreeExtension.KAPOST_INCOMING', '_There are incoming changes from Kapost waiting for this page.') . ' ' . '<a href="' . $link . '" class="cms-panel-link">' . _t('KapostSiteTreeExtension.KAPOST_INCOMING_VIEW', '_Click here to view the changes') . '</a>'; $fields->insertBefore(new LiteralField('KapostIncomingWarning', '<div class="message warning">' . $messageContent . '</div>'), 'ClassName'); } } } }
/** * 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) { Requirements::javascript('silverstripe-video-embed/assests/javascript/PhotoItemExtension.js'); $typeField = new DropdownField('Type', 'Type', singleton('PhotoItem')->dbObject('Type')->enumValues()); $fields->insertBefore($typeField, 'Photo'); $videoField = new DropdownField("VideoItemID", "Video", VideoEmbed::get()->map("ID", "Title")); $fields->insertBefore($videoField, 'Caption'); }
public function updateCMSFields(FieldList $fields) { /** @var FormField $idField */ $fields->removeByName('ShippableID'); // TODO make this more friendly for multiple extended classes $shippables = Product::get()->map()->toArray(); $fields->insertBefore(new Select2Field('ShippableID', 'Shippable', $shippables, $this->owner->ShippableID), 'Price'); $regions = Region_Shipping::get()->map()->toArray(); $fields->insertBefore(new Select2Field('RegionID', 'Region', $regions, $this->owner->RegionID), 'Price'); }
/** * Hook updateMemberProfileCMSFields to make sure the new fields only show on the Email proffile field. * @param FieldList $fields */ public function updateMemberProfileCMSFields(FieldList $fields) { // If this is the Email Profile Field if ($this->getOwner()->MemberField == 'Email') { // Add a header $fields->insertBefore(HeaderField::create('DomainValidationHeader', _t('DomainSpecificMemberProfileFieldExtension.DomainValidationHeader', 'Domain Validation'), 3), 'AllowedDomains'); // Add some helper text $fields->insertBefore(LiteralField::create('DomainValidationHelper', _t('DomainSpecificMemberProfileFieldExtension.DomainValidationHelper', 'Allow or disallow profile registration based on the domain of the user\'s email address. One domain can be specified per line. You can use the wildcards (e.g.: <em>*.example.com</em>) to catch subdomains.')), 'AllowedDomains'); } else { // If it's any other Member profile field remove the additional field. $fields->removeByName('AllowedDomains'); $fields->removeByName('DisallowedDomains'); $fields->removeByName('ShowDomainsOnError'); } }
public function updateCMSFields(FieldList $fields) { $fields->insertBefore(new Tab('MembershipDetails', 'Membership Details'), 'Main'); //move first and ;astname $fields->addFieldToTab('Root.MembershipDetails', $fields->dataFieldByName('FirstName')); $fields->addFieldToTab('Root.MembershipDetails', $fields->dataFieldByName('Surname')); $fields->addFieldToTab('Root.MembershipDetails', $fields->dataFieldByName('Email')); $fields->addFieldToTab('Root.MembershipDetails', $region = DropdownField::create('RegionID', 'Region', Region::get()->map('ID', 'Title'))); $region->setEmptyString(' '); $fields->addFieldToTab('Root.MembershipDetails', DropdownField::create('MembershipStatus', 'Membership Status', $this->owner->dbObject('MembershipStatus')->enumValues())); $fields->addFieldToTab('Root.MembershipDetails', $expiry = DateField::create('ExpiryDate')); $fields->addFieldToTab('Root.MembershipDetails', DropdownField::create('Discount', 'Discount', $this->owner->dbObject('Discount')->enumValues())); $fields->addFieldToTab('Root.MembershipDetails', $discountExpiry = DateField::create('DiscountExpiryDate')); $fields->addFieldToTab('Root.MembershipDetails', $joined = DateField::create('JoinedDate')); $fields->addFieldToTab('Root.MembershipDetails', TextareaField::create('NotesForMember')); if ($this->owner->MembershipStatus !== "Not applied") { $fields->addFieldToTab('Root.MembershipDetails', TextField::create('MemberNumber')); } $fields->addFieldToTab('Root.MembershipDetails', TextField::create('HomePhone')); $fields->addFieldToTab('Root.MembershipDetails', TextField::create('WorkPhone')); $fields->addFieldToTab('Root.MembershipDetails', TextField::create('MobilePhone')); $fields->addFieldToTab('Root.MembershipDetails', TextareaField::create('Address')); $fields->addFieldToTab('Root.MembershipDetails', TextField::create('Occupation')); $fields->addFieldToTab('Root.MembershipDetails', TextField::create('BirthDate')); $expiry->setConfig('showcalendar', true); $expiry->setConfig('showdropdown', true); $expiry->setConfig('dateformat', 'dd-MM-YYYY'); $discountExpiry->setConfig('showcalendar', true); $discountExpiry->setConfig('showdropdown', true); $discountExpiry->setConfig('dateformat', 'dd-MM-YYYY'); $joined->setConfig('showcalendar', true); $joined->setConfig('showdropdown', true); $joined->setConfig('dateformat', 'dd-MM-YYYY'); }
public function updateCMSFields(FieldList $fields) { $metaFieldTitle = new TextField("MetaTitle", $this->owner->fieldLabel('MetaTitle')); $metaFieldTitle->setRightTitle(_t('SiteTree.METATITLEHELP', 'Shown at the top of the browser window and used as the "linked text" by search engines.'))->addExtraClass('help'); $fields->insertBefore($metaFieldTitle, Config::inst()->get('MetaTitleExtension', 'InsertBefore')); return $fields; }
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 updateCMSFields(FieldList $fields) { $fields->insertBefore($shoptab = new Tab('Shop', 'Shop'), 'Access'); $fields->addFieldsToTab("Root.Shop", new TabSet("ShopTabs", $maintab = new Tab("Main", TreeDropdownField::create('TermsPageID', _t("ShopConfig.TERMSPAGE", 'Terms and Conditions Page'), 'SiteTree'), TreeDropdownField::create("CustomerGroupID", _t("ShopConfig.CUSTOMERGROUP", "Group to add new customers to"), "Group"), UploadField::create('DefaultProductImage', _t('ShopConfig.DEFAULTIMAGE', 'Default Product Image'))), $countriestab = new Tab("Countries", CheckboxSetField::create('AllowedCountries', 'Allowed Ordering and Shipping Countries', self::config()->iso_3166_country_codes)))); $fields->removeByName("CreateTopLevelGroups"); $countriestab->setTitle("Allowed Countries"); }
public function updateCMSFields(FieldList $fields) { $fields->insertBefore(new CheckboxField('GenerateMetaData', _t('MetaManager.GENERATEMETADATA', 'Generate Meta-data automatically from the page content'), $this->owner->GenerateMetaData), 'MetaDescription'); if (self::$hide_extra_meta == 1) { $fields->removeByName('ExtraMeta'); $fields->removeByName('ExtraMeta_original'); } }
function updateCMSFields(FieldList $fields) { $fields->insertBefore($uploadField = new SortableUploadField("FeaturedImages", _t("FeaturedImage.FeaturedImages", "Page Image(s)")), "Content"); $uploadField->setFolderName(Config::inst()->get($this->owner->class, 'upload_folder')); //$uploadField->getValidator()->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif')); $uploadField->setAllowedFileCategories('image'); $uploadField->setAllowedMaxFileNumber(Config::inst()->get($this->owner->class, 'max_featured_images')); }
/** * Fields to display this {@link Payment} in the CMS, removed some of the * unnecessary fields. * * @see DataObjectDecorator::updateCMSFields() * @return FieldList */ function updateCMSFields(FieldList $fields) { $fields->removeByName('OrderID'); $fields->removeByName('HTTPStatus'); $fields->removeByName('Amount'); $str = $this->owner->dbObject('Amount')->Nice(); $fields->insertBefore(TextField::create('Amount_', 'Amount', $str), 'Method'); return $fields; }
/** * {@inheritdoc} */ public function updateCMSFields(FieldList $fields) { $excluded = $this->owner->getExcludedSiteTreeClassNames(); if (!empty($excluded)) { $pages = SiteTree::get()->filter(array('ParentID' => $this->owner->ID, 'ClassName' => $excluded))->sort('"SiteTree"."Created" DESC'); $gridField = new BlogFilter_GridField('ChildPages', $this->getLumberjackTitle(), $pages, $this->getLumberjackGridFieldConfig()); $tab = new Tab('ChildPages', $this->getLumberjackTitle(), $gridField); $fields->insertBefore($tab, 'Main'); } }
public function updateCMSFields(FieldList $fields) { $fields->insertBefore(TextField::create("PersonalTitle", "Title (Dr., Hon. etc.)"), "FirstName"); $fields->insertAfter(TextField::create("Credentials"), "Surname"); $fields->insertAfter(TextField::create("JobTitle", "Job Title"), "Credientials"); $fields->insertAfter(TextField::create("Role"), "JobTitle"); $fields->insertAfter(TextField::create("Twitter", "Twitter User Name")->setDescription("Do NOT include the '@'"), "Email"); $fields->insertAfter(TextField::create("Facebook", "Facebook Page or Profile"), "Twitter"); $fields->insertAfter(TextField::create("GooglePlus", "Google+ Profile"), "Facebook"); $fields->insertAfter(UploadField::create("Headshot"), "GooglePlus"); $fields->insertAfter(HTMLEditorField::create("Bio"), "Headshot"); }
/** * Add URL field and a read-only External ID field to CMS form. * * @param FieldList $fields */ public function updateCMSFields(FieldList $fields) { $descriptionFieldName = $this->getModelFieldName(self::DescriptionFieldName); $fields->insertBefore(new TextField($this->linkFieldName(), 'Feed URL'), $descriptionFieldName); $fields->insertAfter(new DropdownField(self::FeedTypeFieldName, 'Type', static::feed_types()), $descriptionFieldName); $fields->insertAfter($field = new TextField(self::XPathFieldName, 'XPath'), $descriptionFieldName); $field->setAttribute('placeholder', $this->defaultXPath()); $fields->insertAfter(new CheckboxField(self::ValidateFeedFieldName, 'Validate feed', true), $descriptionFieldName); if ($idFieldName = $this->externalIDFieldName()) { if ($externalID = $this->owner->{$idFieldName}) { $fields->push(new LiteralField($externalID, 'Feed ID', "<p>{$externalID}</p>")); } } }
function getSearchFields() { if ($this->fields && $this->fields->count()) { return $this->fields; } $fields = new FieldList(TextField::create('Name'), TextField::create('Email'), TextField::create('Company'), CheckboxSetField::create('Status')->setSource(CustomerStatus::get()->map()->toArray()), CheckboxSetField::create('Tags')->setSource(CustomerTag::get()->map()->toArray())); $locales = PostmarkHelper::MemberLocales(); if ($locales && count($locales)) { $locale = DropdownField::create('Locale')->setSource($locales)->setEmptyString('Select language'); $fields->insertBefore($locale, 'Name'); } $this->extend('updateCustomerSearchFields', $fields); $this->fields = $fields; return $this->fields; }
public function updateCMSFields(FieldList $fields) { if ($this->owner->UserSubmissionHolder()) { $gridField = $fields->dataFieldByName('Values'); if ($gridField) { $config = $gridField->getConfig(); $config->addComponent(new GridFieldEditButton()); $config->addComponent(new GridFieldToolbarHeader()); $config->addComponent($sort = new GridFieldSortableHeader()); $config->addComponent(new GridFieldDetailForm()); } $page = $this->owner->UserSubmissionPage(); if ($page && $page->exists()) { $fields->insertBefore(LiteralField::create('Values_UserSubmissionPage_Message', '<p><span style="color: #C00;">Warning:</span> Editing the submission at this level will affect the page that this is tied to.</p>'), 'Values'); } } }
public function updateCMSFields(FieldList $fields) { // set TabSet names to avoid spaces from camel case $fields->addFieldToTab('Root', new TabSet('FoxyStripe', 'FoxyStripe')); // settings tab $fields->addFieldsToTab('Root.FoxyStripe.Settings', array(HeaderField::create('StoreDetails', _t('FoxyStripeSiteConfig.StoreDetails', 'Store Settings'), 3), LiteralField::create('DetailsIntro', _t('FoxyStripeSiteConfig.DetailsIntro', '<p>Maps to data in your <a href="https://admin.foxycart.com/admin.php?ThisAction=EditStore" target="_blank">FoxyCart store settings</a>.')), TextField::create('StoreName')->setTitle(_t('FoxyStripeSiteConfig.StoreName', 'Store Sub Domain'))->setDescription(_t('FoxyStripeSiteConfig.StoreNameDescription', 'the sub domain for your FoxyCart store')), HeaderField::create('AdvanceHeader', _t('FoxyStripeSiteConfig.AdvancedHeader', 'Advanced Settings'), 3), LiteralField::create('AdvancedIntro', _t('FoxyStripeSiteConfig.AdvancedIntro', '<p>Maps to data in your <a href="https://admin.foxycart.com/admin.php?ThisAction=EditAdvancedFeatures" target="_blank">FoxyCart advanced store settings</a>.</p>')), ReadonlyField::create('DataFeedLink', _t('FoxyStripeSiteConfig.DataFeedLink', 'FoxyCart DataFeed URL'), self::getDataFeedLink())->setDescription(_t('FoxyStripeSiteConfig.DataFeedLinkDescription', 'copy/paste to FoxyCart')), CheckboxField::create('CartValidation')->setTitle(_t('FoxyStripeSiteConfig.CartValidation', 'Enable Cart Validation'))->setDescription(_t('FoxyStripeSiteConfig.CartValidationDescription', 'You must <a href="https://admin.foxycart.com/admin.php?ThisAction=EditAdvancedFeatures#use_cart_validation" target="_blank">enable cart validation</a> in the FoxyCart admin.')), ReadonlyField::create('StoreKey')->setTitle(_t('FoxyStripeSiteConfig.StoreKey', 'FoxyCart API Key'))->setDescription(_t('FoxyStripeSiteConfig.StoreKeyDescription', 'copy/paste to FoxyCart')), ReadonlyField::create('SSOLink', _t('FoxyStripeSiteConfig.SSOLink', 'Single Sign On URL'), self::getSSOLink())->setDescription(_t('FoxyStripeSiteConfig.SSOLinkDescription', 'copy/paste to FoxyCart')))); // configuration warning if (FoxyCart::store_name_warning() !== null) { $fields->insertBefore(LiteralField::create("StoreSubDomainHeaderWarning", _t('FoxyStripeSiteConfig.StoreSubDomainHeadingWarning', "<p class=\"message error\">Store sub-domain must be entered in the <a href=\"/admin/settings/\">site settings</a></p>")), 'StoreDetails'); } // products tab $fields->addFieldsToTab('Root.FoxyStripe.Products', array(HeaderField::create('ProductHeader', _t('FoxyStripeSiteConfig.ProductHeader', 'Products'), 3), CheckboxField::create('MultiGroup')->setTitle(_t('FoxyStripeSiteConfig.MultiGroup', 'Multiple Groups'))->setDescription(_t('FoxyStripeSiteConfig.MultiGroupDescription', 'Allows products to be shown in multiple Product Groups')), HeaderField::create('ProductGroupHD', _t('FoxyStripeSiteConfig.ProductGroupHD', 'Product Groups'), 3), NumericField::create('ProductLimit')->setTitle(_t('FoxyStripeSiteConfig.ProductLimit', 'Products per Page'))->setDescription(_t('FoxyStripeSiteConfig.ProductLimitDescription', 'Number of Products to show per page on a Product Group')), HeaderField::create('ProductQuantityHD', _t('FoxyStripeSiteConfig.ProductQuantityHD', 'Product Form Max Quantity'), 3), NumericField::create('MaxQuantity')->setTitle(_t('FoxyStripeSiteConfig.MaxQuantity', 'Max Quantity'))->setDescription(_t('FoxyStripeSiteConfig.MaxQuantityDescription', 'Sets max quantity for product form dropdown (add to cart form - default 10)')))); // categories tab $fields->addFieldsToTab('Root.FoxyStripe.Categories', array(HeaderField::create('CategoryHD', _t('FoxyStripeSiteConfig.CategoryHD', 'FoxyStripe Categories'), 3), LiteralField::create('CategoryDescrip', _t('FoxyStripeSiteConfig.CategoryDescrip', '<p>FoxyCart Categories offer a way to give products additional behaviors that cannot be accomplished by product options alone, including category specific coupon codes, shipping and handling fees, and email receipts. <a href="https://wiki.foxycart.com/v/2.0/categories" target="_blank">Learn More</a></p><p>Categories you\'ve created in FoxyStripe must also be created in your <a href="https://admin.foxycart.com/admin.php?ThisAction=ManageProductCategories" target="_blank">FoxyCart Categories</a> admin panel.</p>')), GridField::create('ProductCategory', _t('FoxyStripeSiteConfig.ProductCategory', 'FoxyCart Categories'), ProductCategory::get(), GridFieldConfig_RecordEditor::create()))); // option groups tab $fields->addFieldsToTab('Root.FoxyStripe.Groups', array(HeaderField::create('OptionGroupsHead', _t('FoxyStripeSiteConfig', 'Product Option Groups'), 3), LiteralField::create('OptionGroupsDescrip', _t('FoxyStripeSiteConfig.OptionGroupsDescrip', '<p>Product Option Groups allow you to name a set of product options.</p>')), GridField::create('OptionGroup', _t('FoxyStripeSiteConfig.OptionGroup', 'Product Option Groups'), OptionGroup::get(), GridFieldConfig_RecordEditor::create()))); }
public function updateCMSFields(FieldList $fields) { Requirements::javascript('marketplace/code/ui/admin/js/openstack.release.supported.api.version.admin.ui.js'); $fields->removeByName('ApiVersionID'); $versions = OpenStackApiVersion::get()->map('ID', 'Version'); $ddl = new DropdownField('ApiVersionID', 'API Version', $versions); $ddl->addExtraClass('ddl-api-version-id'); $ddl->setEmptyString('--Select An API Version --'); $fields->insertAfter($ddl, 'OpenStackComponentID'); $versions = array(); foreach (OpenStackComponent::get()->filter('SupportsVersioning', true) as $component) { foreach ($component->getVersions() as $version) { if (!array_key_exists(intval($component->getIdentifier()), $versions)) { $versions[intval($component->getIdentifier())] = array(); } array_push($versions[intval($component->getIdentifier())], array('value' => intval($version->getIdentifier()), 'text' => $version->getVersion())); } } $json_data = json_encode($versions); $script = <<<JS \t\t<script> \t\tvar versions = {$json_data}; \t\t</script> JS; $fields->add(new LiteralField('js_data', $script)); $fields->removeByName('OpenStackComponentID'); //kludge; get parent id from url.... $url = preg_split('/\\//', $_REQUEST['url']); $release_id = (int) $url[8]; //components $components = OpenStackComponent::get()->filter('SupportsVersioning', true)->innerJoin('OpenStackRelease_OpenStackComponents', "OpenStackRelease_OpenStackComponents.OpenStackComponentID = OpenStackComponent.ID AND OpenStackReleaseID = {$release_id} "); $components_source = array(); foreach ($components as $comp) { $components_source[$comp->ID] = sprintf('%s (%s)', $comp->Name, $comp->CodeName); } $ddl = new DropdownField('OpenStackComponentID', 'OpenStack Component', $components_source); $ddl->setEmptyString('--Select A OS Component--'); $ddl->addExtraClass('ddl-os-component-id'); $fields->insertBefore($ddl, 'ApiVersionID'); $fields->insertAfter(new TextField("ReleaseVersion", "Release Version"), 'ReleaseID'); $fields->insertAfter(new LiteralField('ReleaseVersionTitle', '<p>You could get this data from <a href="http://docs.openstack.org/releases" target="_blank">http://docs.openstack.org/releases</a></p>'), 'ReleaseVersion'); return $fields; }
public function updateCMSFields(FieldList $fields) { $locations = function () { return EventLocation::get()->map()->toArray(); }; $dropdown = DropdownField::create('LocationID', _t('EventLocations.LOCATION', 'Location'), $locations())->setHasEmptyDefault(true); if (class_exists('QuickAddNewExtension')) { $dropdown->useAddNew('EventLocation', $locations); } if ($this->owner->hasField('Capacity')) { Requirements::javascript(THIRDPARTY_DIR . '/jquery-metadata/jquery.metadata.js'); Requirements::add_i18n_javascript('eventlocations/javascript/lang'); Requirements::javascript('eventlocations/javascript/LocationDateTimeCms.js'); $capacities = array(); foreach ($locations as $location) { if ($location->Capacity) { $capacities[$location->ID] = (int) $location->Capacity; } } $dropdown->addExtraClass('{ capacities: ' . Convert::array2json($capacities) . ' }'); } $fields->insertBefore($dropdown, 'StartDate'); }
/** * Adds EmbargoExpiry time fields to the CMS * * @param FieldSet $fields */ public function updateCMSFields(FieldList $fields) { Requirements::css(SCHEDULER_DIR . "/css/cms.css"); // $fields->insertBefore( $publishDate = DatetimeField::create("Embargo", _t("Scheduler.Embargo", "Page available from")); // "Content" // ); $publishDate->getDateField()->setConfig('dateformat', 'dd-MM-yyyy'); $publishDate->getDateField()->setConfig("showcalendar", true); $publishDate->getTimeField()->setConfig('timeformat', 'HH:mm'); $publishDate->getTimeField()->setAttribute('placeholder', '00:00'); //$publishDate->getTimeField()->setValue("13:00"); $publishDate->setRightTitle(_t("Scheduler.LeaveEmptyEmbargo", "Leave empty to have page available right away (after publishing)")); // $fields->insertAfter( $unpublishDate = DatetimeField::create("Expiry", _t("Scheduler.Expiry", "Page expires on")); // "Embargo" // ); $unpublishDate->getDateField()->setConfig('dateformat', 'dd-MM-yyyy'); $unpublishDate->getDateField()->setConfig("showcalendar", true); $unpublishDate->getTimeField()->setConfig('timeformat', 'HH:mm'); $unpublishDate->getTimeField()->setAttribute('placeholder', '00:00'); $unpublishDate->setRightTitle(_t("Scheduler.LeaveEmptyExpire", "Leave empty to leave page published indefinitely")); $fields->insertBefore(ToggleCompositeField::create('SoftScheduler', _t('SoftScheduler.Schedule', 'Schedule publishing & unpublishing of this page'), array($publishDate, $unpublishDate))->setHeadingLevel(4), 'Content'); //$fields->findOrMakeTab($tabName); //$fields->insertAfter(TextField::create('Test'),'Header'); // Debug::dump($fields->fieldByName('Root.Main.Options')); // $optionspanel = $fields->fieldByName('Root.Main.Options'); // $optionspanel->push(TextField::create('Test')); // $optbar = $fields->fieldByName('Root.Main.Options'); // if(! $optbar){ // $fields->addFieldsToTab('Root.Main', $optbar = RightSidebar::create('Options')); // } // $optbar->push( $publishDate ); // $optbar->push( $unpublishDate ); // $fields->fieldByName('Root')->setTemplate('RightSidebarInner'); }
/** * @return FieldList */ protected function getFieldsForOembed($url, $file) { if (isset($file->Oembed->thumbnail_url)) { $thumbnailURL = Convert::raw2att($file->Oembed->thumbnail_url); } elseif ($file->Type == 'photo') { $thumbnailURL = Convert::raw2att($file->Oembed->url); } else { $thumbnailURL = FRAMEWORK_DIR . '/images/default_media.png'; } $fileName = Convert::raw2att($file->Name); $fields = new FieldList($filePreview = CompositeField::create(CompositeField::create(new LiteralField("ImageFull", "<img id='thumbnailImage' class='thumbnail-preview' " . "src='{$thumbnailURL}?r=" . rand(1, 100000) . "' alt='{$fileName}' />\n"))->setName("FilePreviewImage")->addExtraClass('cms-file-info-preview'), CompositeField::create(CompositeField::create(new ReadonlyField("FileType", _t('AssetTableField.TYPE', 'File type') . ':', $file->Type), $urlField = ReadonlyField::create('ClickableURL', _t('AssetTableField.URL', 'URL'), sprintf('<a href="%s" target="_blank" class="file">%s</a>', Convert::raw2att($url), Convert::raw2att($url)))->addExtraClass('text-wrap')))->setName("FilePreviewData")->addExtraClass('cms-file-info-data'))->setName("FilePreview")->addExtraClass('cms-file-info'), new TextField('CaptionText', _t('HtmlEditorField.CAPTIONTEXT', 'Caption text')), DropdownField::create('CSSClass', _t('HtmlEditorField.CSSCLASS', 'Alignment / style'), array('leftAlone' => _t('HtmlEditorField.CSSCLASSLEFTALONE', 'On the left, on its own.'), 'center' => _t('HtmlEditorField.CSSCLASSCENTER', 'Centered, on its own.'), 'left' => _t('HtmlEditorField.CSSCLASSLEFT', 'On the left, with text wrapping around.'), 'right' => _t('HtmlEditorField.CSSCLASSRIGHT', 'On the right, with text wrapping around.')))->addExtraClass('last')); if ($file->Width != null) { $fields->push(FieldGroup::create(_t('HtmlEditorField.IMAGEDIMENSIONS', 'Dimensions'), TextField::create('Width', _t('HtmlEditorField.IMAGEWIDTHPX', 'Width'), $file->InsertWidth)->setMaxLength(5), TextField::create('Height', _t('HtmlEditorField.IMAGEHEIGHTPX', 'Height'), $file->InsertHeight)->setMaxLength(5))->addExtraClass('dimensions last')); } $urlField->dontEscape = true; if ($file->Type == 'photo') { $fields->insertBefore(new TextField('AltText', _t('HtmlEditorField.IMAGEALTTEXT', 'Alternative text (alt) - shown if image cannot be displayed'), $file->Title, 80), 'CaptionText'); $fields->insertBefore(new TextField('Title', _t('HtmlEditorField.IMAGETITLE', 'Title text (tooltip) - for additional information about the image')), 'CaptionText'); } $this->extend('updateFieldsForOembed', $fields, $url, $file); return $fields; }
/** * @uses FieldList->insertBefore() */ public function insertBefore($insertBefore, $field) { $ret = $this->children->insertBefore($insertBefore, $field); $this->sequentialSet = null; return $ret; }
public function updateCMSFields(FieldList $fields) { $fields->insertBefore($fields->dataFieldByName("Username")->setTitle(_t(' UsernameMember.TITLE', "Užívateľské meno"))->setDescription(_t(' UsernameMember.DESCRIPTION', "Slúži na prihlasovanie.")), "FirstName"); }
public function updateCMSFields(FieldList $fields) { // Adds the field pingUrls to settings $fields->insertBefore(new Tab('Ping', 'Ping Settings'), 'Main'); $fields->addFieldToTab("Root.Ping", new TextareaField("pingUrls", "Enter a list of URLs to ping. <br /><br />(Warning: adding a lot of URLs to this list will slow down saving of pages)")); }
/** * @uses FieldList->insertBefore() * * @param string $insertBefore * @param FormField $field * @return false|FormField */ public function insertBefore($insertBefore, $field) { return $this->children->insertBefore($insertBefore, $field); }
public function updateCMSFields(FieldList $fields) { /** * @var SubmittedForm */ $submission = $this->owner->Submission(); if (!$submission || !$submission->exists()) { // If no submission and not underneath a 'UserSubmissionHolder' then show an error $fields->insertBefore(LiteralField::create('InvalidSetup_Text', '<p><span style="color: #C00;">Warning: </span>This page is missing SubmittedForm data.</p>'), 'Title'); $fields->removeByName(array('Title', 'MenuTitle', 'Content')); return; } // Detect if submission parent matches this page parent. If it doesn't tell the user there is an issue. $userSubmissionHolder = $submission->UserSubmissionHolder(); $parent = $this->owner->Parent(); if ($userSubmissionHolder && $parent && $userSubmissionHolder->ID != $parent->ID) { $fields->insertBefore(LiteralField::create('InvalidSetup_Text', '<p><span style="color: #C00;">Warning: </span>This page must be moved underneath a "' . $userSubmissionHolder->Title . '" (ID #' . $userSubmissionHolder->ID . ') page to work properly as the submission is bound to that page.</p>'), 'Title'); $fields->removeByName(array('Title', 'MenuTitle', 'Content')); return; } Requirements::javascript(USERSUBMISSIONPAGES_DIR . '/javascript/userformpages.js'); Requirements::css(USERSUBMISSIONPAGES_DIR . '/css/userformpages.css'); // Get the submission form field to use for populating $Title/$MenuTitle $title_fields = $this->owner->stat('title_fields'); if ($title_fields) { $holderPage = $submission->UserSubmissionHolder(); $submissionFieldTitle = '<INVALID FIELD>'; if ($holderPage && $holderPage->exists()) { $record = $holderPage->Fields()->find('Name', $holderPage->SubmissionPageTitleField); if ($record) { $submissionFieldTitle = $record->Title; } } // Inform the CMS user where these values are being pulled from. foreach ($title_fields as $fieldName) { $field = $fields->dataFieldByName($fieldName); if ($field) { $readonlyField = $field->performReadonlyTransformation(); $readonlyField->setName($fieldName . '_Readonly'); $readonlyField->setValue($this->owner->{$fieldName}); $readonlyField->setRightTitle('Uses the "' . $submissionFieldTitle . '" field as defined on the parent page.'); $fields->insertAfter($readonlyField, $fieldName); $fields->removeByName($fieldName); } } } // Allow direct editing of submission field data $fields->insertAfter($gridField = GridField::create('SubmissionFields', 'Fields', $submission->Values()), 'Content'); $config = $gridField->getConfig(); $config->addComponent(new GridFieldEditButton()); $config->addComponent(new GridFieldDetailForm()); $config->addComponent(new GridFieldUserSubmissionAddMissingFields()); $fields->removeByName(array('Abstract', 'Content')); // If content_field is set and not on the form, show underneath Metadata $content_field = $this->owner->stat('content_field'); if ($content_field) { // NOTE: Using getField() because this is for inspecting the DB data. $value = $this->owner->getField($content_field); $fields->addFieldToTab('Root.Main', ToggleCompositeField::create(__CLASS__ . '_Internal', 'Internal', array($metaFieldDesc = ReadonlyField::create($content_field . '_Readonly_' . __CLASS__, $content_field, $value)))); } }
public function testFieldPosition() { $set = new FieldList(new TextField('A'), new TextField('B'), new TextField('C')); $this->assertEquals(0, $set->fieldPosition('A')); $this->assertEquals(1, $set->fieldPosition('B')); $this->assertEquals(2, $set->fieldPosition('C')); $set->insertBefore(new TextField('AB'), 'B'); $this->assertEquals(0, $set->fieldPosition('A')); $this->assertEquals(1, $set->fieldPosition('AB')); $this->assertEquals(2, $set->fieldPosition('B')); $this->assertEquals(3, $set->fieldPosition('C')); unset($set); }
/** * If there isn't a capistrano env project folder, show options to create one * * @param FieldList $fields */ public function setCreateProjectFolderField(&$fields) { // Check if the capistrano project folder exists if (!$this->Name) { return; } if ($this->projectFolderExists()) { return; } $createFolderNotice = new LabelField('CreateEnvFolderNotice', 'Warning: No Capistrano project folder exists'); $createFolderNotice->addExtraClass('message warning'); $fields->insertBefore($createFolderNotice, 'Name'); $createFolderField = new CheckboxField('CreateEnvFolder', 'Create folder'); $createFolderField->setDescription('Would you like to create the capistrano project folder?'); $fields->insertAfter($createFolderField, 'CreateEnvFolderNotice'); }
/** * Adds or modifies the fields for the Main tab * * @param FieldList $fields FieldList to add fields to * * @return void */ public function getFieldsForMain($fields) { $fields->dataFieldByName('StockQuantityOverbookable')->setTitle($this->fieldLabel('StockQuantityOverbookableShort')); $fields->dataFieldByName('StockQuantityExpirationDate')->addExtraClass("date"); $fields->dataFieldByName('StockQuantityExpirationDate')->setConfig('showcalendar', true); $fields->dataFieldByName('StockQuantityExpirationDate')->FieldHolder(); $purchaseTimeUnitSource = array('Days' => _t('Silvercart.DAYS', 'Days'), 'Weeks' => _t('Silvercart.WEEKS', 'Weeks'), 'Months' => _t('Silvercart.MONTHS', 'Months')); $fields->dataFieldByName('PurchaseTimeUnit')->setSource($purchaseTimeUnitSource); $fields->dataFieldByName('ReleaseDate')->getDateField()->addExtraClass("date")->setConfig('showcalendar', true); $fields->dataFieldByName('LaunchDate')->getDateField()->addExtraClass("date")->setConfig('showcalendar', true); $fields->dataFieldByName('SalesBanDate')->getDateField()->addExtraClass("date")->setConfig('showcalendar', true); $productNumberGroup = new SilvercartFieldGroup('ProductNumberGroup', '', $fields); $productNumberGroup->push($fields->dataFieldByName('ProductNumberShop')); $productNumberGroup->push($fields->dataFieldByName('ProductNumberManufacturer')); $productNumberGroup->push($fields->dataFieldByName('EANCode')); $baseDataToggle = ToggleCompositeField::create('ProductBaseDataToggle', $this->fieldLabel('BasicData'), array($fields->dataFieldByName('isActive'), $fields->dataFieldByName('IsNotBuyable'), $productNumberGroup))->setHeadingLevel(4)->setStartClosed(false); $fields->removeByName('isActive'); $fields->removeByName('IsNotBuyable'); $fields->insertBefore($baseDataToggle, 'Title'); if ($this->exists()) { $fields->insertAfter(new CheckboxField('RefreshCache', $this->fieldLabel('RefreshCache')), 'isActive'); } $descriptionToggle = ToggleCompositeField::create('ProductDescriptionToggle', $this->fieldLabel('LongDescription'), array($fields->dataFieldByName('Title'), $fields->dataFieldByName('ShortDescription'), $fields->dataFieldByName('LongDescription')))->setHeadingLevel(4)->setStartClosed(false); $fields->removeByName('Title'); $fields->removeByName('ShortDescription'); $fields->removeByName('LongDescription'); $fields->insertAfter($descriptionToggle, 'ProductBaseDataToggle'); $availabilityGroup = new SilvercartFieldGroup('AvailabilityGroup', '', $fields); $availabilityGroup->push($fields->dataFieldByName('SilvercartAvailabilityStatusID')); $availabilityGroup->breakAndPush($fields->dataFieldByName('PurchaseMinDuration')); $availabilityGroup->push($fields->dataFieldByName('PurchaseMaxDuration')); $availabilityGroup->push($fields->dataFieldByName('PurchaseTimeUnit')); $availabilityGroup->breakAndPush($fields->dataFieldByName('StockQuantity')); $availabilityGroup->push($fields->dataFieldByName('StockQuantityOverbookable')); $availabilityGroup->push($fields->dataFieldByName('StockQuantityExpirationDate')); $availabilityGroupToggle = ToggleCompositeField::create('AvailabilityGroupToggle', $this->fieldLabel('SilvercartAvailabilityStatus'), array($availabilityGroup))->setHeadingLevel(4)->setStartClosed(true); $fields->insertAfter($availabilityGroupToggle, 'ProductDescriptionToggle'); $timeGroup = new SilvercartFieldGroup('TimeGroup', '', $fields); $timeGroup->push($fields->dataFieldByName('ReleaseDate')); $timeGroup->pushAndBreak(new LabelField('ReleaseDateInfo', '<br/><br/><br/>' . $this->fieldLabel('ReleaseDateInfo'))); $timeGroup->push($fields->dataFieldByName('LaunchDate')); $timeGroup->pushAndBreak(new LabelField('LaunchDateInfo', '<br/><br/><br/>' . $this->fieldLabel('LaunchDateInfo'))); $timeGroup->push($fields->dataFieldByName('SalesBanDate')); $timeGroup->pushAndBreak(new LabelField('SalesBanDateInfo', '<br/><br/><br/>' . $this->fieldLabel('SalesBanDateInfo'))); $timeGroupToggle = ToggleCompositeField::create('TimeGroupToggle', $this->fieldLabel('TimeGroup'), array($timeGroup))->setHeadingLevel(4)->setStartClosed(true); $fields->insertAfter($timeGroupToggle, 'AvailabilityGroupToggle'); $miscGroup = new SilvercartFieldGroup('MiscGroup', '', $fields); if ($fields->hasField('SilvercartManufacturerID')) { $miscGroup->pushAndBreak($fields->dataFieldByName('SilvercartManufacturerID')); } $miscGroup->breakAndPush($fields->dataFieldByName('ExcludeFromPaymentDiscounts')); $miscGroup->breakAndPush($fields->dataFieldByName('PackagingQuantity')); $miscGroup->pushAndBreak($fields->dataFieldByName('SilvercartQuantityUnitID')); $miscGroup->breakAndPush($fields->dataFieldByName('Weight')); $miscGroup->breakAndPush($fields->dataFieldByName('SilvercartProductConditionID')); $miscGroupToggle = ToggleCompositeField::create('AvailabilityGroupToggle', $this->fieldLabel('MiscGroup'), array($miscGroup))->setHeadingLevel(4)->setStartClosed(true); $fields->insertAfter($miscGroupToggle, 'TimeGroupToggle'); }