public function getDataTransferForm(\SS_HTTPRequest $request = null)
{
// Performs canView permission check by limiting visible projects
$envs = $this->getCurrentProject()->DNEnvironmentList()->filterByCallback(function ($item) {
return $item->canBackup();
});
if (!$envs) {
return $this->environment404Response();
}
$items = [];
$disabledEnvironments = [];
foreach ($envs as $env) {
$items[$env->ID] = $env->Title;
if ($env->CurrentBuild() === false) {
$items[$env->ID] = sprintf("%s - requires initial deployment", $env->Title);
$disabledEnvironments[] = $env->ID;
}
}
$envsField = DropdownField::create('EnvironmentID', 'Environment', $items)->setEmptyString('Select an environment');
$envsField->setDisabledItems($disabledEnvironments);
$formAction = FormAction::create('doDataTransfer', 'Create')->addExtraClass('btn');
if (count($disabledEnvironments) === $envs->count()) {
$formAction->setDisabled(true);
}
$form = Form::create($this, 'DataTransferForm', FieldList::create(HiddenField::create('Direction', null, 'get'), $envsField, DropdownField::create('Mode', 'Transfer', DNDataArchive::get_mode_map())), FieldList::create($formAction));
$form->setFormAction($this->getRequest()->getURL() . '/DataTransferForm');
return $form;
}