added config for initial calendar view (#363)

This commit is contained in:
Kevin Papst
2018-10-21 15:43:16 +02:00
committed by GitHub
parent 3075276a52
commit 0165658659
8 changed files with 155 additions and 5 deletions

View File

@@ -18,7 +18,7 @@ use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
/**
* Class ThemeOptionsSubscriber
* Allows dynamic injection of theme related options.
*/
class ThemeOptionsSubscriber implements EventSubscriberInterface
{
@@ -33,7 +33,6 @@ class ThemeOptionsSubscriber implements EventSubscriberInterface
protected $helper;
/**
* ThemeOptionsSubscriber constructor.
* @param TokenStorageInterface $storage
* @param ContextHelper $helper
*/

View File

@@ -12,6 +12,7 @@ namespace App\EventSubscriber;
use App\Entity\User;
use App\Entity\UserPreference;
use App\Event\UserPreferenceEvent;
use App\Form\Type\CalendarViewType;
use App\Form\Type\SkinType;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -95,6 +96,11 @@ class UserPreferenceSubscriber implements EventSubscriberInterface
->setValue(true)
->setType(CheckboxType::class),
(new UserPreference())
->setName('calendar.initial_view')
->setValue(CalendarViewType::DEFAULT_VIEW)
->setType(CalendarViewType::class),
/*
(new UserPreference())
->setName('language')

View File

@@ -0,0 +1,52 @@
<?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\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Custom form field type to select a calendar view.
*/
class CalendarViewType extends AbstractType
{
public const DEFAULT_VIEW = 'month';
public const ALLOWED_VIEWS = [
'month',
'agendaWeek',
'agendaDay',
];
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$choices = [];
foreach (self::ALLOWED_VIEWS as $name) {
$choices[$name] = $name;
}
$resolver->setDefaults([
'required' => true,
'choices' => $choices,
]);
}
/**
* {@inheritdoc}
*/
public function getParent()
{
return ChoiceType::class;
}
}