/**
  * 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');
     }
 }
Example #6
0
 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'));
 }
Example #12
0
 /**
  * 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');
 }
Example #22
0
 /**
  * @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;
 }
Example #23
0
 /**
  * @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))));
     }
 }
Example #28
0
 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);
 }
Example #29
0
 /**
  * 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');
 }