cms-niceties/src/Widgets/WidgetExtension.php

71 lines
2.0 KiB
PHP
Raw Normal View History

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