public function updateEditForm(\Form $form) { $record = $form->getRecord(); $fields = $form->Fields()->dataFields(); $separator = HasOneEditDataObjectExtension::separator; foreach ($fields as $name => $field) { // Replace shortcuts for separator $name = str_replace(array(':', '/'), $separator, $name); if (!strpos($name, $separator)) { // Also skip $name that starts with a separator continue; } $field->setName($name); if (!$record) { // No record to set value from continue; } if ($field->Value()) { // Skip fields that already have a value continue; } list($hasone, $key) = explode($separator, $name, 2); if ($record->has_one($hasone) || $record->belongs_to($hasone)) { $rel = $record->getComponent($hasone); // Copied from loadDataFrom() $exists = isset($rel->{$key}) || $rel->hasMethod($key) || $rel->hasMethod('hasField') && $rel->hasField($key); if ($exists) { $value = $rel->__get($key); $field->setValue($value); } } } }
function updateEditForm(Form $form) { /* @var $owner SecurityAdmin */ $owner = $this->owner; $memberSingl = singleton('Member'); $groupSingl = singleton('Group'); if ($memberSingl->hasExtension('SoftDeletable')) { $gridfield = $form->Fields()->dataFieldByName('Members'); $config = $gridfield->getConfig(); $config->removeComponentsByType('GridFieldDeleteAction'); if ($this->owner->config()->softdelete_from_list) { $config->addComponent(new GridFieldSoftDeleteAction()); } // No caution because soft :-) $form->Fields()->removeByName('MembersCautionText'); $bulkManager = $config->getComponentByType('GridFieldBulkManager'); if ($bulkManager && $this->owner->config()->softdelete_from_bulk) { $bulkManager->removeBulkAction('delete'); $bulkManager->addBulkAction('softDelete', 'delete (soft)', 'GridFieldBulkSoftDeleteEventHandler'); } } if ($groupSingl->hasExtension('Groups')) { $gridfield = $form->Fields()->dataFieldByName('Members'); $config = $gridfield->getConfig(); $config->removeComponentsByType('GridFieldDeleteAction'); if ($this->owner->config()->softdelete_from_list) { $config->addComponent(new GridFieldSoftDeleteAction()); } $bulkManager = $config->getComponentByType('GridFieldBulkManager'); if ($bulkManager && $this->owner->config()->softdelete_from_bulk) { $bulkManager->removeBulkAction('delete'); $bulkManager->addBulkAction('softDelete', 'delete (soft)', 'GridFieldBulkSoftDeleteEventHandler'); } } }
/** * @return Form */ function getEditForm($id = null, $fields = null) { $siteConfig = SiteConfig::current_site_config(); $fields = $siteConfig->getCMSFields(); $actions = $siteConfig->getCMSActions(); $form = new Form($this, 'EditForm', $fields, $actions); $form->addExtraClass('root-form'); $form->addExtraClass('cms-edit-form cms-panel-padded center'); // don't add data-pjax-fragment=CurrentForm, its added in the content template instead if ($form->Fields()->hasTabset()) { $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); } $form->setHTMLID('Form_EditForm'); $form->loadDataFrom($siteConfig); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); // Use <button> to allow full jQuery UI styling $actions = $actions->dataFields(); if ($actions) { foreach ($actions as $action) { $action->setUseButtonTag(true); } } $this->extend('updateEditForm', $form); return $form; }
/** * @return Form */ public function AddForm() { $fields = new FieldList(new LiteralField('SelectFieldType', '<p><strong>Please select a field type to add:</strong></p>'), $df = new DropdownField('ClassName', '', $this->getFieldTypes(), null, null)); $df->setHasEmptyDefault(true); if ($schemaID = (int) $this->request->param('ID')) { $fields->push(new HiddenField('SchemaID', '', $schemaID)); } $actions = new FieldList(FormAction::create('doAddField', 'Create')->setUseButtonTag(true)->addExtraClass('ss-ui-action-constructive')->setAttribute('data-icon', 'accept')); // Add a Cancel link which is a button-like link and link back to one level up. $curmbs = $this->Breadcrumbs(); if ($curmbs && $curmbs->count() >= 2) { $one_level_up = $curmbs->offsetGet($curmbs->count() - 2); $text = "\n\t\t\t<a class=\"crumb ss-ui-button ss-ui-action-destructive cms-panel-link ui-corner-all\" href=\"" . $one_level_up->Link . "\">\n\t\t\t\tCancel\n\t\t\t</a>"; $actions->push(new LiteralField('cancelbutton', $text)); } $form = new Form($this, 'AddForm', $fields, $actions); $toplevelController = $this->getToplevelController(); $form->setTemplate('LeftAndMain_EditForm'); $form->addExtraClass('cms-content cms-edit-form center ss-tabset stacked'); $form->setAttribute('data-pjax-fragment', 'CurrentForm Content'); if ($form->Fields()->hasTabset()) { $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); } //var_dump($this->popupController); die; $parents = $this->popupController->Breadcrumbs(false)->items; $form->Backlink = array_pop($parents)->Link; return $form; }
/** * @return Form */ public function getEditForm($id = null, $fields = null) { if (!$id) { $id = $this->currentPageID(); } $form = parent::getEditForm($id); $record = $this->getRecord($id); if ($record && !$record->canView()) { return Security::permissionFailure($this); } $newComments = Comment::get()->filter('Moderated', 0); $newGrid = new CommentsGridField('NewComments', _t('CommentsAdmin.NewComments', 'New'), $newComments, CommentsGridFieldConfig::create()); $approvedComments = Comment::get()->filter('Moderated', 1)->filter('IsSpam', 0); $approvedGrid = new CommentsGridField('ApprovedComments', _t('CommentsAdmin.ApprovedComments', 'Approved'), $approvedComments, CommentsGridFieldConfig::create()); $spamComments = Comment::get()->filter('Moderated', 1)->filter('IsSpam', 1); $spamGrid = new CommentsGridField('SpamComments', _t('CommentsAdmin.SpamComments', 'Spam'), $spamComments, CommentsGridFieldConfig::create()); $newCount = '(' . count($newComments) . ')'; $approvedCount = '(' . count($approvedComments) . ')'; $spamCount = '(' . count($spamComments) . ')'; $fields = new FieldList($root = new TabSet('Root', new Tab('NewComments', _t('CommentAdmin.NewComments', 'New') . ' ' . $newCount, $newGrid), new Tab('ApprovedComments', _t('CommentAdmin.ApprovedComments', 'Approved') . ' ' . $approvedCount, $approvedGrid), new Tab('SpamComments', _t('CommentAdmin.SpamComments', 'Spam') . ' ' . $spamCount, $spamGrid))); $root->setTemplate('CMSTabSet'); $actions = new FieldList(); $form = new Form($this, 'EditForm', $fields, $actions); $form->addExtraClass('cms-edit-form'); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); if ($form->Fields()->hasTabset()) { $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); $form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses()); } $this->extend('updateEditForm', $form); return $form; }
/** * Updates the form to make all of the fields read only with the exception of a few fields * @param {Form} $form Form to be adjusted */ public function updateEditForm(Form $form) { $record = $form->getRecord(); if ($record) { $kapostRefID = $record->KapostRefID; if (empty($kapostRefID)) { return; } //Make the fields all read only $oldFields = $form->Fields(); $form->setFields($oldFields->makeReadonly()); //Make the fields that should be non-readonly editable again foreach ($record->config()->non_readonly_fields as $fieldName) { $oldField = $oldFields->dataFieldByName($fieldName); if ($oldField) { $form->Fields()->replaceField($fieldName, $oldField); } } //Loop through the wysiwyg fields that need to be made safe and sanitize their html foreach ($record->config()->make_safe_wysiwyg_fields as $fieldName) { $field = $form->Fields()->dataFieldByName($fieldName); if ($field) { $field->setName($field->getName() . '_safe'); $field->setValue($this->sanitizeHTML($field->Value())); } } } }
/** * @return Form */ public function getEditForm($id = null, $fields = null) { if (!$id) { $id = $this->currentPageID(); } $form = parent::getEditForm($id); $record = $this->getRecord($id); if ($record && !$record->canView()) { return Security::permissionFailure($this); } $commentsConfig = GridFieldConfig::create()->addComponents(new GridFieldFilterHeader(), new GridFieldDataColumns(), new GridFieldSortableHeader(), new GridFieldPaginator(25), new GridFieldDeleteAction(), new GridFieldDetailForm(), new GridFieldExportButton(), new GridFieldEditButton(), new GridFieldDetailForm()); $needs = new GridField('Comments', _t('CommentsAdmin.NeedsModeration', 'Needs Moderation'), Comment::get()->where('Moderated = 0'), $commentsConfig); $moderated = new GridField('CommentsModerated', _t('CommentsAdmin.CommentsModerated'), Comment::get()->where('Moderated = 1'), $commentsConfig); $fields = new FieldList($root = new TabSet('Root', new Tab('NeedsModeration', _t('CommentAdmin.NeedsModeration', 'Needs Moderation'), $needs), new Tab('Comments', _t('CommentAdmin.Moderated', 'Moderated'), $moderated))); $root->setTemplate('CMSTabSet'); $actions = new FieldList(); $form = new Form($this, 'EditForm', $fields, $actions); $form->addExtraClass('cms-edit-form'); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); if ($form->Fields()->hasTabset()) { $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); $form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses()); } $this->extend('updateEditForm', $form); return $form; }
public function updateEditForm(Form $form) { $gf = clone $form->Fields()->First(); // naughty... we assume the GF is the sole field $config = $form->Fields()->First()->getConfig(); $config->removeComponentsByType('GridFieldPageCount'); $config->addComponent(new GridFieldPaginatorHeader($this->owner->stat('page_length'))); }
/** * Builds an item edit form. The arguments to getCMSFields() are the popupController and * popupFormName, however this is an experimental API and may change. * * @todo In the future, we will probably need to come up with a tigher object representing a partially * complete controller with gaps for extra functionality. This, for example, would be a better way * of letting Security/login put its log-in form inside a UI specified elsewhere. * * @return Form */ function ItemEditForm() { if (empty($this->record)) { $controller = Controller::curr(); $noActionURL = $controller->removeAction($_REQUEST['url']); $controller->getResponse()->removeHeader('Location'); //clear the existing redirect return $controller->redirect($noActionURL, 302); } $actions = new FieldList(); if ($this->record->ID !== 0) { $actions->push(FormAction::create('doSave', _t('GridFieldDetailForm.Save', 'Save'))->setUseButtonTag(true)->addExtraClass('ss-ui-action-constructive')->setAttribute('data-icon', 'accept')); $actions->push(FormAction::create('doDelete', _t('GridFieldDetailForm.Delete', 'Delete'))->addExtraClass('ss-ui-action-destructive')); } else { // adding new record //Change the Save label to 'Create' $actions->push(FormAction::create('doSave', _t('GridFieldDetailForm.Create', 'Create'))->setUseButtonTag(true)->addExtraClass('ss-ui-action-constructive')->setAttribute('data-icon', 'add')); // Add a Cancel link which is a button-like link and link back to one level up. $curmbs = $this->Breadcrumbs(); if ($curmbs && $curmbs->count() >= 2) { $one_level_up = $curmbs->offsetGet($curmbs->count() - 2); $cancelText = _t('GridFieldDetailForm.CancelBtn', 'Cancel'); $text = "\r\n\t\t\t\t<a class=\"crumb ss-ui-button ss-ui-action-destructive cms-panel-link ui-corner-all\" href=\"" . $one_level_up->Link . "\">\r\n\t\t\t\t\t{$cancelText}\r\n\t\t\t\t</a>"; $actions->push(new LiteralField('cancelbutton', $text)); } } $fk = $this->gridField->getList()->foreignKey; $this->record->{$fk} = $this->gridField->getList()->foreignID; $form = new Form($this, 'ItemEditForm', $this->record->getCMSFields(), $actions, $this->component->getValidator()); $form->loadDataFrom($this->record); // TODO Coupling with CMS $toplevelController = $this->getToplevelController(); if ($toplevelController && $toplevelController instanceof LeftAndMain) { // Always show with base template (full width, no other panels), // regardless of overloaded CMS controller templates. // TODO Allow customization, e.g. to display an edit form alongside a search form from the CMS controller $form->setTemplate('LeftAndMain_EditForm'); $form->addExtraClass('cms-content cms-edit-form center ss-tabset'); $form->setAttribute('data-pjax-fragment', 'CurrentForm Content'); if ($form->Fields()->hasTabset()) { $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); } if ($toplevelController->hasMethod('Backlink')) { $form->Backlink = $toplevelController->Backlink(); } elseif ($this->popupController->hasMethod('Breadcrumbs')) { $parents = $this->popupController->Breadcrumbs(false)->items; $form->Backlink = array_pop($parents)->Link; } else { $form->Backlink = $toplevelController->Link(); } } $cb = $this->component->getItemEditFormCallback(); if ($cb) { $cb($form, $this); } return $form; }
function updateEditForm(Form $form) { /* @var $owner SecurityAdmin */ $owner = $this->owner; /* @var $config Config_ForClass */ $classConfig = $owner->config(); // Import features $form->Fields()->removeByName('MemberImportFormIframe'); $form->Fields()->removeByName('GroupImportFormIframe'); if ($classConfig->allow_import && Permission::check('ADMIN')) { $field = new LiteralField('MemberImportFormIframe', sprintf('<iframe src="%s" id="MemberImportFormIframe" width="100%%" height="250px" frameBorder="0">' . '</iframe>', $this->owner->Link('excelmemberimport'))); $form->Fields()->addFieldToTab('Root.Users', $field); $field = new LiteralField('GroupImportFormIframe', sprintf('<iframe src="%s" id="GroupImportFormIframe" width="100%%" height="250px" frameBorder="0">' . '</iframe>', $this->owner->Link('excelgroupimport'))); $form->Fields()->addFieldToTab('Root.Groups', $field); } if (!$classConfig->allow_import) { // Cleanup headers $usersTab = $form->Fields()->findOrMakeTab('Root.Users'); foreach ($usersTab->Fields() as $f) { if ($f instanceof HeaderField) { $usersTab->Fields()->remove($f); } } $groupsTab = $form->Fields()->findOrMakeTab('Root.Groups'); foreach ($groupsTab->Fields() as $f) { if ($f instanceof HeaderField) { $groupsTab->Fields()->remove($f); } } } // Export features $members = $form->Fields()->dataFieldByName('Members'); $this->setupGridField($members, $classConfig); /* @var $groups GridField */ $groups = $form->Fields()->dataFieldByName('Groups'); $this->setupGridField($groups, $classConfig); /* @var $detailForm GridFieldDetailForm */ $detailForm = $groups->getConfig()->getComponentByType('GridFieldDetailForm'); $detailForm->setItemEditFormCallback(function ($form) use($classConfig) { $members = $form->Fields()->dataFieldByName('Members'); if (!$members) { return; } $config = $members->getConfig(); if ($classConfig->export_csv) { /* @var $export GridFieldExportButton */ $export = $config->getComponentByType('GridFieldExportButton'); $export->setExportColumns(ExcelImportExport::exportFieldsForClass($class)); } else { $config->removeComponentsByType('GridFieldExportButton'); } if ($classConfig->export_excel) { $config->addComponent(new ExcelGridFieldExportButton('buttons-after-left')); } }); }
/** * @return Form */ public function AddForm() { $record = $this->currentPage(); $moduleTypes = array(); foreach ($this->ModuleTypes() as $type) { $html = sprintf('<span class="page-icon class-%s"></span><strong class="title">%s</strong><span class="description">%s</span>', $type->getField('Title'), $type->getField('AddAction'), $type->getField('Description')); $moduleTypes[$type->getField('ClassName')] = $html; } // Ensure generic page type shows on top if (isset($moduleTypes['Page'])) { $pageTitle = $moduleTypes['Page']; $moduleTypes = array_merge(array('Page' => $pageTitle), $moduleTypes); } $numericLabelTmpl = '<span class="step-label"><span class="flyout">%d</span><span class="arrow"></span><span class="title">%s</span></span>'; $topTitle = _t('CMSPageAddController.ParentMode_top', 'Top level'); $childTitle = _t('CMSPageAddController.ParentMode_child', 'Under another page'); $fields = new FieldList($typeField = new OptionsetField("ModuleType", sprintf($numericLabelTmpl, 1, _t('ContentModuleMain.ChooseModuleType', 'Choose module type')), $moduleTypes)); $actions = new FieldList(FormAction::create("doAdd", _t('CMSMain.Create', "Create"))->addExtraClass('ss-ui-action-constructive')->setAttribute('data-icon', 'accept')->setUseButtonTag(true)); $this->extend('updateModuleOptions', $fields); $form = new Form($this, "AddForm", $fields, $actions); $form->addExtraClass('cms-add-form stacked cms-content center cms-edit-form ' . $this->BaseCSSClasses()); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); if ($parentID = $this->request->getVar('ParentID')) { $form->Fields()->dataFieldByName('ParentID')->setValue((int) $parentID); } return $form; }
/** * @param \Form $form */ public function updateItemEditForm(&$form) { $fields = $form->Fields(); if ($this->owner->record instanceof CMSPreviewable && !$fields->fieldByName('SilverStripeNavigator')) { $this->injectNavigatorAndPreview($form, $fields); } }
function updateImportForm(Form $form) { /* @var $owner ModelAdmin */ $owner = $this->owner; $class = $owner->modelClass; // Overwrite model imports $importerClasses = $owner->stat('model_importers'); if (is_null($importerClasses)) { $models = $owner->getManagedModels(); foreach ($models as $modelName => $options) { $importerClasses[$modelName] = 'ExcelBulkLoader'; } $owner->set_stat('model_importers', $importerClasses); } $modelSNG = singleton($class); $modelName = $modelSNG->i18n_singular_name(); $fields = $form->Fields(); $content = _t('ModelAdminExcelExtension.DownloadSample', '<div class="field"><a href="{link}">Download sample file</a></div>', array('link' => $owner->Link($class . '/downloadsample'))); $file = $fields->dataFieldByName('_CsvFile'); if ($file) { $file->setDescription(ExcelImportExport::getValidExtensionsText()); $file->getValidator()->setAllowedExtensions(ExcelImportExport::getValidExtensions()); } $fields->removeByName("SpecFor{$modelName}"); $fields->insertAfter('EmptyBeforeImport', new LiteralField("SampleFor{$modelName}", $content)); if (!$modelSNG->canDelete()) { $fields->removeByName('EmptyBeforeImport'); } $actions = $form->Actions(); $import = $actions->dataFieldByName('action_import'); if ($import) { $import->setTitle(_t('ModelAdminExcelExtension.ImportExcel', "Import from Excel")); } }
/** * Adds the 'build' link to the CMS edit form after the gridsheet. * * @param Form $form */ public function updateStreakAdminForm(Form $form) { $fields = $form->Fields(); if ($gridField = $fields->fieldByName('StreakDiscountType')) { $fields->insertAfter(new LiteralField('buildLink', '<p><a class="build-link" href="/dev/build?flush=1"><strong>Add fields to disountable objects</strong></strong></a></p>'), 'StreakDiscountType'); } }
function updateLinkForm(Form $form) { $linkType = null; $fieldList = null; $fields = $form->Fields(); //->fieldByName('Heading'); foreach ($fields as $field) { $linkType = $field->fieldByName('LinkType'); $fieldList = $field; if ($linkType) { break; } //break once we have the object } $source = $linkType->getSource(); $source['document'] = 'Download a document'; $linkType->setSource($source); $addExistingField = new DMSDocumentAddExistingField('AddExisting', 'Add Existing'); $addExistingField->setForm($form); $addExistingField->setUseFieldClass(false); $fieldList->insertAfter($addExistingField, 'Description'); // Requirements::javascript(SAPPHIRE_DIR . "/thirdparty/behaviour/behaviour.js"); // Requirements::javascript(SAPPHIRE_DIR . "/javascript/tiny_mce_improvements.js"); // // // create additional field, rebase to 'documents' directory // $documents = new TreeDropdownField('document', 'Document', 'File', 'ID', 'DocumentDropdownTitle', true); // $documents->setSearchFunction(array($this, 'documentSearchCallback')); // $baseFolder = Folder::find_or_make(Document::$directory); // $documents->setTreeBaseID($baseFolder->ID); //return $form; }
/** * @return Form * @todo what template is used here? AssetAdmin_UploadContent.ss doesn't seem to be used anymore */ public function getEditForm($id = null, $fields = null) { Requirements::javascript(FRAMEWORK_DIR . '/javascript/AssetUploadField.js'); Requirements::css(FRAMEWORK_DIR . '/css/AssetUploadField.css'); $folder = $this->currentPage(); $uploadField = UploadField::create('AssetUploadField', ''); $uploadField->setConfig('previewMaxWidth', 40); $uploadField->setConfig('previewMaxHeight', 30); $uploadField->addExtraClass('ss-assetuploadfield'); $uploadField->removeExtraClass('ss-uploadfield'); $uploadField->setTemplate('AssetUploadField'); if ($folder->exists() && $folder->getFilename()) { // The Upload class expects a folder relative *within* assets/ $path = preg_replace('/^' . ASSETS_DIR . '\\//', '', $folder->getFilename()); $uploadField->setFolderName($path); } else { $uploadField->setFolderName(ASSETS_DIR); } $exts = $uploadField->getValidator()->getAllowedExtensions(); asort($exts); $form = new Form($this, 'getEditForm', new FieldList($uploadField, new LiteralField('AllowedExtensions', sprintf('<p>%s: %s</p>', _t('AssetAdmin.ALLOWEDEXTS', 'Allowed extensions'), implode('<em>, </em>', $exts))), new HiddenField('ID')), new FieldList()); $form->addExtraClass('center cms-edit-form ' . $this->BaseCSSClasses()); // Don't use AssetAdmin_EditForm, as it assumes a different panel structure $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); $form->Fields()->push(new LiteralField('BackLink', sprintf('<a href="%s" class="backlink ss-ui-button cms-panel-link" data-icon="back">%s</a>', Controller::join_links(singleton('AssetAdmin')->Link('show'), $folder ? $folder->ID : 0), _t('AssetAdmin.BackToFolder', 'Back to folder')))); $form->loadDataFrom($folder); return $form; }
/** * @param Form $form * @return Form $form */ public function updateEditForm(Form $form) { $backupButton = new LiteralField('BackupButton', sprintf('<a class="ss-ui-button ss-ui-action ui-button-text-icon-primary" data-icon="arrow-circle-135-left" title="%s" href="%s">%s</a>', 'Performs an asset backup in ZIP format. Useful if you want all assets and have no FTP access', $this->owner->Link('backup'), 'Backup files')); if ($field = $this->fieldByExtraClass($form->Fields(), 'cms-actions-row')) { $field->push($backupButton); } return $form; }
/** * @param Form $form * @return bool */ public function updateEditForm(Form $form) { $fields = $form->Fields(); if ($gridField = $fields->fieldByName('Reports')) { $gridField->setList($this->UpdatedReportList()); } return false; }
/** * @param Form $form */ public function updateLinkForm($form) { Requirements::javascript(HTMLEDITORUPLOADFIELD_BASE . '/javascript/htmleditoruploadfield.js'); $form->Fields()->removeByName('file'); $fileField = UploadField::create('file', _t('HtmlEditorField.FILE', 'File'))->setAllowedMaxFileNumber(1)->setForm($form); $form->Fields()->insertAfter($fileField, 'email'); return $form; }
/** * Process and render search results. Uses the Lucene_results.ss template to * render the form. * * @access public * @param array $data The raw request data submitted by user * @param Form $form The form instance that was submitted * @param SS_HTTPRequest $request Request generated for this action * @return String The rendered form, for inclusion into the page template. */ public function ZendSearchLuceneResults($data, $form, $request) { $querystring = $form->Fields()->dataFieldByName('Search')->dataValue(); $query = Zend_Search_Lucene_Search_QueryParser::parse($querystring); $hits = ZendSearchLuceneWrapper::find($query); $data = $this->getDataArrayFromHits($hits, $request); return $this->owner->customise($data)->renderWith(array('Lucene_results', 'Page')); }
function Form() { $isRunning = Session::get('db'); if ($isRunning) { $actions = new FieldSet(new FormAction('endsession', 'End Session')); } else { $actions = new FieldSet(new FormAction('startsession', 'Start Session')); } $form = new Form($this, 'Form', new FieldSet(new HeaderField('Header1', $isRunning ? 'Session is already running' : 'Start new regress session'), new LiteralField('Lit1', '<p>Use this form to set configuration prior to starting a <a href="http://regress.silverstripe.com">regress.silverstripe.com</a> test session (manual testing).</p>'), $dbField = new DropdownField('db', 'Database', array('mysql' => 'MySQL', 'postgresql' => 'Postgres', 'mssql' => 'MSSQL', 'sqlite3' => 'SQLite3'), Session::get('db')), $chkField = new CheckboxField('enabletranslatable', 'Translatable?', Session::get('enabletranslatable'))), $actions); $dbField->setHasEmptyDefault(false); if ($isRunning) { foreach ($form->Fields() as $field) { $form->Fields()->replaceField($field->Name(), $field->performReadonlyTransformation()); } } return $form; }
/** * * @param Form $form * @return void */ public function updateLinkForm(Form $form) { $fields = $form->Fields(); $fileField = $fields->dataFieldByName('file'); if (!Permission::check(array("ADMIN", "SECURED_FILES_VIEW_ALL"))) { $fileField->setFilterFunction(create_function('$node', "return \$node->Secured == 0;")); } }
public function getEditForm($id = null, $fields = null) { // TODO Duplicate record fetching (see parent implementation) if (!$id) { $id = $this->currentPageID(); } $form = parent::getEditForm($id); // TODO Duplicate record fetching (see parent implementation) $record = $this->getRecord($id); if ($record && !$record->canView()) { return Security::permissionFailure($this); } $memberList = GridField::create('Members', false, Member::get(), $memberListConfig = GridFieldConfig_RecordEditor::create()->addComponent(new GridFieldExportButton()))->addExtraClass("members_grid"); $memberListConfig->getComponentByType('GridFieldDetailForm')->setValidator(new Member_Validator()); $groupList = GridField::create('Groups', false, Group::get(), GridFieldConfig_RecordEditor::create()); $columns = $groupList->getConfig()->getComponentByType('GridFieldDataColumns'); $columns->setDisplayFields(array('Breadcrumbs' => singleton('Group')->fieldLabel('Title'))); $fields = new FieldList($root = new TabSet('Root', $usersTab = new Tab('Users', _t('SecurityAdmin.Users', 'Users'), $memberList, new LiteralField('MembersCautionText', sprintf('<p class="caution-remove"><strong>%s</strong></p>', _t('SecurityAdmin.MemberListCaution', 'Caution: Removing members from this list will remove them from all groups and the' . ' database'))), new HeaderField(_t('SecurityAdmin.IMPORTUSERS', 'Import users'), 3), new LiteralField('MemberImportFormIframe', sprintf('<iframe src="%s" id="MemberImportFormIframe" width="100%%" height="250px" border="0">' . '</iframe>', $this->Link('memberimport')))), $groupsTab = new Tab('Groups', singleton('Group')->i18n_plural_name(), $groupList, new HeaderField(_t('SecurityAdmin.IMPORTGROUPS', 'Import groups'), 3), new LiteralField('GroupImportFormIframe', sprintf('<iframe src="%s" id="GroupImportFormIframe" width="100%%" height="250px" border="0">' . '</iframe>', $this->Link('groupimport'))))), new HiddenField('ID', false, 0)); $root->setTemplate('CMSTabSet'); // Add roles editing interface if (Permission::check('APPLY_ROLES')) { $rolesField = GridField::create('Roles', false, PermissionRole::get(), GridFieldConfig_RecordEditor::create()); $rolesTab = $fields->findOrMakeTab('Root.Roles', _t('SecurityAdmin.TABROLES', 'Roles')); $rolesTab->push($rolesField); } $actionParam = $this->request->param('Action'); if ($actionParam == 'groups') { $groupsTab->addExtraClass('ui-state-selected'); } elseif ($actionParam == 'users') { $usersTab->addExtraClass('ui-state-selected'); } elseif ($actionParam == 'roles') { $rolesTab->addExtraClass('ui-state-selected'); } $actions = new FieldList(); $form = new Form($this, 'EditForm', $fields, $actions); $form->addExtraClass('cms-edit-form'); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); if ($form->Fields()->hasTabset()) { $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); } $form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses()); $form->setAttribute('data-pjax-fragment', 'CurrentForm'); $this->extend('updateEditForm', $form); return $form; }
/** * Adds a dropdown field to the search form to filter searches by Site **/ public function updateSearchForm(Form $form) { $cms = $this->owner; $req = $cms->getRequest(); $sites = Site::get()->sort(array('IsDefault' => 'DESC', 'Title' => 'ASC')); $site = new DropdownField('q[SiteID]', _t('Multisites.SITE', 'Site'), $sites->map(), isset($req['q']['SiteID']) ? $req['q']['SiteID'] : null); $site->setEmptyString(_t('Multisites.ALLSITES', 'All sites')); $form->Fields()->insertAfter($site, 'q[Term]'); }
public function updateLinkForm(Form $form) { Requirements::javascript(ExternalContentAdmin::$directory . "/javascript/external_tiny_mce_improvements.js"); $fields = $form->Fields(); $fields->replaceField('LinkType', $options = new OptionsetField('LinkType', _t('HtmlEditorField.LINKTO', 'Link to'), array('internal' => _t('HtmlEditorField.LINKINTERNAL', 'Page on the site'), 'external' => _t('HtmlEditorField.LINKEXTERNAL', 'Another website'), 'anchor' => _t('HtmlEditorField.LINKANCHOR', 'Anchor on this page'), 'email' => _t('HtmlEditorField.LINKEMAIL', 'Email address'), 'file' => _t('HtmlEditorField.LINKFILE', 'Download a file'), 'externalcontent' => _t('HtmlEditorField.LINKEXTERNALCONTENT', 'External Content')))); $fields->insertAfter($tree = new ExternalTreeDropdownField('externalcontent', _t('ExternalHtmlEditorField.EXTERNAL_CONTENT', 'External Content'), 'ExternalContentSource', 'Link()'), 'file'); // Explicitly set the form on new fields so the hierarchy can be traversed. $tree->setForm($form); $options->setForm($form); }
/** * Adjusts the media form to include the controls and ui for Vidyard * @param {Form} $form Form to adjust */ public function updateMediaForm(Form $form) { $apiKey = Vidyard::config()->api_key; if (!empty($apiKey)) { $numericLabelTmpl = '<span class="step-label"><span class="flyout">%d</span><span class="arrow"></span><strong class="title">%s</strong></span>'; $tabs = $form->Fields()->offsetGet(1)->fieldByName('MediaFormInsertMediaTabs'); $tabs->push(Tab::create('FromVidyard', _t('VidyardInsertMedia.FROM_VIDYARD', '_From Vidyard'), CompositeField::create(new LiteralField('headerVidyard', '<h4>' . sprintf($numericLabelTmpl, '1', _t('VidyardInsertMedia.ADD_VIDEO', '_Add Video')) . '</h4>'), TextField::create('VideoURL', 'http://')->addExtraClass('remoteurl')->setDescription(_t('VidyardInsertMedia.ADD_VIDEO_DESC', '_The url you should use in this field is the sharing page, you can also use some of the settings pages for the video in Vidyard')), new LiteralField('addVidyard', '<button class="action ui-action-constructive ui-button field add-url add-vidyard" data-icon="addMedia">' . _t('VidyardInsertMedia.ADD_VIDEO', '_Add Video') . '</button>'))->addExtraClass('content ss-uploadfield'))->addExtraClass('htmleditorfield-from-web')->setTabSet($tabs)->setForm($form)); Requirements::javascript(VIDYARD_BASE . '/javascript/VidyardInsertMedia.js'); } }
public function alterCommentForm(Form $form) { $form->Fields()->bootstrapify(); $form->Actions()->bootstrapify(); $form->setTemplate('FoundationCommentingControllerForm', 'FoundationForm'); if ($form->hasExtension('FormSpamProtectionExtension')) { $form->enableSpamProtection(); } Requirements::css(FOUNDATIONFORMS_DIR . '/css/foundationforms.css'); }
public function updateLinkForm(Form $form) { Requirements::javascript(EDITOR_EXTENSIONS_DIR . "/javascript/linkform.js"); $fields = $form->Fields(); $linkType = $fields->dataFieldByName('LinkType'); $types = $linkType->getSource(); $types['tel'] = 'A Telephone Number'; $linkType->setSource($types); $fields->insertAfter(new TextField('tel', _t('EditorExtensions.TELNUMBER', 'Phone Number')), 'file'); return $form; }
/** * Helper function, which adds the given $cssClass to all * $form fields specified by its requiredfields * * @param Form $form * @param string $cssClass */ public static function add_required_css(Form $form, $cssClass = "required") { if ($requiredFields = $form->getValidator()->getRequired()) { foreach ($requiredFields as $f) { // $form->dataFieldByName($f)->addExtraClass($cssClass); if ($field = $form->Fields()->fieldByName($f)) { $field->addExtraClass($cssClass); } } } }
function getEditForm($id = null) { if (!$id) { $id = $this->currentPageID(); } if ($id && $id != 'root') { $record = DataObject::get_by_id($this->stat('tree_class'), $id); if (!$record) { return false; } } if ($id && is_numeric($id)) { $fields = $record->getCMSFields(); if ($fields->hasTabSet()) { // Add import capabilities. Limit to admin since the import logic can affect assigned permissions if (Permission::check('ADMIN')) { $fields->findOrMakeTab('Root.Import', _t('Group.IMPORTTABTITLE', 'Import')); $fields->addFieldToTab('Root.Import', new LiteralField('MemberImportFormIframe', sprintf('<iframe src="%s" id="MemberImportFormIframe" width="100%%" height="400px" border="0"></iframe>', $this->Link('memberimport')))); } if (Permission::check('APPLY_ROLES')) { $fields->addFieldToTab('Root.Roles', new LiteralField('RolesAddEditLink', sprintf('<p class="add-role"><a href="%s">%s</a></p>', $this->Link('show/root'), _t('Group.RolesAddEditLink', 'Add/edit roles')))); } } $actions = new FieldSet(new FormAction('addmember', _t('SecurityAdmin.ADDMEMBER', 'Add Member')), new FormAction('save', _t('SecurityAdmin.SAVE', 'Save'))); $form = new Form($this, "EditForm", $fields, $actions); $form->loadDataFrom($record); if (!$record->canEdit()) { $readonlyFields = $form->Fields()->makeReadonly(); $form->setFields($readonlyFields); } // Filter permissions $permissionField = $form->Fields()->dataFieldByName('Permissions'); if ($permissionField) { $permissionField->setHiddenPermissions(self::$hidden_permissions); } $this->extend('updateEditForm', $form); } else { $form = $this->RootForm(); } return $form; }