customize html and pdf exports with twig templates (#1582)

This commit is contained in:
Kevin Papst
2020-03-23 01:51:02 +01:00
committed by GitHub
parent 1ca1b00d11
commit 33f76f426c
32 changed files with 895 additions and 307 deletions

View File

@@ -10,9 +10,9 @@
namespace App\Export\Renderer;
use App\Export\Base\HtmlRenderer as BaseHtmlRenderer;
use App\Export\RendererInterface;
use App\Export\ExportRendererInterface;
final class HtmlRenderer extends BaseHtmlRenderer implements RendererInterface
final class HtmlRenderer extends BaseHtmlRenderer implements ExportRendererInterface
{
public function getIcon(): string
{

View File

@@ -0,0 +1,46 @@
<?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\Export\Renderer;
use App\Repository\ProjectRepository;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Twig\Environment;
final class HtmlRendererFactory
{
/**
* @var Environment
*/
private $twig;
/**
* @var EventDispatcherInterface
*/
private $dispatcher;
/**
* @var ProjectRepository
*/
private $projectRepository;
public function __construct(Environment $twig, EventDispatcherInterface $dispatcher, ProjectRepository $projectRepository)
{
$this->twig = $twig;
$this->dispatcher = $dispatcher;
$this->projectRepository = $projectRepository;
}
public function create(string $id, string $template): HtmlRenderer
{
$renderer = new HtmlRenderer($this->twig, $this->dispatcher, $this->projectRepository);
$renderer->setId($id);
$renderer->setTemplate($template);
return $renderer;
}
}

View File

@@ -10,9 +10,9 @@
namespace App\Export\Renderer;
use App\Export\Base\PDFRenderer as BasePDFRenderer;
use App\Export\RendererInterface;
use App\Export\ExportRendererInterface;
final class PDFRenderer extends BasePDFRenderer implements RendererInterface
final class PDFRenderer extends BasePDFRenderer implements ExportRendererInterface
{
public function getIcon(): string
{

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\Export\Renderer;
use App\Repository\ProjectRepository;
use App\Timesheet\UserDateTimeFactory;
use App\Utils\HtmlToPdfConverter;
use Twig\Environment;
final class PdfRendererFactory
{
/**
* @var Environment
*/
private $twig;
/**
* @var UserDateTimeFactory
*/
private $dateTime;
/**
* @var HtmlToPdfConverter
*/
private $converter;
/**
* @var ProjectRepository
*/
private $projectRepository;
public function __construct(Environment $twig, UserDateTimeFactory $dateTime, HtmlToPdfConverter $converter, ProjectRepository $projectRepository)
{
$this->twig = $twig;
$this->dateTime = $dateTime;
$this->converter = $converter;
$this->projectRepository = $projectRepository;
}
public function create(string $id, string $template): PDFRenderer
{
$renderer = new PDFRenderer($this->twig, $this->dateTime, $this->converter, $this->projectRepository);
$renderer->setId($id);
$renderer->setTemplate($template);
return $renderer;
}
}