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