/** * Adds PublishDate to CMS Form. * @param $fields */ function updateCMSFields(FieldList $fields) { $datefield = DatetimeField::create('PublishDate', _t('CMSPublishableDataExtension.PUBLISH_DATE', 'Publish date')); $datefield->getDateField()->setConfig('showcalendar', 1); // $datefield->setConfig('setLocale', en_US); $fields->addFieldToTab("Root.Main", $datefield, 'Content'); }
public function __construct($controller, $name) { $fields = new FieldList(array(TextField::create('UserSubmittedGallery'), TextField::create('UserSubmittedArtistName'), DatetimeField::create('UserSubmittedStartDate'), CheckboxField::create('UserSubmittedHasFreeDrinks'))); $actions = new FieldList(); $validator = new RequiredFields(array('UserSubmittedGallery', 'UserSubmittedArtistName', 'UserSubmittedStartDate')); parent::__construct($controller, $name, $fields, $actions, $validator); }
public function getCMSFields() { Requirements::css(BLOGGER_DIR . '/css/cms.css'); $self =& $this; $this->beforeUpdateCMSFields(function ($fields) use($self) { $fields->addFieldsToTab('Root.Main', array(HeaderField::create('Post Options', 3), $publishDate = DatetimeField::create("PublishDate", _t("BlogPost.PublishDate", "Publish Date")), ListboxField::create("Categories", _t("BlogPost.Categories", "Categories"), $self->Parent()->Categories()->map()->toArray())->setMultiple(true), ListboxField::create("Tags", _t("BlogPost.Tags", "Tags"), $self->Parent()->Tags()->map()->toArray())->setMultiple(true))); $publishDate->getDateField()->setConfig("showcalendar", true); // Add featured image $fields->insertBefore($uploadField = UploadField::create("FeaturedImage", _t("BlogPost.FeaturedImage", "Featured Image")), "Content"); $uploadField->getValidator()->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif')); }); $fields = parent::getCMSFields(); // We're going to make an SEO tab and move all the usual crap there $menuTitle = $fields->dataFieldByName('MenuTitle'); $urlSegment = $fields->dataFieldByName('URLSegment'); $fields->addFieldsToTab('Root.SEO', array($menuTitle, $urlSegment)); $metaField = $fields->fieldByName('Root.Main.Metadata'); if ($metaField) { $metaFields = $metaField->getChildren(); if ($metaFields->count() > 0) { $tab = $fields->findOrMakeTab('Root.SEO'); $tab->push(HeaderField::create('Meta', 3)); foreach ($metaFields as $field) { $tab->push($field); } } $fields->removeByName('Metadata'); } return $fields; }
public function getCMSFields() { $datetimeField = DatetimeField::create("Date")->setTitle($this->fieldLabel("Date")); $datetimeField->getDateField()->setConfig("dmyfields", true); // Check if NewsImage should be saved in a seperate folder if (self::config()->save_image_in_seperate_folder == false) { $UploadField = UploadField::create("NewsImage")->setTitle($this->fieldLabel("NewsImage"))->setFolderName("news"); } else { if ($this->ID == "0") { $UploadField = FieldGroup::create(LiteralField::create("Save", $this->fieldLabel("SaveHelp")))->setTitle($this->fieldLabel("NewsImage")); } else { $UploadField = UploadField::create("NewsImage")->setTitle($this->fieldLabel("NewsImage"))->setFolderName("news/" . $this->URLSegment); } } // Create direct link to NewsArticle if ($this->ID == "0") { // Little hack to hide $urlsegment when article isn't saved yet. $urlsegment = LiteralField::create("NoURLSegmentYet", ""); } else { if ($NewsHolder = $this->NewsHolder()) { $baseLink = Controller::join_links(Director::absoluteBaseURL(), $NewsHolder->Link(), $this->URLSegment); } $urlsegment = Fieldgroup::create(LiteralField::create("URLSegment", "URLSegment")->setContent('<a href="' . $baseLink . '" target="_blank">' . $baseLink . '</a>'))->setTitle("URLSegment"); } $fields = FieldList::create(new TabSet("Root", new Tab("Main", $urlsegment, TextField::create("Title")->setTitle($this->fieldLabel("Title")), $datetimeField, HTMLEditorField::create("Content")->setTitle($this->fieldLabel("Content")), $UploadField))); $this->extend("updateCMSFields", $fields); return $fields; }
/** * * @param FieldList $fields * @return void */ public function updateCMSFields(FieldList $fields) { $controller = Controller::curr(); if ($controller instanceof SecuredAssetAdmin || $controller instanceof CMSSecuredFileAddController) { Requirements::combine_files('securedassetsadmincmsfields.js', array(SECURED_FILES_MODULE_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-sliderAccess.js', SECURED_FILES_MODULE_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-timepicker-addon.min.js', SECURED_FILES_MODULE_DIR . "/javascript/SecuredFilesLeftAndMain.js")); Requirements::css(SECURED_FILES_MODULE_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-timepicker-addon.min.css'); Requirements::css(SECURED_FILES_MODULE_DIR . "/css/SecuredFilesLeftAndMain.css"); Requirements::javascript(SECURED_FILES_MODULE_DIR . "/javascript/SecuredFilesLeftAndMain.js"); if ($this->isFile()) { $buttonsSecurity = $this->showButtonsSecurity(); $buttonsEmbargoExpiry = $this->showButtonsEmbargoExpiry(); // Embargo field $embargoTypeField = new OptionSetField("EmbargoType", "", array("None" => _t('AdvancedSecuredFiles.NONENICE', "None"), "Indefinitely" => _t('AdvancedSecuredFiles.INDEFINITELYNICE', "Hide document indefinitely"), "UntilAFixedDate" => _t('AdvancedSecuredFiles.UNTILAFIXEDDATENICE', 'Hide until set date'))); $embargoUntilDateField = DatetimeField::create('EmbargoedUntilDate', ''); $embargoUntilDateField->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy')->setAttribute('readonly', true); $embargoUntilDateField->getTimeField()->setAttribute('readonly', true); // Expiry field $expireTypeField = new OptionSetField("ExpiryType", "", array("None" => _t('AdvancedSecuredFiles.NONENICE', "None"), "AtAFixedDate" => _t('AdvancedSecuredFiles.ATAFIXEDDATENICE', 'Set file to expire on'))); $expiryDatetime = DatetimeField::create('ExpireAtDate', ''); $expiryDatetime->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy')->setAttribute('readonly', true); $expiryDatetime->getTimeField()->setAttribute('readonly', true); $securitySettingsGroup = FieldGroup::create(FieldGroup::create($embargoTypeField, $embargoUntilDateField)->addExtraClass('embargo option-change-datetime')->setName("EmbargoGroupField"), FieldGroup::create($expireTypeField, $expiryDatetime)->addExtraClass('expiry option-change-datetime')->setName("ExpiryGroupField")); } else { $buttonsSecurity = $this->showButtonsSecurity(); $buttonsEmbargoExpiry = ''; $securitySettingsGroup = FieldGroup::create(); } $canViewTypeField = new OptionSetField("CanViewType", "", array("Inherit" => _t('AdvancedSecuredFiles.INHERIT', "Inherit from parent folder"), "Anyone" => _t('SiteTree.ACCESSANYONE', 'Anyone'), "LoggedInUsers" => _t('SiteTree.ACCESSLOGGEDIN', 'Logged-in users'), "OnlyTheseUsers" => _t('SiteTree.ACCESSONLYTHESE', 'Only these people (choose from list)'))); $canEditTypeField = new OptionSetField("CanEditType", "", array("Inherit" => _t('AdvancedSecuredFiles.INHERIT', "Inherit from parent folder"), "LoggedInUsers" => _t('SiteTree.ACCESSLOGGEDIN', 'Logged-in users'), "OnlyTheseUsers" => _t('SiteTree.ACCESSONLYTHESE', 'Only these people (choose from list)'))); $groupsMap = array(); foreach (Group::get() as $group) { // Listboxfield values are escaped, use ASCII char instead of » $groupsMap[$group->ID] = $group->getBreadcrumbs(' > '); } asort($groupsMap); $viewerGroupsField = ListboxField::create("ViewerGroups", _t('AdvancedSecuredFiles.VIEWERGROUPS', "Viewer Groups"))->setMultiple(true)->setSource($groupsMap)->setAttribute('data-placeholder', _t('AdvancedSecuredFiles.GroupPlaceholder', 'Click to select group')); $editorGroupsField = ListBoxField::create("EditorGroups", _t('AdvancedSecuredFiles.EDITORGROUPS', "Editor Groups"))->setMultiple(true)->setSource($groupsMap)->setAttribute('data-placeholder', _t('AdvancedSecuredFiles.GroupPlaceholder', 'Click to select group')); $securitySettingsGroup->push(FieldGroup::create($canViewTypeField, $viewerGroupsField)->addExtraClass('whocanview option-change-listbox')->setName("CanViewGroupField")); $securitySettingsGroup->push(FieldGroup::create($canEditTypeField, $editorGroupsField)->addExtraClass('whocanedit option-change-listbox')->setName("CanEditGroupField")); $securitySettingsGroup->setName("SecuritySettingsGroupField")->addExtraClass('security-settings'); $showAdvanced = AdvancedAssetsFilesSiteConfig::is_security_enabled() || $this->isFile() && AdvancedAssetsFilesSiteConfig::is_embargoexpiry_enabled(); if ($showAdvanced) { $fields->insertAfter(LiteralField::create('BottomTaskSelection', $this->owner->renderWith('componentField', ArrayData::create(array('ComponentSecurity' => AdvancedAssetsFilesSiteConfig::component_cms_icon('security'), 'ComponentEmbargoExpiry' => AdvancedAssetsFilesSiteConfig::component_cms_icon('embargoexpiry'), 'ButtonsSecurity' => $buttonsSecurity, 'ButtonsEmbargoExpiry' => $buttonsEmbargoExpiry)))), "ParentID"); $fields->insertAfter($securitySettingsGroup, "BottomTaskSelection"); } } if (!is_a($this->owner, "Folder") && is_a($this->owner, "File")) { $parentIDField = $fields->dataFieldByName("ParentID"); if ($controller instanceof SecuredAssetAdmin) { $securedRoot = FileSecured::getSecuredRoot(); $parentIDField->setTreeBaseID($securedRoot->ID); $parentIDField->setFilterFunction(create_function('$node', "return \$node->Secured == 1;")); } else { $parentIDField->setFilterFunction(create_function('$node', "return \$node->Secured == 0;")); } // SilverStripe core has a bug for search function now, so disable it for now. $parentIDField->setShowSearch(false); } }
/** * Returns fields for entering date and time. NB injector has overridden the TimeField to be CERATimeField to * fix a problem saving DatatimeField with no date. * * @return array */ public function cmsFields() { if (static::ShowTimeField) { return [DTField::create(static::SingleFieldName)]; } else { return [DField::create(static::SingleFieldName)]; } }
/** * Display the appropriate CMS media page fields and respective media type attributes. */ public function getCMSFields() { $fields = parent::getCMSFields(); // Display the media type as read only. $fields->addFieldToTab('Root.Main', ReadonlyField::create('Type', 'Type', $this->MediaType()->Title), 'Title'); // Display a notification that the parent holder contains mixed children. $parent = $this->getParent(); if ($parent && $parent->getMediaHolderChildren()->exists()) { Requirements::css(MEDIAWESOME_PATH . '/css/mediawesome.css'); $fields->addFieldToTab('Root.Main', LiteralField::create('MediaNotification', "<p class='mediawesome notification'><strong>Mixed {$this->MediaType()->Title} Holder</strong></p>"), 'Type'); } // Display the remaining media page fields. $fields->addFieldToTab('Root.Main', TextField::create('ExternalLink')->setRightTitle('An <strong>optional</strong> redirect URL to the media source'), 'URLSegment'); $fields->addFieldToTab('Root.Main', $date = DatetimeField::create('Date'), 'Content'); $date->getDateField()->setConfig('showcalendar', true); // Allow customisation of categories and tags respective to the current page. $tags = MediaTag::get()->map()->toArray(); $fields->findOrMakeTab('Root.CategoriesTags', 'Categories and Tags'); $fields->addFieldToTab('Root.CategoriesTags', $categoriesList = ListboxField::create('Categories', 'Categories', $tags)->setMultiple(true)); $fields->addFieldToTab('Root.CategoriesTags', $tagsList = ListboxField::create('Tags', 'Tags', $tags)->setMultiple(true)); if (!$tags) { $categoriesList->setAttribute('disabled', 'true'); $tagsList->setAttribute('disabled', 'true'); } // Allow customisation of media type attribute content respective to the current page. if ($this->MediaAttributes()->exists()) { foreach ($this->MediaAttributes() as $attribute) { if (strripos($attribute->Title, 'Time') || strripos($attribute->Title, 'Date') || stripos($attribute->Title, 'When')) { // Display an attribute as a date time field where appropriate. $fields->addFieldToTab('Root.Main', $custom = DatetimeField::create("{$attribute->ID}_MediaAttribute", $attribute->Title, $attribute->Content), 'Content'); $custom->getDateField()->setConfig('showcalendar', true); } else { $fields->addFieldToTab('Root.Main', $custom = TextField::create("{$attribute->ID}_MediaAttribute", $attribute->Title, $attribute->Content), 'Content'); } $custom->setRightTitle('Custom <strong>' . strtolower($this->MediaType()->Title) . '</strong> attribute'); } } // Display an abstract field for content summarisation. $fields->addfieldToTab('Root.Main', $abstract = TextareaField::create('Abstract'), 'Content'); $abstract->setRightTitle('A concise summary of the content'); $abstract->setRows(6); // Allow customisation of images and attachments. $type = strtolower($this->MediaType()->Title); $fields->findOrMakeTab('Root.ImagesAttachments', 'Images and Attachments'); $fields->addFieldToTab('Root.ImagesAttachments', $images = UploadField::create('Images')); $images->getValidator()->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif', 'bmp')); $images->setFolderName("media-{$type}/{$this->ID}/images"); $fields->addFieldToTab('Root.ImagesAttachments', $attachments = UploadField::create('Attachments')); $attachments->setFolderName("media-{$type}/{$this->ID}/attachments"); // Allow extension customisation. $this->extend('updateMediaPageCMSFields', $fields); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $eventTypeSource = EventType::get()->map()->toArray(); $countrySource = Country::get()->map()->toArray(); $fields->addFieldsToTab('Root.Main', array(TextField::create('LocationName', 'Location Name'), TextareaField::create('LocationAddress', 'Location Address'), $startDate = DatetimeField::create('StartTime', 'Start'), $endDate = DatetimeField::create('EndTime', 'End'), TextareaField::create('Price', 'Price'), DropdownField::create('EventTypeID', 'Type', $eventTypeSource), DropdownField::create('CountryID', 'Country', $countrySource), UploadField::create('Image', 'Image'))); $date = Date('Y-m-d', time()); $time = Date('H:i:s', time()); $startDate->getDateField()->setConfig('showcalendar', true); $startDate->getDateField()->setValue($date); $startDate->getTimeField()->setValue($time); $endDate->getDateField()->setConfig('showcalendar', true); $endDate->getDateField()->setValue($date); $endDate->getTimeField()->setValue($time); return $fields; }
public function getCmsFields() { $fields = parent::getCMSFields(); $fields->removeByName('ParentID'); // Set today's date if empty if (!$this->Date) { $this->Date = date('Y-m-d H:i:s'); } $fields->dataFieldByName('Title')->setTitle('Article Title'); $fields->addFieldToTab('Root.Main', LiteralField::create('DateInfo', '<p>Dates set in the future will not be visible until that day/time.</p>'), 'Date'); $fields->addFieldToTab('Root.Main', $datetime = DatetimeField::create('Date', 'Article Date / Time (24h)'), 'Content'); $datetime->getDateField()->setConfig('showcalendar', 1); $datetime->getTimeField()->setConfig('timeformat', 'HH:mm'); $fields->addFieldToTab('Root.Main', $ul = UploadField::create('Thumbnail', 'Article Image'), 'Content'); $ul->setFolderName('NewsArticles'); $ul->setAllowedFileCategories('image'); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); if (!Config::inst()->get('NewsPost', 'pages_admin')) { $arrTypes = NewsPost::GetNewsTypes(); if (count($arrTypes) > 1) { $arrDropDownSource = array(); foreach ($arrTypes as $strType) { $arrDropDownSource[$strType] = $strType; } $fields->addFieldToTab('Root.Main', DropdownField::create('ClassName')->setSource($arrDropDownSource)->setTitle('Type'), 'Content'); } } $fields->addFieldsToTab('Root.Main', array(DropdownField::create('ParentID')->setSource(NewsIndex::get()->map()->toArray())->setTitle('Parent Page'), DatetimeField::create('DateTime'), TextField::create('Tags'), TextField::create('Author'), HtmlEditorField::create('Summary')->setRows(5)), 'Content'); if ($this->ID) { $fields->addFieldToTab('Root.Main', CheckboxSetField::create('Categories')->setSource(NewsCategory::get()->map('ID', 'Title')->toArray()), 'Content'); $fields->addFieldToTab('Root.RelatedArticles', GridField::create('RelatedArticles', 'Related Articles')->setList($this->RelatedArticles())->setConfig($relatedArticlesConfig = new GridFieldConfig_RelationEditor())); } $this->extend('updateNewsPostCMSFields', $fields); return $fields; }
/** * @param int $id * @param FieldList $fields * @return Form */ public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); $filter = $this->jobQueue->getJobListFilter(null, 300); $list = DataList::create('QueuedJobDescriptor'); $list = $list->where($filter)->sort('Created', 'DESC'); $gridFieldConfig = GridFieldConfig_RecordEditor::create()->addComponent(new GridFieldQueuedJobExecute('execute'))->addComponent(new GridFieldQueuedJobExecute('pause', function ($record) { return $record->JobStatus == QueuedJob::STATUS_WAIT || $record->JobStatus == QueuedJob::STATUS_RUN; }))->addComponent(new GridFieldQueuedJobExecute('resume', function ($record) { return $record->JobStatus == QueuedJob::STATUS_PAUSED || $record->JobStatus == QueuedJob::STATUS_BROKEN; }))->removeComponentsByType('GridFieldAddNewButton'); // Set messages to HTML display format $formatting = array('Messages' => function ($val, $obj) { return "<div style='max-width: 300px; max-height: 200px; overflow: auto;'>{$obj->Messages}</div>"; }); $gridFieldConfig->getComponentByType('GridFieldDataColumns')->setFieldFormatting($formatting); // Replace gridfield $grid = new GridField('QueuedJobDescriptor', _t('QueuedJobs.JobsFieldTitle', 'Jobs'), $list, $gridFieldConfig); $grid->setForm($form); $form->Fields()->replaceField('QueuedJobDescriptor', $grid); if (Permission::check('ADMIN')) { $types = ClassInfo::subclassesFor('AbstractQueuedJob'); $types = array_combine($types, $types); unset($types['AbstractQueuedJob']); $jobType = DropdownField::create('JobType', _t('QueuedJobs.CREATE_JOB_TYPE', 'Create job of type'), $types); $jobType->setEmptyString('(select job to create)'); $form->Fields()->push($jobType); $jobParams = MultiValueTextField::create('JobParams', _t('QueuedJobs.JOB_TYPE_PARAMS', 'Constructor parameters for job creation')); $form->Fields()->push($jobParams); $form->Fields()->push($dt = DatetimeField::create('JobStart', _t('QueuedJobs.START_JOB_TIME', 'Start job at'))); $dt->getDateField()->setConfig('showcalendar', true); $actions = $form->Actions(); $actions->push(FormAction::create('createjob', _t('QueuedJobs.CREATE_NEW_JOB', 'Create new job'))); } $this->extend('updateEditForm', $form); return $form; }
/** * 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'); }
/** * {@inheritdoc} */ public function getCMSFields() { Requirements::css(BLOGGER_DIR . '/css/cms.css'); Requirements::javascript(BLOGGER_DIR . '/js/cms.js'); $self =& $this; $this->beforeUpdateCMSFields(function ($fields) use($self) { $uploadField = UploadField::create('FeaturedImage', _t('BlogPost.FeaturedImage', 'Featured Image')); $uploadField->getValidator()->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif')); /** * @var FieldList $fields */ $fields->insertAfter($uploadField, 'Content'); $summary = HtmlEditorField::create('Summary', false); $summary->setRows(5); $summary->setDescription(_t('BlogPost.SUMMARY_DESCRIPTION', 'If no summary is specified the first 30 words will be used.')); $summaryHolder = ToggleCompositeField::create('CustomSummary', _t('BlogPost.CUSTOMSUMMARY', 'Add A Custom Summary'), array($summary)); $summaryHolder->setHeadingLevel(4); $summaryHolder->addExtraClass('custom-summary'); $fields->insertAfter($summaryHolder, 'FeaturedImage'); $fields->push(HiddenField::create('MenuTitle')); $urlSegment = $fields->dataFieldByName('URLSegment'); $urlSegment->setURLPrefix($self->Parent()->RelativeLink()); $fields->removeFieldsFromTab('Root.Main', array('MenuTitle', 'URLSegment')); $authorField = ListboxField::create('Authors', _t('BlogPost.Authors', 'Authors'), $self->getCandidateAuthors()->map()->toArray())->setMultiple(true); $authorNames = TextField::create('AuthorNames', _t('BlogPost.AdditionalCredits', 'Additional Credits'), null, 1024)->setDescription(_t('BlogPost.AdditionalCredits_Description', 'If some authors of this post don\'t have CMS access, enter their name(s) here. You can separate multiple names with a comma.')); if (!$self->canEditAuthors()) { $authorField = $authorField->performDisabledTransformation(); $authorNames = $authorNames->performDisabledTransformation(); } $publishDate = DatetimeField::create('PublishDate', _t('BlogPost.PublishDate', 'Publish Date')); $publishDate->getDateField()->setConfig('showcalendar', true); if (!$self->PublishDate) { $publishDate->setDescription(_t('BlogPost.PublishDate_Description', 'Will be set to "now" if published without a value.')); } // Get categories and tags $parent = $self->Parent(); $categories = $parent instanceof Blog ? $parent->Categories() : BlogCategory::get(); $tags = $parent instanceof Blog ? $parent->Tags() : BlogTag::get(); $options = BlogAdminSidebar::create($publishDate, $urlSegment, TagField::create('Categories', _t('BlogPost.Categories', 'Categories'), $categories, $self->Categories())->setCanCreate($self->canCreateCategories())->setShouldLazyLoad(true), TagField::create('Tags', _t('BlogPost.Tags', 'Tags'), $tags, $self->Tags())->setCanCreate($self->canCreateTags())->setShouldLazyLoad(true), $authorField, $authorNames)->setTitle('Post Options'); $options->setName('blog-admin-sidebar'); $fields->insertBefore($options, 'Root'); }); $fields = parent::getCMSFields(); $fields->fieldByName('Root')->setTemplate('TabSet_holder'); return $fields; }
/** * Setup the basic CMS user fields * * @return mixed */ public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldsToTab("Root.Main", array(FieldGroup::create(DatetimeField::create("StartDate", "Starts"), DatetimeField::create("EndDate", "Ends"))->setTitle("Event dates"), ColorSwabField::create('EventColor', 'Event colour'), OptionsetField::create('TextColor', 'Text colour')->setSource(array('text-black' => 'Black', 'text-white' => 'White'))->setDescription('Depending on the background colour, you may want to use black or white text'), OptionsetField::create('IncludeOnCalendar', 'Include on calendar')->setDescription('Should this event be shown on the calendar')->setSource(array(true => "Yes", false => "No")), HtmlEditorField::create('ShortDescription', 'A short description')->setRows(1)->setDescription("Text shown when an event is first clicked on. Should be a quick description of the event. <strong>Limit 255 characters</strong>")), "Content"); return $fields; }
function getCMSFields() { //include JS to handling showing and hiding of bottom "action" tabs Requirements::javascript(DMS_DIR . '/javascript/DMSDocumentCMSFields.js'); Requirements::css(DMS_DIR . '/css/DMSDocumentCMSFields.css'); $fields = new FieldList(); //don't use the automatic scaffolding, it is slow and unnecessary here //get list of shortcode page relations $relationFinder = new ShortCodeRelationFinder(); $relationList = $relationFinder->getList($this->ID); $fieldsTop = $this->getFieldsForFile($relationList->count()); $fields->add($fieldsTop); $fields->add(new TextField('Title', 'Title')); $fields->add(new TextareaField('Description', 'Description')); //create upload field to replace document $uploadField = new DMSUploadField('ReplaceFile', 'Replace file'); $uploadField->setConfig('allowedMaxFileNumber', 1); $uploadField->setConfig('useDMSReplaceTemplate', 1); $uploadField->setRecord($this); $gridFieldConfig = GridFieldConfig::create()->addComponents(new GridFieldToolbarHeader(), new GridFieldSortableHeader(), new GridFieldDataColumns(), new GridFieldPaginator(30), new GridFieldDetailForm()); $gridFieldConfig->getComponentByType('GridFieldDataColumns')->setDisplayFields(array('Title' => 'Title', 'ClassName' => 'Page Type', 'ID' => 'Page ID'))->setFieldFormatting(array('Title' => sprintf('<a class=\\"cms-panel-link\\" href=\\"%s/$ID\\">$Title</a>', singleton('CMSPageEditController')->Link('show')))); $pagesGrid = GridField::create('Pages', _t('DMSDocument.RelatedPages', 'Related Pages'), $this->Pages(), $gridFieldConfig); $referencesGrid = GridField::create('References', _t('DMSDocument.RelatedReferences', 'Related References'), $relationList, $gridFieldConfig); $fields->add(new LiteralField('BottomTaskSelection', '<div id="Actions" class="field actions"><label class="left">Actions</label><ul>' . '<li class="ss-ui-button" data-panel="embargo">Embargo</li>' . '<li class="ss-ui-button" data-panel="expiry">Expiry</li>' . '<li class="ss-ui-button" data-panel="replace">Replace</li>' . '<li class="ss-ui-button" data-panel="find-usage">Find usage</li>' . '<li class="ss-ui-button" data-panel="find-references">Find references</li>' . '</ul></div>')); $embargoValue = 'None'; if ($this->EmbargoedIndefinitely) { $embargoValue = 'Indefinitely'; } elseif ($this->EmbargoedUntilPublished) { $embargoValue = 'Published'; } elseif (!empty($this->EmbargoedUntilDate)) { $embargoValue = 'Date'; } $embargo = new OptionsetField('Embargo', 'Embargo', array('None' => 'None', 'Published' => 'Hide document until page is published', 'Indefinitely' => 'Hide document indefinitely', 'Date' => 'Hide until set date'), $embargoValue); $embargoDatetime = DatetimeField::create('EmbargoedUntilDate', ''); $embargoDatetime->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy'); $expiryValue = 'None'; if (!empty($this->ExpireAtDate)) { $expiryValue = 'Date'; } $expiry = new OptionsetField('Expiry', 'Expiry', array('None' => 'None', 'Date' => 'Set document to expire on'), $expiryValue); $expiryDatetime = DatetimeField::create('ExpireAtDate', ''); $expiryDatetime->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy'); // This adds all the actions details into a group. // Embargo, History, etc to go in here // These are toggled on and off via the Actions Buttons above $fields->add(FieldGroup::create(FieldGroup::create($embargo, $embargoDatetime)->addExtraClass('embargo'), FieldGroup::create($expiry, $expiryDatetime)->addExtraClass('expiry'), $uploadField->addExtraClass('replace'), $pagesGrid->addExtraClass('find-usage'), $referencesGrid->addExtraClass('find-references'))->setName("ActionsPanel")->addExtraClass('dmsupload ss-uploadfield')); $this->extend('updateCMSFields', $fields); return $fields; }
/** * {@inheritdoc} */ public function getCMSFields() { Requirements::css(BLOGGER_DIR . '/css/cms.css'); Requirements::javascript(BLOGGER_DIR . '/js/cms.js'); $self =& $this; $this->beforeUpdateCMSFields(function ($fields) use($self) { $uploadField = UploadField::create('FeaturedImage', _t('BlogPost.FeaturedImage', 'Featured Image')); $uploadField->getValidator()->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif')); /** * @var FieldList $fields */ $fields->insertAfter($uploadField, 'Content'); $summary = HtmlEditorField::create('Summary', false); $summary->setRows(5); $summary->setDescription(_t('BlogPost.SUMMARY_DESCRIPTION', 'If no summary is specified the first 30 words will be used.')); $summaryHolder = ToggleCompositeField::create('CustomSummary', _t('BlogPost.CUSTOMSUMMARY', 'Add A Custom Summary'), array($summary)); $summaryHolder->setHeadingLevel(4); $summaryHolder->addExtraClass('custom-summary'); $fields->insertAfter($summaryHolder, 'FeaturedImage'); $fields->push(HiddenField::create('MenuTitle')); $urlSegment = $fields->dataFieldByName('URLSegment'); $urlSegment->setURLPrefix($self->Parent()->RelativeLink()); $fields->removeFieldsFromTab('Root.Main', array('MenuTitle', 'URLSegment')); $authorField = ListboxField::create('Authors', _t('BlogPost.Authors', 'Authors'), Member::get()->map()->toArray())->setMultiple(true); $authorNames = TextField::create('AuthorNames', _t('BlogPost.AdditionalCredits', 'Additional Credits'), null, 1024); $authorNames->setDescription('If some authors of this post don\'t have CMS access, enter their name(s) here. You can separate multiple names with a comma.'); if (!$self->canEditAuthors()) { $authorField = $authorField->performDisabledTransformation(); $authorNames = $authorNames->performDisabledTransformation(); } $publishDate = DatetimeField::create('PublishDate', _t('BlogPost.PublishDate', 'Publish Date')); $publishDate->getDateField()->setConfig('showcalendar', true); // Get categories and tags $parent = $self->Parent(); $categories = $parent instanceof Blog ? $parent->Categories()->exclude('CatID', 0) : BlogCategory::get()->exclude('CatID', 0); $list = array(); foreach ($categories->sort('CatID, Title ASC') as $cat) { $list[$cat->ID] = sprintf('%s/%s', $cat->Cat()->Title, $cat->Title); } $val = ''; if ($this->Categories()->count() > 0) { $val = $this->Categories()->first()->ID; } $options = BlogAdminSidebar::create($publishDate, $urlSegment, $catField = DropDownField::create('Category', 'Category', $list, $value = $val)->setEmptyString('(select one)'), $authorField, $authorNames)->setTitle('Post Options'); $fields->insertBefore($options, 'Root'); }); $fields = parent::getCMSFields(); $fields->fieldByName('Root')->setTemplate('TabSet_holder'); return $fields; }
public function scaffoldFormField($title = null, $params = null) { $field = DatetimeField::create($this->name, $title); // Show formatting hints for better usability $dateField = $field->getDateField(); $dateField->setDescription(sprintf(_t('FormField.Example', 'e.g. %s', 'Example format'), Convert::raw2xml(Zend_Date::now()->toString($dateField->getConfig('dateformat'))))); $dateField->setAttribute('placeholder', $dateField->getConfig('dateformat')); $timeField = $field->getTimeField(); $timeField->setDescription(sprintf(_t('FormField.Example', 'e.g. %s', 'Example format'), Convert::raw2xml(Zend_Date::now()->toString($timeField->getConfig('timeformat'))))); $timeField->setAttribute('placeholder', $timeField->getConfig('timeformat')); return $field; }
/** * Frontend fields * Simple list of the basic fields - how they're intended to be edited */ function getFrontEndFields($params = null) { //parent::getFrontEndFields($params); $timeFrameHeaderText = 'Time Frame'; if (!CalendarConfig::subpackage_setting('events', 'force_end')) { $timeFrameHeaderText = 'End Date / Time (optional)'; } $fields = FieldList::create(TextField::create('Title')->setAttribute('placeholder', 'Enter a title'), CheckboxField::create('AllDay', 'All-day'), $startDateTime = DatetimeField::create('StartDateTime', 'Start'), CheckboxField::create('NoEnd', 'Open End'), HeaderField::create('TimeFrameHeader', $timeFrameHeaderText, 5), SelectionGroup::create('TimeFrameType', array("Duration//Duration" => TimeField::create('Duration', '')->setRightTitle('up to 24h')->setAttribute('placeholder', 'Enter duration'), "DateTime//Date/Time" => $endDateTime = DateTimeField::create('EndDateTime', ''))), LiteralField::create('Clear', '<div class="clear"></div>')); //Date field settings $timeExpl = 'Time, e.g. 11:15am or 15:30'; //$startDateTime->setConfig('datavalueformat', 'YYYY-MM-dd HH:mm'); //$endDateTime->setConfig('datavalueformat', 'YYYY-MM-dd HH:mm'); $startDateTime->getDateField()->setConfig('showcalendar', 1)->setAttribute('placeholder', 'Enter date')->setAttribute('readonly', 'true'); //we only want input through the datepicker $startDateTime->getTimeField()->setConfig('timeformat', 'HH:mm')->setAttribute('placeholder', 'Enter time'); $endDateTime->getDateField()->setConfig('showcalendar', 1)->setAttribute('placeholder', 'Enter date')->setAttribute('readonly', 'true'); //we only want input through the datepicker $endDateTime->getTimeField()->setConfig('timeformat', 'HH:mm')->setAttribute('placeholder', 'Enter time'); //removing AllDay checkbox if allday events are disabled if (!CalendarConfig::subpackage_setting('events', 'enable_allday_events')) { $fields->removeByName('AllDay'); } //removing NoEnd checkbox if end dates are enforced if (CalendarConfig::subpackage_setting('events', 'force_end')) { $fields->removeByName('NoEnd'); } else { //we don't want the NoEnd checkbox when creating new events if (!$this->ID) { //$fields->removeByName('NoEnd'); } } $this->extend('updateFrontEndFields', $fields); return $fields; }
public function updateCMSFields(FieldList $fields) { $fields->addFieldsToTab('Main', NumericField::create('ID', 'Authorization ID')->setDisabled(true), ReadonlyField::create('AccessLink', 'Access Link', $this->AbsoluteLink()), EmailField::create('Email'), TextField::create('ClientKey', 'Client Key'), TextField::create('ClientInfo', 'Client Info'), TextField::create('AccessCode'), DatetimeField::create('EmailSent')); }
public function getCMSFields() { $this->beforeExtending('updateCMSFields', function ($fields) { $fields->removeByName('Automated'); $fields->removeByName('AuthorID'); $fields->removeByName('OrderID'); $fields->removeByName('Changes'); $fields->removeByName('FirstRead'); // Disables the default firing of sent to customer flag $fields->removeByName('SentToCustomer'); // Status Field $allSuggestedStatuses = (array) $this->config()->status_list; $statusesWithIcons = $otherStatuses = []; // Check if readonly $editable = $this->canEdit(); $simplified = !Permission::check('ADMIN') && $this->Automated && !in_array($this->Status, static::$DETAILED_STATUS); $dataFields = $fields->dataFields(); if ($editable) { $fields->removeByName('Status'); foreach ($allSuggestedStatuses as $status => $options) { if (is_array($options) && !empty($options['icon'])) { $statusesWithIcons[$status] = isset($options['title']) ? $options['icon'] . ' ' . $options['title'] : $options['icon'] . ' ' . $status; } else { if (is_array($options) && !empty($options['title'])) { $otherStatuses[$status] = $options['title']; } else { $otherStatuses[$status] = $options; } } } $otherStatuses = array_merge($otherStatuses, $this->get()->exclude('Status', array_merge(array_keys($allSuggestedStatuses)))->sort('Status', 'ASC')->map('Status', 'Status')->toArray()); $statuses = ['Common Statuses' => $statusesWithIcons]; if (!empty($otherStatuses)) { asort($otherStatuses); $statuses['Other Status'] = $otherStatuses; foreach ($statuses['Other Status'] as $status => $title) { $statuses['Other Status'][$status] = FormField::name_to_label($title); } } $fields->insertBefore($statusField = Select2Field::create('Status', 'Status', '', $statuses)->setMinimumSearchLength(0)->setEmptyString('You can select from suggested statuses, or create a new status')->setAttribute('data-format-searching', _t('OrderLog.SEARCHING-Status', 'Loading statuses...')), 'Title'); $statusField->requireSelection = false; if (!Permission::check('ADMIN')) { $statusField->disabledOptions = $this->config()->disallowed_multiple_statuses; } if ($this->exists() && !Permission::check('ADMIN') && ($this->Automated || $this->AuthorID != Member::currentUserID())) { $statusField->setAttribute('disabled', 'disabled'); } elseif ($editable) { $statusField->setDescription(_t('OrderLog.DESC-Status', 'Note: {updated} is a special status. If there are more than {limit} logs for an order, it will automatically delete statuses classed as {updated}, so use with caution.', ['updated' => implode(', ', (array) static::$GENERIC_STATUS), 'limit' => $this->config()->max_records_per_order])); } $statusField->allowHTML = true; $statusField->prefetch = true; } elseif (isset($dataFields['Status'])) { $fields->removeByName('Status'); $fields->insertBefore('Title', $dataFields['Status']); } if (isset($dataFields['Title']) && $editable) { $dataFields['Title']->setDescription(_t('OrderLog.DESC-Title', 'If not set, will automatically use the Status above')); } elseif (!$editable && $this->Title == $this->Status) { $fields->removeByName('Title'); } $lastField = 'Title'; if (!$editable && !$this->Note) { $fields->removeByName('Note'); } elseif ($editable && isset($dataFields['Note']) && $dataFields['Note'] instanceof TextareaField) { $dataFields['Note']->setRows(2); $lastField = 'Note'; } else { $lastField = 'Note'; } $fieldSet = []; foreach (['Public', 'Unread'] as $field) { if (isset($dataFields[$field])) { $fieldSet[$field] = $dataFields[$field]; $fields->removeByName($field); } } if (!empty($fieldSet)) { if (isset($fieldSet['Public'])) { $fieldSet['Public']->setTitle($fieldSet['Public']->Title() . ' (' . _t('OrderLog.DESC-Public', 'If checked, user can view this log on the front-end when checking the status of their orders') . ')'); } if ($this->FirstRead) { $fieldSet['FirstRead'] = DatetimeField::create('FirstRead'); } $fields->insertAfter(FieldGroup::create($fieldSet)->setTitle('Public Visibility')->setName('PublicFields')->addExtraClass('hero-unit stacked-items'), $lastField); $fieldSet = []; $lastField = 'PublicFields'; } foreach (['DispatchTicket', 'DispatchedBy', 'DispatchedOn'] as $field) { if (($simplified || !$editable) && !$this->{$field}) { $fields->removeByName($field); continue; } if (isset($dataFields[$field])) { $fieldSet[$field] = $dataFields[$field]; $fields->removeByName($field); if ($fieldSet[$field] instanceof DateField) { $fieldSet[$field]->setConfig('showcalendar', true); } if ($field == 'DispatchTicket') { $fieldSet[$field]->setTitle(_t('OrderLog.TRACKING_ID', 'Tracking ID')); } elseif ($field == 'DispatchedBy') { $fieldSet[$field]->setTitle(_t('OrderLog.VIA', 'via')); } elseif ($field == 'DispatchedOn') { $fieldSet[$field]->setTitle(_t('OrderLog.ON', 'on')); } } } if (!empty($fieldSet)) { $fields->removeByName('DispatchUri'); $fields->insertAfter($dispatched = CompositeField::create(FieldGroup::create($fieldSet)->setTitle('Dispatched')->setName('DispatchedDetails'))->setName('Dispatched')->addExtraClass('hero-unit'), $lastField); if ($editable || $this->DispatchUri) { $dispatched->push(TextField::create('DispatchUri', _t('OrderLog.DispatchUri', 'Tracking URL'))->setDescription(_t('OrderLog.DESC-DispatchUri', 'If none provided, will attempt to use the URL of the carrier'))); } $fieldSet = []; $lastField = 'Dispatched'; } elseif (($simplified || !$editable) && !$this->DispatchUri) { $fields->removeByName('DispatchUri'); } foreach (['PaymentCode', 'PaymentOK'] as $field) { if (($simplified || !$editable) && !$this->{$field}) { $fields->removeByName($field); continue; } if (isset($dataFields[$field])) { $fieldSet[$field] = $dataFields[$field]; $fields->removeByName($field); if ($field == 'PaymentCode') { $fieldSet[$field]->setTitle(_t('OrderLog.CODE', 'Code')); } } } if (!empty($fieldSet)) { $fields->insertAfter(FieldGroup::create($fieldSet)->setTitle('Payment')->setName('Payment')->addExtraClass('hero-unit'), $lastField); $fieldSet = []; } // Email Fields $fields->removeByName('Send_To'); $fields->removeByName('Send_Subject'); $fields->removeByName('Send_Body'); $fields->removeByName('Send_From'); $fields->removeByName('Send_HideOrder'); $fields->removeByName('Send'); $fields->removeByName('Sent'); if (($simplified || !$editable) && !$this->Sent) { return; } $fields->addFieldsToTab('Root', [Tab::create('Email', _t('OrderLog.EMAIL', 'Email'))]); $emailFields = ['Send_To' => TextField::create('Send_To', _t('OrderLog.Send_To', 'Send to')), 'Send_From' => TextField::create('Send_From', _t('OrderLog.Send_From', 'From')), 'Send_Subject' => TextField::create('Send_Subject', _t('OrderLog.Send_Subject', 'Subject'))->setAttribute('placeholder', _t('Order.RECEIPT_SUBJECT', 'Web Order - {reference}', ['reference' => $this->Order()->Reference])), 'Send_HideOrder' => CheckboxField::create('Send_HideOrder', _t('OrderLog.Send_HideOrder', 'Hide order from email')), 'Send_Body' => HTMLEditorField::create('Send_Body', _t('OrderLog.Send_Body', 'Body'))->setRows(2)->addExtraClass('limited limited-with-source limited-with-links')->setDescription(_t('OrderLog.DESC-Send_Body', 'If no body is provided, will use the log notes (as seen below)')), 'EmailPreview' => DataObjectPreviewField::create(get_class($this) . '_EmailPreview', new Preview($this), new DataObjectPreviewer(new Preview($this)))]; if ($this->Sent || !$editable) { $readOnlyEmailFields = []; unset($emailFields['Send_HideOrder']); foreach ($emailFields as $emailField) { if ($emailField->Name != 'Send_Body' && !$emailField instanceof DataObjectPreviewField) { $readOnlyEmailFields[] = $emailField->performReadonlyTransformation(); } elseif ($emailField instanceof DataObjectPreviewField) { $readOnlyEmailFields[] = $emailField; } } unset($emailFields); $fields->addFieldsToTab('Root.Email', array_merge([ReadonlyField::create('READONLY_Sent', _t('OrderLog.Sent', 'Sent'), $this->obj('Sent')->Nice())], $readOnlyEmailFields)); } else { $fields->addFieldsToTab('Root.Email', [$selectionGroup = TabbedSelectionGroup::create('Send', [SelectionGroup_Item::create(0, CompositeField::create(), _t('OrderLog.Send-NO', 'No')), SelectionGroup_Item::create(1, CompositeField::create($emailFields), _t('OrderLog.Send-YES', 'Yes'))])->addExtraClass('selectionGroup--minor')->showAsDropdown(true)->setTitle(_t('OrderLog.Send', 'Send as an email?'))]); } }); return parent::getCMSFields(); }
/** * Setup the basic CMS user fields * * @return mixed */ public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldsToTab("Root.Main", array(DatetimeField::create("StartDate", "Start date"), DatetimeField::create("EndDate", "End date"), DropdownField::create('IncludeOnCalendar', 'Include on calendar')->setDescription('Should this event be shown on the calendar')->setSource(array(true => "Yes", false => "No")), DropdownField::create("TextColor", "Text colour")->setDescription('Colors are created via Full Calendar Settings')->setSource(EventColor::get()->filter(array('FullCalendarID' => $this->ParentID))->where("Type = 'Both' OR Type = 'Text'")->sort(array("Title" => "ASC"))->map('HexCode', 'Title')), DropdownField::create("BackgroundColor", "Background colour")->setDescription('Colors are created via Full Calendar Settings')->setSource(EventColor::get()->filter(array('FullCalendarID' => $this->ParentID))->where("Type = 'Both' OR Type = 'Background'")->sort(array("Title" => "ASC"))->map('HexCode', 'Title')), HtmlEditorField::create('ShortDescription', 'A short description')->setDescription("Text shown when an event is first clicked on. Should be a quick description of the event. <strong>Limit 255 characters</strong>")->setRows(2)), "Content"); return $fields; }
function MyForm() { $form = Form::create($this, "MyForm", new FieldList(TextField::create("FirstName")->setTitle('First name')->setAttribute("placeholder", "Min. 3 znaky")->setAttribute("data-validation-required-message", "nezabudnite vpísať vaše meno")->setAttribute("required", true), TextField::create("Surname")->setTitle('Last name')->setMaxLength(50)->setAttribute("required", true), EmailField::create("Email")->setTitle("Email address")->setAttribute("required", true)->setAttribute("data-validation-email-message", "nezabudnite napísať existujúci majl")->setAttribute('type', 'email'), DropdownField::create("Cisla")->setTitle("Čísla")->setSource(array("jedna", "dva", "tri"))->addExtraClass("expand")->setEmptyString("musíš vybrať jedno numero"), CheckboxField::create("Donkey")->setTitle("Si donkey?"), CheckboxField::create("Donkey2")->setTitle("Si veľmi dlhý a vráskavý donkey s malými ušami?"), ReadonlyField::create("ReadOnly")->setTitle("Toto nezmeníte.... readonly")->setValue("nemeniteľné"), TextareaField::create("Text")->setTitle("Poznámka"), DateField::create("Dátum")->setConfig("showcalendar", true)->setConfig("jQueryUI.firstDay", 1)->setConfig("jQueryUI.dayNamesMin", array("Ne", "Po", "Ut", "St", "Št", "Pi", "So"))->setLocale('sk_SK'), DatetimeField::create('DátumČas', 'Dátum a čas')->setConfig('datavalueformat', 'yyyy-MM-dd HH:mm')->setConfig('showcalendar', 1), GroupedDropdownField::create("grouped")->setTitle("Zoskupený dropdown")->setSource(array("numbers" => array("1", "2", "3"), "letters" => array("a", "b", "c"))), OptionsetField::create("options")->setTitle("Čísla 2")->setSource(array("jedna", "dva", "tri")), HeaderField::create("header", "Toto je nadpis")->setTitle("overwritten nadpissss"), LiteralField::create("dataless", "html here")->setTitle("dataless")->setContent("<p>Or overwritten here</p><ul><li>item 1</li><li>item 2</li></ul>"), FileField::create("Nahraj")), new FieldList(FormAction::create("doMyForm")->setTitle("Odoslať")->addExtraClass("button radius"), ResetFormAction::create("resetMyForm", "Reset")->addExtraClass("button secondary small radius")), new RequiredFields("Email", "FirstName", "Text"))->setAttribute("novalidate", "novalidate")->addExtraClass("custom horizontal"); return $form; }