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;
 }
Example #5
0
 /**
  * @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')));
 }
Example #9
0
 /**
  * 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"));
     }
 }
Example #14
0
 /**
  * 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;"));
     }
 }
Example #23
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;
 }