added calendar configuration event (#2698)

This commit is contained in:
Jelle Sebreghts
2021-08-06 18:35:37 +02:00
committed by GitHub
parent df62c8a428
commit 21f785638c
4 changed files with 98 additions and 12 deletions

View File

@@ -11,6 +11,7 @@ namespace App\Calendar;
use App\Configuration\SystemConfiguration;
use App\Entity\User;
use App\Event\CalendarConfigurationEvent;
use App\Event\CalendarDragAndDropSourceEvent;
use App\Event\CalendarGoogleSourceEvent;
use App\Event\RecentActivityEvent;
@@ -99,4 +100,24 @@ final class CalendarService
return new Google($apiKey, $sources);
}
public function getConfiguration(): array
{
$config = [
'dayLimit' => $this->configuration->getCalendarDayLimit(),
'showWeekNumbers' => $this->configuration->isCalendarShowWeekNumbers(),
'showWeekends' => $this->configuration->isCalendarShowWeekends(),
'businessDays' => $this->configuration->getCalendarBusinessDays(),
'businessTimeBegin' => $this->configuration->getCalendarBusinessTimeBegin(),
'businessTimeEnd' => $this->configuration->getCalendarBusinessTimeEnd(),
'slotDuration' => $this->configuration->getCalendarSlotDuration(),
'timeframeBegin' => $this->configuration->getCalendarTimeframeBegin(),
'timeframeEnd' => $this->configuration->getCalendarTimeframeEnd(),
'dragDropAmount' => $this->configuration->getCalendarDragAndDropMaxEntries(),
];
$event = new CalendarConfigurationEvent($config);
$this->dispatcher->dispatch($event);
return $event->getConfiguration();
}
}

View File

@@ -39,18 +39,7 @@ class CalendarController extends AbstractController
$factory = $this->getDateTimeFactory();
$defaultStart = $factory->createDateTime($configuration->getTimesheetDefaultBeginTime());
$config = [
'dayLimit' => $configuration->getCalendarDayLimit(),
'showWeekNumbers' => $configuration->isCalendarShowWeekNumbers(),
'showWeekends' => $configuration->isCalendarShowWeekends(),
'businessDays' => $configuration->getCalendarBusinessDays(),
'businessTimeBegin' => $configuration->getCalendarBusinessTimeBegin(),
'businessTimeEnd' => $configuration->getCalendarBusinessTimeEnd(),
'slotDuration' => $configuration->getCalendarSlotDuration(),
'timeframeBegin' => $configuration->getCalendarTimeframeBegin(),
'timeframeEnd' => $configuration->getCalendarTimeframeEnd(),
'dragDropAmount' => $configuration->getCalendarDragAndDropMaxEntries(),
];
$config = $this->calendarService->getConfiguration();
$isPunchMode = !$mode->canEditDuration() && !$mode->canEditBegin() && !$mode->canEditEnd();
$dragAndDrop = [];

View File

@@ -0,0 +1,39 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Event;
use Symfony\Contracts\EventDispatcher\Event;
class CalendarConfigurationEvent extends Event
{
/**
* @var array<string, string|int|bool|array>
*/
private $configuration;
public function __construct(array $configuration)
{
$this->configuration = $configuration;
}
public function getConfiguration(): array
{
return $this->configuration;
}
public function setConfiguration(array $configuration)
{
foreach ($configuration as $key => $value) {
if (\array_key_exists($key, $this->configuration)) {
$this->configuration[$key] = $value;
}
}
}
}

View File

@@ -0,0 +1,37 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Tests\Event;
use App\Event\CalendarConfigurationEvent;
use PHPUnit\Framework\TestCase;
/**
* @covers \App\Event\CalendarConfigurationEvent
*/
class CalendarConfigurationEventTest extends TestCase
{
public function testGetterAndSetter()
{
$configuration = [
'a' => 'b',
'c' => 1,
'd' => false,
];
$sut = new CalendarConfigurationEvent($configuration);
self::assertSame($configuration, $sut->getConfiguration());
$new_configuration = ['a' => 'new_value'] + $configuration + ['e' => 'should_not_be_set'];
$sut->setConfiguration($new_configuration);
unset($new_configuration['e']);
self::assertSame($new_configuration, $sut->getConfiguration());
}
}