ralf
ced6c77f46
fix PHP 8.x TypeError sending mail
2022-05-10 18:43:30 +02:00
ralf
9a0cc36366
fix PHP 8.1 throws \mysqli_sql_exception or \PDOException for SQL errors
...
- change them to our regular Api\Db\Exception
- for prop(find|patch) explicitly catch PDOException to deal more graceful with non-ascii prop-names
2022-05-10 12:36:25 +02:00
ralf
c4e0989bf9
replace original message header with fieldset in html and convert it to plain as before
2022-05-10 11:51:35 +02:00
ralf
5791ef0117
trying "harder" to set users default font and -size in TinyMCE
2022-05-09 18:37:56 +02:00
nathan
66ee3687b6
Fix widgets couldn't change statustext once set
2022-05-09 10:02:07 -06:00
nathan
daa324e948
Fix button wouldn't give its image
2022-05-09 09:59:13 -06:00
Hadi Nategh
87f77a52ea
Fix seek to a new time in youtube video does not work when pause action happens instantly after it
2022-05-09 11:25:33 +02:00
ralf
e82387c15e
adding automatic conversation to et2-vfs-mime, fix gallery indicators to use images again and some CCS fixes
2022-05-07 13:31:46 +02:00
ralf
849291889e
fix some TypeScript errors displayed by IDE in new ExposeMixing
2022-05-07 11:35:27 +02:00
nathan
816ab87f13
Et2VfsMime added as WebComponent
2022-05-06 15:07:07 -06:00
nathan
797c615060
Move Et2Box into Layout
2022-05-06 11:57:53 -06:00
nathan
5a324e448a
Define some system-wide CSS variables that can be used anywhere, set error color
2022-05-06 11:49:30 -06:00
nathan
ca563cf8fb
Use the same style for webcomponent validation messages as legacy messages, update both to latest webcomponent style.
2022-05-05 15:40:28 -06:00
nathan
063c772fbb
Et2DescriptionExpose, used in Mail app
2022-05-05 13:48:39 -06:00
ralf
7dc959c223
automatic convert <(image|description) expose_view="true" to <et2-*-expose
2022-05-05 19:07:44 +02:00
nathan
632c40fbb7
Et2ImageExpose, used in Resources app
2022-05-05 08:51:48 -06:00
Hadi Nategh
a8bcdd88b0
Get rid of jQuery.Color from jquery-ui
2022-05-05 15:55:49 +02:00
ralf
7e70eee888
final fix for "Network error" when stream files to client
...
It is important to FIRST disable zlib.output_compression (before headers are sent!) and THEN end all output-buffering!
Without the two steps in this order, we are either limited by the memory limit or get the "Network error", because the streaming/fpassthrough does not apply the compression.
2022-05-05 12:47:31 +02:00
ralf
3eaed09185
fix not working et2-date-since and rename et2-date-time_today to et2-date-time-today
...
create a new method egw.getTimezoneOffset() return current offset according to user preferences on server-side, like (new Date).getTimezoneOffset()
2022-05-05 11:38:48 +02:00
nathan
efcd5bbe51
Et2ImageExpose
2022-05-04 17:31:42 -06:00
nathan
3c6c2aec1a
Don't break everything if something goes wrong cloning webcomponent for nm row
2022-05-04 17:27:58 -06:00
nathan
54b2ac54b1
Start on Expose mixin
2022-05-04 11:58:04 -06:00
Hadi Nategh
eecad5f70f
Set back focus to the first field in form
2022-05-04 14:14:48 +02:00
Hadi Nategh
9cdfc93a52
Fix stolen focus on egw input fields
2022-05-04 12:50:29 +02:00
ralf
13c633b064
lower number of rows queried per chunk to 2000 to avoid memory_limit on huge tables
2022-05-04 12:22:29 +02:00
nathan
10af4f7514
Historylog + webcomponents
...
- historylog widget now uses webcomponents for timestamp & user, and whenever possible for values
- History::get_rows() formats customfield date/date-time values as needed
- implement setDetachedAttributes(), if nextmatch & historylog are calling them on webcomponents, might as well use that to set what they pass
2022-05-03 11:01:42 -06:00
Hadi Nategh
ed5e7414ac
* Mail: Fix htmlEditor does not include styling on each tag causing mail content sent with no styling
2022-05-03 15:43:03 +02:00
ralf
38d44ee3e2
fix some egw_LAB not defined errors by using top.egw_ready instead
2022-05-03 15:40:06 +02:00
ralf
b2044db11e
remove jQueryUI date picker
2022-05-03 15:38:47 +02:00
ralf
9dd44f7929
fix not loaded grants / other users categories after last commit
2022-05-03 13:33:51 +02:00
ralf
f72497db13
HistoryLog: use new Et2DateTimeReadonly widget
...
thought set_value of web-component get not called and nothing is displayed therefore
2022-05-03 11:26:55 +02:00
ralf
7fb436d44c
HistoryLog: making sure server-side sends eT2 compatible values and use new Et2DateTimeReadonly widget
...
thought set_value of web-component get not called and nothing is displayed therefore
2022-05-03 11:25:55 +02:00
ralf
1215762f04
if data_format given, try that first, before leaving it to Api\DateTime to figure it out
2022-05-03 09:46:15 +02:00
ralf
9b6e6ad819
fix empty date customfield caused by not set app-name, defaulting to currentapp now
2022-05-03 09:12:20 +02:00
nathan
215dc21ec5
Avoid error if label is missing
2022-05-02 17:43:10 -06:00
nathan
bbb6444dce
If caller wanted to iterate over all et2_widgets (default), include all Et2Widgets as well
2022-05-02 17:41:35 -06:00
nathan
cff1671f6f
Et2Date: Handle formatting full month d-M-Y
...
Maybe we just pass all formatting off to flatpickr?
2022-05-02 17:10:07 -06:00
nathan
ae73511958
Make sure customfields get their set_row_value() method called. Fixes customfield dates were not sent in correct format
2022-05-02 17:06:33 -06:00
nathan
b0a57a05fd
Calendar refactors:
...
- Remove some more jQueryUI.datepicker usages
2022-05-02 15:23:03 -06:00
nathan
8ef591279d
- Don't highlight birthdays in date picker (calendar & regular) though tooltip remains
...
- Un-highlight weeks when mouse moves off week number
2022-05-02 13:46:55 -06:00
ralf
df938c79de
fixed messed up signature changing from / mail-accounts
...
also fixed some undefined warnings
2022-05-02 17:19:37 +02:00
ralf
3777ba7691
fix not working callback syntax with egw.jsonq() and changing callback to promise (after the fix)
2022-05-02 16:22:12 +02:00
ralf
dc784800b7
loading new Et2Date* instead of dropped et2_date* widget, thought r/o variants in nextmatch are still not working
2022-05-02 13:53:24 +02:00
ralf
21def67f83
fixed a couple more calls to egw.link_title() without 3rd parameter
2022-05-02 11:43:51 +02:00
ralf
74ad3ba7b0
change egw.jsonq() and egw.link_title() to return promises
...
* egw.jsonq() now always returns a promise like egw.request(), still supporting old callback syntax
* egw.link_title(_app, _id, _callback, _context, _force_reload) supports boolean values for _callback (to not break existing code)
- false: just a cache lookup (like current call with just 2 parameters), returning null, if no title is cached, or the title
- true: always return a promise, which might already be resolved, if title was cached
- function: also returns a promise and calls the callback
--> calling egw.link_title(_app, _id) without 3rd parameter is deprecated now (gives a console.trace), to be changed in future to always return a promise, unless called with false, to just return a cache-lookup
* Et2SelectAccountReadonly and et2_link_widget is changed to use the new/updated syntax with promises
2022-05-02 11:27:33 +02:00
ralf
78c9b4ac50
fix displayed [] instead of [Login]
2022-05-02 09:15:46 +02:00
ralf
e4c2432f4c
replace jQuery.ui.keyCode.X with EGW_KEY_X
2022-04-30 10:33:07 +02:00
nathan
f54c7f40bb
Improve holidays() return documentation
2022-04-29 14:37:52 -06:00
nathan
b44f4ea30d
Move holidays to its own file, show holidays in all date selection calendars
2022-04-29 14:37:52 -06:00
nathan
de2dade286
Et2SelectReadonly: Make sure we're dealing with string value
2022-04-29 14:37:52 -06:00
ralf
baf07a4a2c
only load localization, if we have one
2022-04-29 17:40:43 +02:00
nathan
e5f238584e
Et2Date: Avoid error localizing English
2022-04-29 09:14:51 -06:00
ralf
ef7c175814
remove jQueryUI DateTime picker and splitter and use them also for eTemplates marked as legacy
2022-04-29 17:05:43 +02:00
Hadi Nategh
c707af32b6
Add hideOnEscape and noCloseButton options into ET2Dialog
2022-04-29 14:28:43 +02:00
ralf
21d362b5fa
Merge remote-tracking branch 'origin/master'
2022-04-29 12:44:59 +02:00
ralf
4fd00df861
fix diverse undefined array-key or variable warnings
2022-04-29 12:44:43 +02:00
nathan
63b2755dbf
Et2Date: Add localization
2022-04-28 15:46:39 -06:00
Hadi Nategh
36f41a9470
Handle appendTo attribute used in legacy dialog properly
2022-04-28 18:00:37 +02:00
ralf
0758e17d24
* CalDAV/Calendar: expand-property report used by iCal app (Mac) did not return rights on other users calendar
...
but other users/groups which have rights on the queried users calendar
Also on longer enumerate group-members in group-memberships as calendar-proxy-(read|write) groups, as iCal app understands group-memberships.
2022-04-28 16:10:16 +02:00
ralf
a32bb2abde
do NOT log not found template because of missing $row_cont expansion on server-side
2022-04-28 10:39:08 +02:00
nathan
278f75546a
Fix submit proceeded even if legacy widget failed validation
2022-04-27 11:56:03 -06:00
nathan
fd53dfe82b
Fix PHP error if cf['type2'] is a single value, not array
2022-04-27 11:55:03 -06:00
nathan
9dd6f44715
Calendar: Sidemenu calendar CSS adjustments
2022-04-27 09:53:19 -06:00
ralf
c62b305b4a
return a Promise from egw.accountData and deprecated, but still support, the use of a callback
...
egw.accounts can be called with a second parameter async=true to query accounts async and return a Promise
2022-04-27 17:33:07 +02:00
ralf
03099756d7
fix PHP 8.1 Error: Serialization of 'LDAP\Connection' is not allowed
2022-04-27 13:00:10 +02:00
nathan
1c42668a97
Change sidebox calendar from jQuery to webcomponent / flatpickr
2022-04-26 15:27:49 -06:00
nathan
0017b78b53
Et2Date: Add support for inline dates & passing a format to parseDate
2022-04-26 15:24:58 -06:00
ralf
2d0de5f287
another chunk of fixed PHP Warning: Undefined array key or variable in api
2022-04-26 20:24:37 +02:00
ralf
917a833f89
fix "a ton" of PHP Warning: Undefined array key or variable in mail code
2022-04-26 18:46:38 +02:00
Hadi Nategh
fcf195cf47
Fix toolbar menulist doesn't get closed after clicking away from it
2022-04-26 14:53:01 +02:00
Hadi Nategh
a835d5bc6e
WIP replacing jQuery-ui: fix et2_toolbar styling with new details tag
2022-04-26 11:18:43 +02:00
nathan
7d86272b28
CSS / Layout cleanup
...
- Fix select with tags=true causes hidden WebComponents to display
Chosen wants to do sizing calculations which wasn't working properly on w.c.
2022-04-25 10:46:51 -06:00
Hadi Nategh
ca794817eb
WIP replacing jQuery-ui:
...
- Replace accordion with html details
2022-04-25 17:24:29 +02:00
nathan
65c683b9a2
Change styling on validation messages
2022-04-25 08:47:12 -06:00
ralf
941142c5be
fix CallbackIterator to return mixed, as it can be overwritten with a callback
2022-04-24 21:27:53 +02:00
ralf
128b6b06df
fix PHP 8.x TypeError: string & int
2022-04-24 20:52:49 +02:00
ralf
d92c5a94a6
fix PHP 8.1 Deprecated by adding return type declarations
2022-04-24 18:15:47 +02:00
nathan
aafbc58cdd
Validation message styles
...
- Changed to absolute position to avoid reflow
- "Better" style
2022-04-22 16:07:57 -06:00
nathan
4f17302bb1
CSS / Layout cleanup - better autosize
...
- More consistent sizing/position for invoker
2022-04-22 15:22:31 -06:00
nathan
ec8b32c01d
CSS / Layout cleanup - better autosize
...
- let things inside box shrink, actual widget can decide minimums
- Slotted inputs take up full width by default
- More consistent sizing/position for invoker
2022-04-22 15:21:46 -06:00
nathan
f8f04071be
CSS / Layout cleanup
...
- Remove margin from input,button,select
- Fix some spacing issues
- Switch selects from display:inline-block to display:block so they take up all parent's space
- Let background (required) color show through select tag
- Some layout tweaks on mail account template
2022-04-22 13:07:22 -06:00
nathan
6feb9f468a
Handle missing nextmatch controller when setting up auto-refresh by trying again later.
...
(Missing controller caused by new template loading)
2022-04-22 10:52:16 -06:00
nathan
f18dd19536
Et2Split: Make bar darker on hover
2022-04-22 10:46:41 -06:00
ralf
eb894c50ca
fix an other case of "Network error" when downloading as ZIP
2022-04-22 11:00:09 +02:00
nathan
166db3f4d2
Et2Description: Fix extra space while preserving line breaks
2022-04-21 10:41:30 -06:00
nathan
19ae591bdf
Et2Split: Add a background color to the splitter bar
2022-04-21 09:09:59 -06:00
ralf
f05ce485ca
do not generate a custom fileAs for new contacts
2022-04-21 15:45:20 +02:00
ralf
f42f26d86b
always generate minified CSS, if grunt is installed
...
- still run other npm tasks (install & build), if grunt is not installed
- run "npm install --legacy-peer-deps", to cope with dependency mismatch caused by downgraded grunt-newer
--> if developer install should not use minified CSS: remove grunt and the previous generated .min.css files
--> if downgraded grunt-newer caused CSS "problems": run once manually: grunt cssmin
2022-04-21 13:45:38 +02:00
nathan
416136dc24
Et2Description: Fix missing styles from extending classes (Et2Url) while also keeping decrypt on hover working
2022-04-20 16:23:53 -06:00
nathan
234684061d
Et2Split: Bugfixes
...
- better handling of nested dynheight
- handling orientation property
- avoid resizing when not visible
2022-04-20 14:15:49 -06:00
nathan
94f843cd50
Et2Widget: Add modifications in when transforming attributes
2022-04-20 14:09:45 -06:00
nathan
ce14c1c9f6
Et2Split: Convert splitter to webcomponent
2022-04-19 09:36:44 -06:00
nathan
44c8b2f372
Et2Widget: More complete handling of child object styles property when it is missing
2022-04-19 09:31:10 -06:00
nathan
18f6d1ee0b
Et2Image: Fix "TypeError: this._imageTemplate is not a function"
...
I'm not sure how that happened. Autocorrect?
2022-04-14 08:50:34 -06:00
nathan
748e2ee70e
Et2Image: Use slotted image so most CSS still works
2022-04-13 10:37:55 -06:00
nathan
0d6d18e3fa
Et2Image: Show as clickable if image has href OR onclick
2022-04-13 08:34:24 -06:00
nathan
0f362f9717
Put Et2Description content into light DOM to fix decrypt on hover
2022-04-12 16:28:36 -06:00
nathan
319bd51f80
Et2Image bugfixes
...
- No src or default_src gives nothing, not missing image
- Fix etemplate.php parser so buttons that get converted to images still submit
2022-04-12 10:00:43 -06:00
nathan
75e573b6a1
* Api: Merge placeholder that checks for EMPTY {{IF fieldname~EMPTY~True text~False text}}
...
EMPTY check was already there, just adding it explicitly into the placeholder list
2022-04-12 09:04:18 -06:00
nathan
e3be42721e
Fix Et2Image did not double-transform src for as legacy image did
...
eg:
if $content[0][type] = "group"
${row}[type] => "0[type]" (single transform)
0[type] => "group" (double transform)
Also, fix type from addressbook list to not need double-transform
2022-04-11 15:03:24 -06:00
nathan
6ed888a80e
Fix missing Et2Image label
2022-04-11 13:38:24 -06:00
nathan
49d40c18e8
Set nextmatch as parent so newly cloned webcomponents in nm row have it before we start setting properties.
...
Fixes egw.image() not having correct app.
2022-04-11 11:21:39 -06:00
Hadi Nategh
8175a592d5
Fix some mail actions e.g. "view as source" or "Html" no longer working
2022-04-11 12:43:18 +02:00
ralf
abba483377
limit et2-buttononly w/o background_image conversation to et2-image to non-list / -NM templates
2022-04-09 09:15:18 +03:00
nathan
77a11cb5fe
Fix image src not getting set
2022-04-08 14:03:29 -06:00
nathan
2ba299f876
Change buttons that used to be just an image to be just an image
...
- Remove Et2ButtonImage, it's not needed. Buttons without labels look the same
- Add Et2Image to take its place
- Change etemplate modifier to use Et2Image for buttononly
- Some styling for mail account placeholder button
2022-04-08 13:03:20 -06:00
ralf
150f741f5a
Changelog for 21.1.20220408
2022-04-08 13:23:18 +03:00
ralf
28b42f4276
* Filemanager/SMB: fix not working sharing of SMB shares (with fixed credentials!)
...
sanitize URL before sending them to PHP / other stream-wrappers like the smb one, which chokes on our ro=1 parameter
2022-04-08 12:42:53 +03:00
nathan
70c5cedec7
Better styles for disabled buttons
2022-04-07 16:45:24 -06:00
nathan
3f86e98257
Deal with et2-button-image showing label
2022-04-07 16:24:45 -06:00
nathan
fe91205192
Check & set context for filesystem:// too
2022-04-07 14:18:13 -06:00
nathan
0d32bb6e5c
Api: Make sure mountpoint URL query and target URL query don't double ? in path query
2022-04-07 14:18:13 -06:00
ralf
e782cb9105
add processing of new et2-button-image tag and new/changed et2-button attributes
2022-04-07 21:05:32 +03:00
nathan
911a2970b0
Et2Dialog: Turn on modal now that style issue is fixed
2022-04-06 15:13:51 -06:00
nathan
d1b5c796dd
Expand super.styles
2022-04-06 15:12:39 -06:00
nathan
22ae7fbf89
Use Et2Button.noSubmit instead of Et2Button.doSubmit
2022-04-06 15:08:18 -06:00
nathan
54ea13bfa8
Et2Widget: Fix the missing style property
...
... by not overriding it
2022-04-06 15:06:25 -06:00
nathan
3c28d4b9a9
Et2Button: change doSubmit (default false) to noSubmit (default true) because of nextmatch complications with boolean properties
2022-04-06 14:48:57 -06:00
nathan
725b32941f
Api: Fix sharing folders by making sure compression is off
2022-04-06 14:44:46 -06:00
ralf
1f46fdc7d6
Changelog for 21.1.20220406
2022-04-06 16:58:06 +03:00
nathan
e68e125a0a
Add accesskey property
2022-04-05 10:09:49 -06:00
nathan
57e231aced
New Et2ButtonImage that shows only image
...
Also doesn't stretch like the others do.
2022-04-05 09:15:08 -06:00
nathan
72736566e2
Convert <buttononly/> => <button doSubmit="false"/>
2022-04-05 09:13:14 -06:00
Hadi Nategh
8b147bc285
Fix removeSessionItem not working
2022-04-05 10:24:06 +02:00
nathan
a763b84be4
Et2Button properties hideOnReadonly, noValidation
...
Added hideOnReadonly, default false. Disabled/readonly buttons are now visible but disabled, unless you set hideOnReadonly="false" to get previous behaviour.
Added noValidation, default false. It's just passed to etemplate2.submit() as before
2022-04-04 16:24:01 -06:00
Ralf Becker
76e76a9e18
pending changes from our translation server
2022-04-04 13:26:38 +02:00
ralf
64c9507912
fix PHP 8.1 error/mysqli_sql_exception: Invalid character set was provided (utf-8 instead of utf8)
2022-04-04 10:19:26 +03:00
ralf
73662af7b2
LDAP resources are objects (no longer resources) from PHP 8.1+
2022-04-04 09:23:10 +03:00
nathan
17834f1be8
Fix nextmatch changing value back before it could be submitted
2022-04-01 14:52:40 -06:00
nathan
a83f9a1ec9
Get tests passing again
...
- Dates have their input as slotted, not internal
- Selects have .select_options, not .get_select_options()
- Remove this.egw().lang() use from Et2InvokerMixin._invokerTemplate()
2022-04-01 12:52:47 -06:00
ralf
9e8b291201
calling etemplate2.submit(,,no_validation=true) caused no submit (as invalid is no promise, but null)
2022-04-01 21:28:25 +03:00
ralf
b2a85e68b8
fix vfs-path widget to correctly deal with smallPART paths (hierarchical structure inside entry directory)
2022-04-01 21:00:45 +03:00
nathan
0c8824c496
Fix addressbook contact type filter was sometimes 'D' after being initialized to 'n'
...
When nextmatch moved the template in the DOM, we were re-adding already existing options which re-set the value.
2022-04-01 11:12:19 -06:00
nathan
9cd746f0b4
Fix missing nm filters
2022-03-31 08:46:36 -06:00
nathan
6120d820aa
Change to Et2Dialog
...
- History diff
- Fix some bugs in placeholder widget
- Change load listener target, the dialog content node might have been moved out before the event gets triggered
2022-03-30 15:11:15 -06:00
nathan
bfdb53b1cf
Change over some more dialogs
2022-03-30 13:24:52 -06:00
nathan
763ed85668
Fix splitter widget did not restore size from preference
...
Two problems:
1. Preference was stored as percent which splitter did not like to load directly
2. Etemplate was triggering the final finish-up, which triggered resize(), which stored the default as preference before the splitter got to its _init_splitter(),
2022-03-30 09:09:33 -06:00
nathan
632ab571db
Fix nextmatch webcomponent children stalled etemplate load, preventing et2_init() from being called.
2022-03-30 08:30:25 -06:00
ralf
790f9b2ff9
fix broken tracker mailhandling caused by protected constructor
...
also disable reading from DB, in case no (numeric) acc_id given, like from tracker mailhandling
2022-03-30 10:57:41 +03:00
ralf
e7dc51ad14
Revert "Fix splitter widget did not restore size from preference"
...
This reverts commit e8635be8c1
.
2022-03-30 10:21:22 +03:00
nathan
c12d4cebfb
Et2DateDuration: Enforce the order of display to be greatest to least
...
For example hours:days is not allowed anymore, auto-corrected to days:hours
2022-03-29 11:00:59 -06:00
ralf
22c8d8808f
Allow overwriting values in all mail accounts through an optional file /var/www/mail-overwrites.inc.php
2022-03-29 19:39:39 +03:00
nathan
e8635be8c1
Fix splitter widget did not restore size from preference
...
Two problems:
1. Preference was stored as percent which splitter did not like to load directly
2. Etemplate was triggering the final finish-up, which triggered resize(), which stored the default as preference before the splitter got to its _init_splitter(),
2022-03-29 09:17:04 -06:00
ralf
49e7aab2cc
* Addressbook: allow keeping custom fileAs value (LDAP: displayname) by adding it as first option
2022-03-29 10:25:52 +03:00
ralf
20d3394e2b
fix IDE warning/error: constructor returning something
2022-03-29 09:12:02 +03:00
nathan
13d1289910
Dialog / button fixes
...
- Get dialog contents visible in Firefox
Something in how Firefox parsed or inserted the style and children caused an error:
Node.insertBefore: Child to insert before is not a child of this node
which caused the dialog contents to be missing from the shadow DOM. This fixes the missing contents by putting the style in using a different way.
2022-03-28 11:29:21 -06:00
ralf
4f3e9fa06c
do NOT attempt to use credentials encrypted with user password in an async context
...
(where user password is not available)
otherwise an s/mime certificate or user specific password will stall sending notification, even if no smtp authentication required
2022-03-28 17:58:41 +03:00
ralf
9a07c4a1dd
do NOT overwrite everything, if vfs-upload is used without id:
...
- using fallback id of "file_widget" the client-side uses
- ignore validation, if there is no id
2022-03-28 13:32:05 +03:00
nathan
f714729c26
Dialog / button fixes
...
- Fix vfsSelect did not close (seen in collabora save as)
- Turn off destroy_on_close, vfsSelect was destroying opening session (seen in mail compose 404)
- Add doSubmit property to Et2Button, dialog no longer gives error on every button click
2022-03-25 09:55:02 -06:00
ralf
55da72a661
replace jQuery.Deferred with regular Promise
...
trying to fix not working restore of splitter size in mail, thought it did NOT help in that regard :(
2022-03-25 10:02:14 +02:00