diff --git a/UPGRADING.md b/UPGRADING.md
index f340c1d1..f6fa35a3 100644
--- a/UPGRADING.md
+++ b/UPGRADING.md
@@ -8,6 +8,10 @@ you can upgrade your Kimai installation to the latest stable release.
Check below if there are more version specific steps required, which need to be executed after the normal update process.
Perform EACH version specific task between your version and the new one, otherwise you risk data inconsistency or a broken installation.
+## [1.4](https://github.com/kevinpapst/kimai2/releases/tag/1.4)
+
+[Update as usual](https://www.kimai.org/documentation/updates.html), nothing special for this release if you upgrade from 1.0 / 1.0.1.
+
## [1.3](https://github.com/kevinpapst/kimai2/releases/tag/1.3)
### Possible BC breaks
diff --git a/src/Constants.php b/src/Constants.php
index b5d2f93b..45f17ece 100644
--- a/src/Constants.php
+++ b/src/Constants.php
@@ -10,32 +10,32 @@
namespace App;
/**
- * Some very global constants for Kimai.
+ * Some "very" global constants for Kimai.
*/
class Constants
{
+ /**
+ * The current release version
+ */
+ public const VERSION = '1.4';
+ /**
+ * The current release status, either "stable" or "dev"
+ */
+ public const STATUS = 'dev';
/**
* The software name
*/
public const SOFTWARE = 'Kimai 2';
- /**
- * The current release version
- */
- public const VERSION = '1.3';
/**
* The release name, will only change for new major version
*/
public const NAME = 'Ayumi';
- /**
- * The current release status, either "stable" or "dev"
- */
- public const STATUS = 'stable';
/**
* Used in multiple views
*/
public const GITHUB = 'https://github.com/kevinpapst/kimai2/';
/**
- * Used in multiple views
+ * Homepage, used in multiple views
*/
public const HOMEPAGE = 'https://www.kimai.org';
}
diff --git a/src/Controller/InvoiceController.php b/src/Controller/InvoiceController.php
index 4739eec3..85d574ef 100644
--- a/src/Controller/InvoiceController.php
+++ b/src/Controller/InvoiceController.php
@@ -68,7 +68,6 @@ class InvoiceController extends AbstractController
}
$showPreview = false;
- $maxItemsPreview = 500;
$entries = [];
$query = $this->getDefaultQuery();
@@ -88,7 +87,6 @@ class InvoiceController extends AbstractController
$previewButton = $form->get('preview');
if ($previewButton->isClicked()) {
$showPreview = true;
- $query->setPageSize($maxItemsPreview);
$entries = $this->getPreviewEntries($query);
}
}
@@ -102,8 +100,7 @@ class InvoiceController extends AbstractController
return $this->render('invoice/index.html.twig', [
'model' => $model,
'form' => $form->createView(),
- 'preview_max' => $maxItemsPreview,
- 'preview_show' => $showPreview,
+ 'preview' => $showPreview,
]);
}
@@ -209,7 +206,7 @@ class InvoiceController extends AbstractController
$entries = array_merge($entries, $items);
}
- return array_slice($entries, 0, $query->getPageSize());
+ return $entries;
}
/**
diff --git a/src/Event/UserPreferenceEvent.php b/src/Event/UserPreferenceEvent.php
index ad3564d0..8b42f197 100644
--- a/src/Event/UserPreferenceEvent.php
+++ b/src/Event/UserPreferenceEvent.php
@@ -40,7 +40,7 @@ final class UserPreferenceEvent extends Event
}
/**
- * Do not set the preferences directly to the user object, but ONLY via addUserPreference()
+ * Do not set the preferences directly to the user object, but ONLY via addPreference()
* @return User
*/
public function getUser()
@@ -59,7 +59,7 @@ final class UserPreferenceEvent extends Event
/**
* @param UserPreference $preference
*/
- public function addUserPreference(UserPreference $preference)
+ public function addPreference(UserPreference $preference)
{
foreach ($this->preferences as $pref) {
if (strtolower($pref->getName()) === strtolower($preference->getName())) {
@@ -70,4 +70,14 @@ final class UserPreferenceEvent extends Event
}
$this->preferences[] = $preference;
}
+
+ /**
+ * @param UserPreference $preference
+ * @deprecated since 1.4, will be removed with 2.0
+ */
+ public function addUserPreference(UserPreference $preference)
+ {
+ @trigger_error('addUserPreference() is deprecated and will be removed with 2.0', E_USER_DEPRECATED);
+ $this->addPreference($preference);
+ }
}
diff --git a/templates/invoice/actions.html.twig b/templates/invoice/actions.html.twig
index e8f4ddf1..26d2ca51 100644
--- a/templates/invoice/actions.html.twig
+++ b/templates/invoice/actions.html.twig
@@ -2,7 +2,8 @@
{% macro invoices(view) %}
{% import "macros/widgets.html.twig" as widgets %}
- {% set actions = {} %}
+ {% set actions = {'visibility': '#modal_invoice'} %}
+
{% if is_granted('manage_invoice_template') %}
{% set actions = actions|merge({'list': path('admin_invoice_template')}) %}
{% endif %}
diff --git a/templates/invoice/index.html.twig b/templates/invoice/index.html.twig
index 8680629b..5071b0d1 100644
--- a/templates/invoice/index.html.twig
+++ b/templates/invoice/index.html.twig
@@ -20,6 +20,10 @@
{% block page_subtitle %}{{ 'invoice.subtitle'|trans }}{% endblock %}
{% block page_actions %}{{ actions.invoices('index') }}{% endblock %}
+{% block main_before %}
+ {{ tables.data_table_column_modal(tableName, columns) }}
+{% endblock %}
+
{% block main %}
{% if is_granted('create_invoice') %}
@@ -41,7 +45,7 @@
{% endblock %}
{% block box_footer%}
{{ form_widget(form.create, {'attr': {'class': 'btn btn-success'}}) }}
- {{ form_widget(form.preview, {'attr': {'data-toggle': 'tooltip', 'title': 'limited_entries'|trans({'%max%': preview_max})}}) }}
+ {{ form_widget(form.preview) }}
{% endblock %}
{% block box_after %}{{ form_end(form) }}{% endblock %}
{% endembed %}
@@ -49,7 +53,7 @@
{{ widgets.callout('danger', 'http_error_403.suggestion'|trans({}, 'exceptions')) }}
{% endif %}
- {% if preview_show %}
+ {% if preview %}
{% if model.calculator is empty or model.calculator.entries is empty %}
{{ widgets.callout('warning', 'error.no_entries_found') }}
{% else %}
diff --git a/tests/Event/UserPreferenceEventTest.php b/tests/Event/UserPreferenceEventTest.php
index e006fe10..9815cae3 100644
--- a/tests/Event/UserPreferenceEventTest.php
+++ b/tests/Event/UserPreferenceEventTest.php
@@ -31,7 +31,7 @@ class UserPreferenceEventTest extends TestCase
$this->assertEquals($user, $sut->getUser());
$this->assertEquals([], $sut->getPreferences());
- $sut->addUserPreference($pref);
+ $sut->addPreference($pref);
$this->assertEquals([$pref], $sut->getPreferences());
}
@@ -51,7 +51,7 @@ class UserPreferenceEventTest extends TestCase
$sut = new UserPreferenceEvent($user, []);
- $sut->addUserPreference($pref);
- $sut->addUserPreference($pref2);
+ $sut->addUserPreference($pref); // change me, once the deprecated method will be deleted
+ $sut->addPreference($pref2);
}
}
diff --git a/translations/messages.de.xliff b/translations/messages.de.xliff
index 4a104416..5c6ebd72 100644
--- a/translations/messages.de.xliff
+++ b/translations/messages.de.xliff
@@ -736,10 +736,6 @@
invoice.filterRechnungsdaten filtern
-
- limited_entries
- Limitiert auf %max% Einträge
- button.previewVorschau
diff --git a/translations/messages.en.xliff b/translations/messages.en.xliff
index 1523cca3..c616f3ff 100644
--- a/translations/messages.en.xliff
+++ b/translations/messages.en.xliff
@@ -736,10 +736,6 @@
invoice.filterFilter invoice data
-
- limited_entries
- Limited to %max% entries
- button.previewPreview