Release 2.0.5 (#3888)
- Fixed: mandatory fields / form validation for invoice template - Added: Duration as calendar title replacer (open: running records) - Fixed: HTML injection in Calendar - Fixed: Doctrine Proxies are not initialized (leads to empty customer/project) - Fixed: tag creation - Fixed: validation errors do not need to be logged in prod - Removed: Customer VCard download, as used library is outdated and not maintained - Added: supporting translations domains in many new places (menu, help_text, page_setup, report, exporter, calendar)
This commit is contained in:
@@ -14,7 +14,7 @@ final class Expose
|
||||
{
|
||||
public string $type = 'string';
|
||||
|
||||
public function __construct(public ?string $name = null, public ?string $label = null, string $type = 'string', public ?string $exp = null)
|
||||
public function __construct(public ?string $name = null, public ?string $label = null, string $type = 'string', public ?string $exp = null, public ?string $translationDomain = null)
|
||||
{
|
||||
if (!\in_array($type, ['string', 'datetime', 'date', 'time', 'integer', 'float', 'duration', 'boolean', 'array'])) {
|
||||
throw new \InvalidArgumentException(sprintf('Unknown type "%s" on annotation "%s".', $type, self::class));
|
||||
|
||||
@@ -135,7 +135,7 @@ trait RendererTrait
|
||||
}
|
||||
|
||||
$rate = $exportItem->getRate();
|
||||
$internalRate = $exportItem->getInternalRate();
|
||||
$internalRate = $exportItem->getInternalRate() ?? 0;
|
||||
|
||||
// rate
|
||||
$summary[$id]['rate'] += $rate;
|
||||
|
||||
@@ -13,6 +13,8 @@ final class ColumnDefinition
|
||||
{
|
||||
private $accessor;
|
||||
|
||||
private string $translationDomain = 'messages';
|
||||
|
||||
public function __construct(private string $label, private string $type, callable $accessor)
|
||||
{
|
||||
$this->accessor = $accessor;
|
||||
@@ -32,4 +34,14 @@ final class ColumnDefinition
|
||||
{
|
||||
return $this->accessor;
|
||||
}
|
||||
|
||||
public function getTranslationDomain(): string
|
||||
{
|
||||
return $this->translationDomain;
|
||||
}
|
||||
|
||||
public function setTranslationDomain(string $translationDomain): void
|
||||
{
|
||||
$this->translationDomain = $translationDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,13 +67,19 @@ final class AnnotationExtractor implements ExtractorInterface
|
||||
|
||||
$parsed = $this->expressionLanguage->parse($arguments['exp'], ['object']);
|
||||
|
||||
$columns[$arguments['name']] = new ColumnDefinition(
|
||||
$name = $arguments['name'];
|
||||
|
||||
$columns[$name] = new ColumnDefinition(
|
||||
$arguments['label'],
|
||||
$arguments['type'] ?? 'string',
|
||||
function ($obj) use ($parsed) {
|
||||
return $parsed->getNodes()->evaluate([], ['object' => $obj]);
|
||||
}
|
||||
);
|
||||
|
||||
if (\array_key_exists('translationDomain', $arguments) && \is_string($arguments['translationDomain'])) {
|
||||
$columns[$name]->setTranslationDomain($arguments['translationDomain']);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($reflectionClass->getProperties() as $property) {
|
||||
@@ -103,6 +109,10 @@ final class AnnotationExtractor implements ExtractorInterface
|
||||
return $property->getValue($obj);
|
||||
}
|
||||
);
|
||||
|
||||
if (\array_key_exists('translationDomain', $arguments) && \is_string($arguments['translationDomain'])) {
|
||||
$columns[$name]->setTranslationDomain($arguments['translationDomain']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,6 +147,10 @@ final class AnnotationExtractor implements ExtractorInterface
|
||||
return $method->invoke($obj);
|
||||
}
|
||||
);
|
||||
|
||||
if (\array_key_exists('translationDomain', $arguments) && \is_string($arguments['translationDomain'])) {
|
||||
$columns[$name]->setTranslationDomain($arguments['translationDomain']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ class SpreadsheetExporter
|
||||
$recordsHeaderRow = 1;
|
||||
|
||||
foreach ($columns as $settings) {
|
||||
$sheet->setCellValue(CellAddress::fromColumnAndRow($recordsHeaderColumn++, $recordsHeaderRow), $this->translator->trans($settings->getLabel()));
|
||||
$sheet->setCellValue(CellAddress::fromColumnAndRow($recordsHeaderColumn++, $recordsHeaderRow), $this->translator->trans($settings->getLabel(), [], $settings->getTranslationDomain()));
|
||||
}
|
||||
|
||||
$entryHeaderRow = $recordsHeaderRow + 1;
|
||||
|
||||
Reference in New Issue
Block a user