2012-07-18 02:21:35 +02:00
|
|
|
<?php
|
2016-09-22 16:38:29 +02:00
|
|
|
|
2017-05-24 12:32:05 +02:00
|
|
|
namespace SilverStripe\Subsites\Forms;
|
|
|
|
|
|
|
|
|
2016-09-22 16:38:29 +02:00
|
|
|
use SilverStripe\Forms\GridField\GridFieldDetailForm;
|
|
|
|
use SilverStripe\Forms\DropdownField;
|
|
|
|
use SilverStripe\Forms\GridField\GridFieldDetailForm_ItemRequest;
|
2017-05-24 13:36:04 +02:00
|
|
|
|
|
|
|
use SilverStripe\Subsites\Forms\GridFieldSubsiteDetailForm_ItemRequest;
|
|
|
|
use SilverStripe\Subsites\Model\Subsite;
|
|
|
|
|
2017-05-24 12:32:05 +02:00
|
|
|
|
2012-07-18 02:21:35 +02:00
|
|
|
class GridFieldSubsiteDetailForm extends GridFieldDetailForm {
|
2017-05-24 13:36:04 +02:00
|
|
|
protected $itemRequestClass=GridFieldSubsiteDetailForm_ItemRequest::class;
|
2012-07-18 02:21:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
class GridFieldSubsiteDetailForm_ItemRequest extends GridFieldDetailForm_ItemRequest {
|
2013-07-10 11:42:59 +02:00
|
|
|
|
|
|
|
private static $allowed_actions = array(
|
|
|
|
'ItemEditForm',
|
|
|
|
);
|
|
|
|
|
2012-07-18 02:21:35 +02:00
|
|
|
/**
|
|
|
|
* Builds an item edit form. The arguments to getCMSFields() are the popupController and
|
|
|
|
* popupFormName, however this is an experimental API and may change.
|
|
|
|
*
|
|
|
|
* @todo In the future, we will probably need to come up with a tigher object representing a partially
|
|
|
|
* complete controller with gaps for extra functionality. This, for example, would be a better way
|
|
|
|
* of letting Security/login put its log-in form inside a UI specified elsewhere.
|
|
|
|
*
|
|
|
|
* @return Form
|
|
|
|
* @see GridFieldDetailForm_ItemRequest::ItemEditForm()
|
|
|
|
*/
|
|
|
|
function ItemEditForm() {
|
|
|
|
$form=parent::ItemEditForm();
|
|
|
|
|
|
|
|
if($this->record->ID == 0) {
|
2013-01-03 17:38:51 +01:00
|
|
|
$templates = Subsite::get()->sort('Title');
|
2012-07-18 02:21:35 +02:00
|
|
|
$templateArray = array();
|
|
|
|
if($templates) {
|
|
|
|
$templateArray = $templates->map('ID', 'Title');
|
|
|
|
}
|
|
|
|
|
2013-04-30 05:08:13 +02:00
|
|
|
$templateDropdown = new DropdownField('TemplateID', _t('Subsite.COPYSTRUCTURE', 'Copy structure from:'), $templateArray);
|
|
|
|
$templateDropdown->setEmptyString('(' . _t('Subsite.NOTEMPLATE', 'No template') . ')');
|
|
|
|
$form->Fields()->addFieldToTab('Root.Configuration', $templateDropdown);
|
2012-07-18 02:21:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return $form;
|
|
|
|
}
|
|
|
|
|
|
|
|
function doSave($data, $form) {
|
|
|
|
$new_record = $this->record->ID == 0;
|
|
|
|
if($new_record && isset($data['TemplateID']) && !empty($data['TemplateID'])) {
|
2013-01-03 17:38:51 +01:00
|
|
|
$template = Subsite::get()->byID(intval($data['TemplateID']));
|
2012-07-18 02:21:35 +02:00
|
|
|
if($template) {
|
2013-01-03 17:38:51 +01:00
|
|
|
$this->record = $template->duplicate();
|
2012-07-18 02:21:35 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-07-10 16:14:49 +02:00
|
|
|
return parent::doSave($data, $form);
|
2012-07-18 02:21:35 +02:00
|
|
|
}
|
2013-04-30 05:08:13 +02:00
|
|
|
}
|