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); } } } }
/** * Update a workflow based on user input. * * @todo refactor with WorkflowInstance::updateWorkflow * * @param array $data * @param Form $form * @param SS_HTTPRequest $request * @return String */ public function updateworkflow($data, Form $form, $request) { $svc = singleton('WorkflowService'); $p = $form->getRecord(); $workflow = $svc->getWorkflowFor($p); $action = $workflow->CurrentAction(); if (!$p || !$p->canEditWorkflow()) { return; } $allowedFields = $workflow->getWorkflowFields()->saveableFields(); unset($allowedFields['TransitionID']); $allowed = array_keys($allowedFields); if (count($allowed)) { $form->saveInto($action, $allowed); $action->write(); } if (isset($data['TransitionID']) && $data['TransitionID']) { $svc->executeTransition($p, $data['TransitionID']); } else { // otherwise, just try to execute the current workflow to see if it // can now proceed based on user input $workflow->execute(); } return $this->owner->getResponseNegotiator()->respond($this->owner->getRequest()); }
/** * 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())); } } } }
public function updateEditForm(Form $form) { if (($record = $form->getRecord()) instanceof SiteTree) { if (!$record->numChildren()) { return; } } Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js'); Requirements::javascript('siteexporter/javascript/SiteExportAdmin.js'); $action = new FormAction('doExport'); $action->useButtonTag = true; $action->setButtonContent('Export'); $exports = new TableListField('SiteExports', 'SiteExport', null, sprintf('"ParentClass" = \'%s\' AND "ParentID" = %d', ClassInfo::baseDataClass($form->getRecord()->class), $form->getRecord()->ID)); $exports->setFieldFormatting(array('Archive.Name' => '<a href=\\"{$Archive()->Link()}\\">{$Archive()->Name}</a>')); $exports->setForm($form); $fields = array(new HeaderField('ExportSiteHeader', 'Export Site As Zip'), new OptionSetField('ExportSiteBaseUrlType', 'Base URL type', array('fixed' => 'Set the site base URL to a fixed value', 'rewrite' => 'Attempt to rewrite URLs to be relative'), 'fixed'), new TextField('ExportSiteBaseUrl', 'Base URL', Director::absoluteBaseURL()), new DropdownField('ExportSiteTheme', 'Theme', SiteConfig::current_site_config()->getAvailableThemes(), null, null, '(Use default theme)'), $action, new HeaderField('SiteExportsHeader', 'Site Exports'), $exports); $form->Fields()->addFieldsToTab('Root.Export', $fields); if (class_exists('QueuedJobService')) { $form->Fields()->addFieldToTab('Root.Export', new LiteralField('ExporSiteQueuedNote', '<p>The site export' . ' will not be performed immediately, but will be ' . ' processed in the background as a queued job. You can' . ' enter an email address below to send a notification' . ' email to when the job is complete:</p>'), 'action_doExport'); $email = new EmailField('ExportSiteCompleteEmail', 'Notification email address'); $email->setForm($form); $form->Fields()->addFieldToTab('Root.Export', $email, 'action_doExport'); } }
/** * Updates the edit form object from AssetAdmin to provide a workaround for a bug in Secure Assets. * * @param Form $form */ public function updateEditForm($form) { if ($this->isAssetAdmin() && $this->hasSecureAssets()) { if (($record = $form->getRecord()) && $record instanceof Folder) { if ($field = $form->Fields()->dataFieldByName('ViewerGroups')) { // Create Form Object: $dummy = Form::create($this->owner, 'EditForm', FieldList::create(), FieldList::create()); // Populate Form Data: $dummy->loadDataFrom($record); // Define Form Action (allows ViewerGroups field to work in asset EditForm): $dummy->setFormAction(sprintf('%s/field/File/item/%d/ItemEditForm', $form->FormAction(), $record->ID)); // Update Field Object: $field->setForm($dummy); } } } }
/** * 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 if (is_array($record->config()->non_readonly_settings_fields)) { foreach ($record->config()->non_readonly_settings_fields as $fieldName) { $oldField = $oldFields->dataFieldByName($fieldName); if ($oldField) { $form->Fields()->replaceField($fieldName, $oldField); } } } } }
public function updatetemplateversion($data, Form $form, $request) { $record = $form->getRecord(); if ($record) { $record->updateFromTemplate(); } return $form->loadDataFrom($form->getRecord())->forAjaxTemplate(); }
public function doSaveSettings($data, Form $form) { $template = $form->getRecord(); $form->saveInto($template); $template->write(); $form->sessionMessage(_t('ReportPage.SETTINGS_SAVED', 'The report settings have been saved'), 'good'); return $this->redirectBack(); }