added calendar configuration event (#2698)
This commit is contained in:
@@ -11,6 +11,7 @@ namespace App\Calendar;
|
|||||||
|
|
||||||
use App\Configuration\SystemConfiguration;
|
use App\Configuration\SystemConfiguration;
|
||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
|
use App\Event\CalendarConfigurationEvent;
|
||||||
use App\Event\CalendarDragAndDropSourceEvent;
|
use App\Event\CalendarDragAndDropSourceEvent;
|
||||||
use App\Event\CalendarGoogleSourceEvent;
|
use App\Event\CalendarGoogleSourceEvent;
|
||||||
use App\Event\RecentActivityEvent;
|
use App\Event\RecentActivityEvent;
|
||||||
@@ -99,4 +100,24 @@ final class CalendarService
|
|||||||
|
|
||||||
return new Google($apiKey, $sources);
|
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();
|
$factory = $this->getDateTimeFactory();
|
||||||
$defaultStart = $factory->createDateTime($configuration->getTimesheetDefaultBeginTime());
|
$defaultStart = $factory->createDateTime($configuration->getTimesheetDefaultBeginTime());
|
||||||
|
|
||||||
$config = [
|
$config = $this->calendarService->getConfiguration();
|
||||||
'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(),
|
|
||||||
];
|
|
||||||
|
|
||||||
$isPunchMode = !$mode->canEditDuration() && !$mode->canEditBegin() && !$mode->canEditEnd();
|
$isPunchMode = !$mode->canEditDuration() && !$mode->canEditBegin() && !$mode->canEditEnd();
|
||||||
$dragAndDrop = [];
|
$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