Release 1.16 (#2929)

Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: dkstiler <dkstiler@gmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
This commit is contained in:
Kevin Papst
2021-11-16 10:51:01 +01:00
committed by GitHub
parent 95796ab256
commit f63a2c8ef6
39 changed files with 91 additions and 52 deletions

View File

@@ -1,5 +1,5 @@
unreleased=true
future-release=1.15.6
future-release=1.16
exclude-labels=duplicate,support,question,invalid,wontfix,release,waiting for feedback,documentation
enhancement_labels=>enhancement,Enhancement,feature request,translation i18n,technical debt,documentation
issues-wo-labels=false

View File

@@ -7,8 +7,8 @@ As announced in the [README](README.md) I only support the latest available rele
| Version | Supported |
| ------- | ------------------ |
| master | :white_check_mark: |
| 1.15 | :white_check_mark: |
| < 1.15 | :x: |
| 1.16 | :white_check_mark: |
| < 1.16 | :x: |
## Reporting a Vulnerability

View File

@@ -25,7 +25,7 @@ class Constants
/**
* The current release status, either "stable" or "dev"
*/
public const STATUS = 'dev';
public const STATUS = 'prod';
/**
* The software name
*/

View File

@@ -56,6 +56,9 @@ class ExportServiceCompilerPass implements CompilerPassInterface
foreach (glob($path . $exportPath . '/*.html.twig') as $htmlTpl) {
$tplName = basename($htmlTpl);
if (stripos($tplName, '-bundle') !== false) {
continue;
}
$serviceId = 'exporter_renderer.' . str_replace('.', '_', $tplName);
@@ -70,6 +73,9 @@ class ExportServiceCompilerPass implements CompilerPassInterface
foreach (glob($path . $exportPath . '/*.pdf.twig') as $pdfHtml) {
$tplName = basename($pdfHtml);
if (stripos($tplName, '-bundle') !== false) {
continue;
}
$serviceId = 'exporter_renderer.' . str_replace('.', '_', $tplName);

View File

@@ -120,33 +120,26 @@ class Kernel extends BaseKernel
}
} else {
// ... or we load them dynamically from the plugins directory
foreach ($this->getBundleDirectories() as $bundleDir) {
$bundleName = $bundleDir->getRelativePathname();
$pluginClass = 'KimaiPlugin\\' . $bundleName . '\\' . $bundleName;
foreach ($this->getBundleClasses() as $pluginClass) {
yield new $pluginClass();
}
}
}
private function getBundleDirectories(): array
private function getBundleClasses(): array
{
$pluginsDir = $this->getProjectDir() . '/var/plugins';
if (!file_exists($pluginsDir)) {
return [];
}
$directories = [];
$plugins = [];
$finder = new Finder();
$finder->ignoreUnreadableDirs()->directories()->name('*Bundle');
/** @var SplFileInfo $bundleDir */
foreach ($finder->in($pluginsDir) as $bundleDir) {
$bundleName = $bundleDir->getRelativePathname();
$bundleFilename = $bundleDir->getRealPath() . '/' . $bundleName . '.php';
if (!file_exists($bundleFilename)) {
continue;
}
if (file_exists($bundleDir->getRealPath() . '/.disabled')) {
continue;
}
@@ -156,10 +149,10 @@ class Kernel extends BaseKernel
continue;
}
$directories[] = $bundleDir;
$plugins[] = $pluginClass;
}
return $directories;
return $plugins;
}
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
@@ -223,7 +216,11 @@ class Kernel extends BaseKernel
foreach ($this->bundles as $bundle) {
if (strpos(\get_class($bundle), 'KimaiPlugin\\') !== false) {
$routes->import($bundle->getPath() . '/Resources/config/routes' . self::CONFIG_EXTS, '/', 'glob');
if (is_dir($bundle->getPath() . '/Resources/config/')) {
$routes->import($bundle->getPath() . '/Resources/config/routes' . self::CONFIG_EXTS, '/', 'glob');
} elseif (is_dir($bundle->getPath() . '/config/')) {
$routes->import($bundle->getPath() . '/config/routes' . self::CONFIG_EXTS, '/', 'glob');
}
}
}
}

View File

