public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); // Show items submitted into a workflow for current user to action $fieldName = 'PendingObjects'; $pending = $this->userObjects(Member::currentUser(), $fieldName); if (self::$fieldOverrides) { $displayFields = self::$fieldOverrides; } else { $displayFields = array('Title' => _t('AdvancedWorkflowAdmin.Title', 'Title'), 'LastEdited' => _t('AdvancedWorkflowAdmin.LastEdited', 'Changed'), 'WorkflowTitle' => _t('AdvancedWorkflowAdmin.WorkflowTitle', 'Effective workflow'), 'WorkflowStatus' => _t('AdvancedWorkflowAdmin.WorkflowStatus', 'Current action')); } // Pending/Submitted items GridField Config $config = new GridFieldConfig_Base(); $config->addComponent(new GridFieldEditButton()); $config->addComponent(new GridFieldDetailForm()); $config->getComponentByType('GridFieldPaginator')->setItemsPerPage(5); $columns = $config->getComponentByType('GridFieldDataColumns'); $columns->setFieldFormatting($this->setFieldFormatting($config)); if ($pending->count()) { $formFieldTop = GridField::create($fieldName, $this->isAdminUser(Member::currentUser()) ? _t('AdvancedWorkflowAdmin.GridFieldTitleAssignedAll', 'All pending items') : _t('AdvancedWorkflowAdmin.GridFieldTitleAssignedYour', 'Your pending items'), $pending, $config); $dataColumns = $formFieldTop->getConfig()->getComponentByType('GridFieldDataColumns'); $dataColumns->setDisplayFields($displayFields); $formFieldTop->setForm($form); $form->Fields()->insertBefore($formFieldTop, 'WorkflowDefinition'); } // Show items submitted into a workflow by current user $fieldName = 'SubmittedObjects'; $submitted = $this->userObjects(Member::currentUser(), $fieldName); if ($submitted->count()) { $formFieldBottom = GridField::create($fieldName, $this->isAdminUser(Member::currentUser()) ? _t('AdvancedWorkflowAdmin.GridFieldTitleSubmittedAll', 'All submitted items') : _t('AdvancedWorkflowAdmin.GridFieldTitleSubmittedYour', 'Your submitted items'), $submitted, $config); $dataColumns = $formFieldBottom->getConfig()->getComponentByType('GridFieldDataColumns'); $dataColumns->setDisplayFields($displayFields); $formFieldBottom->setForm($form); $formFieldBottom->getConfig()->removeComponentsByType('GridFieldEditButton'); $formFieldBottom->getConfig()->addComponent(new GridFieldWorkflowRestrictedEditButton()); $form->Fields()->insertBefore($formFieldBottom, 'WorkflowDefinition'); } $grid = $form->Fields()->dataFieldByName('WorkflowDefinition'); if ($grid) { $grid->getConfig()->getComponentByType('GridFieldDetailForm')->setItemEditFormCallback(function ($form) { $record = $form->getRecord(); if ($record) { $record->updateAdminActions($form->Actions()); } }); $grid->getConfig()->getComponentByType('GridFieldDetailForm')->setItemRequestClass('WorkflowDefinitionItemRequestClass'); $grid->getConfig()->addComponent(new GridFieldExportAction()); $grid->getConfig()->removeComponentsByType('GridFieldExportButton'); } return $form; }
public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); /** * In the instance that the editing results in the UserAgreement switching between GridField's, we need to * load all agreements into both GridFields to permit the Save action to succeed. * (ie. the archive boolean is toggled) * Use the EditForm action to detect when editing vs viewing */ $action = $this->request->param('Action'); if ($action && $action == 'EditForm') { $archived = UserAgreement::get(); $liveAgreements = $archived; } else { $archived = UserAgreement::get()->filter('Archived', true); $liveAgreements = UserAgreement::get()->filter('Archived', false); } // Show Archived agreements separate to current agreements $fieldName = 'ArchivedAgreements'; // Archived Agreements GridField Config $config = new GridFieldConfig_Base(); $config->addComponent(new GridFieldEditButton()); $config->addComponent(new GridFieldDetailForm()); $config->addComponent(new GridFieldDeleteAction()); $config->addComponent(new GridFieldExportButton()); $config->addComponent(new GridFieldPrintButton()); $config->getComponentByType('GridFieldPaginator')->setItemsPerPage(5); if ($archived->count()) { $formFieldArchive = GridField::create($fieldName, _t('UserAgreements.ArchivedAgreements', 'Archived Agreements'), $archived, $config); $formFieldArchive->setForm($form); $form->Fields()->insertAfter($formFieldArchive, 'UserAgreement'); } // Omit Archived Agreements from main gridfield $grid = $form->Fields()->dataFieldByName('UserAgreement'); if ($grid) { $grid->setList($liveAgreements); $grid->setTitle(_t('UserAgreements.CurrentAgreements', 'Current Agreements')); } return $form; }