Commit Graph

807 Commits

Author SHA1 Message Date
Hadi Nategh
8da2404279 Mobile template:
- Show fav icon when it's available
- Fix delete_action does not get removed after the row is deleted or deselected
- Fix some alignments for mail list header
2016-09-19 12:23:16 +02:00
Hadi Nategh
69604cb633 Another try to fix base_url for print_dialog template. Seems it's necessary to keep the template_base_url untocued, because template_base_url gets calculated everytime when an et2 instance loads a template. 2016-09-15 11:50:18 +02:00
Hadi Nategh
16992899d4 Let egw.link takes care of the base url. Fix sometimes nm_print_dialog template runs into CSP error 2016-09-14 15:09:32 +02:00
Hadi Nategh
1cca4183c9 WIP avatar widget:
- Implement upload and delete of contacts photo
- Add missing cropper stylesheet
2016-09-13 17:30:52 +02:00
nathangray
c2bd221ae0 Silence debug error log 2016-09-13 08:07:52 -06:00
Ralf Becker
9b09267e0b * Calendar/CalDAV: update or removal of (managed) attachments via CalDAV failed 2016-09-13 15:55:55 +02:00
Ralf Becker
4bf26a6c52 Vfs::rename() is supposted to be static, quitens warning that it is used static 2016-09-13 13:53:05 +02:00
Ralf Becker
e82ce99537 fix SQL error happening in sync-colletion in TB caused by Db->Type == 'mysqli' and Db->group_connect returning false 2016-09-12 23:22:56 +02:00
nathangray
7afd7e420b Better version of optgroup fix to still allow additional data (title, color) in option entries 2016-09-12 10:42:12 -06:00
nathangray
dee0caa875 Fix validation of select values in an optgroup always failed 2016-09-12 08:40:48 -06:00
Hadi Nategh
e231ac86cf WIP of implementing cropping avatar photo 2016-09-12 16:23:57 +02:00
Hadi Nategh
7de7af4cc1 Implement position attribute for widget dialog 2016-09-12 16:00:14 +02:00
nathangray
4dcb415f44 Try to fix redirects from AJAX calls to static methods 2016-09-09 10:27:33 -06:00
Hadi Nategh
676148ba94 Implement client-side validation check for date_duration in order to catch check the validity right after entry before submit. 2016-09-09 15:46:13 +02:00
Hadi Nategh
aff9f0eba8 Fix Ctrl+A in context menu does not get translated 2016-09-09 12:54:52 +02:00
Hadi Nategh
f98674b164 Implement step attribute for date_duration widget. Seems FF needs step to be set to be able to distinguish valid or invalid decimal input format (eg. 1.5 or 1,5) 2016-09-08 17:28:50 +02:00
Hadi Nategh
ea30baf1a3 Fix syntax issue caught by Travis which happens only for php versions older than 5.6 2016-09-08 10:10:49 +02:00
Hadi Nategh
84da56ede8 WIP avatar widget:
- Implement editable option to be able to do some action on hover over
2016-09-07 17:27:47 +02:00
Hadi Nategh
50328495a9 WIP of avatar widget: Implement client-side avatar widget 2016-09-05 17:21:14 +02:00
Hadi Nategh
cc278e0d17 WIP of letter avatar generator:
- Use hash system to pick always the same color for given user
2016-09-05 12:50:04 +02:00
Ralf Becker
4a25a4a1d3 * App apps: async notifications were not using SMTP only account, but personal one with unavailable session password 2016-09-02 18:12:04 +02:00
Hadi Nategh
c3583dbb3c WIP of letter avatar generator 2016-09-02 17:33:55 +02:00
Ralf Becker
d4ce9fce91 enhance filesystem check to also check fs_id of required nodes /, /home, /apps 2016-08-31 19:03:48 +02:00
Hadi Nategh
e0199278c8 Fix printing does not get background and images into account 2016-08-31 14:26:26 +02:00
Hadi Nategh
d8761441b1 * Mail: Fix pdf attachments do not get downloaded in mobile template 2016-08-31 12:10:26 +02:00
Ralf Becker
4b614c91ed * Filemanager: fix missing symlink overlay on mime-icon 2016-08-29 19:42:49 +02:00
Ralf Becker
4cd0d35ff7 possible fix for deactivated / or /apps 2016-08-29 17:14:48 +02:00
Ralf Becker
ef5b160fdd fix for PHP Warning: Illegal string offset 'to_id' in api/src/Etemplate/Widget/Link.php on line 327 2016-08-29 13:50:13 +02:00
Ralf Becker
026fd08125 Sqlfs::mkdir is no longer static, fixing some left over static calls 2016-08-29 13:42:57 +02:00
Ralf Becker
a6189bf9b9 Sqlfs::mkdir is no longer static, fixing some left over static calls 2016-08-29 12:56:35 +02:00
Ralf Becker
c474df28fb fix Scrutinizer bug: Api\Etemplate\Exception does not exist (missing \Exception) and remove old non-static stuff from Api\Etemplate\Widget::setElementAttribute(), as $this is allways unset for methods declared static 2016-08-28 12:51:19 +02:00
Ralf Becker
54bfaeb988 fix Scrutinizer docu bug: Api\Etemplate\Request\Files::__construct($id) $id is not array but string|null 2016-08-28 12:51:19 +02:00
Ralf Becker
8d2d4ef3dd fix Scrutinizer docu bug: Api\Etemplate\Request\Files::__construct($id) $id is not array but string|null 2016-08-28 12:51:19 +02:00
Ralf Becker
4e15b70373 fix Scrutinizer docu bug: Egw::setup() need to support null for $domain_names parameter 2016-08-28 12:51:19 +02:00
Ralf Becker
4dbd49d285 fix Scrutinizer docu bug: Api\Db has no more support for Halt_On_Error attribute 2016-08-28 12:51:19 +02:00
Ralf Becker
bcec596fff fix Scrutinizer docu bug: get_backend returns Sql|Ldap|Ads|Univention backend 2016-08-28 12:51:19 +02:00
Ralf Becker
056e0f97d2 fix Scrutinizer bug: replace new ldap (wrong namespace) with Api\Ldap::factory() 2016-08-28 12:51:19 +02:00
Ralf Becker
6c6f9eae7a fix Scrutinizer bug: non-existing Api\Api\Db\Exception\InvalidSql and delete_list accepts array of list-ids, while check_list does not 2016-08-28 12:51:19 +02:00
Ralf Becker
52ca45a228 fix Scrutinizer bug: remove non-static usage as it gives a PHP Fatal anyway, since Config::save_value() is declared static 2016-08-28 12:51:19 +02:00
Ralf Becker
9082a799e2 fix Scrutinizer docu bug 2016-08-28 12:51:19 +02:00
Ralf Becker
9f073b4c4c fix Scrutinizer bug: get_path only allows array as parameter (calendar&infolog allow int / just the id too) 2016-08-28 12:51:19 +02:00
Ralf Becker
6903ab0f12 fix Scrutinizer bug: missing required parameters 2016-08-28 12:51:19 +02:00
Ralf Becker
2ec05f8936 fix Scrutinizer docu bug 2016-08-28 12:51:19 +02:00
Ralf Becker
d2e05d5a41 fix Scrutinizer bug: Api\Auth\Exception does not exist 2016-08-28 12:51:19 +02:00
Ralf Becker
b400f38b75 fix Scurtinizer bug by explicitly returning $other_cronlines instead of not declared class var 2016-08-28 12:51:19 +02:00
Ralf Becker
87f54ac14f fix Scurtinizer bug 2016-08-28 12:51:19 +02:00
Ralf Becker
3a6be10253 * Calendar: use proxy config from setup >> configuration to download holiday calendars 2016-08-26 14:00:12 +02:00
Ralf Becker
6b7d046564 * All apps: default preferences wont save because merge-print template directory does not exist
creating /templates/$app now via update-script, if it does not already exist, it was already created for new installation and for EPL
2016-08-25 18:16:03 +02:00
nathangray
286c730d08 Allow children for paste actions automatically pulled from drop actions 2016-08-24 14:28:55 -06:00
Ralf Becker
1088278b37 no need to call accounts class, if we have no id 2016-08-24 19:43:37 +02:00
nathangray
a5b31c62ab Add ISO 8601 (Y-m-dTH:i:s) format to list of checked date formats when importing to catch double parsed dates 2016-08-24 08:22:17 -06:00
Ralf Becker
e724752600 remove deprecated use of read without id (1. parameter) to accounts class in phpgwapi 2016-08-24 16:10:52 +02:00
Ralf Becker
afa17b8236 fix PHP Fatal Call to a member function update() on null 2016-08-24 13:06:06 +02:00
Ralf Becker
6a4c89d61a * Mail: iCal attachments are shown as such, only meeting requests trigger calendar interface with accept/reject buttons 2016-08-23 17:22:55 +02:00
Hadi Nategh
b7eb55f6fa W.I.P. collab editor:
- Make all editors options available
- Add viewOptions available for configuration
- Disable active avatar by default
- Some styling for member's list, member's marker and avatar
- Add mobile template for editor
2016-08-23 12:29:49 +02:00
nathangray
7abf44c6a3 Add actions (Add) for blank parts of planner view 2016-08-22 09:39:09 -06:00
Ralf Becker
224c4ce446 * Admin/Mail/ProjectManager: add missing tree images for Stylite template 2016-08-22 13:01:36 +02:00
Ralf Becker
a8268adfb5 fix enhanced (multi-)select boxes in old eTemplate where broken and displayed only as regular select-boxes 2016-08-19 16:47:33 +02:00
Ralf Becker
845f9aee36 fix CSP error in nextmatch print, if EGroupware is installed direct into docroot
et2.template_base_url == '/' generates url //api/templates/... which is a protocol independent representation of domain api and not identical to /api/templates
2016-08-19 14:54:43 +02:00
Hadi Nategh
65b331749d Fix "From" field in mail display always get abbreviated 2016-08-18 18:57:06 +02:00
Ralf Becker
b6c5ad31db log menuaction of eT2 requests, instead of eT2 itself, to do so move update of access-log to destructor of Session class 2016-08-18 13:05:51 +02:00
Ralf Becker
f1f8c4e98d * Filemanager/WebDAV: generally deny user to delete directories /, /home, /apps, /templates (last 2 incl. subdirectories) 2016-08-18 10:04:36 +02:00
nathangray
73dbaa0dfb Preserve link order set by application 2016-08-17 10:52:45 -06:00
Ralf Becker
94bc949cfa * All apps: symlink files to not yet saved entries were not working 2016-08-17 16:05:26 +02:00
Hadi Nategh
704a47a182 W.I.P collab Editor:
- Fix collab editor define global variable conflicts with some other libraries which use define global
2016-08-16 12:52:26 +02:00
Hadi Nategh
a64adb19e6 Fix app.js files included in wrong order 2016-08-16 11:13:11 +02:00
Ralf Becker
9e0ff222f2 missed passing $append parameter to include_modules 2016-08-15 18:55:29 +02:00
Ralf Becker
c3a8012408 adding documented, but never implemented $append parameter to Framework::includeJS 2016-08-15 18:35:26 +02:00
Ralf Becker
a8e1980a15 * Addresssbook: fixed category tree looses unavailable categories (eg. private categories of other users) 2016-08-15 18:22:38 +02:00
Hadi Nategh
55c0122155 W.I.P collab editor:
- Add isDocumentModified method to wodocollabtexteditor
2016-08-15 17:18:35 +02:00
Ralf Becker
afafc8ccba calling (static) EGroupware\Api\Vfs::chown instead of using old egw_vfs not available in minimal install in account::deleted hook when moving home directory to /home/$new_user/old-home-$old_user 2016-08-15 15:43:34 +02:00
Ralf Becker
f3649bf021 fix PHP Fatal from old code using EGW_API_INC, that should point to old api and usage is decrecated in favor of autoloading anyway 2016-08-12 11:25:20 +02:00
Ralf Becker
780d35c096 add not yet detected unicode in name-part of email, like "zero width space" 2016-08-12 11:22:56 +02:00
Ralf Becker
bd24602a42 * Filemanager: fix not working changing owner or group of a file/directory (as root!) 2016-08-12 09:29:40 +02:00
Ralf Becker
ac45503630 Handle recursive directory creation in vfs layer, as not all underlaying
wrappers, eg. smb(client), support it themselfs
2016-08-12 08:49:06 +02:00
Ralf Becker
78893ad901 * Filemanager: fix PHP Fatal error when changing ownership or permissions 2016-08-11 22:39:35 +02:00
Ralf Becker
25b7334017 pending translations from our translation server, thanks to Illias and others 2016-08-10 08:55:21 +02:00
Ralf Becker
281c6d8761 * Mail: fix lost mail account password on user password change 2016-08-09 14:05:51 +02:00
Ralf Becker
4315999573 use Etemplate\Widget::registerWidget, not some third class extended from Etemplate\Widget, as that might screw up autoloading if it happes to create a circle 2016-08-09 10:11:29 +02:00
Ralf Becker
7822f84943 * PostgreSQL/Setup: fix SQL error in Backup or update: Invalid SQL: SELECT * FROM egw_pm_members
ADOdb drive for PostgreSQL requires 2. parameter for RowLock, while MySQL(i) defaults to all rows
2016-08-09 09:31:36 +02:00
Ralf Becker
674db7912e try fixing error in installtion in Travis using Postgres during admin account creation 2016-08-06 12:41:20 +02:00
Ralf Becker
ee468f40ff try creating egroupware database for postgres with psql, as creating it through SQL seem not to work in Travis 2016-08-06 11:10:28 +02:00
Ralf Becker
b26e102ded debugging db creation in Travis for postgres 2016-08-06 10:54:33 +02:00
leithoff
a41896f802 fix charset/transfer encoding issue when sending plain ascii mails but adding utf-8 signature 2016-08-05 15:12:21 +02:00
Hadi Nategh
60c34e5881 W.I.P of collaborative odf editor:
- Define ServerFactory for egw collab
- Revert unintentional commits on Server.js
2016-08-05 12:41:11 +02:00
Ralf Becker
e65812d07d * Admin: fix email address for groups could not be stored for accounts in SQL 2016-08-03 18:24:14 +02:00
Hadi Nategh
5917a70dcc W.I.P of collaborative odf editor:
- Add wodocollabtexteditor library
2016-08-03 18:16:20 +02:00
Ralf Becker
a4dc1b67bb * Api/Filemanager: add mime icons to minimal install 2016-08-03 17:20:41 +02:00
Ralf Becker
a72db03fdb * EPL/Filemanager: fix PHP Fatal using file-a-file dialog (upload with setting eg. a comment) 2016-08-03 15:26:30 +02:00
Ralf Becker
f43369973d do NOT write install_id twice, it is already generated in setup_process::save_minimal_config 2016-08-02 18:41:14 +02:00
nathangray
a2a956005e Add tooltip to datepicker Today button 2016-08-02 09:30:36 -06:00
Ralf Becker
7dde8d0938 fix not working removing of directories and changing group ownership 2016-08-02 12:19:23 +02:00
Hadi Nategh
9d1fca0710 Make sure html property of html object in egw_seperateJavascript is type of string 2016-08-02 12:17:16 +02:00
Ralf Becker
a2439dec02 fix "PHP Fatal error: APCuIterator::__construct(): APC must be enabled to use" in setup-cli 2016-08-02 11:42:37 +02:00
Ralf Becker
2a4535be58 fix PHP Fatal error: Class 'EGroupware\Api\Vfs\Config' not found 2016-08-02 10:19:13 +02:00
Ralf Becker
71a384798f fix PHP Strict Standards: Only variables should be assigned by reference 2016-08-02 10:16:31 +02:00
Ralf Becker
ad5cf7abfe move old schema tests to api/src/Db/test/, not (yet) running via phpUnit/Travis 2016-08-01 13:58:06 +02:00
Ralf Becker
ba18f3f594 allow eg. unit-tests to set/change schema used by db class: Db::set_table_definition() 2016-08-01 13:34:25 +02:00
Ralf Becker
c033435122 fix RenameTable for PostgreSQL to only use old logic, if we still have an old sequence, and if old logic is used, set sequence value 2016-08-01 13:32:43 +02:00
Ralf Becker
27468f0dac fix PHP Warning: filemtime(): stat failed for phpgwapi/setup/setup.inc.php 2016-07-31 10:29:52 +02:00
Hadi Nategh
37cc46a252 * all apps: Fix vfs upload button does not work in link tab 2016-07-29 12:45:41 +02:00
Ralf Becker
d3043c2a45 * Templates: disable old idots and jerryr template, as new calendar does not work with them 2016-07-29 11:55:41 +02:00
nathangray
474e32db67 Slightly more intelligent detection of plain text fields in a document that has HTML parsing turned on 2016-07-28 14:14:20 -06:00
Ralf Becker
f6f3b89f8b * Filemanager/EPL: fix broken notification / subscription to folders
Do not check for (no longer existing) $GLOBALS[egw]->hooks but for no class setup_process, to not call them during install or update.
2016-07-28 15:10:39 +02:00
Ralf Becker
e3bdf129dc fix Travis error for HHVM 2016-07-28 13:51:47 +02:00
Ralf Becker
96caf6effd * Admin/APC(u): fix error in clear cache: if APC(u) runs out of memory clearing just instance cache clear whole cache 2016-07-28 12:02:21 +02:00
Ralf Becker
86823a7e8c make is-directory check more robust, by checking for PHP's directory-mode / Sqlfs::DIR_MODE too, not only for mime-type which is set eg. by stylite.links to "egs/$app" 2016-07-28 11:11:34 +02:00
Ralf Becker
9c13d84a67 define Vfs::LINK_MODE constant again, since we no longer inherit from Vfs\StreamWrapper 2016-07-28 10:05:14 +02:00
Ralf Becker
015ed03bb6 fix cant attach files, if none have been attached to an entry before: Sqlfs\StreamWrapper::mkdir('/apps/calendar/123',0,1) already exist! 2016-07-28 09:40:23 +02:00
Ralf Becker
6ba07ef64b fixed SQL error caused by sql_mode ONLY_FULL_GROUP_BY under MySQL 5.7+ in VFS file-system-check 2016-07-28 09:11:38 +02:00
Hadi Nategh
e45925b063 * All apps: Add a counter indicator for selected entries in a list in mobile template 2016-07-27 11:34:07 +02:00
Ralf Becker
6496f33da6 fix PHP Fatal error: Access to undeclared static property: EGroupware\Api\Vfs\StreamWrapper::$is_root 2016-07-27 11:09:07 +02:00
Ralf Becker
ffa5b37776 fix not working forced password change on login page with fallback auth 2016-07-27 10:19:48 +02:00
Ralf Becker
28cddb8e64 * Api: fixed not working HTTP authentication 2016-07-26 17:07:42 +02:00
Hadi Nategh
09e6d56bf5 * All apps: Fix styling glitches for search links dropdown 2016-07-26 17:05:45 +02:00
Ralf Becker
be08b46767 * eMail/UCS: fix setting of mailbox ACL for IMAP login-type "email" 2016-07-26 14:51:18 +02:00
Ralf Becker
f0a739d7ed * LDAP: fix not working password change by user 2016-07-26 08:47:31 +02:00
Hadi Nategh
693bf4d0a8 Fix filemanager document editor does not respect page size format 2016-07-25 18:29:34 +02:00
Ralf Becker
a0d419a145 log execeptions happening during mergeprint for easier debugging 2016-07-25 14:53:30 +02:00
Ralf Becker
a4d39d5873 fix etemplate2.postSubmit() to not destroy any eT2 session, by unbinding window.onbeforeunload and rebinding it again after 100ms
Before postSubmit was unbinding only if current etemplates destroy_session was bound and causes so an other etemplates session_destroy to fire.
postSubmit now allways rebinds the session_destroy handler of current etemplate assuming it is only used for downloads, where current etemplate (and session) should persist.
2016-07-25 12:55:11 +02:00
Ralf Becker
4b58e87080 fix not working symlinking vfs files to infologs/links, fixed multiple PHP deprecated should not call non-static self::url_stat static 2016-07-22 18:22:46 +02:00
nathangray
3b1ce04608 Avoid a Illegal string offset warning from link-entry widgets when they have only-app attribute set
Happened on infologs added from projectmanager element list
2016-07-21 12:51:32 -06:00
Ralf Becker
fefc2b5f88 fix PHP Fatal error: Call to undefined function EGroupware\Api\Vfs\Sqlfs() 2016-07-21 18:35:58 +02:00
Ralf Becker
6108123fe7 fix PHP Fatal in propatch 2016-07-21 17:43:28 +02:00
Hadi Nategh
dd85a52645 Fix file upload progress doesn't show up on hover over 2016-07-21 16:19:29 +02:00
Hadi Nategh
2cea60b0aa Fix et2 dialogs' buttons sometimes get weird styling 2016-07-21 15:32:52 +02:00
Hadi Nategh
5c3bd11366 Take yyyy-mm-ddThh:mm:ss.s format into account for date widget.
- Fix Date widget doesn't let iOS html native datetime-local input set a value
2016-07-21 14:28:46 +02:00
Ralf Becker
45c272dac2 make Vfs\StreamWrapper::symlinkCache_remove public, to allow calling from Vfs 2016-07-21 12:15:54 +02:00
Ralf Becker
d26d1dd7f8 fix rename and load_wrapper missing in Vfs class 2016-07-21 11:17:01 +02:00
Ralf Becker
58d2e49843 fix two more cases in which "show_generation_time" is queried and should never trigger a request to server, see 1c6c930312 2016-07-21 10:51:17 +02:00
Ralf Becker
52be4ee14b implement PHP 5.4+ stream_metadata method for VFS, allowing to use that functionality from other stream-wrappers like php-smbclient 2016-07-21 09:51:36 +02:00
Hadi Nategh
f9e7a06bca Open Office Editor W.I.P:
- Implement create new document
- Add select file dialog for saving a newly created doc
2016-07-20 17:30:59 +02:00
Hadi Nategh
71acd96080 Open Office Editor W.I.P:
- Get regex of odf mime type into widget context to be able to use it for all expose derived widgets
2016-07-20 17:30:59 +02:00
Hadi Nategh
8434c3051f W.I.P. of implementation and integration of open office document editor (.odt) with file system 2016-07-20 17:30:59 +02:00
Hadi Nategh
6d09028960 Remove not used library from api 2016-07-20 17:30:59 +02:00
Hadi Nategh
956d4606cf Evaluate show_generation_time preference value before calling for pageGenTime 2016-07-20 17:30:59 +02:00
Hadi Nategh
d8ec2ccb23 Fix chosen touch events handler to get it working for both iOS and Android 2016-07-20 17:29:50 +02:00
Ralf Becker
1c6c930312 if "common" prefs are not loaded, do not display page generation time
Before we queried page_generation_time common preference without a callback, which send a synchronious request to server to fetch common preferences, when it returned it looked for the preference again and send the next synchronious request to the server, in an infinit loop. Now setting _callback parameter of egw.preference() to false, just returns undefined, if common preferences are not yet loaded, but dont try to query them from server
2016-07-20 17:13:11 +02:00
Ralf Becker
f04dd8ace6 Vfs no longer extends Vfs\StreamWrapper, as this is the only way to keep static function signatures for Vfs class, also cleans up a bit 2016-07-19 13:29:43 +02:00
Ralf Becker
b65d87bc68 fixing our wrong static methods in stream-wrapper: unlink, rmdir, mkdir, rename and url_stat (they are not static, so PHP can pass in $context) 2016-07-19 11:59:16 +02:00
Ralf Becker
f4acec1b82 fix not working forced password change on login screen 2016-07-15 14:47:13 +02:00
Ralf Becker
f4521e3401 fix missing slash in path of adLDAP.php 2016-07-15 14:24:30 +02:00
Hadi Nategh
4c59ea9d5f Implement touch events for jquery chosen. Fix filter-categories does not work in iOS 2016-07-15 14:16:56 +02:00
Ralf Becker
29ccda8dff fix ntlm directory path 2016-07-15 13:54:39 +02:00
Ralf Becker
52d3aa70cd enable APCu for caching with >= 32M and fix post_install to patch Ubuntu-16.04 /etc/php/7.0/cli/conf.d/20-apcu.ini 2016-07-15 13:23:39 +02:00
Hadi Nategh
9d054b9437 Fix asyncIncludetime in genPageTime repeats itself into DOM instead of updating the value 2016-07-15 09:35:02 +02:00
Ralf Becker
b2ac90fec6 fix some Scrutinizer "bugs" 2016-07-15 08:17:54 +02:00
Ralf Becker
847fb38194 * NTLM: move ntlm login code from phpgwapi to api to allow NTLM login in 16.1 minimal install 2016-07-15 08:05:44 +02:00
Ralf Becker
e1f8fa7799 * ActiveDirectory: using adLDAP now from adldap2/adldap2=4.0.4 via composer 2016-07-15 07:39:53 +02:00
Hadi Nategh
eba29d3541 Create DOM node for pageGenTime data 2016-07-14 17:21:51 +02:00