@@ -205,7 +205,7 @@ final class LocaleFormatExtensions extends AbstractExtension
public function dateWeekday(DateTime $date): string
{
return $this->dayName($date, true) . ', ' . $this->getFormatter()->dateFormat($date, 'd');
return $this->dayName($date, true) . ' ' . $this->getFormatter()->dateFormat($date, 'd');
}
/**

View File

@@ -94,7 +94,7 @@
<source>invoice.paid</source>
<target>Rechnung bezahlt</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Rechnung stornieren</target>
</trans-unit>

View File

@@ -98,7 +98,7 @@
<source>filter</source>
<target>Φιλτράρισμα δεδομένων</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Ακύρωση τιμολογίου</target>
</trans-unit>

View File

@@ -94,7 +94,7 @@
<source>invoice.paid</source>
<target>Invoice paid</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Cancel invoice</target>
</trans-unit>

View File

@@ -98,7 +98,7 @@
<source>filter</source>
<target>Filtrer les données</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Annuler la facture</target>
</trans-unit>

View File

@@ -98,7 +98,7 @@
<source>filter</source>
<target>סינון נתונים</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>ביטול חשבונית</target>
</trans-unit>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" target-language="hr" datatype="plaintext" original="actions.en.xlf">
<body>
@@ -98,6 +98,10 @@
<source>filter</source>
<target>Filtriraj podatke</target>
</trans-unit>
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Prekini račun</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -98,7 +98,7 @@
<source>filter</source>
<target>Filtra i dati</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Annulla la fattura</target>
</trans-unit>

View File

@@ -98,7 +98,7 @@
<source>filter</source>
<target>Filtrar por data</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Cancelar fatura</target>
</trans-unit>

View File

@@ -98,7 +98,7 @@
<source>filter</source>
<target>Filtre por data</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Cancelar fatura</target>
</trans-unit>

View File

@@ -98,7 +98,7 @@
<source>filter</source>
<target>Verileri filtrele</target>
</trans-unit>
<trans-unit id="7d1V9FU" resname="invoice.cancel">
<trans-unit id="SEyZupT" resname="invoice.cancel">
<source>invoice.cancel</source>
<target>Faturayı iptal et</target>
</trans-unit>

View File

@@ -1083,7 +1083,7 @@
<source>status.paid</source>
<target>Bezahlt</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Storniert</target>
</trans-unit>

View File

@@ -1206,7 +1206,7 @@
<source>label.budgetType_full</source>
<target>Lebenszyklus</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Storniert</target>
</trans-unit>

View File

@@ -1268,10 +1268,14 @@
<source>quick_entry.title</source>
<target>Εβδομαδιαίες ώρες εργασίας</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Ακυρώθηκε</target>
</trans-unit>
<trans-unit id="61p_ckr" resname="label.hours_24">
<source>label.hours_24</source>
<target>24 ώρες</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -333,7 +333,7 @@
<source>label.skin</source>
<target>Display: colors</target>
</trans-unit>
<trans-unit id="O40d_3K" resname="Display: layout">
<trans-unit id="O40d_3K" resname="theme.layout">
<source>Display: layout</source>
<target state="needs-translation">Display: layout</target>
</trans-unit>
@@ -1083,7 +1083,7 @@
<source>status.paid</source>
<target>Paid</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Canceled</target>
</trans-unit>

View File

@@ -1256,7 +1256,7 @@
<source>default_value_new</source>
<target>Valores predeterminados para entradas nuevas</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Cancelado</target>
</trans-unit>

View File

@@ -1268,10 +1268,14 @@
<source>label.budgetType_full</source>
<target>Cycle de vie</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Annulée</target>
</trans-unit>
<trans-unit id="61p_ckr" resname="label.hours_24">
<source>label.hours_24</source>
<target>24 heures</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1201,10 +1201,14 @@
<source>label.budgetType_full</source>
<target>מחזור חיים</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>בוטל</target>
</trans-unit>
<trans-unit id="61p_ckr" resname="label.hours_24">
<source>label.hours_24</source>
<target>24 שעות</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1272,6 +1272,14 @@
<source>label.budgetType_full</source>
<target>Životni ciklus</target>
</trans-unit>
<trans-unit id="61p_ckr" resname="label.hours_24">
<source>label.hours_24</source>
<target>24 sata</target>
</trans-unit>
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Prekinuti</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1271,7 +1271,7 @@
<source>label.includeBudgetType_full</source>
<target>Mostra le voci con «ciclo di vita» bilancio</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Annullata</target>
</trans-unit>

View File

@@ -1268,10 +1268,14 @@
<source>label.budgetType_full</source>
<target>Ciclo de vida</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Cancelado</target>
</trans-unit>
<trans-unit id="61p_ckr" resname="label.hours_24">
<source>label.hours_24</source>
<target>24 horas</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1271,10 +1271,14 @@
<source>label.includeBudgetType_full</source>
<target>Mostre as entradas com orçamento com "ciclo de vida"</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>Cancelado</target>
</trans-unit>
<trans-unit id="61p_ckr" resname="label.hours_24">
<source>label.hours_24</source>
<target>24 horas</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1271,10 +1271,14 @@
<source>label.includeBudgetType_month</source>
<target>"Aylık" bütçeli kayıtları göster</target>
</trans-unit>
<trans-unit id="Z1s7pAw" resname="status.canceled">
<trans-unit id="gT9W2pZ" resname="status.canceled">
<source>status.canceled</source>
<target>İptal edildi</target>
</trans-unit>
<trans-unit id="61p_ckr" resname="label.hours_24">
<source>label.hours_24</source>
<target>24 saat</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>Einstellungen</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target state="translated">Zeiterfassung</target>
</trans-unit>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>Ρυθμίσεις</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target state="translated">Παρακολούθηση Χρόνου</target>
</trans-unit>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>Settings</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>Time tracking</target>
</trans-unit>

View File

@@ -6,9 +6,9 @@
<source>title</source>
<target>Paramètres</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>Suivi du temps</target>
<target>Feuille d'heures</target>
</trans-unit>
<trans-unit id="PLggHn." resname="theme">
<source>theme</source>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>הגדרות</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>מעקב אחר שעות</target>
</trans-unit>

View File

@@ -10,7 +10,7 @@
<source>subtitle</source>
<target>Promijeni globalne konfiguracije evidentiranja vremena</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>Praćenje vremena</target>
</trans-unit>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>Impostazioni</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>Rilevamento del tempo</target>
</trans-unit>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>Configurações</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>Rastreamento de tempo</target>
</trans-unit>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>Configurações</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>Rastreamento de tempo</target>
</trans-unit>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target>Setari</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target>Monitorizarea timpului</target>
</trans-unit>

View File

@@ -6,7 +6,7 @@
<source>title</source>
<target state="translated">Ayarlar</target>
</trans-unit>
<trans-unit id="lt2Y2LO" resname="timesheet">
<trans-unit id="ycErWZK" resname="timesheet">
<source>Time tracking</source>
<target state="translated">Zaman izleme</target>
</trans-unit>