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();
 }