2021-06-19 21:30:03 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace A2nt\CMSNiceties\Widgets;
|
|
|
|
|
|
|
|
use DNADesign\Elemental\Forms\TextCheckboxGroupField;
|
|
|
|
use SilverStripe\CMS\Model\SiteTree;
|
2023-12-06 00:46:51 +01:00
|
|
|
use SilverStripe\Control\Director;
|
2021-06-19 21:30:03 +02:00
|
|
|
use SilverStripe\Forms\FieldList;
|
|
|
|
use SilverStripe\Forms\TreeDropdownField;
|
|
|
|
use SilverStripe\ORM\DataExtension;
|
2023-09-19 15:52:30 +02:00
|
|
|
use SilverStripe\Forms\LiteralField;
|
2021-06-19 21:30:03 +02:00
|
|
|
|
2022-05-10 13:09:06 +02:00
|
|
|
/**
|
|
|
|
* Class \A2nt\CMSNiceties\Widgets\WidgetExtension
|
|
|
|
*
|
|
|
|
* @property \A2nt\CMSNiceties\Widgets\WidgetExtension $owner
|
|
|
|
* @property boolean $ShowTitle
|
|
|
|
*/
|
2021-06-19 21:30:03 +02:00
|
|
|
class WidgetExtension extends DataExtension
|
|
|
|
{
|
|
|
|
private static $db = [
|
|
|
|
'ShowTitle' => 'Boolean(1)',
|
|
|
|
];
|
|
|
|
|
|
|
|
public function updateCMSFields(FieldList $fields)
|
|
|
|
{
|
2023-09-19 16:08:02 +02:00
|
|
|
$obj = $this->owner;
|
2021-06-19 21:30:03 +02:00
|
|
|
parent::updateCMSFields($fields);
|
|
|
|
// Add a combined field for "Title" and "Displayed" checkbox in a Bootstrap input group
|
|
|
|
$fields->removeByName('ShowTitle');
|
|
|
|
$fields->replaceField(
|
|
|
|
'Title',
|
|
|
|
TextCheckboxGroupField::create()
|
|
|
|
->setName('Title')
|
|
|
|
);
|
2023-09-19 15:52:30 +02:00
|
|
|
|
2023-12-06 00:46:51 +01:00
|
|
|
if ($obj->ID) {
|
2023-09-19 15:52:30 +02:00
|
|
|
$fields->push(TreeDropdownField::create(
|
|
|
|
'MovePageID',
|
|
|
|
'Move widget to page',
|
|
|
|
SiteTree::class
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
$fields->push(LiteralField::create(
|
2023-12-06 00:46:51 +01:00
|
|
|
'Type',
|
2023-09-19 15:52:30 +02:00
|
|
|
'<div class="form-group field text">'
|
2023-12-06 00:46:51 +01:00
|
|
|
.'<div class="form__field-label">Type</div>'
|
|
|
|
.'<div class="form__field-holder">'.(!Director::isLive() ? $obj->getField('ClassName') : $obj->i18n_singular_name()).'</div>'
|
2023-09-19 15:52:30 +02:00
|
|
|
.'</div>'
|
2021-06-19 21:30:03 +02:00
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function onBeforeWrite()
|
|
|
|
{
|
|
|
|
$obj = $this->owner;
|
|
|
|
$moveID = $obj->MovePageID;
|
|
|
|
if ($moveID) {
|
|
|
|
$page = \Page::get()->byID($moveID);
|
2023-09-19 15:52:30 +02:00
|
|
|
if ($page) {
|
2021-06-19 21:30:03 +02:00
|
|
|
$sidebarID = $page->getField('SideBarID');
|
2023-09-19 15:52:30 +02:00
|
|
|
if ($sidebarID) {
|
2021-06-19 21:30:03 +02:00
|
|
|
$obj->setField('ParentID', $sidebarID);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
parent::onBeforeWrite();
|
|
|
|
}
|
|
|
|
}
|