Commit Graph

3577 Commits

Author SHA1 Message Date
nathan
3c7d18b8db Api: Change app placeholders list to use some more horizontal space, stop hiding common & user placeholders 2021-10-21 08:40:37 -06:00
Ralf Becker
efff64299c fix big chunk of PHP 8.0 warnings 2021-10-21 10:42:18 +02:00
nathan
e70060f34b Api: Fix cf sub-entry placeholder expansion was not passing content for placeholders like {{#customer/n_fn}} 2021-10-20 14:10:41 -06:00
Ralf Becker
a8cc4d3c33 closing/commiting the session to speed up calendar loading 2021-10-20 13:58:40 +02:00
nathan
eb1ed53c1a JS changes from 068e3feff0 2021-10-19 14:23:31 -06:00
nathan
dacb898218 Api: Fix setting the date min attribute to a number did not work
jQueryUI timepicker checks the type of variable
2021-10-19 14:22:55 -06:00
nathan
888fd1d61c Add missing placeholder widget JS 2021-10-19 09:47:38 -06:00
nathan
f4daa11c5b Api: Fix replacements from sub-apps (eg: infolog contact) were missing 2021-10-19 09:19:26 -06:00
Hadi Nategh
2af7775aa2 * Mail: Add set flags action into mail filters 2021-10-19 13:15:35 +02:00
Hadi Nategh
551d797cb6 * Mail: Implements date extension for vacation rule. None imap admin user can also set vacation rule by date. 2021-10-19 13:15:13 +02:00
nathan
d7de30a423 Infolog: Avoid errors adding app replacements if incorrect parameters given 2021-10-19 10:13:04 +02:00
nathan
b320f7517f Fix kanban merge into document stopped working with introduction of PDF checkbox 2021-10-19 09:48:12 +02:00
nathan
82103dd514 * Collabora: Merge placeholder dialogs
Added merge placeholder & address dialogs to Collabora.  Also some new merge preferences for target filename and location, and placeholder list UI
2021-10-14 13:18:21 -06:00
nathan
09f93f2b9d * Add filemanager actions to convert editable files to PDF or PNG and a checkbox to merge file as PDF 2021-10-14 09:18:55 -06:00
nathan
9de404da9c Fix ReflectionParameter::isArray() was deprecated as of PHP 8.0.0 2021-10-14 08:59:12 -06:00
nathan
65b0a31aeb Fix expansion broken in ddddc5ba05
Caused export field checkboxes in new definition to not keep their value
2021-10-14 08:58:49 -06:00
Hadi Nategh
894ebe2f51 PHP8: fix lots of warnings 2021-10-14 15:38:48 +02:00
Hadi Nategh
ab8a7d4c23 Remove none existing mail connectionTimeout preference. Fixes warning of Undefined array key 'connectionTimeout'. 2021-10-14 11:36:35 +02:00
Ralf Becker
60536222ce fix PHP 8.0 error forwarding mail as attachment (calling count on null) 2021-10-14 09:41:53 +02:00
Ralf Becker
ccadef611d fix PHP 8.0 error when converting an InfoLog into a ticket
Cannot access offset of type string on string
Also add line and file to our non-json exception handler, for easier identifying the problems
2021-10-14 08:08:34 +02:00
Alexandros Sigalas
fdd275c605
Tabs of tabwidget, added onClick and ondDblclick events (#109)
* Tabs of tabwidget, added onClick and ondDblclick events

* OnClick and ondDblclick events on Tabs of tabwidget, parse functions only once.
2021-10-13 08:33:37 -06:00
Hadi Nategh
2d7aed2f4b Fix error "Non-static method Merge::get_all_ids() cannot be called statically" 2021-10-12 12:57:01 +02:00
Ralf Becker
d51d0eee83 fix a bunch of PHP Warnings 2021-10-12 11:51:56 +02:00
Ralf Becker
c844a47889 fix PHP 8.0 error: Undefined constant "EGroupware\Api\Contacts\cat_id" 2021-10-11 18:41:03 +02:00
Ralf Becker
389b66bedf fix PHP Warning: Illegal string offset 'tmp_name' 2021-10-11 14:03:09 +02:00
Hadi Nategh
8feac04979
Merge pull request #108 from asig2016/21.1_toolbar
Added preference_id and preference_app attributes to toolbar widget, …
2021-10-11 10:22:46 +02:00
Ralf Becker
2e1f6a983f output line and file of exception as trace not always contain it 2021-10-09 08:43:48 +02:00
Alexandros Sigalas
a1f4922506 Added preference_id and preference_app attributes to toolbar widget, to make usage in edit forms opened in framework tabs easier. 2021-10-08 17:38:42 +03:00
Ralf Becker
f21492632b an other chunk of PHP 8.0 Warnings fixed 2021-10-08 15:44:32 +02:00
Hadi Nategh
fbfe937524 Accept mail externalImages with long url 2021-10-08 14:31:44 +02:00
Ralf Becker
867c000d99 fix Api\Accounts::username(): Argument #1 ($account_id) must be of type ?int, string given 2021-10-08 14:11:15 +02:00
Ralf Becker
7de75f16c1 fix PHP 8.0 errors around ACL dialog and policy:
- bitwise AND operator gives TypeError if both values are neither a number nor a numeric string, eg: null, "run"
- Etemplate::setElementAttribute() must NOT be called before instantiating an Etemplate object, you will get fatal error otherwise, because no request object
2021-10-08 09:06:45 +02:00
Ralf Becker
ca00987fb2 fix PHP 8.0 Fatal error: Declaration of Api\Etemplate\Request\Session::read($id = null) must be compatible with Api\Etemplate\Request::read($id = null, $handle_not_found = true) 2021-10-07 18:40:15 +02:00
Ralf Becker
7525a9b186 fix not working preferences GUI after ddddc5ba05 2021-10-07 17:28:42 +02:00
Ralf Becker
a599f9390c fix TypeError: Argument 1 passed to EGroupware\Api\Accounts::username() must be of the type int, null given 2021-10-07 16:53:54 +02:00
Ralf Becker
542192ce6e fix PHP 8.0 error Illegal string offset
folder object need to be cast to string (folder name) as objects are not allowed as array keys
2021-10-07 12:37:32 +02:00
Ralf Becker
16d02a856c fix missing icons after previous commit 2021-10-07 11:57:43 +02:00
Ralf Becker
7a93814c25 fix PHP 8.0 error when deleting a Kanban card
- link deletion failed when link_id was "" as in PHP 8.0 "" < 0 --> gave the error
- link to card was never deleted as board_id is not stored in card
2021-10-07 10:44:59 +02:00
Ralf Becker
7c40fc0981 an other chunk of fixed PHP 8.0 Warnings 2021-10-07 10:16:09 +02:00
Hadi Nategh
8c47c14b8d Fix styling in toolbar 2021-10-06 15:46:19 +02:00
Ralf Becker
9a15aad67d fix mail account creation under PHP 8.0
PHP 8.0: "new" > 0 === true
PHP<8.0: "new" > 0 === false
2021-10-06 12:32:54 +02:00
Hadi Nategh
ed86f5bfae PHP8: fix error Illegal offset typePHP, happens while moving mail from one account to another 2021-10-06 11:43:43 +02:00
Hadi Nategh
b6319bc18b Fix wrong condition on checking url strlen 2021-10-06 11:35:53 +02:00
Ralf Becker
56f60c691f next big chunk of fixed PHP 8.0 Warnings 2021-10-05 14:21:36 +02:00
Ralf Becker
29d2d7a580 fixing some conditions in the previous commit stalling InfoLog list 2021-10-05 11:35:56 +02:00
Ralf Becker
6ac401ef19 fixing a ton of PHP Warnings slowing us down in PHP 8.0 2021-10-05 11:35:56 +02:00
Ralf Becker
8084758d76 fix PHP 8.0 error: count(): Argument #1 ($value) must be of type Countable|array, string given 2021-10-04 13:05:13 +02:00
Ralf Becker
eebc939ff2 fix PHP 8.0 Warning: Argument #2 of array_merge must be of type array, boolean given 2021-10-04 11:01:53 +02:00
Ralf Becker
712786c927 improve parsing if only a fullName is given to support the following:
- Becker, Ralf --> surname: Becker, personal: Ralf
- Ralf Becker  --> surname: Becker, personal: Ralf
- Becker --> surname: Becker
2021-10-04 10:41:45 +02:00
Ralf Becker
10c35381d5 improving parsing of country data:
- if we got a country-name but no -code, look up the code
- if we got a country-name like "Name (Name2)" try both separate first
- if we have a valid country-code set the -name to be the untranslated one as our UI does
2021-10-04 09:59:16 +02:00
Ralf Becker
b90dcede90 fix parsing with no street data and of custom fields 2021-10-03 18:48:33 +02:00
Ralf Becker
73b8f6d9f6 if no separate name-components given, simply split first word off as n_given and rest as n_family 2021-10-01 18:28:57 +02:00
Ralf Becker
7e26f64e49 add an additional static method Api\Mail\Smtp::mailbox_address()
as PHP 8.0 does not allow to call a non-static method static, even if $this is (conditionally) not used
2021-09-29 10:11:47 +02:00
Hadi Nategh
643f1cf7c4 Add compiled js file from commit ae5e11f7a2 2021-09-28 17:12:45 +02:00
Hadi Nategh
39d15ccece Translate details title before setting it into the DOM 2021-09-28 17:11:46 +02:00
Ralf Becker
3e035a70a4 implement and document PATCH 2021-09-27 13:30:41 +02:00
Ralf Becker
392b8036f4 REST API allow sending a JSON patch to update or create a new contact (currently only via POST or PUT, not as PATCH!)
allows eg. to create a contact from a simple Wordpress contact-form only supporting POST requests and a flat object, see new example in the documentation
2021-09-27 13:30:41 +02:00
Ralf Becker
547a5aa605 missing @type="NameComponent" and updated examples in docu with @type 2021-09-27 13:30:41 +02:00
Ralf Becker
a463264926 Implemented @type attributes for all top-level objects from JsContact Draft 08 2021-09-27 13:30:41 +02:00
Ralf Becker
6fe8604b8b Use EGW_(USER|PASSWORD) from doc/phpunix.xml instead of hardcoded demo/guest 2021-09-27 13:30:41 +02:00
Ralf Becker
322652de95 Contacts REST API:
- implement missing PUT/POST of distribution list / CardGroups
- implement changes from next JsContact draft:
  + string plus extra localizations attribute instead of localizedString object
  + use "<domain>:<name>" for vendor attributes
- add/parse urn:uuid: prefix if UID is a UUID
2021-09-27 13:30:41 +02:00
Ralf Becker
ce5389d0d5 finished REST API for contacts modulo docu and bugs ;)
- JsCardGroup now used for distribution lists
- responses are not in "responses" attribute (no longer in root of object)
- fix sometimes empty / different members between PROPFIND/REPORT/JSON-GET and GET of group (caused by wrongly implemented limit to given AB)
- JSON pretty-print only if requested by Accept: application/pretty+json
- fix invalid JSON for errors (caused by opening {"responses": already sent
2021-09-27 13:30:41 +02:00
Ralf Becker
3bc015a90d got POST, PUT and DELETE request to add, update and delete contacts working
added JSON exception handler with nicer JsCalendar parse errors
2021-09-27 13:30:40 +02:00
Ralf Becker
655f52a876 fix excess separator, if not 2nd street-line 2021-09-27 13:30:40 +02:00
Ralf Becker
18324dfa8e WIP REST Api for contacts 2021-09-27 13:30:40 +02:00
Ralf Becker
38c07d7f69 WIP REST API for contacts using JsContacts draft 2021-09-27 13:30:40 +02:00
Ralf Becker
9babcdf010 fix PHP 8.0 error: implode(): Argument #2 ($array) must be of type ?array, string given 2021-09-24 12:30:20 +02:00
Ralf Becker
37a938f38d Changelog for 21.1.20210923 2021-09-23 15:02:29 +02:00
Hadi Nategh
5a51732752 Move framework push boradcast method into base class 2021-09-22 11:56:50 +02:00
Hadi Nategh
32ef0d5e36 Fix toolbar's 3dots broken styling 2021-09-22 10:17:42 +02:00
Ralf Becker
e4c82ac1fa * Filemanager/Sharing: create different share-token for different recipients (before recipients where added to the token)
- allows to individually remove the token, otherwise new token for the other recipients need to be redistributed
- sending one email to multiple recipients still creates a single share-token for all the recipients (send multiple mails if that's not desired)
2021-09-20 13:28:52 +02:00
Ralf Becker
bad32959c2 missing files from filemanager mount GUI 2021-09-13 19:44:01 +02:00
Ralf Becker
d596f76d43 * Filemanager: added user-interface to mount WebDAV or SMB shares 2021-09-13 19:43:57 +02:00
Ralf Becker
7d08ac4936 preferring get_rrows over get_rows to fix SQL error in timesheet merge 2021-09-13 18:03:34 +02:00
Ralf Becker
f2f1af58ce allow pushing to multiple users in one request 2021-09-10 14:13:50 +02:00
Hadi Nategh
d6dde9e59b Apply compiled js file for commit 6e88dead8e 2021-09-09 16:38:32 +02:00
Hadi Nategh
9dfa960bf6 Fix youtube video starts to play automatically after being seeked to a time 2021-09-09 16:35:52 +02:00
Hadi Nategh
6e88dead8e Add an option to configure toolbar's list header style 2021-09-09 16:20:08 +02:00
nathan
93aa346090 * Api: Fix some merge files were opened in browser instead of downloaded 2021-09-03 09:44:21 -06:00
Ralf Becker
95c5fed125 * PostgreSQL/Addressbook/All Apps: fix SQL error in history tab if there are attachments 2021-09-03 09:58:34 +02:00
nathan
a7f7ceb67f * Api: Fix entry list stops scrolling if a row is updated while the tab is not visible
I checked that this one does not break, nm still works
2021-09-01 11:58:55 -06:00
Ralf Becker
5e26bee384 Revert "* Api: Fix entry list stops scrolling if a row is updated while the tab is not visible"
This reverts commit 8c6fea66ca.
2021-09-01 10:02:32 +02:00
Ralf Becker
73301e9276 * Addressbook/PostgreSQL: fix SQL error deleting a contact finally 2021-09-01 09:34:43 +02:00
nathan
8c6fea66ca * Api: Fix entry list stops scrolling if a row is updated while the tab is not visible 2021-08-30 09:11:38 -06:00
Hadi Nategh
1fbb949b43 Add missing compiled js file for video widget new features 2021-08-25 16:03:09 +02:00
Hadi Nategh
557b47b15f Fix volume gets initiated on a wrong object becuase the youtube object is not yet ready 2021-08-25 15:59:16 +02:00
Hadi Nategh
904e6a96e1 Add getter/setter for video's mute option and fix volume unit 2021-08-25 15:58:46 +02:00
Hadi Nategh
677e11df1c Fix volume and playbackrate for both youtube and html video 2021-08-25 15:58:07 +02:00
nathan
43eed77879 Vfs: Fix Stylite/Links/StreamWrapper was not respecting backup parameter 2021-08-23 09:04:37 -06:00
Ralf Becker
101728414d missing js files for 21.1 from "implement some missing features from old eTemplate" 2021-08-23 15:11:04 +02:00
Ralf Becker
0463b796ce implement some missing features from old eTemplate:
- evaluate class set on a grid cell as done for the widget contained (probably more a bug-fix then a feature)
- allow to preset query for link-entry widget by passing an object with a query attribute
- allow to overwrite not only $readonlys[__ALL__] but also widget readonly attribute with a $readonlys value of false
2021-08-23 14:28:34 +02:00
Ralf Becker
5bc4dc90e3 need to catch the statement in line 1347 2021-08-18 11:21:12 +02:00
Ralf Becker
226ee1485d * PostgreSQL: fix SQL error when accessing eg. InfoLog
Links class trys to delete empty attachment directories and virtual / empty attachment directories have non-integer (hash) id causing an SQL error in PostgreSQL.
2021-08-18 11:21:12 +02:00
Ralf Becker
c609485fe4 update script to remove hashes/non-email-addresses from egw_history_log.share_email 2021-08-17 18:24:52 +02:00
nathan
b8acaae1c5 * Api: Fix changes in history log had a hash instead of user if the change was made after a share was opened. 2021-08-17 18:24:52 +02:00
Hadi Nategh
7122b6b2d0 Do not activate cropper when the widget is set to readonly 2021-08-16 12:31:28 +02:00
Hadi Nategh
16f71b3a0b * Knowledge Base: fix pasting/dragging image into htmlarea editor does not work 2021-08-16 11:53:42 +02:00
Ralf Becker
4152c957fa * Calendar/Addressbook/InfoLog: no longer allow to immediate delete entries as it breaks CalDAV/CardDAV sync
always show deleted filter and set deleted status in calendar
see #29778
2021-08-13 15:57:13 +02:00
Ralf Becker
2d24362f8f remove config allowing to immediately delete contacts (as it's required for sync) 2021-08-13 15:57:13 +02:00
Hadi Nategh
2a13f7a3df Implements volume and playback options for video widget (both for html video and youtube) 2021-08-13 12:51:10 +02:00
nathan
79c9eb9e9b Api: Add some extra parameters to Merge::merge_entries() so overridding classes can still use the parent method, passing in IDs & merge object 2021-08-11 09:05:40 -06:00
Ralf Becker
d882ff4738 * Setup: support uninstalling automatic installed apps (no more reinstalling next update) 2021-08-03 19:09:37 +02:00
Ralf Becker
8ffba9d400 Changelog for 21.1.20210723 2021-07-23 08:09:49 +02:00
Ralf Becker
e95403eac6 missing file from backport 2021-07-23 07:57:15 +02:00
nathangray
0541089170 Api: Fix missed change in nested document actions
see 186e03671a
2021-07-22 11:58:42 +02:00
nathangray
16278dd064 Fix PHP warnings for PHP 8 compatability 2021-07-22 11:36:24 +02:00
Ralf Becker
45d77b594d keep original REQUEST_URI in ORIG_REQUEST_URI when modifying it 2021-07-22 11:29:11 +02:00
Ralf Becker
10c24c1830 * Filemanager/VFS: when creating a new file as root eg. via (docker exec) filemanager/cli.php do NOT create files unreadable by webserver 2021-07-22 11:26:42 +02:00
Ralf Becker
fdaac697e2 got symlinks working for filesystem streamwrapper and fix one bug in Vfs with symlinks 2021-07-22 11:25:15 +02:00
nathan
f7aef98666 Implement symlink for filesystem StreamWrapper with test
Whether it works or not depends on filesystem though.
2021-07-22 11:25:15 +02:00
nathan
e7f24461f8 Move symlink test into StreamWrapperBase so it can be run on all StreamWrappers 2021-07-22 11:25:15 +02:00
nathan
38add67ea9 Better VFS test cleanup 2021-07-22 11:25:15 +02:00
nathan
ac41289ecd Fix wrong permission constant used, resulting in permissions when there shouldn't be 2021-07-22 11:19:00 +02:00
Ralf Becker
8a411e7f46 need to call Vfs\StreamWrapper::init_static() after setting Vfs::$user
Vfs::$user should be protected and moved to Vfs\Base plus a getter and setter method added for public access,
as after setting it in 21.1+, Api\Vfs\StreamWrapper::init_static() need to be called to set the default user context!
2021-07-22 09:13:46 +02:00
nathan
7a5804c2e7 Fix symlink directory problem from 2a64e79 and add a unit test to avoid that in the future 2021-07-21 11:29:38 -06:00
nathangray
4606a29408 Api: Fix bug where StreamWrappers that mapped onto other StreamWrappers would be parsed earlier than we want, leading to the first StreamWrapper not getting used. 2021-07-21 11:29:26 -06:00
Hadi Nategh
96d6b22db7 Add missing egw_app js compiled file from commit dca3c06b47 2021-07-13 11:50:32 +02:00
nathan
e75bef4415 Missed part of b021767ac1, not sure why it didn't come 2021-07-12 16:38:18 -06:00
nathangray
7f63e612dd Make sure nested document actions open in new tab, same as others. 2021-07-12 16:37:20 -06:00
nathangray
a728276a15 Change merge download/Collabora to a common generation method, avoiding need to POST.
This allows Kanban to download merge files
2021-07-12 16:30:01 -06:00
Ralf Becker
0a51e80639 pending translations from our translation server 2021-07-12 08:17:02 +02:00
nathangray
dca3c06b47 Fix PUSH new entries did not show if filter had multiple values
(cherry picked from commit 0caabaf516)
(cherry picked from commit 2c2563eccf)
2021-07-05 09:59:52 -06:00
Hadi Nategh
32edce1626 Try to take only quoted_printable to decode and avoid decoding url params as quoted 2021-07-01 17:14:13 +02:00
Ralf Becker
7e17478c9a Changelog for 21.1.20210629 2021-06-29 09:43:00 +02:00
nathangray
2d0bb9fda7 Add missing backport from 488f01aea9 2021-06-25 11:12:57 +02:00
Hadi Nategh
7297789e79 Avoid triggering initial resize if not necessary 2021-06-24 16:28:03 +02:00
nathangray
12591f3911 Api: Fix Asyncservice did not have proper filesystem access as the job user 2021-06-24 08:20:26 -06:00
nathangray
b7fab5d414 Etemplate: Change r/o URLs to use label as link text 2021-06-21 08:44:57 -06:00
Hadi Nategh
001d5168ee Fix 404 errors caused by none existing html editor icons 2021-06-15 12:12:11 +02:00
Ralf Becker
4ef9b08457 fix class Api\Mail\Config not found 2021-06-15 10:53:31 +02:00
Ralf Becker
5c7925773b * Mail/Dovecot: allow to disable caching of flags in site config to support Dovecot private seen flags on shared folders 2021-06-15 10:24:55 +02:00
nathangray
00e5c1e521 * Api: Prevent invalid customfield names 2021-06-11 10:05:44 -06:00
Ralf Becker
2c715a4578 fix typo (smallPART) and compress login image 2021-06-11 15:43:06 +02:00
nathangray
96fd9153d3 Etemplate: Better error message for parse errors in xml strings (not files)
This happens in things like Transformer, where we generate some XML for parsing
2021-06-10 11:36:05 -06:00
nathangray
1334d963d9 * Api: Clear initial load URL after using it, so F5 takes you to the app's normal entry point 2021-06-10 09:08:39 -06:00
Hadi Nategh
134aa92712 Clear xml errors in buffer after using xml in Mail otherwise it may get caught wrongly further in etemplate widget 2021-06-04 14:05:29 +02:00
nathangray
ecbfecf436 Etemplate: Give date-duration number a little more space. It can now fit "10.25" 2021-06-01 08:35:51 -06:00
Ralf Becker
8bb4f56149 implement (increment|decrement)Cache to avoid race-conditions if multiple processes update a value
implemented in memcached and APCu backends, default implementation using get&set in base-class
2021-05-31 20:32:10 +02:00
Ralf Becker
cda95d8188 store some lock-data, so only a single callback calculate data on cache-miss
done to avoid race-conditions where many processes try to fetch and therefore calculate some expensive to calculate data
eg. mass-mailings in our hosting
2021-05-27 08:52:58 +02:00
Ralf Becker
691fb06de5 * Setup: skip files backup on update even if configured
It might takes the server down for hours and updates usually dont affect the files
2021-05-27 08:50:02 +02:00
Ralf Becker
5ca7452613 * Mail/Admin: fix not working mail wizard
caused by loading app.js again and therefore this.et2 is not set --> only load / use egw.applyFunc() if not already set
2021-05-25 18:26:13 +02:00
Ralf Becker
d733cb48e9 report and log enabling push (and other IMAP errors)
don't switch regular reload handling off in that case
2021-05-25 18:26:13 +02:00
Ralf Becker
a117e4cf6a port csv-export from old eTemplate nextmatch to separate Api\Etemplate\Export class to not have to rely on old eTemplate 2021-05-23 09:20:36 +02:00
Ralf Becker
7f17404d98 Changelog for 21.1.20210521 2021-05-21 17:54:03 +02:00
nathangray
35bc2ffe70 Api: Fix accounts list (Sql) would be empty after refresh if there were less than 50 accounts
- Fix some accounts backend were not returning results indexed by account ID
2021-05-21 09:18:09 -06:00
Hadi Nategh
f266766b95 Fix opening an app link as popup loses it's opener when its origin app tab is not loaded 2021-05-21 17:01:22 +02:00
Hadi Nategh
e919523a51 Merge login Ui changes 2021-05-21 16:46:54 +02:00
Hadi Nategh
3037191ea8 WIP login Ui:
- Re-arrange registration links
- Fix bg colors
- Fix social icons padding
2021-05-21 16:17:49 +02:00
Hadi Nategh
33951a6377 WIP login Ui:
- Get login messages the same style as egw messages
- Arrange logo and social icons
2021-05-21 16:17:00 +02:00
Hadi Nategh
a2d182c11a Add extra icons for login apps content 2021-05-21 16:10:56 +02:00