102 lines
3.9 KiB
PHP
102 lines
3.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Contao\CoreBundle\DataContainer\PaletteManipulator;
|
|
use Mummert\CalDavSyncBundle\Contao\Dca\CalendarDcaCallbacks;
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['palettes']['__selector__'][] = 'caldavSyncEnabled';
|
|
|
|
foreach (array_keys($GLOBALS['TL_DCA']['tl_calendar']['palettes'] ?? []) as $paletteName) {
|
|
if ('__selector__' === $paletteName) {
|
|
continue;
|
|
}
|
|
|
|
PaletteManipulator::create()
|
|
->addLegend('caldav_legend', 'title_legend', PaletteManipulator::POSITION_AFTER)
|
|
->addField('caldavSyncEnabled', 'caldav_legend', PaletteManipulator::POSITION_APPEND)
|
|
->applyToPalette($paletteName, 'tl_calendar')
|
|
;
|
|
}
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['subpalettes']['caldavSyncEnabled'] = 'caldavUrl,caldavUsername,caldavPassword,caldavAuthorId,caldavTimezone,caldavCalendarHrefs,caldavPastSyncRange,caldavFutureSyncRange,caldavSyncCtags';
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavSyncEnabled'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'checkbox',
|
|
'eval' => ['submitOnChange' => true],
|
|
'sql' => "char(1) NOT NULL default ''",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavUrl'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'text',
|
|
'eval' => ['mandatory' => true, 'maxlength' => 2048, 'rgxp' => 'url', 'decodeEntities' => true, 'tl_class' => 'w50'],
|
|
'sql' => "varchar(2048) NOT NULL default ''",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavUsername'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'text',
|
|
'eval' => ['mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'],
|
|
'sql' => "varchar(255) NOT NULL default ''",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavPassword'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'text',
|
|
'eval' => ['mandatory' => true, 'maxlength' => 255, 'preserveTags' => true, 'hideInput' => true, 'tl_class' => 'w50'],
|
|
'sql' => "varchar(255) NOT NULL default ''",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavAuthorId'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'select',
|
|
'foreignKey' => 'tl_user.name',
|
|
'eval' => ['mandatory' => true, 'chosen' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'],
|
|
'relation' => ['type' => 'hasOne', 'load' => 'lazy', 'table' => 'tl_user'],
|
|
'sql' => "int(10) unsigned NOT NULL default 0",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavTimezone'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'text',
|
|
'eval' => ['maxlength' => 64, 'placeholder' => 'Europe/Berlin', 'tl_class' => 'w50'],
|
|
'sql' => "varchar(64) NOT NULL default ''",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavCalendarHrefs'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'checkboxWizard',
|
|
'options_callback' => [CalendarDcaCallbacks::class, 'getAvailableRemoteCalendars'],
|
|
'save_callback' => [[CalendarDcaCallbacks::class, 'normalizeSelectedRemoteCalendars']],
|
|
'eval' => ['multiple' => true, 'tl_class' => 'clr'],
|
|
'sql' => 'blob NULL',
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavPastSyncRange'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'select',
|
|
'options' => ['none', 'all', '1y', '2y'],
|
|
'reference' => &$GLOBALS['TL_LANG']['tl_calendar']['caldavPastSyncRangeOptions'],
|
|
'eval' => ['mandatory' => true, 'includeBlankOption' => false, 'tl_class' => 'w50'],
|
|
'sql' => "varchar(8) NOT NULL default '1y'",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavFutureSyncRange'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'select',
|
|
'options' => ['all', '1y', '2y'],
|
|
'reference' => &$GLOBALS['TL_LANG']['tl_calendar']['caldavFutureSyncRangeOptions'],
|
|
'eval' => ['mandatory' => true, 'includeBlankOption' => false, 'tl_class' => 'w50'],
|
|
'sql' => "varchar(8) NOT NULL default '2y'",
|
|
];
|
|
|
|
$GLOBALS['TL_DCA']['tl_calendar']['fields']['caldavSyncCtags'] = [
|
|
'exclude' => true,
|
|
'inputType' => 'textarea',
|
|
'eval' => ['readonly' => true, 'disabled' => true, 'doNotCopy' => true, 'tl_class' => 'clr long'],
|
|
'sql' => 'blob NULL',
|
|
];
|
|
|