2012-03-25 18:35:01 +02:00
|
|
|
<?php
|
2016-09-22 16:38:29 +02:00
|
|
|
|
2017-05-24 12:32:05 +02:00
|
|
|
namespace SilverStripe\Subsites\Forms;
|
|
|
|
|
2017-08-28 11:52:32 +02:00
|
|
|
use SilverStripe\Control\Controller;
|
2016-09-22 16:38:29 +02:00
|
|
|
use SilverStripe\Control\HTTPRequest;
|
|
|
|
use SilverStripe\Control\Session;
|
|
|
|
use SilverStripe\Forms\TreeDropdownField;
|
2017-05-24 15:26:28 +02:00
|
|
|
use SilverStripe\View\Requirements;
|
2017-05-24 12:32:05 +02:00
|
|
|
|
2012-03-25 18:35:01 +02:00
|
|
|
/**
|
|
|
|
* Wraps around a TreedropdownField to add ability for temporary
|
|
|
|
* switching of subsite sessions.
|
2017-05-24 13:36:04 +02:00
|
|
|
*
|
2012-03-25 18:35:01 +02:00
|
|
|
* @package subsites
|
|
|
|
*/
|
2017-05-24 15:26:28 +02:00
|
|
|
class SubsitesTreeDropdownField extends TreeDropdownField
|
|
|
|
{
|
2017-06-01 15:57:53 +02:00
|
|
|
private static $allowed_actions = [
|
2017-05-24 15:26:28 +02:00
|
|
|
'tree'
|
2017-06-01 15:57:53 +02:00
|
|
|
];
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-24 15:26:28 +02:00
|
|
|
protected $subsiteID = 0;
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-06-01 15:57:53 +02:00
|
|
|
protected $extraClasses = ['SubsitesTreeDropdownField'];
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-06-01 15:57:53 +02:00
|
|
|
public function Field($properties = [])
|
2017-05-24 15:26:28 +02:00
|
|
|
{
|
|
|
|
$html = parent::Field($properties);
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-24 15:26:28 +02:00
|
|
|
Requirements::javascript('subsites/javascript/SubsitesTreeDropdownField.js');
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-24 15:26:28 +02:00
|
|
|
return $html;
|
|
|
|
}
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-29 13:42:42 +02:00
|
|
|
public function setSubsiteID($id)
|
2017-05-24 15:26:28 +02:00
|
|
|
{
|
|
|
|
$this->subsiteID = $id;
|
|
|
|
}
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-29 13:42:42 +02:00
|
|
|
public function getSubsiteID()
|
2017-05-24 15:26:28 +02:00
|
|
|
{
|
|
|
|
return $this->subsiteID;
|
|
|
|
}
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-29 13:42:42 +02:00
|
|
|
public function tree(HTTPRequest $request)
|
2017-05-24 15:26:28 +02:00
|
|
|
{
|
2017-08-28 11:52:32 +02:00
|
|
|
$session = Controller::curr()->getRequest()->getSession();
|
|
|
|
|
|
|
|
$oldSubsiteID = $session->get('SubsiteID');
|
|
|
|
$session->set('SubsiteID', $this->subsiteID);
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-24 15:26:28 +02:00
|
|
|
$results = parent::tree($request);
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-08-28 11:52:32 +02:00
|
|
|
$session->set('SubsiteID', $oldSubsiteID);
|
2017-05-24 13:36:04 +02:00
|
|
|
|
2017-05-24 15:26:28 +02:00
|
|
|
return $results;
|
|
|
|
}
|
2017-05-24 13:36:04 +02:00
|
|
|
}
|