added calendar configuration event (#2698)
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 = [];
|
||||
|
||||
39
src/Event/CalendarConfigurationEvent.php
Normal file
39
src/Event/CalendarConfigurationEvent.php
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
tests/Event/CalendarConfigurationEventTest.php
Normal file
37
tests/Event/CalendarConfigurationEventTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user