aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php111
-rw-r--r--apps/dashboard/l10n/uk.js2
-rw-r--r--apps/dashboard/l10n/uk.json2
-rw-r--r--apps/dashboard/src/DashboardApp.vue6
-rw-r--r--apps/dav/appinfo/info.xml2
-rw-r--r--apps/dav/appinfo/v1/carddav.php3
-rw-r--r--apps/dav/composer/composer/autoload_classmap.php4
-rw-r--r--apps/dav/composer/composer/autoload_static.php4
-rw-r--r--apps/dav/l10n/cs.js2
-rw-r--r--apps/dav/l10n/cs.json2
-rw-r--r--apps/dav/l10n/de.js1
-rw-r--r--apps/dav/l10n/de.json1
-rw-r--r--apps/dav/l10n/de_DE.js2
-rw-r--r--apps/dav/l10n/de_DE.json2
-rw-r--r--apps/dav/l10n/es.js2
-rw-r--r--apps/dav/l10n/es.json2
-rw-r--r--apps/dav/l10n/hr.js1
-rw-r--r--apps/dav/l10n/hr.json1
-rw-r--r--apps/dav/l10n/hu.js5
-rw-r--r--apps/dav/l10n/hu.json5
-rw-r--r--apps/dav/l10n/pl.js2
-rw-r--r--apps/dav/l10n/pl.json2
-rw-r--r--apps/dav/l10n/ru.js1
-rw-r--r--apps/dav/l10n/ru.json1
-rw-r--r--apps/dav/l10n/sr.js2
-rw-r--r--apps/dav/l10n/sr.json2
-rw-r--r--apps/dav/l10n/sv.js2
-rw-r--r--apps/dav/l10n/sv.json2
-rw-r--r--apps/dav/l10n/tr.js2
-rw-r--r--apps/dav/l10n/tr.json2
-rw-r--r--apps/dav/l10n/uk.js3
-rw-r--r--apps/dav/l10n/uk.json3
-rw-r--r--apps/dav/l10n/zh_TW.js2
-rw-r--r--apps/dav/l10n/zh_TW.json2
-rw-r--r--apps/dav/lib/CalDAV/Schedule/IMipPlugin.php10
-rw-r--r--apps/dav/lib/CardDAV/AddressBook.php51
-rw-r--r--apps/dav/lib/CardDAV/AddressBookRoot.php13
-rw-r--r--apps/dav/lib/CardDAV/Card.php59
-rw-r--r--apps/dav/lib/CardDAV/CardDavBackend.php50
-rw-r--r--apps/dav/lib/CardDAV/Converter.php115
-rw-r--r--apps/dav/lib/CardDAV/SyncService.php85
-rw-r--r--apps/dav/lib/CardDAV/SystemAddressbook.php262
-rw-r--r--apps/dav/lib/CardDAV/UserAddressBooks.php64
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php18
-rw-r--r--apps/dav/lib/Events/CardMovedEvent.php120
-rw-r--r--apps/dav/lib/Migration/Version1027Date20230504122946.php54
-rw-r--r--apps/dav/lib/RootCollection.php9
-rw-r--r--apps/dav/lib/SystemTag/SystemTagNode.php19
-rw-r--r--apps/dav/lib/SystemTag/SystemTagPlugin.php30
-rw-r--r--apps/dav/lib/SystemTag/SystemTagsInUseCollection.php108
-rw-r--r--apps/dav/lib/Upload/ChunkingV2Plugin.php16
-rw-r--r--apps/dav/lib/UserMigration/CalendarMigrator.php4
-rw-r--r--apps/dav/lib/UserMigration/ContactsMigrator.php4
-rw-r--r--apps/dav/tests/unit/CardDAV/AddressBookTest.php81
-rw-r--r--apps/dav/tests/unit/CardDAV/ConverterTest.php52
-rw-r--r--apps/dav/tests/unit/CardDAV/SyncServiceTest.php12
-rw-r--r--apps/dav/tests/unit/CardDAV/SystemAddressBookTest.php128
-rw-r--r--apps/encryption/appinfo/info.xml1
-rw-r--r--apps/encryption/composer/composer/autoload_classmap.php1
-rw-r--r--apps/encryption/composer/composer/autoload_static.php1
-rw-r--r--apps/encryption/composer/composer/installed.php4
-rw-r--r--apps/encryption/l10n/ru.js5
-rw-r--r--apps/encryption/l10n/ru.json5
-rw-r--r--apps/encryption/lib/Command/DropLegacyFileKey.php167
-rw-r--r--apps/encryption/lib/Command/ScanLegacyFormat.php3
-rw-r--r--apps/encryption/lib/Crypto/Encryption.php7
-rw-r--r--apps/files/appinfo/info.xml3
-rw-r--r--apps/files/composer/composer/autoload_classmap.php3
-rw-r--r--apps/files/composer/composer/autoload_static.php3
-rw-r--r--apps/files/css/files.css2
-rw-r--r--apps/files/css/files.css.map2
-rw-r--r--apps/files/css/files.scss14
-rw-r--r--apps/files/css/merged.css2
-rw-r--r--apps/files/css/merged.css.map2
-rw-r--r--apps/files/css/upload.css2
-rw-r--r--apps/files/css/upload.css.map2
-rw-r--r--apps/files/css/upload.scss4
-rw-r--r--apps/files/l10n/af.js2
-rw-r--r--apps/files/l10n/af.json2
-rw-r--r--apps/files/l10n/ar.js2
-rw-r--r--apps/files/l10n/ar.json2
-rw-r--r--apps/files/l10n/bg.js2
-rw-r--r--apps/files/l10n/bg.json2
-rw-r--r--apps/files/l10n/br.js2
-rw-r--r--apps/files/l10n/br.json2
-rw-r--r--apps/files/l10n/ca.js2
-rw-r--r--apps/files/l10n/ca.json2
-rw-r--r--apps/files/l10n/cs.js2
-rw-r--r--apps/files/l10n/cs.json2
-rw-r--r--apps/files/l10n/da.js2
-rw-r--r--apps/files/l10n/da.json2
-rw-r--r--apps/files/l10n/de.js2
-rw-r--r--apps/files/l10n/de.json2
-rw-r--r--apps/files/l10n/de_DE.js2
-rw-r--r--apps/files/l10n/de_DE.json2
-rw-r--r--apps/files/l10n/el.js4
-rw-r--r--apps/files/l10n/el.json4
-rw-r--r--apps/files/l10n/en_GB.js2
-rw-r--r--apps/files/l10n/en_GB.json2
-rw-r--r--apps/files/l10n/eo.js2
-rw-r--r--apps/files/l10n/eo.json2
-rw-r--r--apps/files/l10n/es.js2
-rw-r--r--apps/files/l10n/es.json2
-rw-r--r--apps/files/l10n/es_419.js2
-rw-r--r--apps/files/l10n/es_419.json2
-rw-r--r--apps/files/l10n/es_AR.js2
-rw-r--r--apps/files/l10n/es_AR.json2
-rw-r--r--apps/files/l10n/es_CL.js2
-rw-r--r--apps/files/l10n/es_CL.json2
-rw-r--r--apps/files/l10n/es_CO.js2
-rw-r--r--apps/files/l10n/es_CO.json2
-rw-r--r--apps/files/l10n/es_CR.js2
-rw-r--r--apps/files/l10n/es_CR.json2
-rw-r--r--apps/files/l10n/es_DO.js2
-rw-r--r--apps/files/l10n/es_DO.json2
-rw-r--r--apps/files/l10n/es_EC.js2
-rw-r--r--apps/files/l10n/es_EC.json2
-rw-r--r--apps/files/l10n/es_GT.js2
-rw-r--r--apps/files/l10n/es_GT.json2
-rw-r--r--apps/files/l10n/es_HN.js2
-rw-r--r--apps/files/l10n/es_HN.json2
-rw-r--r--apps/files/l10n/es_MX.js2
-rw-r--r--apps/files/l10n/es_MX.json2
-rw-r--r--apps/files/l10n/es_NI.js2
-rw-r--r--apps/files/l10n/es_NI.json2
-rw-r--r--apps/files/l10n/es_PA.js2
-rw-r--r--apps/files/l10n/es_PA.json2
-rw-r--r--apps/files/l10n/es_PE.js2
-rw-r--r--apps/files/l10n/es_PE.json2
-rw-r--r--apps/files/l10n/es_PR.js2
-rw-r--r--apps/files/l10n/es_PR.json2
-rw-r--r--apps/files/l10n/es_PY.js2
-rw-r--r--apps/files/l10n/es_PY.json2
-rw-r--r--apps/files/l10n/es_SV.js2
-rw-r--r--apps/files/l10n/es_SV.json2
-rw-r--r--apps/files/l10n/es_UY.js2
-rw-r--r--apps/files/l10n/es_UY.json2
-rw-r--r--apps/files/l10n/et_EE.js2
-rw-r--r--apps/files/l10n/et_EE.json2
-rw-r--r--apps/files/l10n/eu.js2
-rw-r--r--apps/files/l10n/eu.json2
-rw-r--r--apps/files/l10n/fa.js2
-rw-r--r--apps/files/l10n/fa.json2
-rw-r--r--apps/files/l10n/fi.js2
-rw-r--r--apps/files/l10n/fi.json2
-rw-r--r--apps/files/l10n/fr.js2
-rw-r--r--apps/files/l10n/fr.json2
-rw-r--r--apps/files/l10n/gl.js2
-rw-r--r--apps/files/l10n/gl.json2
-rw-r--r--apps/files/l10n/he.js2
-rw-r--r--apps/files/l10n/he.json2
-rw-r--r--apps/files/l10n/hr.js2
-rw-r--r--apps/files/l10n/hr.json2
-rw-r--r--apps/files/l10n/hu.js2
-rw-r--r--apps/files/l10n/hu.json2
-rw-r--r--apps/files/l10n/id.js2
-rw-r--r--apps/files/l10n/id.json2
-rw-r--r--apps/files/l10n/is.js2
-rw-r--r--apps/files/l10n/is.json2
-rw-r--r--apps/files/l10n/it.js2
-rw-r--r--apps/files/l10n/it.json2
-rw-r--r--apps/files/l10n/ja.js2
-rw-r--r--apps/files/l10n/ja.json2
-rw-r--r--apps/files/l10n/ka_GE.js2
-rw-r--r--apps/files/l10n/ka_GE.json2
-rw-r--r--apps/files/l10n/ko.js2
-rw-r--r--apps/files/l10n/ko.json2
-rw-r--r--apps/files/l10n/lt_LT.js2
-rw-r--r--apps/files/l10n/lt_LT.json2
-rw-r--r--apps/files/l10n/lv.js2
-rw-r--r--apps/files/l10n/lv.json2
-rw-r--r--apps/files/l10n/mk.js2
-rw-r--r--apps/files/l10n/mk.json2
-rw-r--r--apps/files/l10n/mn.js2
-rw-r--r--apps/files/l10n/mn.json2
-rw-r--r--apps/files/l10n/nb.js2
-rw-r--r--apps/files/l10n/nb.json2
-rw-r--r--apps/files/l10n/nl.js2
-rw-r--r--apps/files/l10n/nl.json2
-rw-r--r--apps/files/l10n/pl.js6
-rw-r--r--apps/files/l10n/pl.json6
-rw-r--r--apps/files/l10n/ps.js2
-rw-r--r--apps/files/l10n/ps.json2
-rw-r--r--apps/files/l10n/pt_BR.js2
-rw-r--r--apps/files/l10n/pt_BR.json2
-rw-r--r--apps/files/l10n/pt_PT.js2
-rw-r--r--apps/files/l10n/pt_PT.json2
-rw-r--r--apps/files/l10n/ro.js2
-rw-r--r--apps/files/l10n/ro.json2
-rw-r--r--apps/files/l10n/ru.js5
-rw-r--r--apps/files/l10n/ru.json5
-rw-r--r--apps/files/l10n/sc.js2
-rw-r--r--apps/files/l10n/sc.json2
-rw-r--r--apps/files/l10n/sk.js2
-rw-r--r--apps/files/l10n/sk.json2
-rw-r--r--apps/files/l10n/sl.js2
-rw-r--r--apps/files/l10n/sl.json2
-rw-r--r--apps/files/l10n/sq.js2
-rw-r--r--apps/files/l10n/sq.json2
-rw-r--r--apps/files/l10n/sr.js2
-rw-r--r--apps/files/l10n/sr.json2
-rw-r--r--apps/files/l10n/sv.js2
-rw-r--r--apps/files/l10n/sv.json2
-rw-r--r--apps/files/l10n/th.js2
-rw-r--r--apps/files/l10n/th.json2
-rw-r--r--apps/files/l10n/tr.js5
-rw-r--r--apps/files/l10n/tr.json5
-rw-r--r--apps/files/l10n/uk.js5
-rw-r--r--apps/files/l10n/uk.json5
-rw-r--r--apps/files/l10n/vi.js2
-rw-r--r--apps/files/l10n/vi.json2
-rw-r--r--apps/files/l10n/zh_CN.js10
-rw-r--r--apps/files/l10n/zh_CN.json10
-rw-r--r--apps/files/l10n/zh_HK.js2
-rw-r--r--apps/files/l10n/zh_HK.json2
-rw-r--r--apps/files/l10n/zh_TW.js2
-rw-r--r--apps/files/l10n/zh_TW.json2
-rw-r--r--apps/files/lib/Command/Delete.php116
-rw-r--r--apps/files/lib/Command/Get.php89
-rw-r--r--apps/files/lib/Command/Put.php86
-rw-r--r--apps/files/lib/Command/Scan.php69
-rw-r--r--apps/files/src/components/TemplatePreview.vue2
-rw-r--r--apps/files/src/views/FileReferencePickerElement.vue2
-rw-r--r--apps/files/src/views/TemplatePicker.vue13
-rw-r--r--apps/files_external/3rdparty/autoload.php17
-rw-r--r--apps/files_external/3rdparty/composer.json4
-rw-r--r--apps/files_external/3rdparty/composer.lock14
-rw-r--r--apps/files_external/3rdparty/composer/ClassLoader.php41
-rw-r--r--apps/files_external/3rdparty/composer/InstalledVersions.php31
-rw-r--r--apps/files_external/3rdparty/composer/installed.json14
-rw-r--r--apps/files_external/3rdparty/composer/installed.php14
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/Wrapper.php21
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php6
-rw-r--r--apps/files_external/l10n/uk.js3
-rw-r--r--apps/files_external/l10n/uk.json3
-rw-r--r--apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php5
-rw-r--r--apps/files_sharing/l10n/el.js3
-rw-r--r--apps/files_sharing/l10n/el.json3
-rw-r--r--apps/files_sharing/l10n/fr.js2
-rw-r--r--apps/files_sharing/l10n/fr.json2
-rw-r--r--apps/files_sharing/l10n/pl.js3
-rw-r--r--apps/files_sharing/l10n/pl.json3
-rw-r--r--apps/files_sharing/l10n/uk.js4
-rw-r--r--apps/files_sharing/l10n/uk.json4
-rw-r--r--apps/files_sharing/l10n/zh_CN.js6
-rw-r--r--apps/files_sharing/l10n/zh_CN.json6
-rw-r--r--apps/files_sharing/lib/Scanner.php5
-rw-r--r--apps/files_sharing/src/components/SharingEntryLink.vue3
-rw-r--r--apps/files_sharing/tests/External/ScannerTest.php6
-rw-r--r--apps/files_trashbin/l10n/uk.js1
-rw-r--r--apps/files_trashbin/l10n/uk.json1
-rw-r--r--apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php4
-rw-r--r--apps/files_versions/lib/Storage.php7
-rw-r--r--apps/provisioning_api/lib/Controller/AUserData.php3
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php20
-rw-r--r--apps/provisioning_api/tests/Controller/UsersControllerTest.php3
-rw-r--r--apps/settings/css/settings.css2
-rw-r--r--apps/settings/css/settings.css.map2
-rw-r--r--apps/settings/css/settings.scss32
-rw-r--r--apps/settings/l10n/ar.js2
-rw-r--r--apps/settings/l10n/ar.json2
-rw-r--r--apps/settings/l10n/bg.js6
-rw-r--r--apps/settings/l10n/bg.json6
-rw-r--r--apps/settings/l10n/br.js2
-rw-r--r--apps/settings/l10n/br.json2
-rw-r--r--apps/settings/l10n/ca.js6
-rw-r--r--apps/settings/l10n/ca.json6
-rw-r--r--apps/settings/l10n/cs.js13
-rw-r--r--apps/settings/l10n/cs.json13
-rw-r--r--apps/settings/l10n/da.js6
-rw-r--r--apps/settings/l10n/da.json6
-rw-r--r--apps/settings/l10n/de.js6
-rw-r--r--apps/settings/l10n/de.json6
-rw-r--r--apps/settings/l10n/de_DE.js15
-rw-r--r--apps/settings/l10n/de_DE.json15
-rw-r--r--apps/settings/l10n/el.js6
-rw-r--r--apps/settings/l10n/el.json6
-rw-r--r--apps/settings/l10n/en_GB.js8
-rw-r--r--apps/settings/l10n/en_GB.json8
-rw-r--r--apps/settings/l10n/eo.js2
-rw-r--r--apps/settings/l10n/eo.json2
-rw-r--r--apps/settings/l10n/es.js17
-rw-r--r--apps/settings/l10n/es.json17
-rw-r--r--apps/settings/l10n/es_419.js2
-rw-r--r--apps/settings/l10n/es_419.json2
-rw-r--r--apps/settings/l10n/es_AR.js2
-rw-r--r--apps/settings/l10n/es_AR.json2
-rw-r--r--apps/settings/l10n/es_CL.js2
-rw-r--r--apps/settings/l10n/es_CL.json2
-rw-r--r--apps/settings/l10n/es_CO.js2
-rw-r--r--apps/settings/l10n/es_CO.json2
-rw-r--r--apps/settings/l10n/es_CR.js2
-rw-r--r--apps/settings/l10n/es_CR.json2
-rw-r--r--apps/settings/l10n/es_DO.js2
-rw-r--r--apps/settings/l10n/es_DO.json2
-rw-r--r--apps/settings/l10n/es_EC.js2
-rw-r--r--apps/settings/l10n/es_EC.json2
-rw-r--r--apps/settings/l10n/es_GT.js2
-rw-r--r--apps/settings/l10n/es_GT.json2
-rw-r--r--apps/settings/l10n/es_HN.js2
-rw-r--r--apps/settings/l10n/es_HN.json2
-rw-r--r--apps/settings/l10n/es_MX.js2
-rw-r--r--apps/settings/l10n/es_MX.json2
-rw-r--r--apps/settings/l10n/es_NI.js2
-rw-r--r--apps/settings/l10n/es_NI.json2
-rw-r--r--apps/settings/l10n/es_PA.js2
-rw-r--r--apps/settings/l10n/es_PA.json2
-rw-r--r--apps/settings/l10n/es_PE.js2
-rw-r--r--apps/settings/l10n/es_PE.json2
-rw-r--r--apps/settings/l10n/es_PR.js2
-rw-r--r--apps/settings/l10n/es_PR.json2
-rw-r--r--apps/settings/l10n/es_PY.js2
-rw-r--r--apps/settings/l10n/es_PY.json2
-rw-r--r--apps/settings/l10n/es_SV.js2
-rw-r--r--apps/settings/l10n/es_SV.json2
-rw-r--r--apps/settings/l10n/es_UY.js2
-rw-r--r--apps/settings/l10n/es_UY.json2
-rw-r--r--apps/settings/l10n/et_EE.js2
-rw-r--r--apps/settings/l10n/et_EE.json2
-rw-r--r--apps/settings/l10n/eu.js6
-rw-r--r--apps/settings/l10n/eu.json6
-rw-r--r--apps/settings/l10n/fa.js2
-rw-r--r--apps/settings/l10n/fa.json2
-rw-r--r--apps/settings/l10n/fi.js8
-rw-r--r--apps/settings/l10n/fi.json8
-rw-r--r--apps/settings/l10n/fr.js6
-rw-r--r--apps/settings/l10n/fr.json6
-rw-r--r--apps/settings/l10n/gl.js6
-rw-r--r--apps/settings/l10n/gl.json6
-rw-r--r--apps/settings/l10n/he.js6
-rw-r--r--apps/settings/l10n/he.json6
-rw-r--r--apps/settings/l10n/hr.js6
-rw-r--r--apps/settings/l10n/hr.json6
-rw-r--r--apps/settings/l10n/hu.js6
-rw-r--r--apps/settings/l10n/hu.json6
-rw-r--r--apps/settings/l10n/id.js2
-rw-r--r--apps/settings/l10n/id.json2
-rw-r--r--apps/settings/l10n/is.js2
-rw-r--r--apps/settings/l10n/is.json2
-rw-r--r--apps/settings/l10n/it.js6
-rw-r--r--apps/settings/l10n/it.json6
-rw-r--r--apps/settings/l10n/ja.js6
-rw-r--r--apps/settings/l10n/ja.json6
-rw-r--r--apps/settings/l10n/ka_GE.js2
-rw-r--r--apps/settings/l10n/ka_GE.json2
-rw-r--r--apps/settings/l10n/ko.js2
-rw-r--r--apps/settings/l10n/ko.json2
-rw-r--r--apps/settings/l10n/lt_LT.js2
-rw-r--r--apps/settings/l10n/lt_LT.json2
-rw-r--r--apps/settings/l10n/lv.js2
-rw-r--r--apps/settings/l10n/lv.json2
-rw-r--r--apps/settings/l10n/mk.js6
-rw-r--r--apps/settings/l10n/mk.json6
-rw-r--r--apps/settings/l10n/nb.js2
-rw-r--r--apps/settings/l10n/nb.json2
-rw-r--r--apps/settings/l10n/nl.js6
-rw-r--r--apps/settings/l10n/nl.json6
-rw-r--r--apps/settings/l10n/nn_NO.js2
-rw-r--r--apps/settings/l10n/nn_NO.json2
-rw-r--r--apps/settings/l10n/oc.js2
-rw-r--r--apps/settings/l10n/oc.json2
-rw-r--r--apps/settings/l10n/pl.js6
-rw-r--r--apps/settings/l10n/pl.json6
-rw-r--r--apps/settings/l10n/pt_BR.js6
-rw-r--r--apps/settings/l10n/pt_BR.json6
-rw-r--r--apps/settings/l10n/pt_PT.js2
-rw-r--r--apps/settings/l10n/pt_PT.json2
-rw-r--r--apps/settings/l10n/ro.js6
-rw-r--r--apps/settings/l10n/ro.json6
-rw-r--r--apps/settings/l10n/ru.js8
-rw-r--r--apps/settings/l10n/ru.json8
-rw-r--r--apps/settings/l10n/sc.js6
-rw-r--r--apps/settings/l10n/sc.json6
-rw-r--r--apps/settings/l10n/sk.js6
-rw-r--r--apps/settings/l10n/sk.json6
-rw-r--r--apps/settings/l10n/sl.js6
-rw-r--r--apps/settings/l10n/sl.json6
-rw-r--r--apps/settings/l10n/sq.js2
-rw-r--r--apps/settings/l10n/sq.json2
-rw-r--r--apps/settings/l10n/sr.js23
-rw-r--r--apps/settings/l10n/sr.json23
-rw-r--r--apps/settings/l10n/sv.js8
-rw-r--r--apps/settings/l10n/sv.json8
-rw-r--r--apps/settings/l10n/th.js2
-rw-r--r--apps/settings/l10n/th.json2
-rw-r--r--apps/settings/l10n/tr.js15
-rw-r--r--apps/settings/l10n/tr.json15
-rw-r--r--apps/settings/l10n/uk.js6
-rw-r--r--apps/settings/l10n/uk.json6
-rw-r--r--apps/settings/l10n/vi.js2
-rw-r--r--apps/settings/l10n/vi.json2
-rw-r--r--apps/settings/l10n/zh_CN.js12
-rw-r--r--apps/settings/l10n/zh_CN.json12
-rw-r--r--apps/settings/l10n/zh_HK.js8
-rw-r--r--apps/settings/l10n/zh_HK.json8
-rw-r--r--apps/settings/l10n/zh_TW.js15
-rw-r--r--apps/settings/l10n/zh_TW.json15
-rw-r--r--apps/settings/lib/UserMigration/AccountMigrator.php4
-rw-r--r--apps/settings/src/admin.js2
-rw-r--r--apps/settings/src/components/BasicSettings/BackgroundJob.vue4
-rw-r--r--apps/settings/src/components/PersonalInfo/DisplayNameSection.vue1
-rw-r--r--apps/settings/src/components/PersonalInfo/EmailSection/Email.vue2
-rw-r--r--apps/settings/src/components/PersonalInfo/LocationSection.vue1
-rw-r--r--apps/settings/src/components/PersonalInfo/OrganisationSection.vue1
-rw-r--r--apps/settings/src/components/PersonalInfo/PhoneSection.vue1
-rw-r--r--apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue4
-rw-r--r--apps/settings/src/components/PersonalInfo/RoleSection.vue1
-rw-r--r--apps/settings/src/components/PersonalInfo/WebsiteSection.vue1
-rw-r--r--apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue6
-rw-r--r--apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue4
-rw-r--r--apps/settings/src/components/UserList.vue205
-rw-r--r--apps/settings/src/components/UserList/UserRow.vue197
-rw-r--r--apps/settings/src/components/UserList/UserRowSimple.vue53
-rw-r--r--apps/settings/src/store/users.js44
-rw-r--r--apps/settings/src/views/Users.vue13
-rw-r--r--apps/settings/templates/settings/admin/sharing.php6
-rw-r--r--apps/systemtags/l10n/cs.js5
-rw-r--r--apps/systemtags/l10n/cs.json5
-rw-r--r--apps/systemtags/l10n/ru.js9
-rw-r--r--apps/systemtags/l10n/ru.json9
-rw-r--r--apps/systemtags/l10n/uk.js10
-rw-r--r--apps/systemtags/l10n/uk.json10
-rw-r--r--apps/theming/css/default.css3
-rw-r--r--apps/theming/lib/Themes/DefaultTheme.php3
-rw-r--r--apps/theming/lib/Util.php16
-rw-r--r--apps/theming/src/AdminTheming.vue2
-rw-r--r--apps/theming/src/components/BackgroundSettings.vue2
-rw-r--r--apps/theming/tests/CapabilitiesTest.php18
-rw-r--r--apps/theming/tests/UtilTest.php29
-rw-r--r--apps/updatenotification/l10n/pl.js1
-rw-r--r--apps/updatenotification/l10n/pl.json1
-rw-r--r--apps/updatenotification/l10n/uk.js1
-rw-r--r--apps/updatenotification/l10n/uk.json1
-rw-r--r--apps/user_ldap/l10n/ru.js19
-rw-r--r--apps/user_ldap/l10n/ru.json19
-rw-r--r--apps/user_status/l10n/uk.js7
-rw-r--r--apps/user_status/l10n/uk.json7
-rw-r--r--apps/user_status/lib/Controller/UserStatusController.php10
-rw-r--r--apps/user_status/src/components/CustomMessageInput.vue6
-rw-r--r--apps/user_status/src/components/OnlineStatusSelect.vue14
-rw-r--r--apps/user_status/src/components/PredefinedStatus.vue99
-rw-r--r--apps/user_status/src/components/PredefinedStatusesList.vue22
-rw-r--r--apps/user_status/src/components/SetStatusModal.vue10
-rw-r--r--apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php9
-rw-r--r--apps/weather_status/l10n/zh_CN.js34
-rw-r--r--apps/weather_status/l10n/zh_CN.json34
-rw-r--r--apps/workflowengine/l10n/bg.js6
-rw-r--r--apps/workflowengine/l10n/bg.json6
-rw-r--r--apps/workflowengine/l10n/ca.js6
-rw-r--r--apps/workflowengine/l10n/ca.json6
-rw-r--r--apps/workflowengine/l10n/cs.js8
-rw-r--r--apps/workflowengine/l10n/cs.json8
-rw-r--r--apps/workflowengine/l10n/da.js6
-rw-r--r--apps/workflowengine/l10n/da.json6
-rw-r--r--apps/workflowengine/l10n/de.js6
-rw-r--r--apps/workflowengine/l10n/de.json6
-rw-r--r--apps/workflowengine/l10n/de_DE.js8
-rw-r--r--apps/workflowengine/l10n/de_DE.json8
-rw-r--r--apps/workflowengine/l10n/el.js6
-rw-r--r--apps/workflowengine/l10n/el.json6
-rw-r--r--apps/workflowengine/l10n/en_GB.js8
-rw-r--r--apps/workflowengine/l10n/en_GB.json8
-rw-r--r--apps/workflowengine/l10n/eo.js6
-rw-r--r--apps/workflowengine/l10n/eo.json6
-rw-r--r--apps/workflowengine/l10n/es.js8
-rw-r--r--apps/workflowengine/l10n/es.json8
-rw-r--r--apps/workflowengine/l10n/es_AR.js4
-rw-r--r--apps/workflowengine/l10n/es_AR.json4
-rw-r--r--apps/workflowengine/l10n/es_MX.js4
-rw-r--r--apps/workflowengine/l10n/es_MX.json4
-rw-r--r--apps/workflowengine/l10n/eu.js6
-rw-r--r--apps/workflowengine/l10n/eu.json6
-rw-r--r--apps/workflowengine/l10n/fa.js6
-rw-r--r--apps/workflowengine/l10n/fa.json6
-rw-r--r--apps/workflowengine/l10n/fi.js6
-rw-r--r--apps/workflowengine/l10n/fi.json6
-rw-r--r--apps/workflowengine/l10n/fr.js6
-rw-r--r--apps/workflowengine/l10n/fr.json6
-rw-r--r--apps/workflowengine/l10n/gl.js6
-rw-r--r--apps/workflowengine/l10n/gl.json6
-rw-r--r--apps/workflowengine/l10n/he.js6
-rw-r--r--apps/workflowengine/l10n/he.json6
-rw-r--r--apps/workflowengine/l10n/hr.js6
-rw-r--r--apps/workflowengine/l10n/hr.json6
-rw-r--r--apps/workflowengine/l10n/hu.js6
-rw-r--r--apps/workflowengine/l10n/hu.json6
-rw-r--r--apps/workflowengine/l10n/is.js4
-rw-r--r--apps/workflowengine/l10n/is.json4
-rw-r--r--apps/workflowengine/l10n/it.js6
-rw-r--r--apps/workflowengine/l10n/it.json6
-rw-r--r--apps/workflowengine/l10n/ja.js6
-rw-r--r--apps/workflowengine/l10n/ja.json6
-rw-r--r--apps/workflowengine/l10n/ko.js6
-rw-r--r--apps/workflowengine/l10n/ko.json6
-rw-r--r--apps/workflowengine/l10n/lt_LT.js6
-rw-r--r--apps/workflowengine/l10n/lt_LT.json6
-rw-r--r--apps/workflowengine/l10n/lv.js6
-rw-r--r--apps/workflowengine/l10n/lv.json6
-rw-r--r--apps/workflowengine/l10n/mk.js4
-rw-r--r--apps/workflowengine/l10n/mk.json4
-rw-r--r--apps/workflowengine/l10n/nb.js6
-rw-r--r--apps/workflowengine/l10n/nb.json6
-rw-r--r--apps/workflowengine/l10n/nl.js6
-rw-r--r--apps/workflowengine/l10n/nl.json6
-rw-r--r--apps/workflowengine/l10n/pl.js6
-rw-r--r--apps/workflowengine/l10n/pl.json6
-rw-r--r--apps/workflowengine/l10n/pt_BR.js6
-rw-r--r--apps/workflowengine/l10n/pt_BR.json6
-rw-r--r--apps/workflowengine/l10n/pt_PT.js4
-rw-r--r--apps/workflowengine/l10n/pt_PT.json4
-rw-r--r--apps/workflowengine/l10n/ru.js6
-rw-r--r--apps/workflowengine/l10n/ru.json6
-rw-r--r--apps/workflowengine/l10n/sc.js6
-rw-r--r--apps/workflowengine/l10n/sc.json6
-rw-r--r--apps/workflowengine/l10n/sk.js6
-rw-r--r--apps/workflowengine/l10n/sk.json6
-rw-r--r--apps/workflowengine/l10n/sl.js6
-rw-r--r--apps/workflowengine/l10n/sl.json6
-rw-r--r--apps/workflowengine/l10n/sq.js4
-rw-r--r--apps/workflowengine/l10n/sq.json4
-rw-r--r--apps/workflowengine/l10n/sr.js8
-rw-r--r--apps/workflowengine/l10n/sr.json8
-rw-r--r--apps/workflowengine/l10n/sv.js8
-rw-r--r--apps/workflowengine/l10n/sv.json8
-rw-r--r--apps/workflowengine/l10n/tr.js8
-rw-r--r--apps/workflowengine/l10n/tr.json8
-rw-r--r--apps/workflowengine/l10n/uk.js6
-rw-r--r--apps/workflowengine/l10n/uk.json6
-rw-r--r--apps/workflowengine/l10n/zh_CN.js6
-rw-r--r--apps/workflowengine/l10n/zh_CN.json6
-rw-r--r--apps/workflowengine/l10n/zh_HK.js8
-rw-r--r--apps/workflowengine/l10n/zh_HK.json8
-rw-r--r--apps/workflowengine/l10n/zh_TW.js8
-rw-r--r--apps/workflowengine/l10n/zh_TW.json8
-rw-r--r--apps/workflowengine/src/components/Check.vue59
-rw-r--r--apps/workflowengine/src/components/Checks/FileMimeType.vue90
-rw-r--r--apps/workflowengine/src/components/Checks/RequestTime.vue8
-rw-r--r--apps/workflowengine/src/components/Checks/RequestURL.vue75
-rw-r--r--apps/workflowengine/src/components/Checks/RequestUserAgent.vue80
-rw-r--r--apps/workflowengine/src/components/Checks/RequestUserGroup.vue14
-rw-r--r--apps/workflowengine/src/components/Rule.vue10
-rw-r--r--apps/workflowengine/src/styles/operation.scss2
548 files changed, 3807 insertions, 1538 deletions
diff --git a/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php b/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php
index 0d776bb9fcc..2064136c392 100644
--- a/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php
+++ b/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php
@@ -28,10 +28,12 @@ namespace OCA\ContactsInteraction\Listeners;
use OCA\ContactsInteraction\Db\CardSearchDao;
use OCA\ContactsInteraction\Db\RecentContact;
use OCA\ContactsInteraction\Db\RecentContactMapper;
+use OCP\AppFramework\Db\TTransactional;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Contacts\Events\ContactInteractedWithEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
+use OCP\IDBConnection;
use OCP\IL10N;
use OCP\IUserManager;
use Psr\Log\LoggerInterface;
@@ -41,9 +43,13 @@ use Sabre\VObject\UUIDUtil;
use Throwable;
class ContactInteractionListener implements IEventListener {
+
+ use TTransactional;
+
private RecentContactMapper $mapper;
private CardSearchDao $cardSearchDao;
private IUserManager $userManager;
+ private IDBConnection $dbConnection;
private ITimeFactory $timeFactory;
private IL10N $l10n;
private LoggerInterface $logger;
@@ -51,12 +57,14 @@ class ContactInteractionListener implements IEventListener {
public function __construct(RecentContactMapper $mapper,
CardSearchDao $cardSearchDao,
IUserManager $userManager,
+ IDBConnection $connection,
ITimeFactory $timeFactory,
IL10N $l10nFactory,
LoggerInterface $logger) {
$this->mapper = $mapper;
$this->cardSearchDao = $cardSearchDao;
$this->userManager = $userManager;
+ $this->dbConnection = $connection;
$this->timeFactory = $timeFactory;
$this->l10n = $l10nFactory;
$this->logger = $logger;
@@ -77,58 +85,63 @@ class ContactInteractionListener implements IEventListener {
return;
}
- $existing = $this->mapper->findMatch(
- $event->getActor(),
- $event->getUid(),
- $event->getEmail(),
- $event->getFederatedCloudId()
- );
- if (!empty($existing)) {
- $now = $this->timeFactory->getTime();
- foreach ($existing as $c) {
- $c->setLastContact($now);
- $this->mapper->update($c);
+ $this->atomic(function () use ($event) {
+ $uid = $event->getUid();
+ $email = $event->getEmail();
+ $federatedCloudId = $event->getFederatedCloudId();
+ $existing = $this->mapper->findMatch(
+ $event->getActor(),
+ $uid,
+ $email,
+ $federatedCloudId
+ );
+ if (!empty($existing)) {
+ $now = $this->timeFactory->getTime();
+ foreach ($existing as $c) {
+ $c->setLastContact($now);
+ $this->mapper->update($c);
+ }
+
+ return;
}
- return;
- }
-
- $contact = new RecentContact();
- $contact->setActorUid($event->getActor()->getUID());
- if ($event->getUid() !== null) {
- $contact->setUid($event->getUid());
- }
- if ($event->getEmail() !== null) {
- $contact->setEmail($event->getEmail());
- }
- if ($event->getFederatedCloudId() !== null) {
- $contact->setFederatedCloudId($event->getFederatedCloudId());
- }
- $contact->setLastContact($this->timeFactory->getTime());
-
- $copy = $this->cardSearchDao->findExisting(
- $event->getActor(),
- $event->getUid(),
- $event->getEmail(),
- $event->getFederatedCloudId()
- );
- if ($copy !== null) {
- try {
- $parsed = Reader::read($copy, Reader::OPTION_FORGIVING);
- $parsed->CATEGORIES = $this->l10n->t('Recently contacted');
- $contact->setCard($parsed->serialize());
- } catch (Throwable $e) {
- $this->logger->warning(
- 'Could not parse card to add recent category: ' . $e->getMessage(),
- [
- 'exception' => $e,
- ]);
- $contact->setCard($copy);
+ $contact = new RecentContact();
+ $contact->setActorUid($event->getActor()->getUID());
+ if ($uid !== null) {
+ $contact->setUid($uid);
}
- } else {
- $contact->setCard($this->generateCard($contact));
- }
- $this->mapper->insert($contact);
+ if ($email !== null) {
+ $contact->setEmail($email);
+ }
+ if ($federatedCloudId !== null) {
+ $contact->setFederatedCloudId($federatedCloudId);
+ }
+ $contact->setLastContact($this->timeFactory->getTime());
+
+ $copy = $this->cardSearchDao->findExisting(
+ $event->getActor(),
+ $uid,
+ $email,
+ $federatedCloudId
+ );
+ if ($copy !== null) {
+ try {
+ $parsed = Reader::read($copy, Reader::OPTION_FORGIVING);
+ $parsed->CATEGORIES = $this->l10n->t('Recently contacted');
+ $contact->setCard($parsed->serialize());
+ } catch (Throwable $e) {
+ $this->logger->warning(
+ 'Could not parse card to add recent category: ' . $e->getMessage(),
+ [
+ 'exception' => $e,
+ ]);
+ $contact->setCard($copy);
+ }
+ } else {
+ $contact->setCard($this->generateCard($contact));
+ }
+ $this->mapper->insert($contact);
+ }, $this->dbConnection);
}
private function getDisplayName(?string $uid): ?string {
diff --git a/apps/dashboard/l10n/uk.js b/apps/dashboard/l10n/uk.js
index ec06ae3cfdd..93bbf92c540 100644
--- a/apps/dashboard/l10n/uk.js
+++ b/apps/dashboard/l10n/uk.js
@@ -3,6 +3,8 @@ OC.L10N.register(
{
"Dashboard" : "Майстерня",
"Dashboard app" : "Застосунок з панеллю віджетів ",
+ "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! Users can add the widgets they like and change the background to their liking." : "Почніть свій день поінформовано\n\nІнформаційна панель Nextcloud - це ваша відправна точка дня, яка дає вам огляд майбутніх зустрічей, термінових електронних листів, повідомлень в чаті, призначених завдань, останніх твітів і багато іншого! Користувачі можуть додавати віджети, які їм подобаються, і змінювати фон на свій смак.",
+ "\"{title} icon\"" : "\"{title} \"іконка\"",
"Customize" : "Редагувати",
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
diff --git a/apps/dashboard/l10n/uk.json b/apps/dashboard/l10n/uk.json
index 7d6d51956c3..decc964d3f4 100644
--- a/apps/dashboard/l10n/uk.json
+++ b/apps/dashboard/l10n/uk.json
@@ -1,6 +1,8 @@
{ "translations": {
"Dashboard" : "Майстерня",
"Dashboard app" : "Застосунок з панеллю віджетів ",
+ "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! Users can add the widgets they like and change the background to their liking." : "Почніть свій день поінформовано\n\nІнформаційна панель Nextcloud - це ваша відправна точка дня, яка дає вам огляд майбутніх зустрічей, термінових електронних листів, повідомлень в чаті, призначених завдань, останніх твітів і багато іншого! Користувачі можуть додавати віджети, які їм подобаються, і змінювати фон на свій смак.",
+ "\"{title} icon\"" : "\"{title} \"іконка\"",
"Customize" : "Редагувати",
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
diff --git a/apps/dashboard/src/DashboardApp.vue b/apps/dashboard/src/DashboardApp.vue
index dffcd783516..4eb820848a5 100644
--- a/apps/dashboard/src/DashboardApp.vue
+++ b/apps/dashboard/src/DashboardApp.vue
@@ -386,7 +386,7 @@ export default {
background-attachment: fixed;
> h2 {
- color: var(--color-primary-text);
+ color: var(--color-primary-element-text);
text-align: center;
font-size: 32px;
line-height: 130%;
@@ -561,7 +561,7 @@ export default {
}
&:hover {
- border-color: var(--color-primary);
+ border-color: var(--color-primary-element);
}
}
@@ -577,7 +577,7 @@ export default {
}
input:focus + label {
- border-color: var(--color-primary);
+ border-color: var(--color-primary-element);
}
}
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index b37e73fa5b6..9140c674716 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -5,7 +5,7 @@
<name>WebDAV</name>
<summary>WebDAV endpoint</summary>
<description>WebDAV endpoint</description>
- <version>1.26.0</version>
+ <version>1.27.0</version>
<licence>agpl</licence>
<author>owncloud.org</author>
<namespace>DAV</namespace>
diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php
index 2b3001e80bd..e7faa9314e2 100644
--- a/apps/dav/appinfo/v1/carddav.php
+++ b/apps/dav/appinfo/v1/carddav.php
@@ -10,6 +10,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Anna Larch <anna.larch@gmx.net>
*
* @license AGPL-3.0
*
@@ -72,7 +73,7 @@ $principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend)
$principalCollection->disableListing = !$debugging; // Disable listing
$pluginManager = new PluginManager(\OC::$server, \OC::$server->query(IAppManager::class));
-$addressBookRoot = new AddressBookRoot($principalBackend, $cardDavBackend, $pluginManager);
+$addressBookRoot = new AddressBookRoot($principalBackend, $cardDavBackend, $pluginManager, \OC::$server->getUserSession()->getUser(), \OC::$server->get(\OCP\IGroupManager::class));
$addressBookRoot->disableListing = !$debugging; // Disable listing
$nodes = [
diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php
index ab7d3e71928..13b9356f587 100644
--- a/apps/dav/composer/composer/autoload_classmap.php
+++ b/apps/dav/composer/composer/autoload_classmap.php
@@ -114,6 +114,7 @@ return array(
'OCA\\DAV\\CardDAV\\AddressBook' => $baseDir . '/../lib/CardDAV/AddressBook.php',
'OCA\\DAV\\CardDAV\\AddressBookImpl' => $baseDir . '/../lib/CardDAV/AddressBookImpl.php',
'OCA\\DAV\\CardDAV\\AddressBookRoot' => $baseDir . '/../lib/CardDAV/AddressBookRoot.php',
+ 'OCA\\DAV\\CardDAV\\Card' => $baseDir . '/../lib/CardDAV/Card.php',
'OCA\\DAV\\CardDAV\\CardDavBackend' => $baseDir . '/../lib/CardDAV/CardDavBackend.php',
'OCA\\DAV\\CardDAV\\ContactsManager' => $baseDir . '/../lib/CardDAV/ContactsManager.php',
'OCA\\DAV\\CardDAV\\Converter' => $baseDir . '/../lib/CardDAV/Converter.php',
@@ -230,6 +231,7 @@ return array(
'OCA\\DAV\\Events\\CalendarUpdatedEvent' => $baseDir . '/../lib/Events/CalendarUpdatedEvent.php',
'OCA\\DAV\\Events\\CardCreatedEvent' => $baseDir . '/../lib/Events/CardCreatedEvent.php',
'OCA\\DAV\\Events\\CardDeletedEvent' => $baseDir . '/../lib/Events/CardDeletedEvent.php',
+ 'OCA\\DAV\\Events\\CardMovedEvent' => $baseDir . '/../lib/Events/CardMovedEvent.php',
'OCA\\DAV\\Events\\CardUpdatedEvent' => $baseDir . '/../lib/Events/CardUpdatedEvent.php',
'OCA\\DAV\\Events\\SabrePluginAuthInitEvent' => $baseDir . '/../lib/Events/SabrePluginAuthInitEvent.php',
'OCA\\DAV\\Events\\SubscriptionCreatedEvent' => $baseDir . '/../lib/Events/SubscriptionCreatedEvent.php',
@@ -293,6 +295,7 @@ return array(
'OCA\\DAV\\Migration\\Version1017Date20210216083742' => $baseDir . '/../lib/Migration/Version1017Date20210216083742.php',
'OCA\\DAV\\Migration\\Version1018Date20210312100735' => $baseDir . '/../lib/Migration/Version1018Date20210312100735.php',
'OCA\\DAV\\Migration\\Version1024Date20211221144219' => $baseDir . '/../lib/Migration/Version1024Date20211221144219.php',
+ 'OCA\\DAV\\Migration\\Version1027Date20230504122946' => $baseDir . '/../lib/Migration/Version1027Date20230504122946.php',
'OCA\\DAV\\Profiler\\ProfilerPlugin' => $baseDir . '/../lib/Profiler/ProfilerPlugin.php',
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningNode' => $baseDir . '/../lib/Provisioning/Apple/AppleProvisioningNode.php',
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningPlugin' => $baseDir . '/../lib/Provisioning/Apple/AppleProvisioningPlugin.php',
@@ -310,6 +313,7 @@ return array(
'OCA\\DAV\\SystemTag\\SystemTagNode' => $baseDir . '/../lib/SystemTag/SystemTagNode.php',
'OCA\\DAV\\SystemTag\\SystemTagPlugin' => $baseDir . '/../lib/SystemTag/SystemTagPlugin.php',
'OCA\\DAV\\SystemTag\\SystemTagsByIdCollection' => $baseDir . '/../lib/SystemTag/SystemTagsByIdCollection.php',
+ 'OCA\\DAV\\SystemTag\\SystemTagsInUseCollection' => $baseDir . '/../lib/SystemTag/SystemTagsInUseCollection.php',
'OCA\\DAV\\SystemTag\\SystemTagsObjectMappingCollection' => $baseDir . '/../lib/SystemTag/SystemTagsObjectMappingCollection.php',
'OCA\\DAV\\SystemTag\\SystemTagsObjectTypeCollection' => $baseDir . '/../lib/SystemTag/SystemTagsObjectTypeCollection.php',
'OCA\\DAV\\SystemTag\\SystemTagsRelationsCollection' => $baseDir . '/../lib/SystemTag/SystemTagsRelationsCollection.php',
diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php
index e0e1f86bdbb..e2b7e905dfe 100644
--- a/apps/dav/composer/composer/autoload_static.php
+++ b/apps/dav/composer/composer/autoload_static.php
@@ -129,6 +129,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\CardDAV\\AddressBook' => __DIR__ . '/..' . '/../lib/CardDAV/AddressBook.php',
'OCA\\DAV\\CardDAV\\AddressBookImpl' => __DIR__ . '/..' . '/../lib/CardDAV/AddressBookImpl.php',
'OCA\\DAV\\CardDAV\\AddressBookRoot' => __DIR__ . '/..' . '/../lib/CardDAV/AddressBookRoot.php',
+ 'OCA\\DAV\\CardDAV\\Card' => __DIR__ . '/..' . '/../lib/CardDAV/Card.php',
'OCA\\DAV\\CardDAV\\CardDavBackend' => __DIR__ . '/..' . '/../lib/CardDAV/CardDavBackend.php',
'OCA\\DAV\\CardDAV\\ContactsManager' => __DIR__ . '/..' . '/../lib/CardDAV/ContactsManager.php',
'OCA\\DAV\\CardDAV\\Converter' => __DIR__ . '/..' . '/../lib/CardDAV/Converter.php',
@@ -245,6 +246,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Events\\CalendarUpdatedEvent' => __DIR__ . '/..' . '/../lib/Events/CalendarUpdatedEvent.php',
'OCA\\DAV\\Events\\CardCreatedEvent' => __DIR__ . '/..' . '/../lib/Events/CardCreatedEvent.php',
'OCA\\DAV\\Events\\CardDeletedEvent' => __DIR__ . '/..' . '/../lib/Events/CardDeletedEvent.php',
+ 'OCA\\DAV\\Events\\CardMovedEvent' => __DIR__ . '/..' . '/../lib/Events/CardMovedEvent.php',
'OCA\\DAV\\Events\\CardUpdatedEvent' => __DIR__ . '/..' . '/../lib/Events/CardUpdatedEvent.php',
'OCA\\DAV\\Events\\SabrePluginAuthInitEvent' => __DIR__ . '/..' . '/../lib/Events/SabrePluginAuthInitEvent.php',
'OCA\\DAV\\Events\\SubscriptionCreatedEvent' => __DIR__ . '/..' . '/../lib/Events/SubscriptionCreatedEvent.php',
@@ -308,6 +310,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Migration\\Version1017Date20210216083742' => __DIR__ . '/..' . '/../lib/Migration/Version1017Date20210216083742.php',
'OCA\\DAV\\Migration\\Version1018Date20210312100735' => __DIR__ . '/..' . '/../lib/Migration/Version1018Date20210312100735.php',
'OCA\\DAV\\Migration\\Version1024Date20211221144219' => __DIR__ . '/..' . '/../lib/Migration/Version1024Date20211221144219.php',
+ 'OCA\\DAV\\Migration\\Version1027Date20230504122946' => __DIR__ . '/..' . '/../lib/Migration/Version1027Date20230504122946.php',
'OCA\\DAV\\Profiler\\ProfilerPlugin' => __DIR__ . '/..' . '/../lib/Profiler/ProfilerPlugin.php',
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningNode' => __DIR__ . '/..' . '/../lib/Provisioning/Apple/AppleProvisioningNode.php',
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningPlugin' => __DIR__ . '/..' . '/../lib/Provisioning/Apple/AppleProvisioningPlugin.php',
@@ -325,6 +328,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\SystemTag\\SystemTagNode' => __DIR__ . '/..' . '/../lib/SystemTag/SystemTagNode.php',
'OCA\\DAV\\SystemTag\\SystemTagPlugin' => __DIR__ . '/..' . '/../lib/SystemTag/SystemTagPlugin.php',
'OCA\\DAV\\SystemTag\\SystemTagsByIdCollection' => __DIR__ . '/..' . '/../lib/SystemTag/SystemTagsByIdCollection.php',
+ 'OCA\\DAV\\SystemTag\\SystemTagsInUseCollection' => __DIR__ . '/..' . '/../lib/SystemTag/SystemTagsInUseCollection.php',
'OCA\\DAV\\SystemTag\\SystemTagsObjectMappingCollection' => __DIR__ . '/..' . '/../lib/SystemTag/SystemTagsObjectMappingCollection.php',
'OCA\\DAV\\SystemTag\\SystemTagsObjectTypeCollection' => __DIR__ . '/..' . '/../lib/SystemTag/SystemTagsObjectTypeCollection.php',
'OCA\\DAV\\SystemTag\\SystemTagsRelationsCollection' => __DIR__ . '/..' . '/../lib/SystemTag/SystemTagsRelationsCollection.php',
diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js
index 402aaba944c..526451b7cd5 100644
--- a/apps/dav/l10n/cs.js
+++ b/apps/dav/l10n/cs.js
@@ -115,6 +115,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} upravil(a) kontakt {card} v adresáři kontaktů {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Upravili jste kontakt {card} v adresáři kontaktů {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakt</strong> nebo <strong>adresář kontaktů</strong> byl upraven",
+ "Accounts" : "Účty",
+ "System address book which holds all accounts" : "Systémový adresář kontaktů, který obsahuje veškeré účty",
"File is not updatable: %1$s" : "Soubor není možné zaktualizovat: %1$s",
"Could not write to final file, canceled by hook" : "Nedaří se zapsat do konečného souboru – zrušeno háčkem (hook)",
"Could not write file contents" : "Nedaří se zapsat obsahy souborů",
diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json
index 3a09ff574a7..815dede14ce 100644
--- a/apps/dav/l10n/cs.json
+++ b/apps/dav/l10n/cs.json
@@ -113,6 +113,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} upravil(a) kontakt {card} v adresáři kontaktů {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Upravili jste kontakt {card} v adresáři kontaktů {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakt</strong> nebo <strong>adresář kontaktů</strong> byl upraven",
+ "Accounts" : "Účty",
+ "System address book which holds all accounts" : "Systémový adresář kontaktů, který obsahuje veškeré účty",
"File is not updatable: %1$s" : "Soubor není možné zaktualizovat: %1$s",
"Could not write to final file, canceled by hook" : "Nedaří se zapsat do konečného souboru – zrušeno háčkem (hook)",
"Could not write file contents" : "Nedaří se zapsat obsahy souborů",
diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js
index 047c12d3f05..d4a916aa742 100644
--- a/apps/dav/l10n/de.js
+++ b/apps/dav/l10n/de.js
@@ -118,6 +118,7 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"You updated contact {card} in address book {addressbook}" : "Du hast den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert",
+ "Accounts" : "Konten",
"File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s",
"Could not write to final file, canceled by hook" : "In die endgültige Datei konnte nicht geschrieben werden, wurde durch einen Hook abgebrochen",
"Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden",
diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json
index 8c6d7a686b7..3f3169348d9 100644
--- a/apps/dav/l10n/de.json
+++ b/apps/dav/l10n/de.json
@@ -116,6 +116,7 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"You updated contact {card} in address book {addressbook}" : "Du hast den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert",
+ "Accounts" : "Konten",
"File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s",
"Could not write to final file, canceled by hook" : "In die endgültige Datei konnte nicht geschrieben werden, wurde durch einen Hook abgebrochen",
"Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden",
diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js
index a662caf861f..7f3b72b640e 100644
--- a/apps/dav/l10n/de_DE.js
+++ b/apps/dav/l10n/de_DE.js
@@ -118,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"You updated contact {card} in address book {addressbook}" : "Sie haben den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert",
+ "Accounts" : "Konten",
+ "System address book which holds all accounts" : "Systemadressbuch, das alle Konten enthält",
"File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s",
"Could not write to final file, canceled by hook" : "Konnte nicht in die endgültige Datei schreiben, wurde durch Hook abgebrochen.",
"Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden",
diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json
index 6aed2dbbdbe..dd60a2b8d4c 100644
--- a/apps/dav/l10n/de_DE.json
+++ b/apps/dav/l10n/de_DE.json
@@ -116,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"You updated contact {card} in address book {addressbook}" : "Sie haben den Kontakt {card} im Adressbuch {addressbook} aktualisiert",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert",
+ "Accounts" : "Konten",
+ "System address book which holds all accounts" : "Systemadressbuch, das alle Konten enthält",
"File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s",
"Could not write to final file, canceled by hook" : "Konnte nicht in die endgültige Datei schreiben, wurde durch Hook abgebrochen.",
"Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden",
diff --git a/apps/dav/l10n/es.js b/apps/dav/l10n/es.js
index 331d6acb66d..c112130b475 100644
--- a/apps/dav/l10n/es.js
+++ b/apps/dav/l10n/es.js
@@ -118,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Has actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong> ",
+ "Accounts" : "Cuentas",
+ "System address book which holds all accounts" : "Libretas de direcciones del sistema que contienen todas las cuentas",
"File is not updatable: %1$s" : "El archivo no se puede actualizar: %1$s",
"Could not write to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema.",
"Could not write file contents" : "No se han podido escribir los contenidos del archivo",
diff --git a/apps/dav/l10n/es.json b/apps/dav/l10n/es.json
index a53235bd5f9..5578aa8b71b 100644
--- a/apps/dav/l10n/es.json
+++ b/apps/dav/l10n/es.json
@@ -116,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Has actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong> ",
+ "Accounts" : "Cuentas",
+ "System address book which holds all accounts" : "Libretas de direcciones del sistema que contienen todas las cuentas",
"File is not updatable: %1$s" : "El archivo no se puede actualizar: %1$s",
"Could not write to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema.",
"Could not write file contents" : "No se han podido escribir los contenidos del archivo",
diff --git a/apps/dav/l10n/hr.js b/apps/dav/l10n/hr.js
index 8ba84dfa42f..117a85f081e 100644
--- a/apps/dav/l10n/hr.js
+++ b/apps/dav/l10n/hr.js
@@ -94,6 +94,7 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} je ažurirao kontakt {card} u adresaru {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ažurirali ste kontakt {card} u adresaru {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Izmijenjen je <strong>kontakt</strong> ili <strong>adresar</strong>",
+ "Accounts" : "Korisnićki računi",
"System is in maintenance mode." : "Sustav je u načinu održavanja.",
"Upgrade needed" : "Potrebno nadograditi",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Vaš %s treba konfigurirati za korištenje HTTPS-a kako bi se mogli upotrebljavati CalDAV i CardDAV s operacijskim sustavom iOS/macOS.",
diff --git a/apps/dav/l10n/hr.json b/apps/dav/l10n/hr.json
index 9fa2fcf97e3..374a1753ee2 100644
--- a/apps/dav/l10n/hr.json
+++ b/apps/dav/l10n/hr.json
@@ -92,6 +92,7 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} je ažurirao kontakt {card} u adresaru {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ažurirali ste kontakt {card} u adresaru {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Izmijenjen je <strong>kontakt</strong> ili <strong>adresar</strong>",
+ "Accounts" : "Korisnićki računi",
"System is in maintenance mode." : "Sustav je u načinu održavanja.",
"Upgrade needed" : "Potrebno nadograditi",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Vaš %s treba konfigurirati za korištenje HTTPS-a kako bi se mogli upotrebljavati CalDAV i CardDAV s operacijskim sustavom iOS/macOS.",
diff --git a/apps/dav/l10n/hu.js b/apps/dav/l10n/hu.js
index ff1a75da57c..dd229543152 100644
--- a/apps/dav/l10n/hu.js
+++ b/apps/dav/l10n/hu.js
@@ -75,6 +75,9 @@ OC.L10N.register(
"Cancelled: %1$s" : "Lemondva: %1$s",
"\"%1$s\" has been canceled" : "A következőt le lett mondva: „%1$s”",
"Re: %1$s" : "Vá: %1$s",
+ "%1$s has accepted your invitation" : "%1$s elfogadta a meghívását",
+ "%1$s has tentatively accepted your invitation" : "%1$s feltételesen elfogadta a meghívását",
+ "%1$s has declined your invitation" : "%1$s elutasította a meghívását",
"%1$s has responded to your invitation" : "%1$s válaszolt a meghívására",
"Invitation updated: %1$s" : "Meghívó frissítve: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: %2$s",
@@ -115,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett",
+ "Accounts" : "Fiókok",
+ "System address book which holds all accounts" : "A rendszer címjegyzéke, amely az összes fiókot tartalmazza",
"File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s",
"Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította",
"Could not write file contents" : "A fájl tartalma nem írható",
diff --git a/apps/dav/l10n/hu.json b/apps/dav/l10n/hu.json
index d3a9c284d23..9c934526102 100644
--- a/apps/dav/l10n/hu.json
+++ b/apps/dav/l10n/hu.json
@@ -73,6 +73,9 @@
"Cancelled: %1$s" : "Lemondva: %1$s",
"\"%1$s\" has been canceled" : "A következőt le lett mondva: „%1$s”",
"Re: %1$s" : "Vá: %1$s",
+ "%1$s has accepted your invitation" : "%1$s elfogadta a meghívását",
+ "%1$s has tentatively accepted your invitation" : "%1$s feltételesen elfogadta a meghívását",
+ "%1$s has declined your invitation" : "%1$s elutasította a meghívását",
"%1$s has responded to your invitation" : "%1$s válaszolt a meghívására",
"Invitation updated: %1$s" : "Meghívó frissítve: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: %2$s",
@@ -113,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett",
+ "Accounts" : "Fiókok",
+ "System address book which holds all accounts" : "A rendszer címjegyzéke, amely az összes fiókot tartalmazza",
"File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s",
"Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította",
"Could not write file contents" : "A fájl tartalma nem írható",
diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js
index af760bd33d1..606ff131578 100644
--- a/apps/dav/l10n/pl.js
+++ b/apps/dav/l10n/pl.js
@@ -118,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} zaktualizował kontakt {card} w książce adresowej {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Zaktualizowałeś kontakt {card} w książce adresowej {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Zmodyfikowano <strong>kontakt</strong> lub <strong>książkę adresową</strong>",
+ "Accounts" : "Konta",
+ "System address book which holds all accounts" : "Systemowa książka adresowa, która przechowuje wszystkie konta",
"File is not updatable: %1$s" : "Plik nie podlega aktualizacji: %1$s",
"Could not write to final file, canceled by hook" : "Nie można zapisać do pliku końcowego, anulowane przez hook",
"Could not write file contents" : "Nie można zapisać zawartości pliku",
diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json
index 5332f810cac..46337bedd40 100644
--- a/apps/dav/l10n/pl.json
+++ b/apps/dav/l10n/pl.json
@@ -116,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} zaktualizował kontakt {card} w książce adresowej {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Zaktualizowałeś kontakt {card} w książce adresowej {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Zmodyfikowano <strong>kontakt</strong> lub <strong>książkę adresową</strong>",
+ "Accounts" : "Konta",
+ "System address book which holds all accounts" : "Systemowa książka adresowa, która przechowuje wszystkie konta",
"File is not updatable: %1$s" : "Plik nie podlega aktualizacji: %1$s",
"Could not write to final file, canceled by hook" : "Nie można zapisać do pliku końcowego, anulowane przez hook",
"Could not write file contents" : "Nie można zapisać zawartości pliku",
diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js
index 7d6995c6f1a..1eb5282a69a 100644
--- a/apps/dav/l10n/ru.js
+++ b/apps/dav/l10n/ru.js
@@ -118,6 +118,7 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} изменил(а) запись {card} в адресной книге {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Вы изменили запись {card} в адресной книге {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Изменение <strong>контакта</strong> или <strong>адресной книги</strong>",
+ "Accounts" : "Учётные записи",
"File is not updatable: %1$s" : "Файл не подлежит обновлению: %1$s",
"Could not write to final file, canceled by hook" : "Не удалось записать результирующий файл, запись отменена вызовом обработчика",
"Could not write file contents" : "Не удалось записать содержимое файла",
diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json
index 4b942bf0f69..0ea2a3ecc03 100644
--- a/apps/dav/l10n/ru.json
+++ b/apps/dav/l10n/ru.json
@@ -116,6 +116,7 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} изменил(а) запись {card} в адресной книге {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Вы изменили запись {card} в адресной книге {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Изменение <strong>контакта</strong> или <strong>адресной книги</strong>",
+ "Accounts" : "Учётные записи",
"File is not updatable: %1$s" : "Файл не подлежит обновлению: %1$s",
"Could not write to final file, canceled by hook" : "Не удалось записать результирующий файл, запись отменена вызовом обработчика",
"Could not write file contents" : "Не удалось записать содержимое файла",
diff --git a/apps/dav/l10n/sr.js b/apps/dav/l10n/sr.js
index 57f345d86ab..3bf5e6eb81a 100644
--- a/apps/dav/l10n/sr.js
+++ b/apps/dav/l10n/sr.js
@@ -118,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} је ажурирао контакт {card} у адресару {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ажурирали сте контакт {card} у адресару {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Измењен је <strong>контакт</strong> или <strong>адресар</strong>",
+ "Accounts" : "Налози",
+ "System address book which holds all accounts" : "Системски адресар у којем се налазе сви налози",
"File is not updatable: %1$s" : "Фајл не може да се ажурира: %1$s",
"Could not write to final file, canceled by hook" : "Не може да се упише у крајњи фајл, отказала је кука",
"Could not write file contents" : "Не може да се упише садржај фајла",
diff --git a/apps/dav/l10n/sr.json b/apps/dav/l10n/sr.json
index 670dc967982..5b330c0c398 100644
--- a/apps/dav/l10n/sr.json
+++ b/apps/dav/l10n/sr.json
@@ -116,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} је ажурирао контакт {card} у адресару {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ажурирали сте контакт {card} у адресару {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Измењен је <strong>контакт</strong> или <strong>адресар</strong>",
+ "Accounts" : "Налози",
+ "System address book which holds all accounts" : "Системски адресар у којем се налазе сви налози",
"File is not updatable: %1$s" : "Фајл не може да се ажурира: %1$s",
"Could not write to final file, canceled by hook" : "Не може да се упише у крајњи фајл, отказала је кука",
"Could not write file contents" : "Не може да се упише садржај фајла",
diff --git a/apps/dav/l10n/sv.js b/apps/dav/l10n/sv.js
index 1ddc55d5ab3..32a116dfa2b 100644
--- a/apps/dav/l10n/sv.js
+++ b/apps/dav/l10n/sv.js
@@ -118,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} uppdaterade kontakten {card} i adressboken {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Du uppdaterade kontakten {card} i adressboken {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "En <strong>kontakt</strong> eller <strong>adressbok</strong> ändrades",
+ "Accounts" : "Konton",
+ "System address book which holds all accounts" : "Systemadressbok som innehåller alla konton",
"File is not updatable: %1$s" : "Fil kan inte uppdateras: %1$s",
"Could not write to final file, canceled by hook" : "Kunde ej skriva till den slutgiltiga filen, avbröts av en kopplad åtgärd",
"Could not write file contents" : "Kunde inte skriva filens innehåll",
diff --git a/apps/dav/l10n/sv.json b/apps/dav/l10n/sv.json
index 5f7fba87831..ba52ba164e7 100644
--- a/apps/dav/l10n/sv.json
+++ b/apps/dav/l10n/sv.json
@@ -116,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} uppdaterade kontakten {card} i adressboken {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Du uppdaterade kontakten {card} i adressboken {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "En <strong>kontakt</strong> eller <strong>adressbok</strong> ändrades",
+ "Accounts" : "Konton",
+ "System address book which holds all accounts" : "Systemadressbok som innehåller alla konton",
"File is not updatable: %1$s" : "Fil kan inte uppdateras: %1$s",
"Could not write to final file, canceled by hook" : "Kunde ej skriva till den slutgiltiga filen, avbröts av en kopplad åtgärd",
"Could not write file contents" : "Kunde inte skriva filens innehåll",
diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js
index d813de5faaf..ac3eceb5791 100644
--- a/apps/dav/l10n/tr.js
+++ b/apps/dav/l10n/tr.js
@@ -118,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor}, {addressbook} adres defterindeki {card} kişi kartını güncelledi",
"You updated contact {card} in address book {addressbook}" : "{addressbook} adres defterindeki {card} kişi kartını güncellediniz",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Bir <strong>kişi</strong> ya da <strong>adres defteri</strong> değiştirildiğinde",
+ "Accounts" : "Hesaplar",
+ "System address book which holds all accounts" : "Tüm hesapların bulunduğu sistem adres defteri",
"File is not updatable: %1$s" : "Dosya güncellenebilir değil: %1$s",
"Could not write to final file, canceled by hook" : "Sonuç dosyasına yazılamadı, bağlantı tarafından iptal edildi",
"Could not write file contents" : "Dosya içerikleri yazılamadı",
diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json
index fd66403e007..51aa7625e17 100644
--- a/apps/dav/l10n/tr.json
+++ b/apps/dav/l10n/tr.json
@@ -116,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor}, {addressbook} adres defterindeki {card} kişi kartını güncelledi",
"You updated contact {card} in address book {addressbook}" : "{addressbook} adres defterindeki {card} kişi kartını güncellediniz",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Bir <strong>kişi</strong> ya da <strong>adres defteri</strong> değiştirildiğinde",
+ "Accounts" : "Hesaplar",
+ "System address book which holds all accounts" : "Tüm hesapların bulunduğu sistem adres defteri",
"File is not updatable: %1$s" : "Dosya güncellenebilir değil: %1$s",
"Could not write to final file, canceled by hook" : "Sonuç dosyasına yazılamadı, bağlantı tarafından iptal edildi",
"Could not write file contents" : "Dosya içerikleri yazılamadı",
diff --git a/apps/dav/l10n/uk.js b/apps/dav/l10n/uk.js
index 965f3dd3f50..4ee15546809 100644
--- a/apps/dav/l10n/uk.js
+++ b/apps/dav/l10n/uk.js
@@ -75,6 +75,9 @@ OC.L10N.register(
"Cancelled: %1$s" : "Скасовано: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" скасовано",
"Re: %1$s" : "Re: %1$s",
+ "%1$s has accepted your invitation" : "%1$s прийняв ваше запрошення",
+ "%1$s has tentatively accepted your invitation" : "%1$s попередньо прийняв ваше запрошення",
+ "%1$s has declined your invitation" : "%1$s відмовився від вашого запрошення",
"%1$s has responded to your invitation" : "%1$sвідповів(-ла) на ваше запрошення",
"Invitation updated: %1$s" : "Запрошення оновлено: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s оновив подію \"%2$s\"",
diff --git a/apps/dav/l10n/uk.json b/apps/dav/l10n/uk.json
index c06144693b7..33f9363dbb6 100644
--- a/apps/dav/l10n/uk.json
+++ b/apps/dav/l10n/uk.json
@@ -73,6 +73,9 @@
"Cancelled: %1$s" : "Скасовано: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" скасовано",
"Re: %1$s" : "Re: %1$s",
+ "%1$s has accepted your invitation" : "%1$s прийняв ваше запрошення",
+ "%1$s has tentatively accepted your invitation" : "%1$s попередньо прийняв ваше запрошення",
+ "%1$s has declined your invitation" : "%1$s відмовився від вашого запрошення",
"%1$s has responded to your invitation" : "%1$sвідповів(-ла) на ваше запрошення",
"Invitation updated: %1$s" : "Запрошення оновлено: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s оновив подію \"%2$s\"",
diff --git a/apps/dav/l10n/zh_TW.js b/apps/dav/l10n/zh_TW.js
index 4b72e020db1..b89b9897da6 100644
--- a/apps/dav/l10n/zh_TW.js
+++ b/apps/dav/l10n/zh_TW.js
@@ -118,6 +118,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} 在通訊錄 {addressbook} 中更新了聯絡人 {card}",
"You updated contact {card} in address book {addressbook}" : "您在通訊錄 {addressbook} 中更新了聯絡人 {card}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>聯絡人</strong>或<strong>通訊錄</strong>已被修改",
+ "Accounts" : "帳號",
+ "System address book which holds all accounts" : "包含所有帳號的系統通訊錄",
"File is not updatable: %1$s" : "檔案無法更新:%1$s",
"Could not write to final file, canceled by hook" : "無法寫入最終檔案,被掛勾取消",
"Could not write file contents" : "無法寫入檔案內容",
diff --git a/apps/dav/l10n/zh_TW.json b/apps/dav/l10n/zh_TW.json
index b7e501c0cb7..9ecfa0dcf10 100644
--- a/apps/dav/l10n/zh_TW.json
+++ b/apps/dav/l10n/zh_TW.json
@@ -116,6 +116,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} 在通訊錄 {addressbook} 中更新了聯絡人 {card}",
"You updated contact {card} in address book {addressbook}" : "您在通訊錄 {addressbook} 中更新了聯絡人 {card}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>聯絡人</strong>或<strong>通訊錄</strong>已被修改",
+ "Accounts" : "帳號",
+ "System address book which holds all accounts" : "包含所有帳號的系統通訊錄",
"File is not updatable: %1$s" : "檔案無法更新:%1$s",
"Could not write to final file, canceled by hook" : "無法寫入最終檔案,被掛勾取消",
"Could not write file contents" : "無法寫入檔案內容",
diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
index 329197445dd..e164e420ae3 100644
--- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
+++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
@@ -299,14 +299,12 @@ class IMipPlugin extends SabreIMipPlugin {
$message->useTemplate($template);
- $vCalendar = $this->imipService->generateVCalendar($iTipMessage, $vEvent);
-
- $attachment = $this->mailer->createAttachment(
- $vCalendar->serialize(),
+ $itip_msg = $iTipMessage->message->serialize();
+ $message->attachInline(
+ $itip_msg,
'event.ics',
- 'text/calendar; method=' . $iTipMessage->method
+ 'text/calendar; method=' . $iTipMessage->method,
);
- $message->attach($attachment);
try {
$failed = $this->mailer->send($message);
diff --git a/apps/dav/lib/CardDAV/AddressBook.php b/apps/dav/lib/CardDAV/AddressBook.php
index f08a7b4b525..e9eec4161cb 100644
--- a/apps/dav/lib/CardDAV/AddressBook.php
+++ b/apps/dav/lib/CardDAV/AddressBook.php
@@ -6,6 +6,7 @@
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @license AGPL-3.0
@@ -27,11 +28,15 @@ namespace OCA\DAV\CardDAV;
use OCA\DAV\DAV\Sharing\IShareable;
use OCA\DAV\Exception\UnsupportedLimitOnInitialSyncException;
+use OCP\DB\Exception;
use OCP\IL10N;
+use OCP\Server;
+use Psr\Log\LoggerInterface;
use Sabre\CardDAV\Backend\BackendInterface;
-use Sabre\CardDAV\Card;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\IMoveTarget;
+use Sabre\DAV\INode;
use Sabre\DAV\PropPatch;
/**
@@ -40,7 +45,7 @@ use Sabre\DAV\PropPatch;
* @package OCA\DAV\CardDAV
* @property CardDavBackend $carddavBackend
*/
-class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
+class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable, IMoveTarget {
/**
* AddressBook constructor.
@@ -52,6 +57,7 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
public function __construct(BackendInterface $carddavBackend, array $addressBookInfo, IL10N $l10n) {
parent::__construct($carddavBackend, $addressBookInfo);
+
if ($this->addressBookInfo['{DAV:}displayname'] === CardDavBackend::PERSONAL_ADDRESSBOOK_NAME &&
$this->getName() === CardDavBackend::PERSONAL_ADDRESSBOOK_URI) {
$this->addressBookInfo['{DAV:}displayname'] = $l10n->t('Contacts');
@@ -160,6 +166,30 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
return new Card($this->carddavBackend, $this->addressBookInfo, $obj);
}
+ public function getChildren()
+ {
+ $objs = $this->carddavBackend->getCards($this->addressBookInfo['id']);
+ $children = [];
+ foreach ($objs as $obj) {
+ $obj['acl'] = $this->getChildACL();
+ $children[] = new Card($this->carddavBackend, $this->addressBookInfo, $obj);
+ }
+
+ return $children;
+ }
+
+ public function getMultipleChildren(array $paths)
+ {
+ $objs = $this->carddavBackend->getMultipleCards($this->addressBookInfo['id'], $paths);
+ $children = [];
+ foreach ($objs as $obj) {
+ $obj['acl'] = $this->getChildACL();
+ $children[] = new Card($this->carddavBackend, $this->addressBookInfo, $obj);
+ }
+
+ return $children;
+ }
+
public function getResourceId(): int {
return $this->addressBookInfo['id'];
}
@@ -223,4 +253,21 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
return parent::getChanges($syncToken, $syncLevel, $limit);
}
+
+ /**
+ * @inheritDoc
+ */
+ public function moveInto($targetName, $sourcePath, INode $sourceNode) {
+ if (!($sourceNode instanceof Card)) {
+ return false;
+ }
+
+ try {
+ return $this->carddavBackend->moveCard($sourceNode->getAddressbookId(), (int)$this->addressBookInfo['id'], $sourceNode->getUri(), $sourceNode->getOwner());
+ } catch (Exception $e) {
+ // Avoid injecting LoggerInterface everywhere
+ Server::get(LoggerInterface::class)->error('Could not move calendar object: ' . $e->getMessage(), ['exception' => $e]);
+ return false;
+ }
+ }
}
diff --git a/apps/dav/lib/CardDAV/AddressBookRoot.php b/apps/dav/lib/CardDAV/AddressBookRoot.php
index 897ed819071..c82943d2879 100644
--- a/apps/dav/lib/CardDAV/AddressBookRoot.php
+++ b/apps/dav/lib/CardDAV/AddressBookRoot.php
@@ -5,6 +5,7 @@
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Anna Larch <anna.larch@gmx.net>
*
* @license AGPL-3.0
*
@@ -24,11 +25,15 @@
namespace OCA\DAV\CardDAV;
use OCA\DAV\AppInfo\PluginManager;
+use OCP\IGroupManager;
+use OCP\IUser;
class AddressBookRoot extends \Sabre\CardDAV\AddressBookRoot {
/** @var PluginManager */
private $pluginManager;
+ private ?IUser $user;
+ private ?IGroupManager $groupManager;
/**
* @param \Sabre\DAVACL\PrincipalBackend\BackendInterface $principalBackend
@@ -38,9 +43,13 @@ class AddressBookRoot extends \Sabre\CardDAV\AddressBookRoot {
public function __construct(\Sabre\DAVACL\PrincipalBackend\BackendInterface $principalBackend,
\Sabre\CardDAV\Backend\BackendInterface $carddavBackend,
PluginManager $pluginManager,
- $principalPrefix = 'principals') {
+ ?IUser $user,
+ ?IGroupManager $groupManager,
+ string $principalPrefix = 'principals') {
parent::__construct($principalBackend, $carddavBackend, $principalPrefix);
$this->pluginManager = $pluginManager;
+ $this->user = $user;
+ $this->groupManager = $groupManager;
}
/**
@@ -55,7 +64,7 @@ class AddressBookRoot extends \Sabre\CardDAV\AddressBookRoot {
* @return \Sabre\DAV\INode
*/
public function getChildForPrincipal(array $principal) {
- return new UserAddressBooks($this->carddavBackend, $principal['uri'], $this->pluginManager);
+ return new UserAddressBooks($this->carddavBackend, $principal['uri'], $this->pluginManager, $this->user, $this->groupManager);
}
public function getName() {
diff --git a/apps/dav/lib/CardDAV/Card.php b/apps/dav/lib/CardDAV/Card.php
new file mode 100644
index 00000000000..72a9bd88c1e
--- /dev/null
+++ b/apps/dav/lib/CardDAV/Card.php
@@ -0,0 +1,59 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023, Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @author Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+namespace OCA\DAV\CardDAV;
+
+class Card extends \Sabre\CardDAV\Card
+{
+ public function getId(): int {
+ return (int) $this->cardData['id'];
+ }
+
+ public function getUri(): string {
+ return $this->cardData['uri'];
+ }
+
+ protected function isShared(): bool {
+ if (!isset($this->cardData['{http://owncloud.org/ns}owner-principal'])) {
+ return false;
+ }
+
+ return $this->cardData['{http://owncloud.org/ns}owner-principal'] !== $this->cardData['principaluri'];
+ }
+
+ public function getAddressbookId(): int {
+ return (int)$this->cardData['addressbookid'];
+ }
+
+ public function getPrincipalUri(): string {
+ return $this->addressBookInfo['principaluri'];
+ }
+
+ public function getOwner(): ?string {
+ if (isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) {
+ return $this->addressBookInfo['{http://owncloud.org/ns}owner-principal'];
+ }
+ return parent::getOwner();
+ }
+}
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php
index 577d7282eae..4e4d64f6f72 100644
--- a/apps/dav/lib/CardDAV/CardDavBackend.php
+++ b/apps/dav/lib/CardDAV/CardDavBackend.php
@@ -44,8 +44,10 @@ use OCA\DAV\Events\AddressBookShareUpdatedEvent;
use OCA\DAV\Events\AddressBookUpdatedEvent;
use OCA\DAV\Events\CardCreatedEvent;
use OCA\DAV\Events\CardDeletedEvent;
+use OCA\DAV\Events\CardMovedEvent;
use OCA\DAV\Events\CardUpdatedEvent;
use OCP\AppFramework\Db\TTransactional;
+use OCP\DB\Exception;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IDBConnection;
@@ -311,6 +313,11 @@ class CardDavBackend implements BackendInterface, SyncSupport {
'{http://sabredav.org/ns}sync-token' => $row['synctoken'] ?: '0',
];
+ // system address books are always read only
+ if ($principal === 'principals/system/system') {
+ $addressBook['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only'] = true;
+ }
+
$this->addOwnerPrincipal($addressBook);
return $addressBook;
@@ -741,6 +748,49 @@ class CardDavBackend implements BackendInterface, SyncSupport {
}
/**
+ * @throws Exception
+ */
+ public function moveCard(int $sourceAddressBookId, int $targetAddressBookId, string $cardUri, string $oldPrincipalUri): bool {
+ return $this->atomic(function () use ($sourceAddressBookId, $targetAddressBookId, $cardUri, $oldPrincipalUri) {
+ $card = $this->getCard($sourceAddressBookId, $cardUri);
+ if (empty($card)) {
+ return false;
+ }
+
+ $query = $this->db->getQueryBuilder();
+ $query->update('cards')
+ ->set('addressbookid', $query->createNamedParameter($targetAddressBookId, IQueryBuilder::PARAM_INT))
+ ->where($query->expr()->eq('uri', $query->createNamedParameter($cardUri, IQueryBuilder::PARAM_STR), IQueryBuilder::PARAM_STR))
+ ->andWhere($query->expr()->eq('addressbookid', $query->createNamedParameter($sourceAddressBookId, IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT))
+ ->executeStatement();
+
+ $this->purgeProperties($sourceAddressBookId, (int)$card['id']);
+ $this->updateProperties($sourceAddressBookId, $card['uri'], $card['carddata']);
+
+ $this->addChange($sourceAddressBookId, $card['uri'], 3);
+ $this->addChange($targetAddressBookId, $card['uri'], 1);
+
+ $card = $this->getCard($targetAddressBookId, $cardUri);
+ // Card wasn't found - possibly because it was deleted in the meantime by a different client
+ if (empty($card)) {
+ return false;
+ }
+
+ $targetAddressBookRow = $this->getAddressBookById($targetAddressBookId);
+ // the address book this card is being moved to does not exist any longer
+ if (empty($targetAddressBookRow)) {
+ return false;
+ }
+
+ $sourceShares = $this->getShares($sourceAddressBookId);
+ $targetShares = $this->getShares($targetAddressBookId);
+ $sourceAddressBookRow = $this->getAddressBookById($sourceAddressBookId);
+ $this->dispatcher->dispatchTyped(new CardMovedEvent($sourceAddressBookId, $sourceAddressBookRow, $targetAddressBookId, $targetAddressBookRow, $sourceShares, $targetShares, $card));
+ return true;
+ }, $this->db);
+ }
+
+ /**
* Deletes a card
*
* @param mixed $addressBookId
diff --git a/apps/dav/lib/CardDAV/Converter.php b/apps/dav/lib/CardDAV/Converter.php
index 409fce62105..d2d646a5a59 100644
--- a/apps/dav/lib/CardDAV/Converter.php
+++ b/apps/dav/lib/CardDAV/Converter.php
@@ -29,30 +29,25 @@ namespace OCA\DAV\CardDAV;
use Exception;
use OCP\Accounts\IAccountManager;
-use OCP\Accounts\PropertyDoesNotExistException;
use OCP\IImage;
use OCP\IUser;
+use OCP\IUserManager;
use Sabre\VObject\Component\VCard;
use Sabre\VObject\Property\Text;
-use function array_merge;
class Converter {
-
/** @var IAccountManager */
private $accountManager;
+ private IUserManager $userManager;
- public function __construct(IAccountManager $accountManager) {
+ public function __construct(IAccountManager $accountManager,
+ IUserManager $userManager) {
$this->accountManager = $accountManager;
+ $this->userManager = $userManager;
}
public function createCardFromUser(IUser $user): ?VCard {
- $account = $this->accountManager->getAccount($user);
- $userProperties = $account->getProperties();
- try {
- $additionalEmailsCollection = $account->getPropertyCollection(IAccountManager::COLLECTION_EMAIL);
- $userProperties = array_merge($userProperties, $additionalEmailsCollection->getProperties());
- } catch (PropertyDoesNotExistException $e) {
- }
+ $userProperties = $this->accountManager->getAccount($user)->getAllProperties();
$uid = $user->getUID();
$cloudId = $user->getCloudId();
@@ -65,47 +60,63 @@ class Converter {
$publish = false;
foreach ($userProperties as $property) {
- $shareWithTrustedServers =
- $property->getScope() === IAccountManager::SCOPE_FEDERATED ||
- $property->getScope() === IAccountManager::SCOPE_PUBLISHED;
-
- $emptyValue = $property->getValue() === '';
-
- if ($shareWithTrustedServers && !$emptyValue) {
- $publish = true;
- switch ($property->getName()) {
- case IAccountManager::PROPERTY_DISPLAYNAME:
- $vCard->add(new Text($vCard, 'FN', $property->getValue()));
- $vCard->add(new Text($vCard, 'N', $this->splitFullName($property->getValue())));
- break;
- case IAccountManager::PROPERTY_AVATAR:
- if ($image !== null) {
- $vCard->add('PHOTO', $image->data(), ['ENCODING' => 'b', 'TYPE' => $image->mimeType()]);
- }
- break;
- case IAccountManager::COLLECTION_EMAIL:
- case IAccountManager::PROPERTY_EMAIL:
- $vCard->add(new Text($vCard, 'EMAIL', $property->getValue(), ['TYPE' => 'OTHER']));
- break;
- case IAccountManager::PROPERTY_WEBSITE:
- $vCard->add(new Text($vCard, 'URL', $property->getValue()));
- break;
- case IAccountManager::PROPERTY_PHONE:
- $vCard->add(new Text($vCard, 'TEL', $property->getValue(), ['TYPE' => 'OTHER']));
- break;
- case IAccountManager::PROPERTY_ADDRESS:
- $vCard->add(new Text($vCard, 'ADR', $property->getValue(), ['TYPE' => 'OTHER']));
- break;
- case IAccountManager::PROPERTY_TWITTER:
- $vCard->add(new Text($vCard, 'X-SOCIALPROFILE', $property->getValue(), ['TYPE' => 'TWITTER']));
- break;
- case IAccountManager::PROPERTY_ORGANISATION:
- $vCard->add(new Text($vCard, 'ORG', $property->getValue()));
- break;
- case IAccountManager::PROPERTY_ROLE:
- $vCard->add(new Text($vCard, 'TITLE', $property->getValue()));
- break;
- }
+ if (empty($property->getValue())) {
+ continue;
+ }
+
+ $scope = $property->getScope();
+ // Do not write private data to the system address book at all
+ if ($scope === IAccountManager::SCOPE_PRIVATE || empty($scope)) {
+ continue;
+ }
+
+ $publish = true;
+ switch ($property->getName()) {
+ case IAccountManager::PROPERTY_DISPLAYNAME:
+ $vCard->add(new Text($vCard, 'FN', $property->getValue(), ['X-NC-SCOPE' => $scope]));
+ $vCard->add(new Text($vCard, 'N', $this->splitFullName($property->getValue()), ['X-NC-SCOPE' => $scope]));
+ break;
+ case IAccountManager::PROPERTY_AVATAR:
+ if ($image !== null) {
+ $vCard->add('PHOTO', $image->data(), ['ENCODING' => 'b', 'TYPE' => $image->mimeType(), ['X-NC-SCOPE' => $scope]]);
+ }
+ break;
+ case IAccountManager::COLLECTION_EMAIL:
+ case IAccountManager::PROPERTY_EMAIL:
+ $vCard->add(new Text($vCard, 'EMAIL', $property->getValue(), ['TYPE' => 'OTHER', 'X-NC-SCOPE' => $scope]));
+ break;
+ case IAccountManager::PROPERTY_WEBSITE:
+ $vCard->add(new Text($vCard, 'URL', $property->getValue(), ['X-NC-SCOPE' => $scope]));
+ break;
+ case IAccountManager::PROPERTY_PHONE:
+ $vCard->add(new Text($vCard, 'TEL', $property->getValue(), ['TYPE' => 'OTHER', 'X-NC-SCOPE' => $scope]));
+ break;
+ case IAccountManager::PROPERTY_ADDRESS:
+ $vCard->add(new Text($vCard, 'ADR', $property->getValue(), ['TYPE' => 'OTHER', 'X-NC-SCOPE' => $scope]));
+ break;
+ case IAccountManager::PROPERTY_TWITTER:
+ $vCard->add(new Text($vCard, 'X-SOCIALPROFILE', $property->getValue(), ['TYPE' => 'TWITTER', 'X-NC-SCOPE' => $scope]));
+ break;
+ case IAccountManager::PROPERTY_ORGANISATION:
+ $vCard->add(new Text($vCard, 'ORG', $property->getValue(), ['X-NC-SCOPE' => $scope]));
+ break;
+ case IAccountManager::PROPERTY_ROLE:
+ $vCard->add(new Text($vCard, 'TITLE', $property->getValue(), ['X-NC-SCOPE' => $scope]));
+ break;
+ }
+ }
+
+ // Local properties
+ $managers = $user->getManagerUids();
+ // X-MANAGERSNAME only allows a single value, so we take the first manager
+ if (isset($managers[0])) {
+ $displayName = $this->userManager->getDisplayName($managers[0]);
+ // Only set the manager if a user object is found
+ if ($displayName !== null) {
+ $vCard->add(new Text($vCard, 'X-MANAGERSNAME', $displayName, [
+ 'uid' => $managers[0],
+ 'X-NC-SCOPE' => IAccountManager::SCOPE_LOCAL,
+ ]));
}
}
diff --git a/apps/dav/lib/CardDAV/SyncService.php b/apps/dav/lib/CardDAV/SyncService.php
index da798c5768e..067a279941d 100644
--- a/apps/dav/lib/CardDAV/SyncService.php
+++ b/apps/dav/lib/CardDAV/SyncService.php
@@ -1,4 +1,5 @@
<?php
+
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -10,6 +11,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Anna Larch <anna.larch@gmx.net>
*
* @license AGPL-3.0
*
@@ -29,7 +31,9 @@
namespace OCA\DAV\CardDAV;
use OC\Accounts\AccountManager;
+use OCP\AppFramework\Db\TTransactional;
use OCP\AppFramework\Http;
+use OCP\IDBConnection;
use OCP\IUser;
use OCP\IUserManager;
use Psr\Log\LoggerInterface;
@@ -38,10 +42,15 @@ use Sabre\DAV\Xml\Response\MultiStatus;
use Sabre\DAV\Xml\Service;
use Sabre\HTTP\ClientHttpException;
use Sabre\VObject\Reader;
+use function is_null;
class SyncService {
+
+ use TTransactional;
+
private CardDavBackend $backend;
private IUserManager $userManager;
+ private IDBConnection $dbConnection;
private LoggerInterface $logger;
private ?array $localSystemAddressBook = null;
private Converter $converter;
@@ -49,6 +58,7 @@ class SyncService {
public function __construct(CardDavBackend $backend,
IUserManager $userManager,
+ IDBConnection $dbConnection,
LoggerInterface $logger,
Converter $converter) {
$this->backend = $backend;
@@ -56,6 +66,7 @@ class SyncService {
$this->logger = $logger;
$this->converter = $converter;
$this->certPath = '';
+ $this->dbConnection = $dbConnection;
}
/**
@@ -86,12 +97,14 @@ class SyncService {
$cardUri = basename($resource);
if (isset($status[200])) {
$vCard = $this->download($url, $userName, $sharedSecret, $resource);
- $existingCard = $this->backend->getCard($addressBookId, $cardUri);
- if ($existingCard === false) {
- $this->backend->createCard($addressBookId, $cardUri, $vCard['body']);
- } else {
- $this->backend->updateCard($addressBookId, $cardUri, $vCard['body']);
- }
+ $this->atomic(function() use ($addressBookId, $cardUri, $vCard) {
+ $existingCard = $this->backend->getCard($addressBookId, $cardUri);
+ if ($existingCard === false) {
+ $this->backend->createCard($addressBookId, $cardUri, $vCard['body']);
+ } else {
+ $this->backend->updateCard($addressBookId, $cardUri, $vCard['body']);
+ }
+ }, $this->dbConnection);
} else {
$this->backend->deleteCard($addressBookId, $cardUri);
}
@@ -104,14 +117,15 @@ class SyncService {
* @throws \Sabre\DAV\Exception\BadRequest
*/
public function ensureSystemAddressBookExists(string $principal, string $uri, array $properties): ?array {
- $book = $this->backend->getAddressBooksByUri($principal, $uri);
- if (!is_null($book)) {
- return $book;
- }
- // FIXME This might break in clustered DB setup
- $this->backend->createAddressBook($principal, $uri, $properties);
+ return $this->atomic(function() use ($principal, $uri, $properties) {
+ $book = $this->backend->getAddressBooksByUri($principal, $uri);
+ if (!is_null($book)) {
+ return $book;
+ }
+ $this->backend->createAddressBook($principal, $uri, $properties);
- return $this->backend->getAddressBooksByUri($principal, $uri);
+ return $this->backend->getAddressBooksByUri($principal, $uri);
+ }, $this->dbConnection);
}
/**
@@ -206,28 +220,28 @@ class SyncService {
/**
* @param IUser $user
*/
- public function updateUser(IUser $user) {
+ public function updateUser(IUser $user): void {
$systemAddressBook = $this->getLocalSystemAddressBook();
$addressBookId = $systemAddressBook['id'];
- $name = $user->getBackendClassName();
- $userId = $user->getUID();
- $cardId = "$name:$userId.vcf";
+ $cardId = self::getCardUri($user);
if ($user->isEnabled()) {
- $card = $this->backend->getCard($addressBookId, $cardId);
- if ($card === false) {
- $vCard = $this->converter->createCardFromUser($user);
- if ($vCard !== null) {
- $this->backend->createCard($addressBookId, $cardId, $vCard->serialize(), false);
- }
- } else {
- $vCard = $this->converter->createCardFromUser($user);
- if (is_null($vCard)) {
- $this->backend->deleteCard($addressBookId, $cardId);
+ $this->atomic(function() use ($addressBookId, $cardId, $user) {
+ $card = $this->backend->getCard($addressBookId, $cardId);
+ if ($card === false) {
+ $vCard = $this->converter->createCardFromUser($user);
+ if ($vCard !== null) {
+ $this->backend->createCard($addressBookId, $cardId, $vCard->serialize(), false);
+ }
} else {
- $this->backend->updateCard($addressBookId, $cardId, $vCard->serialize());
+ $vCard = $this->converter->createCardFromUser($user);
+ if (is_null($vCard)) {
+ $this->backend->deleteCard($addressBookId, $cardId);
+ } else {
+ $this->backend->updateCard($addressBookId, $cardId, $vCard->serialize());
+ }
}
- }
+ }, $this->dbConnection);
} else {
$this->backend->deleteCard($addressBookId, $cardId);
}
@@ -239,10 +253,7 @@ class SyncService {
public function deleteUser($userOrCardId) {
$systemAddressBook = $this->getLocalSystemAddressBook();
if ($userOrCardId instanceof IUser) {
- $name = $userOrCardId->getBackendClassName();
- $userId = $userOrCardId->getUID();
-
- $userOrCardId = "$name:$userId.vcf";
+ $userOrCardId = self::getCardUri($userOrCardId);
}
$this->backend->deleteCard($systemAddressBook['id'], $userOrCardId);
}
@@ -281,4 +292,12 @@ class SyncService {
}
}
}
+
+ /**
+ * @param IUser $user
+ * @return string
+ */
+ public static function getCardUri(IUser $user): string {
+ return $user->getBackendClassName() . ':' . $user->getUID() . '.vcf';
+ }
}
diff --git a/apps/dav/lib/CardDAV/SystemAddressbook.php b/apps/dav/lib/CardDAV/SystemAddressbook.php
index 502e353acb3..41e473ede63 100644
--- a/apps/dav/lib/CardDAV/SystemAddressbook.php
+++ b/apps/dav/lib/CardDAV/SystemAddressbook.php
@@ -8,6 +8,7 @@ declare(strict_types=1);
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Anna Larch <anna.larch@gmx.net>
*
* @license GNU AGPL version 3 or any later version
*
@@ -27,27 +28,282 @@ declare(strict_types=1);
*/
namespace OCA\DAV\CardDAV;
+use OCA\DAV\Exception\UnsupportedLimitOnInitialSyncException;
+use OCA\Federation\TrustedServers;
+use OCP\Accounts\IAccountManager;
use OCP\IConfig;
+use OCP\IGroupManager;
use OCP\IL10N;
+use OCP\IRequest;
+use OCP\IUser;
+use OCP\IUserSession;
+use Sabre\CardDAV\Backend\SyncSupport;
use Sabre\CardDAV\Backend\BackendInterface;
+use Sabre\CardDAV\Card;
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\ICollection;
+use Sabre\VObject\Component\VCard;
+use Sabre\VObject\Reader;
+use function array_filter;
+use function array_unique;
class SystemAddressbook extends AddressBook {
+ public const URI_SHARED = 'z-server-generated--system';
/** @var IConfig */
private $config;
+ private IUserSession $userSession;
+ private ?TrustedServers $trustedServers;
+ private ?IRequest $request;
+ private ?IGroupManager $groupManager;
- public function __construct(BackendInterface $carddavBackend, array $addressBookInfo, IL10N $l10n, IConfig $config) {
+ public function __construct(BackendInterface $carddavBackend,
+ array $addressBookInfo,
+ IL10N $l10n,
+ IConfig $config,
+ IUserSession $userSession,
+ ?IRequest $request = null,
+ ?TrustedServers $trustedServers = null,
+ ?IGroupManager $groupManager) {
parent::__construct($carddavBackend, $addressBookInfo, $l10n);
$this->config = $config;
+ $this->userSession = $userSession;
+ $this->request = $request;
+ $this->trustedServers = $trustedServers;
+ $this->groupManager = $groupManager;
+
+ $this->addressBookInfo['{DAV:}displayname'] = $l10n->t('Accounts');
+ $this->addressBookInfo['{' . Plugin::NS_CARDDAV . '}addressbook-description'] = $l10n->t('System address book which holds all accounts');
}
+ /**
+ * No checkbox checked -> Show only the same user
+ * 'Allow username autocompletion in share dialog' -> show everyone
+ * 'Allow username autocompletion in share dialog' + 'Allow username autocompletion to users within the same groups' -> show only users in intersecting groups
+ * 'Allow username autocompletion in share dialog' + 'Allow username autocompletion to users based on phone number integration' -> show only the same user
+ * 'Allow username autocompletion in share dialog' + 'Allow username autocompletion to users within the same groups' + 'Allow username autocompletion to users based on phone number integration' -> show only users in intersecting groups
+ */
public function getChildren() {
$shareEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
$shareEnumerationGroup = $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
$shareEnumerationPhone = $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_phone', 'no') === 'yes';
- if (!$shareEnumeration || $shareEnumerationGroup || $shareEnumerationPhone) {
+ $user = $this->userSession->getUser();
+ if (!$user) {
+ // Should never happen because we don't allow anonymous access
return [];
}
+ if (!$shareEnumeration || !$shareEnumerationGroup && $shareEnumerationPhone) {
+ $name = SyncService::getCardUri($user);
+ try {
+ return [parent::getChild($name)];
+ } catch (NotFound $e) {
+ return [];
+ }
+ }
+ if ($shareEnumerationGroup) {
+ if ($this->groupManager === null) {
+ // Group manager is not available, so we can't determine which data is safe
+ return [];
+ }
+ $groups = $this->groupManager->getUserGroups($user);
+ $names = [];
+ foreach ($groups as $group) {
+ $users = $group->getUsers();
+ foreach ($users as $groupUser) {
+ if ($groupUser->getBackendClassName() === 'Guests') {
+ continue;
+ }
+ $names[] = SyncService::getCardUri($groupUser);
+ }
+ }
+ return parent::getMultipleChildren(array_unique($names));
+ }
+
+ $children = parent::getChildren();
+ return array_filter($children, function (Card $child) {
+ // check only for URIs that begin with Guests:
+ return strpos($child->getName(), 'Guests:') !== 0;
+ });
+ }
+
+ /**
+ * @param array $paths
+ * @return Card[]
+ * @throws NotFound
+ */
+ public function getMultipleChildren($paths): array {
+ if (!$this->isFederation()) {
+ return parent::getMultipleChildren($paths);
+ }
+
+ $objs = $this->carddavBackend->getMultipleCards($this->addressBookInfo['id'], $paths);
+ $children = [];
+ /** @var array $obj */
+ foreach ($objs as $obj) {
+ if (empty($obj)) {
+ continue;
+ }
+ $carddata = $this->extractCarddata($obj);
+ if (empty($carddata)) {
+ continue;
+ } else {
+ $obj['carddata'] = $carddata;
+ }
+ $children[] = new Card($this->carddavBackend, $this->addressBookInfo, $obj);
+ }
+ return $children;
+ }
+
+ /**
+ * @param string $name
+ * @return Card
+ * @throws NotFound
+ * @throws Forbidden
+ */
+ public function getChild($name): Card {
+ if (!$this->isFederation()) {
+ return parent::getChild($name);
+ }
+
+ $obj = $this->carddavBackend->getCard($this->addressBookInfo['id'], $name);
+ if (!$obj) {
+ throw new NotFound('Card not found');
+ }
+ $carddata = $this->extractCarddata($obj);
+ if (empty($carddata)) {
+ throw new Forbidden();
+ } else {
+ $obj['carddata'] = $carddata;
+ }
+ return new Card($this->carddavBackend, $this->addressBookInfo, $obj);
+ }
+
+ /**
+ * @throws UnsupportedLimitOnInitialSyncException
+ */
+ public function getChanges($syncToken, $syncLevel, $limit = null) {
+ if (!$syncToken && $limit) {
+ throw new UnsupportedLimitOnInitialSyncException();
+ }
+
+ if (!$this->carddavBackend instanceof SyncSupport) {
+ return null;
+ }
+
+ if (!$this->isFederation()) {
+ return parent::getChanges($syncToken, $syncLevel, $limit);
+ }
+
+ $changed = $this->carddavBackend->getChangesForAddressBook(
+ $this->addressBookInfo['id'],
+ $syncToken,
+ $syncLevel,
+ $limit
+ );
+
+ if (empty($changed)) {
+ return $changed;
+ }
+
+ $added = $modified = $deleted = [];
+ foreach ($changed['added'] as $uri) {
+ try {
+ $this->getChild($uri);
+ $added[] = $uri;
+ } catch (NotFound | Forbidden $e) {
+ $deleted[] = $uri;
+ }
+ }
+ foreach ($changed['modified'] as $uri) {
+ try {
+ $this->getChild($uri);
+ $modified[] = $uri;
+ } catch (NotFound | Forbidden $e) {
+ $deleted[] = $uri;
+ }
+ }
+ $changed['added'] = $added;
+ $changed['modified'] = $modified;
+ $changed['deleted'] = $deleted;
+ return $changed;
+ }
+
+ private function isFederation(): bool {
+ if ($this->trustedServers === null || $this->request === null) {
+ return false;
+ }
+
+ /** @psalm-suppress NoInterfaceProperties */
+ if ($this->request->server['PHP_AUTH_USER'] !== 'system') {
+ return false;
+ }
+
+ /** @psalm-suppress NoInterfaceProperties */
+ $sharedSecret = $this->request->server['PHP_AUTH_PW'];
+ if ($sharedSecret === null) {
+ return false;
+ }
+
+ $servers = $this->trustedServers->getServers();
+ $trusted = array_filter($servers, function ($trustedServer) use ($sharedSecret) {
+ return $trustedServer['shared_secret'] === $sharedSecret;
+ });
+ // Authentication is fine, but it's not for a federated share
+ if (empty($trusted)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * If the validation doesn't work the card is "not found" so we
+ * return empty carddata even if the carddata might exist in the local backend.
+ * This can happen when a user sets the required properties
+ * FN, N to a local scope only but the request is from
+ * a federated share.
+ *
+ * @see https://github.com/nextcloud/server/issues/38042
+ *
+ * @param array $obj
+ * @return string|null
+ */
+ private function extractCarddata(array $obj): ?string {
+ $obj['acl'] = $this->getChildACL();
+ $cardData = $obj['carddata'];
+ /** @var VCard $vCard */
+ $vCard = Reader::read($cardData);
+ foreach ($vCard->children() as $child) {
+ $scope = $child->offsetGet('X-NC-SCOPE');
+ if ($scope !== null && $scope->getValue() === IAccountManager::SCOPE_LOCAL) {
+ $vCard->remove($child);
+ }
+ }
+ $messages = $vCard->validate();
+ if (!empty($messages)) {
+ return null;
+ }
+
+ return $vCard->serialize();
+ }
+
+ /**
+ * @return mixed
+ * @throws Forbidden
+ */
+ public function delete() {
+ if ($this->isFederation()) {
+ parent::delete();
+ }
+ throw new Forbidden();
+ }
- return parent::getChildren();
+ public function getACL() {
+ return array_filter(parent::getACL(), function($acl) {
+ if (in_array($acl['privilege'], ['{DAV:}write', '{DAV:}all'], true)) {
+ return false;
+ }
+ return true;
+ });
}
}
diff --git a/apps/dav/lib/CardDAV/UserAddressBooks.php b/apps/dav/lib/CardDAV/UserAddressBooks.php
index 98957301120..938575bd1a7 100644
--- a/apps/dav/lib/CardDAV/UserAddressBooks.php
+++ b/apps/dav/lib/CardDAV/UserAddressBooks.php
@@ -9,6 +9,7 @@ declare(strict_types=1);
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Anna Larch <anna.larch@gmx.net>
*
* @license AGPL-3.0
*
@@ -30,8 +31,16 @@ namespace OCA\DAV\CardDAV;
use OCA\DAV\AppInfo\PluginManager;
use OCA\DAV\CardDAV\Integration\IAddressBookProvider;
use OCA\DAV\CardDAV\Integration\ExternalAddressBook;
+use OCA\Federation\TrustedServers;
+use OCP\AppFramework\QueryException;
use OCP\IConfig;
+use OCP\IGroupManager;
use OCP\IL10N;
+use OCP\IRequest;
+use OCP\IUser;
+use OCP\IUserSession;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
use Sabre\CardDAV\Backend;
use Sabre\DAV\Exception\MethodNotAllowed;
use Sabre\CardDAV\IAddressBook;
@@ -39,7 +48,6 @@ use function array_map;
use Sabre\DAV\MkCol;
class UserAddressBooks extends \Sabre\CardDAV\AddressBookHome {
-
/** @var IL10N */
protected $l10n;
@@ -48,12 +56,18 @@ class UserAddressBooks extends \Sabre\CardDAV\AddressBookHome {
/** @var PluginManager */
private $pluginManager;
+ private ?IUser $user;
+ private ?IGroupManager $groupManager;
public function __construct(Backend\BackendInterface $carddavBackend,
string $principalUri,
- PluginManager $pluginManager) {
+ PluginManager $pluginManager,
+ ?IUser $user,
+ ?IGroupManager $groupManager) {
parent::__construct($carddavBackend, $principalUri);
$this->pluginManager = $pluginManager;
+ $this->user = $user;
+ $this->groupManager = $groupManager;
}
/**
@@ -69,15 +83,49 @@ class UserAddressBooks extends \Sabre\CardDAV\AddressBookHome {
$this->config = \OC::$server->getConfig();
}
+ /** @var string|array $principal */
+ $principal = $this->principalUri;
$addressBooks = $this->carddavBackend->getAddressBooksForUser($this->principalUri);
- /** @var IAddressBook[] $objects */
- $objects = array_map(function (array $addressBook) {
- if ($addressBook['principaluri'] === 'principals/system/system') {
- return new SystemAddressbook($this->carddavBackend, $addressBook, $this->l10n, $this->config);
+ // add the system address book
+ $systemAddressBook = null;
+ if (is_string($principal) && $principal !== 'principals/system/system' && $this->carddavBackend instanceof CardDavBackend) {
+ $systemAddressBook = $this->carddavBackend->getAddressBooksByUri('principals/system/system', 'system');
+ if ($systemAddressBook !== null) {
+ $systemAddressBook['uri'] = SystemAddressbook::URI_SHARED;
}
+ }
+ if (!is_null($systemAddressBook)) {
+ $addressBooks[] = $systemAddressBook;
+ }
- return new AddressBook($this->carddavBackend, $addressBook, $this->l10n);
- }, $addressBooks);
+ $objects = [];
+ if (!empty($addressBooks)) {
+ /** @var IAddressBook[] $objects */
+ $objects = array_map(function (array $addressBook) {
+ $trustedServers = null;
+ $request = null;
+ try {
+ $trustedServers = \OC::$server->get(TrustedServers::class);
+ $request = \OC::$server->get(IRequest::class);
+ } catch (NotFoundExceptionInterface | ContainerExceptionInterface $e) {
+ // nothing to do, the request / trusted servers don't exist
+ }
+ if ($addressBook['principaluri'] === 'principals/system/system') {
+ return new SystemAddressbook(
+ $this->carddavBackend,
+ $addressBook,
+ $this->l10n,
+ $this->config,
+ \OCP\Server::get(IUserSession::class),
+ $request,
+ $trustedServers,
+ $this->groupManager
+ );
+ }
+
+ return new AddressBook($this->carddavBackend, $addressBook, $this->l10n);
+ }, $addressBooks);
+ }
/** @var IAddressBook[][] $objectsFromPlugins */
$objectsFromPlugins = array_map(function (IAddressBookProvider $plugin): array {
return $plugin->fetchAllForAddressBookHome($this->principalUri);
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index b0f17417d21..a7cafeb4a5e 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -422,14 +422,15 @@ class File extends Node implements IFile {
}
}
- /**
- * @param string $path
- */
- private function emitPreHooks($exists, $path = null) {
+ private function emitPreHooks(bool $exists, ?string $path = null): bool {
if (is_null($path)) {
$path = $this->path;
}
$hookPath = Filesystem::getView()->getRelativePath($this->fileView->getAbsolutePath($path));
+ if ($hookPath === null) {
+ // We only trigger hooks from inside default view
+ return true;
+ }
$run = true;
if (!$exists) {
@@ -450,14 +451,15 @@ class File extends Node implements IFile {
return $run;
}
- /**
- * @param string $path
- */
- private function emitPostHooks($exists, $path = null) {
+ private function emitPostHooks(bool $exists, ?string $path = null): void {
if (is_null($path)) {
$path = $this->path;
}
$hookPath = Filesystem::getView()->getRelativePath($this->fileView->getAbsolutePath($path));
+ if ($hookPath === null) {
+ // We only trigger hooks from inside default view
+ return;
+ }
if (!$exists) {
\OC_Hook::emit(\OC\Files\Filesystem::CLASSNAME, \OC\Files\Filesystem::signal_post_create, [
\OC\Files\Filesystem::signal_param_path => $hookPath
diff --git a/apps/dav/lib/Events/CardMovedEvent.php b/apps/dav/lib/Events/CardMovedEvent.php
new file mode 100644
index 00000000000..07139cfdecf
--- /dev/null
+++ b/apps/dav/lib/Events/CardMovedEvent.php
@@ -0,0 +1,120 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023, Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @author Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\DAV\Events;
+
+use OCP\EventDispatcher\Event;
+
+/**
+ * Class CardMovedEvent
+ *
+ * @package OCA\DAV\Events
+ * @since 27.0.0
+ */
+class CardMovedEvent extends Event {
+ private int $sourceAddressBookId;
+ private array $sourceAddressBookData;
+ private int $targetAddressBookId;
+ private array $targetAddressBookData;
+ private array $sourceShares;
+ private array $targetShares;
+ private array $objectData;
+
+ /**
+ * @since 27.0.0
+ */
+ public function __construct(int $sourceAddressBookId,
+ array $sourceAddressBookData,
+ int $targetAddressBookId,
+ array $targetAddressBookData,
+ array $sourceShares,
+ array $targetShares,
+ array $objectData) {
+ parent::__construct();
+ $this->sourceAddressBookId = $sourceAddressBookId;
+ $this->sourceAddressBookData = $sourceAddressBookData;
+ $this->targetAddressBookId = $targetAddressBookId;
+ $this->targetAddressBookData = $targetAddressBookData;
+ $this->sourceShares = $sourceShares;
+ $this->targetShares = $targetShares;
+ $this->objectData = $objectData;
+ }
+
+ /**
+ * @return int
+ * @since 27.0.0
+ */
+ public function getSourceAddressBookId(): int {
+ return $this->sourceAddressBookId;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getSourceAddressBookData(): array {
+ return $this->sourceAddressBookData;
+ }
+
+ /**
+ * @return int
+ * @since 27.0.0
+ */
+ public function getTargetAddressBookId(): int {
+ return $this->targetAddressBookId;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getTargetAddressBookData(): array {
+ return $this->targetAddressBookData;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getSourceShares(): array {
+ return $this->sourceShares;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getTargetShares(): array {
+ return $this->targetShares;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getObjectData(): array {
+ return $this->objectData;
+ }
+}
diff --git a/apps/dav/lib/Migration/Version1027Date20230504122946.php b/apps/dav/lib/Migration/Version1027Date20230504122946.php
new file mode 100644
index 00000000000..e9ae174f56e
--- /dev/null
+++ b/apps/dav/lib/Migration/Version1027Date20230504122946.php
@@ -0,0 +1,54 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023 Anna Larch <anna.larch@gmx.net>
+ *
+ * @author Anna Larch <anna.larch@gmx.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\DAV\Migration;
+
+use Closure;
+use OCA\DAV\CardDAV\SyncService;
+use OCP\DB\ISchemaWrapper;
+use OCP\Migration\IOutput;
+use OCP\Migration\SimpleMigrationStep;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
+use Psr\Log\LoggerInterface;
+
+class Version1027Date20230504122946 extends SimpleMigrationStep {
+ private SyncService $syncService;
+ private LoggerInterface $logger;
+
+ public function __construct(SyncService $syncService, LoggerInterface $logger) {
+ $this->syncService = $syncService;
+ $this->logger = $logger;
+ }
+ /**
+ * @param IOutput $output
+ * @param Closure(): ISchemaWrapper $schemaClosure
+ * @param array $options
+ */
+ public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void {
+ $this->syncService->syncInstance();
+ }
+}
diff --git a/apps/dav/lib/RootCollection.php b/apps/dav/lib/RootCollection.php
index bacb550b415..80d96f0d748 100644
--- a/apps/dav/lib/RootCollection.php
+++ b/apps/dav/lib/RootCollection.php
@@ -48,7 +48,9 @@ use OCP\Accounts\IAccountManager;
use OCP\App\IAppManager;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\Files\IRootFolder;
use OCP\IConfig;
+use OCP\IGroupManager;
use Psr\Log\LoggerInterface;
use Sabre\DAV\SimpleCollection;
@@ -65,6 +67,7 @@ class RootCollection extends SimpleCollection {
$dispatcher = \OC::$server->get(IEventDispatcher::class);
$config = \OC::$server->get(IConfig::class);
$proxyMapper = \OC::$server->query(ProxyMapper::class);
+ $rootFolder = \OCP\Server::get(IRootFolder::class);
$userPrincipalBackend = new Principal(
$userManager,
@@ -131,6 +134,7 @@ class RootCollection extends SimpleCollection {
$groupManager,
\OC::$server->getEventDispatcher()
);
+ $systemTagInUseCollection = \OCP\Server::get(SystemTag\SystemTagsInUseCollection::class);
$commentsCollection = new Comments\RootCollection(
\OC::$server->getCommentsManager(),
$userManager,
@@ -141,11 +145,11 @@ class RootCollection extends SimpleCollection {
$pluginManager = new PluginManager(\OC::$server, \OC::$server->query(IAppManager::class));
$usersCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $dispatcher);
- $usersAddressBookRoot = new AddressBookRoot($userPrincipalBackend, $usersCardDavBackend, $pluginManager, 'principals/users');
+ $usersAddressBookRoot = new AddressBookRoot($userPrincipalBackend, $usersCardDavBackend, $pluginManager, $userSession->getUser(), $groupManager, 'principals/users');
$usersAddressBookRoot->disableListing = $disableListing;
$systemCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $dispatcher);
- $systemAddressBookRoot = new AddressBookRoot(new SystemPrincipalBackend(), $systemCardDavBackend, $pluginManager, 'principals/system');
+ $systemAddressBookRoot = new AddressBookRoot(new SystemPrincipalBackend(), $systemCardDavBackend, $pluginManager, $userSession->getUser(), $groupManager, 'principals/system');
$systemAddressBookRoot->disableListing = $disableListing;
$uploadCollection = new Upload\RootCollection(
@@ -179,6 +183,7 @@ class RootCollection extends SimpleCollection {
$systemAddressBookRoot]),
$systemTagCollection,
$systemTagRelationsCollection,
+ $systemTagInUseCollection,
$commentsCollection,
$uploadCollection,
$avatarCollection,
diff --git a/apps/dav/lib/SystemTag/SystemTagNode.php b/apps/dav/lib/SystemTag/SystemTagNode.php
index 7310cdb19a2..8ade5085b03 100644
--- a/apps/dav/lib/SystemTag/SystemTagNode.php
+++ b/apps/dav/lib/SystemTag/SystemTagNode.php
@@ -64,6 +64,9 @@ class SystemTagNode implements \Sabre\DAV\INode {
*/
protected $isAdmin;
+ protected int $numberOfFiles = -1;
+ protected int $referenceFileId = -1;
+
/**
* Sets up the node, expects a full path name
*
@@ -179,4 +182,20 @@ class SystemTagNode implements \Sabre\DAV\INode {
throw new NotFound('Tag with id ' . $this->tag->getId() . ' not found', 0, $e);
}
}
+
+ public function getNumberOfFiles(): int {
+ return $this->numberOfFiles;
+ }
+
+ public function setNumberOfFiles(int $numberOfFiles): void {
+ $this->numberOfFiles = $numberOfFiles;
+ }
+
+ public function getReferenceFileId(): int {
+ return $this->referenceFileId;
+ }
+
+ public function setReferenceFileId(int $referenceFileId): void {
+ $this->referenceFileId = $referenceFileId;
+ }
}
diff --git a/apps/dav/lib/SystemTag/SystemTagPlugin.php b/apps/dav/lib/SystemTag/SystemTagPlugin.php
index c5c828cfbff..c5d200d578e 100644
--- a/apps/dav/lib/SystemTag/SystemTagPlugin.php
+++ b/apps/dav/lib/SystemTag/SystemTagPlugin.php
@@ -34,6 +34,7 @@ use OCP\SystemTag\ISystemTag;
use OCP\SystemTag\ISystemTagManager;
use OCP\SystemTag\ISystemTagObjectMapper;
use OCP\SystemTag\TagAlreadyExistsException;
+use OCP\Util;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\Exception\Conflict;
use Sabre\DAV\Exception\Forbidden;
@@ -61,6 +62,8 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
public const GROUPS_PROPERTYNAME = '{http://owncloud.org/ns}groups';
public const CANASSIGN_PROPERTYNAME = '{http://owncloud.org/ns}can-assign';
public const SYSTEM_TAGS_PROPERTYNAME = '{http://nextcloud.org/ns}system-tags';
+ public const NUM_FILES_PROPERTYNAME = '{http://nextcloud.org/ns}files-assigned';
+ public const FILEID_PROPERTYNAME = '{http://nextcloud.org/ns}reference-fileid';
/**
* @var \Sabre\DAV\Server $server
@@ -242,6 +245,11 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
return;
}
+ // child nodes from systemtags-assigned should point to normal tag endpoint
+ if (preg_match('/^systemtags-assigned\/[0-9]+/', $propFind->getPath())) {
+ $propFind->setPath(str_replace('systemtags-assigned/', 'systemtags/', $propFind->getPath()));
+ }
+
$propFind->handle(self::ID_PROPERTYNAME, function () use ($node) {
return $node->getSystemTag()->getId();
});
@@ -276,6 +284,16 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
}
return implode('|', $groups);
});
+
+ if ($node instanceof SystemTagNode) {
+ $propFind->handle(self::NUM_FILES_PROPERTYNAME, function () use ($node): int {
+ return $node->getNumberOfFiles();
+ });
+
+ $propFind->handle(self::FILEID_PROPERTYNAME, function () use ($node): int {
+ return $node->getReferenceFileId();
+ });
+ }
}
private function propfindForFile(PropFind $propFind, Node $node): void {
@@ -306,8 +324,11 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
if ($user === null) {
return;
}
-
+
$tags = $this->getTagsForFile($node->getId(), $user);
+ usort($tags, function (ISystemTag $tagA, ISystemTag $tagB): int {
+ return Util::naturalSortCompare($tagA->getName(), $tagB->getName());
+ });
return new SystemTagList($tags, $this->tagManager, $user);
});
}
@@ -370,6 +391,8 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
self::USERVISIBLE_PROPERTYNAME,
self::USERASSIGNABLE_PROPERTYNAME,
self::GROUPS_PROPERTYNAME,
+ self::NUM_FILES_PROPERTYNAME,
+ self::FILEID_PROPERTYNAME,
], function ($props) use ($node) {
$tag = $node->getSystemTag();
$name = $tag->getName();
@@ -406,6 +429,11 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
$this->tagManager->setTagGroups($tag, $groupIds);
}
+ if (isset($props[self::NUM_FILES_PROPERTYNAME]) || isset($props[self::FILEID_PROPERTYNAME])) {
+ // read-only properties
+ throw new Forbidden();
+ }
+
if ($updateTag) {
$node->update($name, $userVisible, $userAssignable);
}
diff --git a/apps/dav/lib/SystemTag/SystemTagsInUseCollection.php b/apps/dav/lib/SystemTag/SystemTagsInUseCollection.php
new file mode 100644
index 00000000000..b57e685e7e7
--- /dev/null
+++ b/apps/dav/lib/SystemTag/SystemTagsInUseCollection.php
@@ -0,0 +1,108 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\DAV\SystemTag;
+
+use OC\SystemTag\SystemTag;
+use OC\SystemTag\SystemTagsInFilesDetector;
+use OC\User\NoUserException;
+use OCP\Files\IRootFolder;
+use OCP\Files\NotPermittedException;
+use OCP\IUserSession;
+use OCP\SystemTag\ISystemTagManager;
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\SimpleCollection;
+
+class SystemTagsInUseCollection extends SimpleCollection {
+ protected IUserSession $userSession;
+ protected IRootFolder $rootFolder;
+ protected string $mediaType;
+ protected ISystemTagManager $systemTagManager;
+ protected SystemTagsInFilesDetector $systemTagsInFilesDetector;
+
+ /** @noinspection PhpMissingParentConstructorInspection */
+ public function __construct(
+ IUserSession $userSession,
+ IRootFolder $rootFolder,
+ ISystemTagManager $systemTagManager,
+ SystemTagsInFilesDetector $systemTagsInFilesDetector,
+ string $mediaType = ''
+ ) {
+ $this->userSession = $userSession;
+ $this->rootFolder = $rootFolder;
+ $this->systemTagManager = $systemTagManager;
+ $this->mediaType = $mediaType;
+ $this->systemTagsInFilesDetector = $systemTagsInFilesDetector;
+ $this->name = 'systemtags-assigned';
+ if ($this->mediaType != '') {
+ $this->name .= '/' . $this->mediaType;
+ }
+ }
+
+ public function setName($name): void {
+ throw new Forbidden('Permission denied to rename this collection');
+ }
+
+ public function getChild($name): self {
+ if ($this->mediaType !== '') {
+ throw new NotFound('Invalid media type');
+ }
+ return new self($this->userSession, $this->rootFolder, $this->systemTagManager, $this->systemTagsInFilesDetector, $name);
+ }
+
+ /**
+ * @return SystemTagNode[]
+ * @throws NotPermittedException
+ * @throws Forbidden
+ */
+ public function getChildren(): array {
+ $user = $this->userSession->getUser();
+ $userFolder = null;
+ try {
+ if ($user) {
+ $userFolder = $this->rootFolder->getUserFolder($user->getUID());
+ }
+ } catch (NoUserException) {
+ // will throw a Sabre exception in the next step.
+ }
+ if ($user === null || $userFolder === null) {
+ throw new Forbidden('Permission denied to read this collection');
+ }
+
+ $result = $this->systemTagsInFilesDetector->detectAssignedSystemTagsIn($userFolder, $this->mediaType);
+ $children = [];
+ foreach ($result as $tagData) {
+ $tag = new SystemTag((string)$tagData['id'], $tagData['name'], (bool)$tagData['visibility'], (bool)$tagData['editable']);
+ // read only, so we can submit the isAdmin parameter as false generally
+ $node = new SystemTagNode($tag, $user, false, $this->systemTagManager);
+ $node->setNumberOfFiles($tagData['number_files']);
+ $node->setReferenceFileId($tagData['ref_file_id']);
+ $children[] = $node;
+ }
+ return $children;
+ }
+}
diff --git a/apps/dav/lib/Upload/ChunkingV2Plugin.php b/apps/dav/lib/Upload/ChunkingV2Plugin.php
index cb7c802125c..6b660fb7c6f 100644
--- a/apps/dav/lib/Upload/ChunkingV2Plugin.php
+++ b/apps/dav/lib/Upload/ChunkingV2Plugin.php
@@ -255,17 +255,15 @@ class ChunkingV2Plugin extends ServerPlugin {
public function beforeDelete(RequestInterface $request, ResponseInterface $response) {
try {
- $this->prepareUpload($request->getPath());
- if (!$this->uploadFolder instanceof UploadFolder) {
- return true;
- }
-
- [$storage, $storagePath] = $this->getUploadStorage($this->uploadPath);
- $storage->cancelChunkedWrite($storagePath, $this->uploadId);
- return true;
- } catch (NotFound $e) {
+ $this->prepareUpload(dirname($request->getPath()));
+ $this->checkPrerequisites();
+ } catch (StorageInvalidException|BadRequest|NotFound $e) {
return true;
}
+
+ [$storage, $storagePath] = $this->getUploadStorage($this->uploadPath);
+ $storage->cancelChunkedWrite($storagePath, $this->uploadId);
+ return true;
}
/**
diff --git a/apps/dav/lib/UserMigration/CalendarMigrator.php b/apps/dav/lib/UserMigration/CalendarMigrator.php
index 057f7dce77d..e5b404e785f 100644
--- a/apps/dav/lib/UserMigration/CalendarMigrator.php
+++ b/apps/dav/lib/UserMigration/CalendarMigrator.php
@@ -211,7 +211,7 @@ class CalendarMigrator implements IMigrator, ISizeEstimationMigrator {
/**
* {@inheritDoc}
*/
- public function getEstimatedExportSize(IUser $user): int {
+ public function getEstimatedExportSize(IUser $user): int|float {
$calendarExports = $this->getCalendarExports($user, new NullOutput());
$calendarCount = count($calendarExports);
@@ -230,7 +230,7 @@ class CalendarMigrator implements IMigrator, ISizeEstimationMigrator {
// 450B for each component (events, todos, alarms, etc.)
$size += ($componentCount * 450) / 1024;
- return (int)ceil($size);
+ return ceil($size);
}
/**
diff --git a/apps/dav/lib/UserMigration/ContactsMigrator.php b/apps/dav/lib/UserMigration/ContactsMigrator.php
index 196d0a6110a..58e267ab28c 100644
--- a/apps/dav/lib/UserMigration/ContactsMigrator.php
+++ b/apps/dav/lib/UserMigration/ContactsMigrator.php
@@ -202,7 +202,7 @@ class ContactsMigrator implements IMigrator, ISizeEstimationMigrator {
/**
* {@inheritDoc}
*/
- public function getEstimatedExportSize(IUser $user): int {
+ public function getEstimatedExportSize(IUser $user): int|float {
$addressBookExports = $this->getAddressBookExports($user, new NullOutput());
$addressBookCount = count($addressBookExports);
@@ -217,7 +217,7 @@ class ContactsMigrator implements IMigrator, ISizeEstimationMigrator {
// 350B for each contact
$size += ($contactsCount * 350) / 1024;
- return (int)ceil($size);
+ return ceil($size);
}
/**
diff --git a/apps/dav/tests/unit/CardDAV/AddressBookTest.php b/apps/dav/tests/unit/CardDAV/AddressBookTest.php
index ecee09f238e..81361d02068 100644
--- a/apps/dav/tests/unit/CardDAV/AddressBookTest.php
+++ b/apps/dav/tests/unit/CardDAV/AddressBookTest.php
@@ -6,6 +6,7 @@
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @license AGPL-3.0
@@ -26,94 +27,122 @@
namespace OCA\DAV\Tests\unit\CardDAV;
use OCA\DAV\CardDAV\AddressBook;
+use OCA\DAV\CardDAV\Card;
use OCA\DAV\CardDAV\CardDavBackend;
use OCP\IL10N;
+use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
+use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\PropPatch;
use Test\TestCase;
class AddressBookTest extends TestCase {
+ public function testMove(): void {
+ $backend = $this->createMock(CardDavBackend::class);
+ $addressBookInfo = [
+ '{http://owncloud.org/ns}owner-principal' => 'user1',
+ '{DAV:}displayname' => 'Test address book',
+ 'principaluri' => 'user2',
+ 'id' => 666,
+ 'uri' => 'default',
+ ];
+ $l10n = $this->createMock(IL10N::class);
+ $logger = $this->createMock(LoggerInterface::class);
+ $addressBook = new AddressBook($backend, $addressBookInfo, $l10n, $logger);
+
+ $card = new Card($backend, $addressBookInfo, ['id' => 5, 'carddata' => 'RANDOM VCF DATA', 'uri' => 'something', 'addressbookid' => 23]);
+
+ $backend->expects($this->once())->method('moveCard')->with(23, 666, 'something', 'user1')->willReturn(true);
+
+ $addressBook->moveInto('new', 'old', $card);
+ }
+
public function testDelete(): void {
- /** @var \PHPUnit\Framework\MockObject\MockObject | CardDavBackend $backend */
+ /** @var MockObject | CardDavBackend $backend */
$backend = $this->getMockBuilder(CardDavBackend::class)->disableOriginalConstructor()->getMock();
$backend->expects($this->once())->method('updateShares');
$backend->expects($this->any())->method('getShares')->willReturn([
['href' => 'principal:user2']
]);
- $calendarInfo = [
+ $addressBookInfo = [
'{http://owncloud.org/ns}owner-principal' => 'user1',
'{DAV:}displayname' => 'Test address book',
'principaluri' => 'user2',
'id' => 666,
'uri' => 'default',
];
- $l = $this->createMock(IL10N::class);
- $c = new AddressBook($backend, $calendarInfo, $l);
- $c->delete();
+ $l10n = $this->createMock(IL10N::class);
+ $logger = $this->createMock(LoggerInterface::class);
+ $addressBook = new AddressBook($backend, $addressBookInfo, $l10n, $logger);
+ $addressBook->delete();
}
public function testDeleteFromGroup(): void {
- $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->expectException(Forbidden::class);
- /** @var \PHPUnit\Framework\MockObject\MockObject | CardDavBackend $backend */
+ /** @var MockObject | CardDavBackend $backend */
$backend = $this->getMockBuilder(CardDavBackend::class)->disableOriginalConstructor()->getMock();
$backend->expects($this->never())->method('updateShares');
$backend->expects($this->any())->method('getShares')->willReturn([
['href' => 'principal:group2']
]);
- $calendarInfo = [
+ $addressBookInfo = [
'{http://owncloud.org/ns}owner-principal' => 'user1',
'{DAV:}displayname' => 'Test address book',
'principaluri' => 'user2',
'id' => 666,
'uri' => 'default',
];
- $l = $this->createMock(IL10N::class);
- $c = new AddressBook($backend, $calendarInfo, $l);
- $c->delete();
+ $l10n = $this->createMock(IL10N::class);
+ $logger = $this->createMock(LoggerInterface::class);
+ $addressBook = new AddressBook($backend, $addressBookInfo, $l10n, $logger);
+ $addressBook->delete();
}
public function testPropPatch(): void {
- $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->expectException(Forbidden::class);
- /** @var \PHPUnit\Framework\MockObject\MockObject | CardDavBackend $backend */
+ /** @var MockObject | CardDavBackend $backend */
$backend = $this->getMockBuilder(CardDavBackend::class)->disableOriginalConstructor()->getMock();
- $calendarInfo = [
+ $addressBookInfo = [
'{http://owncloud.org/ns}owner-principal' => 'user1',
'{DAV:}displayname' => 'Test address book',
'principaluri' => 'user2',
'id' => 666,
'uri' => 'default',
];
- $l = $this->createMock(IL10N::class);
- $c = new AddressBook($backend, $calendarInfo, $l);
- $c->propPatch(new PropPatch([]));
+ $l10n = $this->createMock(IL10N::class);
+ $logger = $this->createMock(LoggerInterface::class);
+ $addressBook = new AddressBook($backend, $addressBookInfo, $l10n, $logger);
+ $addressBook->propPatch(new PropPatch([]));
}
/**
* @dataProvider providesReadOnlyInfo
*/
public function testAcl($expectsWrite, $readOnlyValue, $hasOwnerSet): void {
- /** @var \PHPUnit\Framework\MockObject\MockObject | CardDavBackend $backend */
+ /** @var MockObject | CardDavBackend $backend */
$backend = $this->getMockBuilder(CardDavBackend::class)->disableOriginalConstructor()->getMock();
$backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1);
- $calendarInfo = [
+ $addressBookInfo = [
'{DAV:}displayname' => 'Test address book',
'principaluri' => 'user2',
'id' => 666,
'uri' => 'default'
];
if (!is_null($readOnlyValue)) {
- $calendarInfo['{http://owncloud.org/ns}read-only'] = $readOnlyValue;
+ $addressBookInfo['{http://owncloud.org/ns}read-only'] = $readOnlyValue;
}
if ($hasOwnerSet) {
- $calendarInfo['{http://owncloud.org/ns}owner-principal'] = 'user1';
+ $addressBookInfo['{http://owncloud.org/ns}owner-principal'] = 'user1';
}
- $l = $this->createMock(IL10N::class);
- $c = new AddressBook($backend, $calendarInfo, $l);
- $acl = $c->getACL();
- $childAcl = $c->getChildACL();
+ $l10n = $this->createMock(IL10N::class);
+ $logger = $this->createMock(LoggerInterface::class);
+ $addressBook = new AddressBook($backend, $addressBookInfo, $l10n, $logger);
+ $acl = $addressBook->getACL();
+ $childAcl = $addressBook->getChildACL();
$expectedAcl = [[
'privilege' => '{DAV:}read',
@@ -142,7 +171,7 @@ class AddressBookTest extends TestCase {
$this->assertEquals($expectedAcl, $childAcl);
}
- public function providesReadOnlyInfo() {
+ public function providesReadOnlyInfo(): array {
return [
'read-only property not set' => [true, null, true],
'read-only property is false' => [true, false, true],
diff --git a/apps/dav/tests/unit/CardDAV/ConverterTest.php b/apps/dav/tests/unit/CardDAV/ConverterTest.php
index fe45e4e5430..6b589ec3874 100644
--- a/apps/dav/tests/unit/CardDAV/ConverterTest.php
+++ b/apps/dav/tests/unit/CardDAV/ConverterTest.php
@@ -1,4 +1,7 @@
<?php
+
+declare(strict_types=1);
+
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -33,6 +36,7 @@ use OCP\Accounts\IAccountManager;
use OCP\Accounts\IAccountProperty;
use OCP\IImage;
use OCP\IUser;
+use OCP\IUserManager;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@@ -40,11 +44,14 @@ class ConverterTest extends TestCase {
/** @var IAccountManager|\PHPUnit\Framework\MockObject\MockObject */
private $accountManager;
+ /** @var IUserManager|(IUserManager&MockObject)|MockObject */
+ private IUserManager|MockObject $userManager;
protected function setUp(): void {
parent::setUp();
$this->accountManager = $this->createMock(IAccountManager::class);
+ $this->userManager = $this->createMock(IUserManager::class);
}
/**
@@ -70,17 +77,15 @@ class ConverterTest extends TestCase {
public function getAccountManager(IUser $user) {
$account = $this->createMock(IAccount::class);
$account->expects($this->any())
- ->method('getProperties')
+ ->method('getAllProperties')
->willReturnCallback(function () use ($user) {
- return [
- $this->getAccountPropertyMock(IAccountManager::PROPERTY_DISPLAYNAME, $user->getDisplayName(), IAccountManager::SCOPE_FEDERATED),
- $this->getAccountPropertyMock(IAccountManager::PROPERTY_ADDRESS, '', IAccountManager::SCOPE_LOCAL),
- $this->getAccountPropertyMock(IAccountManager::PROPERTY_WEBSITE, '', IAccountManager::SCOPE_LOCAL),
- $this->getAccountPropertyMock(IAccountManager::PROPERTY_EMAIL, $user->getEMailAddress(), IAccountManager::SCOPE_FEDERATED),
- $this->getAccountPropertyMock(IAccountManager::PROPERTY_AVATAR, $user->getAvatarImage(-1)->data(), IAccountManager::SCOPE_FEDERATED),
- $this->getAccountPropertyMock(IAccountManager::PROPERTY_PHONE, '', IAccountManager::SCOPE_LOCAL),
- $this->getAccountPropertyMock(IAccountManager::PROPERTY_TWITTER, '', IAccountManager::SCOPE_LOCAL),
- ];
+ yield $this->getAccountPropertyMock(IAccountManager::PROPERTY_DISPLAYNAME, $user->getDisplayName(), IAccountManager::SCOPE_FEDERATED);
+ yield $this->getAccountPropertyMock(IAccountManager::PROPERTY_ADDRESS, '', IAccountManager::SCOPE_LOCAL);
+ yield $this->getAccountPropertyMock(IAccountManager::PROPERTY_WEBSITE, '', IAccountManager::SCOPE_LOCAL);
+ yield $this->getAccountPropertyMock(IAccountManager::PROPERTY_EMAIL, $user->getEMailAddress(), IAccountManager::SCOPE_FEDERATED);
+ yield $this->getAccountPropertyMock(IAccountManager::PROPERTY_AVATAR, $user->getAvatarImage(-1)->data(), IAccountManager::SCOPE_FEDERATED);
+ yield $this->getAccountPropertyMock(IAccountManager::PROPERTY_PHONE, '', IAccountManager::SCOPE_LOCAL);
+ yield $this->getAccountPropertyMock(IAccountManager::PROPERTY_TWITTER, '', IAccountManager::SCOPE_LOCAL);
});
$accountManager = $this->getMockBuilder(IAccountManager::class)
@@ -98,7 +103,7 @@ class ConverterTest extends TestCase {
$user = $this->getUserMock((string)$displayName, $eMailAddress, $cloudId);
$accountManager = $this->getAccountManager($user);
- $converter = new Converter($accountManager);
+ $converter = new Converter($accountManager, $this->userManager);
$vCard = $converter->createCardFromUser($user);
if ($expectedVCard !== null) {
$this->assertInstanceOf('Sabre\VObject\Component\VCard', $vCard);
@@ -109,6 +114,29 @@ class ConverterTest extends TestCase {
}
}
+ public function testManagerProp(): void {
+ $user = $this->getUserMock("user", "user@domain.tld", "user@cloud.domain.tld");
+ $user->method('getManagerUids')
+ ->willReturn(['mgr']);
+ $this->userManager->expects(self::once())
+ ->method('getDisplayName')
+ ->with('mgr')
+ ->willReturn('Manager');
+ $accountManager = $this->getAccountManager($user);
+
+ $converter = new Converter($accountManager, $this->userManager);
+ $vCard = $converter->createCardFromUser($user);
+
+ $this->compareData(
+ [
+ 'cloud' => 'user@cloud.domain.tld',
+ 'email' => 'user@domain.tld',
+ 'x-managersname' => 'Manager',
+ ],
+ $vCard->jsonSerialize()
+ );
+ }
+
protected function compareData($expected, $data) {
foreach ($expected as $key => $value) {
$found = false;
@@ -184,7 +212,7 @@ class ConverterTest extends TestCase {
* @param $fullName
*/
public function testNameSplitter($expected, $fullName): void {
- $converter = new Converter($this->accountManager);
+ $converter = new Converter($this->accountManager, $this->userManager);
$r = $converter->splitFullName($fullName);
$r = implode(';', $r);
$this->assertEquals($expected, $r);
diff --git a/apps/dav/tests/unit/CardDAV/SyncServiceTest.php b/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
index 789009057fd..c031f8cbb97 100644
--- a/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
+++ b/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
@@ -30,6 +30,7 @@ namespace OCA\DAV\Tests\unit\CardDAV;
use OCA\DAV\CardDAV\CardDavBackend;
use OCA\DAV\CardDAV\Converter;
use OCA\DAV\CardDAV\SyncService;
+use OCP\IDBConnection;
use OCP\IUser;
use OCP\IUserManager;
use Psr\Log\LoggerInterface;
@@ -84,10 +85,11 @@ class SyncServiceTest extends TestCase {
/** @var IUserManager $userManager */
$userManager = $this->getMockBuilder(IUserManager::class)->disableOriginalConstructor()->getMock();
+ $dbConnection = $this->createMock(IDBConnection::class);
$logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
$converter = $this->createMock(Converter::class);
- $ss = new SyncService($backend, $userManager, $logger, $converter);
+ $ss = new SyncService($backend, $userManager, $dbConnection, $logger, $converter);
$ss->ensureSystemAddressBookExists('principals/users/adam', 'contacts', []);
}
@@ -126,6 +128,7 @@ class SyncServiceTest extends TestCase {
/** @var IUserManager | \PHPUnit\Framework\MockObject\MockObject $userManager */
$userManager = $this->getMockBuilder(IUserManager::class)->disableOriginalConstructor()->getMock();
+ $dbConnection = $this->createMock(IDBConnection::class);
/** @var IUser | \PHPUnit\Framework\MockObject\MockObject $user */
$user = $this->getMockBuilder(IUser::class)->disableOriginalConstructor()->getMock();
@@ -139,7 +142,7 @@ class SyncServiceTest extends TestCase {
->method('createCardFromUser')
->willReturn($this->createMock(VCard::class));
- $ss = new SyncService($backend, $userManager, $logger, $converter);
+ $ss = new SyncService($backend, $userManager, $dbConnection, $logger, $converter);
$ss->updateUser($user);
$ss->updateUser($user);
@@ -151,7 +154,7 @@ class SyncServiceTest extends TestCase {
* @param int $createCount
* @param int $updateCount
* @param int $deleteCount
- * @return \PHPUnit\Framework\MockObject\MockObject
+ * @return \PHPUnit\Framework\MockObject\MockObject|CardDavBackend
*/
private function getBackendMock($createCount, $updateCount, $deleteCount) {
$backend = $this->getMockBuilder(CardDavBackend::class)
@@ -170,12 +173,13 @@ class SyncServiceTest extends TestCase {
*/
private function getSyncServiceMock($backend, $response) {
$userManager = $this->getMockBuilder(IUserManager::class)->disableOriginalConstructor()->getMock();
+ $dbConnection = $this->createMock(IDBConnection::class);
$logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
$converter = $this->createMock(Converter::class);
/** @var SyncService | \PHPUnit\Framework\MockObject\MockObject $ss */
$ss = $this->getMockBuilder(SyncService::class)
->setMethods(['ensureSystemAddressBookExists', 'requestSyncReport', 'download', 'getCertPath'])
- ->setConstructorArgs([$backend, $userManager, $logger, $converter])
+ ->setConstructorArgs([$backend, $userManager, $dbConnection, $logger, $converter])
->getMock();
$ss->method('requestSyncReport')->withAnyParameters()->willReturn(['response' => $response, 'token' => 'sync-token-1']);
$ss->method('ensureSystemAddressBookExists')->willReturn(['id' => 1]);
diff --git a/apps/dav/tests/unit/CardDAV/SystemAddressBookTest.php b/apps/dav/tests/unit/CardDAV/SystemAddressBookTest.php
new file mode 100644
index 00000000000..a753a1c5a73
--- /dev/null
+++ b/apps/dav/tests/unit/CardDAV/SystemAddressBookTest.php
@@ -0,0 +1,128 @@
+<?php
+
+declare(strict_types=1);
+
+/*
+ * @copyright 2023 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2023 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace OCA\DAV\Tests\unit\CardDAV;
+
+use OC\AppFramework\Http\Request;
+use OCA\DAV\CardDAV\SystemAddressbook;
+use OCA\Federation\TrustedServers;
+use OCP\Accounts\IAccountManager;
+use OCP\IConfig;
+use OCP\IL10N;
+use OCP\IRequest;
+use OCP\IUserSession;
+use PHPUnit\Framework\MockObject\MockObject;
+use Sabre\CardDAV\Backend\BackendInterface;
+use Sabre\VObject\Component\VCard;
+use Sabre\VObject\Reader;
+use Test\TestCase;
+
+class SystemAddressBookTest extends TestCase {
+
+ private MockObject|BackendInterface $cardDavBackend;
+ private array $addressBookInfo;
+ private IL10N|MockObject $l10n;
+ private IConfig|MockObject $config;
+ private IUserSession $userSession;
+ private IRequest|MockObject $request;
+ private array $server;
+ private TrustedServers|MockObject $trustedServers;
+ private SystemAddressbook $addressBook;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->cardDavBackend = $this->createMock(BackendInterface::class);
+ $this->addressBookInfo = [
+ 'id' => 123,
+ '{DAV:}displayname' => 'Accounts',
+ 'principaluri' => 'principals/system/system',
+ ];
+ $this->l10n = $this->createMock(IL10N::class);
+ $this->config = $this->createMock(IConfig::class);
+ $this->userSession = $this->createMock(IUserSession::class);
+ $this->request = $this->createMock(Request::class);
+ $this->server = [
+ 'PHP_AUTH_USER' => 'system',
+ 'PHP_AUTH_PW' => 'shared123',
+ ];
+ $this->request->method('__get')->with('server')->willReturn($this->server);
+ $this->trustedServers = $this->createMock(TrustedServers::class);
+
+ $this->addressBook = new SystemAddressbook(
+ $this->cardDavBackend,
+ $this->addressBookInfo,
+ $this->l10n,
+ $this->config,
+ $this->userSession,
+ $this->request,
+ $this->trustedServers,
+ null,
+ );
+ }
+
+ public function testGetFilteredChildForFederation(): void {
+ $this->trustedServers->expects(self::once())
+ ->method('getServers')
+ ->willReturn([
+ [
+ 'shared_secret' => 'shared123',
+ ],
+ ]);
+ $vcfWithScopes = <<<VCF
+BEGIN:VCARD
+VERSION:3.0
+PRODID:-//Sabre//Sabre VObject 4.4.2//EN
+UID:admin
+FN;X-NC-SCOPE=v2-federated:admin
+N;X-NC-SCOPE=v2-federated:admin;;;;
+ADR;TYPE=OTHER;X-NC-SCOPE=v2-local:Testing test test test;;;;;;
+EMAIL;TYPE=OTHER;X-NC-SCOPE=v2-federated:miau_lalala@gmx.net
+TEL;TYPE=OTHER;X-NC-SCOPE=v2-local:+435454454544
+CLOUD:admin@http://localhost
+END:VCARD
+VCF;
+ $originalCard = [
+ 'carddata' => $vcfWithScopes,
+ ];
+ $this->cardDavBackend->expects(self::once())
+ ->method('getCard')
+ ->with(123, 'user.vcf')
+ ->willReturn($originalCard);
+
+ $card = $this->addressBook->getChild("user.vcf");
+
+ /** @var VCard $vCard */
+ $vCard = Reader::read($card->get());
+ foreach ($vCard->children() as $child) {
+ $scope = $child->offsetGet('X-NC-SCOPE');
+ if ($scope !== null) {
+ self::assertNotEquals(IAccountManager::SCOPE_PRIVATE, $scope->getValue());
+ self::assertNotEquals(IAccountManager::SCOPE_LOCAL, $scope->getValue());
+ }
+ }
+ }
+
+}
diff --git a/apps/encryption/appinfo/info.xml b/apps/encryption/appinfo/info.xml
index e77261c4712..de7ba7f0783 100644
--- a/apps/encryption/appinfo/info.xml
+++ b/apps/encryption/appinfo/info.xml
@@ -42,6 +42,7 @@ Please read the documentation to know all implications before you decide to enab
<command>OCA\Encryption\Command\ScanLegacyFormat</command>
<command>OCA\Encryption\Command\FixEncryptedVersion</command>
<command>OCA\Encryption\Command\FixKeyLocation</command>
+ <command>OCA\Encryption\Command\DropLegacyFileKey</command>
</commands>
<settings>
diff --git a/apps/encryption/composer/composer/autoload_classmap.php b/apps/encryption/composer/composer/autoload_classmap.php
index 9f9ab4e406f..059296338b4 100644
--- a/apps/encryption/composer/composer/autoload_classmap.php
+++ b/apps/encryption/composer/composer/autoload_classmap.php
@@ -9,6 +9,7 @@ return array(
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'OCA\\Encryption\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\Encryption\\Command\\DisableMasterKey' => $baseDir . '/../lib/Command/DisableMasterKey.php',
+ 'OCA\\Encryption\\Command\\DropLegacyFileKey' => $baseDir . '/../lib/Command/DropLegacyFileKey.php',
'OCA\\Encryption\\Command\\EnableMasterKey' => $baseDir . '/../lib/Command/EnableMasterKey.php',
'OCA\\Encryption\\Command\\FixEncryptedVersion' => $baseDir . '/../lib/Command/FixEncryptedVersion.php',
'OCA\\Encryption\\Command\\FixKeyLocation' => $baseDir . '/../lib/Command/FixKeyLocation.php',
diff --git a/apps/encryption/composer/composer/autoload_static.php b/apps/encryption/composer/composer/autoload_static.php
index 8f50f064997..6c458eabddd 100644
--- a/apps/encryption/composer/composer/autoload_static.php
+++ b/apps/encryption/composer/composer/autoload_static.php
@@ -24,6 +24,7 @@ class ComposerStaticInitEncryption
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'OCA\\Encryption\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\Encryption\\Command\\DisableMasterKey' => __DIR__ . '/..' . '/../lib/Command/DisableMasterKey.php',
+ 'OCA\\Encryption\\Command\\DropLegacyFileKey' => __DIR__ . '/..' . '/../lib/Command/DropLegacyFileKey.php',
'OCA\\Encryption\\Command\\EnableMasterKey' => __DIR__ . '/..' . '/../lib/Command/EnableMasterKey.php',
'OCA\\Encryption\\Command\\FixEncryptedVersion' => __DIR__ . '/..' . '/../lib/Command/FixEncryptedVersion.php',
'OCA\\Encryption\\Command\\FixKeyLocation' => __DIR__ . '/..' . '/../lib/Command/FixKeyLocation.php',
diff --git a/apps/encryption/composer/composer/installed.php b/apps/encryption/composer/composer/installed.php
index 1426826287d..46be34510db 100644
--- a/apps/encryption/composer/composer/installed.php
+++ b/apps/encryption/composer/composer/installed.php
@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => 'dd3d689e04a5e1d558da937ca72980e0e2c7c404',
+ 'reference' => 'ffa8d21f37c8ccf968974b6aeb828e3e84287b94',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => 'dd3d689e04a5e1d558da937ca72980e0e2c7c404',
+ 'reference' => 'ffa8d21f37c8ccf968974b6aeb828e3e84287b94',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
diff --git a/apps/encryption/l10n/ru.js b/apps/encryption/l10n/ru.js
index bb114955720..eb4b88d51bf 100644
--- a/apps/encryption/l10n/ru.js
+++ b/apps/encryption/l10n/ru.js
@@ -28,10 +28,15 @@ OC.L10N.register(
"Bad Signature" : "Неверная подпись",
"Missing Signature" : "Подпись отсутствует",
"one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера",
+ "Encryption password" : "Пароль шифрования",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "Администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля <strong>%s</strong>.",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "Администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля \"%s\".",
+ "Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password." : "Пожалуйста, войдите в веб-интерфейс, перейдите в раздел \"Безопасность\" ваших личных настроек и обновите свой пароль шифрования, введя этот пароль в поле \"Старый пароль для входа\" и ваш текущий логин/пароль.",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удаётся расшифровать этот файл, вероятно, это файл общего доступа. Пожалуйста, попросите владельца файла предоставить доступ повторно.",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу прочитать этот файл, вероятно, это общий файл. Пожалуйста, попросите владельца файла повторно поделиться им с вами.",
"Default encryption module" : "Модуль шифрования по умолчанию",
"Default encryption module for server-side encryption" : "Используемый по умолчанию модуль для шифрования данных на сервере",
+ "In order to use this encryption module you need to enable server-side encryption in the admin settings. Once enabled this module will encrypt all your files transparently. The encryption is based on AES 256 keys.\nThe module will not touch existing files, only new files will be encrypted after server-side encryption was enabled. It is also not possible to disable the encryption again and switch back to an unencrypted system.\nPlease read the documentation to know all implications before you decide to enable server-side encryption." : "Чтобы использовать этот модуль шифрования, вам необходимо включить шифрование на стороне сервера в настройках администратора. После включения этот модуль будет прозрачно шифровать все ваши файлы. Шифрование основано на ключах AES 256.\nМодуль не будет касаться существующих файлов, только новые файлы будут зашифрованы после включения шифрования на стороне сервера. Также невозможно снова отключить шифрование и переключиться обратно на незашифрованную систему.\nПожалуйста, ознакомьтесь с документацией, чтобы узнать обо всех последствиях, прежде чем вы решите включить шифрование на стороне сервера.",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново",
"Encrypt the home storage" : "Шифровать домашнюю директорию",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "При включении данного параметра будут зашифрованы все файлы, хранящиеся в основном хранилище. В противном случае шифруются только файлы на внешних хранилищах.",
diff --git a/apps/encryption/l10n/ru.json b/apps/encryption/l10n/ru.json
index bc76acc030c..82ad3039d1a 100644
--- a/apps/encryption/l10n/ru.json
+++ b/apps/encryption/l10n/ru.json
@@ -26,10 +26,15 @@
"Bad Signature" : "Неверная подпись",
"Missing Signature" : "Подпись отсутствует",
"one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера",
+ "Encryption password" : "Пароль шифрования",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "Администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля <strong>%s</strong>.",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "Администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля \"%s\".",
+ "Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password." : "Пожалуйста, войдите в веб-интерфейс, перейдите в раздел \"Безопасность\" ваших личных настроек и обновите свой пароль шифрования, введя этот пароль в поле \"Старый пароль для входа\" и ваш текущий логин/пароль.",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удаётся расшифровать этот файл, вероятно, это файл общего доступа. Пожалуйста, попросите владельца файла предоставить доступ повторно.",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу прочитать этот файл, вероятно, это общий файл. Пожалуйста, попросите владельца файла повторно поделиться им с вами.",
"Default encryption module" : "Модуль шифрования по умолчанию",
"Default encryption module for server-side encryption" : "Используемый по умолчанию модуль для шифрования данных на сервере",
+ "In order to use this encryption module you need to enable server-side encryption in the admin settings. Once enabled this module will encrypt all your files transparently. The encryption is based on AES 256 keys.\nThe module will not touch existing files, only new files will be encrypted after server-side encryption was enabled. It is also not possible to disable the encryption again and switch back to an unencrypted system.\nPlease read the documentation to know all implications before you decide to enable server-side encryption." : "Чтобы использовать этот модуль шифрования, вам необходимо включить шифрование на стороне сервера в настройках администратора. После включения этот модуль будет прозрачно шифровать все ваши файлы. Шифрование основано на ключах AES 256.\nМодуль не будет касаться существующих файлов, только новые файлы будут зашифрованы после включения шифрования на стороне сервера. Также невозможно снова отключить шифрование и переключиться обратно на незашифрованную систему.\nПожалуйста, ознакомьтесь с документацией, чтобы узнать обо всех последствиях, прежде чем вы решите включить шифрование на стороне сервера.",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново",
"Encrypt the home storage" : "Шифровать домашнюю директорию",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "При включении данного параметра будут зашифрованы все файлы, хранящиеся в основном хранилище. В противном случае шифруются только файлы на внешних хранилищах.",
diff --git a/apps/encryption/lib/Command/DropLegacyFileKey.php b/apps/encryption/lib/Command/DropLegacyFileKey.php
new file mode 100644
index 00000000000..f0a5f36f30f
--- /dev/null
+++ b/apps/encryption/lib/Command/DropLegacyFileKey.php
@@ -0,0 +1,167 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023, Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Encryption\Command;
+
+use OC\Encryption\Exceptions\DecryptionFailedException;
+use OC\Files\FileInfo;
+use OC\Files\View;
+use OCA\Encryption\KeyManager;
+use OCP\Encryption\Exceptions\GenericEncryptionException;
+use OCP\IUserManager;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class DropLegacyFileKey extends Command {
+ private View $rootView;
+
+ public function __construct(
+ private IUserManager $userManager,
+ private KeyManager $keyManager,
+ ) {
+ parent::__construct();
+
+ $this->rootView = new View();
+ }
+
+ protected function configure(): void {
+ $this
+ ->setName('encryption:drop-legacy-filekey')
+ ->setDescription('Scan the files for the legacy filekey format using RC4 and get rid of it (if master key is enabled)');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int {
+ $result = true;
+
+ $output->writeln('<info>Scanning all files for legacy filekey</info>');
+
+ foreach ($this->userManager->getBackends() as $backend) {
+ $limit = 500;
+ $offset = 0;
+ do {
+ $users = $backend->getUsers('', $limit, $offset);
+ foreach ($users as $user) {
+ $output->writeln('Scanning all files for ' . $user);
+ $this->setupUserFS($user);
+ $result = $result && $this->scanFolder($output, '/' . $user);
+ }
+ $offset += $limit;
+ } while (count($users) >= $limit);
+ }
+
+ if ($result) {
+ $output->writeln('All scanned files are properly encrypted.');
+ return 0;
+ }
+
+ return 1;
+ }
+
+ private function scanFolder(OutputInterface $output, string $folder): bool {
+ $clean = true;
+
+ foreach ($this->rootView->getDirectoryContent($folder) as $item) {
+ $path = $folder . '/' . $item['name'];
+ if ($this->rootView->is_dir($path)) {
+ if ($this->scanFolder($output, $path) === false) {
+ $clean = false;
+ }
+ } else {
+ if (!$item->isEncrypted()) {
+ // ignore
+ continue;
+ }
+
+ $stats = $this->rootView->stat($path);
+ if (!isset($stats['hasHeader']) || $stats['hasHeader'] === false) {
+ $clean = false;
+ $output->writeln('<error>' . $path . ' does not have a proper header</error>');
+ } else {
+ try {
+ $legacyFileKey = $this->keyManager->getFileKey($path, null, true);
+ if ($legacyFileKey === '') {
+ $output->writeln('Got an empty legacy filekey for ' . $path . ', continuing', OutputInterface::VERBOSITY_VERBOSE);
+ continue;
+ }
+ } catch (GenericEncryptionException $e) {
+ $output->writeln('Got a decryption error for legacy filekey for ' . $path . ', continuing', OutputInterface::VERBOSITY_VERBOSE);
+ continue;
+ }
+ /* If that did not throw and filekey is not empty, a legacy filekey is used */
+ $clean = false;
+ $output->writeln($path . ' is using a legacy filekey, migrating');
+ $this->migrateSinglefile($path, $item, $output);
+ }
+ }
+ }
+
+ return $clean;
+ }
+
+ private function migrateSinglefile(string $path, FileInfo $fileInfo, OutputInterface $output): void {
+ $source = $path;
+ $target = $path . '.reencrypted.' . time();
+
+ try {
+ $this->rootView->copy($source, $target);
+ $copyResource = $this->rootView->fopen($target, 'r');
+ $sourceResource = $this->rootView->fopen($source, 'w');
+ if ($copyResource === false || $sourceResource === false) {
+ throw new DecryptionFailedException('Failed to open '.$source.' or '.$target);
+ }
+ if (stream_copy_to_stream($copyResource, $sourceResource) === false) {
+ $output->writeln('<error>Failed to copy '.$target.' data into '.$source.'</error>');
+ $output->writeln('<error>Leaving both files in there to avoid data loss</error>');
+ return;
+ }
+ $this->rootView->touch($source, $fileInfo->getMTime());
+ $this->rootView->unlink($target);
+ $output->writeln('<info>Migrated ' . $source . '</info>', OutputInterface::VERBOSITY_VERBOSE);
+ } catch (DecryptionFailedException $e) {
+ if ($this->rootView->file_exists($target)) {
+ $this->rootView->unlink($target);
+ }
+ $output->writeln('<error>Failed to migrate ' . $path . '</error>');
+ $output->writeln('<error>' . $e . '</error>', OutputInterface::VERBOSITY_VERBOSE);
+ } finally {
+ if (is_resource($copyResource)) {
+ fclose($copyResource);
+ }
+ if (is_resource($sourceResource)) {
+ fclose($sourceResource);
+ }
+ }
+ }
+
+ /**
+ * setup user file system
+ */
+ protected function setupUserFS(string $uid): void {
+ \OC_Util::tearDownFS();
+ \OC_Util::setupFS($uid);
+ }
+}
diff --git a/apps/encryption/lib/Command/ScanLegacyFormat.php b/apps/encryption/lib/Command/ScanLegacyFormat.php
index dc6d43ee5b8..85a99a17845 100644
--- a/apps/encryption/lib/Command/ScanLegacyFormat.php
+++ b/apps/encryption/lib/Command/ScanLegacyFormat.php
@@ -36,7 +36,6 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class ScanLegacyFormat extends Command {
-
/** @var Util */
protected $util;
@@ -89,7 +88,7 @@ class ScanLegacyFormat extends Command {
foreach ($users as $user) {
$output->writeln('Scanning all files for ' . $user);
$this->setupUserFS($user);
- $result &= $this->scanFolder($output, '/' . $user);
+ $result = $result && $this->scanFolder($output, '/' . $user);
}
$offset += $limit;
} while (count($users) >= $limit);
diff --git a/apps/encryption/lib/Crypto/Encryption.php b/apps/encryption/lib/Crypto/Encryption.php
index 465856fd28d..0bcaa167907 100644
--- a/apps/encryption/lib/Crypto/Encryption.php
+++ b/apps/encryption/lib/Crypto/Encryption.php
@@ -309,7 +309,12 @@ class Encryption implements IEncryptionModule {
$publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->getOwner($path));
$shareKeys = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
- $this->keyManager->deleteLegacyFileKey($this->path);
+ if (!$this->keyManager->deleteLegacyFileKey($this->path)) {
+ $this->logger->warning(
+ 'Failed to delete legacy filekey for {path}',
+ ['app' => 'encryption', 'path' => $path]
+ );
+ }
foreach ($shareKeys as $uid => $keyFile) {
$this->keyManager->setShareKey($this->path, $uid, $keyFile);
}
diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml
index 985a26f6611..5d9e630704d 100644
--- a/apps/files/appinfo/info.xml
+++ b/apps/files/appinfo/info.xml
@@ -35,6 +35,9 @@
<command>OCA\Files\Command\TransferOwnership</command>
<command>OCA\Files\Command\ScanAppData</command>
<command>OCA\Files\Command\RepairTree</command>
+ <command>OCA\Files\Command\Get</command>
+ <command>OCA\Files\Command\Put</command>
+ <command>OCA\Files\Command\Delete</command>
</commands>
<activity>
diff --git a/apps/files/composer/composer/autoload_classmap.php b/apps/files/composer/composer/autoload_classmap.php
index 868014ecfe7..2f99d4a88de 100644
--- a/apps/files/composer/composer/autoload_classmap.php
+++ b/apps/files/composer/composer/autoload_classmap.php
@@ -27,7 +27,10 @@ return array(
'OCA\\Files\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
'OCA\\Files\\Collaboration\\Resources\\Listener' => $baseDir . '/../lib/Collaboration/Resources/Listener.php',
'OCA\\Files\\Collaboration\\Resources\\ResourceProvider' => $baseDir . '/../lib/Collaboration/Resources/ResourceProvider.php',
+ 'OCA\\Files\\Command\\Delete' => $baseDir . '/../lib/Command/Delete.php',
'OCA\\Files\\Command\\DeleteOrphanedFiles' => $baseDir . '/../lib/Command/DeleteOrphanedFiles.php',
+ 'OCA\\Files\\Command\\Get' => $baseDir . '/../lib/Command/Get.php',
+ 'OCA\\Files\\Command\\Put' => $baseDir . '/../lib/Command/Put.php',
'OCA\\Files\\Command\\RepairTree' => $baseDir . '/../lib/Command/RepairTree.php',
'OCA\\Files\\Command\\Scan' => $baseDir . '/../lib/Command/Scan.php',
'OCA\\Files\\Command\\ScanAppData' => $baseDir . '/../lib/Command/ScanAppData.php',
diff --git a/apps/files/composer/composer/autoload_static.php b/apps/files/composer/composer/autoload_static.php
index 0946a5c39c2..e7b822e386d 100644
--- a/apps/files/composer/composer/autoload_static.php
+++ b/apps/files/composer/composer/autoload_static.php
@@ -42,7 +42,10 @@ class ComposerStaticInitFiles
'OCA\\Files\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
'OCA\\Files\\Collaboration\\Resources\\Listener' => __DIR__ . '/..' . '/../lib/Collaboration/Resources/Listener.php',
'OCA\\Files\\Collaboration\\Resources\\ResourceProvider' => __DIR__ . '/..' . '/../lib/Collaboration/Resources/ResourceProvider.php',
+ 'OCA\\Files\\Command\\Delete' => __DIR__ . '/..' . '/../lib/Command/Delete.php',
'OCA\\Files\\Command\\DeleteOrphanedFiles' => __DIR__ . '/..' . '/../lib/Command/DeleteOrphanedFiles.php',
+ 'OCA\\Files\\Command\\Get' => __DIR__ . '/..' . '/../lib/Command/Get.php',
+ 'OCA\\Files\\Command\\Put' => __DIR__ . '/..' . '/../lib/Command/Put.php',
'OCA\\Files\\Command\\RepairTree' => __DIR__ . '/..' . '/../lib/Command/RepairTree.php',
'OCA\\Files\\Command\\Scan' => __DIR__ . '/..' . '/../lib/Command/Scan.php',
'OCA\\Files\\Command\\ScanAppData' => __DIR__ . '/..' . '/../lib/Command/ScanAppData.php',
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index ee370c2ea70..566f300893a 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -1 +1 @@
-.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px)}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */
+.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */
diff --git a/apps/files/css/files.css.map b/apps/files/css/files.css.map
index 84dcb9c9921..20549fb0065 100644
--- a/apps/files/css/files.css.map
+++ b/apps/files/css/files.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,4CAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAGD,6FACC,uDAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,uDAID,gBCtEC,yCDyED,iBCzEC,yCD4ED,oBC5EC,0CD+ED,yFC/EC,wCDqFD,uBCrFC,yCDwFD,2BCxFC,2CD2FD,mBC3FC,yCD8FD,2BC9FC,4CDiGD,wBCjGC,0CDoGD,4BCpGC,4CDwGD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,4CAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,iDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,2DASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"} \ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"} \ No newline at end of file
diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss
index 67c8adff897..09c0cd97913 100644
--- a/apps/files/css/files.scss
+++ b/apps/files/css/files.scss
@@ -23,7 +23,7 @@
background-color: var(--color-background-hover);
}
.actions .button a:active {
- background-color: var(--color-primary-light);
+ background-color: var(--color-primary-element-light);
}
.actions.creatable {
@@ -114,10 +114,12 @@
// force the width to be the full width to not go bigger than the screen
// flex will grow for the mobile view if necessary
width: calc(100% - 300px);
+ // disable overflow-anchor which causes undesired behaviour on Firefox
+ overflow-anchor: none;
}
.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover {
- background-color: var(--color-primary-light) !important;
+ background-color: var(--color-primary-element-light) !important;
}
.app-files #app-content.dir-drop {
@@ -129,7 +131,7 @@
}
.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{
- background-color: var(--color-primary-light) !important;
+ background-color: var(--color-primary-element-light) !important;
}
/* icons for sidebar */
@@ -202,7 +204,7 @@ table tr.mouseOver td {
.files-filestable tbody tr.highlighted .name:focus,
.files-filestable tbody tr.selected,
.files-filestable tbody tr.searchresult {
- background-color: var(--color-primary-light);
+ background-color: var(--color-primary-element-light);
}
tbody a { color: var(--color-main-text); }
@@ -551,7 +553,7 @@ table td.selection {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);
outline: none !important;
- border: 2px solid var(--color-primary) !important;
+ border: 2px solid var(--color-primary-element) !important;
padding: 14px;
}
}
@@ -1303,7 +1305,7 @@ table.dragshadow td.size {
&:focus-visible,
#showgridview:focus-visible + & {
- box-shadow: inset 0 0 0 2px var(--color-primary) !important;
+ box-shadow: inset 0 0 0 2px var(--color-primary-element) !important;
}
}
diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css
index 75615a7c34d..06568800042 100644
--- a/apps/files/css/merged.css
+++ b/apps/files/css/merged.css
@@ -1 +1 @@
-.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px)}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */
+.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */
diff --git a/apps/files/css/merged.css.map b/apps/files/css/merged.css.map
index 5b260ebdcd4..578030adef8 100644
--- a/apps/files/css/merged.css.map
+++ b/apps/files/css/merged.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,4CAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAGD,6FACC,uDAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,uDAID,gBCtEC,yCDyED,iBCzEC,yCD4ED,oBC5EC,0CD+ED,yFC/EC,wCDqFD,uBCrFC,yCDwFD,2BCxFC,2CD2FD,mBC3FC,yCD8FD,2BC9FC,4CDiGD,wBCjGC,0CDoGD,4BCpGC,4CDwGD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,4CAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,iDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,2DASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cEn1CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,sCAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,gCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"} \ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cEr1CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"} \ No newline at end of file
diff --git a/apps/files/css/upload.css b/apps/files/css/upload.css
index ad443ad788c..458f6b33b34 100644
--- a/apps/files/css/upload.css
+++ b/apps/files/css/upload.css
@@ -1 +1 @@
-#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}/*# sourceMappingURL=upload.css.map */
+#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}/*# sourceMappingURL=upload.css.map */
diff --git a/apps/files/css/upload.css.map b/apps/files/css/upload.css.map
index ca3c7a1e2fe..59585e0f790 100644
--- a/apps/files/css/upload.css.map
+++ b/apps/files/css/upload.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["upload.scss"],"names":[],"mappings":"AAAA,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,sCAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,gCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA","file":"upload.css"} \ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["upload.scss"],"names":[],"mappings":"AAAA,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA","file":"upload.css"} \ No newline at end of file
diff --git a/apps/files/css/upload.scss b/apps/files/css/upload.scss
index 88207e0a844..a8f02e9122c 100644
--- a/apps/files/css/upload.scss
+++ b/apps/files/css/upload.scss
@@ -58,7 +58,7 @@
left: -1px;
position: absolute;
overflow: hidden;
- background-color: var(--color-primary);
+ background-color: var(--color-primary-element);
}
#uploadprogressbar .label {
top: 8px;
@@ -68,7 +68,7 @@
font-weight: normal;
}
#uploadprogressbar .label.inner {
- color: var(--color-primary-text);
+ color: var(--color-primary-element-text);
position: absolute;
display: block;
width: 200px;
diff --git a/apps/files/l10n/af.js b/apps/files/l10n/af.js
index bea9874a04d..408bfc05b79 100644
--- a/apps/files/l10n/af.js
+++ b/apps/files/l10n/af.js
@@ -115,7 +115,6 @@ OC.L10N.register(
"Go back" : "Gaan terug",
"Show hidden files" : "Vertoon verborge lêers ",
"WebDAV" : "WebDAV",
- "Cancel" : "Kanselleer",
"Create" : "Skep",
"Delete permanently" : "Skrap permanent",
"Upload some content or sync with your devices!" : "Laai 'n paar lêers op of sinchroniseer met u toestelle",
@@ -134,6 +133,7 @@ OC.L10N.register(
"New" : "Nuwe",
"Copied!" : "Gekopieer!",
"Unlimited" : "Onbeperkte",
+ "Cancel" : "Kanselleer",
"%s used" : "%s gebruik",
"%1$s of %2$s used" : "%1$s van %2$s gebruik",
"Settings" : "Instellings",
diff --git a/apps/files/l10n/af.json b/apps/files/l10n/af.json
index 569e8fd084e..ce41497907d 100644
--- a/apps/files/l10n/af.json
+++ b/apps/files/l10n/af.json
@@ -113,7 +113,6 @@
"Go back" : "Gaan terug",
"Show hidden files" : "Vertoon verborge lêers ",
"WebDAV" : "WebDAV",
- "Cancel" : "Kanselleer",
"Create" : "Skep",
"Delete permanently" : "Skrap permanent",
"Upload some content or sync with your devices!" : "Laai 'n paar lêers op of sinchroniseer met u toestelle",
@@ -132,6 +131,7 @@
"New" : "Nuwe",
"Copied!" : "Gekopieer!",
"Unlimited" : "Onbeperkte",
+ "Cancel" : "Kanselleer",
"%s used" : "%s gebruik",
"%1$s of %2$s used" : "%1$s van %2$s gebruik",
"Settings" : "Instellings",
diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js
index d2d5a622100..78721d301c1 100644
--- a/apps/files/l10n/ar.js
+++ b/apps/files/l10n/ar.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "لم نستطع تغير الحالة المفضلة للملف",
"Error while loading the file data" : "خطأ اثناء تحميل بيانات الملف",
"Pick a template for {name}" : "اختر قالبا لـ {name}",
- "Cancel" : "الغاء",
"Create" : "إنشاء",
"Create a new file with the selected template" : "إنشاء ملف جديد بإستخدام القالب المحدد",
"Creating file" : "إنشاء ملف",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "غير محدود",
"Search users" : "ابحث عن مستخدمين",
"Cannot transfer ownership of a file or folder you don't own" : "لا يمكنك تحويل ملكية ملف أو مجلد ليس ملكك",
+ "Cancel" : "الغاء",
"%s used" : "%s مُستخدَم",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "تم استخدام %1$s من %2$s",
diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json
index 4322a55c7fb..96d31aa6030 100644
--- a/apps/files/l10n/ar.json
+++ b/apps/files/l10n/ar.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "لم نستطع تغير الحالة المفضلة للملف",
"Error while loading the file data" : "خطأ اثناء تحميل بيانات الملف",
"Pick a template for {name}" : "اختر قالبا لـ {name}",
- "Cancel" : "الغاء",
"Create" : "إنشاء",
"Create a new file with the selected template" : "إنشاء ملف جديد بإستخدام القالب المحدد",
"Creating file" : "إنشاء ملف",
@@ -256,6 +255,7 @@
"Unlimited" : "غير محدود",
"Search users" : "ابحث عن مستخدمين",
"Cannot transfer ownership of a file or folder you don't own" : "لا يمكنك تحويل ملكية ملف أو مجلد ليس ملكك",
+ "Cancel" : "الغاء",
"%s used" : "%s مُستخدَم",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "تم استخدام %1$s من %2$s",
diff --git a/apps/files/l10n/bg.js b/apps/files/l10n/bg.js
index ea06b4fcf53..e68f20d72d0 100644
--- a/apps/files/l10n/bg.js
+++ b/apps/files/l10n/bg.js
@@ -221,7 +221,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Не може да се промени състоянието за предпочитане на файла",
"Error while loading the file data" : "Грешка при зареждането на файловете.",
"Pick a template for {name}" : "Избор на шаблон за {name}",
- "Cancel" : "Отказ",
"Create" : "Създаване",
"Create a new file with the selected template" : "Създаване на нов файл с избрания шаблон",
"Creating file" : "Създаване на файл ",
@@ -256,6 +255,7 @@ OC.L10N.register(
"Unlimited" : "Неограничено",
"Search users" : "Търсене за потребители",
"Cannot transfer ownership of a file or folder you don't own" : "Не можете да прехвърляте собственост върху файл или папка, които не притежавате",
+ "Cancel" : "Отказ",
"%s used" : "%s използвани",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s от %2$s използвани",
diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json
index 73d30fa430c..35b1c91d449 100644
--- a/apps/files/l10n/bg.json
+++ b/apps/files/l10n/bg.json
@@ -219,7 +219,6 @@
"Unable to change the favourite state of the file" : "Не може да се промени състоянието за предпочитане на файла",
"Error while loading the file data" : "Грешка при зареждането на файловете.",
"Pick a template for {name}" : "Избор на шаблон за {name}",
- "Cancel" : "Отказ",
"Create" : "Създаване",
"Create a new file with the selected template" : "Създаване на нов файл с избрания шаблон",
"Creating file" : "Създаване на файл ",
@@ -254,6 +253,7 @@
"Unlimited" : "Неограничено",
"Search users" : "Търсене за потребители",
"Cannot transfer ownership of a file or folder you don't own" : "Не можете да прехвърляте собственост върху файл или папка, които не притежавате",
+ "Cancel" : "Отказ",
"%s used" : "%s използвани",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s от %2$s използвани",
diff --git a/apps/files/l10n/br.js b/apps/files/l10n/br.js
index a6b35dd7e56..7116a5101ce 100644
--- a/apps/files/l10n/br.js
+++ b/apps/files/l10n/br.js
@@ -158,7 +158,6 @@ OC.L10N.register(
"Use this address to access your Files via WebDAV" : "Implijit ar chomlec'h-mañ evit tizhout ho restroù dre WebDAV",
"Unable to change the favourite state of the file" : "Dibosupl eo cheñch stad pennroll ar restr",
"Error while loading the file data" : "Ur fazi zo bet en ur gargañ roadennoùar restr",
- "Cancel" : "Arrest",
"Create" : "Krouiñ",
"Delete permanently" : "Lamet da viken",
"Toggle grid view" : "Gweredekat/Diweredekat an diskwel roued",
@@ -184,6 +183,7 @@ OC.L10N.register(
"Unlimited" : "Didermenet",
"Search users" : "Klask implijourien",
"Cannot transfer ownership of a file or folder you don't own" : "N'hallit ket treuzkas perc'henniezh ur restr pe un teuliad ma n'oc'h ket e berc'henn",
+ "Cancel" : "Arrest",
"%s used" : "%s implijet",
"%1$s of %2$s used" : "%1$s diwar%2$s implijet",
"Settings" : "Arventennoù",
diff --git a/apps/files/l10n/br.json b/apps/files/l10n/br.json
index 9e743e39fa9..5c1bfba14f1 100644
--- a/apps/files/l10n/br.json
+++ b/apps/files/l10n/br.json
@@ -156,7 +156,6 @@
"Use this address to access your Files via WebDAV" : "Implijit ar chomlec'h-mañ evit tizhout ho restroù dre WebDAV",
"Unable to change the favourite state of the file" : "Dibosupl eo cheñch stad pennroll ar restr",
"Error while loading the file data" : "Ur fazi zo bet en ur gargañ roadennoùar restr",
- "Cancel" : "Arrest",
"Create" : "Krouiñ",
"Delete permanently" : "Lamet da viken",
"Toggle grid view" : "Gweredekat/Diweredekat an diskwel roued",
@@ -182,6 +181,7 @@
"Unlimited" : "Didermenet",
"Search users" : "Klask implijourien",
"Cannot transfer ownership of a file or folder you don't own" : "N'hallit ket treuzkas perc'henniezh ur restr pe un teuliad ma n'oc'h ket e berc'henn",
+ "Cancel" : "Arrest",
"%s used" : "%s implijet",
"%1$s of %2$s used" : "%1$s diwar%2$s implijet",
"Settings" : "Arventennoù",
diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js
index 08a078fd0be..ce8e4926087 100644
--- a/apps/files/l10n/ca.js
+++ b/apps/files/l10n/ca.js
@@ -202,7 +202,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "No s'ha pogut canviar l'estat de preferit del fitxer",
"Error while loading the file data" : "S'ha produït un error en carregar la informació del fitxer",
"Pick a template for {name}" : "Trieu una plantilla per a {name}",
- "Cancel" : "Cancel·la",
"Create" : "Crea",
"Create a new file with the selected template" : "Crea un fitxer amb la plantilla seleccionada",
"Creating file" : "S'està creant el fitxer",
@@ -236,6 +235,7 @@ OC.L10N.register(
"Unlimited" : "Il·limitat",
"Search users" : "Cerqueu usuaris",
"Cannot transfer ownership of a file or folder you don't own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre",
+ "Cancel" : "Cancel·la",
"%s used" : "%s en ús",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s de %2$s en ús",
diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json
index 88590789e83..124de1e6462 100644
--- a/apps/files/l10n/ca.json
+++ b/apps/files/l10n/ca.json
@@ -200,7 +200,6 @@
"Unable to change the favourite state of the file" : "No s'ha pogut canviar l'estat de preferit del fitxer",
"Error while loading the file data" : "S'ha produït un error en carregar la informació del fitxer",
"Pick a template for {name}" : "Trieu una plantilla per a {name}",
- "Cancel" : "Cancel·la",
"Create" : "Crea",
"Create a new file with the selected template" : "Crea un fitxer amb la plantilla seleccionada",
"Creating file" : "S'està creant el fitxer",
@@ -234,6 +233,7 @@
"Unlimited" : "Il·limitat",
"Search users" : "Cerqueu usuaris",
"Cannot transfer ownership of a file or folder you don't own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre",
+ "Cancel" : "Cancel·la",
"%s used" : "%s en ús",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s de %2$s en ús",
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index c2212d48ccc..4b50148a95b 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -220,7 +220,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Nedaří se změnit stav „oblíbené“ souboru",
"Error while loading the file data" : "Chyba při načítání dat souboru",
"Pick a template for {name}" : "Vyberte si šablonu pro {name}",
- "Cancel" : "Storno",
"Create" : "Vytvořit",
"Create a new file with the selected template" : "Vytvořit nový soubor ze zvolené šablony",
"Creating file" : "Vytváření souboru",
@@ -254,6 +253,7 @@ OC.L10N.register(
"Unlimited" : "Neomezeně",
"Search users" : "Hledat uživatele",
"Cannot transfer ownership of a file or folder you don't own" : "Není možné převést vlastnictví souboru či složky, které nejste vlastníky",
+ "Cancel" : "Storno",
"%s used" : "%s použito",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s z %2$s použito",
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index 19e5556ba01..fb8c994d4f0 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -218,7 +218,6 @@
"Unable to change the favourite state of the file" : "Nedaří se změnit stav „oblíbené“ souboru",
"Error while loading the file data" : "Chyba při načítání dat souboru",
"Pick a template for {name}" : "Vyberte si šablonu pro {name}",
- "Cancel" : "Storno",
"Create" : "Vytvořit",
"Create a new file with the selected template" : "Vytvořit nový soubor ze zvolené šablony",
"Creating file" : "Vytváření souboru",
@@ -252,6 +251,7 @@
"Unlimited" : "Neomezeně",
"Search users" : "Hledat uživatele",
"Cannot transfer ownership of a file or folder you don't own" : "Není možné převést vlastnictví souboru či složky, které nejste vlastníky",
+ "Cancel" : "Storno",
"%s used" : "%s použito",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s z %2$s použito",
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index 15f3b0ee4c5..c9e85ed0ac9 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Kan ikke ændre favorittilstanden for filen",
"Error while loading the file data" : "Fejl under indlæsning af fildata",
"Pick a template for {name}" : "Vælg en skabelon til {name}",
- "Cancel" : "annuller",
"Create" : "Opret",
"Create a new file with the selected template" : "Opret en ny fil med den valgte skabelon",
"Creating file" : "Opretter fil",
@@ -235,6 +234,7 @@ OC.L10N.register(
"Unlimited" : "Ubegrænset",
"Search users" : "Søg efter brugere",
"Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer",
+ "Cancel" : "annuller",
"%s used" : "%s brugt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s af %2$s brugt",
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index a8b7516aee4..868d0ae5439 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -199,7 +199,6 @@
"Unable to change the favourite state of the file" : "Kan ikke ændre favorittilstanden for filen",
"Error while loading the file data" : "Fejl under indlæsning af fildata",
"Pick a template for {name}" : "Vælg en skabelon til {name}",
- "Cancel" : "annuller",
"Create" : "Opret",
"Create a new file with the selected template" : "Opret en ny fil med den valgte skabelon",
"Creating file" : "Opretter fil",
@@ -233,6 +232,7 @@
"Unlimited" : "Ubegrænset",
"Search users" : "Søg efter brugere",
"Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer",
+ "Cancel" : "annuller",
"%s used" : "%s brugt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s af %2$s brugt",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 8585075c9ce..ac39d139c47 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -221,7 +221,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Der favorisierte Status der Datei konnte nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Pick a template for {name}" : "Eine Vorlage für {name} wählen",
- "Cancel" : "Abbrechen",
"Create" : "Erstellen",
"Create a new file with the selected template" : "Eine neue Datei anhand der ausgewählten Vorlage erstellen",
"Creating file" : "Datei erstellen",
@@ -255,6 +254,7 @@ OC.L10N.register(
"Unlimited" : "Unbegrenzt",
"Search users" : "Suche Benutzer",
"Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den du nicht besitzt, kann nicht übertragen werden",
+ "Cancel" : "Abbrechen",
"%s used" : "%s verwendet",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s von %2$s verwendet",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index f578d3b919a..e3bd85ad213 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -219,7 +219,6 @@
"Unable to change the favourite state of the file" : "Der favorisierte Status der Datei konnte nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Pick a template for {name}" : "Eine Vorlage für {name} wählen",
- "Cancel" : "Abbrechen",
"Create" : "Erstellen",
"Create a new file with the selected template" : "Eine neue Datei anhand der ausgewählten Vorlage erstellen",
"Creating file" : "Datei erstellen",
@@ -253,6 +252,7 @@
"Unlimited" : "Unbegrenzt",
"Search users" : "Suche Benutzer",
"Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den du nicht besitzt, kann nicht übertragen werden",
+ "Cancel" : "Abbrechen",
"%s used" : "%s verwendet",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s von %2$s verwendet",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index 534ac778b20..8ddc3b971cf 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Der favorisierte Status der Datei kann nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Pick a template for {name}" : "Eine Vorlage für {name} wählen",
- "Cancel" : "Abbrechen",
"Create" : "Erstellen",
"Create a new file with the selected template" : "Eine neue Datei anhand der ausgewählten Vorlage erstellen",
"Creating file" : "Datei erstellen",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Unbegrenzt",
"Search users" : "Suche Benutzer",
"Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den Sie nicht besitzen, kann nicht übertragen werden",
+ "Cancel" : "Abbrechen",
"%s used" : "%s verwendet",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s von %2$s verwendet",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 921bd64b7ca..d257fa7fddc 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "Der favorisierte Status der Datei kann nicht geändert werden",
"Error while loading the file data" : "Fehler beim Laden der Datei-Daten",
"Pick a template for {name}" : "Eine Vorlage für {name} wählen",
- "Cancel" : "Abbrechen",
"Create" : "Erstellen",
"Create a new file with the selected template" : "Eine neue Datei anhand der ausgewählten Vorlage erstellen",
"Creating file" : "Datei erstellen",
@@ -256,6 +255,7 @@
"Unlimited" : "Unbegrenzt",
"Search users" : "Suche Benutzer",
"Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den Sie nicht besitzen, kann nicht übertragen werden",
+ "Cancel" : "Abbrechen",
"%s used" : "%s verwendet",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s von %2$s verwendet",
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index 54ca0d31035..ce96bfb1b20 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -109,6 +109,8 @@ OC.L10N.register(
"Create new folder" : "Δημιουργία νέου φακέλου",
"Upload file" : "Μεταφόρτωση αρχείου",
"Recent" : "Πρόσφατα",
+ "This file has the tag {tag}" : "Αυτό το αρχείο έχει την ετικέτα {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "Αυτό το αρχείο έχει τις ετικέτες {firstTags} και {lastTag}",
"Not favorited" : "Δεν είναι αγαπημένο",
"Remove from favorites" : "Αφαίρεση από τα αγαπημένα",
"Add to favorites" : "Προσθήκη στα αγαπημένα",
@@ -208,7 +210,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Αδυναμία αλλαγής αγαπημένης κατάστασης αρχείου",
"Error while loading the file data" : "Σφάλμα κατά την φόρτωση αρχείου δεδομένων",
"Pick a template for {name}" : "Επιλέξτε ένα πρότυπο για {name}",
- "Cancel" : "Ακύρωση",
"Create" : "Δημιουργία",
"Create a new file with the selected template" : "Δημιουργήστε ένα νέο αρχείο με το επιλεγμένο πρότυπο",
"Creating file" : "Δημιουργία αρχείου",
@@ -242,6 +243,7 @@ OC.L10N.register(
"Unlimited" : "Απεριόριστο",
"Search users" : "Αναζήτηση χρηστών",
"Cannot transfer ownership of a file or folder you don't own" : "Δεν μπορεί να μεταβιβαστεί η κυριότητα αρχείου ή φακέλου που δεν σας ανήκει",
+ "Cancel" : "Ακύρωση",
"%s used" : "%s σε χρήση",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "χρησιμοποιούνται %1$s από %2$s",
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index e19ca8bc181..7ba20b4b1ee 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -107,6 +107,8 @@
"Create new folder" : "Δημιουργία νέου φακέλου",
"Upload file" : "Μεταφόρτωση αρχείου",
"Recent" : "Πρόσφατα",
+ "This file has the tag {tag}" : "Αυτό το αρχείο έχει την ετικέτα {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "Αυτό το αρχείο έχει τις ετικέτες {firstTags} και {lastTag}",
"Not favorited" : "Δεν είναι αγαπημένο",
"Remove from favorites" : "Αφαίρεση από τα αγαπημένα",
"Add to favorites" : "Προσθήκη στα αγαπημένα",
@@ -206,7 +208,6 @@
"Unable to change the favourite state of the file" : "Αδυναμία αλλαγής αγαπημένης κατάστασης αρχείου",
"Error while loading the file data" : "Σφάλμα κατά την φόρτωση αρχείου δεδομένων",
"Pick a template for {name}" : "Επιλέξτε ένα πρότυπο για {name}",
- "Cancel" : "Ακύρωση",
"Create" : "Δημιουργία",
"Create a new file with the selected template" : "Δημιουργήστε ένα νέο αρχείο με το επιλεγμένο πρότυπο",
"Creating file" : "Δημιουργία αρχείου",
@@ -240,6 +241,7 @@
"Unlimited" : "Απεριόριστο",
"Search users" : "Αναζήτηση χρηστών",
"Cannot transfer ownership of a file or folder you don't own" : "Δεν μπορεί να μεταβιβαστεί η κυριότητα αρχείου ή φακέλου που δεν σας ανήκει",
+ "Cancel" : "Ακύρωση",
"%s used" : "%s σε χρήση",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "χρησιμοποιούνται %1$s από %2$s",
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index e0708ccdd23..c8b5a979b76 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Unable to change the favourite state of the file",
"Error while loading the file data" : "Error while loading the file data",
"Pick a template for {name}" : "Pick a template for {name}",
- "Cancel" : "Cancel",
"Create" : "Create",
"Create a new file with the selected template" : "Create a new file with the selected template",
"Creating file" : "Creating file",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Unlimited",
"Search users" : "Search users",
"Cannot transfer ownership of a file or folder you don't own" : "Cannot transfer ownership of a file or folder you don't own",
+ "Cancel" : "Cancel",
"%s used" : "%s used",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s of %2$s used",
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index ea827a9f8a1..4878400eeb3 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "Unable to change the favourite state of the file",
"Error while loading the file data" : "Error while loading the file data",
"Pick a template for {name}" : "Pick a template for {name}",
- "Cancel" : "Cancel",
"Create" : "Create",
"Create a new file with the selected template" : "Create a new file with the selected template",
"Creating file" : "Creating file",
@@ -256,6 +255,7 @@
"Unlimited" : "Unlimited",
"Search users" : "Search users",
"Cannot transfer ownership of a file or folder you don't own" : "Cannot transfer ownership of a file or folder you don't own",
+ "Cancel" : "Cancel",
"%s used" : "%s used",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s of %2$s used",
diff --git a/apps/files/l10n/eo.js b/apps/files/l10n/eo.js
index 2aa6a901ed4..4554a5e3d84 100644
--- a/apps/files/l10n/eo.js
+++ b/apps/files/l10n/eo.js
@@ -141,7 +141,6 @@ OC.L10N.register(
"Copy to clipboard" : "Kopii tondejen",
"Unable to change the favourite state of the file" : "Ne eblas ŝanĝi la staton pri pliŝatataĵo de la dosiero",
"Error while loading the file data" : "Eraro dum ŝargo de la dosierdatumoj",
- "Cancel" : "Nuligi",
"Create" : "Krei",
"Creating file" : "Kreante dosieron",
"Delete permanently" : "Forigi por ĉiam",
@@ -167,6 +166,7 @@ OC.L10N.register(
"Copied!" : "Kopiita!",
"Unlimited" : "Senlima",
"Search users" : "Serĉi uzantojn",
+ "Cancel" : "Nuligi",
"%s used" : "%s uzataj",
"%1$s of %2$s used" : "%1$s uzataj el %2$s",
"Settings" : "Agordo",
diff --git a/apps/files/l10n/eo.json b/apps/files/l10n/eo.json
index 81d0d3f9ace..d5c4652f9c7 100644
--- a/apps/files/l10n/eo.json
+++ b/apps/files/l10n/eo.json
@@ -139,7 +139,6 @@
"Copy to clipboard" : "Kopii tondejen",
"Unable to change the favourite state of the file" : "Ne eblas ŝanĝi la staton pri pliŝatataĵo de la dosiero",
"Error while loading the file data" : "Eraro dum ŝargo de la dosierdatumoj",
- "Cancel" : "Nuligi",
"Create" : "Krei",
"Creating file" : "Kreante dosieron",
"Delete permanently" : "Forigi por ĉiam",
@@ -165,6 +164,7 @@
"Copied!" : "Kopiita!",
"Unlimited" : "Senlima",
"Search users" : "Serĉi uzantojn",
+ "Cancel" : "Nuligi",
"%s used" : "%s uzataj",
"%1$s of %2$s used" : "%1$s uzataj el %2$s",
"Settings" : "Agordo",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 5893b81ab5d..af4b2a6b0a4 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "No se ha podido cambiar el estado de favorito del fichero",
"Error while loading the file data" : "Error al cargar los datos del archivo",
"Pick a template for {name}" : "Elija una plantilla para {name}",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Create a new file with the selected template" : "Crear un nuevo archivo con la plantilla seleccionada",
"Creating file" : "Creando el archivo",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Ilimitado",
"Search users" : "Buscar usuarios",
"Cannot transfer ownership of a file or folder you don't own" : "No se puede transferir la propiedad de un archivo o carpeta que no te pertenece",
+ "Cancel" : "Cancelar",
"%s used" : "usado %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s de %2$s usados",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index 58c2d1a304e..ea5a76ac389 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "No se ha podido cambiar el estado de favorito del fichero",
"Error while loading the file data" : "Error al cargar los datos del archivo",
"Pick a template for {name}" : "Elija una plantilla para {name}",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Create a new file with the selected template" : "Crear un nuevo archivo con la plantilla seleccionada",
"Creating file" : "Creando el archivo",
@@ -256,6 +255,7 @@
"Unlimited" : "Ilimitado",
"Search users" : "Buscar usuarios",
"Cannot transfer ownership of a file or folder you don't own" : "No se puede transferir la propiedad de un archivo o carpeta que no te pertenece",
+ "Cancel" : "Cancelar",
"%s used" : "usado %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s de %2$s usados",
diff --git a/apps/files/l10n/es_419.js b/apps/files/l10n/es_419.js
index 3a0784faeb5..76521b9525a 100644
--- a/apps/files/l10n/es_419.js
+++ b/apps/files/l10n/es_419.js
@@ -113,7 +113,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -134,6 +133,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_419.json b/apps/files/l10n/es_419.json
index 70318c494c8..f8803d27edd 100644
--- a/apps/files/l10n/es_419.json
+++ b/apps/files/l10n/es_419.json
@@ -111,7 +111,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -132,6 +131,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_AR.js b/apps/files/l10n/es_AR.js
index 86794ed31bd..8bbd7bdabb1 100644
--- a/apps/files/l10n/es_AR.js
+++ b/apps/files/l10n/es_AR.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Toggle grid view" : "Vista de cuadrícula",
@@ -141,6 +140,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_AR.json b/apps/files/l10n/es_AR.json
index ea4c9750d26..927e150c6e8 100644
--- a/apps/files/l10n/es_AR.json
+++ b/apps/files/l10n/es_AR.json
@@ -117,7 +117,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Toggle grid view" : "Vista de cuadrícula",
@@ -139,6 +138,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_CL.js b/apps/files/l10n/es_CL.js
index db3af0280b8..642069ebc0c 100644
--- a/apps/files/l10n/es_CL.js
+++ b/apps/files/l10n/es_CL.js
@@ -124,7 +124,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -145,6 +144,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_CL.json b/apps/files/l10n/es_CL.json
index 9add85d18e8..f82a0e15be8 100644
--- a/apps/files/l10n/es_CL.json
+++ b/apps/files/l10n/es_CL.json
@@ -122,7 +122,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -143,6 +142,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_CO.js b/apps/files/l10n/es_CO.js
index bd96f0dc528..388687abb7d 100644
--- a/apps/files/l10n/es_CO.js
+++ b/apps/files/l10n/es_CO.js
@@ -124,7 +124,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -145,6 +144,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_CO.json b/apps/files/l10n/es_CO.json
index cdd0dac75a3..cc2cc974c24 100644
--- a/apps/files/l10n/es_CO.json
+++ b/apps/files/l10n/es_CO.json
@@ -122,7 +122,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -143,6 +142,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_CR.js b/apps/files/l10n/es_CR.js
index 6fe6a750b3d..2ca781ebdbe 100644
--- a/apps/files/l10n/es_CR.js
+++ b/apps/files/l10n/es_CR.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -144,6 +143,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_CR.json b/apps/files/l10n/es_CR.json
index 9de0f243f7b..92641adb459 100644
--- a/apps/files/l10n/es_CR.json
+++ b/apps/files/l10n/es_CR.json
@@ -121,7 +121,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -142,6 +141,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_DO.js b/apps/files/l10n/es_DO.js
index 6fe6a750b3d..2ca781ebdbe 100644
--- a/apps/files/l10n/es_DO.js
+++ b/apps/files/l10n/es_DO.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -144,6 +143,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_DO.json b/apps/files/l10n/es_DO.json
index 9de0f243f7b..92641adb459 100644
--- a/apps/files/l10n/es_DO.json
+++ b/apps/files/l10n/es_DO.json
@@ -121,7 +121,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -142,6 +141,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_EC.js b/apps/files/l10n/es_EC.js
index 6fe6a750b3d..2ca781ebdbe 100644
--- a/apps/files/l10n/es_EC.js
+++ b/apps/files/l10n/es_EC.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -144,6 +143,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_EC.json b/apps/files/l10n/es_EC.json
index 9de0f243f7b..92641adb459 100644
--- a/apps/files/l10n/es_EC.json
+++ b/apps/files/l10n/es_EC.json
@@ -121,7 +121,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -142,6 +141,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_GT.js b/apps/files/l10n/es_GT.js
index 6fe6a750b3d..2ca781ebdbe 100644
--- a/apps/files/l10n/es_GT.js
+++ b/apps/files/l10n/es_GT.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -144,6 +143,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_GT.json b/apps/files/l10n/es_GT.json
index 9de0f243f7b..92641adb459 100644
--- a/apps/files/l10n/es_GT.json
+++ b/apps/files/l10n/es_GT.json
@@ -121,7 +121,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -142,6 +141,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_HN.js b/apps/files/l10n/es_HN.js
index 3a0784faeb5..76521b9525a 100644
--- a/apps/files/l10n/es_HN.js
+++ b/apps/files/l10n/es_HN.js
@@ -113,7 +113,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -134,6 +133,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_HN.json b/apps/files/l10n/es_HN.json
index 70318c494c8..f8803d27edd 100644
--- a/apps/files/l10n/es_HN.json
+++ b/apps/files/l10n/es_HN.json
@@ -111,7 +111,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -132,6 +131,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js
index ffa4fd1c1c4..ea29275c5a9 100644
--- a/apps/files/l10n/es_MX.js
+++ b/apps/files/l10n/es_MX.js
@@ -197,7 +197,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "No se ha podido cambiar el estado de favorito del fichero",
"Error while loading the file data" : "Error al cargar los datos del archivo",
"Pick a template for {name}" : "Elija una plantilla para {name}",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Create a new file with the selected template" : "Crear un nuevo archivo con la plantilla seleccionada",
"Creating file" : "Creando el archivo",
@@ -231,6 +230,7 @@ OC.L10N.register(
"Unlimited" : "Ilimitado",
"Search users" : "Buscar usuarios",
"Cannot transfer ownership of a file or folder you don't own" : "No se puede transferir la propiedad de un archivo o carpeta que no te pertenece",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s de %2$s usados",
diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json
index c7d34cc6526..d598f0659be 100644
--- a/apps/files/l10n/es_MX.json
+++ b/apps/files/l10n/es_MX.json
@@ -195,7 +195,6 @@
"Unable to change the favourite state of the file" : "No se ha podido cambiar el estado de favorito del fichero",
"Error while loading the file data" : "Error al cargar los datos del archivo",
"Pick a template for {name}" : "Elija una plantilla para {name}",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Create a new file with the selected template" : "Crear un nuevo archivo con la plantilla seleccionada",
"Creating file" : "Creando el archivo",
@@ -229,6 +228,7 @@
"Unlimited" : "Ilimitado",
"Search users" : "Buscar usuarios",
"Cannot transfer ownership of a file or folder you don't own" : "No se puede transferir la propiedad de un archivo o carpeta que no te pertenece",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s de %2$s usados",
diff --git a/apps/files/l10n/es_NI.js b/apps/files/l10n/es_NI.js
index 3a0784faeb5..76521b9525a 100644
--- a/apps/files/l10n/es_NI.js
+++ b/apps/files/l10n/es_NI.js
@@ -113,7 +113,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -134,6 +133,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_NI.json b/apps/files/l10n/es_NI.json
index 70318c494c8..f8803d27edd 100644
--- a/apps/files/l10n/es_NI.json
+++ b/apps/files/l10n/es_NI.json
@@ -111,7 +111,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -132,6 +131,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PA.js b/apps/files/l10n/es_PA.js
index 3a0784faeb5..76521b9525a 100644
--- a/apps/files/l10n/es_PA.js
+++ b/apps/files/l10n/es_PA.js
@@ -113,7 +113,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -134,6 +133,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PA.json b/apps/files/l10n/es_PA.json
index 70318c494c8..f8803d27edd 100644
--- a/apps/files/l10n/es_PA.json
+++ b/apps/files/l10n/es_PA.json
@@ -111,7 +111,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -132,6 +131,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PE.js b/apps/files/l10n/es_PE.js
index 2122877aa0c..d5ccdc3bd83 100644
--- a/apps/files/l10n/es_PE.js
+++ b/apps/files/l10n/es_PE.js
@@ -137,7 +137,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -158,6 +157,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PE.json b/apps/files/l10n/es_PE.json
index 5f1bb1ea4dc..03c64a6267c 100644
--- a/apps/files/l10n/es_PE.json
+++ b/apps/files/l10n/es_PE.json
@@ -135,7 +135,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -156,6 +155,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PR.js b/apps/files/l10n/es_PR.js
index 3a0784faeb5..76521b9525a 100644
--- a/apps/files/l10n/es_PR.js
+++ b/apps/files/l10n/es_PR.js
@@ -113,7 +113,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -134,6 +133,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PR.json b/apps/files/l10n/es_PR.json
index 70318c494c8..f8803d27edd 100644
--- a/apps/files/l10n/es_PR.json
+++ b/apps/files/l10n/es_PR.json
@@ -111,7 +111,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -132,6 +131,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PY.js b/apps/files/l10n/es_PY.js
index 8ff7c0ac440..b32d6591028 100644
--- a/apps/files/l10n/es_PY.js
+++ b/apps/files/l10n/es_PY.js
@@ -128,7 +128,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -149,6 +148,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_PY.json b/apps/files/l10n/es_PY.json
index 7dac72662cc..3b4d428e73a 100644
--- a/apps/files/l10n/es_PY.json
+++ b/apps/files/l10n/es_PY.json
@@ -126,7 +126,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -147,6 +146,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_SV.js b/apps/files/l10n/es_SV.js
index 6fe6a750b3d..2ca781ebdbe 100644
--- a/apps/files/l10n/es_SV.js
+++ b/apps/files/l10n/es_SV.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -144,6 +143,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_SV.json b/apps/files/l10n/es_SV.json
index 9de0f243f7b..92641adb459 100644
--- a/apps/files/l10n/es_SV.json
+++ b/apps/files/l10n/es_SV.json
@@ -121,7 +121,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -142,6 +141,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_UY.js b/apps/files/l10n/es_UY.js
index 3a0784faeb5..76521b9525a 100644
--- a/apps/files/l10n/es_UY.js
+++ b/apps/files/l10n/es_UY.js
@@ -113,7 +113,6 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -134,6 +133,7 @@ OC.L10N.register(
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/es_UY.json b/apps/files/l10n/es_UY.json
index 70318c494c8..f8803d27edd 100644
--- a/apps/files/l10n/es_UY.json
+++ b/apps/files/l10n/es_UY.json
@@ -111,7 +111,6 @@
"Additional settings" : "Configuraciones adicionales",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar al portapapeles",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Delete permanently" : "Borrar permanentemente",
"Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
@@ -132,6 +131,7 @@
"New" : "Nuevo",
"Copied!" : "¡Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%1$s of %2$s used" : "%1$s de %2$s usados",
"Settings" : "Configuraciones ",
diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js
index a718b68fa24..0f3ec22e3ee 100644
--- a/apps/files/l10n/et_EE.js
+++ b/apps/files/l10n/et_EE.js
@@ -120,7 +120,6 @@ OC.L10N.register(
"Additional settings" : "Lisaseaded",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopeeri lõikepuhvrisse",
- "Cancel" : "Loobu",
"Create" : "Loo",
"Delete permanently" : "Kustuta jäädavalt",
"Templates" : "Mallid",
@@ -144,6 +143,7 @@ OC.L10N.register(
"New" : "Uus",
"Copied!" : "Kopeeritud!",
"Unlimited" : "Piiramatult",
+ "Cancel" : "Loobu",
"%s used" : "Kasutatud %s",
"%1$s of %2$s used" : "Kasutatud %1$s/%2$s",
"Settings" : "Seaded",
diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json
index 374f6778135..265adeb39e2 100644
--- a/apps/files/l10n/et_EE.json
+++ b/apps/files/l10n/et_EE.json
@@ -118,7 +118,6 @@
"Additional settings" : "Lisaseaded",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopeeri lõikepuhvrisse",
- "Cancel" : "Loobu",
"Create" : "Loo",
"Delete permanently" : "Kustuta jäädavalt",
"Templates" : "Mallid",
@@ -142,6 +141,7 @@
"New" : "Uus",
"Copied!" : "Kopeeritud!",
"Unlimited" : "Piiramatult",
+ "Cancel" : "Loobu",
"%s used" : "Kasutatud %s",
"%1$s of %2$s used" : "Kasutatud %1$s/%2$s",
"Settings" : "Seaded",
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index 69a8b9d2666..4aee05f80ce 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -221,7 +221,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Ezin da fitxategiaren gogoko egoera aldatu",
"Error while loading the file data" : "Errorea fitxategiaren datuak kargatzerakoan",
"Pick a template for {name}" : "Hautatu {name}(r)entzako txantiloia",
- "Cancel" : "Utzi",
"Create" : "Sortu",
"Create a new file with the selected template" : "Sortu fitxategi berria hautatutako txantiloiarekin",
"Creating file" : "Fitxategia sortzen",
@@ -255,6 +254,7 @@ OC.L10N.register(
"Unlimited" : "Mugarik gabe",
"Search users" : "Bilatu erabiltzaileak",
"Cannot transfer ownership of a file or folder you don't own" : "Ezin da zurea ez den fitxategi edo karpeta baten jabetza transferitu",
+ "Cancel" : "Utzi",
"%s used" : "%s erabilita",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s / %2$s erabilita",
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index 8fffcf5ebe6..874fe08ca7a 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -219,7 +219,6 @@
"Unable to change the favourite state of the file" : "Ezin da fitxategiaren gogoko egoera aldatu",
"Error while loading the file data" : "Errorea fitxategiaren datuak kargatzerakoan",
"Pick a template for {name}" : "Hautatu {name}(r)entzako txantiloia",
- "Cancel" : "Utzi",
"Create" : "Sortu",
"Create a new file with the selected template" : "Sortu fitxategi berria hautatutako txantiloiarekin",
"Creating file" : "Fitxategia sortzen",
@@ -253,6 +252,7 @@
"Unlimited" : "Mugarik gabe",
"Search users" : "Bilatu erabiltzaileak",
"Cannot transfer ownership of a file or folder you don't own" : "Ezin da zurea ez den fitxategi edo karpeta baten jabetza transferitu",
+ "Cancel" : "Utzi",
"%s used" : "%s erabilita",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s / %2$s erabilita",
diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js
index b2ae5195730..a026287c102 100644
--- a/apps/files/l10n/fa.js
+++ b/apps/files/l10n/fa.js
@@ -114,7 +114,6 @@ OC.L10N.register(
"WebDAV" : "WebDAV",
"Copy to clipboard" : "رونوشت به تخته‌گیره",
"Clipboard is not available" : "تخته گیره موحود نیست",
- "Cancel" : "لغو",
"Create" : "ساخت",
"Delete permanently" : "حذف قطعی",
"Templates" : "قالب‌ها",
@@ -139,6 +138,7 @@ OC.L10N.register(
"New" : "جدید",
"Copied!" : "کپی انجام شد!",
"Unlimited" : "نامحدود",
+ "Cancel" : "لغو",
"%1$s of %2$s used" : "%1$s از %2$s استفاده شده ",
"Settings" : "تنظیمات",
"Deleted files" : "پرونده‌های حذف شده"
diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json
index 893b45a33e0..74e4d24e660 100644
--- a/apps/files/l10n/fa.json
+++ b/apps/files/l10n/fa.json
@@ -112,7 +112,6 @@
"WebDAV" : "WebDAV",
"Copy to clipboard" : "رونوشت به تخته‌گیره",
"Clipboard is not available" : "تخته گیره موحود نیست",
- "Cancel" : "لغو",
"Create" : "ساخت",
"Delete permanently" : "حذف قطعی",
"Templates" : "قالب‌ها",
@@ -137,6 +136,7 @@
"New" : "جدید",
"Copied!" : "کپی انجام شد!",
"Unlimited" : "نامحدود",
+ "Cancel" : "لغو",
"%1$s of %2$s used" : "%1$s از %2$s استفاده شده ",
"Settings" : "تنظیمات",
"Deleted files" : "پرونده‌های حذف شده"
diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js
index 0d0ce5a2148..49e98a8e496 100644
--- a/apps/files/l10n/fi.js
+++ b/apps/files/l10n/fi.js
@@ -217,7 +217,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Suosikki-tilan muuttaminen epäonnistui.",
"Error while loading the file data" : "Virhe tiedostoa ladatessa",
"Pick a template for {name}" : "Valtise mallipohja tiedostolle {name}",
- "Cancel" : "Peruuta",
"Create" : "Luo",
"Create a new file with the selected template" : "Luo uusi tiedosto valitulla mallipohjalla",
"Creating file" : "Luodaan tiedostoa",
@@ -251,6 +250,7 @@ OC.L10N.register(
"Unlimited" : "Rajoittamaton",
"Search users" : "Etsi käyttäjistä",
"Cannot transfer ownership of a file or folder you don't own" : "Et voi siirtää sellaisen tiedoston tai kansion omistajuutta, jota et itse omista",
+ "Cancel" : "Peruuta",
"%s used" : "%s käytetty",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s/%2$s käytetty",
diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json
index 9774caa8c1c..46efe71c484 100644
--- a/apps/files/l10n/fi.json
+++ b/apps/files/l10n/fi.json
@@ -215,7 +215,6 @@
"Unable to change the favourite state of the file" : "Suosikki-tilan muuttaminen epäonnistui.",
"Error while loading the file data" : "Virhe tiedostoa ladatessa",
"Pick a template for {name}" : "Valtise mallipohja tiedostolle {name}",
- "Cancel" : "Peruuta",
"Create" : "Luo",
"Create a new file with the selected template" : "Luo uusi tiedosto valitulla mallipohjalla",
"Creating file" : "Luodaan tiedostoa",
@@ -249,6 +248,7 @@
"Unlimited" : "Rajoittamaton",
"Search users" : "Etsi käyttäjistä",
"Cannot transfer ownership of a file or folder you don't own" : "Et voi siirtää sellaisen tiedoston tai kansion omistajuutta, jota et itse omista",
+ "Cancel" : "Peruuta",
"%s used" : "%s käytetty",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s/%2$s käytetty",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index bbda95dafb5..6862d5daced 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Impossible de modifier l'état favori du fichier",
"Error while loading the file data" : "Erreur lors du chargement du fichier de données",
"Pick a template for {name}" : "Choisissez un modèle pour {name}",
- "Cancel" : "Annuler",
"Create" : "Créer",
"Create a new file with the selected template" : "Créer un nouveau fichier avec le modèle sélectionné",
"Creating file" : "Créer un fichier",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Illimité",
"Search users" : "Rechercher des utilisateurs",
"Cannot transfer ownership of a file or folder you don't own" : "Impossible de transférer la propriété d’un fichier ou d’un dossier dont vous n'êtes pas le propriétaire",
+ "Cancel" : "Annuler",
"%s used" : "%s utilisés",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s utilisés sur %2$s",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 19a6da272a7..8eebead1135 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "Impossible de modifier l'état favori du fichier",
"Error while loading the file data" : "Erreur lors du chargement du fichier de données",
"Pick a template for {name}" : "Choisissez un modèle pour {name}",
- "Cancel" : "Annuler",
"Create" : "Créer",
"Create a new file with the selected template" : "Créer un nouveau fichier avec le modèle sélectionné",
"Creating file" : "Créer un fichier",
@@ -256,6 +255,7 @@
"Unlimited" : "Illimité",
"Search users" : "Rechercher des utilisateurs",
"Cannot transfer ownership of a file or folder you don't own" : "Impossible de transférer la propriété d’un fichier ou d’un dossier dont vous n'êtes pas le propriétaire",
+ "Cancel" : "Annuler",
"%s used" : "%s utilisés",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s utilisés sur %2$s",
diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js
index 575a98b7c18..793a623455e 100644
--- a/apps/files/l10n/gl.js
+++ b/apps/files/l10n/gl.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Non é posíbel cambiar o estado favorito do ficheiro",
"Error while loading the file data" : "Produciuse un erro ao cargar os datos do ficheiro",
"Pick a template for {name}" : "Escolla un modelo para {name}",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Create a new file with the selected template" : "Crear un novo ficheiro co modelo seleccionado",
"Creating file" : "Creando o ficheiro",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Sen límites",
"Search users" : "Buscar usuarios",
"Cannot transfer ownership of a file or folder you don't own" : "Non é posíbel transferir a propiedade dun ficheiro ou cartafol que non é de seu",
+ "Cancel" : "Cancelar",
"%s used" : "%s utilizado",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%s de %s utilizado",
diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json
index ca3679bfb7e..1ece6878a06 100644
--- a/apps/files/l10n/gl.json
+++ b/apps/files/l10n/gl.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "Non é posíbel cambiar o estado favorito do ficheiro",
"Error while loading the file data" : "Produciuse un erro ao cargar os datos do ficheiro",
"Pick a template for {name}" : "Escolla un modelo para {name}",
- "Cancel" : "Cancelar",
"Create" : "Crear",
"Create a new file with the selected template" : "Crear un novo ficheiro co modelo seleccionado",
"Creating file" : "Creando o ficheiro",
@@ -256,6 +255,7 @@
"Unlimited" : "Sen límites",
"Search users" : "Buscar usuarios",
"Cannot transfer ownership of a file or folder you don't own" : "Non é posíbel transferir a propiedade dun ficheiro ou cartafol que non é de seu",
+ "Cancel" : "Cancelar",
"%s used" : "%s utilizado",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%s de %s utilizado",
diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js
index 8b408bbed4e..06019c49879 100644
--- a/apps/files/l10n/he.js
+++ b/apps/files/l10n/he.js
@@ -166,7 +166,6 @@ OC.L10N.register(
"Use this address to access your Files via WebDAV" : "יש להשתמש בכתובת הזאת כדי לגשת לקבצים שלך דרך WebDAV",
"Unable to change the favourite state of the file" : "לא ניתן לשנות את מצב ההעדפה של הקובץ",
"Error while loading the file data" : "שגיאה בטעינת נתוני הקובץ",
- "Cancel" : "ביטול",
"Create" : "יצירה",
"Delete permanently" : "מחיקה לצמיתות",
"Toggle grid view" : "החלפת תצוגת טבלה",
@@ -192,6 +191,7 @@ OC.L10N.register(
"Unlimited" : "ללא הגבלה",
"Search users" : "חיפוש משתמשים",
"Cannot transfer ownership of a file or folder you don't own" : "אין לך אפשרות להעביר בעלות על קובץ או תיקייה שאין לך בעלות עליהם",
+ "Cancel" : "ביטול",
"%s used" : "%s בשימוש",
"%1$s of %2$s used" : "%1$s מתוך %2$s בשימוש",
"Settings" : "הגדרות",
diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json
index d2fc7e2010b..c329e0a8b57 100644
--- a/apps/files/l10n/he.json
+++ b/apps/files/l10n/he.json
@@ -164,7 +164,6 @@
"Use this address to access your Files via WebDAV" : "יש להשתמש בכתובת הזאת כדי לגשת לקבצים שלך דרך WebDAV",
"Unable to change the favourite state of the file" : "לא ניתן לשנות את מצב ההעדפה של הקובץ",
"Error while loading the file data" : "שגיאה בטעינת נתוני הקובץ",
- "Cancel" : "ביטול",
"Create" : "יצירה",
"Delete permanently" : "מחיקה לצמיתות",
"Toggle grid view" : "החלפת תצוגת טבלה",
@@ -190,6 +189,7 @@
"Unlimited" : "ללא הגבלה",
"Search users" : "חיפוש משתמשים",
"Cannot transfer ownership of a file or folder you don't own" : "אין לך אפשרות להעביר בעלות על קובץ או תיקייה שאין לך בעלות עליהם",
+ "Cancel" : "ביטול",
"%s used" : "%s בשימוש",
"%1$s of %2$s used" : "%1$s מתוך %2$s בשימוש",
"Settings" : "הגדרות",
diff --git a/apps/files/l10n/hr.js b/apps/files/l10n/hr.js
index 49873b3ceae..41c3dd11c87 100644
--- a/apps/files/l10n/hr.js
+++ b/apps/files/l10n/hr.js
@@ -176,7 +176,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Nije moguće promijeniti status favorita datoteke",
"Error while loading the file data" : "Pogreška pri učitavanju podataka iz datoteke",
"Pick a template for {name}" : "Odaberite predložak za {name}",
- "Cancel" : "Odustani",
"Create" : "Stvori",
"Create a new file with the selected template" : "Stvorite novu datoteku s odabranim predloškom",
"Creating file" : "Stvaranje datoteke",
@@ -210,6 +209,7 @@ OC.L10N.register(
"Unlimited" : "Neograničeno",
"Search users" : "Pretraži korisnike",
"Cannot transfer ownership of a file or folder you don't own" : "Ne možete prenijeti vlasništvo nad datotekom ili mapom koja nije u vašem vlasništvu",
+ "Cancel" : "Odustani",
"%s used" : "Iskorišteno %s",
"%1$s of %2$s used" : "Iskorišteno %1$s od %2$s",
"Settings" : "Postavke",
diff --git a/apps/files/l10n/hr.json b/apps/files/l10n/hr.json
index ad91f48ed81..0994ecb4071 100644
--- a/apps/files/l10n/hr.json
+++ b/apps/files/l10n/hr.json
@@ -174,7 +174,6 @@
"Unable to change the favourite state of the file" : "Nije moguće promijeniti status favorita datoteke",
"Error while loading the file data" : "Pogreška pri učitavanju podataka iz datoteke",
"Pick a template for {name}" : "Odaberite predložak za {name}",
- "Cancel" : "Odustani",
"Create" : "Stvori",
"Create a new file with the selected template" : "Stvorite novu datoteku s odabranim predloškom",
"Creating file" : "Stvaranje datoteke",
@@ -208,6 +207,7 @@
"Unlimited" : "Neograničeno",
"Search users" : "Pretraži korisnike",
"Cannot transfer ownership of a file or folder you don't own" : "Ne možete prenijeti vlasništvo nad datotekom ili mapom koja nije u vašem vlasništvu",
+ "Cancel" : "Odustani",
"%s used" : "Iskorišteno %s",
"%1$s of %2$s used" : "Iskorišteno %1$s od %2$s",
"Settings" : "Postavke",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index 8bd900afb69..c1e111e09bc 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -220,7 +220,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Nem lehet megváltoztatni a fájl kedvenc állapotát",
"Error while loading the file data" : "Hiba történt a fájladatok betöltése közben",
"Pick a template for {name}" : "Válassz sablont a(z) {name} fájlnak",
- "Cancel" : "Mégse",
"Create" : "Létrehozás",
"Create a new file with the selected template" : "Új fájl létrehozása a kiválasztott sablonnal",
"Creating file" : "Fájl létrehozása",
@@ -254,6 +253,7 @@ OC.L10N.register(
"Unlimited" : "Korlátlan",
"Search users" : "Fehasználók keresése",
"Cannot transfer ownership of a file or folder you don't own" : "Nem ruházható át olyan fájl vagy mappa tulajdonjoga, amely nem Öné",
+ "Cancel" : "Mégse",
"%s used" : "%s használt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s / %2$s felhasználva",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index 7c956286206..295247ae67d 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -218,7 +218,6 @@
"Unable to change the favourite state of the file" : "Nem lehet megváltoztatni a fájl kedvenc állapotát",
"Error while loading the file data" : "Hiba történt a fájladatok betöltése közben",
"Pick a template for {name}" : "Válassz sablont a(z) {name} fájlnak",
- "Cancel" : "Mégse",
"Create" : "Létrehozás",
"Create a new file with the selected template" : "Új fájl létrehozása a kiválasztott sablonnal",
"Creating file" : "Fájl létrehozása",
@@ -252,6 +251,7 @@
"Unlimited" : "Korlátlan",
"Search users" : "Fehasználók keresése",
"Cannot transfer ownership of a file or folder you don't own" : "Nem ruházható át olyan fájl vagy mappa tulajdonjoga, amely nem Öné",
+ "Cancel" : "Mégse",
"%s used" : "%s használt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s / %2$s felhasználva",
diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js
index 4c8d8614160..63345b57833 100644
--- a/apps/files/l10n/id.js
+++ b/apps/files/l10n/id.js
@@ -202,7 +202,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Gagal mengubah status favorit berkas",
"Error while loading the file data" : "Galat pemuatan data berkas",
"Pick a template for {name}" : "Pilih templat untuk {name}",
- "Cancel" : "Membatalkan",
"Create" : "Buat",
"Create a new file with the selected template" : "Buat sebuah berkas baru dengan templat yang dipilih",
"Creating file" : "Membuat berkas",
@@ -236,6 +235,7 @@ OC.L10N.register(
"Unlimited" : "Tak terbatas",
"Search users" : "Cari pengguna",
"Cannot transfer ownership of a file or folder you don't own" : "Tidak dapat melakukan transfer kepemilikan dari berkas dan folder yang tidak Anda miliki",
+ "Cancel" : "Membatalkan",
"%s used" : "%s digunakan",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s dari %2$s sudah digunakan",
diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json
index 6e452875b79..99f60cbc7d0 100644
--- a/apps/files/l10n/id.json
+++ b/apps/files/l10n/id.json
@@ -200,7 +200,6 @@
"Unable to change the favourite state of the file" : "Gagal mengubah status favorit berkas",
"Error while loading the file data" : "Galat pemuatan data berkas",
"Pick a template for {name}" : "Pilih templat untuk {name}",
- "Cancel" : "Membatalkan",
"Create" : "Buat",
"Create a new file with the selected template" : "Buat sebuah berkas baru dengan templat yang dipilih",
"Creating file" : "Membuat berkas",
@@ -234,6 +233,7 @@
"Unlimited" : "Tak terbatas",
"Search users" : "Cari pengguna",
"Cannot transfer ownership of a file or folder you don't own" : "Tidak dapat melakukan transfer kepemilikan dari berkas dan folder yang tidak Anda miliki",
+ "Cancel" : "Membatalkan",
"%s used" : "%s digunakan",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s dari %2$s sudah digunakan",
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index e7f3793a071..43c9dcd4c4d 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -153,7 +153,6 @@ OC.L10N.register(
"Copy to clipboard" : "Afrita á klippispjald",
"Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skrárnar þínar með WebDAV",
"Error while loading the file data" : "Villa við að hlaða inn skráagögnum",
- "Cancel" : "Hætta við",
"Create" : "Búa til",
"Create a new file with the selected template" : "Búa til nýja skrá úr völdu sniðmáti",
"Creating file" : "Bý til skrá",
@@ -186,6 +185,7 @@ OC.L10N.register(
"Unlimited" : "Ótakmarkað",
"Search users" : "Leita að notendum",
"Cannot transfer ownership of a file or folder you don't own" : "Ekki er hægt að millifæra eignarhald á skrá eða möppu sem þú átt ekki",
+ "Cancel" : "Hætta við",
"%s used" : "%s notað",
"%1$s of %2$s used" : "%1$s af %2$s notað",
"Settings" : "Stillingar",
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index 0599c08eb5c..82f7e834d2b 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -151,7 +151,6 @@
"Copy to clipboard" : "Afrita á klippispjald",
"Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skrárnar þínar með WebDAV",
"Error while loading the file data" : "Villa við að hlaða inn skráagögnum",
- "Cancel" : "Hætta við",
"Create" : "Búa til",
"Create a new file with the selected template" : "Búa til nýja skrá úr völdu sniðmáti",
"Creating file" : "Bý til skrá",
@@ -184,6 +183,7 @@
"Unlimited" : "Ótakmarkað",
"Search users" : "Leita að notendum",
"Cannot transfer ownership of a file or folder you don't own" : "Ekki er hægt að millifæra eignarhald á skrá eða möppu sem þú átt ekki",
+ "Cancel" : "Hætta við",
"%s used" : "%s notað",
"%1$s of %2$s used" : "%1$s af %2$s notað",
"Settings" : "Stillingar",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 4f834fc7edb..c039800f469 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -197,7 +197,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Impossibile cambiare lo stato di preferito del file",
"Error while loading the file data" : "Errore durante il caricamento del file di dati",
"Pick a template for {name}" : "Scegli un modello per {name}",
- "Cancel" : "Annulla",
"Create" : "Crea",
"Create a new file with the selected template" : "Crea un nuovo file con il modello selezionato",
"Creating file" : "Creazione del file",
@@ -231,6 +230,7 @@ OC.L10N.register(
"Unlimited" : "Illimitata",
"Search users" : "Cerca utenti",
"Cannot transfer ownership of a file or folder you don't own" : "Impossibile trasferire la proprietà di un file o di una cartella di altri",
+ "Cancel" : "Annulla",
"%s used" : "%s utilizzato",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s di %2$s utilizzati",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index b87b6648662..56b47bb0dd9 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -195,7 +195,6 @@
"Unable to change the favourite state of the file" : "Impossibile cambiare lo stato di preferito del file",
"Error while loading the file data" : "Errore durante il caricamento del file di dati",
"Pick a template for {name}" : "Scegli un modello per {name}",
- "Cancel" : "Annulla",
"Create" : "Crea",
"Create a new file with the selected template" : "Crea un nuovo file con il modello selezionato",
"Creating file" : "Creazione del file",
@@ -229,6 +228,7 @@
"Unlimited" : "Illimitata",
"Search users" : "Cerca utenti",
"Cannot transfer ownership of a file or folder you don't own" : "Impossibile trasferire la proprietà di un file o di una cartella di altri",
+ "Cancel" : "Annulla",
"%s used" : "%s utilizzato",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s di %2$s utilizzati",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index a5978835a59..5696c7f5dc4 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "ファイルのお気に入りの状態を変更できません",
"Error while loading the file data" : "ファイルデータの読み込み中にエラーが発生しました",
"Pick a template for {name}" : "{name} のテンプレートを選択してください",
- "Cancel" : "キャンセル",
"Create" : "作成",
"Create a new file with the selected template" : "選択したテンプレートを使用して新しいファイルを作成します",
"Creating file" : "ファイル作成",
@@ -235,6 +234,7 @@ OC.L10N.register(
"Unlimited" : "無制限",
"Search users" : "ユーザーを検索",
"Cannot transfer ownership of a file or folder you don't own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません",
+ "Cancel" : "キャンセル",
"%s used" : "%s 使用中",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%2$s 中%1$s 使用中",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index c93e8a910e9..cc1edbdde3b 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -199,7 +199,6 @@
"Unable to change the favourite state of the file" : "ファイルのお気に入りの状態を変更できません",
"Error while loading the file data" : "ファイルデータの読み込み中にエラーが発生しました",
"Pick a template for {name}" : "{name} のテンプレートを選択してください",
- "Cancel" : "キャンセル",
"Create" : "作成",
"Create a new file with the selected template" : "選択したテンプレートを使用して新しいファイルを作成します",
"Creating file" : "ファイル作成",
@@ -233,6 +232,7 @@
"Unlimited" : "無制限",
"Search users" : "ユーザーを検索",
"Cannot transfer ownership of a file or folder you don't own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません",
+ "Cancel" : "キャンセル",
"%s used" : "%s 使用中",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%2$s 中%1$s 使用中",
diff --git a/apps/files/l10n/ka_GE.js b/apps/files/l10n/ka_GE.js
index f95326d4d58..5abb1b63966 100644
--- a/apps/files/l10n/ka_GE.js
+++ b/apps/files/l10n/ka_GE.js
@@ -122,7 +122,6 @@ OC.L10N.register(
"Additional settings" : "დამატებითი პარამეტრები",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "კოპირება ბუფერში",
- "Cancel" : "უარყოფა",
"Create" : "შექმნა",
"Delete permanently" : "სამუდამოდ წაშლა",
"Upload some content or sync with your devices!" : "ატვირთეთ რამე ან მოახდინეთ სინქრონიზაცია თქვენს მოწყობილობებთან!",
@@ -143,6 +142,7 @@ OC.L10N.register(
"New" : "ახალი",
"Copied!" : "დაკოპირდა!",
"Unlimited" : "ულიმიტო",
+ "Cancel" : "უარყოფა",
"%s used" : "%s მოხმარებულია",
"%1$s of %2$s used" : "გამოყენებულია %1$s სულ %2$s-იდან ",
"Settings" : "პარამეტრები",
diff --git a/apps/files/l10n/ka_GE.json b/apps/files/l10n/ka_GE.json
index 3295c60d4ac..7a11d7a299e 100644
--- a/apps/files/l10n/ka_GE.json
+++ b/apps/files/l10n/ka_GE.json
@@ -120,7 +120,6 @@
"Additional settings" : "დამატებითი პარამეტრები",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "კოპირება ბუფერში",
- "Cancel" : "უარყოფა",
"Create" : "შექმნა",
"Delete permanently" : "სამუდამოდ წაშლა",
"Upload some content or sync with your devices!" : "ატვირთეთ რამე ან მოახდინეთ სინქრონიზაცია თქვენს მოწყობილობებთან!",
@@ -141,6 +140,7 @@
"New" : "ახალი",
"Copied!" : "დაკოპირდა!",
"Unlimited" : "ულიმიტო",
+ "Cancel" : "უარყოფა",
"%s used" : "%s მოხმარებულია",
"%1$s of %2$s used" : "გამოყენებულია %1$s სულ %2$s-იდან ",
"Settings" : "პარამეტრები",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index 95af1807d36..c2dab207b41 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -185,7 +185,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "파일의 즐겨찾기 상태를 변경할 수 없음",
"Error while loading the file data" : "파일 데이터를 불러오는 중 오류 발생",
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
- "Cancel" : "취소",
"Create" : "생성",
"Create a new file with the selected template" : "선택한 템플릿으로 새 파일 만들기",
"Creating file" : "파일 만들기",
@@ -218,6 +217,7 @@ OC.L10N.register(
"Unlimited" : "무제한",
"Search users" : "사용자 검색",
"Cannot transfer ownership of a file or folder you don't own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음",
+ "Cancel" : "취소",
"%s used" : "%s 사용함",
"%1$s of %2$s used" : "%2$s 중 %1$s 사용됨",
"Settings" : "설정",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 694d5377844..3179b8f9c47 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -183,7 +183,6 @@
"Unable to change the favourite state of the file" : "파일의 즐겨찾기 상태를 변경할 수 없음",
"Error while loading the file data" : "파일 데이터를 불러오는 중 오류 발생",
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
- "Cancel" : "취소",
"Create" : "생성",
"Create a new file with the selected template" : "선택한 템플릿으로 새 파일 만들기",
"Creating file" : "파일 만들기",
@@ -216,6 +215,7 @@
"Unlimited" : "무제한",
"Search users" : "사용자 검색",
"Cannot transfer ownership of a file or folder you don't own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음",
+ "Cancel" : "취소",
"%s used" : "%s 사용함",
"%1$s of %2$s used" : "%2$s 중 %1$s 사용됨",
"Settings" : "설정",
diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js
index 5b00aefd057..36608a23dea 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -177,7 +177,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Nepavyksta pakeisti failo Lankomiausiųjų būsenos",
"Error while loading the file data" : "Klaida įkeliant failo duomenis",
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
- "Cancel" : "Atsisakyti",
"Create" : "Sukurti",
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
"Creating file" : "Sukuriamas failas",
@@ -208,6 +207,7 @@ OC.L10N.register(
"Unlimited" : "Neribotai",
"Search users" : "Ieškoti naudotojų",
"Cannot transfer ownership of a file or folder you don't own" : "Negalima perduoti, failo aplanko, kuris jums nepriklauso, nuosavybės",
+ "Cancel" : "Atsisakyti",
"%s used" : "%s panaudota",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "naudojama %1$s iš %2$s",
diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index 2bdc6c1a4d3..4fec801599f 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -175,7 +175,6 @@
"Unable to change the favourite state of the file" : "Nepavyksta pakeisti failo Lankomiausiųjų būsenos",
"Error while loading the file data" : "Klaida įkeliant failo duomenis",
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
- "Cancel" : "Atsisakyti",
"Create" : "Sukurti",
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
"Creating file" : "Sukuriamas failas",
@@ -206,6 +205,7 @@
"Unlimited" : "Neribotai",
"Search users" : "Ieškoti naudotojų",
"Cannot transfer ownership of a file or folder you don't own" : "Negalima perduoti, failo aplanko, kuris jums nepriklauso, nuosavybės",
+ "Cancel" : "Atsisakyti",
"%s used" : "%s panaudota",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "naudojama %1$s iš %2$s",
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index 74ec3959720..3fc5a72847e 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopēt starpliktuvē",
"Use this address to access your Files via WebDAV" : "Izmantojiet šo adresi, lai piekļūtu savām datnēm, izmantojot WebDAV",
- "Cancel" : "Atcelt",
"Create" : "Izveidot",
"Delete permanently" : "Dzēst pavisam",
"Toggle grid view" : "Pārslēgt režģa skatu",
@@ -142,6 +141,7 @@ OC.L10N.register(
"New" : "Jauna",
"Copied!" : "Nokopēts!",
"Unlimited" : "Neierobežota",
+ "Cancel" : "Atcelt",
"%s used" : "%s izmantoti",
"%1$s of %2$s used" : "%1$s no %2$s lietoti",
"Settings" : "Iestatījumi",
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index bed605a4081..e0eb3219b1f 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -117,7 +117,6 @@
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopēt starpliktuvē",
"Use this address to access your Files via WebDAV" : "Izmantojiet šo adresi, lai piekļūtu savām datnēm, izmantojot WebDAV",
- "Cancel" : "Atcelt",
"Create" : "Izveidot",
"Delete permanently" : "Dzēst pavisam",
"Toggle grid view" : "Pārslēgt režģa skatu",
@@ -140,6 +139,7 @@
"New" : "Jauna",
"Copied!" : "Nokopēts!",
"Unlimited" : "Neierobežota",
+ "Cancel" : "Atcelt",
"%s used" : "%s izmantoti",
"%1$s of %2$s used" : "%1$s no %2$s lietoti",
"Settings" : "Iestatījumi",
diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js
index 968947c2ff0..37b81ae6c16 100644
--- a/apps/files/l10n/mk.js
+++ b/apps/files/l10n/mk.js
@@ -201,7 +201,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Неможе да се промени статусот на омимени на датотеката",
"Error while loading the file data" : "Грешка при вчитување на податоците од датотеката",
"Pick a template for {name}" : "Избери шаблон за {name}",
- "Cancel" : "Откажи",
"Create" : "Креирај",
"Create a new file with the selected template" : "Креирај нова датотека со избраниот шаблон",
"Creating file" : "Креирање на датотека",
@@ -235,6 +234,7 @@ OC.L10N.register(
"Unlimited" : "Неограничено",
"Search users" : "Пребарувај корисници",
"Cannot transfer ownership of a file or folder you don't own" : "Неможете да направите трансвер на сопственот на папка која не е ваша",
+ "Cancel" : "Откажи",
"%s used" : "Искористено %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Искористено %1$s од %2$s",
diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json
index 333ca63cf3e..c138cbd83e6 100644
--- a/apps/files/l10n/mk.json
+++ b/apps/files/l10n/mk.json
@@ -199,7 +199,6 @@
"Unable to change the favourite state of the file" : "Неможе да се промени статусот на омимени на датотеката",
"Error while loading the file data" : "Грешка при вчитување на податоците од датотеката",
"Pick a template for {name}" : "Избери шаблон за {name}",
- "Cancel" : "Откажи",
"Create" : "Креирај",
"Create a new file with the selected template" : "Креирај нова датотека со избраниот шаблон",
"Creating file" : "Креирање на датотека",
@@ -233,6 +232,7 @@
"Unlimited" : "Неограничено",
"Search users" : "Пребарувај корисници",
"Cannot transfer ownership of a file or folder you don't own" : "Неможете да направите трансвер на сопственот на папка која не е ваша",
+ "Cancel" : "Откажи",
"%s used" : "Искористено %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Искористено %1$s од %2$s",
diff --git a/apps/files/l10n/mn.js b/apps/files/l10n/mn.js
index d31b76d49d8..d9e2bf0b8df 100644
--- a/apps/files/l10n/mn.js
+++ b/apps/files/l10n/mn.js
@@ -122,7 +122,6 @@ OC.L10N.register(
"No files in here" : "Энд файл байхгүй байна",
"Go back" : "Буцах",
"Show hidden files" : "Нууцлагдсан файлыг харах",
- "Cancel" : "болиулах",
"Create" : "Үүсгэх",
"Delete permanently" : "бүр мөсөн устгах",
"No entries found in this folder" : "энэ хавтсан олдсон ч ямарч мэдээлэл олдохгүй байна",
@@ -139,6 +138,7 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Та энэ байршилд файл үүсгэх эсвэл байршуулах эрхгүй байна.",
"New" : "Шинэ",
"Copied!" : "Хуулсан!",
+ "Cancel" : "болиулах",
"%1$s of %2$s used" : "%1$s-с %2$s хэрэглэсэн",
"Settings" : "Тохиргоо",
"Deleted files" : "Устгасан файлууд"
diff --git a/apps/files/l10n/mn.json b/apps/files/l10n/mn.json
index a21f04b405d..e3cee63037c 100644
--- a/apps/files/l10n/mn.json
+++ b/apps/files/l10n/mn.json
@@ -120,7 +120,6 @@
"No files in here" : "Энд файл байхгүй байна",
"Go back" : "Буцах",
"Show hidden files" : "Нууцлагдсан файлыг харах",
- "Cancel" : "болиулах",
"Create" : "Үүсгэх",
"Delete permanently" : "бүр мөсөн устгах",
"No entries found in this folder" : "энэ хавтсан олдсон ч ямарч мэдээлэл олдохгүй байна",
@@ -137,6 +136,7 @@
"You don’t have permission to upload or create files here" : "Та энэ байршилд файл үүсгэх эсвэл байршуулах эрхгүй байна.",
"New" : "Шинэ",
"Copied!" : "Хуулсан!",
+ "Cancel" : "болиулах",
"%1$s of %2$s used" : "%1$s-с %2$s хэрэглэсэн",
"Settings" : "Тохиргоо",
"Deleted files" : "Устгасан файлууд"
diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js
index b0c0099d792..0ef31f9bb44 100644
--- a/apps/files/l10n/nb.js
+++ b/apps/files/l10n/nb.js
@@ -198,7 +198,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Kan ikke endre favorittstatus til filen",
"Error while loading the file data" : "Feil ved lasting av fildata",
"Pick a template for {name}" : "Velg en mal for {name}",
- "Cancel" : "Avbryt",
"Create" : "Opprett",
"Create a new file with the selected template" : "Opprett en ny fil med den valgte malen",
"Creating file" : "Oppretter fil",
@@ -232,6 +231,7 @@ OC.L10N.register(
"Unlimited" : "Ubegrenset",
"Search users" : "Søk etter brukere",
"Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre eierskap til en fil eller mappe du ikke eier",
+ "Cancel" : "Avbryt",
"%s used" : "%s brukt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s av %2$s brukt",
diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json
index 18ede7e090f..14820232732 100644
--- a/apps/files/l10n/nb.json
+++ b/apps/files/l10n/nb.json
@@ -196,7 +196,6 @@
"Unable to change the favourite state of the file" : "Kan ikke endre favorittstatus til filen",
"Error while loading the file data" : "Feil ved lasting av fildata",
"Pick a template for {name}" : "Velg en mal for {name}",
- "Cancel" : "Avbryt",
"Create" : "Opprett",
"Create a new file with the selected template" : "Opprett en ny fil med den valgte malen",
"Creating file" : "Oppretter fil",
@@ -230,6 +229,7 @@
"Unlimited" : "Ubegrenset",
"Search users" : "Søk etter brukere",
"Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre eierskap til en fil eller mappe du ikke eier",
+ "Cancel" : "Avbryt",
"%s used" : "%s brukt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s av %2$s brukt",
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index d612dcbbf7e..9327b2e783d 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -191,7 +191,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Niet mogelijk om favoriet status van het bestand te wijzigen",
"Error while loading the file data" : "Fout bij het lezen van de bestandsgegevens",
"Pick a template for {name}" : "Kies een sjabloon voor {name}",
- "Cancel" : "Annuleren",
"Create" : "Aanmaken",
"Create a new file with the selected template" : "Maak een nieuw bestand met het geselecteerde sjabloon",
"Creating file" : "Maken bestand",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Unlimited" : "Ongelimiteerd",
"Search users" : "Gebruikers zoeken",
"Cannot transfer ownership of a file or folder you don't own" : "Kan de eigendom van een bestand of map waarvan u niet de eigenaar bent, niet overdragen",
+ "Cancel" : "Annuleren",
"%s used" : "%s gebruikt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s van %2$s gebruikt",
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index ec117b80103..e540f53d5aa 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -189,7 +189,6 @@
"Unable to change the favourite state of the file" : "Niet mogelijk om favoriet status van het bestand te wijzigen",
"Error while loading the file data" : "Fout bij het lezen van de bestandsgegevens",
"Pick a template for {name}" : "Kies een sjabloon voor {name}",
- "Cancel" : "Annuleren",
"Create" : "Aanmaken",
"Create a new file with the selected template" : "Maak een nieuw bestand met het geselecteerde sjabloon",
"Creating file" : "Maken bestand",
@@ -223,6 +222,7 @@
"Unlimited" : "Ongelimiteerd",
"Search users" : "Gebruikers zoeken",
"Cannot transfer ownership of a file or folder you don't own" : "Kan de eigendom van een bestand of map waarvan u niet de eigenaar bent, niet overdragen",
+ "Cancel" : "Annuleren",
"%s used" : "%s gebruikt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s van %2$s gebruikt",
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 602fc7d7657..1db36f47648 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -109,6 +109,8 @@ OC.L10N.register(
"Create new folder" : "Utwórz nowy katalog",
"Upload file" : "Wyślij plik",
"Recent" : "Ostatnie",
+ "This file has the tag {tag}" : "Ten plik posiada etykietę {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "Ten plik posiada etykiety {firstTags} i {lastTag}",
"Not favorited" : "Wyłączone z ulubionych",
"Remove from favorites" : "Usuń z ulubionych",
"Add to favorites" : "Dodaj do ulubionych",
@@ -191,6 +193,7 @@ OC.L10N.register(
"Choose file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia",
"Change" : "Zmień",
"New owner" : "Nowy właściciel",
+ "Search for an account" : "Wyszukaj konto",
"Choose a file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia",
"Transfer" : "Przenieś",
"Transfer {path} to {userid}" : "Przenieś {path} do {userid}",
@@ -220,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Nie można zmienić ulubionego stanu pliku",
"Error while loading the file data" : "Błąd podczas ładowania danych pliku",
"Pick a template for {name}" : "Wybierz szablon dla {name}",
- "Cancel" : "Anuluj",
"Create" : "Utwórz",
"Create a new file with the selected template" : "Utwórz nowy plik z wybranym szablonem",
"Creating file" : "Tworzenie pliku",
@@ -229,6 +231,7 @@ OC.L10N.register(
"Delete permanently" : "Usuń bezpowrotnie",
"Set up templates folder" : "Skonfiguruj katalog szablonów",
"Templates" : "Szablony",
+ "Create new templates folder" : "Stwórz nowy folder z szablonami",
"Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów",
"Toggle %1$s sublist" : "Przełącz podlistę %1$s",
"Toggle grid view" : "Przełącz widok siatki",
@@ -254,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Brak limitu",
"Search users" : "Wyszukaj użytkowników",
"Cannot transfer ownership of a file or folder you don't own" : "Nie można przenieść prawa własności do pliku lub katalogu, którego nie jesteś właścicielem",
+ "Cancel" : "Anuluj",
"%s used" : "Wykorzystane: %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Wykorzystane: %1$s z %2$s",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index 356bdbbff03..7db3cc9c072 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -107,6 +107,8 @@
"Create new folder" : "Utwórz nowy katalog",
"Upload file" : "Wyślij plik",
"Recent" : "Ostatnie",
+ "This file has the tag {tag}" : "Ten plik posiada etykietę {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "Ten plik posiada etykiety {firstTags} i {lastTag}",
"Not favorited" : "Wyłączone z ulubionych",
"Remove from favorites" : "Usuń z ulubionych",
"Add to favorites" : "Dodaj do ulubionych",
@@ -189,6 +191,7 @@
"Choose file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia",
"Change" : "Zmień",
"New owner" : "Nowy właściciel",
+ "Search for an account" : "Wyszukaj konto",
"Choose a file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia",
"Transfer" : "Przenieś",
"Transfer {path} to {userid}" : "Przenieś {path} do {userid}",
@@ -218,7 +221,6 @@
"Unable to change the favourite state of the file" : "Nie można zmienić ulubionego stanu pliku",
"Error while loading the file data" : "Błąd podczas ładowania danych pliku",
"Pick a template for {name}" : "Wybierz szablon dla {name}",
- "Cancel" : "Anuluj",
"Create" : "Utwórz",
"Create a new file with the selected template" : "Utwórz nowy plik z wybranym szablonem",
"Creating file" : "Tworzenie pliku",
@@ -227,6 +229,7 @@
"Delete permanently" : "Usuń bezpowrotnie",
"Set up templates folder" : "Skonfiguruj katalog szablonów",
"Templates" : "Szablony",
+ "Create new templates folder" : "Stwórz nowy folder z szablonami",
"Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów",
"Toggle %1$s sublist" : "Przełącz podlistę %1$s",
"Toggle grid view" : "Przełącz widok siatki",
@@ -252,6 +255,7 @@
"Unlimited" : "Brak limitu",
"Search users" : "Wyszukaj użytkowników",
"Cannot transfer ownership of a file or folder you don't own" : "Nie można przenieść prawa własności do pliku lub katalogu, którego nie jesteś właścicielem",
+ "Cancel" : "Anuluj",
"%s used" : "Wykorzystane: %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Wykorzystane: %1$s z %2$s",
diff --git a/apps/files/l10n/ps.js b/apps/files/l10n/ps.js
index 2f15dac80b5..25ceb84b264 100644
--- a/apps/files/l10n/ps.js
+++ b/apps/files/l10n/ps.js
@@ -112,7 +112,6 @@ OC.L10N.register(
"Unknown error" : "نامعلومه ستونزه",
"No files in here" : "دلته فایلونه نشته",
"Show hidden files" : "پټ فایلونه ليدل",
- "Cancel" : "پرېښول",
"Toggle grid view" : "په جدولي شکل ليدل",
"No entries found in this folder" : "په دې فولډر کې څه نشته",
"Upload too large" : "د پورته کېدونکي فایل کچه لوړه ده",
@@ -132,6 +131,7 @@ OC.L10N.register(
"New" : "نوی",
"Copied!" : "کاپي شو!",
"Unlimited" : "نامحدود",
+ "Cancel" : "پرېښول",
"%s used" : "%sکارول شوې",
"%1$s of %2$s used" : "د %2$sبرخې %1$sکارول شوې",
"Settings" : "سمونې",
diff --git a/apps/files/l10n/ps.json b/apps/files/l10n/ps.json
index 402942444bd..8c7aafd320a 100644
--- a/apps/files/l10n/ps.json
+++ b/apps/files/l10n/ps.json
@@ -110,7 +110,6 @@
"Unknown error" : "نامعلومه ستونزه",
"No files in here" : "دلته فایلونه نشته",
"Show hidden files" : "پټ فایلونه ليدل",
- "Cancel" : "پرېښول",
"Toggle grid view" : "په جدولي شکل ليدل",
"No entries found in this folder" : "په دې فولډر کې څه نشته",
"Upload too large" : "د پورته کېدونکي فایل کچه لوړه ده",
@@ -130,6 +129,7 @@
"New" : "نوی",
"Copied!" : "کاپي شو!",
"Unlimited" : "نامحدود",
+ "Cancel" : "پرېښول",
"%s used" : "%sکارول شوې",
"%1$s of %2$s used" : "د %2$sبرخې %1$sکارول شوې",
"Settings" : "سمونې",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 44ee9f734ee..1657c29d95e 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -202,7 +202,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Não foi possível alterar o estado favorito do arquivo",
"Error while loading the file data" : "Erro ao carregar os dados do arquivo",
"Pick a template for {name}" : "Escolha um modelo para {name}",
- "Cancel" : "Cancelar",
"Create" : "Criar ",
"Create a new file with the selected template" : "Crie um novo arquivo com o modelo selecionado ",
"Creating file" : "Criando arquivo ",
@@ -236,6 +235,7 @@ OC.L10N.register(
"Unlimited" : "Ilimitado",
"Search users" : "Procurar usuários",
"Cannot transfer ownership of a file or folder you don't own" : "Não é possível transferir a propriedade de um arquivo ou pasta que você não possui",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s usados de %2$s",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 659e12932e4..c55a8765c43 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -200,7 +200,6 @@
"Unable to change the favourite state of the file" : "Não foi possível alterar o estado favorito do arquivo",
"Error while loading the file data" : "Erro ao carregar os dados do arquivo",
"Pick a template for {name}" : "Escolha um modelo para {name}",
- "Cancel" : "Cancelar",
"Create" : "Criar ",
"Create a new file with the selected template" : "Crie um novo arquivo com o modelo selecionado ",
"Creating file" : "Criando arquivo ",
@@ -234,6 +233,7 @@
"Unlimited" : "Ilimitado",
"Search users" : "Procurar usuários",
"Cannot transfer ownership of a file or folder you don't own" : "Não é possível transferir a propriedade de um arquivo ou pasta que você não possui",
+ "Cancel" : "Cancelar",
"%s used" : "%s usado",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s usados de %2$s",
diff --git a/apps/files/l10n/pt_PT.js b/apps/files/l10n/pt_PT.js
index 69fff85355a..02d8e565dbc 100644
--- a/apps/files/l10n/pt_PT.js
+++ b/apps/files/l10n/pt_PT.js
@@ -149,7 +149,6 @@ OC.L10N.register(
"Additional settings" : "Definições adicionais",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar para área de transferência",
- "Cancel" : "Cancelar",
"Create" : "Criar",
"Delete permanently" : "Eliminar permanentemente",
"Templates" : "Modelos",
@@ -171,6 +170,7 @@ OC.L10N.register(
"New" : "Novo",
"Copied!" : "Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s utilizado",
"%1$s of %2$s used" : "Usado %1$s de %2$s",
"Settings" : "Configurações",
diff --git a/apps/files/l10n/pt_PT.json b/apps/files/l10n/pt_PT.json
index 0f45a64fa5f..592cd464afa 100644
--- a/apps/files/l10n/pt_PT.json
+++ b/apps/files/l10n/pt_PT.json
@@ -147,7 +147,6 @@
"Additional settings" : "Definições adicionais",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Copiar para área de transferência",
- "Cancel" : "Cancelar",
"Create" : "Criar",
"Delete permanently" : "Eliminar permanentemente",
"Templates" : "Modelos",
@@ -169,6 +168,7 @@
"New" : "Novo",
"Copied!" : "Copiado!",
"Unlimited" : "Ilimitado",
+ "Cancel" : "Cancelar",
"%s used" : "%s utilizado",
"%1$s of %2$s used" : "Usado %1$s de %2$s",
"Settings" : "Configurações",
diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js
index 3bbde10b94e..935f9dcba12 100644
--- a/apps/files/l10n/ro.js
+++ b/apps/files/l10n/ro.js
@@ -185,7 +185,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Nu s-a putut schimba starea fișierelor favorite",
"Error while loading the file data" : "A apărut o eroare în timpul încărcării datele din fișier",
"Pick a template for {name}" : "Alege un șablon pentru {name}",
- "Cancel" : "Anulare",
"Create" : "Crează",
"Create a new file with the selected template" : "Crează un fișier nou cu șablonul selectat",
"Creating file" : "Se crează fișierul",
@@ -219,6 +218,7 @@ OC.L10N.register(
"Unlimited" : "Nelimitată",
"Search users" : "Cauta utilizatori",
"Cannot transfer ownership of a file or folder you don't own" : "Nu se poate transfera proprietatea unui fișier sau dosar ce nu le deții",
+ "Cancel" : "Anulare",
"%s used" : "%s folosiți",
"%1$s of %2$s used" : "%1$s din %2$s utilizat",
"Settings" : "Setări",
diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json
index cbe5b4e66ef..1d1f7fe0259 100644
--- a/apps/files/l10n/ro.json
+++ b/apps/files/l10n/ro.json
@@ -183,7 +183,6 @@
"Unable to change the favourite state of the file" : "Nu s-a putut schimba starea fișierelor favorite",
"Error while loading the file data" : "A apărut o eroare în timpul încărcării datele din fișier",
"Pick a template for {name}" : "Alege un șablon pentru {name}",
- "Cancel" : "Anulare",
"Create" : "Crează",
"Create a new file with the selected template" : "Crează un fișier nou cu șablonul selectat",
"Creating file" : "Se crează fișierul",
@@ -217,6 +216,7 @@
"Unlimited" : "Nelimitată",
"Search users" : "Cauta utilizatori",
"Cannot transfer ownership of a file or folder you don't own" : "Nu se poate transfera proprietatea unui fișier sau dosar ce nu le deții",
+ "Cancel" : "Anulare",
"%s used" : "%s folosiți",
"%1$s of %2$s used" : "%1$s din %2$s utilizat",
"Settings" : "Setări",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 612594bf359..8d15679363e 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -109,6 +109,8 @@ OC.L10N.register(
"Create new folder" : "Создать папку",
"Upload file" : "Загрузить файл",
"Recent" : "Недавно изменённые",
+ "This file has the tag {tag}" : "У этого файла есть тэг: {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "У этого файла есть тэги: {firstTags} и {lastTag}",
"Not favorited" : "Не избранное",
"Remove from favorites" : "Удалить из избранных",
"Add to favorites" : "Добавить в избранное",
@@ -221,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Не удалось изменить состояние «избранный» этого файла.",
"Error while loading the file data" : "Не удалось загрузить данные файла",
"Pick a template for {name}" : "Выбрать шаблон для {name}",
- "Cancel" : "Отменить",
"Create" : "Создать",
"Create a new file with the selected template" : "Создать файл на основе шаблона",
"Creating file" : "Создание файла",
@@ -230,6 +231,7 @@ OC.L10N.register(
"Delete permanently" : "Удалить навсегда",
"Set up templates folder" : "Указать папку шаблонов",
"Templates" : "Шаблоны",
+ "Create new templates folder" : "Создать новую папку шаблонов",
"Unable to initialize the templates directory" : "Не удалось инициализировать каталог шаблонов",
"Toggle %1$s sublist" : "Переключить %1$s подсписок",
"Toggle grid view" : "Включить или отключить режим просмотра сеткой",
@@ -255,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Неограничено",
"Search users" : "Поиск пользователей",
"Cannot transfer ownership of a file or folder you don't own" : "Изменение владельца возможно только для своих файлов и папок",
+ "Cancel" : "Отменить",
"%s used" : "%s использовано",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "использовано %1$s из %2$s ",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 004145be23f..b26f623017e 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -107,6 +107,8 @@
"Create new folder" : "Создать папку",
"Upload file" : "Загрузить файл",
"Recent" : "Недавно изменённые",
+ "This file has the tag {tag}" : "У этого файла есть тэг: {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "У этого файла есть тэги: {firstTags} и {lastTag}",
"Not favorited" : "Не избранное",
"Remove from favorites" : "Удалить из избранных",
"Add to favorites" : "Добавить в избранное",
@@ -219,7 +221,6 @@
"Unable to change the favourite state of the file" : "Не удалось изменить состояние «избранный» этого файла.",
"Error while loading the file data" : "Не удалось загрузить данные файла",
"Pick a template for {name}" : "Выбрать шаблон для {name}",
- "Cancel" : "Отменить",
"Create" : "Создать",
"Create a new file with the selected template" : "Создать файл на основе шаблона",
"Creating file" : "Создание файла",
@@ -228,6 +229,7 @@
"Delete permanently" : "Удалить навсегда",
"Set up templates folder" : "Указать папку шаблонов",
"Templates" : "Шаблоны",
+ "Create new templates folder" : "Создать новую папку шаблонов",
"Unable to initialize the templates directory" : "Не удалось инициализировать каталог шаблонов",
"Toggle %1$s sublist" : "Переключить %1$s подсписок",
"Toggle grid view" : "Включить или отключить режим просмотра сеткой",
@@ -253,6 +255,7 @@
"Unlimited" : "Неограничено",
"Search users" : "Поиск пользователей",
"Cannot transfer ownership of a file or folder you don't own" : "Изменение владельца возможно только для своих файлов и папок",
+ "Cancel" : "Отменить",
"%s used" : "%s использовано",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "использовано %1$s из %2$s ",
diff --git a/apps/files/l10n/sc.js b/apps/files/l10n/sc.js
index f9d3af0c215..44f6b3da5b7 100644
--- a/apps/files/l10n/sc.js
+++ b/apps/files/l10n/sc.js
@@ -178,7 +178,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Non faghet a cambiare s'istadu de preferidu de s'archìviu",
"Error while loading the file data" : "Errore in su carrigamentu de is datos de s'archìviu",
"Pick a template for {name}" : "Sèbera unu modellu pro {name}",
- "Cancel" : "Annulla",
"Create" : "Crea",
"Create a new file with the selected template" : "Crea un'archìviu nou cun su modellu seletzionadu",
"Creating file" : "Creende s'archìviu",
@@ -212,6 +211,7 @@ OC.L10N.register(
"Unlimited" : "Chene lìmites",
"Search users" : "Chirca utentes",
"Cannot transfer ownership of a file or folder you don't own" : "Non faghet a tramudare sa propriedade de un'archìviu o cartella de is chi non ses mere",
+ "Cancel" : "Annulla",
"%s used" : "%s impreadu",
"%1$s of %2$s used" : "%1$s de %2$s impreadu",
"Settings" : "Impostatziones",
diff --git a/apps/files/l10n/sc.json b/apps/files/l10n/sc.json
index d65f11bf0f3..0d363c6b67f 100644
--- a/apps/files/l10n/sc.json
+++ b/apps/files/l10n/sc.json
@@ -176,7 +176,6 @@
"Unable to change the favourite state of the file" : "Non faghet a cambiare s'istadu de preferidu de s'archìviu",
"Error while loading the file data" : "Errore in su carrigamentu de is datos de s'archìviu",
"Pick a template for {name}" : "Sèbera unu modellu pro {name}",
- "Cancel" : "Annulla",
"Create" : "Crea",
"Create a new file with the selected template" : "Crea un'archìviu nou cun su modellu seletzionadu",
"Creating file" : "Creende s'archìviu",
@@ -210,6 +209,7 @@
"Unlimited" : "Chene lìmites",
"Search users" : "Chirca utentes",
"Cannot transfer ownership of a file or folder you don't own" : "Non faghet a tramudare sa propriedade de un'archìviu o cartella de is chi non ses mere",
+ "Cancel" : "Annulla",
"%s used" : "%s impreadu",
"%1$s of %2$s used" : "%1$s de %2$s impreadu",
"Settings" : "Impostatziones",
diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js
index fc9ec582271..4eebeaa630a 100644
--- a/apps/files/l10n/sk.js
+++ b/apps/files/l10n/sk.js
@@ -192,7 +192,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Nie je možné zmeniť stav „obľúbené“ daného súboru",
"Error while loading the file data" : "Chyba pri načítaní údajov súboru",
"Pick a template for {name}" : "Vyberte šablónu pre {name}",
- "Cancel" : "Zrušiť",
"Create" : "Vytvoriť",
"Create a new file with the selected template" : "Vytvoriť nový súbor pomocou vybranej šablóny",
"Creating file" : "Vyváram súbor",
@@ -226,6 +225,7 @@ OC.L10N.register(
"Unlimited" : "Neobmedzené",
"Search users" : "Hľadať používateľov",
"Cannot transfer ownership of a file or folder you don't own" : "Nie je možné preniesť vlastníctvo súboru alebo priečinka, ktorý nevlastníte",
+ "Cancel" : "Zrušiť",
"%s used" : "%s použitých",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Využité: %1$s z %2$s",
diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json
index b345642c954..26fc9a2a08a 100644
--- a/apps/files/l10n/sk.json
+++ b/apps/files/l10n/sk.json
@@ -190,7 +190,6 @@
"Unable to change the favourite state of the file" : "Nie je možné zmeniť stav „obľúbené“ daného súboru",
"Error while loading the file data" : "Chyba pri načítaní údajov súboru",
"Pick a template for {name}" : "Vyberte šablónu pre {name}",
- "Cancel" : "Zrušiť",
"Create" : "Vytvoriť",
"Create a new file with the selected template" : "Vytvoriť nový súbor pomocou vybranej šablóny",
"Creating file" : "Vyváram súbor",
@@ -224,6 +223,7 @@
"Unlimited" : "Neobmedzené",
"Search users" : "Hľadať používateľov",
"Cannot transfer ownership of a file or folder you don't own" : "Nie je možné preniesť vlastníctvo súboru alebo priečinka, ktorý nevlastníte",
+ "Cancel" : "Zrušiť",
"%s used" : "%s použitých",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Využité: %1$s z %2$s",
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index f94fa81b93f..226ba1d459d 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -178,7 +178,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Ni mogoče spremeniti stanja priljubljenosti datoteke",
"Error while loading the file data" : "Prišlo je do napake med nalaganjem podatkov računa",
"Pick a template for {name}" : "Izbor predloge za {name}",
- "Cancel" : "Prekliči",
"Create" : "Ustvari",
"Create a new file with the selected template" : "Ustvari novo datoteko z izbrano predlogo",
"Creating file" : "Poteka ustvarjanje datoteke",
@@ -212,6 +211,7 @@ OC.L10N.register(
"Unlimited" : "Neomejeno",
"Search users" : "Iskanje uporabnikov",
"Cannot transfer ownership of a file or folder you don't own" : "Ni mogoče prenesti lastništva datotek in map, katerih niste lastnik",
+ "Cancel" : "Prekliči",
"%s used" : "Uporabljeno %s",
"%1$s of %2$s used" : "Uporabljeno %1$s od %2$s",
"Settings" : "Nastavitve",
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index 412dd09c415..c1bb5e2e683 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -176,7 +176,6 @@
"Unable to change the favourite state of the file" : "Ni mogoče spremeniti stanja priljubljenosti datoteke",
"Error while loading the file data" : "Prišlo je do napake med nalaganjem podatkov računa",
"Pick a template for {name}" : "Izbor predloge za {name}",
- "Cancel" : "Prekliči",
"Create" : "Ustvari",
"Create a new file with the selected template" : "Ustvari novo datoteko z izbrano predlogo",
"Creating file" : "Poteka ustvarjanje datoteke",
@@ -210,6 +209,7 @@
"Unlimited" : "Neomejeno",
"Search users" : "Iskanje uporabnikov",
"Cannot transfer ownership of a file or folder you don't own" : "Ni mogoče prenesti lastništva datotek in map, katerih niste lastnik",
+ "Cancel" : "Prekliči",
"%s used" : "Uporabljeno %s",
"%1$s of %2$s used" : "Uporabljeno %1$s od %2$s",
"Settings" : "Nastavitve",
diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js
index c955c336e42..2c0e68d66bf 100644
--- a/apps/files/l10n/sq.js
+++ b/apps/files/l10n/sq.js
@@ -106,7 +106,6 @@ OC.L10N.register(
"Additional settings" : "Konfigurime shtesë",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopjo në dërrasë ",
- "Cancel" : "Anullo",
"Create" : "Krijo",
"Delete permanently" : "Fshije përgjithmonë",
"Upload some content or sync with your devices!" : "Ngarkoni ca lëndë ose bëni njëkohësim me pajisjet tuaja!",
@@ -128,6 +127,7 @@ OC.L10N.register(
"New" : "E re",
"Copied!" : "E kopjuar!",
"Unlimited" : "E palimituar",
+ "Cancel" : "Anullo",
"%s used" : "%s të përdorura",
"%1$s of %2$s used" : "%1$s e %2$s përdorur",
"Settings" : "Rregullime",
diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json
index ac708ef764d..ed23ea8645e 100644
--- a/apps/files/l10n/sq.json
+++ b/apps/files/l10n/sq.json
@@ -104,7 +104,6 @@
"Additional settings" : "Konfigurime shtesë",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopjo në dërrasë ",
- "Cancel" : "Anullo",
"Create" : "Krijo",
"Delete permanently" : "Fshije përgjithmonë",
"Upload some content or sync with your devices!" : "Ngarkoni ca lëndë ose bëni njëkohësim me pajisjet tuaja!",
@@ -126,6 +125,7 @@
"New" : "E re",
"Copied!" : "E kopjuar!",
"Unlimited" : "E palimituar",
+ "Cancel" : "Anullo",
"%s used" : "%s të përdorura",
"%1$s of %2$s used" : "%1$s e %2$s përdorur",
"Settings" : "Rregullime",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index d35a8150333..8ea8b024f28 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Неуспела промена стања омиљености фајла",
"Error while loading the file data" : "Грешка при учитавању података фајла",
"Pick a template for {name}" : "Изаберите шаблон за {name}",
- "Cancel" : "Поништи",
"Create" : "Направи",
"Create a new file with the selected template" : "Креирање новог фајла по изабраном шаблону",
"Creating file" : "Креирање фајла",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Неограничено",
"Search users" : "Претражи кориснике",
"Cannot transfer ownership of a file or folder you don't own" : "Не можете пренети власништво фајла или фасцикле које нису Ваше",
+ "Cancel" : "Поништи",
"%s used" : "%s искоришћено",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Заузето %1$s од %2$s",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index 0f478f45e16..da1f37a7841 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "Неуспела промена стања омиљености фајла",
"Error while loading the file data" : "Грешка при учитавању података фајла",
"Pick a template for {name}" : "Изаберите шаблон за {name}",
- "Cancel" : "Поништи",
"Create" : "Направи",
"Create a new file with the selected template" : "Креирање новог фајла по изабраном шаблону",
"Creating file" : "Креирање фајла",
@@ -256,6 +255,7 @@
"Unlimited" : "Неограничено",
"Search users" : "Претражи кориснике",
"Cannot transfer ownership of a file or folder you don't own" : "Не можете пренети власништво фајла или фасцикле које нису Ваше",
+ "Cancel" : "Поништи",
"%s used" : "%s искоришћено",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Заузето %1$s од %2$s",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index 0a960b93c24..27345acd789 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Kan inte ändra filens favoritstatus",
"Error while loading the file data" : "Fel vid inläsning av fildata",
"Pick a template for {name}" : "Välj en mall för {name}",
- "Cancel" : "Avbryt",
"Create" : "Skapa",
"Create a new file with the selected template" : "Skapa en ny fil med den valda mallen",
"Creating file" : "Skapar fil",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Obegränsad",
"Search users" : "Sök användare",
"Cannot transfer ownership of a file or folder you don't own" : "Det går inte att överföra ägarskap av en fil eller mapp som du inte äger",
+ "Cancel" : "Avbryt",
"%s used" : "%s använt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s av %2$s använt",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index 107c36569f6..1768c2679d3 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "Kan inte ändra filens favoritstatus",
"Error while loading the file data" : "Fel vid inläsning av fildata",
"Pick a template for {name}" : "Välj en mall för {name}",
- "Cancel" : "Avbryt",
"Create" : "Skapa",
"Create a new file with the selected template" : "Skapa en ny fil med den valda mallen",
"Creating file" : "Skapar fil",
@@ -256,6 +255,7 @@
"Unlimited" : "Obegränsad",
"Search users" : "Sök användare",
"Cannot transfer ownership of a file or folder you don't own" : "Det går inte att överföra ägarskap av en fil eller mapp som du inte äger",
+ "Cancel" : "Avbryt",
"%s used" : "%s använt",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "%1$s av %2$s använt",
diff --git a/apps/files/l10n/th.js b/apps/files/l10n/th.js
index 6cf20e63db5..a4c56376c05 100644
--- a/apps/files/l10n/th.js
+++ b/apps/files/l10n/th.js
@@ -197,7 +197,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "ไม่สามารถเปลี่ยนสถานะรายการโปรดของไฟล์",
"Error while loading the file data" : "ข้อผิดพลาดขณะโหลดข้อมูลไฟล์",
"Pick a template for {name}" : "เลือกเทมเพลตสำหรับ {name}",
- "Cancel" : "ยกเลิก",
"Create" : "สร้าง",
"Create a new file with the selected template" : "สร้างไฟล์ใหม่ด้วยเทมเพลตที่เลือก",
"Creating file" : "กำลังสร้างไฟล์",
@@ -231,6 +230,7 @@ OC.L10N.register(
"Unlimited" : "ไม่จำกัด",
"Search users" : "ค้นหาผู้ใช้",
"Cannot transfer ownership of a file or folder you don't own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ",
+ "Cancel" : "ยกเลิก",
"%s used" : "ใช้ไป %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "ใช้ไป %1$s จาก %2$s",
diff --git a/apps/files/l10n/th.json b/apps/files/l10n/th.json
index e06ea17b128..b6fc340af24 100644
--- a/apps/files/l10n/th.json
+++ b/apps/files/l10n/th.json
@@ -195,7 +195,6 @@
"Unable to change the favourite state of the file" : "ไม่สามารถเปลี่ยนสถานะรายการโปรดของไฟล์",
"Error while loading the file data" : "ข้อผิดพลาดขณะโหลดข้อมูลไฟล์",
"Pick a template for {name}" : "เลือกเทมเพลตสำหรับ {name}",
- "Cancel" : "ยกเลิก",
"Create" : "สร้าง",
"Create a new file with the selected template" : "สร้างไฟล์ใหม่ด้วยเทมเพลตที่เลือก",
"Creating file" : "กำลังสร้างไฟล์",
@@ -229,6 +228,7 @@
"Unlimited" : "ไม่จำกัด",
"Search users" : "ค้นหาผู้ใช้",
"Cannot transfer ownership of a file or folder you don't own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ",
+ "Cancel" : "ยกเลิก",
"%s used" : "ใช้ไป %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "ใช้ไป %1$s จาก %2$s",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index 1948442a290..7ac55c3fb33 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -109,6 +109,8 @@ OC.L10N.register(
"Create new folder" : "Klasör ekle",
"Upload file" : "Dosya yükle",
"Recent" : "Son",
+ "This file has the tag {tag}" : "Dosya {tag} olarak etiketlenmiş",
+ "This file has the tags {firstTags} and {lastTag}" : "Dosya {firstTags} ve {lastTag} olarak etiketlenmiş",
"Not favorited" : "Sık kullanılanlarda değil",
"Remove from favorites" : "Sık kullanılanlardan kaldır",
"Add to favorites" : "Sık kullanılanlara ekle",
@@ -221,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Dosyanın sık kullanılan durumu değiştirilemedi",
"Error while loading the file data" : "Dosya verileri yüklenirken sorun çıktı",
"Pick a template for {name}" : "{name} için bir kalıp seçin",
- "Cancel" : "İptal",
"Create" : "Ekle",
"Create a new file with the selected template" : "Seçilmiş kalıp ile yeni bir dosya ekle",
"Creating file" : "Dosya ekleniyor",
@@ -230,6 +231,7 @@ OC.L10N.register(
"Delete permanently" : "Kalıcı olarak sil",
"Set up templates folder" : "Kalıp klasörünü ayarlayın",
"Templates" : "Kalıplar",
+ "Create new templates folder" : "Yeni kalıp klasörü oluştur",
"Unable to initialize the templates directory" : "Kalıp klasörü hazırlanamadı",
"Toggle %1$s sublist" : "%1$s alt listesini aç/kapat",
"Toggle grid view" : "Tablo görünümünü değiştir",
@@ -255,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Sınırsız",
"Search users" : "Kullanıcı arama",
"Cannot transfer ownership of a file or folder you don't own" : "Sahibi olmadığınız bir dosya ya da klasörün sahipliğini aktaramazsınız",
+ "Cancel" : "İptal",
"%s used" : "%s kullanılıyor",
"%s%%" : "%%%s",
"%1$s of %2$s used" : "%1$s / %2$s kullanıldı",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 9a6dfb0505c..c24275a142a 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -107,6 +107,8 @@
"Create new folder" : "Klasör ekle",
"Upload file" : "Dosya yükle",
"Recent" : "Son",
+ "This file has the tag {tag}" : "Dosya {tag} olarak etiketlenmiş",
+ "This file has the tags {firstTags} and {lastTag}" : "Dosya {firstTags} ve {lastTag} olarak etiketlenmiş",
"Not favorited" : "Sık kullanılanlarda değil",
"Remove from favorites" : "Sık kullanılanlardan kaldır",
"Add to favorites" : "Sık kullanılanlara ekle",
@@ -219,7 +221,6 @@
"Unable to change the favourite state of the file" : "Dosyanın sık kullanılan durumu değiştirilemedi",
"Error while loading the file data" : "Dosya verileri yüklenirken sorun çıktı",
"Pick a template for {name}" : "{name} için bir kalıp seçin",
- "Cancel" : "İptal",
"Create" : "Ekle",
"Create a new file with the selected template" : "Seçilmiş kalıp ile yeni bir dosya ekle",
"Creating file" : "Dosya ekleniyor",
@@ -228,6 +229,7 @@
"Delete permanently" : "Kalıcı olarak sil",
"Set up templates folder" : "Kalıp klasörünü ayarlayın",
"Templates" : "Kalıplar",
+ "Create new templates folder" : "Yeni kalıp klasörü oluştur",
"Unable to initialize the templates directory" : "Kalıp klasörü hazırlanamadı",
"Toggle %1$s sublist" : "%1$s alt listesini aç/kapat",
"Toggle grid view" : "Tablo görünümünü değiştir",
@@ -253,6 +255,7 @@
"Unlimited" : "Sınırsız",
"Search users" : "Kullanıcı arama",
"Cannot transfer ownership of a file or folder you don't own" : "Sahibi olmadığınız bir dosya ya da klasörün sahipliğini aktaramazsınız",
+ "Cancel" : "İptal",
"%s used" : "%s kullanılıyor",
"%s%%" : "%%%s",
"%1$s of %2$s used" : "%1$s / %2$s kullanıldı",
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index 3ec993ffd2c..f296aaa86f2 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -109,6 +109,8 @@ OC.L10N.register(
"Create new folder" : "Створити новий каталог",
"Upload file" : "Завантажити файл",
"Recent" : "Останні",
+ "This file has the tag {tag}" : "Цей файл має тег {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "Цей файл має теги {firstTags} та {lastTag}",
"Not favorited" : "Без зірочки",
"Remove from favorites" : "Прибрати з вподобаного",
"Add to favorites" : "Вподобати",
@@ -221,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "Неможливо змінити стан \"вподобано\" для цього файла",
"Error while loading the file data" : "Помилка під час завантаження даних про файл",
"Pick a template for {name}" : "Вибрати шаблон для {name}",
- "Cancel" : "Скасувати",
"Create" : "Створити",
"Create a new file with the selected template" : "Створити новий файл на основі вибраного шаблону",
"Creating file" : "Створення файлу",
@@ -230,6 +231,7 @@ OC.L10N.register(
"Delete permanently" : "Вилучити назавжди",
"Set up templates folder" : "Встановити каталог з шаблонами",
"Templates" : "Шаблони",
+ "Create new templates folder" : "Створіть нову папку шаблонів",
"Unable to initialize the templates directory" : "Неможливо встановити каталог з шаблонами",
"Toggle %1$s sublist" : "Перемкнути вкладений список %1$s",
"Toggle grid view" : "Перемкнути подання сіткою",
@@ -255,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "Необмежено",
"Search users" : "Пошук користувачів",
"Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або каталог, що вам не належить",
+ "Cancel" : "Скасувати",
"%s used" : "%s використано",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Використано %1$s із %2$s",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index 5ea26244c66..07ede91efcc 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -107,6 +107,8 @@
"Create new folder" : "Створити новий каталог",
"Upload file" : "Завантажити файл",
"Recent" : "Останні",
+ "This file has the tag {tag}" : "Цей файл має тег {tag}",
+ "This file has the tags {firstTags} and {lastTag}" : "Цей файл має теги {firstTags} та {lastTag}",
"Not favorited" : "Без зірочки",
"Remove from favorites" : "Прибрати з вподобаного",
"Add to favorites" : "Вподобати",
@@ -219,7 +221,6 @@
"Unable to change the favourite state of the file" : "Неможливо змінити стан \"вподобано\" для цього файла",
"Error while loading the file data" : "Помилка під час завантаження даних про файл",
"Pick a template for {name}" : "Вибрати шаблон для {name}",
- "Cancel" : "Скасувати",
"Create" : "Створити",
"Create a new file with the selected template" : "Створити новий файл на основі вибраного шаблону",
"Creating file" : "Створення файлу",
@@ -228,6 +229,7 @@
"Delete permanently" : "Вилучити назавжди",
"Set up templates folder" : "Встановити каталог з шаблонами",
"Templates" : "Шаблони",
+ "Create new templates folder" : "Створіть нову папку шаблонів",
"Unable to initialize the templates directory" : "Неможливо встановити каталог з шаблонами",
"Toggle %1$s sublist" : "Перемкнути вкладений список %1$s",
"Toggle grid view" : "Перемкнути подання сіткою",
@@ -253,6 +255,7 @@
"Unlimited" : "Необмежено",
"Search users" : "Пошук користувачів",
"Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або каталог, що вам не належить",
+ "Cancel" : "Скасувати",
"%s used" : "%s використано",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "Використано %1$s із %2$s",
diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js
index 0555d27f525..1b36d9afeb5 100644
--- a/apps/files/l10n/vi.js
+++ b/apps/files/l10n/vi.js
@@ -177,7 +177,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "‎Không thể thay đổi trạng thái yêu thích của tệp‎",
"Error while loading the file data" : "‎Lỗi xảy ra trong khi tải dữ liệu tệp‎",
"Pick a template for {name}" : "‎Chọn một mẫu cho {name}‎",
- "Cancel" : "‎Hủy bỏ‎",
"Create" : "‎Tạo‎",
"Create a new file with the selected template" : "‎Tạo tệp mới với mẫu đã chọn‎",
"Creating file" : "‎Tạo tệp‎",
@@ -210,6 +209,7 @@ OC.L10N.register(
"Unlimited" : "Không giới hạn",
"Search users" : "‎Tìm kiếm người dùng‎",
"Cannot transfer ownership of a file or folder you don't own" : "‎Không thể chuyển quyền sở hữu tệp hoặc thư mục bạn không sở hữu‎",
+ "Cancel" : "‎Hủy bỏ‎",
"%s used" : "%s ‎đã sử dụng‎",
"%1$s of %2$s used" : "%1$s trên %2$s đã sử dụng",
"Settings" : "Cài đặt",
diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json
index cff0a4e0871..b19c4152802 100644
--- a/apps/files/l10n/vi.json
+++ b/apps/files/l10n/vi.json
@@ -175,7 +175,6 @@
"Unable to change the favourite state of the file" : "‎Không thể thay đổi trạng thái yêu thích của tệp‎",
"Error while loading the file data" : "‎Lỗi xảy ra trong khi tải dữ liệu tệp‎",
"Pick a template for {name}" : "‎Chọn một mẫu cho {name}‎",
- "Cancel" : "‎Hủy bỏ‎",
"Create" : "‎Tạo‎",
"Create a new file with the selected template" : "‎Tạo tệp mới với mẫu đã chọn‎",
"Creating file" : "‎Tạo tệp‎",
@@ -208,6 +207,7 @@
"Unlimited" : "Không giới hạn",
"Search users" : "‎Tìm kiếm người dùng‎",
"Cannot transfer ownership of a file or folder you don't own" : "‎Không thể chuyển quyền sở hữu tệp hoặc thư mục bạn không sở hữu‎",
+ "Cancel" : "‎Hủy bỏ‎",
"%s used" : "%s ‎đã sử dụng‎",
"%1$s of %2$s used" : "%1$s trên %2$s đã sử dụng",
"Settings" : "Cài đặt",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 0d6978e5fbd..6991728aeba 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -109,6 +109,8 @@ OC.L10N.register(
"Create new folder" : "创建新文件夹",
"Upload file" : "上传文件",
"Recent" : "最近",
+ "This file has the tag {tag}" : "这个文件有 {tag} 标签",
+ "This file has the tags {firstTags} and {lastTag}" : "这个文件有 {firstTags} 和 {lastTag} 标签",
"Not favorited" : "未收藏",
"Remove from favorites" : "从收藏中移除",
"Add to favorites" : "添加到收藏夹",
@@ -174,11 +176,15 @@ OC.L10N.register(
"Download file {name}" : "下载文件 {name}",
"\"{displayName}\" action executed successfully" : "\"{displayName}\" 操作执行成功",
"\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败",
+ "Total rows summary" : "总行摘要",
"Select all" : "全部选择",
"Unselect all" : "取消全选",
+ "\"{displayName}\" failed on some elements " : "“{displayName}”在某些元素上失败",
+ "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功",
"ascending" : "升序",
"descending" : "降序",
"Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。",
"Storage informations" : "存储信息",
"{usedQuotaByte} used" : "{usedQuotaByte} 已使用",
"{relative}% used" : "{relative}% 已使用",
@@ -187,6 +193,7 @@ OC.L10N.register(
"Choose file or folder to transfer" : "选择要转移的文件或文件夹",
"Change" : "修改",
"New owner" : "新的拥有者",
+ "Search for an account" : "搜索一个账户",
"Choose a file or folder to transfer" : "选择要转移的文件或文件夹",
"Transfer" : "转移",
"Transfer {path} to {userid}" : "将 {path} 转移给 {userid}",
@@ -216,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "无法修改文件的收藏状态",
"Error while loading the file data" : "加载文件数据时出错",
"Pick a template for {name}" : "给 {name} 挑选一个模板",
- "Cancel" : "取消",
"Create" : "创建",
"Create a new file with the selected template" : "用所选模板创建一个新文件",
"Creating file" : "正在创建文件",
@@ -225,6 +231,7 @@ OC.L10N.register(
"Delete permanently" : "彻底删除",
"Set up templates folder" : "设置模板文件夹",
"Templates" : "模板",
+ "Create new templates folder" : "新建模板文件夹",
"Unable to initialize the templates directory" : "无法初始化模板目录",
"Toggle %1$s sublist" : "切换 %1$s 子列表",
"Toggle grid view" : "切换网格视图",
@@ -250,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "无限制",
"Search users" : "搜索用户",
"Cannot transfer ownership of a file or folder you don't own" : "无法转让您未拥有的文件或文件夹的所有权",
+ "Cancel" : "取消",
"%s used" : "已使用 %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "已使用 %2$s 中的 %1$s",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 97a7c05d76c..3b848376b96 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -107,6 +107,8 @@
"Create new folder" : "创建新文件夹",
"Upload file" : "上传文件",
"Recent" : "最近",
+ "This file has the tag {tag}" : "这个文件有 {tag} 标签",
+ "This file has the tags {firstTags} and {lastTag}" : "这个文件有 {firstTags} 和 {lastTag} 标签",
"Not favorited" : "未收藏",
"Remove from favorites" : "从收藏中移除",
"Add to favorites" : "添加到收藏夹",
@@ -172,11 +174,15 @@
"Download file {name}" : "下载文件 {name}",
"\"{displayName}\" action executed successfully" : "\"{displayName}\" 操作执行成功",
"\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败",
+ "Total rows summary" : "总行摘要",
"Select all" : "全部选择",
"Unselect all" : "取消全选",
+ "\"{displayName}\" failed on some elements " : "“{displayName}”在某些元素上失败",
+ "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功",
"ascending" : "升序",
"descending" : "降序",
"Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。",
"Storage informations" : "存储信息",
"{usedQuotaByte} used" : "{usedQuotaByte} 已使用",
"{relative}% used" : "{relative}% 已使用",
@@ -185,6 +191,7 @@
"Choose file or folder to transfer" : "选择要转移的文件或文件夹",
"Change" : "修改",
"New owner" : "新的拥有者",
+ "Search for an account" : "搜索一个账户",
"Choose a file or folder to transfer" : "选择要转移的文件或文件夹",
"Transfer" : "转移",
"Transfer {path} to {userid}" : "将 {path} 转移给 {userid}",
@@ -214,7 +221,6 @@
"Unable to change the favourite state of the file" : "无法修改文件的收藏状态",
"Error while loading the file data" : "加载文件数据时出错",
"Pick a template for {name}" : "给 {name} 挑选一个模板",
- "Cancel" : "取消",
"Create" : "创建",
"Create a new file with the selected template" : "用所选模板创建一个新文件",
"Creating file" : "正在创建文件",
@@ -223,6 +229,7 @@
"Delete permanently" : "彻底删除",
"Set up templates folder" : "设置模板文件夹",
"Templates" : "模板",
+ "Create new templates folder" : "新建模板文件夹",
"Unable to initialize the templates directory" : "无法初始化模板目录",
"Toggle %1$s sublist" : "切换 %1$s 子列表",
"Toggle grid view" : "切换网格视图",
@@ -248,6 +255,7 @@
"Unlimited" : "无限制",
"Search users" : "搜索用户",
"Cannot transfer ownership of a file or folder you don't own" : "无法转让您未拥有的文件或文件夹的所有权",
+ "Cancel" : "取消",
"%s used" : "已使用 %s",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "已使用 %2$s 中的 %1$s",
diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js
index c51b90cebe2..7c7b266f1de 100644
--- a/apps/files/l10n/zh_HK.js
+++ b/apps/files/l10n/zh_HK.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "無法更改檔案的最愛狀態",
"Error while loading the file data" : "載入檔案資料失敗",
"Pick a template for {name}" : "為 {name} 選擇一個模板",
- "Cancel" : "取消",
"Create" : "創建",
"Create a new file with the selected template" : "使用所選模板創建一個新檔案",
"Creating file" : "創建檔案中",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "無限制",
"Search users" : "搜尋用戶",
"Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權。",
+ "Cancel" : "取消",
"%s used" : "使用了 %s 的存儲空間",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "在 %2$s 中使用了 %1$s",
diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json
index 33e803bfdd6..4a9a3c3ac7a 100644
--- a/apps/files/l10n/zh_HK.json
+++ b/apps/files/l10n/zh_HK.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "無法更改檔案的最愛狀態",
"Error while loading the file data" : "載入檔案資料失敗",
"Pick a template for {name}" : "為 {name} 選擇一個模板",
- "Cancel" : "取消",
"Create" : "創建",
"Create a new file with the selected template" : "使用所選模板創建一個新檔案",
"Creating file" : "創建檔案中",
@@ -256,6 +255,7 @@
"Unlimited" : "無限制",
"Search users" : "搜尋用戶",
"Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權。",
+ "Cancel" : "取消",
"%s used" : "使用了 %s 的存儲空間",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "在 %2$s 中使用了 %1$s",
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index e355981a55d..bdf4ec63033 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"Unable to change the favourite state of the file" : "無法更改檔案的最愛狀態",
"Error while loading the file data" : "載入檔案資料時發生錯誤",
"Pick a template for {name}" : "為 {name} 挑選範本",
- "Cancel" : "取消",
"Create" : "建立",
"Create a new file with the selected template" : "使用選定的範本建立新檔案",
"Creating file" : "正在建立檔案",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Unlimited" : "無限制",
"Search users" : "搜尋使用者",
"Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權",
+ "Cancel" : "取消",
"%s used" : "%s 已使用",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "在 %2$s 中使用了 %1$s ",
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index de27a821848..f204f2214e7 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -221,7 +221,6 @@
"Unable to change the favourite state of the file" : "無法更改檔案的最愛狀態",
"Error while loading the file data" : "載入檔案資料時發生錯誤",
"Pick a template for {name}" : "為 {name} 挑選範本",
- "Cancel" : "取消",
"Create" : "建立",
"Create a new file with the selected template" : "使用選定的範本建立新檔案",
"Creating file" : "正在建立檔案",
@@ -256,6 +255,7 @@
"Unlimited" : "無限制",
"Search users" : "搜尋使用者",
"Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權",
+ "Cancel" : "取消",
"%s used" : "%s 已使用",
"%s%%" : "%s%%",
"%1$s of %2$s used" : "在 %2$s 中使用了 %1$s ",
diff --git a/apps/files/lib/Command/Delete.php b/apps/files/lib/Command/Delete.php
new file mode 100644
index 00000000000..da535568702
--- /dev/null
+++ b/apps/files/lib/Command/Delete.php
@@ -0,0 +1,116 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2023 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Files\Command;
+
+use OC\Core\Command\Info\FileUtils;
+use OCA\Files_Sharing\SharedStorage;
+use OCP\Files\Folder;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Helper\QuestionHelper;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ConfirmationQuestion;
+
+class Delete extends Command {
+ private FileUtils $fileUtils;
+
+ public function __construct(FileUtils $fileUtils) {
+ $this->fileUtils = $fileUtils;
+ parent::__construct();
+ }
+
+ protected function configure(): void {
+ $this
+ ->setName('files:delete')
+ ->setDescription('Delete a file or folder')
+ ->addArgument('file', InputArgument::REQUIRED, "File id or path")
+ ->addOption('force', 'f', InputOption::VALUE_NONE, "Don't ask for configuration and don't output any warnings");
+ }
+
+ public function execute(InputInterface $input, OutputInterface $output): int {
+ $fileInput = $input->getArgument('file');
+ $inputIsId = is_numeric($fileInput);
+ $force = $input->getOption('force');
+ $node = $this->fileUtils->getNode($fileInput);
+
+ if (!$node) {
+ $output->writeln("<error>file $fileInput not found</error>");
+ return 1;
+ }
+
+ $deleteConfirmed = $force;
+ if (!$deleteConfirmed) {
+ /** @var QuestionHelper $helper */
+ $helper = $this->getHelper('question');
+ $storage = $node->getStorage();
+ if (!$inputIsId && $storage->instanceOfStorage(SharedStorage::class) && $node->getInternalPath() === '') {
+ /** @var SharedStorage $storage */
+ [,$user] = explode('/', $fileInput, 3);
+ $question = new ConfirmationQuestion("<info>$fileInput</info> in a shared file, do you want to unshare the file from <info>$user</info> instead of deleting the source file? [Y/n] ", true);
+ if ($helper->ask($input, $output, $question)) {
+ $storage->unshareStorage();
+ return 0;
+ } else {
+ $node = $storage->getShare()->getNode();
+ $output->writeln("");
+ }
+ }
+
+ $filesByUsers = $this->fileUtils->getFilesByUser($node);
+ if (count($filesByUsers) > 1) {
+ $output->writeln("Warning: the provided file is accessible by more than one user");
+ $output->writeln(" all of the following users will lose access to the file when deleted:");
+ $output->writeln("");
+ foreach ($filesByUsers as $user => $filesByUser) {
+ $output->writeln($user . ":");
+ foreach($filesByUser as $file) {
+ $output->writeln(" - " . $file->getPath());
+ }
+ }
+ $output->writeln("");
+ }
+
+ if ($node instanceof Folder) {
+ $maybeContents = " and all it's contents";
+ } else {
+ $maybeContents = "";
+ }
+ $question = new ConfirmationQuestion("Delete " . $node->getPath() . $maybeContents . "? [y/N] ", false);
+ $deleteConfirmed = $helper->ask($input, $output, $question);
+ }
+
+ if ($deleteConfirmed) {
+ if ($node->isDeletable()) {
+ $node->delete();
+ } else {
+ $output->writeln("<error>File cannot be deleted, insufficient permissions.</error>");
+ }
+ }
+
+ return 0;
+ }
+
+}
diff --git a/apps/files/lib/Command/Get.php b/apps/files/lib/Command/Get.php
new file mode 100644
index 00000000000..7bdb4cb59ee
--- /dev/null
+++ b/apps/files/lib/Command/Get.php
@@ -0,0 +1,89 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2023 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Files\Command;
+
+
+use OC\Core\Command\Info\FileUtils;
+use OCP\Files\File;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Get extends Command {
+ private FileUtils $fileUtils;
+
+ public function __construct(FileUtils $fileUtils) {
+ $this->fileUtils = $fileUtils;
+ parent::__construct();
+ }
+
+ protected function configure(): void {
+ $this
+ ->setName('files:get')
+ ->setDescription('Get the contents of a file')
+ ->addArgument('file', InputArgument::REQUIRED, "Source file id or Nextcloud path")
+ ->addArgument('output', InputArgument::OPTIONAL, "Target local file to output to, defaults to STDOUT");
+ }
+
+ public function execute(InputInterface $input, OutputInterface $output): int {
+ $fileInput = $input->getArgument('file');
+ $outputName = $input->getArgument('output');
+ $node = $this->fileUtils->getNode($fileInput);
+
+ if (!$node) {
+ $output->writeln("<error>file $fileInput not found</error>");
+ return 1;
+ }
+
+ if ($node instanceof File) {
+ $isTTY = stream_isatty(STDOUT);
+ if ($outputName === null && $isTTY && $node->getMimePart() !== 'text') {
+ $output->writeln([
+ "<error>Warning: Binary output can mess up your terminal</error>",
+ " Use <info>occ files:get $fileInput -</info> to output it to the terminal anyway",
+ " Or <info>occ files:get $fileInput <FILE></info> to save to a file instead"
+ ]);
+ return 1;
+ }
+ $source = $node->fopen('r');
+ if (!$source) {
+ $output->writeln("<error>Failed to open $fileInput for reading</error>");
+ return 1;
+ }
+ $target = ($outputName === null || $outputName === '-') ? STDOUT : fopen($outputName, 'w');
+ if (!$target) {
+ $output->writeln("<error>Failed to open $outputName for reading</error>");
+ return 1;
+ }
+
+ stream_copy_to_stream($source, $target);
+ return 0;
+ } else {
+ $output->writeln("<error>$fileInput is a directory</error>");
+ return 1;
+ }
+ }
+
+}
diff --git a/apps/files/lib/Command/Put.php b/apps/files/lib/Command/Put.php
new file mode 100644
index 00000000000..f89ab8fb436
--- /dev/null
+++ b/apps/files/lib/Command/Put.php
@@ -0,0 +1,86 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2023 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Files\Command;
+
+
+use OC\Core\Command\Info\FileUtils;
+use OCP\Files\File;
+use OCP\Files\Folder;
+use OCP\Files\IRootFolder;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Put extends Command {
+ private FileUtils $fileUtils;
+ private IRootFolder $rootFolder;
+
+ public function __construct(FileUtils $fileUtils, IRootFolder $rootFolder) {
+ $this->fileUtils = $fileUtils;
+ $this->rootFolder = $rootFolder;
+ parent::__construct();
+ }
+
+ protected function configure(): void {
+ $this
+ ->setName('files:put')
+ ->setDescription('Write contents of a file')
+ ->addArgument('input', InputArgument::REQUIRED, "Source local path, use - to read from STDIN")
+ ->addArgument('file', InputArgument::REQUIRED, "Target Nextcloud file path to write to or fileid of existing file");
+ }
+
+ public function execute(InputInterface $input, OutputInterface $output): int {
+ $fileOutput = $input->getArgument('file');
+ $inputName = $input->getArgument('input');
+ $node = $this->fileUtils->getNode($fileOutput);
+
+ if ($node instanceof Folder) {
+ $output->writeln("<error>$fileOutput is a folder</error>");
+ return 1;
+ }
+ if (!$node and is_numeric($fileOutput)) {
+ $output->writeln("<error>$fileOutput not found</error>");
+ return 1;
+ }
+
+ $source = ($inputName === null || $inputName === '-') ? STDIN : fopen($inputName, 'r');
+ if (!$source) {
+ $output->writeln("<error>Failed to open $inputName</error>");
+ return 1;
+ }
+ if ($node instanceof File) {
+ $target = $node->fopen('w');
+ if (!$target) {
+ $output->writeln("<error>Failed to open $fileOutput</error>");
+ return 1;
+ }
+ stream_copy_to_stream($source, $target);
+ } else {
+ $this->rootFolder->newFile($fileOutput, $source);
+ }
+ return 0;
+ }
+
+}
diff --git a/apps/files/lib/Command/Scan.php b/apps/files/lib/Command/Scan.php
index a59665c56e9..6c7a607d2af 100644
--- a/apps/files/lib/Command/Scan.php
+++ b/apps/files/lib/Command/Scan.php
@@ -58,6 +58,7 @@ class Scan extends Base {
protected float $execTime = 0;
protected int $foldersCounter = 0;
protected int $filesCounter = 0;
+ protected int $errorsCounter = 0;
private IRootFolder $root;
private MetadataManager $metadataManager;
@@ -148,10 +149,12 @@ class Scan extends Base {
$scanner->listen('\OC\Files\Utils\Scanner', 'StorageNotAvailable', function (StorageNotAvailableException $e) use ($output) {
$output->writeln('Error while scanning, storage not available (' . $e->getMessage() . ')', OutputInterface::VERBOSITY_VERBOSE);
+ ++$this->errorsCounter;
});
$scanner->listen('\OC\Files\Utils\Scanner', 'normalizedNameMismatch', function ($fullPath) use ($output) {
$output->writeln("\t<error>Entry \"" . $fullPath . '" will not be accessible due to incompatible encoding</error>');
+ ++$this->errorsCounter;
});
try {
@@ -164,14 +167,17 @@ class Scan extends Base {
$output->writeln("<error>Home storage for user $user not writable or 'files' subdirectory missing</error>");
$output->writeln(' ' . $e->getMessage());
$output->writeln('Make sure you\'re running the scan command only as the user the web server runs as');
+ ++$this->errorsCounter;
} catch (InterruptedException $e) {
# exit the function if ctrl-c has been pressed
$output->writeln('Interrupted by user');
} catch (NotFoundException $e) {
$output->writeln('<error>Path not found: ' . $e->getMessage() . '</error>');
+ ++$this->errorsCounter;
} catch (\Exception $e) {
$output->writeln('<error>Exception during scan: ' . $e->getMessage() . '</error>');
$output->writeln('<error>' . $e->getTraceAsString() . '</error>');
+ ++$this->errorsCounter;
}
}
@@ -192,11 +198,6 @@ class Scan extends Base {
$users = $input->getArgument('user_id');
}
- # restrict the verbosity level to VERBOSITY_VERBOSE
- if ($output->getVerbosity() > OutputInterface::VERBOSITY_VERBOSE) {
- $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE);
- }
-
# check quantity of users to be process and show it on the command line
$users_total = count($users);
if ($users_total === 0) {
@@ -204,7 +205,7 @@ class Scan extends Base {
return 1;
}
- $this->initTools();
+ $this->initTools($output);
$user_count = 0;
foreach ($users as $user) {
@@ -236,15 +237,19 @@ class Scan extends Base {
/**
* Initialises some useful tools for the Command
*/
- protected function initTools() {
+ protected function initTools(OutputInterface $output) {
// Start the timer
$this->execTime = -microtime(true);
// Convert PHP errors to exceptions
- set_error_handler([$this, 'exceptionErrorHandler'], E_ALL);
+ set_error_handler(
+ fn (int $severity, string $message, string $file, int $line): bool =>
+ $this->exceptionErrorHandler($output, $severity, $message, $file, $line),
+ E_ALL
+ );
}
/**
- * Processes PHP errors as exceptions in order to be able to keep track of problems
+ * Processes PHP errors in order to be able to show them in the output
*
* @see https://www.php.net/manual/en/function.set-error-handler.php
*
@@ -252,15 +257,17 @@ class Scan extends Base {
* @param string $message
* @param string $file the filename that the error was raised in
* @param int $line the line number the error was raised
- *
- * @throws \ErrorException
*/
- public function exceptionErrorHandler($severity, $message, $file, $line) {
- if (!(error_reporting() & $severity)) {
- // This error code is not included in error_reporting
- return;
+ public function exceptionErrorHandler(OutputInterface $output, int $severity, string $message, string $file, int $line): bool {
+ if (($severity === E_DEPRECATED) || ($severity === E_USER_DEPRECATED)) {
+ // Do not show deprecation warnings
+ return false;
}
- throw new \ErrorException($message, 0, $severity, $file, $line);
+ $e = new \ErrorException($message, 0, $severity, $file, $line);
+ $output->writeln('<error>Error during scan: ' . $e->getMessage() . '</error>');
+ $output->writeln('<error>' . $e->getTraceAsString() . '</error>', OutputInterface::VERBOSITY_VERY_VERBOSE);
+ ++$this->errorsCounter;
+ return true;
}
/**
@@ -271,28 +278,18 @@ class Scan extends Base {
$this->execTime += microtime(true);
$headers = [
- 'Folders', 'Files', 'Elapsed time'
+ 'Folders',
+ 'Files',
+ 'Errors',
+ 'Elapsed time',
];
-
- $this->showSummary($headers, null, $output);
- }
-
- /**
- * Shows a summary of operations
- *
- * @param string[] $headers
- * @param string[] $rows
- * @param OutputInterface $output
- */
- protected function showSummary($headers, $rows, OutputInterface $output) {
$niceDate = $this->formatExecTime();
- if (!$rows) {
- $rows = [
- $this->foldersCounter,
- $this->filesCounter,
- $niceDate,
- ];
- }
+ $rows = [
+ $this->foldersCounter,
+ $this->filesCounter,
+ $this->errorsCounter,
+ $niceDate,
+ ];
$table = new Table($output);
$table
->setHeaders($headers)
diff --git a/apps/files/src/components/TemplatePreview.vue b/apps/files/src/components/TemplatePreview.vue
index 832e4d9dda2..9b7827e1ebe 100644
--- a/apps/files/src/components/TemplatePreview.vue
+++ b/apps/files/src/components/TemplatePreview.vue
@@ -182,7 +182,7 @@ export default {
border-radius: var(--border-radius-large);
input:checked + label > & {
- border-color: var(--color-primary);
+ border-color: var(--color-primary-element);
}
&--failed {
diff --git a/apps/files/src/views/FileReferencePickerElement.vue b/apps/files/src/views/FileReferencePickerElement.vue
index 543dba3350d..0aa6678f121 100644
--- a/apps/files/src/views/FileReferencePickerElement.vue
+++ b/apps/files/src/views/FileReferencePickerElement.vue
@@ -84,7 +84,7 @@ export default {
<style scoped lang="scss">
.reference-file-picker {
flex-grow: 1;
- margin-top: 44px;
+ padding: 12px 16px 16px 16px;
&:deep(.oc-dialog) {
transform: none !important;
diff --git a/apps/files/src/views/TemplatePicker.vue b/apps/files/src/views/TemplatePicker.vue
index 79264d56074..a6bb9809b10 100644
--- a/apps/files/src/views/TemplatePicker.vue
+++ b/apps/files/src/views/TemplatePicker.vue
@@ -24,7 +24,7 @@
<NcModal v-if="opened"
:clear-view-delay="-1"
class="templates-picker"
- size="normal"
+ size="large"
@close="close">
<form class="templates-picker__form"
:style="style"
@@ -47,9 +47,6 @@
<!-- Cancel and submit -->
<div class="templates-picker__buttons">
- <button @click="close">
- {{ t('files', 'Cancel') }}
- </button>
<input type="submit"
class="primary"
:value="t('files', 'Create')"
@@ -75,7 +72,6 @@ import TemplatePreview from '../components/TemplatePreview.vue'
const border = 2
const margin = 8
-const width = margin * 20
export default {
name: 'TemplatePicker',
@@ -136,6 +132,11 @@ export default {
* @return {object}
*/
style() {
+ // Fallback to 16:9 landscape ratio
+ const ratio = this.provider.ratio ? this.provider.ratio : 1.77
+ // Landscape templates should be wider than tall ones
+ // We fit 3 templates per row at max for landscape and 4 for portrait
+ const width = ratio > 1 ? margin * 30 : margin * 20
return {
'--margin': margin + 'px',
'--width': width + 'px',
@@ -275,7 +276,7 @@ export default {
&__buttons {
display: flex;
- justify-content: space-between;
+ justify-content: end;
padding: calc(var(--margin) * 2) var(--margin);
position: sticky;
bottom: 0;
diff --git a/apps/files_external/3rdparty/autoload.php b/apps/files_external/3rdparty/autoload.php
index 28026e9da6b..d3359ad45d9 100644
--- a/apps/files_external/3rdparty/autoload.php
+++ b/apps/files_external/3rdparty/autoload.php
@@ -3,8 +3,21 @@
// autoload.php @generated by Composer
if (PHP_VERSION_ID < 50600) {
- echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
- exit(1);
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, $err);
+ } elseif (!headers_sent()) {
+ echo $err;
+ }
+ }
+ trigger_error(
+ $err,
+ E_USER_ERROR
+ );
}
require_once __DIR__ . '/composer/autoload_real.php';
diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json
index ff102e7c3ec..348e482c2c3 100644
--- a/apps/files_external/3rdparty/composer.json
+++ b/apps/files_external/3rdparty/composer.json
@@ -8,7 +8,7 @@
"classmap-authoritative": true
},
"require": {
- "icewind/streams": "0.7.4",
- "icewind/smb": "3.5.4"
+ "icewind/smb": "3.5.4",
+ "icewind/streams": "0.7.7"
}
}
diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock
index a9b699e2c55..281fdef3e23 100644
--- a/apps/files_external/3rdparty/composer.lock
+++ b/apps/files_external/3rdparty/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "5d34e39627716fec1b5b11ab6a667e53",
+ "content-hash": "1419e286d2372dfbce44dd73ddbab2ff",
"packages": [
{
"name": "icewind/smb",
@@ -55,16 +55,16 @@
},
{
"name": "icewind/streams",
- "version": "v0.7.4",
+ "version": "v0.7.7",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/Streams.git",
- "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c"
+ "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/Streams/zipball/93bce472202d36d9808c30eaa52a1dc72b39e04c",
- "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c",
+ "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb",
+ "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb",
"shasum": ""
},
"require": {
@@ -94,9 +94,9 @@
"description": "A set of generic stream wrappers",
"support": {
"issues": "https://github.com/icewind1991/Streams/issues",
- "source": "https://github.com/icewind1991/Streams/tree/v0.7.4"
+ "source": "https://github.com/icewind1991/Streams/tree/v0.7.7"
},
- "time": "2021-03-12T15:48:22+00:00"
+ "time": "2023-03-16T14:52:25+00:00"
}
],
"packages-dev": [],
diff --git a/apps/files_external/3rdparty/composer/ClassLoader.php b/apps/files_external/3rdparty/composer/ClassLoader.php
index afef3fa2ad8..a72151c77c8 100644
--- a/apps/files_external/3rdparty/composer/ClassLoader.php
+++ b/apps/files_external/3rdparty/composer/ClassLoader.php
@@ -42,6 +42,9 @@ namespace Composer\Autoload;
*/
class ClassLoader
{
+ /** @var \Closure(string):void */
+ private static $includeFile;
+
/** @var ?string */
private $vendorDir;
@@ -106,6 +109,7 @@ class ClassLoader
public function __construct($vendorDir = null)
{
$this->vendorDir = $vendorDir;
+ self::initializeIncludeClosure();
}
/**
@@ -425,7 +429,8 @@ class ClassLoader
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
- includeFile($file);
+ $includeFile = self::$includeFile;
+ $includeFile($file);
return true;
}
@@ -555,18 +560,26 @@ class ClassLoader
return false;
}
-}
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- *
- * @param string $file
- * @return void
- * @private
- */
-function includeFile($file)
-{
- include $file;
+ /**
+ * @return void
+ */
+ private static function initializeIncludeClosure()
+ {
+ if (self::$includeFile !== null) {
+ return;
+ }
+
+ /**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ */
+ self::$includeFile = \Closure::bind(static function($file) {
+ include $file;
+ }, null, null);
+ }
}
diff --git a/apps/files_external/3rdparty/composer/InstalledVersions.php b/apps/files_external/3rdparty/composer/InstalledVersions.php
index 41bc143c114..51e734a774b 100644
--- a/apps/files_external/3rdparty/composer/InstalledVersions.php
+++ b/apps/files_external/3rdparty/composer/InstalledVersions.php
@@ -28,7 +28,7 @@ class InstalledVersions
{
/**
* @var mixed[]|null
- * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
@@ -39,7 +39,7 @@ class InstalledVersions
/**
* @var array[]
- * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+ * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
private static $installedByVendor = array();
@@ -98,7 +98,7 @@ class InstalledVersions
{
foreach (self::getInstalled() as $installed) {
if (isset($installed['versions'][$packageName])) {
- return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+ return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
}
}
@@ -119,7 +119,7 @@ class InstalledVersions
*/
public static function satisfies(VersionParser $parser, $packageName, $constraint)
{
- $constraint = $parser->parseConstraints($constraint);
+ $constraint = $parser->parseConstraints((string) $constraint);
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
return $provided->matches($constraint);
@@ -243,7 +243,7 @@ class InstalledVersions
/**
* @return array
- * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
*/
public static function getRootPackage()
{
@@ -257,7 +257,7 @@ class InstalledVersions
*
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
* @return array[]
- * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
*/
public static function getRawData()
{
@@ -280,7 +280,7 @@ class InstalledVersions
* Returns the raw data of all installed.php which are currently loaded for custom implementations
*
* @return array[]
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
public static function getAllRawData()
{
@@ -303,7 +303,7 @@ class InstalledVersions
* @param array[] $data A vendor/composer/installed.php data set
* @return void
*
- * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
*/
public static function reload($data)
{
@@ -313,7 +313,7 @@ class InstalledVersions
/**
* @return array[]
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
private static function getInstalled()
{
@@ -328,7 +328,9 @@ class InstalledVersions
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
- $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+ $required = require $vendorDir.'/composer/installed.php';
+ $installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
}
@@ -340,12 +342,17 @@ class InstalledVersions
// only require the installed.php file if this file is loaded from its dumped location,
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
if (substr(__DIR__, -8, 1) !== 'C') {
- self::$installed = require __DIR__ . '/installed.php';
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+ $required = require __DIR__ . '/installed.php';
+ self::$installed = $required;
} else {
self::$installed = array();
}
}
- $installed[] = self::$installed;
+
+ if (self::$installed !== array()) {
+ $installed[] = self::$installed;
+ }
return $installed;
}
diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json
index bc6cdb8e6c9..9b66e649715 100644
--- a/apps/files_external/3rdparty/composer/installed.json
+++ b/apps/files_external/3rdparty/composer/installed.json
@@ -52,17 +52,17 @@
},
{
"name": "icewind/streams",
- "version": "v0.7.4",
- "version_normalized": "0.7.4.0",
+ "version": "v0.7.7",
+ "version_normalized": "0.7.7.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/Streams.git",
- "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c"
+ "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/Streams/zipball/93bce472202d36d9808c30eaa52a1dc72b39e04c",
- "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c",
+ "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb",
+ "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb",
"shasum": ""
},
"require": {
@@ -73,7 +73,7 @@
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^9"
},
- "time": "2021-03-12T15:48:22+00:00",
+ "time": "2023-03-16T14:52:25+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -94,7 +94,7 @@
"description": "A set of generic stream wrappers",
"support": {
"issues": "https://github.com/icewind1991/Streams/issues",
- "source": "https://github.com/icewind1991/Streams/tree/v0.7.4"
+ "source": "https://github.com/icewind1991/Streams/tree/v0.7.7"
},
"install-path": "../icewind/streams"
}
diff --git a/apps/files_external/3rdparty/composer/installed.php b/apps/files_external/3rdparty/composer/installed.php
index 1adf5df7db3..65684203f3f 100644
--- a/apps/files_external/3rdparty/composer/installed.php
+++ b/apps/files_external/3rdparty/composer/installed.php
@@ -1,40 +1,40 @@
<?php return array(
'root' => array(
+ 'name' => 'files_external/3rdparty',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
+ 'reference' => '979f4033ca1cd0be7f255f028d4cc637a216440d',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
- 'reference' => '15d43dcc6226b92c0d51d643ef8c5ab1339cae48',
- 'name' => 'files_external/3rdparty',
'dev' => true,
),
'versions' => array(
'files_external/3rdparty' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
+ 'reference' => '979f4033ca1cd0be7f255f028d4cc637a216440d',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
- 'reference' => '15d43dcc6226b92c0d51d643ef8c5ab1339cae48',
'dev_requirement' => false,
),
'icewind/smb' => array(
'pretty_version' => 'v3.5.4',
'version' => '3.5.4.0',
+ 'reference' => '76995aa11c14e39bccd0f2370ed63b2f8f623a6d',
'type' => 'library',
'install_path' => __DIR__ . '/../icewind/smb',
'aliases' => array(),
- 'reference' => '76995aa11c14e39bccd0f2370ed63b2f8f623a6d',
'dev_requirement' => false,
),
'icewind/streams' => array(
- 'pretty_version' => 'v0.7.4',
- 'version' => '0.7.4.0',
+ 'pretty_version' => 'v0.7.7',
+ 'version' => '0.7.7.0',
+ 'reference' => '64200fd7cfcc7f550c3c695c48d8fd8bba97fecb',
'type' => 'library',
'install_path' => __DIR__ . '/../icewind/streams',
'aliases' => array(),
- 'reference' => '93bce472202d36d9808c30eaa52a1dc72b39e04c',
'dev_requirement' => false,
),
),
diff --git a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
index 5d78b5a3db0..bc5e4356cda 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
@@ -58,7 +58,7 @@ class CallbackWrapper extends Wrapper {
* @param callable|null $close (optional)
* @param callable|null $readDir (optional)
* @param callable|null $preClose (optional)
- * @return resource|bool
+ * @return resource|false
*
*/
public static function wrap($source, $read = null, $write = null, $close = null, $readDir = null, $preClose = null) {
diff --git a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php
index b3346209aed..d5aee9c9c4b 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php
@@ -55,7 +55,7 @@ class CountWrapper extends Wrapper {
*
* @param resource $source
* @param callable $callback
- * @return resource|bool
+ * @return resource|false
*
* @throws \BadMethodCallException
*/
diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php
index 80b27e8bab8..6a896c04b08 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php
@@ -46,7 +46,7 @@ class DirectoryFilter extends DirectoryWrapper {
/**
* @param resource $source
* @param callable $filter
- * @return resource|bool
+ * @return resource|false
*/
public static function wrap($source, callable $filter) {
return self::wrapSource($source, [
diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php
index 7f2f5c291c6..ff47096d2d7 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php
@@ -23,7 +23,7 @@ class DirectoryWrapper extends Wrapper implements Directory {
}
/**
- * @return string
+ * @return string|false
*/
public function dir_readdir() {
return readdir($this->source);
diff --git a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php
index 616c2fe506f..5e0163092e8 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php
@@ -41,7 +41,7 @@ abstract class HashWrapper extends Wrapper {
* @param resource $source
* @param string $hash
* @param callable $callback
- * @return resource|bool
+ * @return resource|false
*
* @throws \BadMethodCallException
*/
diff --git a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php
index a3872ddf474..7c6bd515c1e 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php
@@ -92,7 +92,7 @@ class IteratorDirectory extends WrapperHandler implements Directory {
* Creates a directory handle from the provided array or iterator
*
* @param \Iterator | array $source
- * @return resource|bool
+ * @return resource|false
*
* @throws \BadMethodCallException
*/
diff --git a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
index 03d0b202571..5b6348afe4f 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
@@ -44,7 +44,7 @@ abstract class Wrapper extends WrapperHandler implements File, Directory {
public function stream_seek($offset, $whence = SEEK_SET) {
$result = fseek($this->source, $offset, $whence);
- return $result == 0 ? true : false;
+ return $result == 0;
}
public function stream_tell() {
@@ -109,4 +109,23 @@ abstract class Wrapper extends WrapperHandler implements File, Directory {
public function dir_rewinddir() {
return rewind($this->source);
}
+
+ public function getSource() {
+ return $this->source;
+ }
+
+ /**
+ * Retrieves header/metadata from the source stream.
+ *
+ * This is equivalent to calling `stream_get_meta_data` on the source stream except nested stream wrappers are handled transparently
+ *
+ * @return array
+ */
+ public function getMetaData(): array {
+ $meta = stream_get_meta_data($this->source);
+ while (isset($meta['wrapper_data']) && $meta['wrapper_data'] instanceof Wrapper) {
+ $meta = $meta['wrapper_data']->getMetaData();
+ }
+ return $meta;
+ }
}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php b/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php
index 52a02feb19f..be408807ed3 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php
@@ -55,9 +55,9 @@ class WrapperHandler {
* @param resource|array $context
* @param string|null $protocol deprecated, protocol is now automatically generated
* @param string|null $class deprecated, class is now automatically generated
- * @return bool|resource
+ * @return resource|false
*/
- protected static function wrapSource($source, $context = [], $protocol = null, $class = null) {
+ protected static function wrapSource($source, $context = [], $protocol = null, $class = null, $mode = 'r+') {
if ($class === null) {
$class = static::class;
}
@@ -72,7 +72,7 @@ class WrapperHandler {
if (self::isDirectoryHandle($source)) {
return opendir($protocol . '://', $context);
} else {
- return fopen($protocol . '://', 'r+', false, $context);
+ return fopen($protocol . '://', $mode, false, $context);
}
} finally {
stream_wrapper_unregister($protocol);
diff --git a/apps/files_external/l10n/uk.js b/apps/files_external/l10n/uk.js
index c68c9ef042c..a5efe11cacc 100644
--- a/apps/files_external/l10n/uk.js
+++ b/apps/files_external/l10n/uk.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"Error configuring OAuth2" : "Помилка налаштування OAuth2",
"Generate keys" : "Створити ключі",
"Error generating key pair" : "Помилка створення ключової пари",
+ "Type to select user or group." : "Почніть друкувати, щоб вибрати користувача або групу.",
"(Group)" : "(група)",
"Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)",
"Enable encryption" : "Увімкнути шифрування",
@@ -89,6 +90,7 @@ OC.L10N.register(
"Hostname" : "Ім'я хоста",
"Port" : "Порт",
"Region" : "Регіон",
+ "Storage Class" : "Клас сховища",
"Enable SSL" : "Включити SSL",
"Enable Path Style" : "Включити стиль шляху",
"Legacy (v2) authentication" : "Legacy (v2) автентифікація",
@@ -134,6 +136,7 @@ OC.L10N.register(
"Available for" : "Доступний для",
"Click to recheck the configuration" : "Клацніть для повторної перевірки налаштувань",
"Add storage" : "Додати сховище",
+ "All users" : "Всі користувачі",
"Advanced settings" : "Розширені налаштування",
"Allow users to mount external storage" : "Дозволити користувачам монтувати зовнішні сховища",
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобальні облікові дані можна використовувати для автентифікації з кількома зовнішніми сховищами, які мають однакові облікові дані.",
diff --git a/apps/files_external/l10n/uk.json b/apps/files_external/l10n/uk.json
index 053dd1025ce..67126750632 100644
--- a/apps/files_external/l10n/uk.json
+++ b/apps/files_external/l10n/uk.json
@@ -8,6 +8,7 @@
"Error configuring OAuth2" : "Помилка налаштування OAuth2",
"Generate keys" : "Створити ключі",
"Error generating key pair" : "Помилка створення ключової пари",
+ "Type to select user or group." : "Почніть друкувати, щоб вибрати користувача або групу.",
"(Group)" : "(група)",
"Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)",
"Enable encryption" : "Увімкнути шифрування",
@@ -87,6 +88,7 @@
"Hostname" : "Ім'я хоста",
"Port" : "Порт",
"Region" : "Регіон",
+ "Storage Class" : "Клас сховища",
"Enable SSL" : "Включити SSL",
"Enable Path Style" : "Включити стиль шляху",
"Legacy (v2) authentication" : "Legacy (v2) автентифікація",
@@ -132,6 +134,7 @@
"Available for" : "Доступний для",
"Click to recheck the configuration" : "Клацніть для повторної перевірки налаштувань",
"Add storage" : "Додати сховище",
+ "All users" : "Всі користувачі",
"Advanced settings" : "Розширені налаштування",
"Allow users to mount external storage" : "Дозволити користувачам монтувати зовнішні сховища",
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобальні облікові дані можна використовувати для автентифікації з кількома зовнішніми сховищами, які мають однакові облікові дані.",
diff --git a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php
index dbe5a2fdc20..228366db204 100644
--- a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php
+++ b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php
@@ -30,6 +30,7 @@ use OCA\Files_External\Lib\StorageConfig;
use OCP\Authentication\Exceptions\CredentialsUnavailableException;
use OCP\Authentication\LoginCredentials\IStore as CredentialsStore;
use OCP\Files\Storage;
+use OCP\Files\StorageAuthException;
use OCP\IL10N;
use OCP\IUser;
@@ -57,6 +58,10 @@ class SessionCredentials extends AuthMechanism {
throw new InsufficientDataForMeaningfulAnswerException('No session credentials saved');
}
+ if ($credentials->getUID() !== $user->getUID()) {
+ throw new StorageAuthException('Session credentials for storage owner not available');
+ }
+
$storage->setBackendOption('user', $credentials->getLoginName());
$storage->setBackendOption('password', $credentials->getPassword());
}
diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js
index adf1325a1d9..66322a86572 100644
--- a/apps/files_sharing/l10n/el.js
+++ b/apps/files_sharing/l10n/el.js
@@ -169,6 +169,7 @@ OC.L10N.register(
"Shared with the group {user} by {owner}" : "Διαμοιράστηκε με την ομάδα {user} του {owner}",
"Shared with the conversation {user} by {owner}" : "Διαμοιράστηκε με τη συζήτηση {user} από {owner}",
"Shared with {user} by {owner}" : "Διαμοιράστηκε με {user} από τον {owner}",
+ "Allow download" : "Να επιτρέπεται η λήψη",
"Added by {initiator}" : "Προστέθηκε από {initiator}",
"Via “{folder}”" : "Μέσω “{folder}”",
"Internal link" : "Εσωτερικός σύνδεσμος",
@@ -195,7 +196,9 @@ OC.L10N.register(
"Shared via link by {initiator}" : "Διαμοιράστηκε μέσω συνδέσμου {initiator}",
"Share link ({label})" : "Σύνδεσμος κοινής χρήσης ({label})",
"Share link" : "Διαμοιρασμός συνδέσμου",
+ "Actions for \"{title}\"" : "Ενέργειες για \"{title}\"",
"Error, please enter proper password and/or expiration date" : "Σφάλμα, παρακαλώ εισάγετε τον σωστό κωδικό πρόσβασης και/ή ημερομηνία λήξης",
+ "Link share created" : "Δημιουργήθηκε ο σύνδεσμος κοινής χρήσης",
"Search for share recipients" : "Αναζήτηση για παραλήπτες διαμοιρασμού",
"No recommendations. Start typing." : "Δεν υπάρχουν συστάσεις. Αρχίστε να πληκτρολογείτε.",
"Resharing is not allowed" : "Δεν επιτρέπεται ο επαναμοιρασμός",
diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json
index 8a242e1e72c..c0ec927acb2 100644
--- a/apps/files_sharing/l10n/el.json
+++ b/apps/files_sharing/l10n/el.json
@@ -167,6 +167,7 @@
"Shared with the group {user} by {owner}" : "Διαμοιράστηκε με την ομάδα {user} του {owner}",
"Shared with the conversation {user} by {owner}" : "Διαμοιράστηκε με τη συζήτηση {user} από {owner}",
"Shared with {user} by {owner}" : "Διαμοιράστηκε με {user} από τον {owner}",
+ "Allow download" : "Να επιτρέπεται η λήψη",
"Added by {initiator}" : "Προστέθηκε από {initiator}",
"Via “{folder}”" : "Μέσω “{folder}”",
"Internal link" : "Εσωτερικός σύνδεσμος",
@@ -193,7 +194,9 @@
"Shared via link by {initiator}" : "Διαμοιράστηκε μέσω συνδέσμου {initiator}",
"Share link ({label})" : "Σύνδεσμος κοινής χρήσης ({label})",
"Share link" : "Διαμοιρασμός συνδέσμου",
+ "Actions for \"{title}\"" : "Ενέργειες για \"{title}\"",
"Error, please enter proper password and/or expiration date" : "Σφάλμα, παρακαλώ εισάγετε τον σωστό κωδικό πρόσβασης και/ή ημερομηνία λήξης",
+ "Link share created" : "Δημιουργήθηκε ο σύνδεσμος κοινής χρήσης",
"Search for share recipients" : "Αναζήτηση για παραλήπτες διαμοιρασμού",
"No recommendations. Start typing." : "Δεν υπάρχουν συστάσεις. Αρχίστε να πληκτρολογείτε.",
"Resharing is not allowed" : "Δεν επιτρέπεται ο επαναμοιρασμός",
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index 17d94f9f7cd..b86c1064534 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -120,6 +120,7 @@ OC.L10N.register(
"You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée",
"Please specify a valid circle" : "Veuillez entrer un cercle valide",
"Sharing %s failed because the back end does not support room shares" : "Le partage %s a échoué parce que l'arrière-plan ne prend pas en charge les partages.",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Le partage de %s a échoué car le serveur ne supporte pas les partages ScienceMesh",
"Unknown share type" : "Type de partage inconnu",
"Not a directory" : "N'est pas un dossier",
"Could not lock node" : "Impossible de verrouiller le nœud",
@@ -225,6 +226,7 @@ OC.L10N.register(
"Circle" : "Cercle",
"Talk conversation" : "Conversation Talk",
"Deck board" : "Tableau Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "sur {server}",
"Others with access" : "Autres utilisateurs ayant accès",
"No other users with access found" : "Aucun autre utilisateur ayant un accès n'a été trouvé",
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index bcbab1f4560..4681e1c5504 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -118,6 +118,7 @@
"You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée",
"Please specify a valid circle" : "Veuillez entrer un cercle valide",
"Sharing %s failed because the back end does not support room shares" : "Le partage %s a échoué parce que l'arrière-plan ne prend pas en charge les partages.",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Le partage de %s a échoué car le serveur ne supporte pas les partages ScienceMesh",
"Unknown share type" : "Type de partage inconnu",
"Not a directory" : "N'est pas un dossier",
"Could not lock node" : "Impossible de verrouiller le nœud",
@@ -223,6 +224,7 @@
"Circle" : "Cercle",
"Talk conversation" : "Conversation Talk",
"Deck board" : "Tableau Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "sur {server}",
"Others with access" : "Autres utilisateurs ayant accès",
"No other users with access found" : "Aucun autre utilisateur ayant un accès n'a été trouvé",
diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js
index 27bb6faac7d..ccde2f2a689 100644
--- a/apps/files_sharing/l10n/pl.js
+++ b/apps/files_sharing/l10n/pl.js
@@ -120,6 +120,7 @@ OC.L10N.register(
"You cannot share to a Circle if the app is not enabled" : "Nie możesz udostępnić w Kręgach, jeśli aplikacja jest wyłączona",
"Please specify a valid circle" : "Podaj prawidłowy krąg",
"Sharing %s failed because the back end does not support room shares" : "Udostępnienie %s nie powiodło się, ponieważ zaplecze nie obsługuje udostępnień pokoju",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępniania ScienceMesh",
"Unknown share type" : "Nieznany typ udostępnienia",
"Not a directory" : "Nie jest katalogiem",
"Could not lock node" : "Nie można zablokować powiązania",
@@ -225,6 +226,7 @@ OC.L10N.register(
"Circle" : "Krąg",
"Talk conversation" : "Rozmowa Talk",
"Deck board" : "Tablica Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "na {server}",
"Others with access" : "Inni z dostępem",
"No other users with access found" : "Nie znaleziono innych użytkowników z dostępem",
@@ -276,6 +278,7 @@ OC.L10N.register(
"Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa.",
"Toggle grid view" : "Przełącz widok siatki",
"Sharing %s failed because the back end does not support sciencemesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępnień Science Mesh",
+ "Science Mesh" : "Science Mesh",
"Error generating password from password_policy" : "Błąd podczas generowania hasła z password_policy"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json
index f2502d85c38..c4037a32777 100644
--- a/apps/files_sharing/l10n/pl.json
+++ b/apps/files_sharing/l10n/pl.json
@@ -118,6 +118,7 @@
"You cannot share to a Circle if the app is not enabled" : "Nie możesz udostępnić w Kręgach, jeśli aplikacja jest wyłączona",
"Please specify a valid circle" : "Podaj prawidłowy krąg",
"Sharing %s failed because the back end does not support room shares" : "Udostępnienie %s nie powiodło się, ponieważ zaplecze nie obsługuje udostępnień pokoju",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępniania ScienceMesh",
"Unknown share type" : "Nieznany typ udostępnienia",
"Not a directory" : "Nie jest katalogiem",
"Could not lock node" : "Nie można zablokować powiązania",
@@ -223,6 +224,7 @@
"Circle" : "Krąg",
"Talk conversation" : "Rozmowa Talk",
"Deck board" : "Tablica Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "na {server}",
"Others with access" : "Inni z dostępem",
"No other users with access found" : "Nie znaleziono innych użytkowników z dostępem",
@@ -274,6 +276,7 @@
"Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa.",
"Toggle grid view" : "Przełącz widok siatki",
"Sharing %s failed because the back end does not support sciencemesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępnień Science Mesh",
+ "Science Mesh" : "Science Mesh",
"Error generating password from password_policy" : "Błąd podczas generowania hasła z password_policy"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js
index cf0c6922a94..c9dfccfaeb3 100644
--- a/apps/files_sharing/l10n/uk.js
+++ b/apps/files_sharing/l10n/uk.js
@@ -120,6 +120,7 @@ OC.L10N.register(
"You cannot share to a Circle if the app is not enabled" : "Ви не можете поділитися у Circle, оскільки застосунок не активний",
"Please specify a valid circle" : "Будь ласка, зазначте дійсне коло",
"Sharing %s failed because the back end does not support room shares" : "Помилка спільного доступу %s, оскільки серверна частина не підтримує спільний доступ до кімнат",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Спільне використання %s не вдалося, оскільки бекенд не підтримує спільне використання ScienceMesh",
"Unknown share type" : "Невідомий тип спільного ресурсу",
"Not a directory" : "Не каталог",
"Could not lock node" : "Не вдалося заблокувати вузол",
@@ -225,6 +226,7 @@ OC.L10N.register(
"Circle" : "Коло",
"Talk conversation" : "Розмова Talk",
"Deck board" : "Дошка Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "на {server}",
"Others with access" : "Доступ для інших",
"No other users with access found" : "Більше немає користувачів, які мають доступ",
@@ -275,6 +277,8 @@ OC.L10N.register(
"Copy to clipboard" : "Копіювати до буферу обміну",
"Sorry, this link doesn’t seem to work anymore." : "На жаль, посилання більше не дійсне.",
"Toggle grid view" : "Перемкнути подання сіткою",
+ "Sharing %s failed because the back end does not support sciencemesh shares" : "Поширення %s не вдалося, оскільки бекенд не підтримує ресурси типа ScienceMesh",
+ "Science Mesh" : "Science Mesh",
"Error generating password from password_policy" : "Помилка під час створення паролів з password_policy"
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json
index 7bdfb6151ac..26efb0187c1 100644
--- a/apps/files_sharing/l10n/uk.json
+++ b/apps/files_sharing/l10n/uk.json
@@ -118,6 +118,7 @@
"You cannot share to a Circle if the app is not enabled" : "Ви не можете поділитися у Circle, оскільки застосунок не активний",
"Please specify a valid circle" : "Будь ласка, зазначте дійсне коло",
"Sharing %s failed because the back end does not support room shares" : "Помилка спільного доступу %s, оскільки серверна частина не підтримує спільний доступ до кімнат",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Спільне використання %s не вдалося, оскільки бекенд не підтримує спільне використання ScienceMesh",
"Unknown share type" : "Невідомий тип спільного ресурсу",
"Not a directory" : "Не каталог",
"Could not lock node" : "Не вдалося заблокувати вузол",
@@ -223,6 +224,7 @@
"Circle" : "Коло",
"Talk conversation" : "Розмова Talk",
"Deck board" : "Дошка Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "на {server}",
"Others with access" : "Доступ для інших",
"No other users with access found" : "Більше немає користувачів, які мають доступ",
@@ -273,6 +275,8 @@
"Copy to clipboard" : "Копіювати до буферу обміну",
"Sorry, this link doesn’t seem to work anymore." : "На жаль, посилання більше не дійсне.",
"Toggle grid view" : "Перемкнути подання сіткою",
+ "Sharing %s failed because the back end does not support sciencemesh shares" : "Поширення %s не вдалося, оскільки бекенд не підтримує ресурси типа ScienceMesh",
+ "Science Mesh" : "Science Mesh",
"Error generating password from password_policy" : "Помилка під час створення паролів з password_policy"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index cb692ed8eb5..0f9898bd47b 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -112,7 +112,7 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "公共链接共享已被管理员禁用",
"Public upload disabled by the administrator" : "公共上传已被管理员禁用",
"Public upload is only possible for publicly shared folders" : "公共上传仅适用于公共共享文件夹",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用,所以通过 Nextcloud Talk 发送 %s 共享密码失败。",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于Nextcloud通话应用没有启用,所以通过Nextcloud通话应用发送%s共享密码失败。",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "共享 %1$s 失败,后端不允许类型为 %2$s 的共享",
"Please specify a valid federated user ID" : "请指定一个有效的联邦用户 ID",
"Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
@@ -127,7 +127,7 @@ OC.L10N.register(
"Wrong or no update parameter given" : "错误或没有更新参数给出",
"Share must at least have READ or CREATE permissions" : "分享至少具有 READ 或 CREATE 权限",
"Share must have READ permission if UPDATE or DELETE permission is set" : "分享如果设置了 UPDATE 或 DELETE 权限,则必须具有 READ 权限",
- "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通过Nextcloud Talk发送密码”共享文件或文件夹失败了,因为未启用 Nextcloud Talk",
+ "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通过Nextcloud通话应用发送密码”共享文件或文件夹失败了,因为未启用Nextcloud通话应用",
"shared by %s" : "共享者 %s",
"Download all files" : "下载所有文件",
"Direct link" : "直接链接",
@@ -217,7 +217,7 @@ OC.L10N.register(
"Group" : "群组",
"Email" : "电子邮箱",
"Circle" : "圈子",
- "Talk conversation" : "Talk 会话",
+ "Talk conversation" : "通话应用对话",
"Deck board" : "Deck 看板",
"on {server}" : "在 {server} 上",
"Others with access" : "其他具有访问权限的人",
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index a0fd1e5e26e..f76dbe4fd70 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -110,7 +110,7 @@
"Public link sharing is disabled by the administrator" : "公共链接共享已被管理员禁用",
"Public upload disabled by the administrator" : "公共上传已被管理员禁用",
"Public upload is only possible for publicly shared folders" : "公共上传仅适用于公共共享文件夹",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用,所以通过 Nextcloud Talk 发送 %s 共享密码失败。",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于Nextcloud通话应用没有启用,所以通过Nextcloud通话应用发送%s共享密码失败。",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "共享 %1$s 失败,后端不允许类型为 %2$s 的共享",
"Please specify a valid federated user ID" : "请指定一个有效的联邦用户 ID",
"Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
@@ -125,7 +125,7 @@
"Wrong or no update parameter given" : "错误或没有更新参数给出",
"Share must at least have READ or CREATE permissions" : "分享至少具有 READ 或 CREATE 权限",
"Share must have READ permission if UPDATE or DELETE permission is set" : "分享如果设置了 UPDATE 或 DELETE 权限,则必须具有 READ 权限",
- "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通过Nextcloud Talk发送密码”共享文件或文件夹失败了,因为未启用 Nextcloud Talk",
+ "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通过Nextcloud通话应用发送密码”共享文件或文件夹失败了,因为未启用Nextcloud通话应用",
"shared by %s" : "共享者 %s",
"Download all files" : "下载所有文件",
"Direct link" : "直接链接",
@@ -215,7 +215,7 @@
"Group" : "群组",
"Email" : "电子邮箱",
"Circle" : "圈子",
- "Talk conversation" : "Talk 会话",
+ "Talk conversation" : "通话应用对话",
"Deck board" : "Deck 看板",
"on {server}" : "在 {server} 上",
"Others with access" : "其他具有访问权限的人",
diff --git a/apps/files_sharing/lib/Scanner.php b/apps/files_sharing/lib/Scanner.php
index baab7a862bd..d5a1c24418e 100644
--- a/apps/files_sharing/lib/Scanner.php
+++ b/apps/files_sharing/lib/Scanner.php
@@ -25,7 +25,7 @@
namespace OCA\Files_Sharing;
-use OC\Files\ObjectStore\NoopScanner;
+use OC\Files\ObjectStore\ObjectStoreScanner;
/**
* Scanner for SharedStorage
@@ -72,7 +72,8 @@ class Scanner extends \OC\Files\Cache\Scanner {
public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true, $data = null) {
$sourceScanner = $this->getSourceScanner();
- if ($sourceScanner instanceof NoopScanner) {
+ if ($sourceScanner instanceof ObjectStoreScanner) {
+ // ObjectStoreScanner doesn't scan
return [];
} else {
return parent::scanFile($file, $reuseExisting, $parentId, $cacheData, $lock);
diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue
index e45690ba2a0..b3740d4097f 100644
--- a/apps/files_sharing/src/components/SharingEntryLink.vue
+++ b/apps/files_sharing/src/components/SharingEntryLink.vue
@@ -161,6 +161,7 @@
class="share-link-password"
:class="{ error: errors.password}"
:disabled="saving"
+ :show-trailing-button="hasUnsavedPassword"
:required="config.enforcePasswordForPublicLink"
:value="hasUnsavedPassword ? share.newPassword : '***************'"
icon="icon-password"
@@ -903,7 +904,7 @@ export default {
}
::v-deep .avatar-link-share {
- background-color: var(--color-primary);
+ background-color: var(--color-primary-element);
}
.sharing-entry__action--public-upload {
diff --git a/apps/files_sharing/tests/External/ScannerTest.php b/apps/files_sharing/tests/External/ScannerTest.php
index 2d2486737dc..8d077715b2d 100644
--- a/apps/files_sharing/tests/External/ScannerTest.php
+++ b/apps/files_sharing/tests/External/ScannerTest.php
@@ -26,9 +26,11 @@ namespace OCA\Files_Sharing\Tests\External;
use OCA\Files_Sharing\External\Scanner;
use Test\TestCase;
+/**
+ * @group DB
+ */
class ScannerTest extends TestCase {
- /** @var \OCA\Files_Sharing\External\Scanner */
- protected $scanner;
+ protected Scanner $scanner;
/** @var \OCA\Files_Sharing\External\Storage|\PHPUnit\Framework\MockObject\MockObject */
protected $storage;
/** @var \OC\Files\Cache\Cache|\PHPUnit\Framework\MockObject\MockObject */
diff --git a/apps/files_trashbin/l10n/uk.js b/apps/files_trashbin/l10n/uk.js
index 42d574e8225..2a3ea3cc96e 100644
--- a/apps/files_trashbin/l10n/uk.js
+++ b/apps/files_trashbin/l10n/uk.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"This application enables users to restore files that were deleted from the system." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі.",
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі. Він показує список вилучених у вебінтерфейсі файлів, дозволяє відновлювати вилучені файліи до каталогів користувача, звідки файл було вилучено, або остаточно вилучати файли з системи. Відновлення файлу також відновлює віповідні версії файлу, якщо підтримку версій увімкнено у системі. Якщо файл було вилучено зі спільного ресурсу, то його також можна відновити, при цьому його буде відновлено уже як не спільний ресурс. Типово вилучені файли зберігаються у кошику протягом 30 днів.\nДля запобігання понадмірного використання дискового простору вилучені файли не можуть займати понад 50% поточного доступного простору за квотою для вилучених файлів. Якщо розмір вилучених файлів перевищує зазначене обмеження, застосунок вилучатиме без можливості відновлення найстаріші файли аж до досягнення обмеження. Додаткову інформацію можна знайти у документації до застосунку.",
"Restore" : "Відновити",
+ "List of files that have been deleted." : "Список файлів, які було видалено.",
"Deleted" : "Вилучено",
"No deleted files" : "Кошик порожній",
"You will be able to recover deleted files from here" : "Тут ви можете відновити файли, які було вилучено",
diff --git a/apps/files_trashbin/l10n/uk.json b/apps/files_trashbin/l10n/uk.json
index ce856f1a152..27df9d08b5d 100644
--- a/apps/files_trashbin/l10n/uk.json
+++ b/apps/files_trashbin/l10n/uk.json
@@ -5,6 +5,7 @@
"This application enables users to restore files that were deleted from the system." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі.",
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі. Він показує список вилучених у вебінтерфейсі файлів, дозволяє відновлювати вилучені файліи до каталогів користувача, звідки файл було вилучено, або остаточно вилучати файли з системи. Відновлення файлу також відновлює віповідні версії файлу, якщо підтримку версій увімкнено у системі. Якщо файл було вилучено зі спільного ресурсу, то його також можна відновити, при цьому його буде відновлено уже як не спільний ресурс. Типово вилучені файли зберігаються у кошику протягом 30 днів.\nДля запобігання понадмірного використання дискового простору вилучені файли не можуть займати понад 50% поточного доступного простору за квотою для вилучених файлів. Якщо розмір вилучених файлів перевищує зазначене обмеження, застосунок вилучатиме без можливості відновлення найстаріші файли аж до досягнення обмеження. Додаткову інформацію можна знайти у документації до застосунку.",
"Restore" : "Відновити",
+ "List of files that have been deleted." : "Список файлів, які було видалено.",
"Deleted" : "Вилучено",
"No deleted files" : "Кошик порожній",
"You will be able to recover deleted files from here" : "Тут ви можете відновити файли, які було вилучено",
diff --git a/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php b/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php
index 70338a469d3..842721eeac9 100644
--- a/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php
+++ b/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php
@@ -67,7 +67,7 @@ class TrashbinMigrator implements IMigrator, ISizeEstimationMigrator {
/**
* {@inheritDoc}
*/
- public function getEstimatedExportSize(IUser $user): int {
+ public function getEstimatedExportSize(IUser $user): int|float {
$uid = $user->getUID();
try {
@@ -75,7 +75,7 @@ class TrashbinMigrator implements IMigrator, ISizeEstimationMigrator {
if (!$trashbinFolder instanceof Folder) {
return 0;
}
- return (int)ceil($trashbinFolder->getSize() / 1024);
+ return ceil($trashbinFolder->getSize() / 1024);
} catch (\Throwable $e) {
return 0;
}
diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php
index 9141e6c4c65..0b7debc126a 100644
--- a/apps/files_versions/lib/Storage.php
+++ b/apps/files_versions/lib/Storage.php
@@ -608,7 +608,12 @@ class Storage {
foreach ($versions as $version) {
$internalPath = $version->getInternalPath();
\OC_Hook::emit('\OCP\Versions', 'preDelete', ['path' => $internalPath, 'trigger' => self::DELETE_TRIGGER_RETENTION_CONSTRAINT]);
- $versionsMapper->delete($versionEntities[$version->getId()]);
+
+ $versionEntity = isset($versionEntities[$version->getId()]) ? $versionEntities[$version->getId()] : null;
+ if (!is_null($versionEntity)) {
+ $versionsMapper->delete($versionEntity);
+ }
+
$version->delete();
\OC_Hook::emit('\OCP\Versions', 'delete', ['path' => $internalPath, 'trigger' => self::DELETE_TRIGGER_RETENTION_CONSTRAINT]);
}
diff --git a/apps/provisioning_api/lib/Controller/AUserData.php b/apps/provisioning_api/lib/Controller/AUserData.php
index e7496c6c5ed..128fda588e2 100644
--- a/apps/provisioning_api/lib/Controller/AUserData.php
+++ b/apps/provisioning_api/lib/Controller/AUserData.php
@@ -60,6 +60,7 @@ abstract class AUserData extends OCSController {
public const USER_FIELD_LOCALE = 'locale';
public const USER_FIELD_PASSWORD = 'password';
public const USER_FIELD_QUOTA = 'quota';
+ public const USER_FIELD_MANAGER = 'manager';
public const USER_FIELD_NOTIFICATION_EMAIL = 'notify_email';
/** @var IUserManager */
@@ -151,6 +152,8 @@ abstract class AUserData extends OCSController {
$data['backend'] = $targetUserObject->getBackendClassName();
$data['subadmin'] = $this->getUserSubAdminGroupsData($targetUserObject->getUID());
$data[self::USER_FIELD_QUOTA] = $this->fillStorageInfo($targetUserObject->getUID());
+ $managerUids = $targetUserObject->getManagerUids();
+ $data[self::USER_FIELD_MANAGER] = empty($managerUids) ? '' : $managerUids[0];
try {
if ($includeScopes) {
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index b005acc4d7f..7dfdea991e5 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -338,7 +338,8 @@ class UsersController extends AUserData {
array $groups = [],
array $subadmin = [],
string $quota = '',
- string $language = ''
+ string $language = '',
+ ?string $manager = null,
): DataResponse {
$user = $this->userSession->getUser();
$isAdmin = $this->groupManager->isAdmin($user->getUID());
@@ -447,6 +448,15 @@ class UsersController extends AUserData {
$this->editUser($userid, self::USER_FIELD_LANGUAGE, $language);
}
+ /**
+ * null -> nothing sent
+ * '' -> unset manager
+ * else -> set manager
+ */
+ if ($manager !== null) {
+ $this->editUser($userid, self::USER_FIELD_MANAGER, $manager);
+ }
+
// Send new user mail only if a mail is set
if ($email !== '') {
$newUser->setEMailAddress($email);
@@ -800,9 +810,11 @@ class UsersController extends AUserData {
$permittedFields[] = IAccountManager::PROPERTY_AVATAR . self::SCOPE_SUFFIX;
- // If admin they can edit their own quota
+ // If admin they can edit their own quota and manager
if ($this->groupManager->isAdmin($currentLoggedInUser->getUID())) {
$permittedFields[] = self::USER_FIELD_QUOTA;
+ $permittedFields[] = self::USER_FIELD_MANAGER;
+
}
} else {
// Check if admin / subadmin
@@ -836,6 +848,7 @@ class UsersController extends AUserData {
$permittedFields[] = IAccountManager::PROPERTY_PROFILE_ENABLED;
$permittedFields[] = self::USER_FIELD_QUOTA;
$permittedFields[] = self::USER_FIELD_NOTIFICATION_EMAIL;
+ $permittedFields[] = self::USER_FIELD_MANAGER;
} else {
// No rights
throw new OCSException('', OCSController::RESPOND_NOT_FOUND);
@@ -885,6 +898,9 @@ class UsersController extends AUserData {
}
$targetUser->setQuota($quota);
break;
+ case self::USER_FIELD_MANAGER:
+ $targetUser->setManagerUids([$value]);
+ break;
case self::USER_FIELD_PASSWORD:
try {
if (strlen($value) > IUserManager::MAX_PASSWORD_LENGTH) {
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
index 419f9eceb79..56a47f23a5c 100644
--- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
@@ -1093,6 +1093,7 @@ class UsersControllerTest extends TestCase {
'biography' => 'biography',
'profile_enabled' => '1',
'notify_email' => null,
+ 'manager' => '',
];
$this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UID']));
}
@@ -1233,6 +1234,7 @@ class UsersControllerTest extends TestCase {
'biography' => 'biography',
'profile_enabled' => '1',
'notify_email' => null,
+ 'manager' => '',
];
$this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UID']));
}
@@ -1411,6 +1413,7 @@ class UsersControllerTest extends TestCase {
'biography' => 'biography',
'profile_enabled' => '1',
'notify_email' => null,
+ 'manager' => '',
];
$this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UID']));
}
diff --git a/apps/settings/css/settings.css b/apps/settings/css/settings.css
index 49c99f687c5..f9b8f3ed1be 100644
--- a/apps/settings/css/settings.css
+++ b/apps/settings/css/settings.css
@@ -1 +1 @@
-input#openid,input#webdav{width:20em}.clear{clear:both}.nav-icon-personal-settings{background-image:var(--icon-personal-dark)}.nav-icon-security{background-image:var(--icon-toggle-filelist-dark)}.nav-icon-clientsbox{background-image:var(--icon-change-dark)}.nav-icon-federated-cloud{background-image:var(--icon-share-dark)}.nav-icon-second-factor-backup-codes,.nav-icon-ssl-root-certificate{background-image:var(--icon-password-dark)}#personal-settings-avatar-container{display:inline-grid;grid-template-columns:1fr;grid-template-rows:2fr 1fr 2fr;vertical-align:top}.profile-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-show-container{width:100%}.personal-settings-setting-box .section{padding:10px 30px}.personal-settings-setting-box .section .headerbar-label{margin-bottom:0}.personal-settings-setting-box .section input[type=text],.personal-settings-setting-box .section input[type=email],.personal-settings-setting-box .section input[type=tel],.personal-settings-setting-box .section input[type=url]{width:100%}.personal-settings-setting-box-profile{grid-row:3/5}.personal-settings-setting-box-detail{grid-row:5}.personal-settings-setting-box-detail--without-profile{grid-row:3}select#timezone{width:100%}#personal-settings{display:grid;padding:20px;max-width:1700px;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-column-gap:10px}#personal-settings .section{padding:10px 10px;border:0}#personal-settings .section h2{margin-bottom:12px}#personal-settings .section h3>label{font-weight:bold}#personal-settings .personal-info{margin-right:10%;margin-bottom:12px;margin-top:12px}#personal-settings .personal-info[class^=icon-],#personal-settings .personal-info[class*=" icon-"]{background-position:0px 2px;padding-left:30px;opacity:.7}.development-notice{text-align:center}.development-notice a:not(.link-button){text-decoration:underline}.development-notice a:not(.link-button):hover{background-color:var(--color-primary-element-hover)}.link-button{display:inline-block;margin:16px;padding:14px 20px;background-color:var(--color-primary);color:#fff;border-radius:var(--border-radius-pill);border:1px solid var(--color-primary);box-shadow:0 2px 9px var(--color-box-shadow)}.link-button:active,.link-button:hover,.link-button:focus{color:var(--color-primary);background-color:var(--color-primary-text);border-color:var(--color-primary) !important}.link-button.icon-file{padding-left:48px;background-position:24px}.personal-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-settings-container:after{clear:both}.personal-settings-container>div h3{position:relative;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start;width:100%;align-items:center;gap:8px}.personal-settings-container>div h3>label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.personal-settings-container>div>form span[class^=icon-checkmark],.personal-settings-container>div>form span[class^=icon-error]{position:relative;right:8px;top:-28px;pointer-events:none;float:right}.personal-settings-container .verify{position:relative;left:100%;top:0;height:0}.personal-settings-container .verify img{padding:12px 7px 6px}.personal-settings-container .verify-action{cursor:pointer}.personal-settings-container input:disabled{background-color:#fff;color:#000;border:none;opacity:100}.verification-dialog{display:none;right:-9px;top:40px;width:275px}.verification-dialog p{padding:10px}.verification-dialog .verificationCode{font-family:monospace;display:block;overflow-wrap:break-word}.federation-menu{position:relative;cursor:pointer;width:44px;height:44px;padding:10px;margin:0;background:none;border:none}.federation-menu:hover,.federation-menu:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.federation-menu:hover .icon-federation-menu,.federation-menu:focus .icon-federation-menu{opacity:.8}.federation-menu .icon-federation-menu{padding-left:16px;background-size:16px;background-position:left center;opacity:.3;cursor:inherit}.federation-menu .icon-federation-menu .icon-triangle-s{display:inline-block;vertical-align:middle;cursor:inherit}.federation-menu .federationScopeMenu{top:44px}.federation-menu .federationScopeMenu.popovermenu .menuitem{font-size:12.8px;line-height:1.6em}.federation-menu .federationScopeMenu.popovermenu .menuitem .menuitem-text-detail{opacity:.75}.federation-menu .federationScopeMenu.popovermenu .menuitem.active{box-shadow:inset 2px 0 var(--color-primary)}.federation-menu .federationScopeMenu.popovermenu .menuitem.active .menuitem-text{font-weight:bold}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled{opacity:.5;cursor:default}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled *{cursor:default}.clientsbox img{height:60px}#sslCertificate tr.expired{background-color:rgba(255,0,0,.5)}#sslCertificate td{padding:5px}#displaynameerror,#displaynamechanged{display:none}input#identity{width:20em}#showWizard{display:inline-block}.msg.success{color:#fff;background-color:#47a447;padding:3px}.msg.error{color:#fff;background-color:#d2322d;padding:3px}table.nostyle label{margin-right:2em}table.nostyle td{padding:.2em 0}#security-password #passwordform{display:flex;flex-wrap:wrap;flex-direction:column;gap:1rem}#security-password #passwordform .input-control{display:flex;flex-wrap:wrap;flex-direction:column}#security-password #passwordform .input-control label{margin-bottom:.5rem}#security-password #passwordform #pass1,#security-password #passwordform .personal-show-container{flex-shrink:1;width:300px;min-width:150px}#security-password #passwordform .personal-show-container #pass2{position:relative;top:.5rem}#security-password #passwordform .personal-show-container .personal-show-label{top:34px !important;margin-right:0;margin-top:0 !important;right:3px}#security-password #passwordform #pass2{width:100%}#security-password #passwordform .password-state{display:inline-block}#security-password #passwordform .strengthify-wrapper{position:absolute;left:0;width:100%;border-radius:0 0 2px 2px;margin-top:5px;overflow:hidden;height:3px}#two-factor-auth h3{margin-top:24px}#two-factor-auth li>div{margin-left:20px}#two-factor-auth .two-factor-provider-settings-icon{width:16px;height:16px;vertical-align:sub;filter:var(--background-invert-if-dark)}.isgroup .groupname{width:85%;display:block;overflow:hidden;text-overflow:ellipsis}.isgroup.active .groupname{width:65%}li.active .delete,li.active .rename{display:block}.app-navigation-entry-utils .delete,.app-navigation-entry-utils .rename{display:none}#usersearchform{position:absolute;top:2px;right:0}#usersearchform input{width:150px}#usersearchform label{font-weight:bold}table.grid{width:100%}table.grid th{height:2em;color:#999;border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}table.grid td{border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}td.name,th.name{padding-left:.8em;min-width:5em;max-width:12em;text-overflow:ellipsis;overflow:hidden}td.password,th.password{padding-left:.8em}td.password>img,th.password>img{visibility:hidden}td.displayName>img,th.displayName>img{visibility:hidden}td.password,td.mailAddress,th.password,th.mailAddress{min-width:5em;max-width:12em;cursor:pointer}td.password span,td.mailAddress span,th.password span,th.mailAddress span{width:90%;display:inline-block;text-overflow:ellipsis;overflow:hidden}td.mailAddress,th.mailAddress{cursor:pointer}td.password>span,th.password>span{margin-right:1.2em;color:#c7c7c7}span.usersLastLoginTooltip{white-space:nowrap}#app-content>svg.app-filter{float:left;height:0;width:0}#app-category-app-bundles{margin-bottom:20px}.appinfo{margin:1em 40px}#app-navigation img{margin-bottom:-3px;margin-right:6px;width:16px}#app-navigation li span.no-icon{padding-left:32px}#app-navigation ul li.active>span.utils .delete,#app-navigation ul li.active>span.utils .rename{display:block}#app-navigation .appwarning{background:#fcc}#app-navigation.appwarning:hover{background:#fbb}#app-navigation .app-external{color:var(--color-text-maxcontrast)}span.version{margin-left:1em;margin-right:1em;color:var(--color-text-maxcontrast)}.app-version{color:var(--color-text-maxcontrast)}.app-level span{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);padding:3px 6px}.app-level a{padding:10px;margin:-6px;white-space:nowrap}.app-level .official{background-position:left center;background-position:5px center;padding-left:25px}.app-level .supported{border-color:var(--color-success);background-position:left center;background-position:5px center;padding-left:25px;color:var(--color-success)}.app-score{position:relative;top:4px;opacity:.5}.app-settings-content #searchresults{display:none}#apps-list.store .section{border:0}#apps-list.store .app-name{display:block;margin:5px 0}#apps-list.store .app-name,#apps-list.store .app-image *{cursor:pointer}#apps-list.store .app-summary{opacity:.7}#apps-list.store .app-image-icon .icon-settings-dark{width:100%;height:150px;background-size:45px;opacity:.5}#apps-list.store .app-score-image{height:14px}#apps-list.store .actions{margin-top:10px}#app-sidebar #app-details-view h2 .icon-settings-dark,#app-sidebar #app-details-view h2 svg{display:inline-block;width:16px;height:16px;margin-right:10px;opacity:.7}#app-sidebar #app-details-view .app-level{clear:right;width:100%}#app-sidebar #app-details-view .app-level .supported,#app-sidebar #app-details-view .app-level .official{vertical-align:top}#app-sidebar #app-details-view .app-level .app-score-image{float:right}#app-sidebar #app-details-view .app-author,#app-sidebar #app-details-view .app-licence{color:var(--color-text-maxcontrast)}#app-sidebar #app-details-view .app-dependencies{margin:10px 0}#app-sidebar #app-details-view .app-description p{margin:10px 0}#app-sidebar #app-details-view .close{position:absolute;top:0;right:0;padding:14px;opacity:.5;z-index:1;width:44px;height:44px}#app-sidebar #app-details-view .actions{display:flex;align-items:center}#app-sidebar #app-details-view .actions .app-groups{padding:5px}#app-sidebar #app-details-view .appslink{text-decoration:underline;margin-right:5px}#app-sidebar #app-details-view .app-level,#app-sidebar #app-details-view .actions,#app-sidebar #app-details-view .documentation,#app-sidebar #app-details-view .app-dependencies,#app-sidebar #app-details-view .app-description{margin:20px 0}@media only screen and (min-width: 1601px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1600px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1400px){.store .section{width:33%}.with-app-sidebar .store .section{width:50%}}@media only screen and (max-width: 900px){.store .section{width:50%}.with-app-sidebar .store .section{width:100%}}@media only screen and (max-width: 1024px){.store .section{width:50%}}@media only screen and (max-width: 480px){.store .section{width:100%}}@media only screen and (max-width: 900px){.apps-list.installed .app-version,.apps-list.installed .app-level{display:none !important}}@media only screen and (max-width: 500px){.apps-list.installed .app-groups{display:none !important}}.section{margin-bottom:0}.section:not(:last-child){border-bottom:1px solid var(--color-border)}.section h2{margin-bottom:22px}.section h2 .icon-info{padding:6px 20px;vertical-align:text-bottom;display:inline-block}.followupsection{display:block;padding:0 30px 30px 30px}.app-image{position:relative;height:150px;opacity:1;overflow:hidden}.app-name,.app-version,.app-score,.app-level{display:inline-block}.app-description-toggle-show,.app-description-toggle-hide{clear:both;padding:7px 0;cursor:pointer;opacity:.5}.app-description-container{clear:both;position:relative;top:7px}.app-description{clear:both}#app-category-1{margin-bottom:18px}#app-category-925{text-transform:capitalize}.app-dependencies{color:#ce3702}.missing-dependencies{list-style:initial;list-style-type:initial;list-style-position:inside}.apps-list{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list .section{cursor:pointer}.apps-list .app-list-move{transition:transform 1s}.apps-list #app-list-update-all{margin-left:10px}.apps-list .toolbar{height:60px;padding:8px;padding-left:60px;width:100%;background-color:var(--color-main-background);position:sticky;top:0;z-index:1;display:flex;align-items:center}.apps-list.installed{margin-bottom:100px}.apps-list.installed .apps-list-container{display:table;width:100%;height:auto;margin-top:60px}.apps-list.installed .section{display:table-row;padding:0;margin:0}.apps-list.installed .section>*{display:table-cell;height:initial;vertical-align:middle;float:none;border-bottom:1px solid var(--color-border);padding:6px;box-sizing:border-box}.apps-list.installed .section.selected{background-color:var(--color-background-dark)}.apps-list.installed .groups-enable{margin-top:0}.apps-list.installed .groups-enable label{margin-right:3px}.apps-list.installed .app-image{width:44px;height:auto;text-align:right}.apps-list.installed .app-image-icon svg,.apps-list.installed .app-image-icon .icon-settings-dark{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.apps-list.installed .actions{text-align:right}.apps-list.installed .actions .icon-loading-small{display:inline-block;top:4px;margin-right:10px}.apps-list:not(.installed) .app-image-icon svg{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.apps-list.hidden{display:none}.apps-list .section{position:relative;flex:0 0 auto}.apps-list .section h2.app-name{display:block;margin:8px 0}.apps-list .section:hover{background-color:var(--color-background-dark)}.apps-list .app-description p{margin:10px 0}.apps-list .app-description ul{list-style:disc}.apps-list .app-description ol{list-style:decimal}.apps-list .app-description ol ol,.apps-list .app-description ol ul{padding-left:15px}.apps-list .app-description>ul,.apps-list .app-description>ol{margin-left:19px}.apps-list .app-description ul ol,.apps-list .app-description ul ul{padding-left:15px}.apps-list .apps-header{display:table-row;position:relative}.apps-list .apps-header div{display:table-cell;height:70px}.apps-list .apps-header h2{display:table-cell;position:absolute;padding-left:6px;padding-top:15px}.apps-list .apps-header h2 .enable{position:relative;top:-1px;margin-left:12px}.apps-list .apps-header h2+.section{margin-top:50px}#apps-list-search .section h2{margin-bottom:0}#log{white-space:normal;margin-bottom:14px}#lessLog{display:none}table.grid td.date{white-space:nowrap}#log-section p{margin-top:20px}#security-warning-state-ok span,#security-warning-state-warning span,#security-warning-state-failure span,#security-warning-state-loading span{vertical-align:middle}#security-warning-state-ok span.message,#security-warning-state-warning span.message,#security-warning-state-failure span.message,#security-warning-state-loading span.message{padding:12px}#security-warning-state-ok span.icon,#security-warning-state-warning span.icon,#security-warning-state-failure span.icon,#security-warning-state-loading span.icon{width:32px;height:32px;background-position:center center;display:inline-block;border-radius:50%}#security-warning-state-ok span.icon-checkmark-white,#security-warning-state-warning span.icon-checkmark-white,#security-warning-state-failure span.icon-checkmark-white,#security-warning-state-loading span.icon-checkmark-white{background-color:var(--color-success)}#security-warning-state-ok span.icon-error-white,#security-warning-state-warning span.icon-error-white,#security-warning-state-failure span.icon-error-white,#security-warning-state-loading span.icon-error-white{background-color:var(--color-warning)}#security-warning-state-ok span.icon-close-white,#security-warning-state-warning span.icon-close-white,#security-warning-state-failure span.icon-close-white,#security-warning-state-loading span.icon-close-white{background-color:var(--color-error)}#shareAPI p{padding-bottom:.8em}#shareAPI input#shareapiExpireAfterNDays{width:40px}#shareAPI .indent{padding-left:28px}#shareAPI .double-indent{padding-left:56px}#shareAPI .nocheckbox{padding-left:20px}#shareApiDefaultPermissionsSection label{margin-right:20px}#fileSharingSettings h3{display:inline-block}#publicShareDisclaimerText{width:calc(100% - 23px);max-width:600px;height:150px;margin-left:20px;box-sizing:border-box}.icon-info{padding:11px 20px;vertical-align:text-bottom;opacity:.5}#two-factor-auth h2,#shareAPI h2,#mail_general_settings h2{display:inline-block}.mail_settings p label:first-child{display:inline-block;width:300px;text-align:right}.mail_settings p select:nth-child(2),.mail_settings p input:not([type=button]){width:143px}#mail_smtpport{width:60px}.cronlog{margin-left:10px}.status{display:inline-block;height:16px;width:16px;vertical-align:text-bottom}.status.success{border-radius:50%}#selectGroups select{box-sizing:border-box;display:inline-block;height:36px;padding:7px 10px}#log .log-message{word-break:break-all;min-width:180px}span.success{background-color:var(--color-success);border-radius:var(--border-radius)}span.error{background-color:var(--color-error)}span.indeterminate{background-color:var(--color-warning);border-radius:40% 0}doesnotexist:-o-prefocus,.strengthify-wrapper{left:185px;width:129px}.trusted-domain-warning{color:#fff;padding:5px;background:#ce3702;border-radius:5px;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}#postsetupchecks ul{margin-left:44px;list-style:disc}#postsetupchecks ul li{margin:10px 0}#postsetupchecks ul ul{list-style:circle}#postsetupchecks .loading{height:50px;background-position:left center}#postsetupchecks .errors,#postsetupchecks .errors a{color:var(--color-error)}#postsetupchecks .warnings,#postsetupchecks .warnings a{color:var(--color-warning)}#postsetupchecks .hint{margin:20px 0}#security-warning a{text-decoration:underline}#security-warning .extra-top-margin{margin-top:12px}#admin-tips li{list-style:initial}#admin-tips li a{display:inline-block;padding:3px 0}#warning{color:red}.settings-hint{margin-top:-12px;margin-bottom:12px;opacity:.7}#body-settings #app-content.user-list-grid{display:grid;grid-column-gap:20px;grid-auto-rows:minmax(60px, max-content)}#body-settings #app-content.user-list-grid .row{display:flex;display:grid;min-height:60px;grid-row-start:span 1;grid-gap:3px;align-items:center;grid-template-columns:44px minmax(190px, 1fr) minmax(160px, 1fr) minmax(160px, 1fr) minmax(240px, 1fr) minmax(240px, 1fr) repeat(auto-fit, minmax(160px, 1fr));border-bottom:var(--color-border) 1px solid}#body-settings #app-content.user-list-grid .row.disabled{opacity:.5}#body-settings #app-content.user-list-grid .row .name,#body-settings #app-content.user-list-grid .row .password,#body-settings #app-content.user-list-grid .row .mailAddress,#body-settings #app-content.user-list-grid .row .languages,#body-settings #app-content.user-list-grid .row .storageLocation,#body-settings #app-content.user-list-grid .row .userBackend,#body-settings #app-content.user-list-grid .row .lastLogin{min-width:160px}#body-settings #app-content.user-list-grid .row .name doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .name .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .password doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .password .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .mailAddress doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .mailAddress .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .languages doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .languages .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .storageLocation doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .storageLocation .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .userBackend doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .userBackend .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .lastLogin doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .lastLogin .strengthify-wrapper{color:var(--color-text-dark);vertical-align:baseline;text-overflow:ellipsis}#body-settings #app-content.user-list-grid .row:not(.row--editable).name,#body-settings #app-content.user-list-grid .row:not(.row--editable).password,#body-settings #app-content.user-list-grid .row:not(.row--editable).displayName,#body-settings #app-content.user-list-grid .row:not(.row--editable).mailAddress,#body-settings #app-content.user-list-grid .row:not(.row--editable).userBackend,#body-settings #app-content.user-list-grid .row:not(.row--editable).languages{overflow:hidden}#body-settings #app-content.user-list-grid .row:not(.row--editable) .groups,#body-settings #app-content.user-list-grid .row:not(.row--editable) .subadmins{overflow:auto;max-height:100%}#body-settings #app-content.user-list-grid .row .groups,#body-settings #app-content.user-list-grid .row .subadmins,#body-settings #app-content.user-list-grid .row .quota{min-width:160px}#body-settings #app-content.user-list-grid .row .groups .multiselect,#body-settings #app-content.user-list-grid .row .subadmins .multiselect,#body-settings #app-content.user-list-grid .row .quota .multiselect{width:100%;color:var(--color-text-dark);vertical-align:baseline}#body-settings #app-content.user-list-grid .row .groups progress,#body-settings #app-content.user-list-grid .row .subadmins progress,#body-settings #app-content.user-list-grid .row .quota progress{max-width:95%}#body-settings #app-content.user-list-grid .row .obfuscated{width:400px;opacity:.7}#body-settings #app-content.user-list-grid .row .userActions{display:flex;justify-content:flex-end;position:sticky;right:0px;min-width:88px;background-color:var(--color-main-background)}#body-settings #app-content.user-list-grid .row.row--editable .userActions{z-index:10}#body-settings #app-content.user-list-grid .row .subtitle{color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row#grid-header{position:sticky;align-self:normal;background-color:var(--color-main-background);z-index:100;top:0}#body-settings #app-content.user-list-grid .row#grid-header.sticky{box-shadow:0 -2px 10px 1px var(--color-box-shadow)}#body-settings #app-content.user-list-grid .row#grid-header{color:var(--color-text-maxcontrast);border-bottom-width:thin}#body-settings #app-content.user-list-grid .row#grid-header #headerDisplayName,#body-settings #app-content.user-list-grid .row#grid-header #headerPassword,#body-settings #app-content.user-list-grid .row#grid-header #headerAddress,#body-settings #app-content.user-list-grid .row#grid-header #headerGroups,#body-settings #app-content.user-list-grid .row#grid-header #headerSubAdmins,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderUserBackend,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderLastLogin,#body-settings #app-content.user-list-grid .row#grid-header #headerQuota,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderStorageLocation,#body-settings #app-content.user-list-grid .row#grid-header #headerLanguages{padding-left:7px;text-transform:none;color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row:hover input:not([type=submit]):not(:focus):not(:active){border-color:var(--color-border) !important}#body-settings #app-content.user-list-grid .row:hover:not(#grid-header){box-shadow:5px 0 0 var(--color-primary-element) inset}#body-settings #app-content.user-list-grid .row>form{width:100%}#body-settings #app-content.user-list-grid .row>div,#body-settings #app-content.user-list-grid .row>.displayName>form,#body-settings #app-content.user-list-grid .row>form{grid-row:1;display:inline-flex;color:var(--color-text-lighter);flex-grow:1}#body-settings #app-content.user-list-grid .row>div>input:not(:focus):not(:active),#body-settings #app-content.user-list-grid .row>.displayName>form>input:not(:focus):not(:active),#body-settings #app-content.user-list-grid .row>form>input:not(:focus):not(:active){border-color:rgba(0,0,0,0);cursor:pointer}#body-settings #app-content.user-list-grid .row>div>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>div>input:active+.icon-confirm,#body-settings #app-content.user-list-grid .row>.displayName>form>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>.displayName>form>input:active+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:active+.icon-confirm{display:block !important}#body-settings #app-content.user-list-grid .row>div:not(.userActions)>input:not([type=submit]),#body-settings #app-content.user-list-grid .row>.displayName>form:not(.userActions)>input:not([type=submit]),#body-settings #app-content.user-list-grid .row>form:not(.userActions)>input:not([type=submit]){width:100%;min-width:0}#body-settings #app-content.user-list-grid .row>div.name,#body-settings #app-content.user-list-grid .row>.displayName>form.name,#body-settings #app-content.user-list-grid .row>form.name{word-break:break-all}#body-settings #app-content.user-list-grid .row>div.displayName>input,#body-settings #app-content.user-list-grid .row>div.mailAddress>input,#body-settings #app-content.user-list-grid .row>.displayName>form.displayName>input,#body-settings #app-content.user-list-grid .row>.displayName>form.mailAddress>input,#body-settings #app-content.user-list-grid .row>form.displayName>input,#body-settings #app-content.user-list-grid .row>form.mailAddress>input{text-overflow:ellipsis;flex-grow:1}#body-settings #app-content.user-list-grid .row>div.name,#body-settings #app-content.user-list-grid .row>div.userBackend,#body-settings #app-content.user-list-grid .row>.displayName>form.name,#body-settings #app-content.user-list-grid .row>.displayName>form.userBackend,#body-settings #app-content.user-list-grid .row>form.name,#body-settings #app-content.user-list-grid .row>form.userBackend{line-height:1.3em;max-height:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#body-settings #app-content.user-list-grid .row>div.name .subtitle,#body-settings #app-content.user-list-grid .row>.displayName>form.name .subtitle,#body-settings #app-content.user-list-grid .row>form.name .subtitle{color:var(--color-main-text)}#body-settings #app-content.user-list-grid .row>div.quota,#body-settings #app-content.user-list-grid .row>.displayName>form.quota,#body-settings #app-content.user-list-grid .row>form.quota{display:flex;justify-content:left;white-space:nowrap;position:relative}#body-settings #app-content.user-list-grid .row>div.quota progress,#body-settings #app-content.user-list-grid .row>.displayName>form.quota progress,#body-settings #app-content.user-list-grid .row>form.quota progress{width:150px;margin-top:35px;height:3px}#body-settings #app-content.user-list-grid .row>div .icon-confirm,#body-settings #app-content.user-list-grid .row>.displayName>form .icon-confirm,#body-settings #app-content.user-list-grid .row>form .icon-confirm{flex:0 0 auto;cursor:pointer}#body-settings #app-content.user-list-grid .row>div .icon-confirm:not(:active),#body-settings #app-content.user-list-grid .row>.displayName>form .icon-confirm:not(:active),#body-settings #app-content.user-list-grid .row>form .icon-confirm:not(:active){display:none}#body-settings #app-content.user-list-grid .row>div.avatar,#body-settings #app-content.user-list-grid .row>.displayName>form.avatar,#body-settings #app-content.user-list-grid .row>form.avatar{height:32px;width:32px;margin:6px}#body-settings #app-content.user-list-grid .row>div.avatar img,#body-settings #app-content.user-list-grid .row>.displayName>form.avatar img,#body-settings #app-content.user-list-grid .row>form.avatar img{display:block}#body-settings #app-content.user-list-grid .row>div.userActions,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions,#body-settings #app-content.user-list-grid .row>form.userActions{display:flex;justify-content:flex-end}#body-settings #app-content.user-list-grid .row>div.userActions #newsubmit,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions #newsubmit,#body-settings #app-content.user-list-grid .row>form.userActions #newsubmit{width:100%}#body-settings #app-content.user-list-grid .row>div.userActions .toggleUserActions,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions .toggleUserActions,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions{position:relative;display:flex;align-items:center;background-color:var(--color-main-background)}#body-settings #app-content.user-list-grid .row>div.userActions .toggleUserActions .icon-more,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions .toggleUserActions .icon-more,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more{width:44px;height:44px;opacity:.5;cursor:pointer}#body-settings #app-content.user-list-grid .row>div.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>div.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>div.userActions .toggleUserActions .icon-more:active,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions .toggleUserActions .icon-more:active,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:active{opacity:.7;background-color:var(--color-background-dark)}#body-settings #app-content.user-list-grid .row>div.userActions .feedback,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions .feedback,#body-settings #app-content.user-list-grid .row>form.userActions .feedback{display:flex;align-items:center;white-space:nowrap;transition:opacity 200ms ease-in-out}#body-settings #app-content.user-list-grid .row>div.userActions .feedback .icon-checkmark,#body-settings #app-content.user-list-grid .row>.displayName>form.userActions .feedback .icon-checkmark,#body-settings #app-content.user-list-grid .row>form.userActions .feedback .icon-checkmark{opacity:.5;margin-right:5px}#body-settings #app-content.user-list-grid .row>div .multiselect.multiselect-vue,#body-settings #app-content.user-list-grid .row>.displayName>form .multiselect.multiselect-vue,#body-settings #app-content.user-list-grid .row>form .multiselect.multiselect-vue{min-width:100%;width:100%}#body-settings #app-content.user-list-grid .infinite-loading-container{display:flex;align-items:center;justify-content:center;grid-row-start:span 4}#body-settings #app-content.user-list-grid .users-list-end{opacity:.5;user-select:none}.animated{animation:blink-animation 1s steps(5, start) 4}@keyframes blink-animation{to{opacity:.6}}@-webkit-keyframes blink-animation{to{opacity:1}}/*# sourceMappingURL=settings.css.map */
+input#openid,input#webdav{width:20em}.clear{clear:both}.nav-icon-personal-settings{background-image:var(--icon-personal-dark)}.nav-icon-security{background-image:var(--icon-toggle-filelist-dark)}.nav-icon-clientsbox{background-image:var(--icon-change-dark)}.nav-icon-federated-cloud{background-image:var(--icon-share-dark)}.nav-icon-second-factor-backup-codes,.nav-icon-ssl-root-certificate{background-image:var(--icon-password-dark)}#personal-settings-avatar-container{display:inline-grid;grid-template-columns:1fr;grid-template-rows:2fr 1fr 2fr;vertical-align:top}.profile-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-show-container{width:100%}.personal-settings-setting-box .section{padding:10px 30px}.personal-settings-setting-box .section .headerbar-label{margin-bottom:0}.personal-settings-setting-box .section input[type=text],.personal-settings-setting-box .section input[type=email],.personal-settings-setting-box .section input[type=tel],.personal-settings-setting-box .section input[type=url]{width:100%}.personal-settings-setting-box-profile{grid-row:3/5}.personal-settings-setting-box-detail{grid-row:5}.personal-settings-setting-box-detail--without-profile{grid-row:3}select#timezone{width:100%}#personal-settings{display:grid;padding:20px;max-width:1700px;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-column-gap:10px}#personal-settings .section{padding:10px 10px;border:0}#personal-settings .section h2{margin-bottom:12px}#personal-settings .section h3>label{font-weight:bold}#personal-settings .personal-info{margin-right:10%;margin-bottom:12px;margin-top:12px}#personal-settings .personal-info[class^=icon-],#personal-settings .personal-info[class*=" icon-"]{background-position:0px 2px;padding-left:30px;opacity:.7}.development-notice{text-align:center}.development-notice a:not(.link-button){text-decoration:underline}.development-notice a:not(.link-button):hover{background-color:var(--color-primary-element-hover)}.link-button{display:inline-block;margin:16px;padding:14px 20px;background-color:var(--color-primary-element);color:#fff;border-radius:var(--border-radius-pill);border:1px solid var(--color-primary-element);box-shadow:0 2px 9px var(--color-box-shadow)}.link-button:active,.link-button:hover,.link-button:focus{color:var(--color-primary-element);background-color:var(--color-primary-element-text);border-color:var(--color-primary-element) !important}.link-button.icon-file{padding-left:48px;background-position:24px}.personal-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-settings-container:after{clear:both}.personal-settings-container>div h3{position:relative;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start;width:100%;align-items:center;gap:8px}.personal-settings-container>div h3>label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.personal-settings-container>div>form span[class^=icon-checkmark],.personal-settings-container>div>form span[class^=icon-error]{position:relative;right:8px;top:-28px;pointer-events:none;float:right}.personal-settings-container .verify{position:relative;left:100%;top:0;height:0}.personal-settings-container .verify img{padding:12px 7px 6px}.personal-settings-container .verify-action{cursor:pointer}.personal-settings-container input:disabled{background-color:#fff;color:#000;border:none;opacity:100}.verification-dialog{display:none;right:-9px;top:40px;width:275px}.verification-dialog p{padding:10px}.verification-dialog .verificationCode{font-family:monospace;display:block;overflow-wrap:break-word}.federation-menu{position:relative;cursor:pointer;width:44px;height:44px;padding:10px;margin:0;background:none;border:none}.federation-menu:hover,.federation-menu:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.federation-menu:hover .icon-federation-menu,.federation-menu:focus .icon-federation-menu{opacity:.8}.federation-menu .icon-federation-menu{padding-left:16px;background-size:16px;background-position:left center;opacity:.3;cursor:inherit}.federation-menu .icon-federation-menu .icon-triangle-s{display:inline-block;vertical-align:middle;cursor:inherit}.federation-menu .federationScopeMenu{top:44px}.federation-menu .federationScopeMenu.popovermenu .menuitem{font-size:12.8px;line-height:1.6em}.federation-menu .federationScopeMenu.popovermenu .menuitem .menuitem-text-detail{opacity:.75}.federation-menu .federationScopeMenu.popovermenu .menuitem.active{box-shadow:inset 2px 0 var(--color-primary-element)}.federation-menu .federationScopeMenu.popovermenu .menuitem.active .menuitem-text{font-weight:bold}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled{opacity:.5;cursor:default}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled *{cursor:default}.clientsbox img{height:60px}#sslCertificate tr.expired{background-color:rgba(255,0,0,.5)}#sslCertificate td{padding:5px}#displaynameerror,#displaynamechanged{display:none}input#identity{width:20em}#showWizard{display:inline-block}.msg.success{color:#fff;background-color:#47a447;padding:3px}.msg.error{color:#fff;background-color:#d2322d;padding:3px}table.nostyle label{margin-right:2em}table.nostyle td{padding:.2em 0}#security-password #passwordform{display:flex;flex-wrap:wrap;flex-direction:column;gap:1rem}#security-password #passwordform .input-control{display:flex;flex-wrap:wrap;flex-direction:column}#security-password #passwordform .input-control label{margin-bottom:.5rem}#security-password #passwordform #pass1,#security-password #passwordform .personal-show-container{flex-shrink:1;width:300px;min-width:150px}#security-password #passwordform .personal-show-container #pass2{position:relative;top:.5rem}#security-password #passwordform .personal-show-container .personal-show-label{top:34px !important;margin-right:0;margin-top:0 !important;right:3px}#security-password #passwordform #pass2{width:100%}#security-password #passwordform .password-state{display:inline-block}#security-password #passwordform .strengthify-wrapper{position:absolute;left:0;width:100%;border-radius:0 0 2px 2px;margin-top:5px;overflow:hidden;height:3px}#two-factor-auth h3{margin-top:24px}#two-factor-auth li>div{margin-left:20px}#two-factor-auth .two-factor-provider-settings-icon{width:16px;height:16px;vertical-align:sub;filter:var(--background-invert-if-dark)}.isgroup .groupname{width:85%;display:block;overflow:hidden;text-overflow:ellipsis}.isgroup.active .groupname{width:65%}li.active .delete,li.active .rename{display:block}.app-navigation-entry-utils .delete,.app-navigation-entry-utils .rename{display:none}#usersearchform{position:absolute;top:2px;right:0}#usersearchform input{width:150px}#usersearchform label{font-weight:bold}table.grid{width:100%}table.grid th{height:2em;color:#999;border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}table.grid td{border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}td.name,th.name{padding-left:.8em;min-width:5em;max-width:12em;text-overflow:ellipsis;overflow:hidden}td.password,th.password{padding-left:.8em}td.password>img,th.password>img{visibility:hidden}td.displayName>img,th.displayName>img{visibility:hidden}td.password,td.mailAddress,th.password,th.mailAddress{min-width:5em;max-width:12em;cursor:pointer}td.password span,td.mailAddress span,th.password span,th.mailAddress span{width:90%;display:inline-block;text-overflow:ellipsis;overflow:hidden}td.mailAddress,th.mailAddress{cursor:pointer}td.password>span,th.password>span{margin-right:1.2em;color:#c7c7c7}span.usersLastLoginTooltip{white-space:nowrap}#app-content>svg.app-filter{float:left;height:0;width:0}#app-category-app-bundles{margin-bottom:20px}.appinfo{margin:1em 40px}#app-navigation img{margin-bottom:-3px;margin-right:6px;width:16px}#app-navigation li span.no-icon{padding-left:32px}#app-navigation ul li.active>span.utils .delete,#app-navigation ul li.active>span.utils .rename{display:block}#app-navigation .appwarning{background:#fcc}#app-navigation.appwarning:hover{background:#fbb}#app-navigation .app-external{color:var(--color-text-maxcontrast)}span.version{margin-left:1em;margin-right:1em;color:var(--color-text-maxcontrast)}.app-version{color:var(--color-text-maxcontrast)}.app-level span{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);padding:3px 6px}.app-level a{padding:10px;margin:-6px;white-space:nowrap}.app-level .official{background-position:left center;background-position:5px center;padding-left:25px}.app-level .supported{border-color:var(--color-success);background-position:left center;background-position:5px center;padding-left:25px;color:var(--color-success)}.app-score{position:relative;top:4px;opacity:.5}.app-settings-content #searchresults{display:none}#apps-list.store .section{border:0}#apps-list.store .app-name{display:block;margin:5px 0}#apps-list.store .app-name,#apps-list.store .app-image *{cursor:pointer}#apps-list.store .app-summary{opacity:.7}#apps-list.store .app-image-icon .icon-settings-dark{width:100%;height:150px;background-size:45px;opacity:.5}#apps-list.store .app-score-image{height:14px}#apps-list.store .actions{margin-top:10px}#app-sidebar #app-details-view h2 .icon-settings-dark,#app-sidebar #app-details-view h2 svg{display:inline-block;width:16px;height:16px;margin-right:10px;opacity:.7}#app-sidebar #app-details-view .app-level{clear:right;width:100%}#app-sidebar #app-details-view .app-level .supported,#app-sidebar #app-details-view .app-level .official{vertical-align:top}#app-sidebar #app-details-view .app-level .app-score-image{float:right}#app-sidebar #app-details-view .app-author,#app-sidebar #app-details-view .app-licence{color:var(--color-text-maxcontrast)}#app-sidebar #app-details-view .app-dependencies{margin:10px 0}#app-sidebar #app-details-view .app-description p{margin:10px 0}#app-sidebar #app-details-view .close{position:absolute;top:0;right:0;padding:14px;opacity:.5;z-index:1;width:44px;height:44px}#app-sidebar #app-details-view .actions{display:flex;align-items:center}#app-sidebar #app-details-view .actions .app-groups{padding:5px}#app-sidebar #app-details-view .appslink{text-decoration:underline;margin-right:5px}#app-sidebar #app-details-view .app-level,#app-sidebar #app-details-view .actions,#app-sidebar #app-details-view .documentation,#app-sidebar #app-details-view .app-dependencies,#app-sidebar #app-details-view .app-description{margin:20px 0}@media only screen and (min-width: 1601px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1600px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1400px){.store .section{width:33%}.with-app-sidebar .store .section{width:50%}}@media only screen and (max-width: 900px){.store .section{width:50%}.with-app-sidebar .store .section{width:100%}}@media only screen and (max-width: 1024px){.store .section{width:50%}}@media only screen and (max-width: 480px){.store .section{width:100%}}@media only screen and (max-width: 900px){.apps-list.installed .app-version,.apps-list.installed .app-level{display:none !important}}@media only screen and (max-width: 500px){.apps-list.installed .app-groups{display:none !important}}.section{margin-bottom:0}.section:not(:last-child){border-bottom:1px solid var(--color-border)}.section h2{margin-bottom:22px}.section h2 .icon-info{padding:6px 20px;vertical-align:text-bottom;display:inline-block}.followupsection{display:block;padding:0 30px 30px 30px}.app-image{position:relative;height:150px;opacity:1;overflow:hidden}.app-name,.app-version,.app-score,.app-level{display:inline-block}.app-description-toggle-show,.app-description-toggle-hide{clear:both;padding:7px 0;cursor:pointer;opacity:.5}.app-description-container{clear:both;position:relative;top:7px}.app-description{clear:both}#app-category-1{margin-bottom:18px}#app-category-925{text-transform:capitalize}.app-dependencies{color:#ce3702}.missing-dependencies{list-style:initial;list-style-type:initial;list-style-position:inside}.apps-list{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list .section{cursor:pointer}.apps-list .app-list-move{transition:transform 1s}.apps-list #app-list-update-all{margin-left:10px}.apps-list .toolbar{height:60px;padding:8px;padding-left:60px;width:100%;background-color:var(--color-main-background);position:sticky;top:0;z-index:1;display:flex;align-items:center}.apps-list.installed{margin-bottom:100px}.apps-list.installed .apps-list-container{display:table;width:100%;height:auto;margin-top:60px}.apps-list.installed .section{display:table-row;padding:0;margin:0}.apps-list.installed .section>*{display:table-cell;height:initial;vertical-align:middle;float:none;border-bottom:1px solid var(--color-border);padding:6px;box-sizing:border-box}.apps-list.installed .section.selected{background-color:var(--color-background-dark)}.apps-list.installed .groups-enable{margin-top:0}.apps-list.installed .groups-enable label{margin-right:3px}.apps-list.installed .app-image{width:44px;height:auto;text-align:right}.apps-list.installed .app-image-icon svg,.apps-list.installed .app-image-icon .icon-settings-dark{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.apps-list.installed .actions{text-align:right}.apps-list.installed .actions .icon-loading-small{display:inline-block;top:4px;margin-right:10px}.apps-list:not(.installed) .app-image-icon svg{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.apps-list.hidden{display:none}.apps-list .section{position:relative;flex:0 0 auto}.apps-list .section h2.app-name{display:block;margin:8px 0}.apps-list .section:hover{background-color:var(--color-background-dark)}.apps-list .app-description p{margin:10px 0}.apps-list .app-description ul{list-style:disc}.apps-list .app-description ol{list-style:decimal}.apps-list .app-description ol ol,.apps-list .app-description ol ul{padding-left:15px}.apps-list .app-description>ul,.apps-list .app-description>ol{margin-left:19px}.apps-list .app-description ul ol,.apps-list .app-description ul ul{padding-left:15px}.apps-list .apps-header{display:table-row;position:relative}.apps-list .apps-header div{display:table-cell;height:70px}.apps-list .apps-header h2{display:table-cell;position:absolute;padding-left:6px;padding-top:15px}.apps-list .apps-header h2 .enable{position:relative;top:-1px;margin-left:12px}.apps-list .apps-header h2+.section{margin-top:50px}#apps-list-search .section h2{margin-bottom:0}#log{white-space:normal;margin-bottom:14px}#lessLog{display:none}table.grid td.date{white-space:nowrap}#log-section p{margin-top:20px}#security-warning-state-ok span,#security-warning-state-warning span,#security-warning-state-failure span,#security-warning-state-loading span{vertical-align:middle}#security-warning-state-ok span.message,#security-warning-state-warning span.message,#security-warning-state-failure span.message,#security-warning-state-loading span.message{padding:12px}#security-warning-state-ok span.icon,#security-warning-state-warning span.icon,#security-warning-state-failure span.icon,#security-warning-state-loading span.icon{width:32px;height:32px;background-position:center center;display:inline-block;border-radius:50%}#security-warning-state-ok span.icon-checkmark-white,#security-warning-state-warning span.icon-checkmark-white,#security-warning-state-failure span.icon-checkmark-white,#security-warning-state-loading span.icon-checkmark-white{background-color:var(--color-success)}#security-warning-state-ok span.icon-error-white,#security-warning-state-warning span.icon-error-white,#security-warning-state-failure span.icon-error-white,#security-warning-state-loading span.icon-error-white{background-color:var(--color-warning)}#security-warning-state-ok span.icon-close-white,#security-warning-state-warning span.icon-close-white,#security-warning-state-failure span.icon-close-white,#security-warning-state-loading span.icon-close-white{background-color:var(--color-error)}#shareAPI.loading>div{display:none}#shareAPI p{padding-bottom:.8em}#shareAPI input#shareapiExpireAfterNDays{width:40px}#shareAPI .indent{padding-left:28px}#shareAPI .double-indent{padding-left:56px}#shareAPI .nocheckbox{padding-left:20px}#shareApiDefaultPermissionsSection label{margin-right:20px}#fileSharingSettings h3{display:inline-block}#publicShareDisclaimerText{width:calc(100% - 23px);max-width:600px;height:150px;margin-left:20px;box-sizing:border-box}.icon-info{padding:11px 20px;vertical-align:text-bottom;opacity:.5}#two-factor-auth h2,#shareAPI h2,#mail_general_settings h2{display:inline-block}.mail_settings p label:first-child{display:inline-block;width:300px;text-align:right}.mail_settings p select:nth-child(2),.mail_settings p input:not([type=button]){width:143px}#mail_smtpport{width:60px}.cronlog{margin-left:10px}.status{display:inline-block;height:16px;width:16px;vertical-align:text-bottom}.status.success{border-radius:50%}#selectGroups select{box-sizing:border-box;display:inline-block;height:36px;padding:7px 10px}#log .log-message{word-break:break-all;min-width:180px}span.success{background-color:var(--color-success);border-radius:var(--border-radius)}span.error{background-color:var(--color-error)}span.indeterminate{background-color:var(--color-warning);border-radius:40% 0}doesnotexist:-o-prefocus,.strengthify-wrapper{left:185px;width:129px}.trusted-domain-warning{color:#fff;padding:5px;background:#ce3702;border-radius:5px;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}#postsetupchecks ul{margin-left:44px;list-style:disc}#postsetupchecks ul li{margin:10px 0}#postsetupchecks ul ul{list-style:circle}#postsetupchecks .loading{height:50px;background-position:left center}#postsetupchecks .errors,#postsetupchecks .errors a{color:var(--color-error)}#postsetupchecks .warnings,#postsetupchecks .warnings a{color:var(--color-warning)}#postsetupchecks .hint{margin:20px 0}#security-warning a{text-decoration:underline}#security-warning .extra-top-margin{margin-top:12px}#admin-tips li{list-style:initial}#admin-tips li a{display:inline-block;padding:3px 0}#warning{color:red}.settings-hint{margin-top:-12px;margin-bottom:12px;opacity:.7}#body-settings #app-content.user-list-grid{display:grid;grid-column-gap:20px;grid-auto-rows:minmax(60px, max-content)}#body-settings #app-content.user-list-grid .row{display:flex;display:grid;min-height:60px;grid-row-start:span 1;grid-gap:3px;align-items:center;grid-template-columns:44px minmax(190px, 1fr) minmax(160px, 1fr) minmax(160px, 1fr) minmax(240px, 1fr) minmax(240px, 1fr) minmax(160px, 1fr) minmax(240px, 1fr) repeat(auto-fit, minmax(160px, 1fr));border-bottom:var(--color-border) 1px solid}#body-settings #app-content.user-list-grid .row.disabled{opacity:.5}#body-settings #app-content.user-list-grid .row .name,#body-settings #app-content.user-list-grid .row .password,#body-settings #app-content.user-list-grid .row .mailAddress,#body-settings #app-content.user-list-grid .row .languages,#body-settings #app-content.user-list-grid .row .storageLocation,#body-settings #app-content.user-list-grid .row .userBackend,#body-settings #app-content.user-list-grid .row .lastLogin{min-width:160px}#body-settings #app-content.user-list-grid .row .name doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .name .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .password doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .password .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .mailAddress doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .mailAddress .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .languages doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .languages .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .storageLocation doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .storageLocation .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .userBackend doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .userBackend .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .lastLogin doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .lastLogin .strengthify-wrapper{color:var(--color-text-dark);vertical-align:baseline;text-overflow:ellipsis}#body-settings #app-content.user-list-grid .row:not(.row--editable).name,#body-settings #app-content.user-list-grid .row:not(.row--editable).password,#body-settings #app-content.user-list-grid .row:not(.row--editable).displayName,#body-settings #app-content.user-list-grid .row:not(.row--editable).mailAddress,#body-settings #app-content.user-list-grid .row:not(.row--editable).userBackend,#body-settings #app-content.user-list-grid .row:not(.row--editable).languages{overflow:hidden}#body-settings #app-content.user-list-grid .row:not(.row--editable) .groups,#body-settings #app-content.user-list-grid .row:not(.row--editable) .subadmins{overflow:auto;max-height:100%}#body-settings #app-content.user-list-grid .row .managers,#body-settings #app-content.user-list-grid .row .groups,#body-settings #app-content.user-list-grid .row .subadmins,#body-settings #app-content.user-list-grid .row .quota{min-width:160px}#body-settings #app-content.user-list-grid .row .managers .multiselect,#body-settings #app-content.user-list-grid .row .groups .multiselect,#body-settings #app-content.user-list-grid .row .subadmins .multiselect,#body-settings #app-content.user-list-grid .row .quota .multiselect{width:100%;color:var(--color-text-dark);vertical-align:baseline}#body-settings #app-content.user-list-grid .row .managers progress,#body-settings #app-content.user-list-grid .row .groups progress,#body-settings #app-content.user-list-grid .row .subadmins progress,#body-settings #app-content.user-list-grid .row .quota progress{max-width:95%}#body-settings #app-content.user-list-grid .row .obfuscated{width:400px;opacity:.7}#body-settings #app-content.user-list-grid .row .userActions{display:flex;justify-content:flex-end;right:0px;min-width:88px}#body-settings #app-content.user-list-grid .row .subtitle{color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row#grid-header{position:sticky;align-self:normal;background-color:var(--color-main-background);z-index:100;top:0}#body-settings #app-content.user-list-grid .row#grid-header.sticky{box-shadow:0 -2px 10px 1px var(--color-box-shadow)}#body-settings #app-content.user-list-grid .row#grid-header{color:var(--color-text-maxcontrast);border-bottom-width:thin}#body-settings #app-content.user-list-grid .row#grid-header #headerDisplayName,#body-settings #app-content.user-list-grid .row#grid-header #headerPassword,#body-settings #app-content.user-list-grid .row#grid-header #headerAddress,#body-settings #app-content.user-list-grid .row#grid-header #headerGroups,#body-settings #app-content.user-list-grid .row#grid-header #headerSubAdmins,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderUserBackend,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderLastLogin,#body-settings #app-content.user-list-grid .row#grid-header #headerQuota,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderStorageLocation,#body-settings #app-content.user-list-grid .row#grid-header #headerLanguages{padding-left:7px;text-transform:none;color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row:hover:not(#grid-header){box-shadow:5px 0 0 var(--color-primary-element) inset}#body-settings #app-content.user-list-grid .row>form{width:100%}#body-settings #app-content.user-list-grid .row>td,#body-settings #app-content.user-list-grid .row>form{grid-row:1;display:inline-flex;color:var(--color-text-lighter);flex-grow:1}#body-settings #app-content.user-list-grid .row>td>input:not(:focus):not(:active),#body-settings #app-content.user-list-grid .row>form>input:not(:focus):not(:active){border-color:rgba(0,0,0,0);cursor:pointer}#body-settings #app-content.user-list-grid .row>td>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>td>input:active+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:active+.icon-confirm{display:block !important}#body-settings #app-content.user-list-grid .row>td:not(.userActions)>input:not([type=submit]),#body-settings #app-content.user-list-grid .row>form:not(.userActions)>input:not([type=submit]){width:100%;min-width:0}#body-settings #app-content.user-list-grid .row>td.name,#body-settings #app-content.user-list-grid .row>form.name{word-break:break-all}#body-settings #app-content.user-list-grid .row>td.displayName>input,#body-settings #app-content.user-list-grid .row>td.mailAddress>input,#body-settings #app-content.user-list-grid .row>form.displayName>input,#body-settings #app-content.user-list-grid .row>form.mailAddress>input{text-overflow:ellipsis;flex-grow:1}#body-settings #app-content.user-list-grid .row>td.name,#body-settings #app-content.user-list-grid .row>td.userBackend,#body-settings #app-content.user-list-grid .row>form.name,#body-settings #app-content.user-list-grid .row>form.userBackend{line-height:1.3em;max-height:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#body-settings #app-content.user-list-grid .row>td.name .subtitle,#body-settings #app-content.user-list-grid .row>form.name .subtitle{color:var(--color-main-text)}#body-settings #app-content.user-list-grid .row>td.quota,#body-settings #app-content.user-list-grid .row>form.quota{display:flex;justify-content:left;white-space:nowrap;position:relative}#body-settings #app-content.user-list-grid .row>td.quota progress,#body-settings #app-content.user-list-grid .row>form.quota progress{width:150px;margin-top:35px;height:3px}#body-settings #app-content.user-list-grid .row>td .icon-confirm,#body-settings #app-content.user-list-grid .row>form .icon-confirm{flex:0 0 auto;cursor:pointer}#body-settings #app-content.user-list-grid .row>td .icon-confirm:not(:active),#body-settings #app-content.user-list-grid .row>form .icon-confirm:not(:active){display:none}#body-settings #app-content.user-list-grid .row>td.avatar,#body-settings #app-content.user-list-grid .row>form.avatar{height:32px;width:32px;margin:6px}#body-settings #app-content.user-list-grid .row>td.avatar img,#body-settings #app-content.user-list-grid .row>form.avatar img{display:block}#body-settings #app-content.user-list-grid .row>td.userActions,#body-settings #app-content.user-list-grid .row>form.userActions{display:flex;justify-content:flex-end}#body-settings #app-content.user-list-grid .row>td.userActions #newsubmit,#body-settings #app-content.user-list-grid .row>form.userActions #newsubmit{width:100%}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions{position:relative;display:flex;align-items:center;background-color:var(--color-main-background)}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more{width:44px;height:44px;opacity:.5;cursor:pointer}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:active,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:active{opacity:.7;background-color:var(--color-background-dark)}#body-settings #app-content.user-list-grid .row>td.userActions .feedback,#body-settings #app-content.user-list-grid .row>form.userActions .feedback{display:flex;align-items:center;white-space:nowrap;transition:opacity 200ms ease-in-out}#body-settings #app-content.user-list-grid .row>td.userActions .feedback .icon-checkmark,#body-settings #app-content.user-list-grid .row>form.userActions .feedback .icon-checkmark{opacity:.5;margin-right:5px}#body-settings #app-content.user-list-grid .row>td .multiselect.multiselect-vue,#body-settings #app-content.user-list-grid .row>form .multiselect.multiselect-vue{min-width:100%;width:100%}#body-settings #app-content.user-list-grid .infinite-loading-container{display:flex;align-items:center;justify-content:center;grid-row-start:span 4}#body-settings #app-content.user-list-grid .users-list-end{opacity:.5;user-select:none}.animated{animation:blink-animation 1s steps(5, start) 4}@keyframes blink-animation{to{opacity:.6}}@-webkit-keyframes blink-animation{to{opacity:1}}/*# sourceMappingURL=settings.css.map */
diff --git a/apps/settings/css/settings.css.map b/apps/settings/css/settings.css.map
index 0872e074c7c..054592d26c3 100644
--- a/apps/settings/css/settings.css.map
+++ b/apps/settings/css/settings.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAOC,0BACC,WAKF,OACC,WAID,4BC+CC,2CD3CD,mBC2CC,kDDvCD,qBCuCC,yCDnCD,0BCmCC,wCD/BD,oEC+BC,2CD3BD,oCACC,oBACA,0BACA,+BACA,mBAGD,4BACC,oBACA,kCAGD,yBACC,WAIA,wCACC,kBACA,yDACC,gBAIA,mOACC,WAKH,uCACC,aAGD,sCACC,WAED,uDACC,WAKD,gBACC,WAIF,mBACC,aACA,aACA,iBACA,4DACA,qBAEA,4BACC,kBACA,SAEA,+BACC,mBAIA,qCACC,iBAKH,kCACC,iBACA,mBACA,gBAGD,mGACC,4BACA,kBACA,WAMF,oBACC,kBACA,wCACC,0BACA,8CACC,oDAKH,aACC,qBACA,YACA,kBACA,sCACA,WACA,wCACA,sCACA,6CAEA,0DAGC,2BACA,2CACA,6CAGD,uBACC,kBACA,yBAIF,6BACC,oBACA,kCAEA,mCACC,WAIA,oCACC,kBACA,oBACA,iBACA,2BACA,WACA,mBACA,QAEA,0CACC,mBACA,uBACA,gBAKD,gIACC,kBACA,UACA,UACA,oBACA,YAKH,qCACC,kBACA,UACA,MACA,SAEA,yCACC,qBAIF,4CACC,eAGD,4CACC,sBACA,WACA,YACA,YAMF,qBACC,aACA,WACA,SACA,YAEA,uBACC,aAGD,uCACC,sBACA,cACA,yBAIF,iBACC,kBACA,eACA,WACA,YACA,aACA,SACA,gBACA,YAEA,8CAEC,+CACA,wCAEA,0FACC,WAIF,uCACC,kBACA,qBACA,gCACA,WACA,eAEA,wDACC,qBACA,sBACA,eAIF,sCACC,SAGC,4DAEC,iBACA,kBAEA,kFACC,YAGD,mEACC,4CAEA,kFACC,iBAIF,qEACC,WAEA,eAEA,uEACC,eAQN,gBACC,YAIA,2BACC,kCAGD,mBACC,YAIF,sCAEC,aAGD,eACC,WAGD,YACC,qBAIA,aACC,WACA,yBACA,YAGD,WACC,WACA,yBACA,YAMD,oBACC,iBAGD,iBACC,eAKD,iCACC,aACA,eACA,sBACA,SACA,gDACC,aACA,eACA,sBACA,sDACC,oBAIF,kGACC,cACA,YACA,gBAKA,iEACC,kBACA,UAED,+EACC,oBACA,eACA,wBACA,UAIF,wCACC,WAGD,iDACC,qBAGD,sDACC,kBACA,OACA,WACA,0BACA,eACA,gBACA,WAQF,oBACC,gBAGD,wBACC,iBAGD,oDACC,WACA,YACA,mBACA,wCAOD,oBACC,UACA,cACA,gBACA,uBAGD,2BACC,UAKD,oCAEC,cAKD,wEAEC,aAIF,gBACC,kBACA,QACA,QAEA,sBACC,YAGD,sBACC,iBAKF,WACC,WAEA,cACC,WACA,WACA,4CACA,eACA,kBACA,gBACA,mBAGD,cACC,4CACA,eACA,kBACA,gBACA,mBAKD,gBACC,kBACA,cACA,eACA,uBACA,gBAGD,wBACC,kBAEA,gCACC,kBAIF,sCACC,kBAGD,sDAEC,cACA,eACA,eAEA,0EACC,UACA,qBACA,uBACA,gBAIF,8BACC,eAGD,kCACC,mBACA,cAIF,2BACC,mBAID,4BACC,WACA,SACA,QAGD,0BACC,mBAGD,SACC,gBAKA,oBACC,mBACA,iBACA,WAGD,gCACC,kBAIA,gGACC,cAIF,4BACC,gBAGD,iCACC,gBAGD,8BACC,oCAIF,aACC,gBACA,iBACA,oCAGD,aACC,oCAIA,gBACC,oCACA,+BACA,+CACA,mCACA,gBAGD,aACC,aACA,YACA,mBAGD,qBACC,gCACA,+BACA,kBAGD,sBACC,kCACA,gCACA,+BACA,kBACA,2BAIF,WACC,kBACA,QACA,WAIA,qCACC,aAMD,0BACC,SAGD,2BACC,cACA,aAGD,yDACC,eAGD,8BACC,WAGD,qDACC,WACA,aACA,qBACA,WAGD,kCACC,YAGD,0BACC,gBAMA,4FAEC,qBACA,WACA,YACA,kBACA,WAIF,0CACC,YACA,WAEA,yGAEC,mBAGD,2DACC,YAIF,uFACC,oCAGD,iDACC,cAGD,kDACC,cAGD,sCACC,kBACA,MACA,QACA,aACA,WACA,UACA,WACA,YAGD,wCACC,aACA,mBAEA,oDACC,YAIF,yCACC,0BACA,iBAGD,iOAKC,cAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,0CACC,gBACC,UAED,kCACC,YAIF,2CACC,gBACC,WAIF,0CACC,gBACC,YAKF,0CAEE,kEACC,yBAKH,0CACC,iCACC,yBAIF,SACC,gBAEA,0BACC,4CAID,YACC,mBAEA,uBACC,iBACA,2BACA,qBAKH,iBACC,cACA,yBAGD,WACC,kBACA,aACA,UACA,gBAGD,6CACC,qBAGD,0DACC,WACA,cACA,eACA,WAGD,2BACC,WACA,kBACA,QAGD,iBACC,WAGD,gBACC,mBAKD,kBACC,0BAGD,kBACC,cAGD,sBACC,mBACA,wBACA,2BAGD,WAyGC,aACA,eACA,yBAvGA,oBACC,eAGD,0BACC,wBAGD,gCACC,iBAGD,oBACC,OAfgB,KAgBhB,QAjBiB,IAmBjB,aAlBgB,KAmBhB,WACA,8CACA,gBACA,MACA,UACA,aACA,mBAGD,qBAQC,oBAPA,0CACC,cACA,WACA,YACA,WAjCe,KAsChB,8BACC,kBACA,UACA,SAEA,gCACC,mBACA,eACA,sBACA,WACA,4CACA,YACA,sBAGD,uCACC,8CAKF,oCACC,aAEA,0CACC,iBAIF,gCACC,WACA,YACA,iBAGD,kGAEC,eACA,WACA,YACA,WACA,sBACA,qBAGD,8BACC,iBAEA,kDACC,qBACA,QACA,kBAKH,+CACC,kBACA,YAEA,WACA,YACA,WAOD,kBACC,aAGD,oBACC,kBACA,cAEA,gCACC,cACA,aAGD,0BACC,8CAKD,8BACC,cAGD,+BACC,gBAGD,+BACC,mBAEA,oEACC,kBAKD,8DACC,iBAKD,oEACC,kBAMH,wBACC,kBACA,kBAEA,4BACC,mBACA,YAGD,2BACC,mBACA,kBACA,iBACA,iBAEA,mCACC,kBACA,SACA,iBAGD,oCACC,gBAQF,8BACC,gBAMH,KACC,mBACA,mBAGD,SACC,aAGD,mBACC,mBAGD,eACC,gBAOA,+IACC,sBAEA,+KACC,aAGD,mKACC,WACA,YACA,kCACA,qBACA,kBAGD,mOACC,sCAGD,mNACC,sCAGD,mNACC,oCAMF,YACC,oBAGD,yCACC,WAGD,kBACC,kBAGD,yBACC,kBAGD,sBACC,kBAIF,yCACC,kBAGD,wBACC,qBAGD,2BACC,wBAEA,gBACA,aACA,iBACA,sBAKD,WACC,kBACA,2BACA,WAGD,2DAGC,qBAIA,mCACC,qBACA,YACA,iBAGD,+EAEC,YAIF,eACC,WAGD,SACC,iBAGD,QACC,qBACA,YACA,WACA,2BAEA,gBACC,kBAIF,qBACC,sBACA,qBACA,YACA,iBAGD,kBACC,qBACA,gBAIA,aACC,sCACA,mCAGD,WACC,oCAGD,mBACC,sCACA,oBAMF,8CACC,WACA,YAGD,wBACC,WACA,YACA,mBACA,kBACA,+DAIA,oBACC,iBACA,gBAEA,uBACC,cAGD,uBACC,kBAIF,0BACC,YACA,gCAGD,oDACC,yBAGD,wDACC,2BAGD,uBACC,cAKD,oBACC,0BAGD,oCACC,gBAIF,eACC,mBAEA,iBACC,qBACA,cAIF,SACC,UAGD,eACC,iBACA,mBACA,WASA,2CACC,aACA,qBACA,yCAEA,gDAGC,aACA,aACA,WAbgB,KAchB,sBACA,aACA,mBAGA,sBACE,yIAOF,4CAEA,yDACC,WAID,iaAOC,UAxCkB,MA0ClB,ooCACC,6BACA,wBACA,uBAKD,odAMC,gBAMD,2JAEC,cACA,gBAIF,0KAGC,UAxEkB,MA0ElB,iNACC,WACA,6BACA,wBAGD,qMACC,cAIF,4DACC,YACA,WAGD,6DACC,aACA,yBACA,gBACA,UACA,eACA,8CAGD,2EACC,WAGD,0DACC,oCACA,wBAID,4DACC,gBACA,kBACA,8CACA,YACA,MAEA,mEACC,mDAIF,4DACC,oCACA,yBAEA,2wBAWC,iBACA,oBACA,oCACA,wBAKD,wGACC,4CAGD,wEACC,sDAIF,qDACC,WAGD,2KAGC,WACA,oBACA,gCACA,YAEA,wQACC,2BACA,eAIA,qfACC,yBAKF,4SACC,WACA,YAGD,0LACC,qBAKA,kcACC,uBACA,YAIF,yYAGC,kBACA,gBACA,gBAIA,uBACA,oBACA,qBACA,4BAGD,wNACC,6BAGD,6LACC,aACA,qBACA,mBACA,kBAEA,wNACC,YACA,gBACA,WAIF,qNACC,cACA,eAEA,4PACC,aAIF,gMACC,YACA,WACA,WAEA,4MACC,cAIF,+MACC,aACA,yBAEA,gPACC,WAGD,wQACC,kBACA,aACA,mBACA,8CAEA,ySACC,WACA,YACA,WACA,eAEA,o7BAGC,WACA,8CAKH,6OACC,aACA,mBACA,mBACA,qCAEA,6RACC,WACA,iBAMH,kQACC,eACA,WAKH,uEACC,aACA,mBACA,uBACA,sBAGD,2DACC,WACA,iBAKH,UACI,+CAGJ,2BACE,GACE,YAGJ,mCACE,GACE","file":"settings.css"} \ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAOC,0BACC,WAKF,OACC,WAID,4BC+CC,2CD3CD,mBC2CC,kDDvCD,qBCuCC,yCDnCD,0BCmCC,wCD/BD,oEC+BC,2CD3BD,oCACC,oBACA,0BACA,+BACA,mBAGD,4BACC,oBACA,kCAGD,yBACC,WAIA,wCACC,kBACA,yDACC,gBAIA,mOACC,WAKH,uCACC,aAGD,sCACC,WAED,uDACC,WAKD,gBACC,WAIF,mBACC,aACA,aACA,iBACA,4DACA,qBAEA,4BACC,kBACA,SAEA,+BACC,mBAIA,qCACC,iBAKH,kCACC,iBACA,mBACA,gBAGD,mGACC,4BACA,kBACA,WAMF,oBACC,kBACA,wCACC,0BACA,8CACC,oDAKH,aACC,qBACA,YACA,kBACA,8CACA,WACA,wCACA,8CACA,6CAEA,0DAGC,mCACA,mDACA,qDAGD,uBACC,kBACA,yBAIF,6BACC,oBACA,kCAEA,mCACC,WAIA,oCACC,kBACA,oBACA,iBACA,2BACA,WACA,mBACA,QAEA,0CACC,mBACA,uBACA,gBAKD,gIACC,kBACA,UACA,UACA,oBACA,YAKH,qCACC,kBACA,UACA,MACA,SAEA,yCACC,qBAIF,4CACC,eAGD,4CACC,sBACA,WACA,YACA,YAMF,qBACC,aACA,WACA,SACA,YAEA,uBACC,aAGD,uCACC,sBACA,cACA,yBAIF,iBACC,kBACA,eACA,WACA,YACA,aACA,SACA,gBACA,YAEA,8CAEC,+CACA,wCAEA,0FACC,WAIF,uCACC,kBACA,qBACA,gCACA,WACA,eAEA,wDACC,qBACA,sBACA,eAIF,sCACC,SAGC,4DAEC,iBACA,kBAEA,kFACC,YAGD,mEACC,oDAEA,kFACC,iBAIF,qEACC,WAEA,eAEA,uEACC,eAQN,gBACC,YAIA,2BACC,kCAGD,mBACC,YAIF,sCAEC,aAGD,eACC,WAGD,YACC,qBAIA,aACC,WACA,yBACA,YAGD,WACC,WACA,yBACA,YAMD,oBACC,iBAGD,iBACC,eAKD,iCACC,aACA,eACA,sBACA,SACA,gDACC,aACA,eACA,sBACA,sDACC,oBAIF,kGACC,cACA,YACA,gBAKA,iEACC,kBACA,UAED,+EACC,oBACA,eACA,wBACA,UAIF,wCACC,WAGD,iDACC,qBAGD,sDACC,kBACA,OACA,WACA,0BACA,eACA,gBACA,WAQF,oBACC,gBAGD,wBACC,iBAGD,oDACC,WACA,YACA,mBACA,wCAOD,oBACC,UACA,cACA,gBACA,uBAGD,2BACC,UAKD,oCAEC,cAKD,wEAEC,aAIF,gBACC,kBACA,QACA,QAEA,sBACC,YAGD,sBACC,iBAKF,WACC,WAEA,cACC,WACA,WACA,4CACA,eACA,kBACA,gBACA,mBAGD,cACC,4CACA,eACA,kBACA,gBACA,mBAKD,gBACC,kBACA,cACA,eACA,uBACA,gBAGD,wBACC,kBAEA,gCACC,kBAIF,sCACC,kBAGD,sDAEC,cACA,eACA,eAEA,0EACC,UACA,qBACA,uBACA,gBAIF,8BACC,eAGD,kCACC,mBACA,cAIF,2BACC,mBAID,4BACC,WACA,SACA,QAGD,0BACC,mBAGD,SACC,gBAKA,oBACC,mBACA,iBACA,WAGD,gCACC,kBAIA,gGACC,cAIF,4BACC,gBAGD,iCACC,gBAGD,8BACC,oCAIF,aACC,gBACA,iBACA,oCAGD,aACC,oCAIA,gBACC,oCACA,+BACA,+CACA,mCACA,gBAGD,aACC,aACA,YACA,mBAGD,qBACC,gCACA,+BACA,kBAGD,sBACC,kCACA,gCACA,+BACA,kBACA,2BAIF,WACC,kBACA,QACA,WAIA,qCACC,aAMD,0BACC,SAGD,2BACC,cACA,aAGD,yDACC,eAGD,8BACC,WAGD,qDACC,WACA,aACA,qBACA,WAGD,kCACC,YAGD,0BACC,gBAMA,4FAEC,qBACA,WACA,YACA,kBACA,WAIF,0CACC,YACA,WAEA,yGAEC,mBAGD,2DACC,YAIF,uFACC,oCAGD,iDACC,cAGD,kDACC,cAGD,sCACC,kBACA,MACA,QACA,aACA,WACA,UACA,WACA,YAGD,wCACC,aACA,mBAEA,oDACC,YAIF,yCACC,0BACA,iBAGD,iOAKC,cAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,0CACC,gBACC,UAED,kCACC,YAIF,2CACC,gBACC,WAIF,0CACC,gBACC,YAKF,0CAEE,kEACC,yBAKH,0CACC,iCACC,yBAIF,SACC,gBAEA,0BACC,4CAID,YACC,mBAEA,uBACC,iBACA,2BACA,qBAKH,iBACC,cACA,yBAGD,WACC,kBACA,aACA,UACA,gBAGD,6CACC,qBAGD,0DACC,WACA,cACA,eACA,WAGD,2BACC,WACA,kBACA,QAGD,iBACC,WAGD,gBACC,mBAKD,kBACC,0BAGD,kBACC,cAGD,sBACC,mBACA,wBACA,2BAGD,WAyGC,aACA,eACA,yBAvGA,oBACC,eAGD,0BACC,wBAGD,gCACC,iBAGD,oBACC,OAfgB,KAgBhB,QAjBiB,IAmBjB,aAlBgB,KAmBhB,WACA,8CACA,gBACA,MACA,UACA,aACA,mBAGD,qBAQC,oBAPA,0CACC,cACA,WACA,YACA,WAjCe,KAsChB,8BACC,kBACA,UACA,SAEA,gCACC,mBACA,eACA,sBACA,WACA,4CACA,YACA,sBAGD,uCACC,8CAKF,oCACC,aAEA,0CACC,iBAIF,gCACC,WACA,YACA,iBAGD,kGAEC,eACA,WACA,YACA,WACA,sBACA,qBAGD,8BACC,iBAEA,kDACC,qBACA,QACA,kBAKH,+CACC,kBACA,YAEA,WACA,YACA,WAOD,kBACC,aAGD,oBACC,kBACA,cAEA,gCACC,cACA,aAGD,0BACC,8CAKD,8BACC,cAGD,+BACC,gBAGD,+BACC,mBAEA,oEACC,kBAKD,8DACC,iBAKD,oEACC,kBAMH,wBACC,kBACA,kBAEA,4BACC,mBACA,YAGD,2BACC,mBACA,kBACA,iBACA,iBAEA,mCACC,kBACA,SACA,iBAGD,oCACC,gBAQF,8BACC,gBAMH,KACC,mBACA,mBAGD,SACC,aAGD,mBACC,mBAGD,eACC,gBAOA,+IACC,sBAEA,+KACC,aAGD,mKACC,WACA,YACA,kCACA,qBACA,kBAGD,mOACC,sCAGD,mNACC,sCAGD,mNACC,oCAMF,sBACC,aAGD,YACC,oBAGD,yCACC,WAGD,kBACC,kBAGD,yBACC,kBAGD,sBACC,kBAIF,yCACC,kBAGD,wBACC,qBAGD,2BACC,wBAEA,gBACA,aACA,iBACA,sBAKD,WACC,kBACA,2BACA,WAGD,2DAGC,qBAIA,mCACC,qBACA,YACA,iBAGD,+EAEC,YAIF,eACC,WAGD,SACC,iBAGD,QACC,qBACA,YACA,WACA,2BAEA,gBACC,kBAIF,qBACC,sBACA,qBACA,YACA,iBAGD,kBACC,qBACA,gBAIA,aACC,sCACA,mCAGD,WACC,oCAGD,mBACC,sCACA,oBAMF,8CACC,WACA,YAGD,wBACC,WACA,YACA,mBACA,kBACA,+DAIA,oBACC,iBACA,gBAEA,uBACC,cAGD,uBACC,kBAIF,0BACC,YACA,gCAGD,oDACC,yBAGD,wDACC,2BAGD,uBACC,cAKD,oBACC,0BAGD,oCACC,gBAIF,eACC,mBAEA,iBACC,qBACA,cAIF,SACC,UAGD,eACC,iBACA,mBACA,WASA,2CACC,aACA,qBACA,yCAEA,gDAGC,aACA,aACA,WAbgB,KAchB,sBACA,aACA,mBAGA,sBACE,+KASF,4CAEA,yDACC,WAID,iaAOC,UA1CkB,MA4ClB,ooCACC,6BACA,wBACA,uBAKD,odAMC,gBAMD,2JAEC,cACA,gBAIF,oOAIC,UA3EkB,MA6ElB,wRACC,WACA,6BACA,wBAGD,wQACC,cAIF,4DACC,YACA,WAGD,6DACC,aACA,yBACA,UACA,eAGD,0DACC,oCACA,wBAID,4DACC,gBACA,kBACA,8CACA,YACA,MAEA,mEACC,mDAIF,4DACC,oCACA,yBAEA,2wBAWC,iBACA,oBACA,oCACA,wBAKD,wEACC,sDAIF,qDACC,WAGD,wGAEC,WACA,oBACA,gCACA,YAEA,sKACC,2BACA,eAIA,0TACC,yBAKF,8LACC,WACA,YAGD,kHACC,qBAKA,wRACC,uBACA,YAIF,kPAGC,kBACA,gBACA,gBAIA,uBACA,oBACA,qBACA,4BAGD,sIACC,6BAGD,oHACC,aACA,qBACA,mBACA,kBAEA,sIACC,YACA,gBACA,WAIF,oIACC,cACA,eAEA,8JACC,aAIF,sHACC,YACA,WACA,WAEA,8HACC,cAIF,gIACC,aACA,yBAEA,sJACC,WAGD,sKACC,kBACA,aACA,mBACA,8CAEA,4LACC,WACA,YACA,WACA,eAEA,0lBAGC,WACA,8CAKH,oJACC,aACA,mBACA,mBACA,qCAEA,oLACC,WACA,iBAMH,kKACC,eACA,WAKH,uEACC,aACA,mBACA,uBACA,sBAGD,2DACC,WACA,iBAKH,UACI,+CAGJ,2BACE,GACE,YAGJ,mCACE,GACE","file":"settings.css"} \ No newline at end of file
diff --git a/apps/settings/css/settings.scss b/apps/settings/css/settings.scss
index ff5a8df1e69..40e9c1b60f9 100644
--- a/apps/settings/css/settings.scss
+++ b/apps/settings/css/settings.scss
@@ -135,18 +135,18 @@ select {
display: inline-block;
margin: 16px;
padding: 14px 20px;
- background-color: var(--color-primary);
+ background-color: var(--color-primary-element);
color: #fff;
border-radius: var(--border-radius-pill);
- border: 1px solid var(--color-primary);
+ border: 1px solid var(--color-primary-element);
box-shadow: 0 2px 9px var(--color-box-shadow);
&:active,
&:hover,
&:focus {
- color: var(--color-primary);
- background-color: var(--color-primary-text);
- border-color: var(--color-primary) !important;
+ color: var(--color-primary-element);
+ background-color: var(--color-primary-element-text);
+ border-color: var(--color-primary-element) !important;
}
&.icon-file {
@@ -281,7 +281,7 @@ select {
}
&.active {
- box-shadow: inset 2px 0 var(--color-primary);
+ box-shadow: inset 2px 0 var(--color-primary-element);
.menuitem-text {
font-weight: bold;
@@ -1129,6 +1129,10 @@ table.grid td.date {
}
#shareAPI {
+ &.loading > div {
+ display: none;
+ }
+
p {
padding-bottom: 0.8em;
}
@@ -1346,6 +1350,8 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
minmax($grid-col-min-width, 1fr) // email
minmax(1.5*$grid-col-min-width, 1fr) // groups
minmax(1.5*$grid-col-min-width, 1fr) // group admins
+ minmax($grid-col-min-width, 1fr) // quota
+ minmax(1.5*$grid-col-min-width, 1fr) // manager
repeat(auto-fit, minmax($grid-col-min-width, 1fr));
border-bottom: var(--color-border) 1px solid;
@@ -1390,6 +1396,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
}
}
+ .managers,
.groups,
.subadmins,
.quota {
@@ -1414,14 +1421,8 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
.userActions {
display: flex;
justify-content: flex-end;
- position: sticky;
right: 0px;
min-width: 88px;
- background-color: var(--color-main-background);
- }
-
- &.row--editable .userActions {
- z-index: 10;
}
.subtitle {
@@ -1465,10 +1466,6 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
}
&:hover {
- input:not([type='submit']):not(:focus):not(:active) {
- border-color: var(--color-border) !important;
- }
-
&:not(#grid-header) {
box-shadow: 5px 0 0 var(--color-primary-element) inset;
}
@@ -1478,8 +1475,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
width: 100%;
}
- > div,
- > .displayName > form,
+ > td,
> form {
grid-row: 1;
display: inline-flex;
diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js
index 632e526a6d7..5463f004f81 100644
--- a/apps/settings/l10n/ar.js
+++ b/apps/settings/l10n/ar.js
@@ -152,6 +152,7 @@ OC.L10N.register(
"Email" : "البريد الإلكترونى",
"Default language" : "اللغة الافتراضية",
"Add a new user" : "إضافة مستخدِم جديد",
+ "Avatar" : "الصورة الرمزية",
"Group admin for" : "فريق المُدراء لـ",
"Quota" : "حصه",
"Storage location" : "مسار التخزين",
@@ -229,7 +230,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية",
"Migration started …" : "بدأت عملية الترحيل …",
"Address" : "العنوان",
- "Avatar" : "الصورة الرمزية",
"Plain" : "سادة",
"NT LAN Manager" : "مدير الشبكة المحلية LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json
index 40d6a4bfc8d..98d1fe67a53 100644
--- a/apps/settings/l10n/ar.json
+++ b/apps/settings/l10n/ar.json
@@ -150,6 +150,7 @@
"Email" : "البريد الإلكترونى",
"Default language" : "اللغة الافتراضية",
"Add a new user" : "إضافة مستخدِم جديد",
+ "Avatar" : "الصورة الرمزية",
"Group admin for" : "فريق المُدراء لـ",
"Quota" : "حصه",
"Storage location" : "مسار التخزين",
@@ -227,7 +228,6 @@
"Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية",
"Migration started …" : "بدأت عملية الترحيل …",
"Address" : "العنوان",
- "Avatar" : "الصورة الرمزية",
"Plain" : "سادة",
"NT LAN Manager" : "مدير الشبكة المحلية LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js
index 6ed2d7c5bdc..3b9e8adfd44 100644
--- a/apps/settings/l10n/bg.js
+++ b/apps/settings/l10n/bg.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "Имейл",
"Default language" : "Стандартен език",
"Add a new user" : "Добавяне на новия потребител",
+ "Avatar" : "Аватар",
"Group admin for" : "Групов администратор за",
"Quota" : "Квота",
"User backend" : "Потребителски сървър",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Ограничи потребителите, така че да могат да споделят само с други потребители в своите групи.",
"Exclude groups from sharing" : "Забрани групи да споделят",
"These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.",
- "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне",
- "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи",
"Allow username autocompletion to users based on phone number integration" : "Разрешаване на автоматично довършване на име на потребител на потребители въз основа на интегриране на телефонен номер",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако автоматичното довършване „същата група“ и „интегриране на телефонен номер“ са активирани, съвпадението в едното е достатъчно, за да се покаже на потребителя.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешаване на автоматично довършване при въвеждане на пълното име или имейл адрес (като игнорирате липсващото съвпадение в телефонния указател и сте в същата група)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "В ход е миграция. Моля, изчакайте, докато миграцията приключи",
"Migration started …" : "Миграцията започна …",
"Address" : "Адрес",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Възникна грешка по време на заявката. Не може да се продължи.",
"Plain" : "Обикновен",
"NT LAN Manager" : "NT LAN Manager",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Изберете настройка за фонова работа",
"Recommended" : "Препоръчано",
"The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".",
+ "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне",
+ "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи",
"Change privacy level of profile picture" : "Промяна на нивото на поверителност на снимката на потребителския профил",
"Upload new" : "Качи нова",
"Select from Files" : "Избери от файловете",
diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json
index f617964ebaf..451b01a8a06 100644
--- a/apps/settings/l10n/bg.json
+++ b/apps/settings/l10n/bg.json
@@ -359,6 +359,7 @@
"Email" : "Имейл",
"Default language" : "Стандартен език",
"Add a new user" : "Добавяне на новия потребител",
+ "Avatar" : "Аватар",
"Group admin for" : "Групов администратор за",
"Quota" : "Квота",
"User backend" : "Потребителски сървър",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Ограничи потребителите, така че да могат да споделят само с други потребители в своите групи.",
"Exclude groups from sharing" : "Забрани групи да споделят",
"These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.",
- "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне",
- "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи",
"Allow username autocompletion to users based on phone number integration" : "Разрешаване на автоматично довършване на име на потребител на потребители въз основа на интегриране на телефонен номер",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако автоматичното довършване „същата група“ и „интегриране на телефонен номер“ са активирани, съвпадението в едното е достатъчно, за да се покаже на потребителя.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешаване на автоматично довършване при въвеждане на пълното име или имейл адрес (като игнорирате липсващото съвпадение в телефонния указател и сте в същата група)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "В ход е миграция. Моля, изчакайте, докато миграцията приключи",
"Migration started …" : "Миграцията започна …",
"Address" : "Адрес",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Възникна грешка по време на заявката. Не може да се продължи.",
"Plain" : "Обикновен",
"NT LAN Manager" : "NT LAN Manager",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Изберете настройка за фонова работа",
"Recommended" : "Препоръчано",
"The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".",
+ "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне",
+ "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи",
"Change privacy level of profile picture" : "Промяна на нивото на поверителност на снимката на потребителския профил",
"Upload new" : "Качи нова",
"Select from Files" : "Избери от файловете",
diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js
index 9aa14b4619a..88e9b730b63 100644
--- a/apps/settings/l10n/br.js
+++ b/apps/settings/l10n/br.js
@@ -242,6 +242,7 @@ OC.L10N.register(
"Email" : "Postel",
"Default language" : "Yezh dre ziouer",
"Add a new user" : "Ouzhpennan un im^lijer",
+ "Avatar" : "Avatar",
"Group admin for" : "Strollad merour evit",
"Quota" : "Quota",
"User backend" : "Backen implijer",
@@ -361,7 +362,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Oc'h ober an divroadenn. Gortozit e vefe echuet mar-plij",
"Migration started …" : "Divroadeg kroget...",
"Address" : "Chom-lec'h",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ur fazi a zo bet en oberenn. N'eo ket posuple en ober.",
"Plain" : "Sklaer",
"NT LAN Manager" : "NT LAN Manager",
diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json
index f18532c2863..b926bb40d68 100644
--- a/apps/settings/l10n/br.json
+++ b/apps/settings/l10n/br.json
@@ -240,6 +240,7 @@
"Email" : "Postel",
"Default language" : "Yezh dre ziouer",
"Add a new user" : "Ouzhpennan un im^lijer",
+ "Avatar" : "Avatar",
"Group admin for" : "Strollad merour evit",
"Quota" : "Quota",
"User backend" : "Backen implijer",
@@ -359,7 +360,6 @@
"Migration in progress. Please wait until the migration is finished" : "Oc'h ober an divroadenn. Gortozit e vefe echuet mar-plij",
"Migration started …" : "Divroadeg kroget...",
"Address" : "Chom-lec'h",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ur fazi a zo bet en oberenn. N'eo ket posuple en ober.",
"Plain" : "Sklaer",
"NT LAN Manager" : "NT LAN Manager",
diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js
index 95b5f80dead..b9801bd48f6 100644
--- a/apps/settings/l10n/ca.js
+++ b/apps/settings/l10n/ca.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "Correu electrònic",
"Default language" : "Llengua per defecte",
"Add a new user" : "Afegeix un nou usuari",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grup per",
"Quota" : "Quota",
"User backend" : "Rerefons d'usuari",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Restringeix als usuaris a compartir només amb usuaris del seu grup",
"Exclude groups from sharing" : "Excloure grups de compartició",
"These groups will still be able to receive shares, but not to initiate them." : "Aquests grups encara podran rebre comparticions, però no en podran iniciar.",
- "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir",
- "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups",
"Allow username autocompletion to users based on phone number integration" : "Permet la compleció automàtica del nom d'usuari als usuaris en funció de la integració del número de telèfon",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si la compleció automàtica \"mateix grup\" i \"integració de números de telèfon\" estan habilitats, n'hi ha prou amb una coincidència per mostrar a l'usuari.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permet l'emplenament automàtic en introduir el nom complet o l'adreça de correu electrònic (ignorant la coincidència de l'agenda i estar al mateix grup)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració",
"Migration started …" : "S'ha iniciat la migració …",
"Address" : "Adreça",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "S'ha produït un error durant la sol·licitud. No es pot continuar.",
"Plain" : "Net",
"NT LAN Manager" : "Gestor NT LAN",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Trieu el paràmetre de la tasca en segon pla",
"Recommended" : "Recomanat",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir",
+ "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups",
"Change privacy level of profile picture" : "Canvia el nivell de privadesa de la foto de perfil",
"Upload new" : "Puja'n una de nova",
"Select from Files" : "Selecciona dels Fitxers",
diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json
index 5a71eaffebc..1725f6e3f10 100644
--- a/apps/settings/l10n/ca.json
+++ b/apps/settings/l10n/ca.json
@@ -359,6 +359,7 @@
"Email" : "Correu electrònic",
"Default language" : "Llengua per defecte",
"Add a new user" : "Afegeix un nou usuari",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grup per",
"Quota" : "Quota",
"User backend" : "Rerefons d'usuari",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Restringeix als usuaris a compartir només amb usuaris del seu grup",
"Exclude groups from sharing" : "Excloure grups de compartició",
"These groups will still be able to receive shares, but not to initiate them." : "Aquests grups encara podran rebre comparticions, però no en podran iniciar.",
- "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir",
- "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups",
"Allow username autocompletion to users based on phone number integration" : "Permet la compleció automàtica del nom d'usuari als usuaris en funció de la integració del número de telèfon",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si la compleció automàtica \"mateix grup\" i \"integració de números de telèfon\" estan habilitats, n'hi ha prou amb una coincidència per mostrar a l'usuari.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permet l'emplenament automàtic en introduir el nom complet o l'adreça de correu electrònic (ignorant la coincidència de l'agenda i estar al mateix grup)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració",
"Migration started …" : "S'ha iniciat la migració …",
"Address" : "Adreça",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "S'ha produït un error durant la sol·licitud. No es pot continuar.",
"Plain" : "Net",
"NT LAN Manager" : "Gestor NT LAN",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Trieu el paràmetre de la tasca en segon pla",
"Recommended" : "Recomanat",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir",
+ "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups",
"Change privacy level of profile picture" : "Canvia el nivell de privadesa de la foto de perfil",
"Upload new" : "Puja'n una de nova",
"Select from Files" : "Selecciona dels Fitxers",
diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js
index 00f7c68b51f..7de4d245328 100644
--- a/apps/settings/l10n/cs.js
+++ b/apps/settings/l10n/cs.js
@@ -335,11 +335,14 @@ OC.L10N.register(
"Add additional email" : "Přidat další e-mail",
"Add" : "Přidat",
"You do not have permissions to see the details of this user" : "Nemáte oprávnění zobrazit si podrobností o tomto uživateli",
+ "Edit display name" : "Upravit zobrazovaný název",
"Add new password" : "Přidat nové heslo",
"Add new email address" : "Přidat novou e-mailovou adresu",
"Add user to group" : "Přidat uživatele do skupiny",
"Set user as admin for" : "Nastavit uživatele jako správce pro",
"Select user quota" : "Vybrat kvótu uživatele",
+ "Set the language" : "Nastavit jazyk",
+ "Select manager" : "Vybrat nástroj pro správu",
"Delete user" : "Smazat uživatele",
"Wipe all devices" : "Vymazat obsah ze všech zařízení",
"Disable user" : "Znepřístupnit uživatelský účet",
@@ -355,17 +358,22 @@ OC.L10N.register(
"Edit User" : "Upravit uživatele",
"Toggle user actions menu" : "Vyp/zap. nabídku akcí uživatele",
"{size} used" : "{size} použito",
+ "User's table" : "Tabulka uživatele",
"New user" : "Nový uživatel",
"Will be autogenerated" : "Bude automaticky vytvořeno",
"Display name" : "Zobrazované jméno",
"Email" : "E-mail",
"Default language" : "Výchozí jazyk",
+ "Select user manager" : "Vyberte nástroj pro správu uživatelů",
"Add a new user" : "Přidat nového uživatele",
+ "Avatar" : "Profilový obrázek",
"Group admin for" : "Správce skupiny",
"Quota" : "Kvóta",
"User backend" : "Podpůrná vrstva pro uživatelské účty",
"Storage location" : "Úložiště dat",
"Last login" : "Poslední přihlášení",
+ "Manager" : "Nástroj pro správu",
+ "User actions" : "Akce ohledně uživatele",
"No users in here" : "Nejsou zde žádní uživatelé",
"Default quota" : "Výchozí kvóta",
"Common languages" : "Běžné jazyky",
@@ -485,8 +493,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Povolit sdílení pouze mezi uživateli v rámci skupiny",
"Exclude groups from sharing" : "Vyjmout skupiny ze sdílení",
"These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možné sdílet, nemohou ale samy sdílet ostatním.",
- "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení",
- "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin",
"Allow username autocompletion to users based on phone number integration" : "Umožnit doplňování uživatelského jména uživatelům na základě začlenění telefonním číslem",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "V případě, že jsou zapnuté automatická dokončování „stejná skupina“ a „začlenění telefonním číslem“, postačí pro zobrazení uživatele shoda s jedním z toho.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Povolit automatické dokončování při zadávání celého jména nebo e-mailové adresy (při ignorování chybějící shody s telefonním seznamem a toho, že je ve stejné skupině)",
@@ -527,7 +533,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Probíhá migrace. Vyčkejte jejího dokončení",
"Migration started …" : "Migrace spuštěna…",
"Address" : "Adresa",
- "Avatar" : "Profilový obrázek",
"An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.",
"Plain" : "V čitelné podobě",
"NT LAN Manager" : "Správce NT LAN",
@@ -546,6 +551,8 @@ OC.L10N.register(
"Pick background job setting" : "Vybrat nastavení úlohy na pozadí",
"Recommended" : "Doporučené",
"The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.",
+ "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení",
+ "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin",
"Change privacy level of profile picture" : "Změnit úroveň soukromí profilového obrázku",
"Upload new" : "Nahrát nový",
"Select from Files" : "Vybrat ze Souborů",
diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json
index 27ebdd12ad9..d28bd0aafd3 100644
--- a/apps/settings/l10n/cs.json
+++ b/apps/settings/l10n/cs.json
@@ -333,11 +333,14 @@
"Add additional email" : "Přidat další e-mail",
"Add" : "Přidat",
"You do not have permissions to see the details of this user" : "Nemáte oprávnění zobrazit si podrobností o tomto uživateli",
+ "Edit display name" : "Upravit zobrazovaný název",
"Add new password" : "Přidat nové heslo",
"Add new email address" : "Přidat novou e-mailovou adresu",
"Add user to group" : "Přidat uživatele do skupiny",
"Set user as admin for" : "Nastavit uživatele jako správce pro",
"Select user quota" : "Vybrat kvótu uživatele",
+ "Set the language" : "Nastavit jazyk",
+ "Select manager" : "Vybrat nástroj pro správu",
"Delete user" : "Smazat uživatele",
"Wipe all devices" : "Vymazat obsah ze všech zařízení",
"Disable user" : "Znepřístupnit uživatelský účet",
@@ -353,17 +356,22 @@
"Edit User" : "Upravit uživatele",
"Toggle user actions menu" : "Vyp/zap. nabídku akcí uživatele",
"{size} used" : "{size} použito",
+ "User's table" : "Tabulka uživatele",
"New user" : "Nový uživatel",
"Will be autogenerated" : "Bude automaticky vytvořeno",
"Display name" : "Zobrazované jméno",
"Email" : "E-mail",
"Default language" : "Výchozí jazyk",
+ "Select user manager" : "Vyberte nástroj pro správu uživatelů",
"Add a new user" : "Přidat nového uživatele",
+ "Avatar" : "Profilový obrázek",
"Group admin for" : "Správce skupiny",
"Quota" : "Kvóta",
"User backend" : "Podpůrná vrstva pro uživatelské účty",
"Storage location" : "Úložiště dat",
"Last login" : "Poslední přihlášení",
+ "Manager" : "Nástroj pro správu",
+ "User actions" : "Akce ohledně uživatele",
"No users in here" : "Nejsou zde žádní uživatelé",
"Default quota" : "Výchozí kvóta",
"Common languages" : "Běžné jazyky",
@@ -483,8 +491,6 @@
"Restrict users to only share with users in their groups" : "Povolit sdílení pouze mezi uživateli v rámci skupiny",
"Exclude groups from sharing" : "Vyjmout skupiny ze sdílení",
"These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možné sdílet, nemohou ale samy sdílet ostatním.",
- "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení",
- "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin",
"Allow username autocompletion to users based on phone number integration" : "Umožnit doplňování uživatelského jména uživatelům na základě začlenění telefonním číslem",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "V případě, že jsou zapnuté automatická dokončování „stejná skupina“ a „začlenění telefonním číslem“, postačí pro zobrazení uživatele shoda s jedním z toho.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Povolit automatické dokončování při zadávání celého jména nebo e-mailové adresy (při ignorování chybějící shody s telefonním seznamem a toho, že je ve stejné skupině)",
@@ -525,7 +531,6 @@
"Migration in progress. Please wait until the migration is finished" : "Probíhá migrace. Vyčkejte jejího dokončení",
"Migration started …" : "Migrace spuštěna…",
"Address" : "Adresa",
- "Avatar" : "Profilový obrázek",
"An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.",
"Plain" : "V čitelné podobě",
"NT LAN Manager" : "Správce NT LAN",
@@ -544,6 +549,8 @@
"Pick background job setting" : "Vybrat nastavení úlohy na pozadí",
"Recommended" : "Doporučené",
"The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.",
+ "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení",
+ "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin",
"Change privacy level of profile picture" : "Změnit úroveň soukromí profilového obrázku",
"Upload new" : "Nahrát nový",
"Select from Files" : "Vybrat ze Souborů",
diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js
index 26b7834ec89..edd3a57ea3f 100644
--- a/apps/settings/l10n/da.js
+++ b/apps/settings/l10n/da.js
@@ -308,6 +308,7 @@ OC.L10N.register(
"Email" : "E-mail",
"Default language" : "Standardsprog",
"Add a new user" : "Tilføj en bruger",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppeadministrator for",
"Quota" : "Kvote",
"User backend" : "Bruger-backend",
@@ -426,8 +427,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Begræns brugere til kun at dele med brugere i deres egen gruppe",
"Exclude groups from sharing" : "Ekskluder grupper fra at dele",
"These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, men ikke skabe dem.",
- "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen",
- "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper",
"Allow username autocompletion to users based on phone number integration" : "Tillad autofuldførelse af brugernavn til brugere baseret på telefonnummerintegration",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Hvis autofuldførelse \"samme gruppe\" og \"telefonnummerintegration\" er aktiveret, er et match i begge nok til at vise brugeren.",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Vis ansvarsfraskrivelsestekst på den offentlige linkoverførselsside (vises kun, når fillisten er skjult)",
@@ -465,7 +464,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet",
"Migration started …" : "Migrering er påbegyndt...",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Der opstod en fejl under anmodningen. Kan ikke fortsætte.",
"Plain" : "Klartekst",
"NT LAN Manager" : "NT LAN Manager",
@@ -483,6 +481,8 @@ OC.L10N.register(
"Pick background job setting" : "Vælg baggrundsjob indstilling",
"Recommended" : "Anbefalet",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php skal udføres af systembrugeren \"%s\".",
+ "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen",
+ "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper",
"Change privacy level of profile picture" : "Skift privatlivsniveau for profilbillede",
"Upload new" : "Upload nyt",
"Select from Files" : "Vælg fra filer",
diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json
index 532ff64ad3b..0eb045a96f6 100644
--- a/apps/settings/l10n/da.json
+++ b/apps/settings/l10n/da.json
@@ -306,6 +306,7 @@
"Email" : "E-mail",
"Default language" : "Standardsprog",
"Add a new user" : "Tilføj en bruger",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppeadministrator for",
"Quota" : "Kvote",
"User backend" : "Bruger-backend",
@@ -424,8 +425,6 @@
"Restrict users to only share with users in their groups" : "Begræns brugere til kun at dele med brugere i deres egen gruppe",
"Exclude groups from sharing" : "Ekskluder grupper fra at dele",
"These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, men ikke skabe dem.",
- "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen",
- "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper",
"Allow username autocompletion to users based on phone number integration" : "Tillad autofuldførelse af brugernavn til brugere baseret på telefonnummerintegration",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Hvis autofuldførelse \"samme gruppe\" og \"telefonnummerintegration\" er aktiveret, er et match i begge nok til at vise brugeren.",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Vis ansvarsfraskrivelsestekst på den offentlige linkoverførselsside (vises kun, når fillisten er skjult)",
@@ -463,7 +462,6 @@
"Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet",
"Migration started …" : "Migrering er påbegyndt...",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Der opstod en fejl under anmodningen. Kan ikke fortsætte.",
"Plain" : "Klartekst",
"NT LAN Manager" : "NT LAN Manager",
@@ -481,6 +479,8 @@
"Pick background job setting" : "Vælg baggrundsjob indstilling",
"Recommended" : "Anbefalet",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php skal udføres af systembrugeren \"%s\".",
+ "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen",
+ "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper",
"Change privacy level of profile picture" : "Skift privatlivsniveau for profilbillede",
"Upload new" : "Upload nyt",
"Select from Files" : "Vælg fra filer",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index f692daa1b4a..7345b0f6875 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "E-Mail-Adresse",
"Default language" : "Standard-Sprache",
"Add a new user" : "Neuen Benutzer hinzufügen",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppenadministrator für",
"Quota" : "Kontingent",
"User backend" : "Benutzer-Backend",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken",
"Exclude groups from sharing" : "Gruppen von Freigaben ausschließen",
"These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.",
- "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
- "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
"Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist",
"Migration started …" : "Migration begonnen …",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.",
"Plain" : "Klartext",
"NT LAN Manager" : "NT-LAN-Manager",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus",
"Recommended" : "Empfohlen",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
+ "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
+ "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
"Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern",
"Upload new" : "Neues hochladen",
"Select from Files" : "Aus Dateien wählen",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index 42a888f941e..83b86a08f7e 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -359,6 +359,7 @@
"Email" : "E-Mail-Adresse",
"Default language" : "Standard-Sprache",
"Add a new user" : "Neuen Benutzer hinzufügen",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppenadministrator für",
"Quota" : "Kontingent",
"User backend" : "Benutzer-Backend",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken",
"Exclude groups from sharing" : "Gruppen von Freigaben ausschließen",
"These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.",
- "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
- "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
"Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist",
"Migration started …" : "Migration begonnen …",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.",
"Plain" : "Klartext",
"NT LAN Manager" : "NT-LAN-Manager",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus",
"Recommended" : "Empfohlen",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
+ "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
+ "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
"Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern",
"Upload new" : "Neues hochladen",
"Select from Files" : "Aus Dateien wählen",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index 9d23cc4cec6..a08fa544455 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -335,11 +335,14 @@ OC.L10N.register(
"Add additional email" : "Zusätzliche E-Mail-Adresse hinzufügen",
"Add" : "Hinzufügen",
"You do not have permissions to see the details of this user" : "Sie haben keine Berechtigung, um auf die Details dieses Benutzers zu sehen",
+ "Edit display name" : "Anzeigename bearbeiten",
"Add new password" : "Neues Passwort hinzufügen",
"Add new email address" : "Neue E-Mail-Adresse hinzufügen",
"Add user to group" : "Benutzer der Gruppe hinzufügen",
"Set user as admin for" : "Benutzer als Administrator setzen für",
"Select user quota" : "Benutzerkontingent auswählen",
+ "Set the language" : "Sprache einstellen",
+ "Select manager" : "Manager auswählen",
"Delete user" : "Benutzer löschen",
"Wipe all devices" : "Alle Geräte löschen",
"Disable user" : "Benutzer deaktivieren",
@@ -355,17 +358,22 @@ OC.L10N.register(
"Edit User" : "Benutzer bearbeiten",
"Toggle user actions menu" : "Menü für Benutzeraktionen umschalten",
"{size} used" : "{size} verwendet",
+ "User's table" : "Benutzertabelle",
"New user" : "Neuer Benutzer",
"Will be autogenerated" : "Wird automatisch erzeugt",
"Display name" : "Anzeigename",
"Email" : "E-Mail",
"Default language" : "Standard-Sprache",
+ "Select user manager" : "Benutzermanager wählen",
"Add a new user" : "Neuen Benutzer hinzufügen",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppenadministrator für",
"Quota" : "Kontingent",
"User backend" : "Benutzer-Backend",
"Storage location" : "Speicherort",
"Last login" : "Letzte Anmeldung",
+ "Manager" : "Manager",
+ "User actions" : "Benutzeraktionen",
"No users in here" : "Keine Benutzer vorhanden",
"Default quota" : "Standard Speicherkontingent ",
"Common languages" : "Gebräuchliche Sprachen",
@@ -485,8 +493,8 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken",
"Exclude groups from sharing" : "Gruppen von Freigaben ausschließen",
"These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.",
- "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
- "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Die automatische Vervollständigung des Benutzernamens im Freigabedialog und den Zugriff auf das Systemadressbuch erlauben",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Benutzern innerhalb derselben Gruppen die automatische Vervollständigung von Benutzernamen erlauben und Systemadressbücher auf Benutzer derselben Gruppen beschränken",
"Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der volle Namen oder E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)",
@@ -527,7 +535,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist",
"Migration started …" : "Migration begonnen…",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.",
"Plain" : "Klartext",
"NT LAN Manager" : "NT-LAN-Manager",
@@ -546,6 +553,8 @@ OC.L10N.register(
"Pick background job setting" : "Einstellung für Hintergrund-Aufgaben auswählen",
"Recommended" : "Empfohlen",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
+ "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
+ "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
"Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern",
"Upload new" : "Neues hochladen",
"Select from Files" : "Aus Dateien wählen",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index c99648d190b..9b3990b6385 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -333,11 +333,14 @@
"Add additional email" : "Zusätzliche E-Mail-Adresse hinzufügen",
"Add" : "Hinzufügen",
"You do not have permissions to see the details of this user" : "Sie haben keine Berechtigung, um auf die Details dieses Benutzers zu sehen",
+ "Edit display name" : "Anzeigename bearbeiten",
"Add new password" : "Neues Passwort hinzufügen",
"Add new email address" : "Neue E-Mail-Adresse hinzufügen",
"Add user to group" : "Benutzer der Gruppe hinzufügen",
"Set user as admin for" : "Benutzer als Administrator setzen für",
"Select user quota" : "Benutzerkontingent auswählen",
+ "Set the language" : "Sprache einstellen",
+ "Select manager" : "Manager auswählen",
"Delete user" : "Benutzer löschen",
"Wipe all devices" : "Alle Geräte löschen",
"Disable user" : "Benutzer deaktivieren",
@@ -353,17 +356,22 @@
"Edit User" : "Benutzer bearbeiten",
"Toggle user actions menu" : "Menü für Benutzeraktionen umschalten",
"{size} used" : "{size} verwendet",
+ "User's table" : "Benutzertabelle",
"New user" : "Neuer Benutzer",
"Will be autogenerated" : "Wird automatisch erzeugt",
"Display name" : "Anzeigename",
"Email" : "E-Mail",
"Default language" : "Standard-Sprache",
+ "Select user manager" : "Benutzermanager wählen",
"Add a new user" : "Neuen Benutzer hinzufügen",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppenadministrator für",
"Quota" : "Kontingent",
"User backend" : "Benutzer-Backend",
"Storage location" : "Speicherort",
"Last login" : "Letzte Anmeldung",
+ "Manager" : "Manager",
+ "User actions" : "Benutzeraktionen",
"No users in here" : "Keine Benutzer vorhanden",
"Default quota" : "Standard Speicherkontingent ",
"Common languages" : "Gebräuchliche Sprachen",
@@ -483,8 +491,8 @@
"Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken",
"Exclude groups from sharing" : "Gruppen von Freigaben ausschließen",
"These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.",
- "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
- "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Die automatische Vervollständigung des Benutzernamens im Freigabedialog und den Zugriff auf das Systemadressbuch erlauben",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Benutzern innerhalb derselben Gruppen die automatische Vervollständigung von Benutzernamen erlauben und Systemadressbücher auf Benutzer derselben Gruppen beschränken",
"Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der volle Namen oder E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)",
@@ -525,7 +533,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist",
"Migration started …" : "Migration begonnen…",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.",
"Plain" : "Klartext",
"NT LAN Manager" : "NT-LAN-Manager",
@@ -544,6 +551,8 @@
"Pick background job setting" : "Einstellung für Hintergrund-Aufgaben auswählen",
"Recommended" : "Empfohlen",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
+ "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben",
+ "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben",
"Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern",
"Upload new" : "Neues hochladen",
"Select from Files" : "Aus Dateien wählen",
diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js
index fbd87f067e4..ea87f3489c9 100644
--- a/apps/settings/l10n/el.js
+++ b/apps/settings/l10n/el.js
@@ -325,6 +325,7 @@ OC.L10N.register(
"Email" : "Email",
"Default language" : "Προεπιλεγμένη γλώσσα",
"Add a new user" : "Προσθήκη νέου χρήστη",
+ "Avatar" : "Εικόνα προφίλ",
"Group admin for" : "Ομαδα διαχειριστή για",
"Quota" : "Σύνολο Χώρου",
"User backend" : "Σύστημα υποστήριξης χρήστη",
@@ -445,8 +446,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μόνο με χρήστες που ανήκουν στις ομάδες τους",
"Exclude groups from sharing" : "Εξαίρεση ομάδων από τον διαμοιρασμό",
"These groups will still be able to receive shares, but not to initiate them." : "Αυτές οι ομάδες θα συνεχίσουν να λαμβάνουν διαμοιρασμούς, αλλά δεν θα είναι δυνατό να τους δημιουργήσουν.",
- "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης",
- "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες",
"Allow username autocompletion to users based on phone number integration" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στους χρήστες με βάση τον αριθμό τηλεφώνου",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Εμφάνιση κειμένου αποποίησης στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου (εμφανίζεται μόνο όταν η λίστα αρχείων είναι κρυφή).",
"This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα εμφανιστεί στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου όταν η λίστα αρχείων είναι κρυφή.",
@@ -482,7 +481,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση",
"Migration started …" : "Η μετάβαση ξεκίνησε ...",
"Address" : "Διεύθυνση",
- "Avatar" : "Εικόνα προφίλ",
"An error occured during the request. Unable to proceed." : "Παρουσιάστηκε σφάλμα κατά την εκτέλεση του αιτήματος. Δεν είναι δυνατή η συνέχιση.",
"Plain" : "Απλό",
"NT LAN Manager" : "Διαχειριστης NT LAN",
@@ -501,6 +499,8 @@ OC.L10N.register(
"Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας παρασκηνίου",
"Recommended" : "Προτείνεται",
"The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".",
+ "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης",
+ "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες",
"Change privacy level of profile picture" : "Αλλαγή επιπέδου απορρήτου της εικόνας προφίλ",
"Upload new" : "Μεταφόρτωση νέας",
"Select from Files" : "Επιλογή από τα Αρχεία",
diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json
index 4312f3c7500..db250f1e54c 100644
--- a/apps/settings/l10n/el.json
+++ b/apps/settings/l10n/el.json
@@ -323,6 +323,7 @@
"Email" : "Email",
"Default language" : "Προεπιλεγμένη γλώσσα",
"Add a new user" : "Προσθήκη νέου χρήστη",
+ "Avatar" : "Εικόνα προφίλ",
"Group admin for" : "Ομαδα διαχειριστή για",
"Quota" : "Σύνολο Χώρου",
"User backend" : "Σύστημα υποστήριξης χρήστη",
@@ -443,8 +444,6 @@
"Restrict users to only share with users in their groups" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μόνο με χρήστες που ανήκουν στις ομάδες τους",
"Exclude groups from sharing" : "Εξαίρεση ομάδων από τον διαμοιρασμό",
"These groups will still be able to receive shares, but not to initiate them." : "Αυτές οι ομάδες θα συνεχίσουν να λαμβάνουν διαμοιρασμούς, αλλά δεν θα είναι δυνατό να τους δημιουργήσουν.",
- "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης",
- "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες",
"Allow username autocompletion to users based on phone number integration" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στους χρήστες με βάση τον αριθμό τηλεφώνου",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Εμφάνιση κειμένου αποποίησης στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου (εμφανίζεται μόνο όταν η λίστα αρχείων είναι κρυφή).",
"This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα εμφανιστεί στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου όταν η λίστα αρχείων είναι κρυφή.",
@@ -480,7 +479,6 @@
"Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση",
"Migration started …" : "Η μετάβαση ξεκίνησε ...",
"Address" : "Διεύθυνση",
- "Avatar" : "Εικόνα προφίλ",
"An error occured during the request. Unable to proceed." : "Παρουσιάστηκε σφάλμα κατά την εκτέλεση του αιτήματος. Δεν είναι δυνατή η συνέχιση.",
"Plain" : "Απλό",
"NT LAN Manager" : "Διαχειριστης NT LAN",
@@ -499,6 +497,8 @@
"Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας παρασκηνίου",
"Recommended" : "Προτείνεται",
"The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".",
+ "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης",
+ "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες",
"Change privacy level of profile picture" : "Αλλαγή επιπέδου απορρήτου της εικόνας προφίλ",
"Upload new" : "Μεταφόρτωση νέας",
"Select from Files" : "Επιλογή από τα Αρχεία",
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index 948ef8b2409..974129a714b 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -335,11 +335,13 @@ OC.L10N.register(
"Add additional email" : "Add additional email",
"Add" : "Add",
"You do not have permissions to see the details of this user" : "You do not have permissions to see the details of this user",
+ "Edit display name" : "Edit display name",
"Add new password" : "Add new password",
"Add new email address" : "Add new email address",
"Add user to group" : "Add user to group",
"Set user as admin for" : "Set user as admin for",
"Select user quota" : "Select user quota",
+ "Set the language" : "Set the language",
"Delete user" : "Delete user",
"Wipe all devices" : "Wipe all devices",
"Disable user" : "Disable user",
@@ -361,6 +363,7 @@ OC.L10N.register(
"Email" : "Email",
"Default language" : "Default language",
"Add a new user" : "Add a new user",
+ "Avatar" : "Avatar",
"Group admin for" : "Group admin for",
"Quota" : "Quota",
"User backend" : "User backend",
@@ -485,8 +488,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Restrict users to only share with users in their groups",
"Exclude groups from sharing" : "Exclude groups from sharing",
"These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.",
- "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue",
- "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups",
"Allow username autocompletion to users based on phone number integration" : "Allow username autocompletion to users based on phone number integration",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)",
@@ -527,7 +528,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished",
"Migration started …" : "Migration started …",
"Address" : "Address",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "An error occured during the request. Unable to proceed.",
"Plain" : "Plain",
"NT LAN Manager" : "NT LAN Manager",
@@ -546,6 +546,8 @@ OC.L10N.register(
"Pick background job setting" : "Pick background job setting",
"Recommended" : "Recommended",
"The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".",
+ "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue",
+ "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups",
"Change privacy level of profile picture" : "Change privacy level of profile picture",
"Upload new" : "Upload new",
"Select from Files" : "Select from Files",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index 99a2f84c404..b045b48b77b 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -333,11 +333,13 @@
"Add additional email" : "Add additional email",
"Add" : "Add",
"You do not have permissions to see the details of this user" : "You do not have permissions to see the details of this user",
+ "Edit display name" : "Edit display name",
"Add new password" : "Add new password",
"Add new email address" : "Add new email address",
"Add user to group" : "Add user to group",
"Set user as admin for" : "Set user as admin for",
"Select user quota" : "Select user quota",
+ "Set the language" : "Set the language",
"Delete user" : "Delete user",
"Wipe all devices" : "Wipe all devices",
"Disable user" : "Disable user",
@@ -359,6 +361,7 @@
"Email" : "Email",
"Default language" : "Default language",
"Add a new user" : "Add a new user",
+ "Avatar" : "Avatar",
"Group admin for" : "Group admin for",
"Quota" : "Quota",
"User backend" : "User backend",
@@ -483,8 +486,6 @@
"Restrict users to only share with users in their groups" : "Restrict users to only share with users in their groups",
"Exclude groups from sharing" : "Exclude groups from sharing",
"These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.",
- "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue",
- "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups",
"Allow username autocompletion to users based on phone number integration" : "Allow username autocompletion to users based on phone number integration",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)",
@@ -525,7 +526,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished",
"Migration started …" : "Migration started …",
"Address" : "Address",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "An error occured during the request. Unable to proceed.",
"Plain" : "Plain",
"NT LAN Manager" : "NT LAN Manager",
@@ -544,6 +544,8 @@
"Pick background job setting" : "Pick background job setting",
"Recommended" : "Recommended",
"The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".",
+ "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue",
+ "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups",
"Change privacy level of profile picture" : "Change privacy level of profile picture",
"Upload new" : "Upload new",
"Select from Files" : "Select from Files",
diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js
index 9a7a1633857..f98e7e2d9ed 100644
--- a/apps/settings/l10n/eo.js
+++ b/apps/settings/l10n/eo.js
@@ -229,6 +229,7 @@ OC.L10N.register(
"Email" : "Retpoŝtadreso",
"Default language" : "Defaŭlta lingvo",
"Add a new user" : "Aldoni novan uzanton",
+ "Avatar" : "Avataro",
"Group admin for" : "Grupadministranto por",
"Quota" : "Kvoto",
"User backend" : "Uzanto-loko",
@@ -332,7 +333,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.",
"Migration started …" : "Ektransmetado...",
"Address" : "Adreso",
- "Avatar" : "Avataro",
"An error occured during the request. Unable to proceed." : "Eraro okazis dum peto. Ne eblas plui.",
"Plain" : "Plena",
"NT LAN Manager" : "NT LAN Manager",
diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json
index ad82089f8f5..c23e8c5c4f5 100644
--- a/apps/settings/l10n/eo.json
+++ b/apps/settings/l10n/eo.json
@@ -227,6 +227,7 @@
"Email" : "Retpoŝtadreso",
"Default language" : "Defaŭlta lingvo",
"Add a new user" : "Aldoni novan uzanton",
+ "Avatar" : "Avataro",
"Group admin for" : "Grupadministranto por",
"Quota" : "Kvoto",
"User backend" : "Uzanto-loko",
@@ -330,7 +331,6 @@
"Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.",
"Migration started …" : "Ektransmetado...",
"Address" : "Adreso",
- "Avatar" : "Avataro",
"An error occured during the request. Unable to proceed." : "Eraro okazis dum peto. Ne eblas plui.",
"Plain" : "Plena",
"NT LAN Manager" : "NT LAN Manager",
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index 349828b1a36..43e54e37e1c 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -322,7 +322,7 @@ OC.L10N.register(
"Edit your Profile visibility" : "Editar la visibilidad de tu perfil",
"Enable Profile" : "Activar Perfil",
"Unable to update profile enabled state" : "No se pudo actualizar el estado habilitado del perfil",
- "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Se respetará en tu perfil el ajuste más restrictivo entre visibilidad y alcance. Por ejemplo, si la visibilida está configurada en \"Mostrar a todos\" y el alcance en \"Privado\", los ajustes de \"Privado\" se respetarán.",
+ "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Se respetará en tu perfil el ajuste más restrictivo entre visibilidad y alcance. Por ejemplo, si la visibilidad está configurada en \"Mostrar a todos\" y el alcance en \"Privado\", los ajustes de \"Privado\" se respetarán.",
"Unable to update visibility of {displayId}" : "No se pudo actualizar la visibilidad de {displayId}",
"Your role" : "Tu rol",
"Your Twitter handle" : "Su usuario de Twitter",
@@ -335,11 +335,14 @@ OC.L10N.register(
"Add additional email" : "Añadir un email adicional",
"Add" : "Añadir",
"You do not have permissions to see the details of this user" : "No tienes permisos para ver los detalles de este usuario",
+ "Edit display name" : "Editar nombre a mostrar",
"Add new password" : " Añadir nueva contraseña",
"Add new email address" : "Añadir nueva dirección de correo electrónico",
"Add user to group" : "Añadir usuario a grupo",
"Set user as admin for" : "Marcar usuario como administrador para",
"Select user quota" : "Seleccionar cuota de usuario",
+ "Set the language" : "Establecer el idioma",
+ "Select manager" : "Seleccione administrador",
"Delete user" : "Eliminar usuario",
"Wipe all devices" : "Borrar todos los dispositivos",
"Disable user" : "Inhabilitar usuario",
@@ -355,17 +358,22 @@ OC.L10N.register(
"Edit User" : "Editar usuario",
"Toggle user actions menu" : "Alternar el menú de acciones del usuario",
"{size} used" : "{size} usados",
+ "User's table" : "Tabla de usuario",
"New user" : "Nuevo usuario",
"Will be autogenerated" : "Se generará de forma automática",
"Display name" : "Nombre para mostrar",
"Email" : "Correo electrónico",
"Default language" : "Idioma predeterminado",
+ "Select user manager" : "Seleccione administrador de usuarios",
"Add a new user" : "Añadir nuevo usuario",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grupo para",
"Quota" : "Espacio asignado",
"User backend" : "Motor de usuario",
"Storage location" : "Ubicación de los datos",
"Last login" : "Último inicio de sesión",
+ "Manager" : "Administrador",
+ "User actions" : "Acciones de usuario",
"No users in here" : "No hay usuarios aquí",
"Default quota" : "Espacio predefinido",
"Common languages" : "Idiomas habituales",
@@ -485,8 +493,8 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Limitar a los usuarios a compartir solo con los usuarios de sus grupos",
"Exclude groups from sharing" : "Excluye grupos de compartir",
"These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán iniciarlos.",
- "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir",
- "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Permitir el auto-completado del nombre de usuario en el diálogo de compartir y permitir el acceso a la libreta de direcciones del sistema",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Permitir el auto-completado a aquellos usuarios pertenecientes al mismo grupo y limitar las libretas de direcciones del sistema a los usuarios que se encuentran en los mismos grupos",
"Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar nombre de usuario a usuarios basado en la integración del número de teléfono",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si el autocompletado \"en mismo grupo\" e \"integración del número de telefono\" están activados, una coincidencia en cualquiera de ellos es suficiente para mostrar un usuario.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)",
@@ -527,7 +535,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.",
"Migration started …" : "Migración iniciada...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ha ocurrido un error durante la petición. No se puede continuar.",
"Plain" : "Plano",
"NT LAN Manager" : "Gestor de NT LAN",
@@ -546,6 +553,8 @@ OC.L10N.register(
"Pick background job setting" : "Escoge la configuración de las tareas en segundo plano",
"Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir",
+ "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo",
"Change privacy level of profile picture" : "Cambiar nivel de privacidad de la imagen de perfil",
"Upload new" : "Subir nueva",
"Select from Files" : "Seleccionar desde Archivos",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index 926d978cf9a..f28883bb8b0 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -320,7 +320,7 @@
"Edit your Profile visibility" : "Editar la visibilidad de tu perfil",
"Enable Profile" : "Activar Perfil",
"Unable to update profile enabled state" : "No se pudo actualizar el estado habilitado del perfil",
- "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Se respetará en tu perfil el ajuste más restrictivo entre visibilidad y alcance. Por ejemplo, si la visibilida está configurada en \"Mostrar a todos\" y el alcance en \"Privado\", los ajustes de \"Privado\" se respetarán.",
+ "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Se respetará en tu perfil el ajuste más restrictivo entre visibilidad y alcance. Por ejemplo, si la visibilidad está configurada en \"Mostrar a todos\" y el alcance en \"Privado\", los ajustes de \"Privado\" se respetarán.",
"Unable to update visibility of {displayId}" : "No se pudo actualizar la visibilidad de {displayId}",
"Your role" : "Tu rol",
"Your Twitter handle" : "Su usuario de Twitter",
@@ -333,11 +333,14 @@
"Add additional email" : "Añadir un email adicional",
"Add" : "Añadir",
"You do not have permissions to see the details of this user" : "No tienes permisos para ver los detalles de este usuario",
+ "Edit display name" : "Editar nombre a mostrar",
"Add new password" : " Añadir nueva contraseña",
"Add new email address" : "Añadir nueva dirección de correo electrónico",
"Add user to group" : "Añadir usuario a grupo",
"Set user as admin for" : "Marcar usuario como administrador para",
"Select user quota" : "Seleccionar cuota de usuario",
+ "Set the language" : "Establecer el idioma",
+ "Select manager" : "Seleccione administrador",
"Delete user" : "Eliminar usuario",
"Wipe all devices" : "Borrar todos los dispositivos",
"Disable user" : "Inhabilitar usuario",
@@ -353,17 +356,22 @@
"Edit User" : "Editar usuario",
"Toggle user actions menu" : "Alternar el menú de acciones del usuario",
"{size} used" : "{size} usados",
+ "User's table" : "Tabla de usuario",
"New user" : "Nuevo usuario",
"Will be autogenerated" : "Se generará de forma automática",
"Display name" : "Nombre para mostrar",
"Email" : "Correo electrónico",
"Default language" : "Idioma predeterminado",
+ "Select user manager" : "Seleccione administrador de usuarios",
"Add a new user" : "Añadir nuevo usuario",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grupo para",
"Quota" : "Espacio asignado",
"User backend" : "Motor de usuario",
"Storage location" : "Ubicación de los datos",
"Last login" : "Último inicio de sesión",
+ "Manager" : "Administrador",
+ "User actions" : "Acciones de usuario",
"No users in here" : "No hay usuarios aquí",
"Default quota" : "Espacio predefinido",
"Common languages" : "Idiomas habituales",
@@ -483,8 +491,8 @@
"Restrict users to only share with users in their groups" : "Limitar a los usuarios a compartir solo con los usuarios de sus grupos",
"Exclude groups from sharing" : "Excluye grupos de compartir",
"These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán iniciarlos.",
- "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir",
- "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Permitir el auto-completado del nombre de usuario en el diálogo de compartir y permitir el acceso a la libreta de direcciones del sistema",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Permitir el auto-completado a aquellos usuarios pertenecientes al mismo grupo y limitar las libretas de direcciones del sistema a los usuarios que se encuentran en los mismos grupos",
"Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar nombre de usuario a usuarios basado en la integración del número de teléfono",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si el autocompletado \"en mismo grupo\" e \"integración del número de telefono\" están activados, una coincidencia en cualquiera de ellos es suficiente para mostrar un usuario.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)",
@@ -525,7 +533,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.",
"Migration started …" : "Migración iniciada...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ha ocurrido un error durante la petición. No se puede continuar.",
"Plain" : "Plano",
"NT LAN Manager" : "Gestor de NT LAN",
@@ -544,6 +551,8 @@
"Pick background job setting" : "Escoge la configuración de las tareas en segundo plano",
"Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir",
+ "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo",
"Change privacy level of profile picture" : "Cambiar nivel de privacidad de la imagen de perfil",
"Upload new" : "Subir nueva",
"Select from Files" : "Seleccionar desde Archivos",
diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js
index bbbf5771733..9ccbc0c1cd1 100644
--- a/apps/settings/l10n/es_419.js
+++ b/apps/settings/l10n/es_419.js
@@ -161,6 +161,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -240,7 +241,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json
index e091d991a11..59fa0dc6e6e 100644
--- a/apps/settings/l10n/es_419.json
+++ b/apps/settings/l10n/es_419.json
@@ -159,6 +159,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -238,7 +239,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js
index ce74f288e7a..f9174e6915a 100644
--- a/apps/settings/l10n/es_AR.js
+++ b/apps/settings/l10n/es_AR.js
@@ -152,6 +152,7 @@ OC.L10N.register(
"Add" : "Añadir",
"Display name" : "Nombre para mostrar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -228,7 +229,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json
index 47f8c413919..e9186e2f53f 100644
--- a/apps/settings/l10n/es_AR.json
+++ b/apps/settings/l10n/es_AR.json
@@ -150,6 +150,7 @@
"Add" : "Añadir",
"Display name" : "Nombre para mostrar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -226,7 +227,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js
index 0f508292217..86f9fbf4f8c 100644
--- a/apps/settings/l10n/es_CL.js
+++ b/apps/settings/l10n/es_CL.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -237,7 +238,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json
index 9438ae2ba91..032126573ed 100644
--- a/apps/settings/l10n/es_CL.json
+++ b/apps/settings/l10n/es_CL.json
@@ -158,6 +158,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -235,7 +236,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js
index 0356183a5b7..807a253e274 100644
--- a/apps/settings/l10n/es_CO.js
+++ b/apps/settings/l10n/es_CO.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -237,7 +238,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json
index 01c2f3ad0fd..d021adf7cbb 100644
--- a/apps/settings/l10n/es_CO.json
+++ b/apps/settings/l10n/es_CO.json
@@ -158,6 +158,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -235,7 +236,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js
index 0356183a5b7..807a253e274 100644
--- a/apps/settings/l10n/es_CR.js
+++ b/apps/settings/l10n/es_CR.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -237,7 +238,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json
index 01c2f3ad0fd..d021adf7cbb 100644
--- a/apps/settings/l10n/es_CR.json
+++ b/apps/settings/l10n/es_CR.json
@@ -158,6 +158,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -235,7 +236,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js
index 0356183a5b7..807a253e274 100644
--- a/apps/settings/l10n/es_DO.js
+++ b/apps/settings/l10n/es_DO.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -237,7 +238,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json
index 01c2f3ad0fd..d021adf7cbb 100644
--- a/apps/settings/l10n/es_DO.json
+++ b/apps/settings/l10n/es_DO.json
@@ -158,6 +158,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -235,7 +236,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js
index 0356183a5b7..807a253e274 100644
--- a/apps/settings/l10n/es_EC.js
+++ b/apps/settings/l10n/es_EC.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -237,7 +238,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json
index 01c2f3ad0fd..d021adf7cbb 100644
--- a/apps/settings/l10n/es_EC.json
+++ b/apps/settings/l10n/es_EC.json
@@ -158,6 +158,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -235,7 +236,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js
index 0356183a5b7..807a253e274 100644
--- a/apps/settings/l10n/es_GT.js
+++ b/apps/settings/l10n/es_GT.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -237,7 +238,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json
index 01c2f3ad0fd..d021adf7cbb 100644
--- a/apps/settings/l10n/es_GT.json
+++ b/apps/settings/l10n/es_GT.json
@@ -158,6 +158,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -235,7 +236,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js
index eaac93f45be..c7908c4eaa1 100644
--- a/apps/settings/l10n/es_HN.js
+++ b/apps/settings/l10n/es_HN.js
@@ -155,6 +155,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -231,7 +232,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json
index 74b8faeaf7c..080d98cd10f 100644
--- a/apps/settings/l10n/es_HN.json
+++ b/apps/settings/l10n/es_HN.json
@@ -153,6 +153,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -229,7 +230,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js
index 4747b488706..b41e53a4cce 100644
--- a/apps/settings/l10n/es_MX.js
+++ b/apps/settings/l10n/es_MX.js
@@ -180,6 +180,7 @@ OC.L10N.register(
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
"Default language" : "Idioma predeterminado",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -261,7 +262,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Se presentó un error durante la solicitud. No es posible proceder.",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json
index 20a86a47a15..f5bd525bce6 100644
--- a/apps/settings/l10n/es_MX.json
+++ b/apps/settings/l10n/es_MX.json
@@ -178,6 +178,7 @@
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
"Default language" : "Idioma predeterminado",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -259,7 +260,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Se presentó un error durante la solicitud. No es posible proceder.",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js
index eaac93f45be..c7908c4eaa1 100644
--- a/apps/settings/l10n/es_NI.js
+++ b/apps/settings/l10n/es_NI.js
@@ -155,6 +155,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -231,7 +232,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json
index 74b8faeaf7c..080d98cd10f 100644
--- a/apps/settings/l10n/es_NI.json
+++ b/apps/settings/l10n/es_NI.json
@@ -153,6 +153,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -229,7 +230,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js
index eaac93f45be..c7908c4eaa1 100644
--- a/apps/settings/l10n/es_PA.js
+++ b/apps/settings/l10n/es_PA.js
@@ -155,6 +155,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -231,7 +232,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json
index 74b8faeaf7c..080d98cd10f 100644
--- a/apps/settings/l10n/es_PA.json
+++ b/apps/settings/l10n/es_PA.json
@@ -153,6 +153,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -229,7 +230,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js
index eaac93f45be..c7908c4eaa1 100644
--- a/apps/settings/l10n/es_PE.js
+++ b/apps/settings/l10n/es_PE.js
@@ -155,6 +155,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -231,7 +232,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json
index 74b8faeaf7c..080d98cd10f 100644
--- a/apps/settings/l10n/es_PE.json
+++ b/apps/settings/l10n/es_PE.json
@@ -153,6 +153,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -229,7 +230,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js
index eaac93f45be..c7908c4eaa1 100644
--- a/apps/settings/l10n/es_PR.js
+++ b/apps/settings/l10n/es_PR.js
@@ -155,6 +155,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -231,7 +232,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json
index 74b8faeaf7c..080d98cd10f 100644
--- a/apps/settings/l10n/es_PR.json
+++ b/apps/settings/l10n/es_PR.json
@@ -153,6 +153,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -229,7 +230,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js
index eaac93f45be..c7908c4eaa1 100644
--- a/apps/settings/l10n/es_PY.js
+++ b/apps/settings/l10n/es_PY.js
@@ -155,6 +155,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -231,7 +232,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json
index 74b8faeaf7c..080d98cd10f 100644
--- a/apps/settings/l10n/es_PY.json
+++ b/apps/settings/l10n/es_PY.json
@@ -153,6 +153,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -229,7 +230,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js
index 0356183a5b7..807a253e274 100644
--- a/apps/settings/l10n/es_SV.js
+++ b/apps/settings/l10n/es_SV.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -237,7 +238,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json
index 01c2f3ad0fd..d021adf7cbb 100644
--- a/apps/settings/l10n/es_SV.json
+++ b/apps/settings/l10n/es_SV.json
@@ -158,6 +158,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -235,7 +236,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js
index eaac93f45be..c7908c4eaa1 100644
--- a/apps/settings/l10n/es_UY.js
+++ b/apps/settings/l10n/es_UY.js
@@ -155,6 +155,7 @@ OC.L10N.register(
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -231,7 +232,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json
index 74b8faeaf7c..080d98cd10f 100644
--- a/apps/settings/l10n/es_UY.json
+++ b/apps/settings/l10n/es_UY.json
@@ -153,6 +153,7 @@
"{size} used" : "{size} usado",
"Display name" : "Nombre a desplegar",
"Email" : "Correo electrónico",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador del grupo para",
"Quota" : "Cuota",
"User backend" : "Backend del usuario",
@@ -229,7 +230,6 @@
"Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración",
"Migration started …" : "La migración ha comenzado ...",
"Address" : "Dirección",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Administrador de LAN NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index 42b8ce253d7..0971096f7a9 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -158,6 +158,7 @@ OC.L10N.register(
"Email" : "E-post",
"Default language" : "Vaikekeel",
"Add a new user" : "Lisa uus kasutaja",
+ "Avatar" : "Avatar",
"Group admin for" : "Grupi admin",
"Quota" : "Mahupiir",
"User backend" : "Kasutaja taustarakendus",
@@ -234,7 +235,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud",
"Migration started …" : "Kolimist on alustatud ...",
"Address" : "Aadress",
- "Avatar" : "Avatar",
"Plain" : "Tavatekst",
"NT LAN Manager" : "NT LAN Manager",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index 99e70484d66..db769036f97 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -156,6 +156,7 @@
"Email" : "E-post",
"Default language" : "Vaikekeel",
"Add a new user" : "Lisa uus kasutaja",
+ "Avatar" : "Avatar",
"Group admin for" : "Grupi admin",
"Quota" : "Mahupiir",
"User backend" : "Kasutaja taustarakendus",
@@ -232,7 +233,6 @@
"Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud",
"Migration started …" : "Kolimist on alustatud ...",
"Address" : "Aadress",
- "Avatar" : "Avatar",
"Plain" : "Tavatekst",
"NT LAN Manager" : "NT LAN Manager",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js
index 8fbb15e4aba..5e9ae8c56d3 100644
--- a/apps/settings/l10n/eu.js
+++ b/apps/settings/l10n/eu.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "E-posta",
"Default language" : "Hizkuntza lehenetsia",
"Add a new user" : "Gehitu erabiltze berria",
+ "Avatar" : "Avatarra",
"Group admin for" : "Talde honen administratzailea",
"Quota" : "Kuota",
"User backend" : "Erabiltzaile jatorria",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara",
"Exclude groups from sharing" : "Baztertu taldeak partekatzean",
"These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu",
- "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan",
- "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei",
"Allow username autocompletion to users based on phone number integration" : "Baimendu erabiltzaile-izenen osatze automatikoa telefono zenbakien integrazioan oinarritutako erabiltzaileei",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Osatze automatikoa \"talde bera\" eta \"telefono zenbakiaren integrazioa\" gaituta badaude, bat-etortzea nahikoa da erabiltzaileari erakusteko.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu automatikoki osatzea izen osoa edo helbide elektronikoa sartzerakoan (alde batera utziz falta den telefono-liburuarekin bat etortzea eta talde berean egotea)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.",
"Migration started …" : "Migrazioa hasi da...",
"Address" : "Helbidea",
- "Avatar" : "Avatarra",
"An error occured during the request. Unable to proceed." : "Errorea gertatu da eskaera egitean. Ezin da jarraitu.",
"Plain" : "Arrunta",
"NT LAN Manager" : "NT LAN Manager",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Aukeratu atzeko planoko atazen ezarpena",
"Recommended" : "Aholkatuta",
"The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.",
+ "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan",
+ "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei",
"Change privacy level of profile picture" : "Aldatu profileko irudiaren pribatutasun maila",
"Upload new" : "Kargatu berria",
"Select from Files" : "Aukeratu fitxategien artean",
diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json
index fddd93fa8e2..97c2f6c877c 100644
--- a/apps/settings/l10n/eu.json
+++ b/apps/settings/l10n/eu.json
@@ -359,6 +359,7 @@
"Email" : "E-posta",
"Default language" : "Hizkuntza lehenetsia",
"Add a new user" : "Gehitu erabiltze berria",
+ "Avatar" : "Avatarra",
"Group admin for" : "Talde honen administratzailea",
"Quota" : "Kuota",
"User backend" : "Erabiltzaile jatorria",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara",
"Exclude groups from sharing" : "Baztertu taldeak partekatzean",
"These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu",
- "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan",
- "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei",
"Allow username autocompletion to users based on phone number integration" : "Baimendu erabiltzaile-izenen osatze automatikoa telefono zenbakien integrazioan oinarritutako erabiltzaileei",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Osatze automatikoa \"talde bera\" eta \"telefono zenbakiaren integrazioa\" gaituta badaude, bat-etortzea nahikoa da erabiltzaileari erakusteko.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu automatikoki osatzea izen osoa edo helbide elektronikoa sartzerakoan (alde batera utziz falta den telefono-liburuarekin bat etortzea eta talde berean egotea)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.",
"Migration started …" : "Migrazioa hasi da...",
"Address" : "Helbidea",
- "Avatar" : "Avatarra",
"An error occured during the request. Unable to proceed." : "Errorea gertatu da eskaera egitean. Ezin da jarraitu.",
"Plain" : "Arrunta",
"NT LAN Manager" : "NT LAN Manager",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Aukeratu atzeko planoko atazen ezarpena",
"Recommended" : "Aholkatuta",
"The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.",
+ "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan",
+ "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei",
"Change privacy level of profile picture" : "Aldatu profileko irudiaren pribatutasun maila",
"Upload new" : "Kargatu berria",
"Select from Files" : "Aukeratu fitxategien artean",
diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js
index 1da143b0a45..bdd940ea710 100644
--- a/apps/settings/l10n/fa.js
+++ b/apps/settings/l10n/fa.js
@@ -270,6 +270,7 @@ OC.L10N.register(
"Email" : "ایمیل",
"Default language" : "زبان پیش فرض",
"Add a new user" : "افزودن کاربر جدید",
+ "Avatar" : "آواتار",
"Group admin for" : "مدیر گروه برای",
"Quota" : "سهم",
"User backend" : "پشتیبان کاربر",
@@ -378,7 +379,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "مهاجرت در حال اجراست. لطفا تا اتمام مهاجرت صبر کنید",
"Migration started …" : "مهاجرت شروع شد...",
"Address" : "آدرس",
- "Avatar" : "آواتار",
"An error occured during the request. Unable to proceed." : "هنگام درخواست خطایی روی داد. امکان ادامه وجود ندارد",
"Plain" : "ساده",
"NT LAN Manager" : "مدیر NT LAN",
diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json
index 1ea9e25f8c3..fa15dbf694e 100644
--- a/apps/settings/l10n/fa.json
+++ b/apps/settings/l10n/fa.json
@@ -268,6 +268,7 @@
"Email" : "ایمیل",
"Default language" : "زبان پیش فرض",
"Add a new user" : "افزودن کاربر جدید",
+ "Avatar" : "آواتار",
"Group admin for" : "مدیر گروه برای",
"Quota" : "سهم",
"User backend" : "پشتیبان کاربر",
@@ -376,7 +377,6 @@
"Migration in progress. Please wait until the migration is finished" : "مهاجرت در حال اجراست. لطفا تا اتمام مهاجرت صبر کنید",
"Migration started …" : "مهاجرت شروع شد...",
"Address" : "آدرس",
- "Avatar" : "آواتار",
"An error occured during the request. Unable to proceed." : "هنگام درخواست خطایی روی داد. امکان ادامه وجود ندارد",
"Plain" : "ساده",
"NT LAN Manager" : "مدیر NT LAN",
diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js
index b252cdff030..9cba67624b6 100644
--- a/apps/settings/l10n/fi.js
+++ b/apps/settings/l10n/fi.js
@@ -287,11 +287,13 @@ OC.L10N.register(
"Add additional email" : "Lisää toissijainen sähköpostiosoite",
"Add" : "Lisää",
"You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen",
+ "Edit display name" : "Muokkaa näyttönimeä",
"Add new password" : "Lisää uusi salasana",
"Add new email address" : "Lisää uusi sähköpostiosoite",
"Add user to group" : "Lisää käyttäjä ryhmään",
"Set user as admin for" : "Aseta käyttäjä järjestelmänvalvojaksi kohteelle",
"Select user quota" : "Valitse käyttäjäkiintiö",
+ "Set the language" : "Aseta kieli",
"Delete user" : "Poista käyttäjä",
"Wipe all devices" : "Tyhjennä kaikki laitteet",
"Disable user" : "Poista käyttäjä käytöstä",
@@ -313,6 +315,7 @@ OC.L10N.register(
"Email" : "Sähköpostiosoite",
"Default language" : "Oletuskieli",
"Add a new user" : "Lisää uusi käyttäjä",
+ "Avatar" : "Profiilikuva",
"Group admin for" : "Ryhmäylläpitäjä ryhmille",
"Quota" : "Kiintiö",
"User backend" : "Käyttäjätaustaosa",
@@ -429,8 +432,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Salli käyttäjien jakaa vain omassa ryhmässä olevien henkilöiden kesken",
"Exclude groups from sharing" : "Kiellä ryhmiä jakamasta",
"These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.",
- "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa",
- "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille",
"This text will be shown on the public link upload page when the file list is hidden." : "Tämä teksti näytetään julkisen linkin lähetyssivulla, kun tiedostolista on piilotettu.",
"Default share permissions" : "Oletusjako-oikeudet",
"Reasons to use Nextcloud in your organization" : "Nextcloudin käytön edut organisaatiossasi",
@@ -460,7 +461,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu",
"Migration started …" : "Migraatio käynnistyi…",
"Address" : "Osoite",
- "Avatar" : "Profiilikuva",
"An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.",
"Plain" : "Plain",
"NT LAN Manager" : "NT LAN Manager",
@@ -478,6 +478,8 @@ OC.L10N.register(
"Pick background job setting" : "Valitse taustatyöasetus",
"Recommended" : "Suositeltu",
"The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".",
+ "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa",
+ "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille",
"Change privacy level of profile picture" : "Muuta profiilikuvan yksityisyystasoa",
"Upload new" : "Lähetä uusi",
"Select from Files" : "Valitse tiedostosovelluksesta",
diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json
index 49150fde99f..fe6ac77b41d 100644
--- a/apps/settings/l10n/fi.json
+++ b/apps/settings/l10n/fi.json
@@ -285,11 +285,13 @@
"Add additional email" : "Lisää toissijainen sähköpostiosoite",
"Add" : "Lisää",
"You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen",
+ "Edit display name" : "Muokkaa näyttönimeä",
"Add new password" : "Lisää uusi salasana",
"Add new email address" : "Lisää uusi sähköpostiosoite",
"Add user to group" : "Lisää käyttäjä ryhmään",
"Set user as admin for" : "Aseta käyttäjä järjestelmänvalvojaksi kohteelle",
"Select user quota" : "Valitse käyttäjäkiintiö",
+ "Set the language" : "Aseta kieli",
"Delete user" : "Poista käyttäjä",
"Wipe all devices" : "Tyhjennä kaikki laitteet",
"Disable user" : "Poista käyttäjä käytöstä",
@@ -311,6 +313,7 @@
"Email" : "Sähköpostiosoite",
"Default language" : "Oletuskieli",
"Add a new user" : "Lisää uusi käyttäjä",
+ "Avatar" : "Profiilikuva",
"Group admin for" : "Ryhmäylläpitäjä ryhmille",
"Quota" : "Kiintiö",
"User backend" : "Käyttäjätaustaosa",
@@ -427,8 +430,6 @@
"Restrict users to only share with users in their groups" : "Salli käyttäjien jakaa vain omassa ryhmässä olevien henkilöiden kesken",
"Exclude groups from sharing" : "Kiellä ryhmiä jakamasta",
"These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.",
- "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa",
- "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille",
"This text will be shown on the public link upload page when the file list is hidden." : "Tämä teksti näytetään julkisen linkin lähetyssivulla, kun tiedostolista on piilotettu.",
"Default share permissions" : "Oletusjako-oikeudet",
"Reasons to use Nextcloud in your organization" : "Nextcloudin käytön edut organisaatiossasi",
@@ -458,7 +459,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu",
"Migration started …" : "Migraatio käynnistyi…",
"Address" : "Osoite",
- "Avatar" : "Profiilikuva",
"An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.",
"Plain" : "Plain",
"NT LAN Manager" : "NT LAN Manager",
@@ -476,6 +476,8 @@
"Pick background job setting" : "Valitse taustatyöasetus",
"Recommended" : "Suositeltu",
"The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".",
+ "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa",
+ "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille",
"Change privacy level of profile picture" : "Muuta profiilikuvan yksityisyystasoa",
"Upload new" : "Lähetä uusi",
"Select from Files" : "Valitse tiedostosovelluksesta",
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index 9dbd28a8109..d3cea716c72 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "E-mail",
"Default language" : "Langue par défaut",
"Add a new user" : "Ajouter un nouvel utilisateur",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrateur de groupe pour",
"Quota" : "Quota",
"User backend" : "Origine du compte",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "N'autoriser les partages qu'entre membres de mêmes groupes",
"Exclude groups from sharing" : "Empêcher certains groupes de partager",
"These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ",
- "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage",
- "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe",
"Allow username autocompletion to users based on phone number integration" : "Autoriser l'autocomplétion du nom d'utilisateur aux utilisateurs selon l'intégration du numéro de téléphone",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si les autocomplétions \"même groupe\" et \"intégration du numéro de téléphone\" sont activées, une correspondance avec l'une ou l'autre de ces conditions est suffisante pour afficher l'utilisateur.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion lorsque le nom d'utilisateur ou l'adresse e-mail est totalement saisi⋅e (en ignorant les correspondances manquantes dans le répertoire téléphonique et le fait d'appartenir au même groupe)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine",
"Migration started …" : "Migration démarrée...",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.",
"Plain" : "En clair",
"NT LAN Manager" : "Gestionnaire du réseau NT",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan",
"Recommended" : "Recommandé",
"The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".",
+ "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage",
+ "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe",
"Change privacy level of profile picture" : "Changer le niveau de confidentialité de la photo de profil",
"Upload new" : "Téléverser une nouvelle image",
"Select from Files" : "Sélectionner depuis Fichiers",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index f762a760de0..792e54d162d 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -359,6 +359,7 @@
"Email" : "E-mail",
"Default language" : "Langue par défaut",
"Add a new user" : "Ajouter un nouvel utilisateur",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrateur de groupe pour",
"Quota" : "Quota",
"User backend" : "Origine du compte",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "N'autoriser les partages qu'entre membres de mêmes groupes",
"Exclude groups from sharing" : "Empêcher certains groupes de partager",
"These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ",
- "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage",
- "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe",
"Allow username autocompletion to users based on phone number integration" : "Autoriser l'autocomplétion du nom d'utilisateur aux utilisateurs selon l'intégration du numéro de téléphone",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si les autocomplétions \"même groupe\" et \"intégration du numéro de téléphone\" sont activées, une correspondance avec l'une ou l'autre de ces conditions est suffisante pour afficher l'utilisateur.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion lorsque le nom d'utilisateur ou l'adresse e-mail est totalement saisi⋅e (en ignorant les correspondances manquantes dans le répertoire téléphonique et le fait d'appartenir au même groupe)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine",
"Migration started …" : "Migration démarrée...",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.",
"Plain" : "En clair",
"NT LAN Manager" : "Gestionnaire du réseau NT",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan",
"Recommended" : "Recommandé",
"The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".",
+ "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage",
+ "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe",
"Change privacy level of profile picture" : "Changer le niveau de confidentialité de la photo de profil",
"Upload new" : "Téléverser une nouvelle image",
"Select from Files" : "Sélectionner depuis Fichiers",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index 8e7e707487f..67a193803e5 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "Correo",
"Default language" : "Idioma predeterminado",
"Add a new user" : "Engadir un novo usuario",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grupo para",
"Quota" : "Cota",
"User backend" : "Infraestrutura do usuario",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Restrinxir os usuarios a compartir só cos usuarios dos seus grupos",
"Exclude groups from sharing" : "Excluír grupos da compartición",
"These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.",
- "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir",
- "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos",
"Allow username autocompletion to users based on phone number integration" : "Permitir o autocompletado do nome de usuario aos usuarios en función da integración do número de teléfono",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se está activado o autocompletado \"mesmo grupo\" e a \"integración do número de teléfono\", unha coincidencia en calquera é suficiente para mostrar ao usuario.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir o autocompletado ao introducir o nome completo ou o enderezo de correo electrónico (ignorando a coincidencia que falta na axenda telefónica e estar no mesmo grupo)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.",
"Migration started …" : "Iniciada a migración ...",
"Address" : "Enderezo",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.",
"Plain" : "Simple",
"NT LAN Manager" : "Xestor NT LAN",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Escolla os axustes do traballo en segundo plano",
"Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»",
+ "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir",
+ "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos",
"Change privacy level of profile picture" : "Cambia o nivel de privacidade da imaxe de perfil",
"Upload new" : "Novo envío",
"Select from Files" : "Seleccionar dende Ficheiros",
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index d052f3b9f4b..2c509282828 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -359,6 +359,7 @@
"Email" : "Correo",
"Default language" : "Idioma predeterminado",
"Add a new user" : "Engadir un novo usuario",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grupo para",
"Quota" : "Cota",
"User backend" : "Infraestrutura do usuario",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Restrinxir os usuarios a compartir só cos usuarios dos seus grupos",
"Exclude groups from sharing" : "Excluír grupos da compartición",
"These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.",
- "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir",
- "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos",
"Allow username autocompletion to users based on phone number integration" : "Permitir o autocompletado do nome de usuario aos usuarios en función da integración do número de teléfono",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se está activado o autocompletado \"mesmo grupo\" e a \"integración do número de teléfono\", unha coincidencia en calquera é suficiente para mostrar ao usuario.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir o autocompletado ao introducir o nome completo ou o enderezo de correo electrónico (ignorando a coincidencia que falta na axenda telefónica e estar no mesmo grupo)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.",
"Migration started …" : "Iniciada a migración ...",
"Address" : "Enderezo",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.",
"Plain" : "Simple",
"NT LAN Manager" : "Xestor NT LAN",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Escolla os axustes do traballo en segundo plano",
"Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»",
+ "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir",
+ "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos",
"Change privacy level of profile picture" : "Cambia o nivel de privacidade da imaxe de perfil",
"Upload new" : "Novo envío",
"Select from Files" : "Seleccionar dende Ficheiros",
diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js
index cd18bf23647..73ea98781a9 100644
--- a/apps/settings/l10n/he.js
+++ b/apps/settings/l10n/he.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Email" : "דוא״ל",
"Default language" : "שפת בררת מחדל",
"Add a new user" : "הוספת משתמש חדש",
+ "Avatar" : "תמונה מייצגת",
"Group admin for" : "הנהלת הקבוצה",
"Quota" : "מכיסה",
"User backend" : "מנגנון משתמש",
@@ -349,8 +350,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "הגבלת משתמשים לשתף רק עם משתמשים בקבוצה שלהם",
"Exclude groups from sharing" : "מניעת קבוצות משיתוף",
"These groups will still be able to receive shares, but not to initiate them." : "קבוצות אלו עדיין יוכלו לקבל שיתופים, אך לא לשתף בעצמם.",
- "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף",
- "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "הצגת טקסט הבהרה בעמוד ההעלאה בקישור הציבורי (מופיע רק כאשר רשימת הקבצים מוסתרת)",
"This text will be shown on the public link upload page when the file list is hidden." : "טקסט זה יופיע בקישור עמוד ההעלאה של הקישור הציבורי כאשר רשימת הקבצים מוסתרת.",
"Default share permissions" : "הרשאות שיתוף כבררת מחדל",
@@ -375,7 +374,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה",
"Migration started …" : "המרה החלה...",
"Address" : "כתובת",
- "Avatar" : "תמונה מייצגת",
"An error occured during the request. Unable to proceed." : "אירעה שגיאה במהלך הבקשה. לא ניתן להמשיך.",
"Plain" : "רגיל",
"NT LAN Manager" : "מנהל רשת NT",
@@ -393,6 +391,8 @@ OC.L10N.register(
"Pick background job setting" : "בחירת הגדרות למשימת רקע",
"Recommended" : "מומלץ",
"The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.",
+ "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף",
+ "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות",
"Upload new" : "העלאת חדש",
"Select from Files" : "בחירה מתוך קבצים",
"Remove image" : "הסרת תמונה",
diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json
index cb3a1b97fcf..0a4552f3f58 100644
--- a/apps/settings/l10n/he.json
+++ b/apps/settings/l10n/he.json
@@ -246,6 +246,7 @@
"Email" : "דוא״ל",
"Default language" : "שפת בררת מחדל",
"Add a new user" : "הוספת משתמש חדש",
+ "Avatar" : "תמונה מייצגת",
"Group admin for" : "הנהלת הקבוצה",
"Quota" : "מכיסה",
"User backend" : "מנגנון משתמש",
@@ -347,8 +348,6 @@
"Restrict users to only share with users in their groups" : "הגבלת משתמשים לשתף רק עם משתמשים בקבוצה שלהם",
"Exclude groups from sharing" : "מניעת קבוצות משיתוף",
"These groups will still be able to receive shares, but not to initiate them." : "קבוצות אלו עדיין יוכלו לקבל שיתופים, אך לא לשתף בעצמם.",
- "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף",
- "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "הצגת טקסט הבהרה בעמוד ההעלאה בקישור הציבורי (מופיע רק כאשר רשימת הקבצים מוסתרת)",
"This text will be shown on the public link upload page when the file list is hidden." : "טקסט זה יופיע בקישור עמוד ההעלאה של הקישור הציבורי כאשר רשימת הקבצים מוסתרת.",
"Default share permissions" : "הרשאות שיתוף כבררת מחדל",
@@ -373,7 +372,6 @@
"Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה",
"Migration started …" : "המרה החלה...",
"Address" : "כתובת",
- "Avatar" : "תמונה מייצגת",
"An error occured during the request. Unable to proceed." : "אירעה שגיאה במהלך הבקשה. לא ניתן להמשיך.",
"Plain" : "רגיל",
"NT LAN Manager" : "מנהל רשת NT",
@@ -391,6 +389,8 @@
"Pick background job setting" : "בחירת הגדרות למשימת רקע",
"Recommended" : "מומלץ",
"The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.",
+ "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף",
+ "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות",
"Upload new" : "העלאת חדש",
"Select from Files" : "בחירה מתוך קבצים",
"Remove image" : "הסרת תמונה",
diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js
index f4c1983405a..ad7e90333c7 100644
--- a/apps/settings/l10n/hr.js
+++ b/apps/settings/l10n/hr.js
@@ -287,6 +287,7 @@ OC.L10N.register(
"Email" : "E-pošta",
"Default language" : "Zadani jezik",
"Add a new user" : "Dodaj novog korisnika",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrator grupe za",
"Quota" : "Kvota",
"User backend" : "Korisnički pozadinski sustav",
@@ -405,8 +406,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Ograniči korisnike na dijeljenje samo s korisnicima unutar svoje grupe",
"Exclude groups from sharing" : "Izuzmi grupe iz dijeljenja",
"These groups will still be able to receive shares, but not to initiate them." : "Ove će grupe još uvijek moći primati dijeljene sadržaje, ali ih neće moći pokrenuti.",
- "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje",
- "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa",
"Allow username autocompletion to users based on phone number integration" : "Omogući korisnicima automatsko dovršavanje korisničkog imena na temelju integracije telefonskog broja",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ako je omogućeno automatsko dovršavanje „ista grupa” i „integracija telefonskog broja”, bilo koje od tih podudaranja dovoljno je za prikaz korisnika.",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Prikaži tekst izjave o odricanju od odgovornosti na stranici za otpremanje javnih poveznica (prikazuje se samo kad je popis datoteka skriven)",
@@ -444,7 +443,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi",
"Migration started …" : "Migracija je pokrenuta…",
"Address" : "Adresa",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Došlo je do pogreške tijekom rješavanja zahtjeva. Nije moguće nastaviti.",
"Plain" : "Čisti tekst",
"NT LAN Manager" : "NT LAN Manager",
@@ -462,6 +460,8 @@ OC.L10N.register(
"Pick background job setting" : "Odaberite postavku pozadinskog zadatka",
"Recommended" : "Preporuceno",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.",
+ "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje",
+ "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa",
"Change privacy level of profile picture" : "Promijeni razinu privatnosti profilne slike",
"Upload new" : "Otpremi novu",
"Select from Files" : "Odaberi iz datoteka",
diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json
index 44be1bd7d5d..304743d7fa1 100644
--- a/apps/settings/l10n/hr.json
+++ b/apps/settings/l10n/hr.json
@@ -285,6 +285,7 @@
"Email" : "E-pošta",
"Default language" : "Zadani jezik",
"Add a new user" : "Dodaj novog korisnika",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrator grupe za",
"Quota" : "Kvota",
"User backend" : "Korisnički pozadinski sustav",
@@ -403,8 +404,6 @@
"Restrict users to only share with users in their groups" : "Ograniči korisnike na dijeljenje samo s korisnicima unutar svoje grupe",
"Exclude groups from sharing" : "Izuzmi grupe iz dijeljenja",
"These groups will still be able to receive shares, but not to initiate them." : "Ove će grupe još uvijek moći primati dijeljene sadržaje, ali ih neće moći pokrenuti.",
- "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje",
- "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa",
"Allow username autocompletion to users based on phone number integration" : "Omogući korisnicima automatsko dovršavanje korisničkog imena na temelju integracije telefonskog broja",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ako je omogućeno automatsko dovršavanje „ista grupa” i „integracija telefonskog broja”, bilo koje od tih podudaranja dovoljno je za prikaz korisnika.",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Prikaži tekst izjave o odricanju od odgovornosti na stranici za otpremanje javnih poveznica (prikazuje se samo kad je popis datoteka skriven)",
@@ -442,7 +441,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi",
"Migration started …" : "Migracija je pokrenuta…",
"Address" : "Adresa",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Došlo je do pogreške tijekom rješavanja zahtjeva. Nije moguće nastaviti.",
"Plain" : "Čisti tekst",
"NT LAN Manager" : "NT LAN Manager",
@@ -460,6 +458,8 @@
"Pick background job setting" : "Odaberite postavku pozadinskog zadatka",
"Recommended" : "Preporuceno",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.",
+ "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje",
+ "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa",
"Change privacy level of profile picture" : "Promijeni razinu privatnosti profilne slike",
"Upload new" : "Otpremi novu",
"Select from Files" : "Odaberi iz datoteka",
diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js
index 0c2249a1ab3..8e15808744e 100644
--- a/apps/settings/l10n/hu.js
+++ b/apps/settings/l10n/hu.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "E-mail",
"Default language" : "Alapértelmezett nyelv",
"Add a new user" : "Új felhasználó felvétele",
+ "Avatar" : "Profilkép",
"Group admin for" : "Csoport rendszergazda itt:",
"Quota" : "Kvóta",
"User backend" : "Felhasználói háttérszolgáltatás",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "A felhasználók korlátozása, hogy csak a csoportjaikban lévő felhasználókkal oszthassanak meg dolgokat",
"Exclude groups from sharing" : "Csoportok megosztási jogának tiltása",
"These groups will still be able to receive shares, but not to initiate them." : "E csoportok tagjaival meg lehet osztani anyagokat, de ők nem hozhatnak létre megosztást.",
- "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ",
- "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ",
"Allow username autocompletion to users based on phone number integration" : "A felhasználónév automatikus kiegészítésének engedélyezése a felhasználók számára a telefonszám integráció alapján ",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ha az „ugyanazon csoport” és a „telefonszám integráció” engedélyezett, akkor bármelyik egyezés elegendő a felhasználó megjelenítéséhez. ",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Az automatikus kiegészítés engedélyezése a teljes név vagy e-mail-cím megadásakor (figyelmen kívül hagyva a hiányzó telefonkönyves egyezést és az ugyanabba a csoportba tartozást)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Áttelepítés folyamatban. Kis türelmet, míg az áttelepítés befejeződik.",
"Migration started …" : "Áttelepítés elindítva…",
"Address" : "Cím",
- "Avatar" : "Profilkép",
"An error occured during the request. Unable to proceed." : "Hiba lépett fel a kérés közben. Nem lehet végrehajtani.",
"Plain" : "Egyszerű",
"NT LAN Manager" : "NT LAN Manager",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Háttérfolyamat beállítás kiválasztása",
"Recommended" : "Ajánlott",
"The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t „%s” rendszerfelhasználónak kell végrehajtania.",
+ "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ",
+ "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ",
"Change privacy level of profile picture" : "A profilkép adatvédelmi szintjének módosítása",
"Upload new" : "Új feltöltése",
"Select from Files" : "Kiválasztás a Fájlokból",
diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json
index d47b6478521..25063673c90 100644
--- a/apps/settings/l10n/hu.json
+++ b/apps/settings/l10n/hu.json
@@ -359,6 +359,7 @@
"Email" : "E-mail",
"Default language" : "Alapértelmezett nyelv",
"Add a new user" : "Új felhasználó felvétele",
+ "Avatar" : "Profilkép",
"Group admin for" : "Csoport rendszergazda itt:",
"Quota" : "Kvóta",
"User backend" : "Felhasználói háttérszolgáltatás",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "A felhasználók korlátozása, hogy csak a csoportjaikban lévő felhasználókkal oszthassanak meg dolgokat",
"Exclude groups from sharing" : "Csoportok megosztási jogának tiltása",
"These groups will still be able to receive shares, but not to initiate them." : "E csoportok tagjaival meg lehet osztani anyagokat, de ők nem hozhatnak létre megosztást.",
- "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ",
- "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ",
"Allow username autocompletion to users based on phone number integration" : "A felhasználónév automatikus kiegészítésének engedélyezése a felhasználók számára a telefonszám integráció alapján ",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ha az „ugyanazon csoport” és a „telefonszám integráció” engedélyezett, akkor bármelyik egyezés elegendő a felhasználó megjelenítéséhez. ",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Az automatikus kiegészítés engedélyezése a teljes név vagy e-mail-cím megadásakor (figyelmen kívül hagyva a hiányzó telefonkönyves egyezést és az ugyanabba a csoportba tartozást)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Áttelepítés folyamatban. Kis türelmet, míg az áttelepítés befejeződik.",
"Migration started …" : "Áttelepítés elindítva…",
"Address" : "Cím",
- "Avatar" : "Profilkép",
"An error occured during the request. Unable to proceed." : "Hiba lépett fel a kérés közben. Nem lehet végrehajtani.",
"Plain" : "Egyszerű",
"NT LAN Manager" : "NT LAN Manager",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Háttérfolyamat beállítás kiválasztása",
"Recommended" : "Ajánlott",
"The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t „%s” rendszerfelhasználónak kell végrehajtania.",
+ "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ",
+ "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ",
"Change privacy level of profile picture" : "A profilkép adatvédelmi szintjének módosítása",
"Upload new" : "Új feltöltése",
"Select from Files" : "Kiválasztás a Fájlokból",
diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js
index f527b09b838..48f9f60de3f 100644
--- a/apps/settings/l10n/id.js
+++ b/apps/settings/l10n/id.js
@@ -254,6 +254,7 @@ OC.L10N.register(
"Email" : "Surel",
"Default language" : "Bahasa bawaan",
"Add a new user" : "Tambah pengguna baru",
+ "Avatar" : "Avatar",
"Group admin for" : "Grup admin untuk",
"Quota" : "Kuota",
"User backend" : "Backend pengguna",
@@ -363,7 +364,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai",
"Migration started …" : "Migrasi dimulai …",
"Address" : "Alamat",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Galat terjadi saat proses permintaan. Tidak dapat memproses.",
"Plain" : "Biasa",
"NT LAN Manager" : "Manajer NT LAN",
diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json
index 457e9a13ae8..7fb617c63de 100644
--- a/apps/settings/l10n/id.json
+++ b/apps/settings/l10n/id.json
@@ -252,6 +252,7 @@
"Email" : "Surel",
"Default language" : "Bahasa bawaan",
"Add a new user" : "Tambah pengguna baru",
+ "Avatar" : "Avatar",
"Group admin for" : "Grup admin untuk",
"Quota" : "Kuota",
"User backend" : "Backend pengguna",
@@ -361,7 +362,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai",
"Migration started …" : "Migrasi dimulai …",
"Address" : "Alamat",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Galat terjadi saat proses permintaan. Tidak dapat memproses.",
"Plain" : "Biasa",
"NT LAN Manager" : "Manajer NT LAN",
diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js
index bef520cec97..7494ed82ed8 100644
--- a/apps/settings/l10n/is.js
+++ b/apps/settings/l10n/is.js
@@ -229,6 +229,7 @@ OC.L10N.register(
"Email" : "Netfang",
"Default language" : "Sjálfgefið tungumál",
"Add a new user" : "Bæta við nýjum notanda",
+ "Avatar" : "Auðkennismynd",
"Group admin for" : "Hópstjóri fyrir",
"Quota" : "Kvóti",
"User backend" : "Bakendi notanda",
@@ -346,7 +347,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið",
"Migration started …" : "Yfirfærsla hafin...",
"Address" : "Heimilisfang",
- "Avatar" : "Auðkennismynd",
"An error occured during the request. Unable to proceed." : "Villa kom upp við beiðnina. Get ekki haldið áfram.",
"Plain" : "Einfalt",
"NT LAN Manager" : "NT LAN stjórnun",
diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json
index 336b6761480..dad24186d40 100644
--- a/apps/settings/l10n/is.json
+++ b/apps/settings/l10n/is.json
@@ -227,6 +227,7 @@
"Email" : "Netfang",
"Default language" : "Sjálfgefið tungumál",
"Add a new user" : "Bæta við nýjum notanda",
+ "Avatar" : "Auðkennismynd",
"Group admin for" : "Hópstjóri fyrir",
"Quota" : "Kvóti",
"User backend" : "Bakendi notanda",
@@ -344,7 +345,6 @@
"Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið",
"Migration started …" : "Yfirfærsla hafin...",
"Address" : "Heimilisfang",
- "Avatar" : "Auðkennismynd",
"An error occured during the request. Unable to proceed." : "Villa kom upp við beiðnina. Get ekki haldið áfram.",
"Plain" : "Einfalt",
"NT LAN Manager" : "NT LAN stjórnun",
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index 209a0100ce3..537966b5ff2 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -320,6 +320,7 @@ OC.L10N.register(
"Email" : "Posta elettronica",
"Default language" : "Lingua predefinita",
"Add a new user" : "Aggiungi un nuovo utente",
+ "Avatar" : "Avatar",
"Group admin for" : "Amministratore per il gruppo",
"Quota" : "Quote",
"User backend" : "Motore utente",
@@ -440,8 +441,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Limita gli utenti a condividere solo con gli utenti nei loro gruppi",
"Exclude groups from sharing" : "Escludi gruppi dalla condivisione",
"These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.",
- "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione",
- "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi",
"Allow username autocompletion to users based on phone number integration" : "Consenti il completamento del nome utente agli utenti basati sull'integrazione del numero di telefono",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se completamento di \"stesso gruppo\" e \"integrazione numero di telefono\" sono attivi, una corrispondenza in uno dei due è sufficiente per mostrare l'utente.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento automatico quando inserisci il nome completo o l'indirizzo e-mail (ignorando la corrispondenza della rubrica mancante e l'appartenenza allo stesso gruppo)",
@@ -481,7 +480,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione",
"Migration started …" : "Migrazione avviata...",
"Address" : "Indirizzo",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Si è verificato un errore durante la richiesta. Impossibile continuare..",
"Plain" : "Semplice",
"NT LAN Manager" : "Gestore NT LAN",
@@ -499,6 +497,8 @@ OC.L10N.register(
"Pick background job setting" : "Scegli le impostazioni delle operazioni in background",
"Recommended" : "Consigliata",
"The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione",
+ "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi",
"Change privacy level of profile picture" : "Cambia livello di privacy dell'immagine del profilo",
"Upload new" : "Carica nuova",
"Select from Files" : "Seleziona da file",
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index 7083ecfe96c..e1653f34cdb 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -318,6 +318,7 @@
"Email" : "Posta elettronica",
"Default language" : "Lingua predefinita",
"Add a new user" : "Aggiungi un nuovo utente",
+ "Avatar" : "Avatar",
"Group admin for" : "Amministratore per il gruppo",
"Quota" : "Quote",
"User backend" : "Motore utente",
@@ -438,8 +439,6 @@
"Restrict users to only share with users in their groups" : "Limita gli utenti a condividere solo con gli utenti nei loro gruppi",
"Exclude groups from sharing" : "Escludi gruppi dalla condivisione",
"These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.",
- "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione",
- "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi",
"Allow username autocompletion to users based on phone number integration" : "Consenti il completamento del nome utente agli utenti basati sull'integrazione del numero di telefono",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se completamento di \"stesso gruppo\" e \"integrazione numero di telefono\" sono attivi, una corrispondenza in uno dei due è sufficiente per mostrare l'utente.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento automatico quando inserisci il nome completo o l'indirizzo e-mail (ignorando la corrispondenza della rubrica mancante e l'appartenenza allo stesso gruppo)",
@@ -479,7 +478,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione",
"Migration started …" : "Migrazione avviata...",
"Address" : "Indirizzo",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Si è verificato un errore durante la richiesta. Impossibile continuare..",
"Plain" : "Semplice",
"NT LAN Manager" : "Gestore NT LAN",
@@ -497,6 +495,8 @@
"Pick background job setting" : "Scegli le impostazioni delle operazioni in background",
"Recommended" : "Consigliata",
"The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione",
+ "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi",
"Change privacy level of profile picture" : "Cambia livello di privacy dell'immagine del profilo",
"Upload new" : "Carica nuova",
"Select from Files" : "Seleziona da file",
diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js
index d5a941b7684..7a7fd69d1de 100644
--- a/apps/settings/l10n/ja.js
+++ b/apps/settings/l10n/ja.js
@@ -354,6 +354,7 @@ OC.L10N.register(
"Email" : "メール",
"Default language" : "デフォルトの言語",
"Add a new user" : "新しいユーザーを追加",
+ "Avatar" : "アバター",
"Group admin for" : "グループの管理者",
"Quota" : "クオータ",
"User backend" : "ユーザーバックエンド",
@@ -477,8 +478,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "グループ内のユーザーでのみ共有するように制限する",
"Exclude groups from sharing" : "共有可能なグループから除外する",
"These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。",
- "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する",
- "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する",
"Allow username autocompletion to users based on phone number integration" : "電話番号を連携しているユーザーのユーザー名を自動補完する",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "自動補完で「同じグループ」と「電話番号の連携」が有効になっている場合は、どちらかに一致するだけでユーザーに表示されます。",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "氏名または電子メールアドレスを入力するときにユーザー名を自動補完する(連絡先での不一致、同じグループへの所属かどうかを無視)",
@@ -519,7 +518,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。",
"Migration started …" : "移行を開始しました…",
"Address" : "住所",
- "Avatar" : "アバター",
"An error occured during the request. Unable to proceed." : "要求中にエラーが発生しました。 続行できません。",
"Plain" : "平文",
"NT LAN Manager" : "NT LAN マネージャー",
@@ -538,6 +536,8 @@ OC.L10N.register(
"Pick background job setting" : "バックグラウンドジョブ設定を選択",
"Recommended" : "おすすめ",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。",
+ "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する",
+ "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する",
"Change privacy level of profile picture" : "プロフィール写真のプライバシーレベルを変更",
"Upload new" : "新たにアップロード",
"Select from Files" : "ファイルから選択",
diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json
index 221ef55ee45..671095c406c 100644
--- a/apps/settings/l10n/ja.json
+++ b/apps/settings/l10n/ja.json
@@ -352,6 +352,7 @@
"Email" : "メール",
"Default language" : "デフォルトの言語",
"Add a new user" : "新しいユーザーを追加",
+ "Avatar" : "アバター",
"Group admin for" : "グループの管理者",
"Quota" : "クオータ",
"User backend" : "ユーザーバックエンド",
@@ -475,8 +476,6 @@
"Restrict users to only share with users in their groups" : "グループ内のユーザーでのみ共有するように制限する",
"Exclude groups from sharing" : "共有可能なグループから除外する",
"These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。",
- "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する",
- "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する",
"Allow username autocompletion to users based on phone number integration" : "電話番号を連携しているユーザーのユーザー名を自動補完する",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "自動補完で「同じグループ」と「電話番号の連携」が有効になっている場合は、どちらかに一致するだけでユーザーに表示されます。",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "氏名または電子メールアドレスを入力するときにユーザー名を自動補完する(連絡先での不一致、同じグループへの所属かどうかを無視)",
@@ -517,7 +516,6 @@
"Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。",
"Migration started …" : "移行を開始しました…",
"Address" : "住所",
- "Avatar" : "アバター",
"An error occured during the request. Unable to proceed." : "要求中にエラーが発生しました。 続行できません。",
"Plain" : "平文",
"NT LAN Manager" : "NT LAN マネージャー",
@@ -536,6 +534,8 @@
"Pick background job setting" : "バックグラウンドジョブ設定を選択",
"Recommended" : "おすすめ",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。",
+ "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する",
+ "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する",
"Change privacy level of profile picture" : "プロフィール写真のプライバシーレベルを変更",
"Upload new" : "新たにアップロード",
"Select from Files" : "ファイルから選択",
diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js
index 91f0b62eb68..e60646a6a8d 100644
--- a/apps/settings/l10n/ka_GE.js
+++ b/apps/settings/l10n/ka_GE.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"{size} used" : "მოხმარებულია {size}",
"Display name" : "დისპლეი სახელი",
"Email" : "ელ-ფოსტა",
+ "Avatar" : "ავატარი",
"Group admin for" : "ადმინისტრატორის შეჯგუფება",
"Quota" : "ქვოტა",
"User backend" : "მომხმარებელის ბექენდი",
@@ -236,7 +237,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას",
"Migration started …" : "მიგრაცია დაიწყო …",
"Address" : "მისამართი",
- "Avatar" : "ავატარი",
"Plain" : "ჩვეულებრივი",
"NT LAN Manager" : "NT LAN მენეჯერი",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json
index 5ad107bb4f3..f93105d6d44 100644
--- a/apps/settings/l10n/ka_GE.json
+++ b/apps/settings/l10n/ka_GE.json
@@ -157,6 +157,7 @@
"{size} used" : "მოხმარებულია {size}",
"Display name" : "დისპლეი სახელი",
"Email" : "ელ-ფოსტა",
+ "Avatar" : "ავატარი",
"Group admin for" : "ადმინისტრატორის შეჯგუფება",
"Quota" : "ქვოტა",
"User backend" : "მომხმარებელის ბექენდი",
@@ -234,7 +235,6 @@
"Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას",
"Migration started …" : "მიგრაცია დაიწყო …",
"Address" : "მისამართი",
- "Avatar" : "ავატარი",
"Plain" : "ჩვეულებრივი",
"NT LAN Manager" : "NT LAN მენეჯერი",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js
index b5bb43a1972..1d060a40d7e 100644
--- a/apps/settings/l10n/ko.js
+++ b/apps/settings/l10n/ko.js
@@ -321,6 +321,7 @@ OC.L10N.register(
"Email" : "이메일",
"Default language" : "기본 언어",
"Add a new user" : "새 사용자 추가",
+ "Avatar" : "아바타",
"Group admin for" : "다음 그룹의 관리자:",
"Quota" : "할당량",
"User backend" : "사용자 백엔드",
@@ -469,7 +470,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오",
"Migration started …" : "이전 시작됨...",
"Address" : "주소",
- "Avatar" : "아바타",
"An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.",
"Plain" : "일반",
"NT LAN Manager" : "NT LAN 관리자",
diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json
index bf99efe6365..00b9bc53361 100644
--- a/apps/settings/l10n/ko.json
+++ b/apps/settings/l10n/ko.json
@@ -319,6 +319,7 @@
"Email" : "이메일",
"Default language" : "기본 언어",
"Add a new user" : "새 사용자 추가",
+ "Avatar" : "아바타",
"Group admin for" : "다음 그룹의 관리자:",
"Quota" : "할당량",
"User backend" : "사용자 백엔드",
@@ -467,7 +468,6 @@
"Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오",
"Migration started …" : "이전 시작됨...",
"Address" : "주소",
- "Avatar" : "아바타",
"An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.",
"Plain" : "일반",
"NT LAN Manager" : "NT LAN 관리자",
diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js
index 5b5d99af552..4ebccb3982c 100644
--- a/apps/settings/l10n/lt_LT.js
+++ b/apps/settings/l10n/lt_LT.js
@@ -318,6 +318,7 @@ OC.L10N.register(
"Email" : "El. paštas",
"Default language" : "Numatytoji kalba",
"Add a new user" : "Pridėti naują naudotoją",
+ "Avatar" : "Avataras",
"Group admin for" : "Grupės administratorius",
"Quota" : "Limitas",
"User backend" : "Naudotojo vidinė pusė",
@@ -459,7 +460,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas",
"Migration started …" : "Perkėlimas pradėtas …",
"Address" : "Adresas",
- "Avatar" : "Avataras",
"An error occured during the request. Unable to proceed." : "Užklausos metu, įvyko klaida. Nepavyksta tęsti.",
"Plain" : "Paprastas",
"NT LAN Manager" : "NT LAN tvarkytuvė",
diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json
index 6315827c13d..612877da52e 100644
--- a/apps/settings/l10n/lt_LT.json
+++ b/apps/settings/l10n/lt_LT.json
@@ -316,6 +316,7 @@
"Email" : "El. paštas",
"Default language" : "Numatytoji kalba",
"Add a new user" : "Pridėti naują naudotoją",
+ "Avatar" : "Avataras",
"Group admin for" : "Grupės administratorius",
"Quota" : "Limitas",
"User backend" : "Naudotojo vidinė pusė",
@@ -457,7 +458,6 @@
"Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas",
"Migration started …" : "Perkėlimas pradėtas …",
"Address" : "Adresas",
- "Avatar" : "Avataras",
"An error occured during the request. Unable to proceed." : "Užklausos metu, įvyko klaida. Nepavyksta tęsti.",
"Plain" : "Paprastas",
"NT LAN Manager" : "NT LAN tvarkytuvė",
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index f03925fd801..66abc324450 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -109,6 +109,7 @@ OC.L10N.register(
"Add" : "Pievienot",
"Display name" : "Ekrāna vārds",
"Email" : "E-pasts",
+ "Avatar" : "Profila attēls",
"Group admin for" : "Admin grupa",
"Quota" : "Apjoms",
"Storage location" : "Krātuves atrašanās vieta",
@@ -168,7 +169,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Notiek migrācija. Lūdzu, pagaidiet, līdz migrēšana ir pabeigta",
"Migration started …" : "Uzsākta migrācija...",
"Address" : "Adrese",
- "Avatar" : "Profila attēls",
"Plain" : "vienkāršs teksts",
"NT LAN Manager" : "NT LAN Pārvaldnieks",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index d5d7b56e1e9..303e8c74660 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -107,6 +107,7 @@
"Add" : "Pievienot",
"Display name" : "Ekrāna vārds",
"Email" : "E-pasts",
+ "Avatar" : "Profila attēls",
"Group admin for" : "Admin grupa",
"Quota" : "Apjoms",
"Storage location" : "Krātuves atrašanās vieta",
@@ -166,7 +167,6 @@
"Migration in progress. Please wait until the migration is finished" : "Notiek migrācija. Lūdzu, pagaidiet, līdz migrēšana ir pabeigta",
"Migration started …" : "Uzsākta migrācija...",
"Address" : "Adrese",
- "Avatar" : "Profila attēls",
"Plain" : "vienkāršs teksts",
"NT LAN Manager" : "NT LAN Pārvaldnieks",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js
index cb8ef036520..3c2d4c8398e 100644
--- a/apps/settings/l10n/mk.js
+++ b/apps/settings/l10n/mk.js
@@ -342,6 +342,7 @@ OC.L10N.register(
"Email" : "Е-пошта",
"Default language" : "Стајдарден јазик",
"Add a new user" : "Додади нов корисник",
+ "Avatar" : "Аватар",
"Group admin for" : "Администратор на група",
"Quota" : "Квота",
"User backend" : "Задна страна на корисник",
@@ -463,8 +464,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи",
"Exclude groups from sharing" : "Исклучи групи од споделување",
"These groups will still be able to receive shares, but not to initiate them." : "Овие групи сеуште ќе можат да добиваат споделувања, но не и да ги иницираат.",
- "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување",
- "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ",
"Allow username autocompletion to users based on phone number integration" : "Овозможи автоматско комплетирање на корисниците од интеграцијата со телефонски број",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако се овозможени автоматско пополнување \"иста група\" и \"интеграција на телефонски број\", доволно е да се совпадне или да се прикаже на корисникот.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "озволете автоматско пополнување кога го внесувате целосното име или адресата на е-пошта (игнорирање што недостасува совпаѓање со именикот и сте во иста група)",
@@ -500,7 +499,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши",
"Migration started …" : "Миграцијата е започнаа ...",
"Address" : "Адреса",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.",
"Plain" : "Чиста",
"NT LAN Manager" : "NT LAN Менаџер",
@@ -519,6 +517,8 @@ OC.L10N.register(
"Pick background job setting" : "Избери го начинот на извршување на задачите во позадина",
"Recommended" : "Препорачано",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".",
+ "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување",
+ "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ",
"Change privacy level of profile picture" : "Променете го нивото на приватност за сликата на профилот",
"Upload new" : "Прикачи нова",
"Select from Files" : "Избри од датотеките",
diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json
index 639f9db5c1e..c91f25ecc35 100644
--- a/apps/settings/l10n/mk.json
+++ b/apps/settings/l10n/mk.json
@@ -340,6 +340,7 @@
"Email" : "Е-пошта",
"Default language" : "Стајдарден јазик",
"Add a new user" : "Додади нов корисник",
+ "Avatar" : "Аватар",
"Group admin for" : "Администратор на група",
"Quota" : "Квота",
"User backend" : "Задна страна на корисник",
@@ -461,8 +462,6 @@
"Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи",
"Exclude groups from sharing" : "Исклучи групи од споделување",
"These groups will still be able to receive shares, but not to initiate them." : "Овие групи сеуште ќе можат да добиваат споделувања, но не и да ги иницираат.",
- "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување",
- "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ",
"Allow username autocompletion to users based on phone number integration" : "Овозможи автоматско комплетирање на корисниците од интеграцијата со телефонски број",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако се овозможени автоматско пополнување \"иста група\" и \"интеграција на телефонски број\", доволно е да се совпадне или да се прикаже на корисникот.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "озволете автоматско пополнување кога го внесувате целосното име или адресата на е-пошта (игнорирање што недостасува совпаѓање со именикот и сте во иста група)",
@@ -498,7 +497,6 @@
"Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши",
"Migration started …" : "Миграцијата е започнаа ...",
"Address" : "Адреса",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.",
"Plain" : "Чиста",
"NT LAN Manager" : "NT LAN Менаџер",
@@ -517,6 +515,8 @@
"Pick background job setting" : "Избери го начинот на извршување на задачите во позадина",
"Recommended" : "Препорачано",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".",
+ "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување",
+ "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ",
"Change privacy level of profile picture" : "Променете го нивото на приватност за сликата на профилот",
"Upload new" : "Прикачи нова",
"Select from Files" : "Избри од датотеките",
diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js
index 1fb9f3fd118..edf36a820fa 100644
--- a/apps/settings/l10n/nb.js
+++ b/apps/settings/l10n/nb.js
@@ -324,6 +324,7 @@ OC.L10N.register(
"Email" : "E-post",
"Default language" : "Standard språk",
"Add a new user" : "Legg til en ny bruker",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppeadministrator for",
"Quota" : "Kvote",
"User backend" : "Bruker-server",
@@ -460,7 +461,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.",
"Migration started …" : "Migrering startet…",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "En feil oppsto under forespørselen. Kan ikke fortsette.",
"Plain" : "Enkel",
"NT LAN Manager" : "NT LAN-behandler",
diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json
index 45eddd03750..7637a7f9dc9 100644
--- a/apps/settings/l10n/nb.json
+++ b/apps/settings/l10n/nb.json
@@ -322,6 +322,7 @@
"Email" : "E-post",
"Default language" : "Standard språk",
"Add a new user" : "Legg til en ny bruker",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppeadministrator for",
"Quota" : "Kvote",
"User backend" : "Bruker-server",
@@ -458,7 +459,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.",
"Migration started …" : "Migrering startet…",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "En feil oppsto under forespørselen. Kan ikke fortsette.",
"Plain" : "Enkel",
"NT LAN Manager" : "NT LAN-behandler",
diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js
index a2967a16f87..f3ca048d090 100644
--- a/apps/settings/l10n/nl.js
+++ b/apps/settings/l10n/nl.js
@@ -312,6 +312,7 @@ OC.L10N.register(
"Email" : "E-mailadres",
"Default language" : "Standaardtaal",
"Add a new user" : "Nieuwe gebruiker toevoegen",
+ "Avatar" : "Avatar",
"Group admin for" : "Groepsbeheerder voor",
"Quota" : "Limieten",
"User backend" : "Backend gebruiker",
@@ -432,8 +433,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen",
"Exclude groups from sharing" : "Sta bepaalde groepen niet toe om te delen",
"These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen en bestanden ontvangen, maar kunnen zelf niks delen.",
- "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan",
- "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan",
"Allow username autocompletion to users based on phone number integration" : "Toestaan automatisch aanvullen van gebruikersnamen gebaseerd op telefoonnummer integratie",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Als automatisch aanvullen \"dezelfde groep\" en \"telefoonnummer integratie\" zijn ingeschakeld, is een overeenkomst in een van beide voldoende om de gebruiker te tonen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Automatisch aanvullen toestaan bij het invoeren van de volledige naam of het e-mailadres (ontbrekende overeenkomst in het telefoonboek negeren en deel uitmaken van dezelfde groep)",
@@ -473,7 +472,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.",
"Migration started …" : "Migratie gestart...",
"Address" : "Adres",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Er trad een fout op bij de aanvraag. Kan niet doorgaan.",
"Plain" : "Gewoon",
"NT LAN Manager" : "NT LAN Manager",
@@ -491,6 +489,8 @@ OC.L10N.register(
"Pick background job setting" : "Kies de achtergrondtaak instelling",
"Recommended" : "Aanbevolen",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".",
+ "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan",
+ "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan",
"Change privacy level of profile picture" : "Wijzigen privacyniveau van profielafbeelding",
"Upload new" : "Upload een nieuwe",
"Select from Files" : "Kies uit bestanden",
diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json
index e19b07162aa..7aac00c4d5d 100644
--- a/apps/settings/l10n/nl.json
+++ b/apps/settings/l10n/nl.json
@@ -310,6 +310,7 @@
"Email" : "E-mailadres",
"Default language" : "Standaardtaal",
"Add a new user" : "Nieuwe gebruiker toevoegen",
+ "Avatar" : "Avatar",
"Group admin for" : "Groepsbeheerder voor",
"Quota" : "Limieten",
"User backend" : "Backend gebruiker",
@@ -430,8 +431,6 @@
"Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen",
"Exclude groups from sharing" : "Sta bepaalde groepen niet toe om te delen",
"These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen en bestanden ontvangen, maar kunnen zelf niks delen.",
- "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan",
- "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan",
"Allow username autocompletion to users based on phone number integration" : "Toestaan automatisch aanvullen van gebruikersnamen gebaseerd op telefoonnummer integratie",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Als automatisch aanvullen \"dezelfde groep\" en \"telefoonnummer integratie\" zijn ingeschakeld, is een overeenkomst in een van beide voldoende om de gebruiker te tonen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Automatisch aanvullen toestaan bij het invoeren van de volledige naam of het e-mailadres (ontbrekende overeenkomst in het telefoonboek negeren en deel uitmaken van dezelfde groep)",
@@ -471,7 +470,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.",
"Migration started …" : "Migratie gestart...",
"Address" : "Adres",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Er trad een fout op bij de aanvraag. Kan niet doorgaan.",
"Plain" : "Gewoon",
"NT LAN Manager" : "NT LAN Manager",
@@ -489,6 +487,8 @@
"Pick background job setting" : "Kies de achtergrondtaak instelling",
"Recommended" : "Aanbevolen",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".",
+ "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan",
+ "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan",
"Change privacy level of profile picture" : "Wijzigen privacyniveau van profielafbeelding",
"Upload new" : "Upload een nieuwe",
"Select from Files" : "Kies uit bestanden",
diff --git a/apps/settings/l10n/nn_NO.js b/apps/settings/l10n/nn_NO.js
index 19c83032323..cbac9f99b77 100644
--- a/apps/settings/l10n/nn_NO.js
+++ b/apps/settings/l10n/nn_NO.js
@@ -80,6 +80,7 @@ OC.L10N.register(
"Help translate" : "Hjelp oss å omsetja",
"Add" : "Legg til",
"Email" : "E-post",
+ "Avatar" : "Avatar",
"Quota" : "Kvote",
"Last login" : "Siste innlogging",
"Add group" : "Legg til gruppe",
@@ -117,7 +118,6 @@ OC.L10N.register(
"Couldn't update app." : "Klarte ikkje oppdatera programmet.",
"Migration started …" : "Overføring har starta…",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"Enable encryption" : "Aktiver kryptering",
"Start migration" : "Start migrasjon",
"Upload new" : "Last opp ny",
diff --git a/apps/settings/l10n/nn_NO.json b/apps/settings/l10n/nn_NO.json
index b605488e346..f68edadb040 100644
--- a/apps/settings/l10n/nn_NO.json
+++ b/apps/settings/l10n/nn_NO.json
@@ -78,6 +78,7 @@
"Help translate" : "Hjelp oss å omsetja",
"Add" : "Legg til",
"Email" : "E-post",
+ "Avatar" : "Avatar",
"Quota" : "Kvote",
"Last login" : "Siste innlogging",
"Add group" : "Legg til gruppe",
@@ -115,7 +116,6 @@
"Couldn't update app." : "Klarte ikkje oppdatera programmet.",
"Migration started …" : "Overføring har starta…",
"Address" : "Adresse",
- "Avatar" : "Avatar",
"Enable encryption" : "Aktiver kryptering",
"Start migration" : "Start migrasjon",
"Upload new" : "Last opp ny",
diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js
index bd70d1660e1..c3fa6e5bb26 100644
--- a/apps/settings/l10n/oc.js
+++ b/apps/settings/l10n/oc.js
@@ -172,6 +172,7 @@ OC.L10N.register(
"Email" : "Adreça corrièl",
"Default language" : "Lenga per defaut",
"Add a new user" : "Apondre un utilizaire novè",
+ "Avatar" : "Avatar",
"Quota" : "Quota",
"Last login" : "Darrièra connexion",
"No users in here" : "Cap d’utilizaire aquí",
@@ -253,7 +254,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migracion en cors. Mercés d’esperar fins que la migracion aja acabat",
"Migration started …" : "Migracion començada…",
"Address" : "Adreça",
- "Avatar" : "Avatar",
"STARTTLS" : "STARTTLS",
"Enable encryption" : "Activar lo chiframent",
"Start migration" : "Començar la migracion",
diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json
index 9230831f4eb..23709bf2957 100644
--- a/apps/settings/l10n/oc.json
+++ b/apps/settings/l10n/oc.json
@@ -170,6 +170,7 @@
"Email" : "Adreça corrièl",
"Default language" : "Lenga per defaut",
"Add a new user" : "Apondre un utilizaire novè",
+ "Avatar" : "Avatar",
"Quota" : "Quota",
"Last login" : "Darrièra connexion",
"No users in here" : "Cap d’utilizaire aquí",
@@ -251,7 +252,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migracion en cors. Mercés d’esperar fins que la migracion aja acabat",
"Migration started …" : "Migracion començada…",
"Address" : "Adreça",
- "Avatar" : "Avatar",
"STARTTLS" : "STARTTLS",
"Enable encryption" : "Activar lo chiframent",
"Start migration" : "Començar la migracion",
diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js
index 9c3df5b5331..87639013523 100644
--- a/apps/settings/l10n/pl.js
+++ b/apps/settings/l10n/pl.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "E-mail",
"Default language" : "Domyślny język",
"Add a new user" : "Dodaj użytkownika",
+ "Avatar" : "Awatar",
"Group admin for" : "Administrator grupy",
"Quota" : "Limit",
"User backend" : "Moduł użytkownika",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Ogranicz użytkownikom możliwość udostępniania, pozwól tylko w swoich grupach",
"Exclude groups from sharing" : "Wyklucz grupy z udostępniania",
"These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogły otrzymywać udostępnienia, ale nie będą mogły ich tworzyć.",
- "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia",
- "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach",
"Allow username autocompletion to users based on phone number integration" : "Zezwalaj na automatyczne uzupełnianie nazw użytkowników na podstawie integracji numeru telefonu",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Jeśli automatyczne uzupełnianie \"ta sama grupa\" i \"integracja numeru telefonu\" są włączone, wystarczy dopasowanie w jednej z nich, aby pokazać użytkownikowi.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na autouzupełnianie podczas wpisywania pełnej nazwy lub adresu e-mail (ignorując brak dopasowania książki telefonicznej i bycie w tej samej grupie)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migracja w toku. Poczekaj na zakończenie migracji.",
"Migration started …" : "Migracja rozpoczęta…",
"Address" : "Adres",
- "Avatar" : "Awatar",
"An error occured during the request. Unable to proceed." : "Wystąpił błąd zapytania. Nie można kontynuować.",
"Plain" : "Czysty tekst",
"NT LAN Manager" : "NT LAN Manager",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Wybierz ustawienie zadania w tle",
"Recommended" : "Zalecane",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".",
+ "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia",
+ "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach",
"Change privacy level of profile picture" : "Zmień poziom prywatności zdjęcia profilowego",
"Upload new" : "Wczytaj nowe",
"Select from Files" : "Wybierz z Plików",
diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json
index 905cb37e23d..6fb51fa4949 100644
--- a/apps/settings/l10n/pl.json
+++ b/apps/settings/l10n/pl.json
@@ -359,6 +359,7 @@
"Email" : "E-mail",
"Default language" : "Domyślny język",
"Add a new user" : "Dodaj użytkownika",
+ "Avatar" : "Awatar",
"Group admin for" : "Administrator grupy",
"Quota" : "Limit",
"User backend" : "Moduł użytkownika",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Ogranicz użytkownikom możliwość udostępniania, pozwól tylko w swoich grupach",
"Exclude groups from sharing" : "Wyklucz grupy z udostępniania",
"These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogły otrzymywać udostępnienia, ale nie będą mogły ich tworzyć.",
- "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia",
- "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach",
"Allow username autocompletion to users based on phone number integration" : "Zezwalaj na automatyczne uzupełnianie nazw użytkowników na podstawie integracji numeru telefonu",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Jeśli automatyczne uzupełnianie \"ta sama grupa\" i \"integracja numeru telefonu\" są włączone, wystarczy dopasowanie w jednej z nich, aby pokazać użytkownikowi.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na autouzupełnianie podczas wpisywania pełnej nazwy lub adresu e-mail (ignorując brak dopasowania książki telefonicznej i bycie w tej samej grupie)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migracja w toku. Poczekaj na zakończenie migracji.",
"Migration started …" : "Migracja rozpoczęta…",
"Address" : "Adres",
- "Avatar" : "Awatar",
"An error occured during the request. Unable to proceed." : "Wystąpił błąd zapytania. Nie można kontynuować.",
"Plain" : "Czysty tekst",
"NT LAN Manager" : "NT LAN Manager",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Wybierz ustawienie zadania w tle",
"Recommended" : "Zalecane",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".",
+ "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia",
+ "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach",
"Change privacy level of profile picture" : "Zmień poziom prywatności zdjęcia profilowego",
"Upload new" : "Wczytaj nowe",
"Select from Files" : "Wybierz z Plików",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index de47a77c807..cd9304c9420 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "E-mail",
"Default language" : "Idioma padrão",
"Add a new user" : "Adicione um novo usuário",
+ "Avatar" : "Avatar",
"Group admin for" : "Admin. de grupo",
"Quota" : "Cota",
"User backend" : "Plataforma de serviço de usuário",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Restringir os usuários para compartilhar apenas com usuários em seus grupos",
"Exclude groups from sharing" : "Impedir que alguns grupos compartilhem",
"These groups will still be able to receive shares, but not to initiate them." : "Estes grupos ainda serão capazes de receber compartilhamentos, mas não iniciá-los.",
- "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento",
- "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos",
"Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar o nome do usuário com base na integração do número de telefone",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se autocompletar \"mesmo grupo\" e \"integração do número de telefone\" estiverem habilitadas, uma correspondência em qualquer um dos dois é suficiente para mostrar o usuário.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir preenchimento automático ao inserir o nome completo ou o endereço de e-mail (ignorando a correspondência ausente da agenda telefônica e estando no mesmo grupo)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que esteja finalizada",
"Migration started …" : "Migração iniciada...",
"Address" : "Endereço",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ocorreu um erro durante a requisição. Impossível continuar.",
"Plain" : "Plano",
"NT LAN Manager" : "Gerenciador NT LAN",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Configuração de trabalhos em segundo plano",
"Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"",
+ "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento",
+ "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos",
"Change privacy level of profile picture" : "Alterar o nível de privacidade da foto do perfil ",
"Upload new" : "Enviar novo",
"Select from Files" : "Selecionar de Arquivos",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index de8b1623427..f650c3112b5 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -359,6 +359,7 @@
"Email" : "E-mail",
"Default language" : "Idioma padrão",
"Add a new user" : "Adicione um novo usuário",
+ "Avatar" : "Avatar",
"Group admin for" : "Admin. de grupo",
"Quota" : "Cota",
"User backend" : "Plataforma de serviço de usuário",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Restringir os usuários para compartilhar apenas com usuários em seus grupos",
"Exclude groups from sharing" : "Impedir que alguns grupos compartilhem",
"These groups will still be able to receive shares, but not to initiate them." : "Estes grupos ainda serão capazes de receber compartilhamentos, mas não iniciá-los.",
- "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento",
- "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos",
"Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar o nome do usuário com base na integração do número de telefone",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se autocompletar \"mesmo grupo\" e \"integração do número de telefone\" estiverem habilitadas, uma correspondência em qualquer um dos dois é suficiente para mostrar o usuário.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir preenchimento automático ao inserir o nome completo ou o endereço de e-mail (ignorando a correspondência ausente da agenda telefônica e estando no mesmo grupo)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que esteja finalizada",
"Migration started …" : "Migração iniciada...",
"Address" : "Endereço",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ocorreu um erro durante a requisição. Impossível continuar.",
"Plain" : "Plano",
"NT LAN Manager" : "Gerenciador NT LAN",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Configuração de trabalhos em segundo plano",
"Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"",
+ "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento",
+ "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos",
"Change privacy level of profile picture" : "Alterar o nível de privacidade da foto do perfil ",
"Upload new" : "Enviar novo",
"Select from Files" : "Selecionar de Arquivos",
diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js
index 378923fc540..954f7b5ebe5 100644
--- a/apps/settings/l10n/pt_PT.js
+++ b/apps/settings/l10n/pt_PT.js
@@ -206,6 +206,7 @@ OC.L10N.register(
"{size} used" : "{size} utilizado",
"Display name" : "Nome de apresentação",
"Email" : "Email",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grupo para",
"Quota" : "Quota",
"User backend" : "Backend do utilizador",
@@ -289,7 +290,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..",
"Migration started …" : "Migração iniciada...",
"Address" : "Morada",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Gestor de REDE NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json
index 49817f5fd6b..8ac73024311 100644
--- a/apps/settings/l10n/pt_PT.json
+++ b/apps/settings/l10n/pt_PT.json
@@ -204,6 +204,7 @@
"{size} used" : "{size} utilizado",
"Display name" : "Nome de apresentação",
"Email" : "Email",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrador de grupo para",
"Quota" : "Quota",
"User backend" : "Backend do utilizador",
@@ -287,7 +288,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..",
"Migration started …" : "Migração iniciada...",
"Address" : "Morada",
- "Avatar" : "Avatar",
"Plain" : "Plano",
"NT LAN Manager" : "Gestor de REDE NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js
index 346603a96e4..d49150fb7e5 100644
--- a/apps/settings/l10n/ro.js
+++ b/apps/settings/l10n/ro.js
@@ -165,8 +165,8 @@ OC.L10N.register(
"Web, desktop and mobile clients currently logged in to your account." : "Clienții web, desktop și mobil conectați în prezent la contul dvs.",
"Do you really want to wipe your data from this device?" : "Chiar doriți să vă ștergeți datele de pe acest dispozitiv?",
"Confirm wipe" : "Confirmați ștergerea",
- "Error while creating device token" : "Eroare la crearea jetonului de dispozitiv",
- "Error while updating device token scope" : "Eroare la actualizarea domeniului de aplicare a jetonului de dispozitiv",
+ "Error while creating device token" : "Eroare la crearea token-ului de dispozitiv",
+ "Error while updating device token scope" : "Eroare la actualizarea domeniului de aplicare a token-ului de dispozitiv",
"Error while updating device token name" : "Eroare la actualizarea numelui token-ului dispozitivului",
"Error while deleting the token" : "Eroare de ștergere token",
"Error while wiping the device with the token" : "Eroare la ștergerea dispozitivului cu token-ul",
@@ -201,6 +201,7 @@ OC.L10N.register(
"Display name" : "Nume afișat",
"Email" : "Email",
"Default language" : "Limba implicită",
+ "Avatar" : "Avatar",
"Quota" : "Cotă",
"Add WebAuthn device" : "Adăugați dispozitivul WebAuthn",
"Name your device" : "Numiți dispozitivul dvs.",
@@ -271,7 +272,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată",
"Migration started …" : "Migrarea a început...",
"Address" : "Adresă",
- "Avatar" : "Avatar",
"Plain" : "Plain",
"NT LAN Manager" : "NT LAN Manager",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json
index d51c0f037f3..c9e59310a84 100644
--- a/apps/settings/l10n/ro.json
+++ b/apps/settings/l10n/ro.json
@@ -163,8 +163,8 @@
"Web, desktop and mobile clients currently logged in to your account." : "Clienții web, desktop și mobil conectați în prezent la contul dvs.",
"Do you really want to wipe your data from this device?" : "Chiar doriți să vă ștergeți datele de pe acest dispozitiv?",
"Confirm wipe" : "Confirmați ștergerea",
- "Error while creating device token" : "Eroare la crearea jetonului de dispozitiv",
- "Error while updating device token scope" : "Eroare la actualizarea domeniului de aplicare a jetonului de dispozitiv",
+ "Error while creating device token" : "Eroare la crearea token-ului de dispozitiv",
+ "Error while updating device token scope" : "Eroare la actualizarea domeniului de aplicare a token-ului de dispozitiv",
"Error while updating device token name" : "Eroare la actualizarea numelui token-ului dispozitivului",
"Error while deleting the token" : "Eroare de ștergere token",
"Error while wiping the device with the token" : "Eroare la ștergerea dispozitivului cu token-ul",
@@ -199,6 +199,7 @@
"Display name" : "Nume afișat",
"Email" : "Email",
"Default language" : "Limba implicită",
+ "Avatar" : "Avatar",
"Quota" : "Cotă",
"Add WebAuthn device" : "Adăugați dispozitivul WebAuthn",
"Name your device" : "Numiți dispozitivul dvs.",
@@ -269,7 +270,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată",
"Migration started …" : "Migrarea a început...",
"Address" : "Adresă",
- "Avatar" : "Avatar",
"Plain" : "Plain",
"NT LAN Manager" : "NT LAN Manager",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index 805ffc1c42a..5c2e57e6022 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -335,11 +335,13 @@ OC.L10N.register(
"Add additional email" : "Добавить дополнительную электронную почту",
"Add" : "Добавить",
"You do not have permissions to see the details of this user" : "У вас нет прав на просмотр данных об этом пользователе",
+ "Edit display name" : "Редактировать отображаемое имя",
"Add new password" : "Добавить пароль",
"Add new email address" : "Добавить адрес электронной почты",
"Add user to group" : "Добавить пользователя в группу",
"Set user as admin for" : "Назначить администратором",
"Select user quota" : "Квота пользователя",
+ "Set the language" : "Выбрать язык",
"Delete user" : "Удалить пользователя",
"Wipe all devices" : "Удалить данные со всех устройств",
"Disable user" : "Отключить пользователя",
@@ -361,6 +363,7 @@ OC.L10N.register(
"Email" : "Адрес эл. почты",
"Default language" : "Язык по умолчанию",
"Add a new user" : "Создать пользователя",
+ "Avatar" : "Аватар",
"Group admin for" : "Администратор групп",
"Quota" : "Квота",
"User backend" : "Механизм учёта",
@@ -485,8 +488,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Запретить делиться с пользователями из других групп",
"Exclude groups from sharing" : "Запретить публикацию указанным группам:",
"These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не смогут их создавать.",
- "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа",
- "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах",
"Allow username autocompletion to users based on phone number integration" : "Разрешить пользователям автозаполнение имени пользователя на основе интеграции номера телефона",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Если автозаполнение «одна группа» и «интеграция телефонного номера» включены, совпадения в любом из них достаточно, чтобы отобразить пользователя.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешить автозаполнение при вводе полного имени или адреса электронной почты (игнорируя отсутствие совпадений в телефонной книге и нахождение в одной группе)",
@@ -527,7 +528,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения",
"Migration started …" : "Перенос начат…",
"Address" : "Адрес",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Во время запроса произошла ошибка. Продолжение невозможно",
"Plain" : "Простой",
"NT LAN Manager" : "Менеджер NT LAN",
@@ -546,6 +546,8 @@ OC.L10N.register(
"Pick background job setting" : "Выбрать параметр выполнения фоновых задач",
"Recommended" : "Рекомендовано",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".",
+ "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа",
+ "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах",
"Change privacy level of profile picture" : "Изменить уровень конфиденциальности изображения профиля",
"Upload new" : "Загрузить",
"Select from Files" : "Выбрать в приложении Файлы",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index 63f94cf89d2..727823d799f 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -333,11 +333,13 @@
"Add additional email" : "Добавить дополнительную электронную почту",
"Add" : "Добавить",
"You do not have permissions to see the details of this user" : "У вас нет прав на просмотр данных об этом пользователе",
+ "Edit display name" : "Редактировать отображаемое имя",
"Add new password" : "Добавить пароль",
"Add new email address" : "Добавить адрес электронной почты",
"Add user to group" : "Добавить пользователя в группу",
"Set user as admin for" : "Назначить администратором",
"Select user quota" : "Квота пользователя",
+ "Set the language" : "Выбрать язык",
"Delete user" : "Удалить пользователя",
"Wipe all devices" : "Удалить данные со всех устройств",
"Disable user" : "Отключить пользователя",
@@ -359,6 +361,7 @@
"Email" : "Адрес эл. почты",
"Default language" : "Язык по умолчанию",
"Add a new user" : "Создать пользователя",
+ "Avatar" : "Аватар",
"Group admin for" : "Администратор групп",
"Quota" : "Квота",
"User backend" : "Механизм учёта",
@@ -483,8 +486,6 @@
"Restrict users to only share with users in their groups" : "Запретить делиться с пользователями из других групп",
"Exclude groups from sharing" : "Запретить публикацию указанным группам:",
"These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не смогут их создавать.",
- "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа",
- "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах",
"Allow username autocompletion to users based on phone number integration" : "Разрешить пользователям автозаполнение имени пользователя на основе интеграции номера телефона",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Если автозаполнение «одна группа» и «интеграция телефонного номера» включены, совпадения в любом из них достаточно, чтобы отобразить пользователя.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешить автозаполнение при вводе полного имени или адреса электронной почты (игнорируя отсутствие совпадений в телефонной книге и нахождение в одной группе)",
@@ -525,7 +526,6 @@
"Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения",
"Migration started …" : "Перенос начат…",
"Address" : "Адрес",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Во время запроса произошла ошибка. Продолжение невозможно",
"Plain" : "Простой",
"NT LAN Manager" : "Менеджер NT LAN",
@@ -544,6 +544,8 @@
"Pick background job setting" : "Выбрать параметр выполнения фоновых задач",
"Recommended" : "Рекомендовано",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".",
+ "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа",
+ "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах",
"Change privacy level of profile picture" : "Изменить уровень конфиденциальности изображения профиля",
"Upload new" : "Загрузить",
"Select from Files" : "Выбрать в приложении Файлы",
diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js
index 059a50cc526..3f8bd5948b7 100644
--- a/apps/settings/l10n/sc.js
+++ b/apps/settings/l10n/sc.js
@@ -263,6 +263,7 @@ OC.L10N.register(
"Email" : "Posta eletrònica",
"Default language" : "Limba predefinida",
"Add a new user" : "Agiunghe un'utèntzia noa",
+ "Avatar" : "Avatar",
"Group admin for" : "In amministratzione pro su grupu",
"Quota" : "Cuota",
"User backend" : "Motore utente",
@@ -372,8 +373,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Lìmita is utentes a sa cumpartzidura isceti cun utentes in is grupos issoro",
"Exclude groups from sharing" : "Esclude grupos dae sa cumpartzidura",
"These groups will still be able to receive shares, but not to initiate them." : "Custos grupos ant a pòdere retzire cumpartziduras, ma no ddas ant a pòdere cumintzare.",
- "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura",
- "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu",
"Allow username autocompletion to users based on phone number integration" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes segundu s'integratzione de su nùmeru de telèfonu",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si sa cumponidura automàtica \"matessi grupu\" e \"integratzione de nùmeru de telèfonu\" sunt ativadas, una currispondèntzia in unu de is duas bastat a mustrare s'utente.",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mustra sa liberatòria in sa pàgina de carrigamentu de su ligòngiu pùblicu (mustradu isceti cando s'archìviu de sa lista est cuadu)",
@@ -400,7 +399,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Tràmuda in cursu. Abeta finas a cando at a acabbare",
"Migration started …" : "Tràmuda aviada …",
"Address" : "Indiritzu",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ddoe at àpidu un'errore in sa dimanda. Impossìbile a sighire.",
"Plain" : "Simpre",
"NT LAN Manager" : "NT LAN Manager",
@@ -417,6 +415,8 @@ OC.L10N.register(
"Background job didn’t run yet!" : "S'atividade in segundu pianu no est ancora istada esecutada!",
"Pick background job setting" : "Sèbera s'impostatzione de s'atividade in segundu pianu",
"The cron.php needs to be executed by the system user \"%s\"." : "Su cron.php depet èssere esecutadu dae s'utente de sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura",
+ "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu",
"Change privacy level of profile picture" : "Càmbia su livellu de riservadesa de s'imàgine de profilu",
"Upload new" : "Càrriga noa",
"Select from Files" : "Seletziona dae Archìvios",
diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json
index 10f6395df4f..e87fb83be9f 100644
--- a/apps/settings/l10n/sc.json
+++ b/apps/settings/l10n/sc.json
@@ -261,6 +261,7 @@
"Email" : "Posta eletrònica",
"Default language" : "Limba predefinida",
"Add a new user" : "Agiunghe un'utèntzia noa",
+ "Avatar" : "Avatar",
"Group admin for" : "In amministratzione pro su grupu",
"Quota" : "Cuota",
"User backend" : "Motore utente",
@@ -370,8 +371,6 @@
"Restrict users to only share with users in their groups" : "Lìmita is utentes a sa cumpartzidura isceti cun utentes in is grupos issoro",
"Exclude groups from sharing" : "Esclude grupos dae sa cumpartzidura",
"These groups will still be able to receive shares, but not to initiate them." : "Custos grupos ant a pòdere retzire cumpartziduras, ma no ddas ant a pòdere cumintzare.",
- "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura",
- "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu",
"Allow username autocompletion to users based on phone number integration" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes segundu s'integratzione de su nùmeru de telèfonu",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si sa cumponidura automàtica \"matessi grupu\" e \"integratzione de nùmeru de telèfonu\" sunt ativadas, una currispondèntzia in unu de is duas bastat a mustrare s'utente.",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mustra sa liberatòria in sa pàgina de carrigamentu de su ligòngiu pùblicu (mustradu isceti cando s'archìviu de sa lista est cuadu)",
@@ -398,7 +397,6 @@
"Migration in progress. Please wait until the migration is finished" : "Tràmuda in cursu. Abeta finas a cando at a acabbare",
"Migration started …" : "Tràmuda aviada …",
"Address" : "Indiritzu",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ddoe at àpidu un'errore in sa dimanda. Impossìbile a sighire.",
"Plain" : "Simpre",
"NT LAN Manager" : "NT LAN Manager",
@@ -415,6 +413,8 @@
"Background job didn’t run yet!" : "S'atividade in segundu pianu no est ancora istada esecutada!",
"Pick background job setting" : "Sèbera s'impostatzione de s'atividade in segundu pianu",
"The cron.php needs to be executed by the system user \"%s\"." : "Su cron.php depet èssere esecutadu dae s'utente de sistema \"%s\".",
+ "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura",
+ "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu",
"Change privacy level of profile picture" : "Càmbia su livellu de riservadesa de s'imàgine de profilu",
"Upload new" : "Càrriga noa",
"Select from Files" : "Seletziona dae Archìvios",
diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js
index 0caaf112916..f11de53a6a5 100644
--- a/apps/settings/l10n/sk.js
+++ b/apps/settings/l10n/sk.js
@@ -354,6 +354,7 @@ OC.L10N.register(
"Email" : "Email",
"Default language" : "Predvolený jazyk",
"Add a new user" : "Pridať nového používateľa",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrátor skupiny pre",
"Quota" : "Kvóta",
"User backend" : "Backend používateľa",
@@ -476,8 +477,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Povoliť používateľom sprístupňovanie obsahu len v rámci ich skupiny",
"Exclude groups from sharing" : "Nesprístupniť obsah skupinám",
"These groups will still be able to receive shares, but not to initiate them." : "Tieto skupiny nebudú mocť sprístupňovať obsah, môžu však stále čítať sprístupnené súbory.",
- "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania",
- "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách",
"Allow username autocompletion to users based on phone number integration" : "Povoliť automatické dopĺňanie mien užívateľom založené na integrácii s telefónnym číslom",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ak je povolené automatické dopĺňanie „pre rovnakú skupinu“ a „integrácia telefónneho čísla“, na zobrazenie používateľa stačí zhoda v ktorejkoľvek z nich.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)",
@@ -518,7 +517,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí",
"Migration started …" : "Migrácia spustená ...",
"Address" : "Adresa",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.",
"Plain" : "Neformátovaný",
"NT LAN Manager" : "NT LAN Manager",
@@ -537,6 +535,8 @@ OC.L10N.register(
"Pick background job setting" : "Vybrať nastavenie úlohy na pozadí",
"Recommended" : "Odporúčané",
"The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".",
+ "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania",
+ "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách",
"Change privacy level of profile picture" : "Zmeniť úroveň súkromia pre profilový obrázok",
"Upload new" : "Nahrať nový",
"Select from Files" : "Vybrať zo súborov",
diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json
index 8a8c812370a..5772c5a8f4d 100644
--- a/apps/settings/l10n/sk.json
+++ b/apps/settings/l10n/sk.json
@@ -352,6 +352,7 @@
"Email" : "Email",
"Default language" : "Predvolený jazyk",
"Add a new user" : "Pridať nového používateľa",
+ "Avatar" : "Avatar",
"Group admin for" : "Administrátor skupiny pre",
"Quota" : "Kvóta",
"User backend" : "Backend používateľa",
@@ -474,8 +475,6 @@
"Restrict users to only share with users in their groups" : "Povoliť používateľom sprístupňovanie obsahu len v rámci ich skupiny",
"Exclude groups from sharing" : "Nesprístupniť obsah skupinám",
"These groups will still be able to receive shares, but not to initiate them." : "Tieto skupiny nebudú mocť sprístupňovať obsah, môžu však stále čítať sprístupnené súbory.",
- "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania",
- "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách",
"Allow username autocompletion to users based on phone number integration" : "Povoliť automatické dopĺňanie mien užívateľom založené na integrácii s telefónnym číslom",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ak je povolené automatické dopĺňanie „pre rovnakú skupinu“ a „integrácia telefónneho čísla“, na zobrazenie používateľa stačí zhoda v ktorejkoľvek z nich.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)",
@@ -516,7 +515,6 @@
"Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí",
"Migration started …" : "Migrácia spustená ...",
"Address" : "Adresa",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.",
"Plain" : "Neformátovaný",
"NT LAN Manager" : "NT LAN Manager",
@@ -535,6 +533,8 @@
"Pick background job setting" : "Vybrať nastavenie úlohy na pozadí",
"Recommended" : "Odporúčané",
"The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".",
+ "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania",
+ "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách",
"Change privacy level of profile picture" : "Zmeniť úroveň súkromia pre profilový obrázok",
"Upload new" : "Nahrať nový",
"Select from Files" : "Vybrať zo súborov",
diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js
index 4e9b2cafb8e..25e04076312 100644
--- a/apps/settings/l10n/sl.js
+++ b/apps/settings/l10n/sl.js
@@ -328,6 +328,7 @@ OC.L10N.register(
"Email" : "Elektronski naslov",
"Default language" : "Privzeti jezik",
"Add a new user" : "Dodaj uporabnika",
+ "Avatar" : "Podoba",
"Group admin for" : "Skrbnik skupine za",
"Quota" : "Količinska omejitev",
"User backend" : "Uporabniški ozadnji program",
@@ -440,8 +441,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine",
"Exclude groups from sharing" : "Izbranim skupinam onemogoči omogočanje souporabe",
"These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, nimajo pa dovoljenja za omogočanje souporabe.",
- "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe",
- "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine",
"Allow username autocompletion to users based on phone number integration" : "Dovoli samodejno dopolnjevanje uporabniških imen po telefonskih številkah",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Če je omogočeno samodejno dopolnjevanje »v isti skupini«, ali pa »po telefonskem imeniku«, se zadetek pokaže, če je uporabnik v katerikoli od teh zbirk.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dovoli samodejno dokončanje uporabniškega imena pri vpisu polnega imena ali elektronskega naslova (prezrta je zahteva telefonskega imenika in iste skupine).",
@@ -477,7 +476,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "V teku je preselitev. Počakajte, da se zaključi.",
"Migration started …" : "Preselitev je začeta ...",
"Address" : "Naslov",
- "Avatar" : "Podoba",
"An error occured during the request. Unable to proceed." : "Med izvajanjem zahteve je prišlo do napake, zato ni mogoče nadaljevati.",
"Plain" : "Besedilno",
"NT LAN Manager" : "Upravljalnik NT LAN",
@@ -495,6 +493,8 @@ OC.L10N.register(
"Pick background job setting" : "Izbor nastavitve ozadnjih opravil",
"Recommended" : "Priporočeno",
"The cron.php needs to be executed by the system user \"%s\"." : "Datoteka cron.php mora biti izvedena za uporabnika »%s«.",
+ "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe",
+ "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine",
"Change privacy level of profile picture" : "Spremeni pravila zasebnosti profilne slike",
"Upload new" : "Pošlji novo",
"Select from Files" : "Izbor iz datotek",
diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json
index 710d29cdf6c..6cad0dea2f2 100644
--- a/apps/settings/l10n/sl.json
+++ b/apps/settings/l10n/sl.json
@@ -326,6 +326,7 @@
"Email" : "Elektronski naslov",
"Default language" : "Privzeti jezik",
"Add a new user" : "Dodaj uporabnika",
+ "Avatar" : "Podoba",
"Group admin for" : "Skrbnik skupine za",
"Quota" : "Količinska omejitev",
"User backend" : "Uporabniški ozadnji program",
@@ -438,8 +439,6 @@
"Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine",
"Exclude groups from sharing" : "Izbranim skupinam onemogoči omogočanje souporabe",
"These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, nimajo pa dovoljenja za omogočanje souporabe.",
- "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe",
- "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine",
"Allow username autocompletion to users based on phone number integration" : "Dovoli samodejno dopolnjevanje uporabniških imen po telefonskih številkah",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Če je omogočeno samodejno dopolnjevanje »v isti skupini«, ali pa »po telefonskem imeniku«, se zadetek pokaže, če je uporabnik v katerikoli od teh zbirk.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dovoli samodejno dokončanje uporabniškega imena pri vpisu polnega imena ali elektronskega naslova (prezrta je zahteva telefonskega imenika in iste skupine).",
@@ -475,7 +474,6 @@
"Migration in progress. Please wait until the migration is finished" : "V teku je preselitev. Počakajte, da se zaključi.",
"Migration started …" : "Preselitev je začeta ...",
"Address" : "Naslov",
- "Avatar" : "Podoba",
"An error occured during the request. Unable to proceed." : "Med izvajanjem zahteve je prišlo do napake, zato ni mogoče nadaljevati.",
"Plain" : "Besedilno",
"NT LAN Manager" : "Upravljalnik NT LAN",
@@ -493,6 +491,8 @@
"Pick background job setting" : "Izbor nastavitve ozadnjih opravil",
"Recommended" : "Priporočeno",
"The cron.php needs to be executed by the system user \"%s\"." : "Datoteka cron.php mora biti izvedena za uporabnika »%s«.",
+ "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe",
+ "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine",
"Change privacy level of profile picture" : "Spremeni pravila zasebnosti profilne slike",
"Upload new" : "Pošlji novo",
"Select from Files" : "Izbor iz datotek",
diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js
index 4cac0b98056..f7eb69633df 100644
--- a/apps/settings/l10n/sq.js
+++ b/apps/settings/l10n/sq.js
@@ -156,6 +156,7 @@ OC.L10N.register(
"New user" : "Përdorues i ri",
"Display name" : "Shfaq emrin",
"Email" : "Email",
+ "Avatar" : "Avatari",
"Group admin for" : "Administratori i grupit për",
"Quota" : "Kuota",
"User backend" : "Program klient i përdoruesit",
@@ -236,7 +237,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon",
"Migration started …" : "Migrimi filloi …",
"Address" : "Adresa",
- "Avatar" : "Avatari",
"Plain" : "E thjeshtë",
"NT LAN Manager" : "Përgjegjës Rrjeti NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json
index 58246ec093a..03806933e2f 100644
--- a/apps/settings/l10n/sq.json
+++ b/apps/settings/l10n/sq.json
@@ -154,6 +154,7 @@
"New user" : "Përdorues i ri",
"Display name" : "Shfaq emrin",
"Email" : "Email",
+ "Avatar" : "Avatari",
"Group admin for" : "Administratori i grupit për",
"Quota" : "Kuota",
"User backend" : "Program klient i përdoruesit",
@@ -234,7 +235,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon",
"Migration started …" : "Migrimi filloi …",
"Address" : "Adresa",
- "Avatar" : "Avatari",
"Plain" : "E thjeshtë",
"NT LAN Manager" : "Përgjegjës Rrjeti NT",
"STARTTLS" : "STARTTLS",
diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js
index 893626fe6aa..c294444dfb3 100644
--- a/apps/settings/l10n/sr.js
+++ b/apps/settings/l10n/sr.js
@@ -231,12 +231,12 @@ OC.L10N.register(
"Copied!" : "Копирано!",
"Copy" : "Копирај",
"Could not copy app password. Please copy it manually." : "Не могу да копирам апликативну лозинку. Копирајте је ручно.",
- "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију .",
+ "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију.",
"Last job execution ran {time}. Something seems wrong." : "Последњи посао се извршавао {time}. Изгледа да нешто није у реду.",
- "Last job ran {relativeTime}." : "Последњи посао се изврашавао {relativeTime}.",
+ "Last job ran {relativeTime}." : "Последњи посао се извршавао {relativeTime}.",
"Background job did not run yet!" : "Позадински посао се још увек није покренуо!",
"AJAX" : "AJAX",
- "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником.",
"Webcron" : "Webcron",
"cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php се регуструје у webcron сервису тако да се cron.php позива преко HTTP сваких 5 минута. Случај употребе: врло мала инстанца (1–5 корисника, у зависности од употребе).",
"Cron (Recommended)" : "Cron (Препоручено)",
@@ -335,11 +335,14 @@ OC.L10N.register(
"Add additional email" : "Додај додатни и-мејл",
"Add" : "Додај",
"You do not have permissions to see the details of this user" : "Немате дозволе да видите детаље о овом кориснику",
+ "Edit display name" : "Уреди име за приказ",
"Add new password" : "Додај нову лозинку",
"Add new email address" : "Додај нову адресу е-поште",
"Add user to group" : "Додај корисника у групу",
"Set user as admin for" : "Додај корисника као администратора за",
"Select user quota" : "Одаберите корисничку квоту",
+ "Set the language" : "Постави језик",
+ "Select manager" : "Избор менаџера",
"Delete user" : "Обриши корисника",
"Wipe all devices" : "Обриши све уређаје",
"Disable user" : "Искључи корисника",
@@ -355,17 +358,22 @@ OC.L10N.register(
"Edit User" : "Измени корисника",
"Toggle user actions menu" : "Укључи/искључи мени корисничких радњи",
"{size} used" : "{size} искоришћено",
+ "User's table" : "Корисникова табела",
"New user" : "Нови корисник",
"Will be autogenerated" : "Биће генерисано аутоматски",
"Display name" : "Име за приказ",
"Email" : "Е-пошта",
"Default language" : "Подразумевани језик",
+ "Select user manager" : "Избор менаџера корисника",
"Add a new user" : "Додај новог корисника",
+ "Avatar" : "Аватар",
"Group admin for" : "Администратор групе за",
"Quota" : "Квота",
"User backend" : "Позадина за кориснике",
"Storage location" : "Локација складишта",
"Last login" : "Последња пријава",
+ "Manager" : "Менаџер",
+ "User actions" : "Корисникове акције",
"No users in here" : "Овде нема корисника",
"Default quota" : "Подразумевана квота",
"Common languages" : "Најкоришћенији језици",
@@ -441,7 +449,7 @@ OC.L10N.register(
"Login" : "Пријава",
"SSL/TLS" : "SSL/TLS",
"Open documentation" : "Отвори документацију",
- "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер да може да шаље е-пошту, када нпр. треба послати ресетовање лозинке или нека обавештења.",
+ "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер тако да може да шаље е-пошту када нпр. треба послати ресетовање лозинке или нека обавештења.",
"Send mode" : "Режим слања",
"Encryption" : "Шифровање",
"Sendmail mode" : "Sendmail режим",
@@ -485,8 +493,8 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Ограничи кориснике да могу да деле само унутар групе",
"Exclude groups from sharing" : "Изузми групе из дељења",
"These groups will still be able to receive shares, but not to initiate them." : "Ове групе ће моћи да примају дељења, али не и да их праве.",
- "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење",
- "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Омогући аутоматско довршавање корисничког имена у дијалогу дељења и дозволи приступ системском адресару",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Омогући аутоматско довршавање корисничког имена корисника у истим групама и ограничи системске адресаре само на кориснике истих група",
"Allow username autocompletion to users based on phone number integration" : "Дозволи аутоматско довршавање корисничког имена корисницима на основу интеграције броја телефона",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако су укључени „иста група” и „интеграција броја телефона”. подударање у било којој од њих ће приказати корисника.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволи аутоматско довршавање када се уноси пуно име или и-мејл адреса (уз игнорисање подударања у телефонском именику и припадања истој групи)",
@@ -527,7 +535,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши",
"Migration started …" : "Пресељење покренуто...",
"Address" : "Адреса",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Догодила се грешка за време захтева. Не може се наставити.",
"Plain" : "Обичан",
"NT LAN Manager" : "НТ ЛАН менаџер",
@@ -546,6 +553,8 @@ OC.L10N.register(
"Pick background job setting" : "Одаберите поставке позадинског посла",
"Recommended" : "Препоручено",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.",
+ "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење",
+ "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе",
"Change privacy level of profile picture" : "Измени ниво приватности слике профила",
"Upload new" : "Отпреми нову",
"Select from Files" : "Изабери из фајлова",
diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json
index ddc8fa1d262..cdc8eda94e7 100644
--- a/apps/settings/l10n/sr.json
+++ b/apps/settings/l10n/sr.json
@@ -229,12 +229,12 @@
"Copied!" : "Копирано!",
"Copy" : "Копирај",
"Could not copy app password. Please copy it manually." : "Не могу да копирам апликативну лозинку. Копирајте је ручно.",
- "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију .",
+ "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију.",
"Last job execution ran {time}. Something seems wrong." : "Последњи посао се извршавао {time}. Изгледа да нешто није у реду.",
- "Last job ran {relativeTime}." : "Последњи посао се изврашавао {relativeTime}.",
+ "Last job ran {relativeTime}." : "Последњи посао се извршавао {relativeTime}.",
"Background job did not run yet!" : "Позадински посао се још увек није покренуо!",
"AJAX" : "AJAX",
- "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником.",
"Webcron" : "Webcron",
"cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php се регуструје у webcron сервису тако да се cron.php позива преко HTTP сваких 5 минута. Случај употребе: врло мала инстанца (1–5 корисника, у зависности од употребе).",
"Cron (Recommended)" : "Cron (Препоручено)",
@@ -333,11 +333,14 @@
"Add additional email" : "Додај додатни и-мејл",
"Add" : "Додај",
"You do not have permissions to see the details of this user" : "Немате дозволе да видите детаље о овом кориснику",
+ "Edit display name" : "Уреди име за приказ",
"Add new password" : "Додај нову лозинку",
"Add new email address" : "Додај нову адресу е-поште",
"Add user to group" : "Додај корисника у групу",
"Set user as admin for" : "Додај корисника као администратора за",
"Select user quota" : "Одаберите корисничку квоту",
+ "Set the language" : "Постави језик",
+ "Select manager" : "Избор менаџера",
"Delete user" : "Обриши корисника",
"Wipe all devices" : "Обриши све уређаје",
"Disable user" : "Искључи корисника",
@@ -353,17 +356,22 @@
"Edit User" : "Измени корисника",
"Toggle user actions menu" : "Укључи/искључи мени корисничких радњи",
"{size} used" : "{size} искоришћено",
+ "User's table" : "Корисникова табела",
"New user" : "Нови корисник",
"Will be autogenerated" : "Биће генерисано аутоматски",
"Display name" : "Име за приказ",
"Email" : "Е-пошта",
"Default language" : "Подразумевани језик",
+ "Select user manager" : "Избор менаџера корисника",
"Add a new user" : "Додај новог корисника",
+ "Avatar" : "Аватар",
"Group admin for" : "Администратор групе за",
"Quota" : "Квота",
"User backend" : "Позадина за кориснике",
"Storage location" : "Локација складишта",
"Last login" : "Последња пријава",
+ "Manager" : "Менаџер",
+ "User actions" : "Корисникове акције",
"No users in here" : "Овде нема корисника",
"Default quota" : "Подразумевана квота",
"Common languages" : "Најкоришћенији језици",
@@ -439,7 +447,7 @@
"Login" : "Пријава",
"SSL/TLS" : "SSL/TLS",
"Open documentation" : "Отвори документацију",
- "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер да може да шаље е-пошту, када нпр. треба послати ресетовање лозинке или нека обавештења.",
+ "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер тако да може да шаље е-пошту када нпр. треба послати ресетовање лозинке или нека обавештења.",
"Send mode" : "Режим слања",
"Encryption" : "Шифровање",
"Sendmail mode" : "Sendmail режим",
@@ -483,8 +491,8 @@
"Restrict users to only share with users in their groups" : "Ограничи кориснике да могу да деле само унутар групе",
"Exclude groups from sharing" : "Изузми групе из дељења",
"These groups will still be able to receive shares, but not to initiate them." : "Ове групе ће моћи да примају дељења, али не и да их праве.",
- "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење",
- "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Омогући аутоматско довршавање корисничког имена у дијалогу дељења и дозволи приступ системском адресару",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Омогући аутоматско довршавање корисничког имена корисника у истим групама и ограничи системске адресаре само на кориснике истих група",
"Allow username autocompletion to users based on phone number integration" : "Дозволи аутоматско довршавање корисничког имена корисницима на основу интеграције броја телефона",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако су укључени „иста група” и „интеграција броја телефона”. подударање у било којој од њих ће приказати корисника.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволи аутоматско довршавање када се уноси пуно име или и-мејл адреса (уз игнорисање подударања у телефонском именику и припадања истој групи)",
@@ -525,7 +533,6 @@
"Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши",
"Migration started …" : "Пресељење покренуто...",
"Address" : "Адреса",
- "Avatar" : "Аватар",
"An error occured during the request. Unable to proceed." : "Догодила се грешка за време захтева. Не може се наставити.",
"Plain" : "Обичан",
"NT LAN Manager" : "НТ ЛАН менаџер",
@@ -544,6 +551,8 @@
"Pick background job setting" : "Одаберите поставке позадинског посла",
"Recommended" : "Препоручено",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.",
+ "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење",
+ "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе",
"Change privacy level of profile picture" : "Измени ниво приватности слике профила",
"Upload new" : "Отпреми нову",
"Select from Files" : "Изабери из фајлова",
diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js
index d6ae97f2d9e..c2236592032 100644
--- a/apps/settings/l10n/sv.js
+++ b/apps/settings/l10n/sv.js
@@ -335,11 +335,13 @@ OC.L10N.register(
"Add additional email" : "Lägg till ytterligare e-post",
"Add" : "Lägg till",
"You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren",
+ "Edit display name" : "Ändra visningsnamn",
"Add new password" : "Lägg till nytt lösenord",
"Add new email address" : "Lägg till ny e-postadress",
"Add user to group" : "Lägg till användare i grupp",
"Set user as admin for" : "Gör användare till admin för",
"Select user quota" : "Välj användarens quota",
+ "Set the language" : "Ställ in språk",
"Delete user" : "Ta bort användare",
"Wipe all devices" : "Rensa alla enheter",
"Disable user" : "Stäng av användare",
@@ -361,6 +363,7 @@ OC.L10N.register(
"Email" : "E-post",
"Default language" : "Standardspråk",
"Add a new user" : "Lägg till ny användare",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppadministratör för",
"Quota" : "Lagringsutrymme",
"User backend" : "Användarbackend",
@@ -485,8 +488,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper",
"Exclude groups from sharing" : "Exkludera grupp från att dela",
"These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.",
- "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen",
- "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper",
"Allow username autocompletion to users based on phone number integration" : "Tillåt autokomplettering av användarnamn till användare baserad på telefonnummerintegration",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Om komplettering för \"samma grupp\" och \"telefonnummerintegration\" är aktiverade räcker det med en matchning i en av dem för att visa användaren.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillåt autokomplettering när du anger hela namnet eller e-postadressen (ignorera saknad telefonboksmatchning och att vara i samma grupp)",
@@ -527,7 +528,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Migration pågår. Vänta tills migrationen är klar",
"Migration started …" : "Migrering påbörjad ...",
"Address" : "Ort/Stad",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ett fel uppstod under förfrågan. Kan inte fortsätta.",
"Plain" : "Enkel",
"NT LAN Manager" : "NT LAN Manager",
@@ -546,6 +546,8 @@ OC.L10N.register(
"Pick background job setting" : "Välj inställning för bakgrundsjobb",
"Recommended" : "Rekomenderad",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".",
+ "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen",
+ "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper",
"Change privacy level of profile picture" : "Ändra hemlighetsnivå för profilbild",
"Upload new" : "Ladda upp ny",
"Select from Files" : "Välj från Filer",
diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json
index b6b1719dacc..61a0478a1ae 100644
--- a/apps/settings/l10n/sv.json
+++ b/apps/settings/l10n/sv.json
@@ -333,11 +333,13 @@
"Add additional email" : "Lägg till ytterligare e-post",
"Add" : "Lägg till",
"You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren",
+ "Edit display name" : "Ändra visningsnamn",
"Add new password" : "Lägg till nytt lösenord",
"Add new email address" : "Lägg till ny e-postadress",
"Add user to group" : "Lägg till användare i grupp",
"Set user as admin for" : "Gör användare till admin för",
"Select user quota" : "Välj användarens quota",
+ "Set the language" : "Ställ in språk",
"Delete user" : "Ta bort användare",
"Wipe all devices" : "Rensa alla enheter",
"Disable user" : "Stäng av användare",
@@ -359,6 +361,7 @@
"Email" : "E-post",
"Default language" : "Standardspråk",
"Add a new user" : "Lägg till ny användare",
+ "Avatar" : "Avatar",
"Group admin for" : "Gruppadministratör för",
"Quota" : "Lagringsutrymme",
"User backend" : "Användarbackend",
@@ -483,8 +486,6 @@
"Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper",
"Exclude groups from sharing" : "Exkludera grupp från att dela",
"These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.",
- "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen",
- "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper",
"Allow username autocompletion to users based on phone number integration" : "Tillåt autokomplettering av användarnamn till användare baserad på telefonnummerintegration",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Om komplettering för \"samma grupp\" och \"telefonnummerintegration\" är aktiverade räcker det med en matchning i en av dem för att visa användaren.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillåt autokomplettering när du anger hela namnet eller e-postadressen (ignorera saknad telefonboksmatchning och att vara i samma grupp)",
@@ -525,7 +526,6 @@
"Migration in progress. Please wait until the migration is finished" : "Migration pågår. Vänta tills migrationen är klar",
"Migration started …" : "Migrering påbörjad ...",
"Address" : "Ort/Stad",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "Ett fel uppstod under förfrågan. Kan inte fortsätta.",
"Plain" : "Enkel",
"NT LAN Manager" : "NT LAN Manager",
@@ -544,6 +544,8 @@
"Pick background job setting" : "Välj inställning för bakgrundsjobb",
"Recommended" : "Rekomenderad",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".",
+ "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen",
+ "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper",
"Change privacy level of profile picture" : "Ändra hemlighetsnivå för profilbild",
"Upload new" : "Ladda upp ny",
"Select from Files" : "Välj från Filer",
diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js
index 6c087df5e21..41b54f9ada9 100644
--- a/apps/settings/l10n/th.js
+++ b/apps/settings/l10n/th.js
@@ -204,6 +204,7 @@ OC.L10N.register(
"Email" : "อีเมล",
"Default language" : "ภาษาค่าเริ่มต้น",
"Add a new user" : "เพิ่มผู้ใช้ใหม่",
+ "Avatar" : "ภาพแทนตัว",
"Group admin for" : "ผู้ดูแลกลุ่มสำหรับ",
"Quota" : "โควต้า",
"User backend" : "แบ็กเอนด์ของผู้ใช้",
@@ -322,7 +323,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "การโยกย้ายกำลังทำงาน กรุณารอสักครู่จนกว่าการโยกย้ายจะเสร็จสิ้น",
"Migration started …" : "เริ่มต้นการโยกย้าย …",
"Address" : "ที่อยู่",
- "Avatar" : "ภาพแทนตัว",
"An error occured during the request. Unable to proceed." : "เกิดข้อผิดพลาดขณะส่งคำขอ ไม่สามารถดำเนินการต่อ",
"Plain" : "ธรรมดา",
"NT LAN Manager" : "ตัวจัดการ NT LAN",
diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json
index a077e7be840..b6c22e712b8 100644
--- a/apps/settings/l10n/th.json
+++ b/apps/settings/l10n/th.json
@@ -202,6 +202,7 @@
"Email" : "อีเมล",
"Default language" : "ภาษาค่าเริ่มต้น",
"Add a new user" : "เพิ่มผู้ใช้ใหม่",
+ "Avatar" : "ภาพแทนตัว",
"Group admin for" : "ผู้ดูแลกลุ่มสำหรับ",
"Quota" : "โควต้า",
"User backend" : "แบ็กเอนด์ของผู้ใช้",
@@ -320,7 +321,6 @@
"Migration in progress. Please wait until the migration is finished" : "การโยกย้ายกำลังทำงาน กรุณารอสักครู่จนกว่าการโยกย้ายจะเสร็จสิ้น",
"Migration started …" : "เริ่มต้นการโยกย้าย …",
"Address" : "ที่อยู่",
- "Avatar" : "ภาพแทนตัว",
"An error occured during the request. Unable to proceed." : "เกิดข้อผิดพลาดขณะส่งคำขอ ไม่สามารถดำเนินการต่อ",
"Plain" : "ธรรมดา",
"NT LAN Manager" : "ตัวจัดการ NT LAN",
diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js
index c24921b9865..af927361733 100644
--- a/apps/settings/l10n/tr.js
+++ b/apps/settings/l10n/tr.js
@@ -335,11 +335,14 @@ OC.L10N.register(
"Add additional email" : "Ek e-posta adresi ekle",
"Add" : "Ekle",
"You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok",
+ "Edit display name" : "Görüntülenecek adı düzenle",
"Add new password" : "Yeni parola ekle",
"Add new email address" : "Yeni e-posta adresi ekle",
"Add user to group" : "Gruba kullanıcı ekle",
"Set user as admin for" : "Kullanıcıyı şurada yönetici yap",
"Select user quota" : "Kullanıcı kotasını seçin",
+ "Set the language" : "Dili ayarla",
+ "Select manager" : "Yönetici seçin",
"Delete user" : "Kullanıcıyı sil",
"Wipe all devices" : "Tüm aygıtları sil",
"Disable user" : "Kullanıcıyı devre dışı bırak",
@@ -355,17 +358,22 @@ OC.L10N.register(
"Edit User" : "Kullanıcıyı düzenle",
"Toggle user actions menu" : "Kullanıcı işlemleri menüsünü değiştir",
"{size} used" : "{size} kullanılmış",
+ "User's table" : "Kullanıcının tablosu",
"New user" : "Yeni kullanıcı",
"Will be autogenerated" : "Otomatik olarak oluşturulacak",
"Display name" : "Görüntülenecek ad",
"Email" : "E-posta",
"Default language" : "Varsayılan dil",
+ "Select user manager" : "Kullanıcı yöneticisini seçin",
"Add a new user" : "Kullanıcı ekle",
+ "Avatar" : "Avatar",
"Group admin for" : "Şunun grup yöneticisi",
"Quota" : "Kota",
"User backend" : "Kullanıcı arka ucu",
"Storage location" : "Depolama konumu",
"Last login" : "Son oturum açma",
+ "Manager" : "Yönetici",
+ "User actions" : "Kullanıcı işlemleri",
"No users in here" : "Henüz herhangi bir kullanıcı eklenmemiş",
"Default quota" : "Varsayılan kota",
"Common languages" : "Sık kullanılan diller",
@@ -485,8 +493,8 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Kullanıcılar, yalnızca kendi gruplarındaki kullanıcılarla paylaşabilsin",
"Exclude groups from sharing" : "Gruplar paylaşıma katılmasın",
"These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar paylaşımları alabilir ancak başlatamaz.",
- "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin",
- "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Paylaşım penceresinde kullanıcı adının otomatik tamamlanmasına ve sistem adres defterine erişilmesine izin verilsin",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Aynı gruplarda kullanıcı adının otomatik olarak tamamlanmasına izin verilsın ve sistem adres defterleri aynı gruplardaki kullanıcılarla sınırlansın",
"Allow username autocompletion to users based on phone number integration" : "Telefon numarası bütünleştirmesi eşleşmelerine göre kullanıcı adları otomatik olarak tamamlanabilsin",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "\"Aynı grup\" ve \"telefon numarası bütünleştirmesi\" etkinleştirilmiş ise. Kullanıcının görüntülenmesi için ikisinden birinde eşleşme olması yeterlidir.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tam ad ya da e-posta adresi yazılırken otomatik olarak tamamlanabilsin (aynı grupta olma ya da telefon defteri eşleşmesi yok sayılarak)",
@@ -527,7 +535,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin",
"Migration started …" : "Aktarım başladı …",
"Address" : "Adres",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.",
"Plain" : "Düz",
"NT LAN Manager" : "NT ağ yöneticisi",
@@ -546,6 +553,8 @@ OC.L10N.register(
"Pick background job setting" : "Arka plan görevi ayarlarını seçin",
"Recommended" : "Önerilen",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.",
+ "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin",
+ "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin",
"Change privacy level of profile picture" : "Profil görselinin gizlilik düzeyini değiştir",
"Upload new" : "Yeni yükle",
"Select from Files" : "Dosyalardan seç",
diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json
index 909f9e22576..ba349d1431c 100644
--- a/apps/settings/l10n/tr.json
+++ b/apps/settings/l10n/tr.json
@@ -333,11 +333,14 @@
"Add additional email" : "Ek e-posta adresi ekle",
"Add" : "Ekle",
"You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok",
+ "Edit display name" : "Görüntülenecek adı düzenle",
"Add new password" : "Yeni parola ekle",
"Add new email address" : "Yeni e-posta adresi ekle",
"Add user to group" : "Gruba kullanıcı ekle",
"Set user as admin for" : "Kullanıcıyı şurada yönetici yap",
"Select user quota" : "Kullanıcı kotasını seçin",
+ "Set the language" : "Dili ayarla",
+ "Select manager" : "Yönetici seçin",
"Delete user" : "Kullanıcıyı sil",
"Wipe all devices" : "Tüm aygıtları sil",
"Disable user" : "Kullanıcıyı devre dışı bırak",
@@ -353,17 +356,22 @@
"Edit User" : "Kullanıcıyı düzenle",
"Toggle user actions menu" : "Kullanıcı işlemleri menüsünü değiştir",
"{size} used" : "{size} kullanılmış",
+ "User's table" : "Kullanıcının tablosu",
"New user" : "Yeni kullanıcı",
"Will be autogenerated" : "Otomatik olarak oluşturulacak",
"Display name" : "Görüntülenecek ad",
"Email" : "E-posta",
"Default language" : "Varsayılan dil",
+ "Select user manager" : "Kullanıcı yöneticisini seçin",
"Add a new user" : "Kullanıcı ekle",
+ "Avatar" : "Avatar",
"Group admin for" : "Şunun grup yöneticisi",
"Quota" : "Kota",
"User backend" : "Kullanıcı arka ucu",
"Storage location" : "Depolama konumu",
"Last login" : "Son oturum açma",
+ "Manager" : "Yönetici",
+ "User actions" : "Kullanıcı işlemleri",
"No users in here" : "Henüz herhangi bir kullanıcı eklenmemiş",
"Default quota" : "Varsayılan kota",
"Common languages" : "Sık kullanılan diller",
@@ -483,8 +491,8 @@
"Restrict users to only share with users in their groups" : "Kullanıcılar, yalnızca kendi gruplarındaki kullanıcılarla paylaşabilsin",
"Exclude groups from sharing" : "Gruplar paylaşıma katılmasın",
"These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar paylaşımları alabilir ancak başlatamaz.",
- "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin",
- "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "Paylaşım penceresinde kullanıcı adının otomatik tamamlanmasına ve sistem adres defterine erişilmesine izin verilsin",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Aynı gruplarda kullanıcı adının otomatik olarak tamamlanmasına izin verilsın ve sistem adres defterleri aynı gruplardaki kullanıcılarla sınırlansın",
"Allow username autocompletion to users based on phone number integration" : "Telefon numarası bütünleştirmesi eşleşmelerine göre kullanıcı adları otomatik olarak tamamlanabilsin",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "\"Aynı grup\" ve \"telefon numarası bütünleştirmesi\" etkinleştirilmiş ise. Kullanıcının görüntülenmesi için ikisinden birinde eşleşme olması yeterlidir.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tam ad ya da e-posta adresi yazılırken otomatik olarak tamamlanabilsin (aynı grupta olma ya da telefon defteri eşleşmesi yok sayılarak)",
@@ -525,7 +533,6 @@
"Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin",
"Migration started …" : "Aktarım başladı …",
"Address" : "Adres",
- "Avatar" : "Avatar",
"An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.",
"Plain" : "Düz",
"NT LAN Manager" : "NT ağ yöneticisi",
@@ -544,6 +551,8 @@
"Pick background job setting" : "Arka plan görevi ayarlarını seçin",
"Recommended" : "Önerilen",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.",
+ "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin",
+ "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin",
"Change privacy level of profile picture" : "Profil görselinin gizlilik düzeyini değiştir",
"Upload new" : "Yeni yükle",
"Select from Files" : "Dosyalardan seç",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index d4f41aa0f59..2419da2f43f 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -361,6 +361,7 @@ OC.L10N.register(
"Email" : "E-mail",
"Default language" : "Мова за замовчуванням",
"Add a new user" : "Додати нового користувача",
+ "Avatar" : "Світлина",
"Group admin for" : "Адміністратор групи",
"Quota" : "Квота",
"User backend" : "Сервер користувача",
@@ -485,8 +486,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи",
"Exclude groups from sharing" : "Виключити групи зі спільного доступу",
"These groups will still be able to receive shares, but not to initiate them." : "Ці групи зможуть отримувати спільні файли, але не зможуть відправляти їх.",
- "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу",
- "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах",
"Allow username autocompletion to users based on phone number integration" : "Дозволити користувачам автозаповнення імені користувача на основі інтеграції номера телефону",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Якщо ввімкнуто автозавершення «та сама група» та «інтеграція номеру телефону», збігу в будь-якому з них достатньо, щоб показати користувачеві.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволити автозавершення під час введення повного імені або адреси електронної пошти (ігнорування відсутніх збігів телефонної книги та перебування в одній групі)",
@@ -527,7 +526,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться",
"Migration started …" : "Міграцію розпочато ...",
"Address" : "Адреса",
- "Avatar" : "Світлина",
"An error occured during the request. Unable to proceed." : "Під час запиту сталася помилка. Не вдається продовжити.",
"Plain" : "Звичайний",
"NT LAN Manager" : "Менеджер NT LAN",
@@ -546,6 +544,8 @@ OC.L10N.register(
"Pick background job setting" : "Виберіть налаштування фонової роботи",
"Recommended" : "Рекомендуємо",
"The cron.php needs to be executed by the system user \"%s\"." : "Файл cron.php має бути запущений системним користувачем \"%s\".",
+ "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу",
+ "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах",
"Change privacy level of profile picture" : "Змінити рівень конфіденційності зображення профілю",
"Upload new" : "Завантажити нове",
"Select from Files" : "Вибрати з файлів",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index c72d31ca4e0..5164d6f3fc8 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -359,6 +359,7 @@
"Email" : "E-mail",
"Default language" : "Мова за замовчуванням",
"Add a new user" : "Додати нового користувача",
+ "Avatar" : "Світлина",
"Group admin for" : "Адміністратор групи",
"Quota" : "Квота",
"User backend" : "Сервер користувача",
@@ -483,8 +484,6 @@
"Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи",
"Exclude groups from sharing" : "Виключити групи зі спільного доступу",
"These groups will still be able to receive shares, but not to initiate them." : "Ці групи зможуть отримувати спільні файли, але не зможуть відправляти їх.",
- "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу",
- "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах",
"Allow username autocompletion to users based on phone number integration" : "Дозволити користувачам автозаповнення імені користувача на основі інтеграції номера телефону",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Якщо ввімкнуто автозавершення «та сама група» та «інтеграція номеру телефону», збігу в будь-якому з них достатньо, щоб показати користувачеві.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволити автозавершення під час введення повного імені або адреси електронної пошти (ігнорування відсутніх збігів телефонної книги та перебування в одній групі)",
@@ -525,7 +524,6 @@
"Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться",
"Migration started …" : "Міграцію розпочато ...",
"Address" : "Адреса",
- "Avatar" : "Світлина",
"An error occured during the request. Unable to proceed." : "Під час запиту сталася помилка. Не вдається продовжити.",
"Plain" : "Звичайний",
"NT LAN Manager" : "Менеджер NT LAN",
@@ -544,6 +542,8 @@
"Pick background job setting" : "Виберіть налаштування фонової роботи",
"Recommended" : "Рекомендуємо",
"The cron.php needs to be executed by the system user \"%s\"." : "Файл cron.php має бути запущений системним користувачем \"%s\".",
+ "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу",
+ "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах",
"Change privacy level of profile picture" : "Змінити рівень конфіденційності зображення профілю",
"Upload new" : "Завантажити нове",
"Select from Files" : "Вибрати з файлів",
diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js
index fe63acbff84..ae537d2bde0 100644
--- a/apps/settings/l10n/vi.js
+++ b/apps/settings/l10n/vi.js
@@ -200,6 +200,7 @@ OC.L10N.register(
"Email" : "Email",
"Default language" : "Ngôn ngữ mặc định",
"Add a new user" : "Thêm người dùng mới",
+ "Avatar" : "Hình đại diện",
"Group admin for" : "Quản trị viên nhóm",
"Quota" : "Hạn ngạch",
"User backend" : "Trang cài đặt người dùng",
@@ -273,7 +274,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc",
"Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...",
"Address" : "Địa chỉ",
- "Avatar" : "Hình đại diện",
"An error occured during the request. Unable to proceed." : "Đã xảy ra lỗi trong khi yêu cầu. Không thể tiến hành.",
"Enable encryption" : "Bật mã hóa",
"Upload new" : "Tải lên",
diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json
index b5ae49222bf..838bbb99dec 100644
--- a/apps/settings/l10n/vi.json
+++ b/apps/settings/l10n/vi.json
@@ -198,6 +198,7 @@
"Email" : "Email",
"Default language" : "Ngôn ngữ mặc định",
"Add a new user" : "Thêm người dùng mới",
+ "Avatar" : "Hình đại diện",
"Group admin for" : "Quản trị viên nhóm",
"Quota" : "Hạn ngạch",
"User backend" : "Trang cài đặt người dùng",
@@ -271,7 +272,6 @@
"Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc",
"Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...",
"Address" : "Địa chỉ",
- "Avatar" : "Hình đại diện",
"An error occured during the request. Unable to proceed." : "Đã xảy ra lỗi trong khi yêu cầu. Không thể tiến hành.",
"Enable encryption" : "Bật mã hóa",
"Upload new" : "Tải lên",
diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js
index 353a063dd59..27f3318378e 100644
--- a/apps/settings/l10n/zh_CN.js
+++ b/apps/settings/l10n/zh_CN.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"settings",
{
"Private" : "私有",
- "Only visible to people matched via phone number integration through Talk on mobile" : "只对通过手机上 Talk 应用的电话号码整合功能匹配的人可见",
+ "Only visible to people matched via phone number integration through Talk on mobile" : "只对通过手机上Talk应用的电话号码整合功能匹配的人可见",
"Local" : "本地",
"Only visible to people on this instance and guests" : "仅对该实例上的人及来宾可见",
"Federated" : "联合云",
@@ -202,8 +202,8 @@ OC.L10N.register(
"iPad" : "iPad",
"{productName} iOS app" : "{productName} iOS 应用",
"{productName} Android app" : "{productName} 安卓应用",
- "{productName} Talk for iOS" : "{productName} Talk for iOS",
- "{productName} Talk for Android" : "{productName} Talk for Android ",
+ "{productName} Talk for iOS" : "{productName}iOS版通话应用",
+ "{productName} Talk for Android" : "{productName}Android版通话应用",
"Sync client - {os}" : "同步客户端 - {os}",
"This session" : "当前会话",
"Device" : "设备",
@@ -354,6 +354,7 @@ OC.L10N.register(
"Email" : "电子邮件",
"Default language" : "默认语言",
"Add a new user" : "添加新用户",
+ "Avatar" : "头像",
"Group admin for" : "分组管理员",
"Quota" : "配额",
"User backend" : "用户来源",
@@ -476,8 +477,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "限制用户只与他们组中的用户共享",
"Exclude groups from sharing" : "在共享中排除组",
"These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。",
- "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成",
- "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名",
"Allow username autocompletion to users based on phone number integration" : "允许基于手机号码集成自动完成用户的用户名",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果启用了“同组”自动完成和“手机号码集成”,则匹配两者中的任何一个都足以显示用户",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "输入全名或电子邮箱地址时,允许自动完成(忽略缺少的通讯录匹配及同组要求)",
@@ -518,7 +517,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成",
"Migration started …" : "迁移开始...",
"Address" : "地址",
- "Avatar" : "头像",
"An error occured during the request. Unable to proceed." : "请求期间发生错误。 无法继续。",
"Plain" : "明文",
"NT LAN Manager" : "NT LAN 管理器",
@@ -537,6 +535,8 @@ OC.L10N.register(
"Pick background job setting" : "选择后台任务设置",
"Recommended" : "推荐",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。",
+ "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成",
+ "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名",
"Change privacy level of profile picture" : "更改个人头像的隐私级别",
"Upload new" : "上传",
"Select from Files" : "选择文件",
diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json
index 9a8f8b5b66c..5f4fb7b2eb9 100644
--- a/apps/settings/l10n/zh_CN.json
+++ b/apps/settings/l10n/zh_CN.json
@@ -1,6 +1,6 @@
{ "translations": {
"Private" : "私有",
- "Only visible to people matched via phone number integration through Talk on mobile" : "只对通过手机上 Talk 应用的电话号码整合功能匹配的人可见",
+ "Only visible to people matched via phone number integration through Talk on mobile" : "只对通过手机上Talk应用的电话号码整合功能匹配的人可见",
"Local" : "本地",
"Only visible to people on this instance and guests" : "仅对该实例上的人及来宾可见",
"Federated" : "联合云",
@@ -200,8 +200,8 @@
"iPad" : "iPad",
"{productName} iOS app" : "{productName} iOS 应用",
"{productName} Android app" : "{productName} 安卓应用",
- "{productName} Talk for iOS" : "{productName} Talk for iOS",
- "{productName} Talk for Android" : "{productName} Talk for Android ",
+ "{productName} Talk for iOS" : "{productName}iOS版通话应用",
+ "{productName} Talk for Android" : "{productName}Android版通话应用",
"Sync client - {os}" : "同步客户端 - {os}",
"This session" : "当前会话",
"Device" : "设备",
@@ -352,6 +352,7 @@
"Email" : "电子邮件",
"Default language" : "默认语言",
"Add a new user" : "添加新用户",
+ "Avatar" : "头像",
"Group admin for" : "分组管理员",
"Quota" : "配额",
"User backend" : "用户来源",
@@ -474,8 +475,6 @@
"Restrict users to only share with users in their groups" : "限制用户只与他们组中的用户共享",
"Exclude groups from sharing" : "在共享中排除组",
"These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。",
- "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成",
- "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名",
"Allow username autocompletion to users based on phone number integration" : "允许基于手机号码集成自动完成用户的用户名",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果启用了“同组”自动完成和“手机号码集成”,则匹配两者中的任何一个都足以显示用户",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "输入全名或电子邮箱地址时,允许自动完成(忽略缺少的通讯录匹配及同组要求)",
@@ -516,7 +515,6 @@
"Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成",
"Migration started …" : "迁移开始...",
"Address" : "地址",
- "Avatar" : "头像",
"An error occured during the request. Unable to proceed." : "请求期间发生错误。 无法继续。",
"Plain" : "明文",
"NT LAN Manager" : "NT LAN 管理器",
@@ -535,6 +533,8 @@
"Pick background job setting" : "选择后台任务设置",
"Recommended" : "推荐",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。",
+ "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成",
+ "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名",
"Change privacy level of profile picture" : "更改个人头像的隐私级别",
"Upload new" : "上传",
"Select from Files" : "选择文件",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index 3745effbefe..0e0e010e4df 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -335,11 +335,13 @@ OC.L10N.register(
"Add additional email" : "添加額外電郵地址",
"Add" : "新增",
"You do not have permissions to see the details of this user" : "您沒有檢視此用戶詳細資料的權限",
+ "Edit display name" : "編輯顯示名稱",
"Add new password" : "新增密碼",
"Add new email address" : "新增電郵地址",
"Add user to group" : "在群組中新增用戶",
"Set user as admin for" : "將用戶設定為管理員",
"Select user quota" : "選擇用戶配額",
+ "Set the language" : "設置語言",
"Delete user" : "刪除用戶",
"Wipe all devices" : "抹除所有裝置",
"Disable user" : "停用用戶",
@@ -361,6 +363,7 @@ OC.L10N.register(
"Email" : "電郵地址",
"Default language" : "預設語言",
"Add a new user" : "新增用戶",
+ "Avatar" : "虛擬化身大頭照",
"Group admin for" : "群組管理員",
"Quota" : "容量限制",
"User backend" : "用戶後端系統",
@@ -485,8 +488,6 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "限制用戶僅能與他們群組中的其他用戶分享",
"Exclude groups from sharing" : "禁止特定群組分享檔案",
"These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。",
- "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成",
- "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名",
"Allow username autocompletion to users based on phone number integration" : "允許基於電話號碼整合的用戶自動完成用戶名",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果啟用了自動完成功能“相同的群組”和“電話號碼整合”,則任何一個匹配都足以向用戶顯示。",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電郵地址時,允許自動完成(忽略缺少的電話簿匹配項,並且位於同一群組中)",
@@ -527,7 +528,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束",
"Migration started …" : "開始遷移……",
"Address" : "地址",
- "Avatar" : "虛擬化身大頭照",
"An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。",
"Plain" : "明文",
"NT LAN Manager" : "NT LAN 管理程式",
@@ -546,6 +546,8 @@ OC.L10N.register(
"Pick background job setting" : "挑選後台作業設定",
"Recommended" : "建議",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統用戶「%s」執行。",
+ "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成",
+ "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名",
"Change privacy level of profile picture" : "更改個人資料圖片的私隱級別",
"Upload new" : "上傳新的",
"Select from Files" : "從雲端檔案選擇",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index dc0f80bb47f..8e957f209a1 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -333,11 +333,13 @@
"Add additional email" : "添加額外電郵地址",
"Add" : "新增",
"You do not have permissions to see the details of this user" : "您沒有檢視此用戶詳細資料的權限",
+ "Edit display name" : "編輯顯示名稱",
"Add new password" : "新增密碼",
"Add new email address" : "新增電郵地址",
"Add user to group" : "在群組中新增用戶",
"Set user as admin for" : "將用戶設定為管理員",
"Select user quota" : "選擇用戶配額",
+ "Set the language" : "設置語言",
"Delete user" : "刪除用戶",
"Wipe all devices" : "抹除所有裝置",
"Disable user" : "停用用戶",
@@ -359,6 +361,7 @@
"Email" : "電郵地址",
"Default language" : "預設語言",
"Add a new user" : "新增用戶",
+ "Avatar" : "虛擬化身大頭照",
"Group admin for" : "群組管理員",
"Quota" : "容量限制",
"User backend" : "用戶後端系統",
@@ -483,8 +486,6 @@
"Restrict users to only share with users in their groups" : "限制用戶僅能與他們群組中的其他用戶分享",
"Exclude groups from sharing" : "禁止特定群組分享檔案",
"These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。",
- "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成",
- "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名",
"Allow username autocompletion to users based on phone number integration" : "允許基於電話號碼整合的用戶自動完成用戶名",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果啟用了自動完成功能“相同的群組”和“電話號碼整合”,則任何一個匹配都足以向用戶顯示。",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電郵地址時,允許自動完成(忽略缺少的電話簿匹配項,並且位於同一群組中)",
@@ -525,7 +526,6 @@
"Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束",
"Migration started …" : "開始遷移……",
"Address" : "地址",
- "Avatar" : "虛擬化身大頭照",
"An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。",
"Plain" : "明文",
"NT LAN Manager" : "NT LAN 管理程式",
@@ -544,6 +544,8 @@
"Pick background job setting" : "挑選後台作業設定",
"Recommended" : "建議",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統用戶「%s」執行。",
+ "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成",
+ "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名",
"Change privacy level of profile picture" : "更改個人資料圖片的私隱級別",
"Upload new" : "上傳新的",
"Select from Files" : "從雲端檔案選擇",
diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js
index 2e791f3a279..b86270deb22 100644
--- a/apps/settings/l10n/zh_TW.js
+++ b/apps/settings/l10n/zh_TW.js
@@ -335,11 +335,14 @@ OC.L10N.register(
"Add additional email" : "新增額外電子郵件",
"Add" : "新增",
"You do not have permissions to see the details of this user" : "您沒有檢視此使用者詳細資料的權限",
+ "Edit display name" : "編輯顯示名稱",
"Add new password" : "新增密碼",
"Add new email address" : "新增電子郵件",
"Add user to group" : "新增使用者到群組",
"Set user as admin for" : "將使用者設定為管理員",
"Select user quota" : "選取使用者配額",
+ "Set the language" : "設定語言",
+ "Select manager" : "選取管理者",
"Delete user" : "刪除使用者",
"Wipe all devices" : "抹除所有裝置",
"Disable user" : "停用使用者",
@@ -355,17 +358,22 @@ OC.L10N.register(
"Edit User" : "編輯使用者",
"Toggle user actions menu" : "切換使用者動作選單",
"{size} used" : "已使用 {size}",
+ "User's table" : "使用者的表格",
"New user" : "新使用者",
"Will be autogenerated" : "將自動生成",
"Display name" : "顯示名稱",
"Email" : "信箱",
"Default language" : "預設語言",
+ "Select user manager" : "選取使用者管理者",
"Add a new user" : "新增使用者",
+ "Avatar" : "大頭照",
"Group admin for" : "群組管理員",
"Quota" : "容量限制",
"User backend" : "使用者資料後端",
"Storage location" : "儲存位址",
"Last login" : "最後登入",
+ "Manager" : "管理者",
+ "User actions" : "使用者動作",
"No users in here" : "這裡沒有使用者",
"Default quota" : "預設儲存容量限制",
"Common languages" : "常用語言",
@@ -485,8 +493,8 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "限制使用者僅能與他們群組中的其他使用者分享",
"Exclude groups from sharing" : "禁止特定群組分享檔案",
"These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。",
- "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成",
- "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊使用者名稱並允許存取系統通訊錄",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "允許同一個群組內的使用者自動完成使用者名稱,並將系統通訊錄限制為同一個群組內的使用者",
"Allow username autocompletion to users based on phone number integration" : "允許以電話號碼整合為基礎的使用者名稱自動完成",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "若同時啟用「同一個群組」與「電話號碼整合」的自動完成,則符合其中一項條件就會顯示使用者。",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電子郵件地址時,允許自動完成(忽略缺少的通訊錄相符,以及在同一個群組中的)",
@@ -527,7 +535,6 @@ OC.L10N.register(
"Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束",
"Migration started …" : "開始遷移……",
"Address" : "地址",
- "Avatar" : "大頭照",
"An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。",
"Plain" : "明文",
"NT LAN Manager" : "NT LAN 管理程式",
@@ -546,6 +553,8 @@ OC.L10N.register(
"Pick background job setting" : "挑選背景工作設定",
"Recommended" : "建議",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者「%s」執行。",
+ "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成",
+ "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者",
"Change privacy level of profile picture" : "變更個人資料照片的隱私等級",
"Upload new" : "上傳新的",
"Select from Files" : "從雲端檔案選擇",
diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json
index 67ebffedaa5..fa2f2e00717 100644
--- a/apps/settings/l10n/zh_TW.json
+++ b/apps/settings/l10n/zh_TW.json
@@ -333,11 +333,14 @@
"Add additional email" : "新增額外電子郵件",
"Add" : "新增",
"You do not have permissions to see the details of this user" : "您沒有檢視此使用者詳細資料的權限",
+ "Edit display name" : "編輯顯示名稱",
"Add new password" : "新增密碼",
"Add new email address" : "新增電子郵件",
"Add user to group" : "新增使用者到群組",
"Set user as admin for" : "將使用者設定為管理員",
"Select user quota" : "選取使用者配額",
+ "Set the language" : "設定語言",
+ "Select manager" : "選取管理者",
"Delete user" : "刪除使用者",
"Wipe all devices" : "抹除所有裝置",
"Disable user" : "停用使用者",
@@ -353,17 +356,22 @@
"Edit User" : "編輯使用者",
"Toggle user actions menu" : "切換使用者動作選單",
"{size} used" : "已使用 {size}",
+ "User's table" : "使用者的表格",
"New user" : "新使用者",
"Will be autogenerated" : "將自動生成",
"Display name" : "顯示名稱",
"Email" : "信箱",
"Default language" : "預設語言",
+ "Select user manager" : "選取使用者管理者",
"Add a new user" : "新增使用者",
+ "Avatar" : "大頭照",
"Group admin for" : "群組管理員",
"Quota" : "容量限制",
"User backend" : "使用者資料後端",
"Storage location" : "儲存位址",
"Last login" : "最後登入",
+ "Manager" : "管理者",
+ "User actions" : "使用者動作",
"No users in here" : "這裡沒有使用者",
"Default quota" : "預設儲存容量限制",
"Common languages" : "常用語言",
@@ -483,8 +491,8 @@
"Restrict users to only share with users in their groups" : "限制使用者僅能與他們群組中的其他使用者分享",
"Exclude groups from sharing" : "禁止特定群組分享檔案",
"These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。",
- "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成",
- "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者",
+ "Allow username autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊使用者名稱並允許存取系統通訊錄",
+ "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "允許同一個群組內的使用者自動完成使用者名稱,並將系統通訊錄限制為同一個群組內的使用者",
"Allow username autocompletion to users based on phone number integration" : "允許以電話號碼整合為基礎的使用者名稱自動完成",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "若同時啟用「同一個群組」與「電話號碼整合」的自動完成,則符合其中一項條件就會顯示使用者。",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電子郵件地址時,允許自動完成(忽略缺少的通訊錄相符,以及在同一個群組中的)",
@@ -525,7 +533,6 @@
"Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束",
"Migration started …" : "開始遷移……",
"Address" : "地址",
- "Avatar" : "大頭照",
"An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。",
"Plain" : "明文",
"NT LAN Manager" : "NT LAN 管理程式",
@@ -544,6 +551,8 @@
"Pick background job setting" : "挑選背景工作設定",
"Recommended" : "建議",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者「%s」執行。",
+ "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成",
+ "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者",
"Change privacy level of profile picture" : "變更個人資料照片的隱私等級",
"Upload new" : "上傳新的",
"Select from Files" : "從雲端檔案選擇",
diff --git a/apps/settings/lib/UserMigration/AccountMigrator.php b/apps/settings/lib/UserMigration/AccountMigrator.php
index e8c70624224..a779ad76c8d 100644
--- a/apps/settings/lib/UserMigration/AccountMigrator.php
+++ b/apps/settings/lib/UserMigration/AccountMigrator.php
@@ -84,7 +84,7 @@ class AccountMigrator implements IMigrator, ISizeEstimationMigrator {
/**
* {@inheritDoc}
*/
- public function getEstimatedExportSize(IUser $user): int {
+ public function getEstimatedExportSize(IUser $user): int|float {
$size = 100; // 100KiB for account JSON
try {
@@ -97,7 +97,7 @@ class AccountMigrator implements IMigrator, ISizeEstimationMigrator {
// Skip avatar in size estimate on failure
}
- return (int)ceil($size);
+ return ceil($size);
}
/**
diff --git a/apps/settings/src/admin.js b/apps/settings/src/admin.js
index e7220df3c91..8bdfa1d0770 100644
--- a/apps/settings/src/admin.js
+++ b/apps/settings/src/admin.js
@@ -286,4 +286,6 @@ window.addEventListener('DOMContentLoaded', () => {
if (document.getElementById('security-warning') !== null) {
setupChecks()
}
+
+ $('#shareAPI').removeClass('loading')
})
diff --git a/apps/settings/src/components/BasicSettings/BackgroundJob.vue b/apps/settings/src/components/BasicSettings/BackgroundJob.vue
index 17e77aff6c7..2befc5cce79 100644
--- a/apps/settings/src/components/BasicSettings/BackgroundJob.vue
+++ b/apps/settings/src/components/BasicSettings/BackgroundJob.vue
@@ -196,7 +196,7 @@ export default {
margin-top: 8px;
padding: 5px;
border-radius: var(--border-radius);
- color: var(--color-primary-text);
+ color: var(--color-primary-element-text);
background-color: var(--color-error);
width: initial;
}
@@ -204,7 +204,7 @@ export default {
margin-top: 8px;
padding: 5px;
border-radius: var(--border-radius);
- color: var(--color-primary-text);
+ color: var(--color-primary-element-text);
background-color: var(--color-warning);
width: initial;
}
diff --git a/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue b/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue
index c5517140cd2..b88f52e0df4 100644
--- a/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue
+++ b/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue
@@ -23,6 +23,7 @@
<template>
<AccountPropertySection v-bind.sync="displayName"
:placeholder="t('settings', 'Your full name')"
+ autocomplete="username"
:is-editable="displayNameChangeSupported"
:on-validate="onValidate"
:on-save="onSave" />
diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
index 5fb59d3d797..43e7d3d63ee 100644
--- a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
+++ b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
@@ -26,11 +26,11 @@
<input :id="inputId"
ref="email"
type="email"
+ autocomplete="email"
:placeholder="inputPlaceholder"
:value="email"
:aria-describedby="helperText ? `${inputId}-helper-text` : ''"
autocapitalize="none"
- autocomplete="on"
autocorrect="off"
@input="onEmailChange">
diff --git a/apps/settings/src/components/PersonalInfo/LocationSection.vue b/apps/settings/src/components/PersonalInfo/LocationSection.vue
index e75075b6d1e..ceef7c432cd 100644
--- a/apps/settings/src/components/PersonalInfo/LocationSection.vue
+++ b/apps/settings/src/components/PersonalInfo/LocationSection.vue
@@ -22,6 +22,7 @@
<template>
<AccountPropertySection v-bind.sync="location"
+ autocomplete="address-level1"
:placeholder="t('settings', 'Your location')" />
</template>
diff --git a/apps/settings/src/components/PersonalInfo/OrganisationSection.vue b/apps/settings/src/components/PersonalInfo/OrganisationSection.vue
index 7a85d2fd647..b8ae3d846e5 100644
--- a/apps/settings/src/components/PersonalInfo/OrganisationSection.vue
+++ b/apps/settings/src/components/PersonalInfo/OrganisationSection.vue
@@ -22,6 +22,7 @@
<template>
<AccountPropertySection v-bind.sync="organisation"
+ autocomplete="organization"
:placeholder="t('settings', 'Your organisation')" />
</template>
diff --git a/apps/settings/src/components/PersonalInfo/PhoneSection.vue b/apps/settings/src/components/PersonalInfo/PhoneSection.vue
index ddb5cf33cff..3a156bd9403 100644
--- a/apps/settings/src/components/PersonalInfo/PhoneSection.vue
+++ b/apps/settings/src/components/PersonalInfo/PhoneSection.vue
@@ -23,6 +23,7 @@
<template>
<AccountPropertySection v-bind.sync="phone"
:placeholder="t('settings', 'Your phone number')"
+ autocomplete="tel"
type="tel"
:on-validate="onValidate" />
</template>
diff --git a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue
index 8016fe9e459..960053aafe0 100644
--- a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue
+++ b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue
@@ -161,12 +161,12 @@ export default {
&__header {
height: 70px;
border-radius: var(--border-radius-large) var(--border-radius-large) 0 0;
- background-color: var(--color-primary);
+ background-color: var(--color-primary-element);
background-image: var(--gradient-primary-background);
span {
bottom: 0;
- color: var(--color-primary-text);
+ color: var(--color-primary-element-text);
font-size: 18px;
font-weight: bold;
margin: 0 4px 8px 0;
diff --git a/apps/settings/src/components/PersonalInfo/RoleSection.vue b/apps/settings/src/components/PersonalInfo/RoleSection.vue
index ab9b9c910fe..82cb034600d 100644
--- a/apps/settings/src/components/PersonalInfo/RoleSection.vue
+++ b/apps/settings/src/components/PersonalInfo/RoleSection.vue
@@ -22,6 +22,7 @@
<template>
<AccountPropertySection v-bind.sync="role"
+ autocomplete="organization-title"
:placeholder="t('settings', 'Your role')" />
</template>
diff --git a/apps/settings/src/components/PersonalInfo/WebsiteSection.vue b/apps/settings/src/components/PersonalInfo/WebsiteSection.vue
index 1b8d9e6815d..79e7a90de00 100644
--- a/apps/settings/src/components/PersonalInfo/WebsiteSection.vue
+++ b/apps/settings/src/components/PersonalInfo/WebsiteSection.vue
@@ -23,6 +23,7 @@
<template>
<AccountPropertySection v-bind.sync="website"
:placeholder="t('settings', 'Your website')"
+ autocomplete="url"
type="url"
:on-validate="onValidate" />
</template>
diff --git a/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue b/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue
index 4da187e2b67..2329cf123f5 100644
--- a/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue
+++ b/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue
@@ -45,8 +45,8 @@
:value="value"
:aria-describedby="helperText ? `${name}-helper-text` : ''"
autocapitalize="none"
- autocomplete="on"
autocorrect="off"
+ :autocomplete="autocomplete"
@input="onPropertyChange">
<div class="property__actions-container">
@@ -132,6 +132,10 @@ export default {
type: Function,
default: null,
},
+ autocomplete: {
+ type: String,
+ default: null,
+ },
},
data() {
diff --git a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue
index d5d57c47c01..8290ece03c4 100644
--- a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue
+++ b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue
@@ -98,7 +98,7 @@ export default {
}
.federation-actions__btn--active {
- background-color: var(--color-primary-light) !important;
- box-shadow: inset 2px 0 var(--color-primary) !important;
+ background-color: var(--color-primary-element-light) !important;
+ box-shadow: inset 2px 0 var(--color-primary-element) !important;
}
</style>
diff --git a/apps/settings/src/components/UserList.vue b/apps/settings/src/components/UserList.vue
index 6aa61ccf8da..e2674a9740c 100644
--- a/apps/settings/src/components/UserList.vue
+++ b/apps/settings/src/components/UserList.vue
@@ -21,7 +21,11 @@
-->
<template>
- <div id="app-content" class="user-list-grid" @scroll.passive="onScroll">
+ <table id="app-content"
+ role="grid"
+ :aria-label="t('settings', 'User\'s table')"
+ class="user-list-grid"
+ @scroll.passive="onScroll">
<NcModal v-if="showConfig.showNewUserForm" size="small" @close="closeModal">
<form id="new-user"
:disabled="loading.all"
@@ -142,6 +146,20 @@
<div v-if="showConfig.showStoragePath" class="storageLocation" />
<div v-if="showConfig.showUserBackend" class="userBackend" />
<div v-if="showConfig.showLastLogin" class="lastLogin" />
+ <div :class="{'icon-loading-small': loading.manager}" class="modal__item managers">
+ <NcMultiselect ref="manager"
+ v-model="newUser.manager"
+ :close-on-select="true"
+ :user-select="true"
+ :options="possibleManagers"
+ :placeholder="t('settings', 'Select user manager')"
+ class="multiselect-vue"
+ @search-change="searchUserManager"
+ label="displayname"
+ track-by="id">
+ <span slot="noResult">{{ t('settings', 'No results') }}</span>
+ </NcMultiselect>
+ </div>
<div class="user-actions">
<NcButton id="newsubmit"
type="primary"
@@ -152,85 +170,95 @@
</div>
</form>
</NcModal>
- <div id="grid-header"
- :class="{'sticky': scrolled && !showConfig.showNewUserForm}"
- class="row">
- <div id="headerAvatar" class="avatar" />
- <div id="headerName" class="name">
- <div class="subtitle">
- <strong>
- {{ t('settings', 'Display name') }}
- </strong>
- </div>
- {{ t('settings', 'Username') }}
- </div>
- <div id="headerPassword" class="password">
- {{ t('settings', 'Password') }}
- </div>
- <div id="headerAddress" class="mailAddress">
- {{ t('settings', 'Email') }}
- </div>
- <div id="headerGroups" class="groups">
- {{ t('settings', 'Groups') }}
- </div>
- <div v-if="subAdminsGroups.length>0 && settings.isAdmin"
- id="headerSubAdmins"
- class="subadmins">
- {{ t('settings', 'Group admin for') }}
- </div>
- <div id="headerQuota" class="quota">
- {{ t('settings', 'Quota') }}
- </div>
- <div v-if="showConfig.showLanguages"
- id="headerLanguages"
- class="languages">
- {{ t('settings', 'Language') }}
- </div>
+ <tbody>
+ <tr id="grid-header"
+ :class="{'sticky': scrolled && !showConfig.showNewUserForm}"
+ class="row">
+ <th id="headerAvatar" class="avatar">
+ <span class="hidden-visually"> {{ t('settings', 'Avatar') }} </span>
+ </th>
+ <th id="headerName" class="name">
+ <div class="subtitle">
+ <strong>
+ {{ t('settings', 'Display name') }}
+ </strong>
+ </div>
+ {{ t('settings', 'Username') }}
+ </th>
+ <th id="headerPassword" class="password">
+ {{ t('settings', 'Password') }}
+ </th>
+ <th id="headerAddress" class="mailAddress">
+ {{ t('settings', 'Email') }}
+ </th>
+ <th id="headerGroups" class="groups">
+ {{ t('settings', 'Groups') }}
+ </th>
+ <th v-if="subAdminsGroups.length>0 && settings.isAdmin"
+ id="headerSubAdmins"
+ class="subadmins">
+ {{ t('settings', 'Group admin for') }}
+ </th>
+ <th id="headerQuota" class="quota">
+ {{ t('settings', 'Quota') }}
+ </th>
+ <th v-if="showConfig.showLanguages"
+ id="headerLanguages"
+ class="languages">
+ {{ t('settings', 'Language') }}
+ </th>
- <div v-if="showConfig.showUserBackend || showConfig.showStoragePath"
- class="headerUserBackend userBackend">
- <div v-if="showConfig.showUserBackend" class="userBackend">
- {{ t('settings', 'User backend') }}
- </div>
- <div v-if="showConfig.showStoragePath"
- class="subtitle storageLocation">
- {{ t('settings', 'Storage location') }}
- </div>
- </div>
- <div v-if="showConfig.showLastLogin"
- class="headerLastLogin lastLogin">
- {{ t('settings', 'Last login') }}
- </div>
+ <th v-if="showConfig.showUserBackend || showConfig.showStoragePath"
+ class="headerUserBackend userBackend">
+ <div v-if="showConfig.showUserBackend" class="userBackend">
+ {{ t('settings', 'User backend') }}
+ </div>
+ <div v-if="showConfig.showStoragePath"
+ class="subtitle storageLocation">
+ {{ t('settings', 'Storage location') }}
+ </div>
+ </th>
+ <th v-if="showConfig.showLastLogin"
+ class="headerLastLogin lastLogin">
+ {{ t('settings', 'Last login') }}
+ </th>
+ <th id="headerManager" class="manager">
+ {{ t('settings', 'Manager') }}
+ </th>
+ <th class="userActions hidden-visually">
+ {{ t('settings', 'User actions') }}
+ </th>
+ </tr>
- <div class="userActions" />
- </div>
+ <user-row v-for="user in filteredUsers"
+ :key="user.id"
+ :external-actions="externalActions"
+ :groups="groups"
+ :languages="languages"
+ :quota-options="quotaOptions"
+ :settings="settings"
+ :show-config="showConfig"
+ :sub-admins-groups="subAdminsGroups"
+ :user="user"
+ :users="users"
+ :is-dark-theme="isDarkTheme" />
- <user-row v-for="user in filteredUsers"
- :key="user.id"
- :external-actions="externalActions"
- :groups="groups"
- :languages="languages"
- :quota-options="quotaOptions"
- :settings="settings"
- :show-config="showConfig"
- :sub-admins-groups="subAdminsGroups"
- :user="user"
- :is-dark-theme="isDarkTheme" />
- <InfiniteLoading ref="infiniteLoading" @infinite="infiniteHandler">
- <div slot="spinner">
- <div class="users-icon-loading icon-loading" />
- </div>
- <div slot="no-more">
- <div class="users-list-end" />
- </div>
- <div slot="no-results">
- <div id="emptycontent">
- <div class="icon-contacts-dark" />
- <h2>{{ t('settings', 'No users in here') }}</h2>
+ <InfiniteLoading ref="infiniteLoading" @infinite="infiniteHandler">
+ <div slot="spinner">
+ <div class="users-icon-loading icon-loading" />
+ </div>
+ <div slot="no-more">
+ <div class="users-list-end" />
</div>
- </div>
- </InfiniteLoading>
- </div>
+ <div slot="no-results">
+ <div id="emptycontent">
+ <div class="icon-contacts-dark" />
+ <h2>{{ t('settings', 'No users in here') }}</h2>
+ </div>
+ </div>
+ </InfiniteLoading>
+ </tbody>
+ </table>
</template>
<script>
@@ -257,6 +285,7 @@ const newUser = {
password: '',
mailAddress: '',
groups: [],
+ manager: '',
subAdminsGroups: [],
quota: defaultQuota,
language: {
@@ -301,6 +330,7 @@ export default {
groups: false,
},
scrolled: false,
+ possibleManagers: [],
searchQuery: '',
newUser: Object.assign({}, newUser),
}
@@ -411,6 +441,10 @@ export default {
},
},
+ async beforeMount() {
+ await this.searchUserManager()
+ },
+
mounted() {
if (!this.settings.canChangePassword) {
OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))
@@ -438,6 +472,14 @@ export default {
},
methods: {
+ async searchUserManager(query) {
+ await this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {
+ const users = response?.data ? Object.values(response?.data.ocs.data.users) : []
+ if (users.length > 0) {
+ this.possibleManagers = users
+ }
+ })
+ },
onScroll(event) {
this.scrolled = event.target.scrollTo > 0
},
@@ -521,6 +563,7 @@ export default {
subadmin: this.newUser.subAdminsGroups.map(group => group.id),
quota: this.newUser.quota.id,
language: this.newUser.language.code,
+ manager: this.newUser.manager.id,
})
.then(() => {
this.resetForm()
@@ -595,7 +638,7 @@ export default {
},
}
</script>
-<style scoped>
+<style lang="scss" scoped>
.modal-wrapper {
margin: 2vh 0;
align-items: flex-start;
@@ -642,4 +685,12 @@ export default {
* prevent it). */
width: 0;
}
+
+ #app-content tbody tr {
+ &:hover,
+ &:focus,
+ &:active {
+ background-color: var(--color-main-background);
+ }
+ }
</style>
diff --git a/apps/settings/src/components/UserList/UserRow.vue b/apps/settings/src/components/UserList/UserRow.vue
index f840b8cdf77..ce414210e99 100644
--- a/apps/settings/src/components/UserList/UserRow.vue
+++ b/apps/settings/src/components/UserList/UserRow.vue
@@ -56,26 +56,27 @@
:user="user"
:is-dark-theme="isDarkTheme"
:class="{'row--menu-opened': openedMenu}" />
- <div v-else
+ <tr v-else
:class="{
'disabled': loading.delete || loading.disable,
'row--menu-opened': openedMenu
}"
:data-id="user.id"
class="row row--editable">
- <div :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"
+ <td :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"
class="avatar">
<img v-if="!loading.delete && !loading.disable && !loading.wipe"
:src="generateAvatar(user.id, isDarkTheme)"
alt=""
height="32"
width="32">
- </div>
+ </td>
<!-- dirty hack to ellipsis on two lines -->
- <div v-if="user.backendCapabilities.setDisplayName" class="displayName">
+ <td v-if="user.backendCapabilities.setDisplayName" class="displayName">
<form :class="{'icon-loading-small': loading.displayName}"
class="displayName"
@submit.prevent="updateDisplayName">
+ <label class="hidden-visually" :for="'displayName'+user.id+rand">{{ t('settings', 'Edit display name') }}</label>
<input :id="'displayName'+user.id+rand"
ref="displayName"
:disabled="loading.displayName||loading.all"
@@ -89,52 +90,59 @@
type="submit"
value="">
</form>
- </div>
- <div v-else class="name">
+ </td>
+ <td v-else class="name">
{{ user.id }}
<div class="displayName subtitle">
<div :title="user.displayname.length > 20 ? user.displayname : ''" class="cellText">
{{ user.displayname }}
</div>
</div>
- </div>
- <form v-if="settings.canChangePassword && user.backendCapabilities.setPassword"
- :class="{'icon-loading-small': loading.password}"
- class="password"
- @submit.prevent="updatePassword">
- <input :id="'password'+user.id+rand"
- ref="password"
- :disabled="loading.password || loading.all"
- :minlength="minPasswordLength"
- maxlength="469"
- :placeholder="t('settings', 'Add new password')"
- autocapitalize="off"
- autocomplete="new-password"
- autocorrect="off"
- required
- spellcheck="false"
- type="password"
- value="">
- <input class="icon-confirm" type="submit" value="">
- </form>
- <div v-else />
- <form :class="{'icon-loading-small': loading.mailAddress}"
- class="mailAddress"
- @submit.prevent="updateEmail">
- <input :id="'mailAddress'+user.id+rand"
- ref="mailAddress"
- :disabled="loading.mailAddress||loading.all"
- :placeholder="t('settings', 'Add new email address')"
- :value="user.email"
- autocapitalize="off"
- autocomplete="new-password"
- autocorrect="off"
- spellcheck="false"
- type="email">
- <input class="icon-confirm" type="submit" value="">
- </form>
- <div :class="{'icon-loading-small': loading.groups}" class="groups">
- <NcMultiselect :close-on-select="false"
+ </td>
+ <td v-if="settings.canChangePassword && user.backendCapabilities.setPassword">
+ <form :class="{'icon-loading-small': loading.password}"
+ class="password"
+ @submit.prevent="updatePassword">
+ <label class="hidden-visually" :for="'password'+user.id+rand">{{ t('settings', 'Add new password') }}</label>
+ <input :id="'password'+user.id+rand"
+ ref="password"
+ :disabled="loading.password || loading.all"
+ :minlength="minPasswordLength"
+ maxlength="469"
+ :placeholder="t('settings', 'Add new password')"
+ autocapitalize="off"
+ autocomplete="new-password"
+ autocorrect="off"
+ required
+ spellcheck="false"
+ type="password"
+ value="">
+ <input class="icon-confirm" type="submit" value="">
+ </form>
+ </td>
+ <td v-else />
+ <td>
+ <form :class="{'icon-loading-small': loading.mailAddress}"
+ class="mailAddress"
+ @submit.prevent="updateEmail">
+ <label class="hidden-visually" :for="'mailAddress'+user.id+rand">{{ t('settings', 'Add new email address') }}</label>
+ <input :id="'mailAddress'+user.id+rand"
+ ref="mailAddress"
+ :disabled="loading.mailAddress||loading.all"
+ :placeholder="t('settings', 'Add new email address')"
+ :value="user.email"
+ autocapitalize="off"
+ autocomplete="new-password"
+ autocorrect="off"
+ spellcheck="false"
+ type="email">
+ <input class="icon-confirm" type="submit" value="">
+ </form>
+ </td>
+ <td :class="{'icon-loading-small': loading.groups}" class="groups">
+ <label class="hidden-visually" :for="'groups'+user.id+rand">{{ t('settings', 'Add user to group') }}</label>
+ <NcMultiselect :id="'groups'+user.id+rand"
+ :close-on-select="false"
:disabled="loading.groups||loading.all"
:limit="2"
:multiple="true"
@@ -152,11 +160,13 @@
@tag="createGroup">
<span slot="noResult">{{ t('settings', 'No results') }}</span>
</NcMultiselect>
- </div>
- <div v-if="subAdminsGroups.length>0 && settings.isAdmin"
+ </td>
+ <td v-if="subAdminsGroups.length>0 && settings.isAdmin"
:class="{'icon-loading-small': loading.subadmins}"
class="subadmins">
- <NcMultiselect :close-on-select="false"
+ <label class="hidden-visually" :for="'subadmins'+user.id+rand">{{ t('settings', 'Set user as admin for') }}</label>
+ <NcMultiselect :id="'subadmins'+user.id+rand"
+ :close-on-select="false"
:disabled="loading.subadmins||loading.all"
:limit="2"
:multiple="true"
@@ -171,11 +181,13 @@
@select="addUserSubAdmin">
<span slot="noResult">{{ t('settings', 'No results') }}</span>
</NcMultiselect>
- </div>
- <div :title="usedSpace"
+ </td>
+ <td :title="usedSpace"
:class="{'icon-loading-small': loading.quota}"
class="quota">
- <NcMultiselect :allow-empty="false"
+ <label class="hidden-visually" :for="'quota'+user.id+rand">{{ t('settings', 'Select user quota') }}</label>
+ <NcMultiselect :id="'quota'+user.id+rand"
+ :allow-empty="false"
:disabled="loading.quota||loading.all"
:options="quotaOptions"
:placeholder="t('settings', 'Select user quota')"
@@ -187,11 +199,13 @@
track-by="id"
@input="setUserQuota"
@tag="validateQuota" />
- </div>
- <div v-if="showConfig.showLanguages"
+ </td>
+ <td v-if="showConfig.showLanguages"
:class="{'icon-loading-small': loading.languages}"
class="languages">
- <NcMultiselect :allow-empty="false"
+ <label class="hidden-visually" :for="'language'+user.id+rand">{{ t('settings', 'Set the language') }}</label>
+ <NcMultiselect :id="'language'+user.id+rand"
+ :allow-empty="false"
:disabled="loading.languages||loading.all"
:options="languages"
:placeholder="t('settings', 'No language set')"
@@ -202,14 +216,30 @@
label="name"
track-by="code"
@input="setUserLanguage" />
- </div>
+ </td>
+ <td :class="{'icon-loading-small': loading.manager}" class="managers">
+ <NcMultiselect ref="manager"
+ v-model="currentManager"
+ :close-on-select="true"
+ :user-select="true"
+ :options="possibleManagers"
+ :placeholder="t('settings', 'Select manager')"
+ class="multiselect-vue"
+ label="displayname"
+ track-by="id"
+ @search-change="searchUserManager"
+ @remove="updateUserManager"
+ @select="updateUserManager">
+ <span slot="noResult">{{ t('settings', 'No results') }}</span>
+ </NcMultiselect>
+ </td>
<!-- don't show this on edit mode -->
- <div v-if="showConfig.showStoragePath || showConfig.showUserBackend"
+ <td v-if="showConfig.showStoragePath || showConfig.showUserBackend"
class="storageLocation" />
- <div v-if="showConfig.showLastLogin" />
+ <td v-if="showConfig.showLastLogin" />
- <div class="userActions">
+ <td class="userActions">
<div v-if="!loading.all"
class="toggleUserActions">
<NcActions>
@@ -231,8 +261,8 @@
<div class="icon-checkmark" />
{{ feedbackMessage }}
</div>
- </div>
- </div>
+ </td>
+ </tr>
</template>
<script>
@@ -261,6 +291,10 @@ export default {
},
mixins: [UserRowMixin],
props: {
+ users: {
+ type: Array,
+ required: true,
+ },
user: {
type: Object,
required: true,
@@ -303,6 +337,8 @@ export default {
rand: parseInt(Math.random() * 1000),
openedMenu: false,
feedbackMessage: '',
+ possibleManagers: [],
+ currentManager: '',
editing: false,
loading: {
all: false,
@@ -316,10 +352,12 @@ export default {
disable: false,
languages: false,
wipe: false,
+ manager: false,
},
}
},
computed: {
+
/* USER POPOVERMENU ACTIONS */
userActions() {
const actions = [
@@ -349,6 +387,12 @@ export default {
return actions.concat(this.externalActions)
},
},
+ async beforeMount() {
+ await this.searchUserManager()
+ if (this.user.manager) {
+ await this.initManager(this.user.manager)
+ }
+ },
methods: {
/* MENU HANDLING */
@@ -385,6 +429,34 @@ export default {
)
},
+ filterManagers(managers) {
+ return managers.filter((manager) => manager.id !== this.user.id)
+ },
+ async initManager(userId) {
+ await this.$store.dispatch('getUser', userId).then(response => {
+ this.currentManager = response?.data.ocs.data
+ })
+ },
+ async searchUserManager(query) {
+ await this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {
+ const users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []
+ if (users.length > 0) {
+ this.possibleManagers = users
+ }
+ })
+ },
+
+ updateUserManager(manager) {
+ this.loading.manager = true
+ this.$store.dispatch('setUserData', {
+ userid: this.user.id,
+ key: 'manager',
+ value: this.currentManager ? this.currentManager.id : '',
+ }).then(() => {
+ this.loading.manager = false
+ })
+ },
+
deleteUser() {
const userid = this.user.id
OC.dialogs.confirmDestructive(
@@ -686,4 +758,11 @@ export default {
.row::v-deep .multiselect__single {
z-index: auto !important;
}
+ .displayName input,
+ .password input,
+ .mailAddress input {
+ width: 100%;
+ height: 44px!important;
+ border: 2px solid var(--color-border-dark);
+ }
</style>
diff --git a/apps/settings/src/components/UserList/UserRowSimple.vue b/apps/settings/src/components/UserList/UserRowSimple.vue
index 8f5e3ae8e84..6da45f804c2 100644
--- a/apps/settings/src/components/UserList/UserRowSimple.vue
+++ b/apps/settings/src/components/UserList/UserRowSimple.vue
@@ -1,16 +1,16 @@
<template>
- <div class="row"
+ <tr class="row"
:class="{'disabled': loading.delete || loading.disable}"
:data-id="user.id">
- <div class="avatar" :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}">
+ <td class="avatar" :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}">
<img v-if="!loading.delete && !loading.disable && !loading.wipe"
alt=""
width="32"
height="32"
:src="generateAvatar(user.id, isDarkTheme)">
- </div>
+ </td>
<!-- dirty hack to ellipsis on two lines -->
- <div class="name">
+ <td class="name">
<div class="displayName subtitle">
<div :title="user.displayname.length > 20 ? user.displayname : ''" class="cellText">
<strong>
@@ -19,20 +19,20 @@
</div>
</div>
{{ user.id }}
- </div>
- <div />
- <div class="mailAddress">
+ </td>
+ <td />
+ <td class="mailAddress">
<div :title="user.email !== null && user.email.length > 20 ? user.email : ''" class="cellText">
{{ user.email }}
</div>
- </div>
- <div class="groups">
+ </td>
+ <td class="groups">
{{ userGroupsLabels }}
- </div>
- <div v-if="subAdminsGroups.length > 0 && settings.isAdmin" class="subAdminsGroups">
+ </td>
+ <td v-if="subAdminsGroups.length > 0 && settings.isAdmin" class="subAdminsGroups">
{{ userSubAdminsGroupsLabels }}
- </div>
- <div class="userQuota">
+ </td>
+ <td class="userQuota">
<div class="quota">
{{ userQuota }} ({{ usedSpace }})
<progress class="quota-user-progress"
@@ -40,23 +40,25 @@
:value="usedQuota"
max="100" />
</div>
- </div>
- <div v-if="showConfig.showLanguages" class="languages">
+ </td>
+ <td v-if="showConfig.showLanguages" class="languages">
{{ userLanguage.name }}
- </div>
- <div v-if="showConfig.showUserBackend || showConfig.showStoragePath" class="userBackend">
+ </td>
+ <td v-if="showConfig.showUserBackend || showConfig.showStoragePath" class="userBackend">
<div v-if="showConfig.showUserBackend" class="userBackend">
{{ user.backend }}
</div>
<div v-if="showConfig.showStoragePath" :title="user.storageLocation" class="storageLocation subtitle">
{{ user.storageLocation }}
</div>
- </div>
- <div v-if="showConfig.showLastLogin" :title="userLastLoginTooltip" class="lastLogin">
+ </td>
+ <td v-if="showConfig.showLastLogin" :title="userLastLoginTooltip" class="lastLogin">
{{ userLastLogin }}
- </div>
-
- <div class="userActions">
+ </td>
+ <td class="managers">
+ {{ user.manager }}
+ </td>
+ <td class="userActions">
<div v-if="canEdit && !loading.all" class="toggleUserActions">
<NcActions>
<NcActionButton icon="icon-rename"
@@ -78,8 +80,8 @@
<div class="icon-checkmark" />
{{ feedbackMessage }}
</div>
- </div>
- </div>
+ </td>
+ </tr>
</template>
<script>
@@ -202,4 +204,7 @@ export default {
background-color: var(--color-main-background);
border: 0;
}
+ .row .name {
+ padding-left: 0px!important;
+ }
</style>
diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js
index f1941aa6704..ab8105ecb51 100644
--- a/apps/settings/src/store/users.js
+++ b/apps/settings/src/store/users.js
@@ -254,6 +254,41 @@ let searchRequestCancelSource = null
const actions = {
/**
+ * search users
+ *
+ * @param {object} context store context
+ * @param {object} options destructuring object
+ * @param {number} options.offset List offset to request
+ * @param {number} options.limit List number to return from offset
+ * @param {string} options.search Search amongst users
+ * @return {Promise}
+ */
+ searchUsers(context, { offset, limit, search }) {
+ search = typeof search === 'string' ? search : ''
+
+ return api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {
+ if (!axios.isCancel(error)) {
+ context.commit('API_FAILURE', error)
+ }
+ })
+ },
+
+ /**
+ * Get user details
+ *
+ * @param {object} context store context
+ * @param {string} userId user id
+ * @return {Promise}
+ */
+ getUser(context, userId) {
+ return api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {
+ if (!axios.isCancel(error)) {
+ context.commit('API_FAILURE', error)
+ }
+ })
+ },
+
+ /**
* Get all users with full details
*
* @param {object} context store context
@@ -548,11 +583,12 @@ const actions = {
* @param {string} options.subadmin User subadmin groups
* @param {string} options.quota User email
* @param {string} options.language User language
+ * @param {string} options.manager User manager
* @return {Promise}
*/
- addUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {
+ addUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {
return api.requireAdmin().then((response) => {
- return api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })
+ return api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })
.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))
.catch((error) => { throw error })
}).catch((error) => {
@@ -605,8 +641,8 @@ const actions = {
* @return {Promise}
*/
setUserData(context, { userid, key, value }) {
- const allowedEmpty = ['email', 'displayname']
- if (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {
+ const allowedEmpty = ['email', 'displayname', 'manager']
+ if (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) {
// We allow empty email or displayname
if (typeof value === 'string'
&& (
diff --git a/apps/settings/src/views/Users.vue b/apps/settings/src/views/Users.vue
index dbff4f552a6..a4b2316f137 100644
--- a/apps/settings/src/views/Users.vue
+++ b/apps/settings/src/views/Users.vue
@@ -30,15 +30,18 @@
@keyup.enter="showNewUserMenu"
@keyup.space="showNewUserMenu" />
<template #list>
- <NcAppNavigationItem id="addgroup"
+ <NcAppNavigationNewItem id="addgroup"
ref="addGroup"
:edit-placeholder="t('settings', 'Enter group name')"
:editable="true"
:loading="loadingAddGroup"
:title="t('settings', 'Add group')"
- icon="icon-add"
@click="showAddGroupForm"
- @update:title="createGroup" />
+ @update:title="createGroup">
+ <template #icon>
+ <Plus :size="20" />
+ </template>
+ </NcAppNavigationNewItem>
<NcAppNavigationItem id="everyone"
:exact="true"
:title="t('settings', 'Active users')"
@@ -148,6 +151,7 @@ import NcAppNavigationCaption from '@nextcloud/vue/dist/Components/NcAppNavigati
import NcAppNavigationCounter from '@nextcloud/vue/dist/Components/NcAppNavigationCounter.js'
import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'
import NcAppNavigationNew from '@nextcloud/vue/dist/Components/NcAppNavigationNew.js'
+import NcAppNavigationNewItem from '@nextcloud/vue/dist/Components/NcAppNavigationNewItem.js'
import NcAppNavigationSettings from '@nextcloud/vue/dist/Components/NcAppNavigationSettings.js'
import axios from '@nextcloud/axios'
import NcContent from '@nextcloud/vue/dist/Components/NcContent.js'
@@ -158,6 +162,7 @@ import VueLocalStorage from 'vue-localstorage'
import GroupListItem from '../components/GroupListItem.vue'
import UserList from '../components/UserList.vue'
+import Plus from 'vue-material-design-icons/Plus.vue'
Vue.use(VueLocalStorage)
@@ -170,10 +175,12 @@ export default {
NcAppNavigationCounter,
NcAppNavigationItem,
NcAppNavigationNew,
+ NcAppNavigationNewItem,
NcAppNavigationSettings,
NcContent,
GroupListItem,
NcMultiselect,
+ Plus,
UserList,
},
props: {
diff --git a/apps/settings/templates/settings/admin/sharing.php b/apps/settings/templates/settings/admin/sharing.php
index d2c542248c1..709c36a7b7b 100644
--- a/apps/settings/templates/settings/admin/sharing.php
+++ b/apps/settings/templates/settings/admin/sharing.php
@@ -27,7 +27,7 @@
?>
-<div class="section" id="shareAPI">
+<div class="section loading" id="shareAPI">
<h2><?php p($l->t('Sharing'));?></h2>
<?php if ($_['sharingAppEnabled'] === false) { ?>
<p class="warning"><?php p($l->t('You need to enable the File sharing App.')); ?></p>
@@ -209,7 +209,7 @@
<?php if ($_['allowShareDialogUserEnumeration'] === 'yes') {
print_unescaped('checked="checked"');
} ?> />
- <label for="shareapi_allow_share_dialog_user_enumeration"><?php p($l->t('Allow username autocompletion in share dialog'));?></label><br />
+ <label for="shareapi_allow_share_dialog_user_enumeration"><?php p($l->t('Allow username autocompletion in share dialog and allow access to the system address book'));?></label><br />
</p>
<p id="shareapi_restrict_user_enumeration_to_group_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') {
@@ -219,7 +219,7 @@
<?php if ($_['restrictUserEnumerationToGroup'] === 'yes') {
print_unescaped('checked="checked"');
} ?> />
- <label for="shareapi_restrict_user_enumeration_to_group"><?php p($l->t('Allow username autocompletion to users within the same groups'));?></label><br />
+ <label for="shareapi_restrict_user_enumeration_to_group"><?php p($l->t('Allow username autocompletion to users within the same groups and limit system address books to users in the same groups'));?></label><br />
</p>
<p id="shareapi_restrict_user_enumeration_to_phone_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') {
diff --git a/apps/systemtags/l10n/cs.js b/apps/systemtags/l10n/cs.js
index 30342da2916..bec19c16f36 100644
--- a/apps/systemtags/l10n/cs.js
+++ b/apps/systemtags/l10n/cs.js
@@ -48,7 +48,12 @@ OC.L10N.register(
"Collaborative tags" : "Štítky pro spolupráci",
"Collaborative tagging functionality which shares tags among users." : "Funkce opatřování štítky pro spolupráci, sdílenými mezi uživateli.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funkce pro opatřování štítky pro spolupráci, sdílenými mezi uživateli. Skvělé pro týmy.\n\t(Pokud jste poskytovateli instalace, sloužící více subjektům, je doporučeno tuto aplikaci vypnout, protože štítky jsou sdílené.)",
+ "Collaborative tags …" : "Štítky pro spolupráci…",
+ "No tags to select, type to create a new tag" : "Nevybrány žádné štítky k výběru – psaním vytvořte nový",
"Failed to load tags" : "Štítky se nepodařilo načíst",
+ "Failed to load selected tags" : "Vybrané štítky se nepodařilo načíst",
+ "Failed to select tag" : "Štítek se nepodařilo načíst",
+ "Failed to create tag" : "Štítek se nepodařilo vytvořit",
"Failed to delete tag" : "Štítek se nepodařilo smazat",
"Failed to load last used tags" : "Nepodařilo se načíst nedávno použité štítky",
"Missing \"Content-Location\" header" : "Chybí hlavička „Content-Location“",
diff --git a/apps/systemtags/l10n/cs.json b/apps/systemtags/l10n/cs.json
index e9e1eff7f35..74e7bdae3e9 100644
--- a/apps/systemtags/l10n/cs.json
+++ b/apps/systemtags/l10n/cs.json
@@ -46,7 +46,12 @@
"Collaborative tags" : "Štítky pro spolupráci",
"Collaborative tagging functionality which shares tags among users." : "Funkce opatřování štítky pro spolupráci, sdílenými mezi uživateli.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funkce pro opatřování štítky pro spolupráci, sdílenými mezi uživateli. Skvělé pro týmy.\n\t(Pokud jste poskytovateli instalace, sloužící více subjektům, je doporučeno tuto aplikaci vypnout, protože štítky jsou sdílené.)",
+ "Collaborative tags …" : "Štítky pro spolupráci…",
+ "No tags to select, type to create a new tag" : "Nevybrány žádné štítky k výběru – psaním vytvořte nový",
"Failed to load tags" : "Štítky se nepodařilo načíst",
+ "Failed to load selected tags" : "Vybrané štítky se nepodařilo načíst",
+ "Failed to select tag" : "Štítek se nepodařilo načíst",
+ "Failed to create tag" : "Štítek se nepodařilo vytvořit",
"Failed to delete tag" : "Štítek se nepodařilo smazat",
"Failed to load last used tags" : "Nepodařilo se načíst nedávno použité štítky",
"Missing \"Content-Location\" header" : "Chybí hlavička „Content-Location“",
diff --git a/apps/systemtags/l10n/ru.js b/apps/systemtags/l10n/ru.js
index e7c630222d4..1d258e23af7 100644
--- a/apps/systemtags/l10n/ru.js
+++ b/apps/systemtags/l10n/ru.js
@@ -48,7 +48,16 @@ OC.L10N.register(
"Collaborative tags" : "Метки совместной работы",
"Collaborative tagging functionality which shares tags among users." : "Совместная работа с метками файлов.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Совместная работа с метками файлов, предназначенная для групп пользователей. (Провайдерам с большим количеством клиентов рекомендуется отключить это приложение, так как метки являются общими).",
+ "Search or create collaborative tags" : "Поиск или создание совместных тегов",
+ "Collaborative tags …" : "Совместные теги ...",
+ "No tags to select, type to create a new tag" : "Нет тегов для выбора. Введите что-нибудь для создания нового тега",
"Failed to load tags" : "Не удалось загрузить метки",
+ "Failed to load selected tags" : "Не удалось загрузить выбранный тег",
+ "Failed to select tag" : "Не удалось выбрать тег",
+ "Failed to create tag" : "Не удалось создать тег",
+ "Failed to delete tag" : "Не удалось удалить тег",
+ "Failed to load last used tags" : "Не удалось загрузить последние использованные метки",
+ "Missing \"Content-Location\" header" : "Отсутствует заголовок «Content-Location»",
"Tagged files" : "Помеченные файлы",
"Select tags to filter by" : "Выберите метки для отбора",
"No tags found" : "Меток не найдено",
diff --git a/apps/systemtags/l10n/ru.json b/apps/systemtags/l10n/ru.json
index 73ca4b5c181..adf958f58e0 100644
--- a/apps/systemtags/l10n/ru.json
+++ b/apps/systemtags/l10n/ru.json
@@ -46,7 +46,16 @@
"Collaborative tags" : "Метки совместной работы",
"Collaborative tagging functionality which shares tags among users." : "Совместная работа с метками файлов.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Совместная работа с метками файлов, предназначенная для групп пользователей. (Провайдерам с большим количеством клиентов рекомендуется отключить это приложение, так как метки являются общими).",
+ "Search or create collaborative tags" : "Поиск или создание совместных тегов",
+ "Collaborative tags …" : "Совместные теги ...",
+ "No tags to select, type to create a new tag" : "Нет тегов для выбора. Введите что-нибудь для создания нового тега",
"Failed to load tags" : "Не удалось загрузить метки",
+ "Failed to load selected tags" : "Не удалось загрузить выбранный тег",
+ "Failed to select tag" : "Не удалось выбрать тег",
+ "Failed to create tag" : "Не удалось создать тег",
+ "Failed to delete tag" : "Не удалось удалить тег",
+ "Failed to load last used tags" : "Не удалось загрузить последние использованные метки",
+ "Missing \"Content-Location\" header" : "Отсутствует заголовок «Content-Location»",
"Tagged files" : "Помеченные файлы",
"Select tags to filter by" : "Выберите метки для отбора",
"No tags found" : "Меток не найдено",
diff --git a/apps/systemtags/l10n/uk.js b/apps/systemtags/l10n/uk.js
index 2f5aaf9e595..5ed202aa4c5 100644
--- a/apps/systemtags/l10n/uk.js
+++ b/apps/systemtags/l10n/uk.js
@@ -48,6 +48,16 @@ OC.L10N.register(
"Collaborative tags" : "Позначки для співпраці",
"Collaborative tagging functionality which shares tags among users." : "Функція спільного додавання тегів, яка ділиться тегами між користувачами.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Функція спільного додавання тегів, яка ділиться тегами між користувачами. Чудово підходить для команд. \n(Якщо ви є провайдером із установкою з кількома клієнтами, радимо вимкнути цю програму, оскільки теги є спільними.)",
+ "Search or create collaborative tags" : "Пошук або створення спільних тегів",
+ "Collaborative tags …" : "Спільні теги ...",
+ "No tags to select, type to create a new tag" : "Немає тегів для вибору, введіть, щоб створити новий тег",
+ "Failed to load tags" : "Не вдалося завантажити теги",
+ "Failed to load selected tags" : "Не вдалося завантажити вибрані теги",
+ "Failed to select tag" : "Не вдалося вибрати тег",
+ "Failed to create tag" : "Не вдалося створити тег",
+ "Failed to delete tag" : "Не вдалося видалити тег",
+ "Failed to load last used tags" : "Не вдалося завантажити останні теги",
+ "Missing \"Content-Location\" header" : "Відсутній заголовок \"Content-Location\"",
"Tagged files" : "Файли з позначками",
"Select tags to filter by" : "Фільтр вибору позначок за",
"No tags found" : "Не знайдено позначок",
diff --git a/apps/systemtags/l10n/uk.json b/apps/systemtags/l10n/uk.json
index 955884f27a0..c93c8862745 100644
--- a/apps/systemtags/l10n/uk.json
+++ b/apps/systemtags/l10n/uk.json
@@ -46,6 +46,16 @@
"Collaborative tags" : "Позначки для співпраці",
"Collaborative tagging functionality which shares tags among users." : "Функція спільного додавання тегів, яка ділиться тегами між користувачами.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Функція спільного додавання тегів, яка ділиться тегами між користувачами. Чудово підходить для команд. \n(Якщо ви є провайдером із установкою з кількома клієнтами, радимо вимкнути цю програму, оскільки теги є спільними.)",
+ "Search or create collaborative tags" : "Пошук або створення спільних тегів",
+ "Collaborative tags …" : "Спільні теги ...",
+ "No tags to select, type to create a new tag" : "Немає тегів для вибору, введіть, щоб створити новий тег",
+ "Failed to load tags" : "Не вдалося завантажити теги",
+ "Failed to load selected tags" : "Не вдалося завантажити вибрані теги",
+ "Failed to select tag" : "Не вдалося вибрати тег",
+ "Failed to create tag" : "Не вдалося створити тег",
+ "Failed to delete tag" : "Не вдалося видалити тег",
+ "Failed to load last used tags" : "Не вдалося завантажити останні теги",
+ "Missing \"Content-Location\" header" : "Відсутній заголовок \"Content-Location\"",
"Tagged files" : "Файли з позначками",
"Select tags to filter by" : "Фільтр вибору позначок за",
"No tags found" : "Не знайдено позначок",
diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css
index da9ad6e97de..ac7c67c8408 100644
--- a/apps/theming/css/default.css
+++ b/apps/theming/css/default.css
@@ -26,6 +26,9 @@
--color-success: #46ba61;
--color-success-rgb: 70,186,97;
--color-success-hover: #6ac780;
+ --color-info: #006aa3;
+ --color-info-rgb: 0,106,163;
+ --color-info-hover: #3287b5;
--color-loading-light: #cccccc;
--color-loading-dark: #444444;
--color-box-shadow-rgb: 77,77,77;
diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php
index cb4ed510068..0a4ac44afb6 100644
--- a/apps/theming/lib/Themes/DefaultTheme.php
+++ b/apps/theming/lib/Themes/DefaultTheme.php
@@ -147,6 +147,9 @@ class DefaultTheme implements ITheme {
'--color-success' => '#46ba61',
'--color-success-rgb' => join(',', $this->util->hexToRGB('#46ba61')),
'--color-success-hover' => $this->util->mix('#46ba61', $colorMainBackground, 60),
+ '--color-info' => '#006aa3',
+ '--color-info-rgb' => join(',', $this->util->hexToRGB('#006aa3')),
+ '--color-info-hover' => $this->util->mix('#006aa3', $colorMainBackground, 60),
// used for the icon loading animation
'--color-loading-light' => '#cccccc',
diff --git a/apps/theming/lib/Util.php b/apps/theming/lib/Util.php
index f5321dada67..789da394567 100644
--- a/apps/theming/lib/Util.php
+++ b/apps/theming/lib/Util.php
@@ -78,20 +78,20 @@ class Util {
* get color for on-page elements:
* theme color by default, grey if theme color is to bright
* @param string $color
- * @param bool $brightBackground
+ * @param ?bool $brightBackground
* @return string
*/
- public function elementColor($color, bool $brightBackground = true) {
+ public function elementColor($color, ?bool $brightBackground = null) {
$luminance = $this->calculateLuminance($color);
- if ($brightBackground && $luminance > 0.8) {
- // If the color is too bright in bright mode, we fall back to a darker gray
- return '#aaaaaa';
+ if ($brightBackground !== false && $luminance > 0.8) {
+ // If the color is too bright in bright mode, we fall back to a darkened color
+ return $this->darken($color, 30);
}
- if (!$brightBackground && $luminance < 0.2) {
- // If the color is too dark in dark mode, we fall back to a brighter gray
- return '#8c8c8c';
+ if ($brightBackground !== true && $luminance < 0.2) {
+ // If the color is too dark in dark mode, we fall back to a brightened color
+ return $this->lighten($color, 30);
}
return $color;
diff --git a/apps/theming/src/AdminTheming.vue b/apps/theming/src/AdminTheming.vue
index f922143e04d..a190dfb2a6a 100644
--- a/apps/theming/src/AdminTheming.vue
+++ b/apps/theming/src/AdminTheming.vue
@@ -299,7 +299,7 @@ export default {
/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css
But without the user variables. That way the admin can preview the render as guest*/
/* As guest, there is no user color color-background-plain */
- background-color: var(--color-primary-default, #0082c9);
+ background-color: var(--color-primary-element-default, #0082c9);
/* As guest, there is no user background (--image-background)
1. Empty background if defined
2. Else default background
diff --git a/apps/theming/src/components/BackgroundSettings.vue b/apps/theming/src/components/BackgroundSettings.vue
index 0d07071cb93..20c7ef622de 100644
--- a/apps/theming/src/components/BackgroundSettings.vue
+++ b/apps/theming/src/components/BackgroundSettings.vue
@@ -356,7 +356,7 @@ export default {
&:hover,
&:focus {
// Use theme color primary, see inline css variable in template
- border: 2px solid var(--border-color, var(--color-primary)) !important;
+ border: 2px solid var(--border-color, var(--color-primary-element)) !important;
}
// Icon
diff --git a/apps/theming/tests/CapabilitiesTest.php b/apps/theming/tests/CapabilitiesTest.php
index 1c968383d53..1a2d01d69d1 100644
--- a/apps/theming/tests/CapabilitiesTest.php
+++ b/apps/theming/tests/CapabilitiesTest.php
@@ -77,8 +77,8 @@ class CapabilitiesTest extends TestCase {
'slogan' => 'slogan',
'color' => '#FFFFFF',
'color-text' => '#000000',
- 'color-element' => '#aaaaaa',
- 'color-element-bright' => '#aaaaaa',
+ 'color-element' => '#b3b3b3',
+ 'color-element-bright' => '#b3b3b3',
'color-element-dark' => '#FFFFFF',
'logo' => 'http://absolute/logo',
'background' => 'http://absolute/background',
@@ -109,9 +109,9 @@ class CapabilitiesTest extends TestCase {
'slogan' => 'slogan3',
'color' => '#000000',
'color-text' => '#ffffff',
- 'color-element' => '#000000',
- 'color-element-bright' => '#000000',
- 'color-element-dark' => '#8c8c8c',
+ 'color-element' => '#4d4d4d',
+ 'color-element-bright' => '#4d4d4d',
+ 'color-element-dark' => '#4d4d4d',
'logo' => 'http://localhost/logo5',
'background' => '#000000',
'background-plain' => true,
@@ -125,9 +125,9 @@ class CapabilitiesTest extends TestCase {
'slogan' => 'slogan3',
'color' => '#000000',
'color-text' => '#ffffff',
- 'color-element' => '#000000',
- 'color-element-bright' => '#000000',
- 'color-element-dark' => '#8c8c8c',
+ 'color-element' => '#4d4d4d',
+ 'color-element-bright' => '#4d4d4d',
+ 'color-element-dark' => '#4d4d4d',
'logo' => 'http://localhost/logo5',
'background' => '#000000',
'background-plain' => true,
@@ -178,7 +178,7 @@ class CapabilitiesTest extends TestCase {
$this->util->expects($this->exactly(3))
->method('elementColor')
->with($color)
- ->willReturnCallback(static function (string $color, bool $brightBackground = true) use ($util) {
+ ->willReturnCallback(static function (string $color, ?bool $brightBackground = null) use ($util) {
return $util->elementColor($color, $brightBackground);
});
diff --git a/apps/theming/tests/UtilTest.php b/apps/theming/tests/UtilTest.php
index 789107d9fdf..137038acb98 100644
--- a/apps/theming/tests/UtilTest.php
+++ b/apps/theming/tests/UtilTest.php
@@ -105,19 +105,34 @@ class UtilTest extends TestCase {
$this->util->invertTextColor('');
}
- public function testElementColorDefault() {
+ public function testElementColorDefaultBlack() {
$elementColor = $this->util->elementColor("#000000");
- $this->assertEquals('#000000', $elementColor);
+ $this->assertEquals('#4d4d4d', $elementColor);
+ }
+
+ public function testElementColorDefaultWhite() {
+ $elementColor = $this->util->elementColor("#ffffff");
+ $this->assertEquals('#b3b3b3', $elementColor);
}
- public function testElementColorOnDarkBackground() {
+ public function testElementColorBlackOnDarkBackground() {
$elementColor = $this->util->elementColor("#000000", false);
- $this->assertEquals('#8c8c8c', $elementColor);
+ $this->assertEquals('#4d4d4d', $elementColor);
+ }
+
+ public function testElementColorBlackOnBrightBackground() {
+ $elementColor = $this->util->elementColor("#000000", true);
+ $this->assertEquals('#000000', $elementColor);
+ }
+
+ public function testElementColorWhiteOnBrightBackground() {
+ $elementColor = $this->util->elementColor('#ffffff', true);
+ $this->assertEquals('#b3b3b3', $elementColor);
}
- public function testElementColorOnBrightBackground() {
- $elementColor = $this->util->elementColor('#ffffff');
- $this->assertEquals('#aaaaaa', $elementColor);
+ public function testElementColorWhiteOnDarkBackground() {
+ $elementColor = $this->util->elementColor('#ffffff', false);
+ $this->assertEquals('#ffffff', $elementColor);
}
public function testGenerateRadioButtonWhite() {
diff --git a/apps/updatenotification/l10n/pl.js b/apps/updatenotification/l10n/pl.js
index 9dcccdf4caa..6e1e5d95eb6 100644
--- a/apps/updatenotification/l10n/pl.js
+++ b/apps/updatenotification/l10n/pl.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"Update channel:" : "Kanał aktualizacji:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Zawsze możesz zaktualizować do nowszej wersji. Ale nigdy nie możesz powrócić do wersji bardziej stabilnej.",
"Notify members of the following groups about available updates:" : "Powiadom członków następujących grup o dostępnych aktualizacjach:",
+ "No groups" : "Brak grup",
"Only notifications for app updates are available." : "Dostępne są tylko powiadomienia o aktualizacjach aplikacji.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny.",
"The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera.",
diff --git a/apps/updatenotification/l10n/pl.json b/apps/updatenotification/l10n/pl.json
index da31f47f9ca..9b1699a0c22 100644
--- a/apps/updatenotification/l10n/pl.json
+++ b/apps/updatenotification/l10n/pl.json
@@ -27,6 +27,7 @@
"Update channel:" : "Kanał aktualizacji:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Zawsze możesz zaktualizować do nowszej wersji. Ale nigdy nie możesz powrócić do wersji bardziej stabilnej.",
"Notify members of the following groups about available updates:" : "Powiadom członków następujących grup o dostępnych aktualizacjach:",
+ "No groups" : "Brak grup",
"Only notifications for app updates are available." : "Dostępne są tylko powiadomienia o aktualizacjach aplikacji.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny.",
"The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera.",
diff --git a/apps/updatenotification/l10n/uk.js b/apps/updatenotification/l10n/uk.js
index dc7d73f6f74..3bec9e001d7 100644
--- a/apps/updatenotification/l10n/uk.js
+++ b/apps/updatenotification/l10n/uk.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"Update channel:" : "Канал оновлення:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Ви завжди зможете перейти на нову версію, проте не можна буде повернутися на стабільну версію.",
"Notify members of the following groups about available updates:" : "Повідомляти учасників таких груп про доступні оновлення:",
+ "No groups" : "Без груп",
"Only notifications for app updates are available." : "Доступні лише сповіщення про оновлення програми.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Вибраний канал оновлення робить спеціальні сповіщення для сервера застарілими.",
"The selected update channel does not support updates of the server." : "Вибраний канал оновлення не підтримує оновлення сервера.",
diff --git a/apps/updatenotification/l10n/uk.json b/apps/updatenotification/l10n/uk.json
index 9df3b33d86e..18e9233d27b 100644
--- a/apps/updatenotification/l10n/uk.json
+++ b/apps/updatenotification/l10n/uk.json
@@ -27,6 +27,7 @@
"Update channel:" : "Канал оновлення:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Ви завжди зможете перейти на нову версію, проте не можна буде повернутися на стабільну версію.",
"Notify members of the following groups about available updates:" : "Повідомляти учасників таких груп про доступні оновлення:",
+ "No groups" : "Без груп",
"Only notifications for app updates are available." : "Доступні лише сповіщення про оновлення програми.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Вибраний канал оновлення робить спеціальні сповіщення для сервера застарілими.",
"The selected update channel does not support updates of the server." : "Вибраний канал оновлення не підтримує оновлення сервера.",
diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index 97971f66a7c..338d9350195 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -183,6 +183,25 @@ OC.L10N.register(
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию) или укажите атрибут LDAP/AD.",
"\"$home\" Placeholder Field" : "Поле-заполнитель \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменен значением указанного атрибута",
+ "User Profile Attributes" : "Атрибуты профиля пользователей",
+ "Phone Field" : "Поле телефона",
+ "User profile Phone will be set from the specified attribute" : "Телефон в профиле пользователя будет установлен из указанного атрибута",
+ "Website Field" : "Поле web-сайта",
+ "User profile Website will be set from the specified attribute" : "Web-сайт в профиле пользователя будет установлен из указанного атрибута",
+ "Address Field" : "Поле адреса",
+ "User profile Address will be set from the specified attribute" : "Адрес в профиле пользователя будет установлен из указанного атрибута",
+ "Twitter Field" : "Поле Twitter",
+ "User profile Twitter will be set from the specified attribute" : "Twitter в профиле пользователя будет установлен из указанного атрибута",
+ "Fediverse Field" : "Поле Федерации",
+ "User profile Fediverse will be set from the specified attribute" : "Федерация в профиле пользователя будет установлена из указанного атрибута",
+ "Organisation Field" : "Поле организации",
+ "User profile Organisation will be set from the specified attribute" : "Организация в профиле пользователя будет установлена из указанного атрибута",
+ "Role Field" : "Поле роли",
+ "User profile Role will be set from the specified attribute" : "Роль в профиле пользователя будет установлена из указанного атрибута",
+ "Headline Field" : "Поле заголовка",
+ "User profile Headline will be set from the specified attribute" : "Заголовок в профиле пользователя будет установлен из указанного атрибута",
+ "Biography Field" : "Поле биографии",
+ "User profile Biography will be set from the specified attribute" : "Биография в профиле пользователя будет установлена из указанного атрибута",
"Internal Username" : "Внутреннее имя пользователя",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "По умолчанию внутреннее имя пользователя будет создано на основе атрибута UUID. Это гарантирует, что имя пользователя будет уникальным и символы не нужно будет преобразовывать. Внутреннее имя пользователя имеет ограничение – разрешены только эти символы: [a-zA-Z0-9_.@-]. Другие символы заменяются их ASCII-кодами или просто опускаются. При совпадениях число будет добавлено/увеличено. Внутреннее имя пользователя используется для внутренней идентификации пользователя. Оно также является именем по умолчанию для домашней папки пользователя. Оно также является частью удалённых URL-адресов, например, для всех служб DAV. С помощью этого параметра можно переопределить поведение по умолчанию. Изменения будут иметь силу только для новых сопоставленных (добавленных) пользователей LDAP. Оставьте этот параметр пустым для поведения по умолчанию.",
"Internal Username Attribute:" : "Атрибут для внутреннего имени:",
diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json
index be7e9783f68..5dd858e3f0b 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -181,6 +181,25 @@
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию) или укажите атрибут LDAP/AD.",
"\"$home\" Placeholder Field" : "Поле-заполнитель \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменен значением указанного атрибута",
+ "User Profile Attributes" : "Атрибуты профиля пользователей",
+ "Phone Field" : "Поле телефона",
+ "User profile Phone will be set from the specified attribute" : "Телефон в профиле пользователя будет установлен из указанного атрибута",
+ "Website Field" : "Поле web-сайта",
+ "User profile Website will be set from the specified attribute" : "Web-сайт в профиле пользователя будет установлен из указанного атрибута",
+ "Address Field" : "Поле адреса",
+ "User profile Address will be set from the specified attribute" : "Адрес в профиле пользователя будет установлен из указанного атрибута",
+ "Twitter Field" : "Поле Twitter",
+ "User profile Twitter will be set from the specified attribute" : "Twitter в профиле пользователя будет установлен из указанного атрибута",
+ "Fediverse Field" : "Поле Федерации",
+ "User profile Fediverse will be set from the specified attribute" : "Федерация в профиле пользователя будет установлена из указанного атрибута",
+ "Organisation Field" : "Поле организации",
+ "User profile Organisation will be set from the specified attribute" : "Организация в профиле пользователя будет установлена из указанного атрибута",
+ "Role Field" : "Поле роли",
+ "User profile Role will be set from the specified attribute" : "Роль в профиле пользователя будет установлена из указанного атрибута",
+ "Headline Field" : "Поле заголовка",
+ "User profile Headline will be set from the specified attribute" : "Заголовок в профиле пользователя будет установлен из указанного атрибута",
+ "Biography Field" : "Поле биографии",
+ "User profile Biography will be set from the specified attribute" : "Биография в профиле пользователя будет установлена из указанного атрибута",
"Internal Username" : "Внутреннее имя пользователя",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "По умолчанию внутреннее имя пользователя будет создано на основе атрибута UUID. Это гарантирует, что имя пользователя будет уникальным и символы не нужно будет преобразовывать. Внутреннее имя пользователя имеет ограничение – разрешены только эти символы: [a-zA-Z0-9_.@-]. Другие символы заменяются их ASCII-кодами или просто опускаются. При совпадениях число будет добавлено/увеличено. Внутреннее имя пользователя используется для внутренней идентификации пользователя. Оно также является именем по умолчанию для домашней папки пользователя. Оно также является частью удалённых URL-адресов, например, для всех служб DAV. С помощью этого параметра можно переопределить поведение по умолчанию. Изменения будут иметь силу только для новых сопоставленных (добавленных) пользователей LDAP. Оставьте этот параметр пустым для поведения по умолчанию.",
"Internal Username Attribute:" : "Атрибут для внутреннего имени:",
diff --git a/apps/user_status/l10n/uk.js b/apps/user_status/l10n/uk.js
index c62a8b8287a..30a6b7787ff 100644
--- a/apps/user_status/l10n/uk.js
+++ b/apps/user_status/l10n/uk.js
@@ -12,13 +12,20 @@ OC.L10N.register(
"View profile" : "Перегляд профілю",
"Clear status after" : "Очистити статус після",
"What is your status?" : "Який твій статус?",
+ "Previously set" : "Раніше встановлений",
+ "Reset status" : "Скинути статус",
"Set status" : "Встановити статус",
"Online status" : "Статус онлайну",
"Status message" : "Повідомлення про статус",
+ "Your status was set automatically" : "Ваш статус встановлено автоматично",
"Clear status message" : "Очистити повідомлення про стан",
"Set status message" : "Встановити повідомлення про стан",
+ "Reset status to \"{icon} {message}\"" : "Скинути статус на \"{icon} {message}\"",
+ "Reset status to \"{message}\"" : "Скинути статус на \"{message}\"",
+ "Reset status to \"{icon}\"" : "Скинути статус на \"{icon}\"",
"There was an error saving the status" : "Під час збереження статусу сталася помилка",
"There was an error clearing the status" : "Під час очищення статусу сталася помилка",
+ "There was an error reverting the status" : "Виникла помилка при скиданні статусу",
"No recent status changes" : "Останніх змін статусу немає",
"Away" : "Піти",
"Do not disturb" : "Не турбувати",
diff --git a/apps/user_status/l10n/uk.json b/apps/user_status/l10n/uk.json
index d9b7ab1a5e8..ae57b3385d3 100644
--- a/apps/user_status/l10n/uk.json
+++ b/apps/user_status/l10n/uk.json
@@ -10,13 +10,20 @@
"View profile" : "Перегляд профілю",
"Clear status after" : "Очистити статус після",
"What is your status?" : "Який твій статус?",
+ "Previously set" : "Раніше встановлений",
+ "Reset status" : "Скинути статус",
"Set status" : "Встановити статус",
"Online status" : "Статус онлайну",
"Status message" : "Повідомлення про статус",
+ "Your status was set automatically" : "Ваш статус встановлено автоматично",
"Clear status message" : "Очистити повідомлення про стан",
"Set status message" : "Встановити повідомлення про стан",
+ "Reset status to \"{icon} {message}\"" : "Скинути статус на \"{icon} {message}\"",
+ "Reset status to \"{message}\"" : "Скинути статус на \"{message}\"",
+ "Reset status to \"{icon}\"" : "Скинути статус на \"{icon}\"",
"There was an error saving the status" : "Під час збереження статусу сталася помилка",
"There was an error clearing the status" : "Під час очищення статусу сталася помилка",
+ "There was an error reverting the status" : "Виникла помилка при скиданні статусу",
"No recent status changes" : "Останніх змін статусу немає",
"Away" : "Піти",
"Do not disturb" : "Не турбувати",
diff --git a/apps/user_status/lib/Controller/UserStatusController.php b/apps/user_status/lib/Controller/UserStatusController.php
index aded923d07f..2d96cd90a40 100644
--- a/apps/user_status/lib/Controller/UserStatusController.php
+++ b/apps/user_status/lib/Controller/UserStatusController.php
@@ -169,16 +169,6 @@ class UserStatusController extends OCSController {
*
* @return DataResponse
*/
- public function clearStatus(): DataResponse {
- $this->service->clearStatus($this->userId);
- return new DataResponse([]);
- }
-
- /**
- * @NoAdminRequired
- *
- * @return DataResponse
- */
public function clearMessage(): DataResponse {
$this->service->clearMessage($this->userId);
return new DataResponse([]);
diff --git a/apps/user_status/src/components/CustomMessageInput.vue b/apps/user_status/src/components/CustomMessageInput.vue
index 4fd649dc166..5e313c97428 100644
--- a/apps/user_status/src/components/CustomMessageInput.vue
+++ b/apps/user_status/src/components/CustomMessageInput.vue
@@ -19,9 +19,11 @@
-
-->
<template>
- <div class="custom-input">
+ <div class="custom-input" role="group">
<NcEmojiPicker container=".custom-input" @select="setIcon">
- <NcButton class="custom-input__emoji-button" type="tertiary">
+ <NcButton type="tertiary"
+ class="custom-input__emoji-button"
+ :aria-label="t('user_status', 'Emoji for your status message')">
{{ visibleIcon }}
</NcButton>
</NcEmojiPicker>
diff --git a/apps/user_status/src/components/OnlineStatusSelect.vue b/apps/user_status/src/components/OnlineStatusSelect.vue
index df7d1377ee3..64f0b8e02df 100644
--- a/apps/user_status/src/components/OnlineStatusSelect.vue
+++ b/apps/user_status/src/components/OnlineStatusSelect.vue
@@ -23,7 +23,7 @@
<div class="user-status-online-select">
<input :id="id"
:checked="checked"
- class="user-status-online-select__input"
+ class="hidden-visually user-status-online-select__input"
type="radio"
name="user-status-online"
@change="onChange">
@@ -82,16 +82,6 @@ $icon-size: 24px;
$label-padding: 8px;
.user-status-online-select {
- // Inputs are here for keyboard navigation, they are not visually visible
- &__input {
- position: absolute;
- top: auto;
- left: -10000px;
- overflow: hidden;
- width: 1px;
- height: 1px;
- }
-
&__label {
position: relative;
display: block;
@@ -122,7 +112,7 @@ $label-padding: 8px;
&__input:checked + &__label,
&__input:focus + &__label,
&__label:hover {
- border-color: var(--color-primary);
+ border-color: var(--color-primary-element);
}
&__label:active {
diff --git a/apps/user_status/src/components/PredefinedStatus.vue b/apps/user_status/src/components/PredefinedStatus.vue
index 2775051439c..69cf108c7ad 100644
--- a/apps/user_status/src/components/PredefinedStatus.vue
+++ b/apps/user_status/src/components/PredefinedStatus.vue
@@ -19,21 +19,25 @@
-
-->
<template>
- <div class="predefined-status"
- tabindex="0"
- @keyup.enter="select"
- @keyup.space="select"
- @click="select">
- <span aria-hidden="true" class="predefined-status__icon">
- {{ icon }}
- </span>
- <span class="predefined-status__message">
- {{ message }}
- </span>
- <span class="predefined-status__clear-at">
- {{ clearAt | clearAtFilter }}
- </span>
- </div>
+ <li class="predefined-status">
+ <input :id="id"
+ class="hidden-visually predefined-status__input"
+ type="radio"
+ name="predefined-status"
+ :checked="selected"
+ @change="select">
+ <label class="predefined-status__label" :for="id">
+ <span aria-hidden="true" class="predefined-status__label--icon">
+ {{ icon }}
+ </span>
+ <span class="predefined-status__label--message">
+ {{ message }}
+ </span>
+ <span class="predefined-status__label--clear-at">
+ {{ clearAt | clearAtFilter }}
+ </span>
+ </label>
+ </li>
</template>
<script>
@@ -62,6 +66,16 @@ export default {
required: false,
default: null,
},
+ selected: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+ },
+ computed: {
+ id() {
+ return `user-status-predefined-status-${this.messageId}`
+ },
},
methods: {
/**
@@ -76,39 +90,42 @@ export default {
<style lang="scss" scoped>
.predefined-status {
- display: flex;
- flex-wrap: nowrap;
- justify-content: flex-start;
- flex-basis: 100%;
- border-radius: var(--border-radius);
- align-items: center;
- min-height: 44px;
+ &__label {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ flex-basis: 100%;
+ border-radius: var(--border-radius);
+ align-items: center;
+ min-height: 44px;
- &:hover,
- &:focus {
- background-color: var(--color-background-hover);
- }
+ &--icon {
+ flex-basis: 40px;
+ text-align: center;
+ }
- &:active{
- background-color: var(--color-background-dark);
- }
+ &--message {
+ font-weight: bold;
+ padding: 0 6px;
+ }
- &__icon {
- flex-basis: 40px;
- text-align: center;
- }
+ &--clear-at {
+ color: var(--color-text-maxcontrast);
- &__message {
- font-weight: bold;
- padding: 0 6px;
+ &::before {
+ content: ' – ';
+ }
+ }
}
- &__clear-at {
- color: var(--color-text-maxcontrast);
+ &__input:checked + &__label,
+ &__input:focus + &__label,
+ &__label:hover {
+ background-color: var(--color-background-hover);
+ }
- &::before {
- content: ' – ';
- }
+ &__label:active {
+ background-color: var(--color-background-dark);
}
}
</style>
diff --git a/apps/user_status/src/components/PredefinedStatusesList.vue b/apps/user_status/src/components/PredefinedStatusesList.vue
index a3ac3c68677..65e8eabad82 100644
--- a/apps/user_status/src/components/PredefinedStatusesList.vue
+++ b/apps/user_status/src/components/PredefinedStatusesList.vue
@@ -20,16 +20,19 @@
-->
<template>
- <div v-if="statusesHaveLoaded"
- class="predefined-statuses-list">
+ <ul v-if="statusesHaveLoaded"
+ class="predefined-statuses-list"
+ role="radiogroup"
+ :aria-label="t('user_status', 'Predefined statuses')">
<PredefinedStatus v-for="status in predefinedStatuses"
:key="status.id"
:message-id="status.id"
:icon="status.icon"
:message="status.message"
:clear-at="status.clearAt"
+ :selected="!isCustomStatus && lastSelected === status.id"
@select="selectStatus(status)" />
- </div>
+ </ul>
<div v-else
class="predefined-statuses-list">
<div class="icon icon-loading-small" />
@@ -45,6 +48,18 @@ export default {
components: {
PredefinedStatus,
},
+ props: {
+ /** If the current selected status is a custom one */
+ isCustomStatus: {
+ type: Boolean,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ lastSelected: null,
+ }
+ },
computed: {
...mapState({
predefinedStatuses: state => state.predefinedStatuses.predefinedStatuses,
@@ -65,6 +80,7 @@ export default {
* @param {object} status The selected status
*/
selectStatus(status) {
+ this.lastSelected = status.id
this.$emit('select-status', status)
},
},
diff --git a/apps/user_status/src/components/SetStatusModal.vue b/apps/user_status/src/components/SetStatusModal.vue
index 73e07573e5c..4eba6c70352 100644
--- a/apps/user_status/src/components/SetStatusModal.vue
+++ b/apps/user_status/src/components/SetStatusModal.vue
@@ -28,7 +28,9 @@
<div class="set-status-modal__header">
<h2>{{ $t('user_status', 'Online status') }}</h2>
</div>
- <div class="set-status-modal__online-status">
+ <div class="set-status-modal__online-status"
+ role="radiogroup"
+ :aria-label="$t('user_status', 'Online status')">
<OnlineStatusSelect v-for="status in statuses"
:key="status.type"
v-bind="status"
@@ -56,7 +58,7 @@
:icon="backupIcon"
:message="backupMessage"
@select="revertBackupFromServer" />
- <PredefinedStatusesList @select-status="selectPredefinedMessage" />
+ <PredefinedStatusesList :is-custom-status="isCustomStatus" @select-status="selectPredefinedMessage" />
<ClearAtSelect :clear-at="clearAt"
@select-clear-at="setClearAt" />
<div class="status-buttons">
@@ -109,6 +111,7 @@ export default {
return {
clearAt: null,
editedMessage: '',
+ isCustomStatus: true,
isSavingStatus: false,
statuses: getAllStatusOptions(),
}
@@ -189,6 +192,7 @@ export default {
* @param {string} icon The new icon
*/
setIcon(icon) {
+ this.isCustomStatus = true
this.$store.dispatch('setCustomMessage', {
message: this.message,
icon,
@@ -204,6 +208,7 @@ export default {
* @param {string} message The new message
*/
setMessage(message) {
+ this.isCustomStatus = true
this.editedMessage = message
},
/**
@@ -220,6 +225,7 @@ export default {
* @param {object} status The predefined status object
*/
selectPredefinedMessage(status) {
+ this.isCustomStatus = false
this.clearAt = status.clearAt
this.$store.dispatch('setPredefinedMessage', {
messageId: status.id,
diff --git a/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php b/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php
index e4d2ab61eee..ed0919eb9a5 100644
--- a/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php
+++ b/apps/user_status/tests/Unit/Controller/UserStatusControllerTest.php
@@ -326,15 +326,6 @@ class UserStatusControllerTest extends TestCase {
];
}
- public function testClearStatus(): void {
- $this->service->expects($this->once())
- ->method('clearStatus')
- ->with('john.doe');
-
- $response = $this->controller->clearStatus();
- $this->assertEquals([], $response->getData());
- }
-
public function testClearMessage(): void {
$this->service->expects($this->once())
->method('clearMessage')
diff --git a/apps/weather_status/l10n/zh_CN.js b/apps/weather_status/l10n/zh_CN.js
index 4bd0eefc301..b970d757dab 100644
--- a/apps/weather_status/l10n/zh_CN.js
+++ b/apps/weather_status/l10n/zh_CN.js
@@ -7,20 +7,32 @@ OC.L10N.register(
"Error" : "错误",
"Weather status" : "天气状况",
"Weather status in your dashboard" : "仪表盘中的天气状况",
- "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘应用程序中集成的天气状况。\n用户可以自动或手动确定位置。然后会显示 6 小时的预报。\n此状况也可以集成到其他地方,例如日历应用。",
+ "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘应用程序中集成的天气状况。\n用户可以自动或手动确定位置。然后会显示 6 小时的预报。\n此天气状况也可以集成到其他地方,例如日历应用。",
"Detect location" : "检测地点",
"Set custom address" : "自定义地址",
"Favorites" : "收藏",
- "{temperature} {unit} clear sky later today" : "今天日晚些时候{temperature} {unit}晴天",
- "{temperature} {unit} clear sky" : "{temperature} {unit}晴天",
- "{temperature} {unit} cloudy later today" : "今日晚些时候{temperature} {unit}多云",
- "{temperature} {unit} cloudy" : "{temperature} {unit}多云",
- "{temperature} {unit} fair weather later today" : "今日晚些时候天气还行{temperature} {unit}",
- "{temperature} {unit} fair weather" : "{temperature} {unit}天气还行",
- "{temperature} {unit} partly cloudy later today" : "今日晚些时候{temperature} {unit}局部多云",
- "{temperature} {unit} partly cloudy" : "{temperature} {unit}局部多云",
- "{temperature} {unit} foggy later today" : "今日晚些时候{temperature} {unit}有雾",
- "{temperature} {unit} foggy" : "{temperature} {unit}雾",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日晚些时候晴朗",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 晴朗",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日晚些时候多云",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 多云",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日晚些时候天气不错",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 天气不错",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日晚些时候局部多云",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部多云",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日晚些时候有雾",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有雾",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日晚些时候有零星小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 零星小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日晚些时候有降雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 降雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日晚些时候有强降雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 强降雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日晚些时候有阵雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 阵雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日晚些时候有零星阵雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 零星阵雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日晚些时候有强阵雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 强阵雨",
"More weather for {adr}" : "{adr} 的更多天气信息",
"Loading weather" : "正在加载天气",
"Remove from favorites" : "从收藏夹移除",
diff --git a/apps/weather_status/l10n/zh_CN.json b/apps/weather_status/l10n/zh_CN.json
index 1cb72c4015b..87f9ee95916 100644
--- a/apps/weather_status/l10n/zh_CN.json
+++ b/apps/weather_status/l10n/zh_CN.json
@@ -5,20 +5,32 @@
"Error" : "错误",
"Weather status" : "天气状况",
"Weather status in your dashboard" : "仪表盘中的天气状况",
- "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘应用程序中集成的天气状况。\n用户可以自动或手动确定位置。然后会显示 6 小时的预报。\n此状况也可以集成到其他地方,例如日历应用。",
+ "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘应用程序中集成的天气状况。\n用户可以自动或手动确定位置。然后会显示 6 小时的预报。\n此天气状况也可以集成到其他地方,例如日历应用。",
"Detect location" : "检测地点",
"Set custom address" : "自定义地址",
"Favorites" : "收藏",
- "{temperature} {unit} clear sky later today" : "今天日晚些时候{temperature} {unit}晴天",
- "{temperature} {unit} clear sky" : "{temperature} {unit}晴天",
- "{temperature} {unit} cloudy later today" : "今日晚些时候{temperature} {unit}多云",
- "{temperature} {unit} cloudy" : "{temperature} {unit}多云",
- "{temperature} {unit} fair weather later today" : "今日晚些时候天气还行{temperature} {unit}",
- "{temperature} {unit} fair weather" : "{temperature} {unit}天气还行",
- "{temperature} {unit} partly cloudy later today" : "今日晚些时候{temperature} {unit}局部多云",
- "{temperature} {unit} partly cloudy" : "{temperature} {unit}局部多云",
- "{temperature} {unit} foggy later today" : "今日晚些时候{temperature} {unit}有雾",
- "{temperature} {unit} foggy" : "{temperature} {unit}雾",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日晚些时候晴朗",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 晴朗",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日晚些时候多云",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 多云",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日晚些时候天气不错",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 天气不错",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日晚些时候局部多云",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部多云",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日晚些时候有雾",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有雾",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日晚些时候有零星小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 零星小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日晚些时候有降雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 降雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日晚些时候有强降雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 强降雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日晚些时候有阵雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 阵雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日晚些时候有零星阵雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 零星阵雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日晚些时候有强阵雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 强阵雨",
"More weather for {adr}" : "{adr} 的更多天气信息",
"Loading weather" : "正在加载天气",
"Remove from favorites" : "从收藏夹移除",
diff --git a/apps/workflowengine/l10n/bg.js b/apps/workflowengine/l10n/bg.js
index a8b3c39e4c4..de1aa6efed3 100644
--- a/apps/workflowengine/l10n/bg.js
+++ b/apps/workflowengine/l10n/bg.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Персонализиран mimetype",
"Please enter a valid time span" : "Моля, въведете валиден период от време",
"Select a request URL" : "Избор на URL адрес за заявка",
- "Predefined URLs" : "Предефинирани URL-и",
"Files WebDAV" : "Файлове WebDAV",
- "Others" : "Други",
"Custom URL" : "Персонализиран URL адрес",
"Select a user agent" : "Избор на потребителски агент",
"Android client" : "Android клиент",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Избор на етикет",
"No results" : "Няма резултати",
"%s (invisible)" : "%s (невидим)",
- "%s (restricted)" : "%s (ограничен)"
+ "%s (restricted)" : "%s (ограничен)",
+ "Predefined URLs" : "Предефинирани URL-и",
+ "Others" : "Други"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/bg.json b/apps/workflowengine/l10n/bg.json
index 01c0188d21e..4c8767b9c01 100644
--- a/apps/workflowengine/l10n/bg.json
+++ b/apps/workflowengine/l10n/bg.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Персонализиран mimetype",
"Please enter a valid time span" : "Моля, въведете валиден период от време",
"Select a request URL" : "Избор на URL адрес за заявка",
- "Predefined URLs" : "Предефинирани URL-и",
"Files WebDAV" : "Файлове WebDAV",
- "Others" : "Други",
"Custom URL" : "Персонализиран URL адрес",
"Select a user agent" : "Избор на потребителски агент",
"Android client" : "Android клиент",
@@ -113,6 +111,8 @@
"Select a tag" : "Избор на етикет",
"No results" : "Няма резултати",
"%s (invisible)" : "%s (невидим)",
- "%s (restricted)" : "%s (ограничен)"
+ "%s (restricted)" : "%s (ограничен)",
+ "Predefined URLs" : "Предефинирани URL-и",
+ "Others" : "Други"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ca.js b/apps/workflowengine/l10n/ca.js
index 58a8b997337..8971c299481 100644
--- a/apps/workflowengine/l10n/ca.js
+++ b/apps/workflowengine/l10n/ca.js
@@ -55,9 +55,7 @@ OC.L10N.register(
"Custom mimetype" : "Tipus mime personalitzat",
"Please enter a valid time span" : "Introduïu un interval de temps vàlid",
"Select a request URL" : "Seleccioneu un URL de petició",
- "Predefined URLs" : "URLs predefinits",
"Files WebDAV" : "Fitxers WebDAV",
- "Others" : "Altres",
"Custom URL" : "URL personalitzat",
"Select a user agent" : "Seleccioneu un agent d'usuari",
"Android client" : "Client android",
@@ -112,6 +110,8 @@ OC.L10N.register(
"Select a tag" : "Seleccioneu una etiqueta",
"No results" : "No hi ha resultats",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restringit)"
+ "%s (restricted)" : "%s (restringit)",
+ "Predefined URLs" : "URLs predefinits",
+ "Others" : "Altres"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/ca.json b/apps/workflowengine/l10n/ca.json
index 2c8a370888d..a9d522e28f2 100644
--- a/apps/workflowengine/l10n/ca.json
+++ b/apps/workflowengine/l10n/ca.json
@@ -53,9 +53,7 @@
"Custom mimetype" : "Tipus mime personalitzat",
"Please enter a valid time span" : "Introduïu un interval de temps vàlid",
"Select a request URL" : "Seleccioneu un URL de petició",
- "Predefined URLs" : "URLs predefinits",
"Files WebDAV" : "Fitxers WebDAV",
- "Others" : "Altres",
"Custom URL" : "URL personalitzat",
"Select a user agent" : "Seleccioneu un agent d'usuari",
"Android client" : "Client android",
@@ -110,6 +108,8 @@
"Select a tag" : "Seleccioneu una etiqueta",
"No results" : "No hi ha resultats",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restringit)"
+ "%s (restricted)" : "%s (restringit)",
+ "Predefined URLs" : "URLs predefinits",
+ "Others" : "Altres"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js
index b39a2cb1f9d..a659a1fc3e7 100644
--- a/apps/workflowengine/l10n/cs.js
+++ b/apps/workflowengine/l10n/cs.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Nextcloud engine pro pracovní postupy",
"Select a filter" : "Vybrat filtr",
"Select a comparator" : "Vyberte porovnání",
+ "Remove filter" : "Odebrat filtr",
"Select a file type" : "Vybrat typ souboru",
"e.g. httpd/unix-directory" : "např. httpd/unix-directory",
"Folder" : "Složka",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "Uživatelsky určený mimetyp",
"Please enter a valid time span" : "Zadejte platné časové rozmezí",
"Select a request URL" : "Vyberte URL požadavku",
- "Predefined URLs" : "Předdefinované URL",
"Files WebDAV" : "Soubory WebDAV",
- "Others" : "Ostatní",
"Custom URL" : "Uživatelsky určená URL",
"Select a user agent" : "Vyberte user agent",
"Android client" : "Android klient",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "Přidat nový tok",
"When" : "Kdy",
"and" : "a",
+ "Add a new filter" : "Přidat nový filtr",
"Cancel" : "Storno",
"Delete" : "Smazat",
"The configuration is invalid" : "Nastavení není platné",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "Vybrat štítek",
"No results" : "Žádné výsledky",
"%s (invisible)" : "%s (neviditelné)",
- "%s (restricted)" : "%s (omezeno)"
+ "%s (restricted)" : "%s (omezeno)",
+ "Predefined URLs" : "Předdefinované URL",
+ "Others" : "Ostatní"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json
index 003d3455bbf..b216fe7360c 100644
--- a/apps/workflowengine/l10n/cs.json
+++ b/apps/workflowengine/l10n/cs.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Nextcloud engine pro pracovní postupy",
"Select a filter" : "Vybrat filtr",
"Select a comparator" : "Vyberte porovnání",
+ "Remove filter" : "Odebrat filtr",
"Select a file type" : "Vybrat typ souboru",
"e.g. httpd/unix-directory" : "např. httpd/unix-directory",
"Folder" : "Složka",
@@ -56,9 +57,7 @@
"Custom mimetype" : "Uživatelsky určený mimetyp",
"Please enter a valid time span" : "Zadejte platné časové rozmezí",
"Select a request URL" : "Vyberte URL požadavku",
- "Predefined URLs" : "Předdefinované URL",
"Files WebDAV" : "Soubory WebDAV",
- "Others" : "Ostatní",
"Custom URL" : "Uživatelsky určená URL",
"Select a user agent" : "Vyberte user agent",
"Android client" : "Android klient",
@@ -70,6 +69,7 @@
"Add new flow" : "Přidat nový tok",
"When" : "Kdy",
"and" : "a",
+ "Add a new filter" : "Přidat nový filtr",
"Cancel" : "Storno",
"Delete" : "Smazat",
"The configuration is invalid" : "Nastavení není platné",
@@ -113,6 +113,8 @@
"Select a tag" : "Vybrat štítek",
"No results" : "Žádné výsledky",
"%s (invisible)" : "%s (neviditelné)",
- "%s (restricted)" : "%s (omezeno)"
+ "%s (restricted)" : "%s (omezeno)",
+ "Predefined URLs" : "Předdefinované URL",
+ "Others" : "Ostatní"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/da.js b/apps/workflowengine/l10n/da.js
index 80ec83c6ea7..5261cbdef5a 100644
--- a/apps/workflowengine/l10n/da.js
+++ b/apps/workflowengine/l10n/da.js
@@ -23,9 +23,7 @@ OC.L10N.register(
"Flow" : "Flow",
"Folder" : "Mappe",
"Images" : "Billeder",
- "Predefined URLs" : "Foruddefineret URLer",
"Files WebDAV" : "Fil WebDAV",
- "Others" : "Andre",
"Android client" : "Android klient",
"iOS client" : "iOS klient",
"Desktop client" : "Dekstop klient",
@@ -64,6 +62,8 @@ OC.L10N.register(
"is not member of" : "er ikke medlem af",
"No results" : "Ingen resultater",
"%s (invisible)" : "%s (usynlig)",
- "%s (restricted)" : "%s (begrænset)"
+ "%s (restricted)" : "%s (begrænset)",
+ "Predefined URLs" : "Foruddefineret URLer",
+ "Others" : "Andre"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/da.json b/apps/workflowengine/l10n/da.json
index 3ff57dc34dd..ebb9ebf7ff6 100644
--- a/apps/workflowengine/l10n/da.json
+++ b/apps/workflowengine/l10n/da.json
@@ -21,9 +21,7 @@
"Flow" : "Flow",
"Folder" : "Mappe",
"Images" : "Billeder",
- "Predefined URLs" : "Foruddefineret URLer",
"Files WebDAV" : "Fil WebDAV",
- "Others" : "Andre",
"Android client" : "Android klient",
"iOS client" : "iOS klient",
"Desktop client" : "Dekstop klient",
@@ -62,6 +60,8 @@
"is not member of" : "er ikke medlem af",
"No results" : "Ingen resultater",
"%s (invisible)" : "%s (usynlig)",
- "%s (restricted)" : "%s (begrænset)"
+ "%s (restricted)" : "%s (begrænset)",
+ "Predefined URLs" : "Foruddefineret URLer",
+ "Others" : "Andre"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/de.js b/apps/workflowengine/l10n/de.js
index 6c158908a92..7a425c40062 100644
--- a/apps/workflowengine/l10n/de.js
+++ b/apps/workflowengine/l10n/de.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Benutzerdefinierter Mime-Typ",
"Please enter a valid time span" : "Bitte einen gültigen Zeitraum angeben",
"Select a request URL" : "Wähle eine Anforderungs-URL aus",
- "Predefined URLs" : "Vordefinierte URLs",
"Files WebDAV" : "WebDAV für Dateien",
- "Others" : "Andere",
"Custom URL" : "Benutzerdefinierte URL",
"Select a user agent" : "User-Agenten auswählen",
"Android client" : "Android-Client",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Schlagwort auswählen",
"No results" : "Keine Ergebnisse",
"%s (invisible)" : "%s(unsichtbar)",
- "%s (restricted)" : "%s (eingeschränkt)"
+ "%s (restricted)" : "%s (eingeschränkt)",
+ "Predefined URLs" : "Vordefinierte URLs",
+ "Others" : "Andere"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/de.json b/apps/workflowengine/l10n/de.json
index 6980e70ae0e..f1b7b954139 100644
--- a/apps/workflowengine/l10n/de.json
+++ b/apps/workflowengine/l10n/de.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Benutzerdefinierter Mime-Typ",
"Please enter a valid time span" : "Bitte einen gültigen Zeitraum angeben",
"Select a request URL" : "Wähle eine Anforderungs-URL aus",
- "Predefined URLs" : "Vordefinierte URLs",
"Files WebDAV" : "WebDAV für Dateien",
- "Others" : "Andere",
"Custom URL" : "Benutzerdefinierte URL",
"Select a user agent" : "User-Agenten auswählen",
"Android client" : "Android-Client",
@@ -113,6 +111,8 @@
"Select a tag" : "Schlagwort auswählen",
"No results" : "Keine Ergebnisse",
"%s (invisible)" : "%s(unsichtbar)",
- "%s (restricted)" : "%s (eingeschränkt)"
+ "%s (restricted)" : "%s (eingeschränkt)",
+ "Predefined URLs" : "Vordefinierte URLs",
+ "Others" : "Andere"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/de_DE.js b/apps/workflowengine/l10n/de_DE.js
index 57a7d678227..99a3a8e3a85 100644
--- a/apps/workflowengine/l10n/de_DE.js
+++ b/apps/workflowengine/l10n/de_DE.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Nextcloud Arbeitsablauf-Engine",
"Select a filter" : "Filter wählen",
"Select a comparator" : "Wählen Sie einen Komparator",
+ "Remove filter" : "Filter entfernen",
"Select a file type" : "Dateityp auswählen",
"e.g. httpd/unix-directory" : "z.B. httpd/unix-directory",
"Folder" : "Ordner",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "Benutzerdefinierter MIME-Typ",
"Please enter a valid time span" : "Bitte einen gültigen Zeitraum angeben",
"Select a request URL" : "Wählen Sie eine Anforderungs-URL aus",
- "Predefined URLs" : "Vordefinierte URLs",
"Files WebDAV" : "WebDAV für Dateien",
- "Others" : "Andere",
"Custom URL" : "Benutzerdefinierte URL",
"Select a user agent" : "User-Agenten wählen",
"Android client" : "Android-Client",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "Neuen Ablauf hinzufügen",
"When" : "Wenn",
"and" : "und",
+ "Add a new filter" : "Neuen Filter hinzufügen",
"Cancel" : "Abbrechen",
"Delete" : "Löschen",
"The configuration is invalid" : "Die Konfiguration ist ungültig",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "Schlagwort auswählen",
"No results" : "Keine Ergebnisse",
"%s (invisible)" : "%s (unsichtbar)",
- "%s (restricted)" : "%s (eingeschränkt)"
+ "%s (restricted)" : "%s (eingeschränkt)",
+ "Predefined URLs" : "Vordefinierte URLs",
+ "Others" : "Andere"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/de_DE.json b/apps/workflowengine/l10n/de_DE.json
index 230a02766aa..faabc161cb1 100644
--- a/apps/workflowengine/l10n/de_DE.json
+++ b/apps/workflowengine/l10n/de_DE.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Nextcloud Arbeitsablauf-Engine",
"Select a filter" : "Filter wählen",
"Select a comparator" : "Wählen Sie einen Komparator",
+ "Remove filter" : "Filter entfernen",
"Select a file type" : "Dateityp auswählen",
"e.g. httpd/unix-directory" : "z.B. httpd/unix-directory",
"Folder" : "Ordner",
@@ -56,9 +57,7 @@
"Custom mimetype" : "Benutzerdefinierter MIME-Typ",
"Please enter a valid time span" : "Bitte einen gültigen Zeitraum angeben",
"Select a request URL" : "Wählen Sie eine Anforderungs-URL aus",
- "Predefined URLs" : "Vordefinierte URLs",
"Files WebDAV" : "WebDAV für Dateien",
- "Others" : "Andere",
"Custom URL" : "Benutzerdefinierte URL",
"Select a user agent" : "User-Agenten wählen",
"Android client" : "Android-Client",
@@ -70,6 +69,7 @@
"Add new flow" : "Neuen Ablauf hinzufügen",
"When" : "Wenn",
"and" : "und",
+ "Add a new filter" : "Neuen Filter hinzufügen",
"Cancel" : "Abbrechen",
"Delete" : "Löschen",
"The configuration is invalid" : "Die Konfiguration ist ungültig",
@@ -113,6 +113,8 @@
"Select a tag" : "Schlagwort auswählen",
"No results" : "Keine Ergebnisse",
"%s (invisible)" : "%s (unsichtbar)",
- "%s (restricted)" : "%s (eingeschränkt)"
+ "%s (restricted)" : "%s (eingeschränkt)",
+ "Predefined URLs" : "Vordefinierte URLs",
+ "Others" : "Andere"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/el.js b/apps/workflowengine/l10n/el.js
index 73accc517e9..2250da2ca89 100644
--- a/apps/workflowengine/l10n/el.js
+++ b/apps/workflowengine/l10n/el.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Προσαρμοσμένος τύπος mime",
"Please enter a valid time span" : "Εισαγάγετε έγκυρο χρονικό διάστημα",
"Select a request URL" : "Επιλέξτε μια διεύθυνση URL αιτήματος",
- "Predefined URLs" : "Προορισμένα URLs",
"Files WebDAV" : "Αρχεία WebDAV",
- "Others" : "Άλλοι",
"Custom URL" : "Προσαρμοσμένο URL",
"Select a user agent" : "Επιλογή προγράμματος χρήστη",
"Android client" : "Πελάτης Android",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Επιλογή ετικέτας",
"No results" : "Κανένα αποτέλεσμα",
"%s (invisible)" : "%s (αόρατο)",
- "%s (restricted)" : "%s (περιορισμένο)"
+ "%s (restricted)" : "%s (περιορισμένο)",
+ "Predefined URLs" : "Προορισμένα URLs",
+ "Others" : "Άλλοι"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/el.json b/apps/workflowengine/l10n/el.json
index ba69693b936..93e83ed9ae3 100644
--- a/apps/workflowengine/l10n/el.json
+++ b/apps/workflowengine/l10n/el.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Προσαρμοσμένος τύπος mime",
"Please enter a valid time span" : "Εισαγάγετε έγκυρο χρονικό διάστημα",
"Select a request URL" : "Επιλέξτε μια διεύθυνση URL αιτήματος",
- "Predefined URLs" : "Προορισμένα URLs",
"Files WebDAV" : "Αρχεία WebDAV",
- "Others" : "Άλλοι",
"Custom URL" : "Προσαρμοσμένο URL",
"Select a user agent" : "Επιλογή προγράμματος χρήστη",
"Android client" : "Πελάτης Android",
@@ -113,6 +111,8 @@
"Select a tag" : "Επιλογή ετικέτας",
"No results" : "Κανένα αποτέλεσμα",
"%s (invisible)" : "%s (αόρατο)",
- "%s (restricted)" : "%s (περιορισμένο)"
+ "%s (restricted)" : "%s (περιορισμένο)",
+ "Predefined URLs" : "Προορισμένα URLs",
+ "Others" : "Άλλοι"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/en_GB.js b/apps/workflowengine/l10n/en_GB.js
index 24807468973..a9ae47b2668 100644
--- a/apps/workflowengine/l10n/en_GB.js
+++ b/apps/workflowengine/l10n/en_GB.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Nextcloud workflow engine",
"Select a filter" : "Select a filter",
"Select a comparator" : "Select a comparator",
+ "Remove filter" : "Remove filter",
"Select a file type" : "Select a file type",
"e.g. httpd/unix-directory" : "e.g. httpd/unix-directory",
"Folder" : "Folder",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "Custom mimetype",
"Please enter a valid time span" : "Please enter a valid time span",
"Select a request URL" : "Select a request URL",
- "Predefined URLs" : "Predefined URLs",
"Files WebDAV" : "Files WebDAV",
- "Others" : "Others",
"Custom URL" : "Custom URL",
"Select a user agent" : "Select a user agent",
"Android client" : "Android client",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "Add new flow",
"When" : "When",
"and" : "and",
+ "Add a new filter" : "Add a new filter",
"Cancel" : "Cancel",
"Delete" : "Delete",
"The configuration is invalid" : "The configuration is invalid",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "Select a tag",
"No results" : "No results",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restricted)"
+ "%s (restricted)" : "%s (restricted)",
+ "Predefined URLs" : "Predefined URLs",
+ "Others" : "Others"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/en_GB.json b/apps/workflowengine/l10n/en_GB.json
index 6ed0ed979c6..03b2e4beaeb 100644
--- a/apps/workflowengine/l10n/en_GB.json
+++ b/apps/workflowengine/l10n/en_GB.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Nextcloud workflow engine",
"Select a filter" : "Select a filter",
"Select a comparator" : "Select a comparator",
+ "Remove filter" : "Remove filter",
"Select a file type" : "Select a file type",
"e.g. httpd/unix-directory" : "e.g. httpd/unix-directory",
"Folder" : "Folder",
@@ -56,9 +57,7 @@
"Custom mimetype" : "Custom mimetype",
"Please enter a valid time span" : "Please enter a valid time span",
"Select a request URL" : "Select a request URL",
- "Predefined URLs" : "Predefined URLs",
"Files WebDAV" : "Files WebDAV",
- "Others" : "Others",
"Custom URL" : "Custom URL",
"Select a user agent" : "Select a user agent",
"Android client" : "Android client",
@@ -70,6 +69,7 @@
"Add new flow" : "Add new flow",
"When" : "When",
"and" : "and",
+ "Add a new filter" : "Add a new filter",
"Cancel" : "Cancel",
"Delete" : "Delete",
"The configuration is invalid" : "The configuration is invalid",
@@ -113,6 +113,8 @@
"Select a tag" : "Select a tag",
"No results" : "No results",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restricted)"
+ "%s (restricted)" : "%s (restricted)",
+ "Predefined URLs" : "Predefined URLs",
+ "Others" : "Others"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/eo.js b/apps/workflowengine/l10n/eo.js
index ef84eef0e7d..6f3662b1d4a 100644
--- a/apps/workflowengine/l10n/eo.js
+++ b/apps/workflowengine/l10n/eo.js
@@ -44,9 +44,7 @@ OC.L10N.register(
"Custom mimetype" : "Propra MIME-tipo",
"Please enter a valid time span" : "Entajpu validan intertempon",
"Select a request URL" : "Elekti petan retadreson",
- "Predefined URLs" : "Antaŭdifinitaj retadresoj",
"Files WebDAV" : "Dosieroj WebDAV",
- "Others" : "Aliaj",
"Custom URL" : "Propra retadreso",
"Select a user agent" : "Elekti retumil-identigilo („user-agent“)",
"Android client" : "Androida kliento",
@@ -92,6 +90,8 @@ OC.L10N.register(
"Select a tag" : "Elekti etikedon",
"No results" : "Neniu rezulto",
"%s (invisible)" : "%s (nevidebla)",
- "%s (restricted)" : "%s (limigita)"
+ "%s (restricted)" : "%s (limigita)",
+ "Predefined URLs" : "Antaŭdifinitaj retadresoj",
+ "Others" : "Aliaj"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/eo.json b/apps/workflowengine/l10n/eo.json
index 447110d55b2..95b4dc08452 100644
--- a/apps/workflowengine/l10n/eo.json
+++ b/apps/workflowengine/l10n/eo.json
@@ -42,9 +42,7 @@
"Custom mimetype" : "Propra MIME-tipo",
"Please enter a valid time span" : "Entajpu validan intertempon",
"Select a request URL" : "Elekti petan retadreson",
- "Predefined URLs" : "Antaŭdifinitaj retadresoj",
"Files WebDAV" : "Dosieroj WebDAV",
- "Others" : "Aliaj",
"Custom URL" : "Propra retadreso",
"Select a user agent" : "Elekti retumil-identigilo („user-agent“)",
"Android client" : "Androida kliento",
@@ -90,6 +88,8 @@
"Select a tag" : "Elekti etikedon",
"No results" : "Neniu rezulto",
"%s (invisible)" : "%s (nevidebla)",
- "%s (restricted)" : "%s (limigita)"
+ "%s (restricted)" : "%s (limigita)",
+ "Predefined URLs" : "Antaŭdifinitaj retadresoj",
+ "Others" : "Aliaj"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es.js b/apps/workflowengine/l10n/es.js
index beb0dd2e1a6..96a0d2d0482 100644
--- a/apps/workflowengine/l10n/es.js
+++ b/apps/workflowengine/l10n/es.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Motor de flujo de trabajo de Nextcloud",
"Select a filter" : "Seleccione un filtro",
"Select a comparator" : "Seleccione un comparador",
+ "Remove filter" : "Quitar filtro",
"Select a file type" : "Selecciona un tipo de archivo",
"e.g. httpd/unix-directory" : "p.ej.: httpd/carpeta-unix",
"Folder" : "Carpeta",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "Tipo MIME (mimetype) personalizado",
"Please enter a valid time span" : "Por favor especifique un intervalo de tiempo válido",
"Select a request URL" : "Selecciona una URL de petición",
- "Predefined URLs" : "URLs predefinidas",
"Files WebDAV" : "Archivos WebDAV",
- "Others" : "Otros",
"Custom URL" : "URL personalizada",
"Select a user agent" : "Selecciona un agente de usuario",
"Android client" : "Cliente Android",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "Añadir nuevo flujo",
"When" : "Cuando",
"and" : "y",
+ "Add a new filter" : "Añadir un nuevo filtro",
"Cancel" : "Cancelar",
"Delete" : "Eliminar",
"The configuration is invalid" : "La configuración es incorrecta",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "Selecciona una etiqueta",
"No results" : "Sin resultados",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restringido)"
+ "%s (restricted)" : "%s (restringido)",
+ "Predefined URLs" : "URLs predefinidas",
+ "Others" : "Otros"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/es.json b/apps/workflowengine/l10n/es.json
index 670f13007d4..cacaa675cec 100644
--- a/apps/workflowengine/l10n/es.json
+++ b/apps/workflowengine/l10n/es.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Motor de flujo de trabajo de Nextcloud",
"Select a filter" : "Seleccione un filtro",
"Select a comparator" : "Seleccione un comparador",
+ "Remove filter" : "Quitar filtro",
"Select a file type" : "Selecciona un tipo de archivo",
"e.g. httpd/unix-directory" : "p.ej.: httpd/carpeta-unix",
"Folder" : "Carpeta",
@@ -56,9 +57,7 @@
"Custom mimetype" : "Tipo MIME (mimetype) personalizado",
"Please enter a valid time span" : "Por favor especifique un intervalo de tiempo válido",
"Select a request URL" : "Selecciona una URL de petición",
- "Predefined URLs" : "URLs predefinidas",
"Files WebDAV" : "Archivos WebDAV",
- "Others" : "Otros",
"Custom URL" : "URL personalizada",
"Select a user agent" : "Selecciona un agente de usuario",
"Android client" : "Cliente Android",
@@ -70,6 +69,7 @@
"Add new flow" : "Añadir nuevo flujo",
"When" : "Cuando",
"and" : "y",
+ "Add a new filter" : "Añadir un nuevo filtro",
"Cancel" : "Cancelar",
"Delete" : "Eliminar",
"The configuration is invalid" : "La configuración es incorrecta",
@@ -113,6 +113,8 @@
"Select a tag" : "Selecciona una etiqueta",
"No results" : "Sin resultados",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restringido)"
+ "%s (restricted)" : "%s (restringido)",
+ "Predefined URLs" : "URLs predefinidas",
+ "Others" : "Otros"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_AR.js b/apps/workflowengine/l10n/es_AR.js
index 8f7afd35248..eb4c929f047 100644
--- a/apps/workflowengine/l10n/es_AR.js
+++ b/apps/workflowengine/l10n/es_AR.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Check %s is invalid or does not exist" : "La validación %s es inválida o no existe",
"Folder" : "Carpeta",
"Images" : "Imágenes",
- "Predefined URLs" : "URLs predefinidos",
"Files WebDAV" : "Archivos en WebDAV",
"Android client" : "Cliente Android",
"iOS client" : "Cliente iOS",
@@ -59,6 +58,7 @@ OC.L10N.register(
"is not member of" : "no es miembro de",
"No results" : "Sin resultados",
"%s (invisible)" : "%s (invisible) ",
- "%s (restricted)" : "%s (restringido)"
+ "%s (restricted)" : "%s (restringido)",
+ "Predefined URLs" : "URLs predefinidos"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/es_AR.json b/apps/workflowengine/l10n/es_AR.json
index 26f645c362f..eba1384612c 100644
--- a/apps/workflowengine/l10n/es_AR.json
+++ b/apps/workflowengine/l10n/es_AR.json
@@ -20,7 +20,6 @@
"Check %s is invalid or does not exist" : "La validación %s es inválida o no existe",
"Folder" : "Carpeta",
"Images" : "Imágenes",
- "Predefined URLs" : "URLs predefinidos",
"Files WebDAV" : "Archivos en WebDAV",
"Android client" : "Cliente Android",
"iOS client" : "Cliente iOS",
@@ -57,6 +56,7 @@
"is not member of" : "no es miembro de",
"No results" : "Sin resultados",
"%s (invisible)" : "%s (invisible) ",
- "%s (restricted)" : "%s (restringido)"
+ "%s (restricted)" : "%s (restringido)",
+ "Predefined URLs" : "URLs predefinidos"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_MX.js b/apps/workflowengine/l10n/es_MX.js
index 8a1468c1d2f..1620a97ef63 100644
--- a/apps/workflowengine/l10n/es_MX.js
+++ b/apps/workflowengine/l10n/es_MX.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Check %s is invalid or does not exist" : "La validación %s es inválida o no existe",
"Folder" : "Carpeta",
"Images" : "Imágenes",
- "Predefined URLs" : "URLs predefinidos",
"Files WebDAV" : "Archivos WebDAV",
"Android client" : "Cliente Android",
"iOS client" : "Cliente iOS",
@@ -59,6 +58,7 @@ OC.L10N.register(
"is not member of" : "no es miembro de",
"No results" : "Sin resultados",
"%s (invisible)" : "%s (invisible) ",
- "%s (restricted)" : "%s (restringido)"
+ "%s (restricted)" : "%s (restringido)",
+ "Predefined URLs" : "URLs predefinidos"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/es_MX.json b/apps/workflowengine/l10n/es_MX.json
index cc2ad7fae28..12263d42acd 100644
--- a/apps/workflowengine/l10n/es_MX.json
+++ b/apps/workflowengine/l10n/es_MX.json
@@ -20,7 +20,6 @@
"Check %s is invalid or does not exist" : "La validación %s es inválida o no existe",
"Folder" : "Carpeta",
"Images" : "Imágenes",
- "Predefined URLs" : "URLs predefinidos",
"Files WebDAV" : "Archivos WebDAV",
"Android client" : "Cliente Android",
"iOS client" : "Cliente iOS",
@@ -57,6 +56,7 @@
"is not member of" : "no es miembro de",
"No results" : "Sin resultados",
"%s (invisible)" : "%s (invisible) ",
- "%s (restricted)" : "%s (restringido)"
+ "%s (restricted)" : "%s (restringido)",
+ "Predefined URLs" : "URLs predefinidos"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/eu.js b/apps/workflowengine/l10n/eu.js
index 79faa1e8fdf..afc97da69ea 100644
--- a/apps/workflowengine/l10n/eu.js
+++ b/apps/workflowengine/l10n/eu.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Mime mota pertsonalizatua",
"Please enter a valid time span" : "Sartu baliozko denbora tarte bat",
"Select a request URL" : "Hautatu eskaera URL bat",
- "Predefined URLs" : "Aurrez definitutako URL-ak",
"Files WebDAV" : "WebDAV fitxategiak",
- "Others" : "Bestelakoak",
"Custom URL" : "URL pertsonalizatua",
"Select a user agent" : "Hautatu erabiltzaile-agentea",
"Android client" : "Android bezeroa",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Hautatu etiketa bat",
"No results" : "Emaitzarik ez",
"%s (invisible)" : "%s (ikusezina)",
- "%s (restricted)" : "%s (mugatua)"
+ "%s (restricted)" : "%s (mugatua)",
+ "Predefined URLs" : "Aurrez definitutako URL-ak",
+ "Others" : "Bestelakoak"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/eu.json b/apps/workflowengine/l10n/eu.json
index b87e1d5bf65..868c6354c7e 100644
--- a/apps/workflowengine/l10n/eu.json
+++ b/apps/workflowengine/l10n/eu.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Mime mota pertsonalizatua",
"Please enter a valid time span" : "Sartu baliozko denbora tarte bat",
"Select a request URL" : "Hautatu eskaera URL bat",
- "Predefined URLs" : "Aurrez definitutako URL-ak",
"Files WebDAV" : "WebDAV fitxategiak",
- "Others" : "Bestelakoak",
"Custom URL" : "URL pertsonalizatua",
"Select a user agent" : "Hautatu erabiltzaile-agentea",
"Android client" : "Android bezeroa",
@@ -113,6 +111,8 @@
"Select a tag" : "Hautatu etiketa bat",
"No results" : "Emaitzarik ez",
"%s (invisible)" : "%s (ikusezina)",
- "%s (restricted)" : "%s (mugatua)"
+ "%s (restricted)" : "%s (mugatua)",
+ "Predefined URLs" : "Aurrez definitutako URL-ak",
+ "Others" : "Bestelakoak"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/fa.js b/apps/workflowengine/l10n/fa.js
index bf7bf85f47b..6b7d8f5b02c 100644
--- a/apps/workflowengine/l10n/fa.js
+++ b/apps/workflowengine/l10n/fa.js
@@ -23,9 +23,7 @@ OC.L10N.register(
"Flow" : "جریان",
"Folder" : "پوشه",
"Images" : "عکسها",
- "Predefined URLs" : "URL از پیش تعریف شده ",
"Files WebDAV" : "فایل های WebDAV",
- "Others" : "دیگران",
"Android client" : "دستگاه های اندروید ",
"iOS client" : "دستگاه های IOS",
"Desktop client" : "دستگاه دسکتاپ",
@@ -59,6 +57,8 @@ OC.L10N.register(
"User group membership" : "عضویت کاربر در گروه",
"is member of" : "عضو است در ",
"is not member of" : "عضو نیست در ",
- "No results" : "نتیجه ای یافت نشد"
+ "No results" : "نتیجه ای یافت نشد",
+ "Predefined URLs" : "URL از پیش تعریف شده ",
+ "Others" : "دیگران"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/workflowengine/l10n/fa.json b/apps/workflowengine/l10n/fa.json
index 20b2025ff95..994f2766f68 100644
--- a/apps/workflowengine/l10n/fa.json
+++ b/apps/workflowengine/l10n/fa.json
@@ -21,9 +21,7 @@
"Flow" : "جریان",
"Folder" : "پوشه",
"Images" : "عکسها",
- "Predefined URLs" : "URL از پیش تعریف شده ",
"Files WebDAV" : "فایل های WebDAV",
- "Others" : "دیگران",
"Android client" : "دستگاه های اندروید ",
"iOS client" : "دستگاه های IOS",
"Desktop client" : "دستگاه دسکتاپ",
@@ -57,6 +55,8 @@
"User group membership" : "عضویت کاربر در گروه",
"is member of" : "عضو است در ",
"is not member of" : "عضو نیست در ",
- "No results" : "نتیجه ای یافت نشد"
+ "No results" : "نتیجه ای یافت نشد",
+ "Predefined URLs" : "URL از پیش تعریف شده ",
+ "Others" : "دیگران"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/fi.js b/apps/workflowengine/l10n/fi.js
index f86cd965302..46e16f0bacd 100644
--- a/apps/workflowengine/l10n/fi.js
+++ b/apps/workflowengine/l10n/fi.js
@@ -46,9 +46,7 @@ OC.L10N.register(
"Office documents" : "Toimisto-ohjelmistojen asiakirjat",
"PDF documents" : "PDF-asiakirjat",
"Custom mimetype" : "Mukautettu MIME-tyyppi",
- "Predefined URLs" : "Ennalta määritellyt URL-osoitteet",
"Files WebDAV" : "Tiedostot WebDAV",
- "Others" : "Muut",
"Android client" : "Android-sovellus",
"iOS client" : "iOS-sovellus",
"Desktop client" : "Työpöytäsovellus",
@@ -90,6 +88,8 @@ OC.L10N.register(
"is not member of" : "ei ole jäsen",
"No results" : "Ei tuloksia",
"%s (invisible)" : "%s (näkymätön)",
- "%s (restricted)" : "%s (rajoitettu)"
+ "%s (restricted)" : "%s (rajoitettu)",
+ "Predefined URLs" : "Ennalta määritellyt URL-osoitteet",
+ "Others" : "Muut"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/fi.json b/apps/workflowengine/l10n/fi.json
index 4db37a771b8..73b184b45f6 100644
--- a/apps/workflowengine/l10n/fi.json
+++ b/apps/workflowengine/l10n/fi.json
@@ -44,9 +44,7 @@
"Office documents" : "Toimisto-ohjelmistojen asiakirjat",
"PDF documents" : "PDF-asiakirjat",
"Custom mimetype" : "Mukautettu MIME-tyyppi",
- "Predefined URLs" : "Ennalta määritellyt URL-osoitteet",
"Files WebDAV" : "Tiedostot WebDAV",
- "Others" : "Muut",
"Android client" : "Android-sovellus",
"iOS client" : "iOS-sovellus",
"Desktop client" : "Työpöytäsovellus",
@@ -88,6 +86,8 @@
"is not member of" : "ei ole jäsen",
"No results" : "Ei tuloksia",
"%s (invisible)" : "%s (näkymätön)",
- "%s (restricted)" : "%s (rajoitettu)"
+ "%s (restricted)" : "%s (rajoitettu)",
+ "Predefined URLs" : "Ennalta määritellyt URL-osoitteet",
+ "Others" : "Muut"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/fr.js b/apps/workflowengine/l10n/fr.js
index edd9323103a..44a0ece1b6b 100644
--- a/apps/workflowengine/l10n/fr.js
+++ b/apps/workflowengine/l10n/fr.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "mimetype personnalisé",
"Please enter a valid time span" : "Merci de saisir une période de temps valide",
"Select a request URL" : "Sélectionnez une requête URL",
- "Predefined URLs" : "URL prédéfinis",
"Files WebDAV" : "Fichiers WebDAV",
- "Others" : "Autres",
"Custom URL" : "URL personnalisée",
"Select a user agent" : "Sélectionnez un utilisateur",
"Android client" : "Client Android",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Choisir une étiquette",
"No results" : "Aucun résultat",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restreint)"
+ "%s (restricted)" : "%s (restreint)",
+ "Predefined URLs" : "URL prédéfinis",
+ "Others" : "Autres"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/fr.json b/apps/workflowengine/l10n/fr.json
index 1aca8aed318..7812f154224 100644
--- a/apps/workflowengine/l10n/fr.json
+++ b/apps/workflowengine/l10n/fr.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "mimetype personnalisé",
"Please enter a valid time span" : "Merci de saisir une période de temps valide",
"Select a request URL" : "Sélectionnez une requête URL",
- "Predefined URLs" : "URL prédéfinis",
"Files WebDAV" : "Fichiers WebDAV",
- "Others" : "Autres",
"Custom URL" : "URL personnalisée",
"Select a user agent" : "Sélectionnez un utilisateur",
"Android client" : "Client Android",
@@ -113,6 +111,8 @@
"Select a tag" : "Choisir une étiquette",
"No results" : "Aucun résultat",
"%s (invisible)" : "%s (invisible)",
- "%s (restricted)" : "%s (restreint)"
+ "%s (restricted)" : "%s (restreint)",
+ "Predefined URLs" : "URL prédéfinis",
+ "Others" : "Autres"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/gl.js b/apps/workflowengine/l10n/gl.js
index 6b81c74b238..b4a1f62d640 100644
--- a/apps/workflowengine/l10n/gl.js
+++ b/apps/workflowengine/l10n/gl.js
@@ -57,9 +57,7 @@ OC.L10N.register(
"Custom mimetype" : "Mimetipe personalizado",
"Please enter a valid time span" : "Introduza un intervalo de tempo válido",
"Select a request URL" : "Seleccione un URL de solicitude",
- "Predefined URLs" : "URL predefinidos",
"Files WebDAV" : "Ficheiros WebDAV",
- "Others" : "Outros",
"Custom URL" : "URL personalizado",
"Select a user agent" : "Seleccionar un axente de usuario",
"Android client" : "Cliente Android",
@@ -114,6 +112,8 @@ OC.L10N.register(
"Select a tag" : "Seleccione unha etiqueta",
"No results" : "Sen resultados",
"%s (invisible)" : "%s (invisíbel)",
- "%s (restricted)" : "%s (restrinxido)"
+ "%s (restricted)" : "%s (restrinxido)",
+ "Predefined URLs" : "URL predefinidos",
+ "Others" : "Outros"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/gl.json b/apps/workflowengine/l10n/gl.json
index 5bf41dc7188..bd8b5bae417 100644
--- a/apps/workflowengine/l10n/gl.json
+++ b/apps/workflowengine/l10n/gl.json
@@ -55,9 +55,7 @@
"Custom mimetype" : "Mimetipe personalizado",
"Please enter a valid time span" : "Introduza un intervalo de tempo válido",
"Select a request URL" : "Seleccione un URL de solicitude",
- "Predefined URLs" : "URL predefinidos",
"Files WebDAV" : "Ficheiros WebDAV",
- "Others" : "Outros",
"Custom URL" : "URL personalizado",
"Select a user agent" : "Seleccionar un axente de usuario",
"Android client" : "Cliente Android",
@@ -112,6 +110,8 @@
"Select a tag" : "Seleccione unha etiqueta",
"No results" : "Sen resultados",
"%s (invisible)" : "%s (invisíbel)",
- "%s (restricted)" : "%s (restrinxido)"
+ "%s (restricted)" : "%s (restrinxido)",
+ "Predefined URLs" : "URL predefinidos",
+ "Others" : "Outros"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/he.js b/apps/workflowengine/l10n/he.js
index d8fa6e54df0..57769469f75 100644
--- a/apps/workflowengine/l10n/he.js
+++ b/apps/workflowengine/l10n/he.js
@@ -48,9 +48,7 @@ OC.L10N.register(
"Custom mimetype" : "נא לבחור טיפוס MIME",
"Please enter a valid time span" : "נא למלא טווח זמן תקין",
"Select a request URL" : "נא לבחור את כתובת הבקשה",
- "Predefined URLs" : "כתובות שמוגדרות מראש",
"Files WebDAV" : "WebDAV קבצים",
- "Others" : "חרים",
"Custom URL" : "כתובת מותאמת אישית",
"Select a user agent" : "נא לבחור סוכן משתמש",
"Android client" : "לקוח Android",
@@ -104,6 +102,8 @@ OC.L10N.register(
"Select a tag" : "נא לבחור תגית",
"No results" : "אין תוצאות",
"%s (invisible)" : "%s (נסתר)",
- "%s (restricted)" : "%s (מוגבל)"
+ "%s (restricted)" : "%s (מוגבל)",
+ "Predefined URLs" : "כתובות שמוגדרות מראש",
+ "Others" : "חרים"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/apps/workflowengine/l10n/he.json b/apps/workflowengine/l10n/he.json
index 85167d9bce0..c7e8ae6f904 100644
--- a/apps/workflowengine/l10n/he.json
+++ b/apps/workflowengine/l10n/he.json
@@ -46,9 +46,7 @@
"Custom mimetype" : "נא לבחור טיפוס MIME",
"Please enter a valid time span" : "נא למלא טווח זמן תקין",
"Select a request URL" : "נא לבחור את כתובת הבקשה",
- "Predefined URLs" : "כתובות שמוגדרות מראש",
"Files WebDAV" : "WebDAV קבצים",
- "Others" : "חרים",
"Custom URL" : "כתובת מותאמת אישית",
"Select a user agent" : "נא לבחור סוכן משתמש",
"Android client" : "לקוח Android",
@@ -102,6 +100,8 @@
"Select a tag" : "נא לבחור תגית",
"No results" : "אין תוצאות",
"%s (invisible)" : "%s (נסתר)",
- "%s (restricted)" : "%s (מוגבל)"
+ "%s (restricted)" : "%s (מוגבל)",
+ "Predefined URLs" : "כתובות שמוגדרות מראש",
+ "Others" : "חרים"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/hr.js b/apps/workflowengine/l10n/hr.js
index c0bc616851d..e3a6143153e 100644
--- a/apps/workflowengine/l10n/hr.js
+++ b/apps/workflowengine/l10n/hr.js
@@ -57,9 +57,7 @@ OC.L10N.register(
"Custom mimetype" : "Prilagođeni mimetype",
"Please enter a valid time span" : "Unesite valjani vremenski raspon",
"Select a request URL" : "Odaberi URL zahtjeva",
- "Predefined URLs" : "Unaprijed definirani URL-ovi",
"Files WebDAV" : "Datoteke WebDAV",
- "Others" : "Ostalo",
"Custom URL" : "Prilagođeni URL",
"Select a user agent" : "Odaberi korisničkog agenta",
"Android client" : "Klijent za Android",
@@ -114,6 +112,8 @@ OC.L10N.register(
"Select a tag" : "Odaberi oznaku",
"No results" : "Nema rezultata",
"%s (invisible)" : "%s (nevidljivo)",
- "%s (restricted)" : "%s (ograničeno)"
+ "%s (restricted)" : "%s (ograničeno)",
+ "Predefined URLs" : "Unaprijed definirani URL-ovi",
+ "Others" : "Ostalo"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/hr.json b/apps/workflowengine/l10n/hr.json
index a0fcafcd9c5..e06ff227ea6 100644
--- a/apps/workflowengine/l10n/hr.json
+++ b/apps/workflowengine/l10n/hr.json
@@ -55,9 +55,7 @@
"Custom mimetype" : "Prilagođeni mimetype",
"Please enter a valid time span" : "Unesite valjani vremenski raspon",
"Select a request URL" : "Odaberi URL zahtjeva",
- "Predefined URLs" : "Unaprijed definirani URL-ovi",
"Files WebDAV" : "Datoteke WebDAV",
- "Others" : "Ostalo",
"Custom URL" : "Prilagođeni URL",
"Select a user agent" : "Odaberi korisničkog agenta",
"Android client" : "Klijent za Android",
@@ -112,6 +110,8 @@
"Select a tag" : "Odaberi oznaku",
"No results" : "Nema rezultata",
"%s (invisible)" : "%s (nevidljivo)",
- "%s (restricted)" : "%s (ograničeno)"
+ "%s (restricted)" : "%s (ograničeno)",
+ "Predefined URLs" : "Unaprijed definirani URL-ovi",
+ "Others" : "Ostalo"
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/hu.js b/apps/workflowengine/l10n/hu.js
index 5b43a9b8bd7..6e6ddb6135f 100644
--- a/apps/workflowengine/l10n/hu.js
+++ b/apps/workflowengine/l10n/hu.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Egyéni MIME-típus",
"Please enter a valid time span" : "Érvényes időtartamot adjon meg",
"Select a request URL" : "Válassza ki a kérés URL-jét",
- "Predefined URLs" : "Előre definiált URL-ek",
"Files WebDAV" : "WebDAV-fájlok",
- "Others" : "Egyebek",
"Custom URL" : "Egyéni URL",
"Select a user agent" : "Válasszon felhasználói ügynököt",
"Android client" : "Android kliens",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Válasszon címkét",
"No results" : "Nincs találat",
"%s (invisible)" : "%s (láthatatlan)",
- "%s (restricted)" : "%s (korlátozott)"
+ "%s (restricted)" : "%s (korlátozott)",
+ "Predefined URLs" : "Előre definiált URL-ek",
+ "Others" : "Egyebek"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/hu.json b/apps/workflowengine/l10n/hu.json
index df603c04094..ae79b31b533 100644
--- a/apps/workflowengine/l10n/hu.json
+++ b/apps/workflowengine/l10n/hu.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Egyéni MIME-típus",
"Please enter a valid time span" : "Érvényes időtartamot adjon meg",
"Select a request URL" : "Válassza ki a kérés URL-jét",
- "Predefined URLs" : "Előre definiált URL-ek",
"Files WebDAV" : "WebDAV-fájlok",
- "Others" : "Egyebek",
"Custom URL" : "Egyéni URL",
"Select a user agent" : "Válasszon felhasználói ügynököt",
"Android client" : "Android kliens",
@@ -113,6 +111,8 @@
"Select a tag" : "Válasszon címkét",
"No results" : "Nincs találat",
"%s (invisible)" : "%s (láthatatlan)",
- "%s (restricted)" : "%s (korlátozott)"
+ "%s (restricted)" : "%s (korlátozott)",
+ "Predefined URLs" : "Előre definiált URL-ek",
+ "Others" : "Egyebek"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/is.js b/apps/workflowengine/l10n/is.js
index 87a5e388e44..2451cf6c164 100644
--- a/apps/workflowengine/l10n/is.js
+++ b/apps/workflowengine/l10n/is.js
@@ -23,7 +23,6 @@ OC.L10N.register(
"Flow" : "Flæði",
"Folder" : "Mappa",
"Images" : "Myndir",
- "Predefined URLs" : "Forákvarðaðar slóðir",
"Files WebDAV" : "WebDAV skráa",
"Android client" : "Android-biðlari",
"iOS client" : "iOS-biðlari",
@@ -67,6 +66,7 @@ OC.L10N.register(
"is not member of" : "er ekki meðlimur í",
"No results" : "Engar niðurstöður",
"%s (invisible)" : "%s (ósýnilegt)",
- "%s (restricted)" : "%s (takmarkaður aðgangur)"
+ "%s (restricted)" : "%s (takmarkaður aðgangur)",
+ "Predefined URLs" : "Forákvarðaðar slóðir"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/workflowengine/l10n/is.json b/apps/workflowengine/l10n/is.json
index 475b6b83073..d7107676bed 100644
--- a/apps/workflowengine/l10n/is.json
+++ b/apps/workflowengine/l10n/is.json
@@ -21,7 +21,6 @@
"Flow" : "Flæði",
"Folder" : "Mappa",
"Images" : "Myndir",
- "Predefined URLs" : "Forákvarðaðar slóðir",
"Files WebDAV" : "WebDAV skráa",
"Android client" : "Android-biðlari",
"iOS client" : "iOS-biðlari",
@@ -65,6 +64,7 @@
"is not member of" : "er ekki meðlimur í",
"No results" : "Engar niðurstöður",
"%s (invisible)" : "%s (ósýnilegt)",
- "%s (restricted)" : "%s (takmarkaður aðgangur)"
+ "%s (restricted)" : "%s (takmarkaður aðgangur)",
+ "Predefined URLs" : "Forákvarðaðar slóðir"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/it.js b/apps/workflowengine/l10n/it.js
index b851e319e5a..90fab46eea8 100644
--- a/apps/workflowengine/l10n/it.js
+++ b/apps/workflowengine/l10n/it.js
@@ -57,9 +57,7 @@ OC.L10N.register(
"Custom mimetype" : "Tipo MIME personalizzato",
"Please enter a valid time span" : "Digita un intervallo temporale valido",
"Select a request URL" : "Seleziona un URL di richiesta",
- "Predefined URLs" : "URL predefiniti",
"Files WebDAV" : "File WebDAV",
- "Others" : "Altri",
"Custom URL" : "URL personalizzato",
"Select a user agent" : "Seleziona user agent",
"Android client" : "Client Android",
@@ -114,6 +112,8 @@ OC.L10N.register(
"Select a tag" : "Seleziona un'etichetta",
"No results" : "Nessun risultato",
"%s (invisible)" : "%s (invisibile)",
- "%s (restricted)" : "%s (limitato)"
+ "%s (restricted)" : "%s (limitato)",
+ "Predefined URLs" : "URL predefiniti",
+ "Others" : "Altri"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/it.json b/apps/workflowengine/l10n/it.json
index 0f343e4f7e4..ca9dc977124 100644
--- a/apps/workflowengine/l10n/it.json
+++ b/apps/workflowengine/l10n/it.json
@@ -55,9 +55,7 @@
"Custom mimetype" : "Tipo MIME personalizzato",
"Please enter a valid time span" : "Digita un intervallo temporale valido",
"Select a request URL" : "Seleziona un URL di richiesta",
- "Predefined URLs" : "URL predefiniti",
"Files WebDAV" : "File WebDAV",
- "Others" : "Altri",
"Custom URL" : "URL personalizzato",
"Select a user agent" : "Seleziona user agent",
"Android client" : "Client Android",
@@ -112,6 +110,8 @@
"Select a tag" : "Seleziona un'etichetta",
"No results" : "Nessun risultato",
"%s (invisible)" : "%s (invisibile)",
- "%s (restricted)" : "%s (limitato)"
+ "%s (restricted)" : "%s (limitato)",
+ "Predefined URLs" : "URL predefiniti",
+ "Others" : "Altri"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ja.js b/apps/workflowengine/l10n/ja.js
index 7c4a0859f28..db808c23a91 100644
--- a/apps/workflowengine/l10n/ja.js
+++ b/apps/workflowengine/l10n/ja.js
@@ -57,9 +57,7 @@ OC.L10N.register(
"Custom mimetype" : "カスタムMIMEタイプ",
"Please enter a valid time span" : "正しい間隔を指定してください",
"Select a request URL" : "リクエストURLを選択",
- "Predefined URLs" : "定義済みのURL",
"Files WebDAV" : "ファイルWebDAV",
- "Others" : "その他",
"Custom URL" : "カスタムURL",
"Select a user agent" : "ユーザーエージェントを選択",
"Android client" : "アンドロイドクライアント",
@@ -114,6 +112,8 @@ OC.L10N.register(
"Select a tag" : "タグを選択",
"No results" : "該当なし",
"%s (invisible)" : "%s (不可視)",
- "%s (restricted)" : "%s (制限)"
+ "%s (restricted)" : "%s (制限)",
+ "Predefined URLs" : "定義済みのURL",
+ "Others" : "その他"
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/ja.json b/apps/workflowengine/l10n/ja.json
index e023e0e9e56..14c47394157 100644
--- a/apps/workflowengine/l10n/ja.json
+++ b/apps/workflowengine/l10n/ja.json
@@ -55,9 +55,7 @@
"Custom mimetype" : "カスタムMIMEタイプ",
"Please enter a valid time span" : "正しい間隔を指定してください",
"Select a request URL" : "リクエストURLを選択",
- "Predefined URLs" : "定義済みのURL",
"Files WebDAV" : "ファイルWebDAV",
- "Others" : "その他",
"Custom URL" : "カスタムURL",
"Select a user agent" : "ユーザーエージェントを選択",
"Android client" : "アンドロイドクライアント",
@@ -112,6 +110,8 @@
"Select a tag" : "タグを選択",
"No results" : "該当なし",
"%s (invisible)" : "%s (不可視)",
- "%s (restricted)" : "%s (制限)"
+ "%s (restricted)" : "%s (制限)",
+ "Predefined URLs" : "定義済みのURL",
+ "Others" : "その他"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ko.js b/apps/workflowengine/l10n/ko.js
index a0cde15c1d8..e6a5518b590 100644
--- a/apps/workflowengine/l10n/ko.js
+++ b/apps/workflowengine/l10n/ko.js
@@ -48,9 +48,7 @@ OC.L10N.register(
"PDF documents" : "PDF 문서",
"Custom mimetype" : "사용자 mimetype",
"Select a request URL" : "요청 URL 선택",
- "Predefined URLs" : "사전 정의된 URL",
"Files WebDAV" : "파일 WebDAV",
- "Others" : "기타",
"Custom URL" : "사용자 정의 URL",
"Select a user agent" : "사용자 에이전트 지정",
"Android client" : "Android 클라이언트",
@@ -104,6 +102,8 @@ OC.L10N.register(
"Select a tag" : "태그 선택",
"No results" : "결과 없음",
"%s (invisible)" : "%s(숨겨짐)",
- "%s (restricted)" : "%s(제한됨)"
+ "%s (restricted)" : "%s(제한됨)",
+ "Predefined URLs" : "사전 정의된 URL",
+ "Others" : "기타"
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/ko.json b/apps/workflowengine/l10n/ko.json
index 224c6476cc1..c4f7fed8385 100644
--- a/apps/workflowengine/l10n/ko.json
+++ b/apps/workflowengine/l10n/ko.json
@@ -46,9 +46,7 @@
"PDF documents" : "PDF 문서",
"Custom mimetype" : "사용자 mimetype",
"Select a request URL" : "요청 URL 선택",
- "Predefined URLs" : "사전 정의된 URL",
"Files WebDAV" : "파일 WebDAV",
- "Others" : "기타",
"Custom URL" : "사용자 정의 URL",
"Select a user agent" : "사용자 에이전트 지정",
"Android client" : "Android 클라이언트",
@@ -102,6 +100,8 @@
"Select a tag" : "태그 선택",
"No results" : "결과 없음",
"%s (invisible)" : "%s(숨겨짐)",
- "%s (restricted)" : "%s(제한됨)"
+ "%s (restricted)" : "%s(제한됨)",
+ "Predefined URLs" : "사전 정의된 URL",
+ "Others" : "기타"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/lt_LT.js b/apps/workflowengine/l10n/lt_LT.js
index 2c933f81d96..746e2513b4b 100644
--- a/apps/workflowengine/l10n/lt_LT.js
+++ b/apps/workflowengine/l10n/lt_LT.js
@@ -55,9 +55,7 @@ OC.L10N.register(
"Custom mimetype" : "Tinkintas MIME tipas",
"Please enter a valid time span" : "Įveskite teisingą laiko intervalą",
"Select a request URL" : "Pasirinkite užklausos URL",
- "Predefined URLs" : "Iš anksto apibrėžti URL adresai",
"Files WebDAV" : "WebDAV failai",
- "Others" : "Kiti",
"Custom URL" : "Tinkintas URL",
"Select a user agent" : "Pasirinkite naudotojo agentą",
"Android client" : "Android klientas",
@@ -112,6 +110,8 @@ OC.L10N.register(
"Select a tag" : "Pasirinkite žymę",
"No results" : "Rezultatų nėra",
"%s (invisible)" : "%s (nematomas)",
- "%s (restricted)" : "%s (apribotas)"
+ "%s (restricted)" : "%s (apribotas)",
+ "Predefined URLs" : "Iš anksto apibrėžti URL adresai",
+ "Others" : "Kiti"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/workflowengine/l10n/lt_LT.json b/apps/workflowengine/l10n/lt_LT.json
index e07d5e6d5c0..75242e37890 100644
--- a/apps/workflowengine/l10n/lt_LT.json
+++ b/apps/workflowengine/l10n/lt_LT.json
@@ -53,9 +53,7 @@
"Custom mimetype" : "Tinkintas MIME tipas",
"Please enter a valid time span" : "Įveskite teisingą laiko intervalą",
"Select a request URL" : "Pasirinkite užklausos URL",
- "Predefined URLs" : "Iš anksto apibrėžti URL adresai",
"Files WebDAV" : "WebDAV failai",
- "Others" : "Kiti",
"Custom URL" : "Tinkintas URL",
"Select a user agent" : "Pasirinkite naudotojo agentą",
"Android client" : "Android klientas",
@@ -110,6 +108,8 @@
"Select a tag" : "Pasirinkite žymę",
"No results" : "Rezultatų nėra",
"%s (invisible)" : "%s (nematomas)",
- "%s (restricted)" : "%s (apribotas)"
+ "%s (restricted)" : "%s (apribotas)",
+ "Predefined URLs" : "Iš anksto apibrėžti URL adresai",
+ "Others" : "Kiti"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/lv.js b/apps/workflowengine/l10n/lv.js
index 60203dfe864..4d0cb9bb560 100644
--- a/apps/workflowengine/l10n/lv.js
+++ b/apps/workflowengine/l10n/lv.js
@@ -22,9 +22,7 @@ OC.L10N.register(
"Check %s is invalid or does not exist" : "Pārbaude %s ir nederīga vai nepastāv",
"Folder" : "Mape",
"Images" : "Attēli",
- "Predefined URLs" : "Standarta URLs",
"Files WebDAV" : "WebDAV datnes",
- "Others" : "Citi",
"Android client" : "Android klients",
"iOS client" : "iOS klients",
"Desktop client" : "Darbvirsmas klients",
@@ -60,6 +58,8 @@ OC.L10N.register(
"is not member of" : "nav biedrs",
"No results" : "Nav rezultātu",
"%s (invisible)" : "%s (neredzams)",
- "%s (restricted)" : "%s (ierobežots)"
+ "%s (restricted)" : "%s (ierobežots)",
+ "Predefined URLs" : "Standarta URLs",
+ "Others" : "Citi"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/workflowengine/l10n/lv.json b/apps/workflowengine/l10n/lv.json
index 3e457ce2698..39ba1f310cf 100644
--- a/apps/workflowengine/l10n/lv.json
+++ b/apps/workflowengine/l10n/lv.json
@@ -20,9 +20,7 @@
"Check %s is invalid or does not exist" : "Pārbaude %s ir nederīga vai nepastāv",
"Folder" : "Mape",
"Images" : "Attēli",
- "Predefined URLs" : "Standarta URLs",
"Files WebDAV" : "WebDAV datnes",
- "Others" : "Citi",
"Android client" : "Android klients",
"iOS client" : "iOS klients",
"Desktop client" : "Darbvirsmas klients",
@@ -58,6 +56,8 @@
"is not member of" : "nav biedrs",
"No results" : "Nav rezultātu",
"%s (invisible)" : "%s (neredzams)",
- "%s (restricted)" : "%s (ierobežots)"
+ "%s (restricted)" : "%s (ierobežots)",
+ "Predefined URLs" : "Standarta URLs",
+ "Others" : "Citi"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/mk.js b/apps/workflowengine/l10n/mk.js
index adb58061ab8..465acdcb455 100644
--- a/apps/workflowengine/l10n/mk.js
+++ b/apps/workflowengine/l10n/mk.js
@@ -46,7 +46,6 @@ OC.L10N.register(
"PDF documents" : "PDF документи",
"Custom mimetype" : "Прилагоден тип на датотеки",
"Please enter a valid time span" : "Внесете валиден времески осег",
- "Others" : "Останати",
"Desktop client" : "Клиент за компјутер",
"When" : "Кога",
"and" : "и",
@@ -87,6 +86,7 @@ OC.L10N.register(
"Select a tag" : "Избери ознака",
"No results" : "Нема резултати",
"%s (invisible)" : "%s (невидливо)",
- "%s (restricted)" : "%s (ограничена)"
+ "%s (restricted)" : "%s (ограничена)",
+ "Others" : "Останати"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/workflowengine/l10n/mk.json b/apps/workflowengine/l10n/mk.json
index 70b894b3756..5d7f87253be 100644
--- a/apps/workflowengine/l10n/mk.json
+++ b/apps/workflowengine/l10n/mk.json
@@ -44,7 +44,6 @@
"PDF documents" : "PDF документи",
"Custom mimetype" : "Прилагоден тип на датотеки",
"Please enter a valid time span" : "Внесете валиден времески осег",
- "Others" : "Останати",
"Desktop client" : "Клиент за компјутер",
"When" : "Кога",
"and" : "и",
@@ -85,6 +84,7 @@
"Select a tag" : "Избери ознака",
"No results" : "Нема резултати",
"%s (invisible)" : "%s (невидливо)",
- "%s (restricted)" : "%s (ограничена)"
+ "%s (restricted)" : "%s (ограничена)",
+ "Others" : "Останати"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/nb.js b/apps/workflowengine/l10n/nb.js
index 351839f8b7f..7042e3d484e 100644
--- a/apps/workflowengine/l10n/nb.js
+++ b/apps/workflowengine/l10n/nb.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Egendefinert MIME-type",
"Please enter a valid time span" : "Vennligst skriv inn en gyldig tidsperiode",
"Select a request URL" : "Velg en forespurt URL",
- "Predefined URLs" : "Forhåndsdefinerte URLer",
"Files WebDAV" : "Filer WebDAV",
- "Others" : "Andre",
"Custom URL" : "Egendefinert URL",
"Select a user agent" : "Velg en brukeragent",
"Android client" : "Android klient",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Velg en etikett",
"No results" : "Ingen resultater",
"%s (invisible)" : "%s (usynlig)",
- "%s (restricted)" : "%s (begrenset)"
+ "%s (restricted)" : "%s (begrenset)",
+ "Predefined URLs" : "Forhåndsdefinerte URLer",
+ "Others" : "Andre"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/nb.json b/apps/workflowengine/l10n/nb.json
index dcbfa37c803..5b4c69b16df 100644
--- a/apps/workflowengine/l10n/nb.json
+++ b/apps/workflowengine/l10n/nb.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Egendefinert MIME-type",
"Please enter a valid time span" : "Vennligst skriv inn en gyldig tidsperiode",
"Select a request URL" : "Velg en forespurt URL",
- "Predefined URLs" : "Forhåndsdefinerte URLer",
"Files WebDAV" : "Filer WebDAV",
- "Others" : "Andre",
"Custom URL" : "Egendefinert URL",
"Select a user agent" : "Velg en brukeragent",
"Android client" : "Android klient",
@@ -113,6 +111,8 @@
"Select a tag" : "Velg en etikett",
"No results" : "Ingen resultater",
"%s (invisible)" : "%s (usynlig)",
- "%s (restricted)" : "%s (begrenset)"
+ "%s (restricted)" : "%s (begrenset)",
+ "Predefined URLs" : "Forhåndsdefinerte URLer",
+ "Others" : "Andre"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/nl.js b/apps/workflowengine/l10n/nl.js
index d978ef9721c..d52e1246462 100644
--- a/apps/workflowengine/l10n/nl.js
+++ b/apps/workflowengine/l10n/nl.js
@@ -57,9 +57,7 @@ OC.L10N.register(
"Custom mimetype" : "Maatwerk mimetype",
"Please enter a valid time span" : "Geef een geldige tijdsinterval op",
"Select a request URL" : "Selecteer een aanvraag URL",
- "Predefined URLs" : "Voorgedefinieerde URL's",
"Files WebDAV" : "Bestanden WebDAV",
- "Others" : "Anderen",
"Custom URL" : "Maatwerk URL",
"Select a user agent" : "Selecteer een 'user agent'",
"Android client" : "Android client",
@@ -114,6 +112,8 @@ OC.L10N.register(
"Select a tag" : "Selecteer een markering",
"No results" : "Geen resultaten",
"%s (invisible)" : "%s (onzichtbaar)",
- "%s (restricted)" : "%s (beperkt)"
+ "%s (restricted)" : "%s (beperkt)",
+ "Predefined URLs" : "Voorgedefinieerde URL's",
+ "Others" : "Anderen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/nl.json b/apps/workflowengine/l10n/nl.json
index 9cc78c6d76d..4056b0f36d1 100644
--- a/apps/workflowengine/l10n/nl.json
+++ b/apps/workflowengine/l10n/nl.json
@@ -55,9 +55,7 @@
"Custom mimetype" : "Maatwerk mimetype",
"Please enter a valid time span" : "Geef een geldige tijdsinterval op",
"Select a request URL" : "Selecteer een aanvraag URL",
- "Predefined URLs" : "Voorgedefinieerde URL's",
"Files WebDAV" : "Bestanden WebDAV",
- "Others" : "Anderen",
"Custom URL" : "Maatwerk URL",
"Select a user agent" : "Selecteer een 'user agent'",
"Android client" : "Android client",
@@ -112,6 +110,8 @@
"Select a tag" : "Selecteer een markering",
"No results" : "Geen resultaten",
"%s (invisible)" : "%s (onzichtbaar)",
- "%s (restricted)" : "%s (beperkt)"
+ "%s (restricted)" : "%s (beperkt)",
+ "Predefined URLs" : "Voorgedefinieerde URL's",
+ "Others" : "Anderen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/pl.js b/apps/workflowengine/l10n/pl.js
index 31380f5cd40..e35c8210e0a 100644
--- a/apps/workflowengine/l10n/pl.js
+++ b/apps/workflowengine/l10n/pl.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Niestandardowy typ MIME",
"Please enter a valid time span" : "Podaj prawidłowy przedział czasu",
"Select a request URL" : "Wybierz adres URL żądania",
- "Predefined URLs" : "Przedefiniowanie URLs",
"Files WebDAV" : "Pliki WebDAV",
- "Others" : "Inne",
"Custom URL" : "Niestandardowy adres URL",
"Select a user agent" : "Wybierz klienta użytkownika",
"Android client" : "Klient Android",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Wybierz etykietę",
"No results" : "Brak wyników",
"%s (invisible)" : "%s (niewidoczny)",
- "%s (restricted)" : "%s (ograniczony)"
+ "%s (restricted)" : "%s (ograniczony)",
+ "Predefined URLs" : "Przedefiniowanie URLs",
+ "Others" : "Inne"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/workflowengine/l10n/pl.json b/apps/workflowengine/l10n/pl.json
index cb688ab834e..f811c812952 100644
--- a/apps/workflowengine/l10n/pl.json
+++ b/apps/workflowengine/l10n/pl.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Niestandardowy typ MIME",
"Please enter a valid time span" : "Podaj prawidłowy przedział czasu",
"Select a request URL" : "Wybierz adres URL żądania",
- "Predefined URLs" : "Przedefiniowanie URLs",
"Files WebDAV" : "Pliki WebDAV",
- "Others" : "Inne",
"Custom URL" : "Niestandardowy adres URL",
"Select a user agent" : "Wybierz klienta użytkownika",
"Android client" : "Klient Android",
@@ -113,6 +111,8 @@
"Select a tag" : "Wybierz etykietę",
"No results" : "Brak wyników",
"%s (invisible)" : "%s (niewidoczny)",
- "%s (restricted)" : "%s (ograniczony)"
+ "%s (restricted)" : "%s (ograniczony)",
+ "Predefined URLs" : "Przedefiniowanie URLs",
+ "Others" : "Inne"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/pt_BR.js b/apps/workflowengine/l10n/pt_BR.js
index 8ba41659e60..d5202fe7753 100644
--- a/apps/workflowengine/l10n/pt_BR.js
+++ b/apps/workflowengine/l10n/pt_BR.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Mimetype personalizado",
"Please enter a valid time span" : "Digite um período de tempo válido",
"Select a request URL" : "Selecione uma URL de solicitação",
- "Predefined URLs" : "URLs predefinidas",
"Files WebDAV" : "Arquivos WebDAV",
- "Others" : "Outros",
"Custom URL" : "URL personalizada",
"Select a user agent" : "Selecione um agente de usuário",
"Android client" : "Cliente Android",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Selecione uma etiqueta",
"No results" : "Nenhum resultado",
"%s (invisible)" : "%s (invisível)",
- "%s (restricted)" : "%s (restrito)"
+ "%s (restricted)" : "%s (restrito)",
+ "Predefined URLs" : "URLs predefinidas",
+ "Others" : "Outros"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/pt_BR.json b/apps/workflowengine/l10n/pt_BR.json
index 8c7859b2a66..d7cc7e893ac 100644
--- a/apps/workflowengine/l10n/pt_BR.json
+++ b/apps/workflowengine/l10n/pt_BR.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Mimetype personalizado",
"Please enter a valid time span" : "Digite um período de tempo válido",
"Select a request URL" : "Selecione uma URL de solicitação",
- "Predefined URLs" : "URLs predefinidas",
"Files WebDAV" : "Arquivos WebDAV",
- "Others" : "Outros",
"Custom URL" : "URL personalizada",
"Select a user agent" : "Selecione um agente de usuário",
"Android client" : "Cliente Android",
@@ -113,6 +111,8 @@
"Select a tag" : "Selecione uma etiqueta",
"No results" : "Nenhum resultado",
"%s (invisible)" : "%s (invisível)",
- "%s (restricted)" : "%s (restrito)"
+ "%s (restricted)" : "%s (restrito)",
+ "Predefined URLs" : "URLs predefinidas",
+ "Others" : "Outros"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/pt_PT.js b/apps/workflowengine/l10n/pt_PT.js
index 31f3a639b86..1b467acebee 100644
--- a/apps/workflowengine/l10n/pt_PT.js
+++ b/apps/workflowengine/l10n/pt_PT.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Select a comparator" : "Selecionar um comparador",
"Folder" : "Pasta",
"Images" : "Imagens",
- "Predefined URLs" : "URLs Predefinidos",
"Files WebDAV" : "Ficheiros WebDAV",
"Android client" : "Cliente de Android",
"iOS client" : "Cliente de iOS",
@@ -77,6 +76,7 @@ OC.L10N.register(
"is not member of" : "não é um membro de",
"No results" : "Sem resultados",
"%s (invisible)" : "%s (invisível)",
- "%s (restricted)" : "%s (limitado)"
+ "%s (restricted)" : "%s (limitado)",
+ "Predefined URLs" : "URLs Predefinidos"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/workflowengine/l10n/pt_PT.json b/apps/workflowengine/l10n/pt_PT.json
index fff173f217a..a5970b1158b 100644
--- a/apps/workflowengine/l10n/pt_PT.json
+++ b/apps/workflowengine/l10n/pt_PT.json
@@ -38,7 +38,6 @@
"Select a comparator" : "Selecionar um comparador",
"Folder" : "Pasta",
"Images" : "Imagens",
- "Predefined URLs" : "URLs Predefinidos",
"Files WebDAV" : "Ficheiros WebDAV",
"Android client" : "Cliente de Android",
"iOS client" : "Cliente de iOS",
@@ -75,6 +74,7 @@
"is not member of" : "não é um membro de",
"No results" : "Sem resultados",
"%s (invisible)" : "%s (invisível)",
- "%s (restricted)" : "%s (limitado)"
+ "%s (restricted)" : "%s (limitado)",
+ "Predefined URLs" : "URLs Predefinidos"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ru.js b/apps/workflowengine/l10n/ru.js
index b17ad3904be..41fc79861a5 100644
--- a/apps/workflowengine/l10n/ru.js
+++ b/apps/workflowengine/l10n/ru.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Пользовательский тип mime",
"Please enter a valid time span" : "Введите верный диапазон",
"Select a request URL" : "Выберите URL запроса",
- "Predefined URLs" : "Предопределенные URL",
"Files WebDAV" : "Файлы WebDAV",
- "Others" : "Другие",
"Custom URL" : "Пользовательский URL",
"Select a user agent" : "Выберите user agent",
"Android client" : "клиент для Android",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Выберите метку",
"No results" : "Нет результатов",
"%s (invisible)" : "%s (невидимый)",
- "%s (restricted)" : "%s (ограниченный)"
+ "%s (restricted)" : "%s (ограниченный)",
+ "Predefined URLs" : "Предопределенные URL",
+ "Others" : "Другие"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/workflowengine/l10n/ru.json b/apps/workflowengine/l10n/ru.json
index e26a0608cca..786912fc0a5 100644
--- a/apps/workflowengine/l10n/ru.json
+++ b/apps/workflowengine/l10n/ru.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Пользовательский тип mime",
"Please enter a valid time span" : "Введите верный диапазон",
"Select a request URL" : "Выберите URL запроса",
- "Predefined URLs" : "Предопределенные URL",
"Files WebDAV" : "Файлы WebDAV",
- "Others" : "Другие",
"Custom URL" : "Пользовательский URL",
"Select a user agent" : "Выберите user agent",
"Android client" : "клиент для Android",
@@ -113,6 +111,8 @@
"Select a tag" : "Выберите метку",
"No results" : "Нет результатов",
"%s (invisible)" : "%s (невидимый)",
- "%s (restricted)" : "%s (ограниченный)"
+ "%s (restricted)" : "%s (ограниченный)",
+ "Predefined URLs" : "Предопределенные URL",
+ "Others" : "Другие"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sc.js b/apps/workflowengine/l10n/sc.js
index 103836f47b2..79f5a69893c 100644
--- a/apps/workflowengine/l10n/sc.js
+++ b/apps/workflowengine/l10n/sc.js
@@ -57,9 +57,7 @@ OC.L10N.register(
"Custom mimetype" : "Personaliza sa genia MIME",
"Please enter a valid time span" : "Inserta•nche un'intervallu de tempus bàlidu",
"Select a request URL" : "Seletziona unu URL de rechesta",
- "Predefined URLs" : "URL predefinidos",
"Files WebDAV" : "Archìvios WebDAV",
- "Others" : "Àtere",
"Custom URL" : "Personaliza URL",
"Select a user agent" : "Seletziona un'agente de utente",
"Android client" : "Cliente Android",
@@ -114,6 +112,8 @@ OC.L10N.register(
"Select a tag" : "Seletziona un'eticheta",
"No results" : "Perunu resurtadu",
"%s (invisible)" : "%s (invisìbile)",
- "%s (restricted)" : "%s (limitadu)"
+ "%s (restricted)" : "%s (limitadu)",
+ "Predefined URLs" : "URL predefinidos",
+ "Others" : "Àtere"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/sc.json b/apps/workflowengine/l10n/sc.json
index 5dc118df9d3..02d991cead2 100644
--- a/apps/workflowengine/l10n/sc.json
+++ b/apps/workflowengine/l10n/sc.json
@@ -55,9 +55,7 @@
"Custom mimetype" : "Personaliza sa genia MIME",
"Please enter a valid time span" : "Inserta•nche un'intervallu de tempus bàlidu",
"Select a request URL" : "Seletziona unu URL de rechesta",
- "Predefined URLs" : "URL predefinidos",
"Files WebDAV" : "Archìvios WebDAV",
- "Others" : "Àtere",
"Custom URL" : "Personaliza URL",
"Select a user agent" : "Seletziona un'agente de utente",
"Android client" : "Cliente Android",
@@ -112,6 +110,8 @@
"Select a tag" : "Seletziona un'eticheta",
"No results" : "Perunu resurtadu",
"%s (invisible)" : "%s (invisìbile)",
- "%s (restricted)" : "%s (limitadu)"
+ "%s (restricted)" : "%s (limitadu)",
+ "Predefined URLs" : "URL predefinidos",
+ "Others" : "Àtere"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sk.js b/apps/workflowengine/l10n/sk.js
index b2e50988b10..c5f10cce3f8 100644
--- a/apps/workflowengine/l10n/sk.js
+++ b/apps/workflowengine/l10n/sk.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Vlastné typy mime",
"Please enter a valid time span" : "Zadajte prosím platné časové rozmedzie",
"Select a request URL" : "Vybrať URL požiadavku",
- "Predefined URLs" : "Preddefinované URL",
"Files WebDAV" : "WebDAV súbory",
- "Others" : "Ostatné",
"Custom URL" : "Vlastná URL",
"Select a user agent" : "Zvoliť užívateľského agenta",
"Android client" : "Android klient",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Vyber štítok",
"No results" : "Žiadne výsledky",
"%s (invisible)" : "%s (neviditeľné)",
- "%s (restricted)" : "%s (obmedzené)"
+ "%s (restricted)" : "%s (obmedzené)",
+ "Predefined URLs" : "Preddefinované URL",
+ "Others" : "Ostatné"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/workflowengine/l10n/sk.json b/apps/workflowengine/l10n/sk.json
index 721e02df4ca..ffc4f85955c 100644
--- a/apps/workflowengine/l10n/sk.json
+++ b/apps/workflowengine/l10n/sk.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Vlastné typy mime",
"Please enter a valid time span" : "Zadajte prosím platné časové rozmedzie",
"Select a request URL" : "Vybrať URL požiadavku",
- "Predefined URLs" : "Preddefinované URL",
"Files WebDAV" : "WebDAV súbory",
- "Others" : "Ostatné",
"Custom URL" : "Vlastná URL",
"Select a user agent" : "Zvoliť užívateľského agenta",
"Android client" : "Android klient",
@@ -113,6 +111,8 @@
"Select a tag" : "Vyber štítok",
"No results" : "Žiadne výsledky",
"%s (invisible)" : "%s (neviditeľné)",
- "%s (restricted)" : "%s (obmedzené)"
+ "%s (restricted)" : "%s (obmedzené)",
+ "Predefined URLs" : "Preddefinované URL",
+ "Others" : "Ostatné"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sl.js b/apps/workflowengine/l10n/sl.js
index 9f77ac286a8..ec1091d4b44 100644
--- a/apps/workflowengine/l10n/sl.js
+++ b/apps/workflowengine/l10n/sl.js
@@ -58,9 +58,7 @@ OC.L10N.register(
"Custom mimetype" : "Vrsta Mime po meri",
"Please enter a valid time span" : "Vpisati je treba veljaven časovni obseg",
"Select a request URL" : "Izberite naslov URL zahteve",
- "Predefined URLs" : "Določeni naslovi URL",
"Files WebDAV" : "Datoteke WebDAV",
- "Others" : "Ostali",
"Custom URL" : "Naslov URL po meri",
"Select a user agent" : "Izbor uporabniškega odjemalca",
"Android client" : "Odjemalec za Android",
@@ -115,6 +113,8 @@ OC.L10N.register(
"Select a tag" : "Izbor oznake",
"No results" : "Ni zadetkov",
"%s (invisible)" : "%s (nevidno)",
- "%s (restricted)" : "%s (omejeno)"
+ "%s (restricted)" : "%s (omejeno)",
+ "Predefined URLs" : "Določeni naslovi URL",
+ "Others" : "Ostali"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/workflowengine/l10n/sl.json b/apps/workflowengine/l10n/sl.json
index f8063bab5a1..7c1bec333f9 100644
--- a/apps/workflowengine/l10n/sl.json
+++ b/apps/workflowengine/l10n/sl.json
@@ -56,9 +56,7 @@
"Custom mimetype" : "Vrsta Mime po meri",
"Please enter a valid time span" : "Vpisati je treba veljaven časovni obseg",
"Select a request URL" : "Izberite naslov URL zahteve",
- "Predefined URLs" : "Določeni naslovi URL",
"Files WebDAV" : "Datoteke WebDAV",
- "Others" : "Ostali",
"Custom URL" : "Naslov URL po meri",
"Select a user agent" : "Izbor uporabniškega odjemalca",
"Android client" : "Odjemalec za Android",
@@ -113,6 +111,8 @@
"Select a tag" : "Izbor oznake",
"No results" : "Ni zadetkov",
"%s (invisible)" : "%s (nevidno)",
- "%s (restricted)" : "%s (omejeno)"
+ "%s (restricted)" : "%s (omejeno)",
+ "Predefined URLs" : "Določeni naslovi URL",
+ "Others" : "Ostali"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sq.js b/apps/workflowengine/l10n/sq.js
index c52dc4407e1..e8441a0b8a4 100644
--- a/apps/workflowengine/l10n/sq.js
+++ b/apps/workflowengine/l10n/sq.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Check %s is invalid or does not exist" : "Kontrolli %s është i pavlefshëm ose nuk ekziston",
"Folder" : "Skedari",
"Images" : "Imazhe ",
- "Predefined URLs" : "URL të paracaktuara",
"Files WebDAV" : "Skedarët WebDAV ",
"Android client" : "Klient Android",
"iOS client" : "Klient IOS",
@@ -60,6 +59,7 @@ OC.L10N.register(
"is not member of" : "nuk është anëtarë i",
"No results" : "Asnjë rezultat",
"%s (invisible)" : "%s (e padukshme)",
- "%s (restricted)" : "%s (e kufizuar)"
+ "%s (restricted)" : "%s (e kufizuar)",
+ "Predefined URLs" : "URL të paracaktuara"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/sq.json b/apps/workflowengine/l10n/sq.json
index 1ae2a9db035..dc13e94529b 100644
--- a/apps/workflowengine/l10n/sq.json
+++ b/apps/workflowengine/l10n/sq.json
@@ -20,7 +20,6 @@
"Check %s is invalid or does not exist" : "Kontrolli %s është i pavlefshëm ose nuk ekziston",
"Folder" : "Skedari",
"Images" : "Imazhe ",
- "Predefined URLs" : "URL të paracaktuara",
"Files WebDAV" : "Skedarët WebDAV ",
"Android client" : "Klient Android",
"iOS client" : "Klient IOS",
@@ -58,6 +57,7 @@
"is not member of" : "nuk është anëtarë i",
"No results" : "Asnjë rezultat",
"%s (invisible)" : "%s (e padukshme)",
- "%s (restricted)" : "%s (e kufizuar)"
+ "%s (restricted)" : "%s (e kufizuar)",
+ "Predefined URLs" : "URL të paracaktuara"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sr.js b/apps/workflowengine/l10n/sr.js
index 2ec55222278..3606065fb36 100644
--- a/apps/workflowengine/l10n/sr.js
+++ b/apps/workflowengine/l10n/sr.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Некстклаудов мотор радног тока",
"Select a filter" : "Одаберите филтер",
"Select a comparator" : "Одаберите компаратор",
+ "Remove filter" : "Уклони филтер",
"Select a file type" : "Одаберите тип фајла",
"e.g. httpd/unix-directory" : "нпр. httpd/unix-directory",
"Folder" : "Фасцикла",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "Произвољни MIME тип",
"Please enter a valid time span" : "Унесите исправан временски распон",
"Select a request URL" : "Одабери адресу захтева",
- "Predefined URLs" : "Предефинисане адресе",
"Files WebDAV" : "WebDAV фајлови",
- "Others" : "Остали",
"Custom URL" : "Произвољна адреса",
"Select a user agent" : "Одаберите агента захтева",
"Android client" : "Андроид клијент",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "Додај нови ток",
"When" : "Када",
"and" : "и",
+ "Add a new filter" : "Додај нови филтер",
"Cancel" : "Откажи",
"Delete" : "Обриши",
"The configuration is invalid" : "Конфигурација је неисправна",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "Одаберите ознаку",
"No results" : "Нема резултата",
"%s (invisible)" : "%s (невидљив)",
- "%s (restricted)" : "%s (ограничен)"
+ "%s (restricted)" : "%s (ограничен)",
+ "Predefined URLs" : "Предефинисане адресе",
+ "Others" : "Остали"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/workflowengine/l10n/sr.json b/apps/workflowengine/l10n/sr.json
index 36cc52bf388..bbb7887b459 100644
--- a/apps/workflowengine/l10n/sr.json
+++ b/apps/workflowengine/l10n/sr.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Некстклаудов мотор радног тока",
"Select a filter" : "Одаберите филтер",
"Select a comparator" : "Одаберите компаратор",
+ "Remove filter" : "Уклони филтер",
"Select a file type" : "Одаберите тип фајла",
"e.g. httpd/unix-directory" : "нпр. httpd/unix-directory",
"Folder" : "Фасцикла",
@@ -56,9 +57,7 @@
"Custom mimetype" : "Произвољни MIME тип",
"Please enter a valid time span" : "Унесите исправан временски распон",
"Select a request URL" : "Одабери адресу захтева",
- "Predefined URLs" : "Предефинисане адресе",
"Files WebDAV" : "WebDAV фајлови",
- "Others" : "Остали",
"Custom URL" : "Произвољна адреса",
"Select a user agent" : "Одаберите агента захтева",
"Android client" : "Андроид клијент",
@@ -70,6 +69,7 @@
"Add new flow" : "Додај нови ток",
"When" : "Када",
"and" : "и",
+ "Add a new filter" : "Додај нови филтер",
"Cancel" : "Откажи",
"Delete" : "Обриши",
"The configuration is invalid" : "Конфигурација је неисправна",
@@ -113,6 +113,8 @@
"Select a tag" : "Одаберите ознаку",
"No results" : "Нема резултата",
"%s (invisible)" : "%s (невидљив)",
- "%s (restricted)" : "%s (ограничен)"
+ "%s (restricted)" : "%s (ограничен)",
+ "Predefined URLs" : "Предефинисане адресе",
+ "Others" : "Остали"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sv.js b/apps/workflowengine/l10n/sv.js
index e786e38b021..45a00308d80 100644
--- a/apps/workflowengine/l10n/sv.js
+++ b/apps/workflowengine/l10n/sv.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Nextcloud arbetsflödesmotor",
"Select a filter" : "Välj ett filter",
"Select a comparator" : "Välj en jämförelse",
+ "Remove filter" : "Ta bort filter",
"Select a file type" : "Välj en filtyp",
"e.g. httpd/unix-directory" : "t.ex. httpd/unix-directory",
"Folder" : "Mapp",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "Anpassad mimetyp",
"Please enter a valid time span" : "Ange ett giltigt tidsintervall",
"Select a request URL" : "Välj en webbadress för begäran",
- "Predefined URLs" : "Förinställda webbadresser",
"Files WebDAV" : "Filer WebDAV",
- "Others" : "Övriga",
"Custom URL" : "Anpassad webbadress",
"Select a user agent" : "Välj en användaragent",
"Android client" : "Android-klient",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "Lägg till nytt flöde",
"When" : "När",
"and" : "och",
+ "Add a new filter" : "Lägg till nytt filter",
"Cancel" : "Avbryt",
"Delete" : "Radera",
"The configuration is invalid" : "Konfigurationen är felaktig",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "Välj en tagg",
"No results" : "Inga resultat",
"%s (invisible)" : "%s (osynlig)",
- "%s (restricted)" : "%s (begränsad)"
+ "%s (restricted)" : "%s (begränsad)",
+ "Predefined URLs" : "Förinställda webbadresser",
+ "Others" : "Övriga"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/sv.json b/apps/workflowengine/l10n/sv.json
index 4e318c7c770..0cfb7d63e19 100644
--- a/apps/workflowengine/l10n/sv.json
+++ b/apps/workflowengine/l10n/sv.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Nextcloud arbetsflödesmotor",
"Select a filter" : "Välj ett filter",
"Select a comparator" : "Välj en jämförelse",
+ "Remove filter" : "Ta bort filter",
"Select a file type" : "Välj en filtyp",
"e.g. httpd/unix-directory" : "t.ex. httpd/unix-directory",
"Folder" : "Mapp",
@@ -56,9 +57,7 @@
"Custom mimetype" : "Anpassad mimetyp",
"Please enter a valid time span" : "Ange ett giltigt tidsintervall",
"Select a request URL" : "Välj en webbadress för begäran",
- "Predefined URLs" : "Förinställda webbadresser",
"Files WebDAV" : "Filer WebDAV",
- "Others" : "Övriga",
"Custom URL" : "Anpassad webbadress",
"Select a user agent" : "Välj en användaragent",
"Android client" : "Android-klient",
@@ -70,6 +69,7 @@
"Add new flow" : "Lägg till nytt flöde",
"When" : "När",
"and" : "och",
+ "Add a new filter" : "Lägg till nytt filter",
"Cancel" : "Avbryt",
"Delete" : "Radera",
"The configuration is invalid" : "Konfigurationen är felaktig",
@@ -113,6 +113,8 @@
"Select a tag" : "Välj en tagg",
"No results" : "Inga resultat",
"%s (invisible)" : "%s (osynlig)",
- "%s (restricted)" : "%s (begränsad)"
+ "%s (restricted)" : "%s (begränsad)",
+ "Predefined URLs" : "Förinställda webbadresser",
+ "Others" : "Övriga"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/tr.js b/apps/workflowengine/l10n/tr.js
index fcd8ed039c0..5f79903c27e 100644
--- a/apps/workflowengine/l10n/tr.js
+++ b/apps/workflowengine/l10n/tr.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Nextcloud iş akışı işleyici",
"Select a filter" : "Bir süzgeç seçin",
"Select a comparator" : "Bir karşılaştırıcı seçin",
+ "Remove filter" : "Süzgeci kaldır",
"Select a file type" : "Bir dosya türü seçin",
"e.g. httpd/unix-directory" : "örnek httpd/unix-directory",
"Folder" : "Klasör",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "Özel MIME türü",
"Please enter a valid time span" : "Lütfen geçerli bir tarih aralığı seçin",
"Select a request URL" : "Bir istek adresi seçin",
- "Predefined URLs" : "Hazır adresler",
"Files WebDAV" : "Dosya WebDAV",
- "Others" : "Diğerleri",
"Custom URL" : "Özel adres",
"Select a user agent" : "Bir kullanıcı uygulaması seçin",
"Android client" : "Android istemcisi",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "Akış ekle",
"When" : "Şu zamanda",
"and" : "ve",
+ "Add a new filter" : "Yeni süzgeç ekle",
"Cancel" : "İptal",
"Delete" : "Sil",
"The configuration is invalid" : "Yapılandırma geçersiz",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "Etiket seçin",
"No results" : "Herhangi bir sonuç bulunamadı",
"%s (invisible)" : "%s (görünmez)",
- "%s (restricted)" : "%s (kısıtlanmış)"
+ "%s (restricted)" : "%s (kısıtlanmış)",
+ "Predefined URLs" : "Hazır adresler",
+ "Others" : "Diğerleri"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json
index fbb120ed96d..c36defc5fed 100644
--- a/apps/workflowengine/l10n/tr.json
+++ b/apps/workflowengine/l10n/tr.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Nextcloud iş akışı işleyici",
"Select a filter" : "Bir süzgeç seçin",
"Select a comparator" : "Bir karşılaştırıcı seçin",
+ "Remove filter" : "Süzgeci kaldır",
"Select a file type" : "Bir dosya türü seçin",
"e.g. httpd/unix-directory" : "örnek httpd/unix-directory",
"Folder" : "Klasör",
@@ -56,9 +57,7 @@
"Custom mimetype" : "Özel MIME türü",
"Please enter a valid time span" : "Lütfen geçerli bir tarih aralığı seçin",
"Select a request URL" : "Bir istek adresi seçin",
- "Predefined URLs" : "Hazır adresler",
"Files WebDAV" : "Dosya WebDAV",
- "Others" : "Diğerleri",
"Custom URL" : "Özel adres",
"Select a user agent" : "Bir kullanıcı uygulaması seçin",
"Android client" : "Android istemcisi",
@@ -70,6 +69,7 @@
"Add new flow" : "Akış ekle",
"When" : "Şu zamanda",
"and" : "ve",
+ "Add a new filter" : "Yeni süzgeç ekle",
"Cancel" : "İptal",
"Delete" : "Sil",
"The configuration is invalid" : "Yapılandırma geçersiz",
@@ -113,6 +113,8 @@
"Select a tag" : "Etiket seçin",
"No results" : "Herhangi bir sonuç bulunamadı",
"%s (invisible)" : "%s (görünmez)",
- "%s (restricted)" : "%s (kısıtlanmış)"
+ "%s (restricted)" : "%s (kısıtlanmış)",
+ "Predefined URLs" : "Hazır adresler",
+ "Others" : "Diğerleri"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/uk.js b/apps/workflowengine/l10n/uk.js
index 0704b9fafbf..f0a64310aeb 100644
--- a/apps/workflowengine/l10n/uk.js
+++ b/apps/workflowengine/l10n/uk.js
@@ -43,9 +43,7 @@ OC.L10N.register(
"PDF documents" : "Документи PDF",
"Custom mimetype" : "Власний mimetype",
"Select a request URL" : "Виберіть URL для запиту",
- "Predefined URLs" : "Попередньо визначені URL-адреси",
"Files WebDAV" : "Файли WebDAV",
- "Others" : "Інші",
"Custom URL" : "Власний URL",
"Android client" : "Клієнт Android",
"iOS client" : "iOS клієнт",
@@ -95,6 +93,8 @@ OC.L10N.register(
"is not member of" : "не є учасником",
"No results" : "Немає результатів",
"%s (invisible)" : "%s (невидимий)",
- "%s (restricted)" : "%s(обмежено)"
+ "%s (restricted)" : "%s(обмежено)",
+ "Predefined URLs" : "Попередньо визначені URL-адреси",
+ "Others" : "Інші"
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/apps/workflowengine/l10n/uk.json b/apps/workflowengine/l10n/uk.json
index 1b6a01a100d..9174812ac38 100644
--- a/apps/workflowengine/l10n/uk.json
+++ b/apps/workflowengine/l10n/uk.json
@@ -41,9 +41,7 @@
"PDF documents" : "Документи PDF",
"Custom mimetype" : "Власний mimetype",
"Select a request URL" : "Виберіть URL для запиту",
- "Predefined URLs" : "Попередньо визначені URL-адреси",
"Files WebDAV" : "Файли WebDAV",
- "Others" : "Інші",
"Custom URL" : "Власний URL",
"Android client" : "Клієнт Android",
"iOS client" : "iOS клієнт",
@@ -93,6 +91,8 @@
"is not member of" : "не є учасником",
"No results" : "Немає результатів",
"%s (invisible)" : "%s (невидимий)",
- "%s (restricted)" : "%s(обмежено)"
+ "%s (restricted)" : "%s(обмежено)",
+ "Predefined URLs" : "Попередньо визначені URL-адреси",
+ "Others" : "Інші"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/zh_CN.js b/apps/workflowengine/l10n/zh_CN.js
index 858a765020d..08ea170b102 100644
--- a/apps/workflowengine/l10n/zh_CN.js
+++ b/apps/workflowengine/l10n/zh_CN.js
@@ -57,9 +57,7 @@ OC.L10N.register(
"Custom mimetype" : "自定义MIME类型",
"Please enter a valid time span" : "请输入有效的时间范围",
"Select a request URL" : "选择一个请求URL",
- "Predefined URLs" : "预定义 URL",
"Files WebDAV" : "文件 WebDAV",
- "Others" : "其它",
"Custom URL" : "自定义URL",
"Select a user agent" : "选择一个用户代理",
"Android client" : "Android 客户端",
@@ -114,6 +112,8 @@ OC.L10N.register(
"Select a tag" : "选择标签",
"No results" : "没有结果",
"%s (invisible)" : "%s(不可见)",
- "%s (restricted)" : "%s(受限)"
+ "%s (restricted)" : "%s(受限)",
+ "Predefined URLs" : "预定义 URL",
+ "Others" : "其它"
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/zh_CN.json b/apps/workflowengine/l10n/zh_CN.json
index 4c5bf844ef8..f412c0fe65e 100644
--- a/apps/workflowengine/l10n/zh_CN.json
+++ b/apps/workflowengine/l10n/zh_CN.json
@@ -55,9 +55,7 @@
"Custom mimetype" : "自定义MIME类型",
"Please enter a valid time span" : "请输入有效的时间范围",
"Select a request URL" : "选择一个请求URL",
- "Predefined URLs" : "预定义 URL",
"Files WebDAV" : "文件 WebDAV",
- "Others" : "其它",
"Custom URL" : "自定义URL",
"Select a user agent" : "选择一个用户代理",
"Android client" : "Android 客户端",
@@ -112,6 +110,8 @@
"Select a tag" : "选择标签",
"No results" : "没有结果",
"%s (invisible)" : "%s(不可见)",
- "%s (restricted)" : "%s(受限)"
+ "%s (restricted)" : "%s(受限)",
+ "Predefined URLs" : "预定义 URL",
+ "Others" : "其它"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/zh_HK.js b/apps/workflowengine/l10n/zh_HK.js
index 26b6589a9dc..2f6364041c4 100644
--- a/apps/workflowengine/l10n/zh_HK.js
+++ b/apps/workflowengine/l10n/zh_HK.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Nextcloud 工作流程引擎",
"Select a filter" : "選擇過濾器",
"Select a comparator" : "選擇比較器",
+ "Remove filter" : "移除過濾",
"Select a file type" : "選擇檔案類型",
"e.g. httpd/unix-directory" : "例如 httpd/unix-directory",
"Folder" : "資料夾",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "自訂 mimetype",
"Please enter a valid time span" : "請輸入有效的時間跨度",
"Select a request URL" : "選擇一個請求URL",
- "Predefined URLs" : "預定義網址",
"Files WebDAV" : "檔案 WebDAV",
- "Others" : "其他",
"Custom URL" : "自訂 URL",
"Select a user agent" : "選擇用戶 agent",
"Android client" : "Android 客戶端",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "添加新流程",
"When" : "時間",
"and" : "及",
+ "Add a new filter" : "添加新過濾",
"Cancel" : "取消",
"Delete" : "刪除",
"The configuration is invalid" : "配置無效",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "選擇標籤",
"No results" : "沒有符合搜尋的項目",
"%s (invisible)" : "%s (隱藏)",
- "%s (restricted)" : "%s (受限)"
+ "%s (restricted)" : "%s (受限)",
+ "Predefined URLs" : "預定義網址",
+ "Others" : "其他"
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/zh_HK.json b/apps/workflowengine/l10n/zh_HK.json
index 99c2ca5fe4f..edfdce484fa 100644
--- a/apps/workflowengine/l10n/zh_HK.json
+++ b/apps/workflowengine/l10n/zh_HK.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Nextcloud 工作流程引擎",
"Select a filter" : "選擇過濾器",
"Select a comparator" : "選擇比較器",
+ "Remove filter" : "移除過濾",
"Select a file type" : "選擇檔案類型",
"e.g. httpd/unix-directory" : "例如 httpd/unix-directory",
"Folder" : "資料夾",
@@ -56,9 +57,7 @@
"Custom mimetype" : "自訂 mimetype",
"Please enter a valid time span" : "請輸入有效的時間跨度",
"Select a request URL" : "選擇一個請求URL",
- "Predefined URLs" : "預定義網址",
"Files WebDAV" : "檔案 WebDAV",
- "Others" : "其他",
"Custom URL" : "自訂 URL",
"Select a user agent" : "選擇用戶 agent",
"Android client" : "Android 客戶端",
@@ -70,6 +69,7 @@
"Add new flow" : "添加新流程",
"When" : "時間",
"and" : "及",
+ "Add a new filter" : "添加新過濾",
"Cancel" : "取消",
"Delete" : "刪除",
"The configuration is invalid" : "配置無效",
@@ -113,6 +113,8 @@
"Select a tag" : "選擇標籤",
"No results" : "沒有符合搜尋的項目",
"%s (invisible)" : "%s (隱藏)",
- "%s (restricted)" : "%s (受限)"
+ "%s (restricted)" : "%s (受限)",
+ "Predefined URLs" : "預定義網址",
+ "Others" : "其他"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/zh_TW.js b/apps/workflowengine/l10n/zh_TW.js
index d3a6d6f78fa..9617d85434a 100644
--- a/apps/workflowengine/l10n/zh_TW.js
+++ b/apps/workflowengine/l10n/zh_TW.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"Nextcloud workflow engine" : "Nextcloud 工作流程引擎",
"Select a filter" : "選取過濾條件",
"Select a comparator" : "選取比較程式",
+ "Remove filter" : "移除過濾條件",
"Select a file type" : "選取檔案類型",
"e.g. httpd/unix-directory" : "例如:httpd/unix-directory",
"Folder" : "資料夾",
@@ -58,9 +59,7 @@ OC.L10N.register(
"Custom mimetype" : "自訂 mimetype",
"Please enter a valid time span" : "請輸入有效的時間範圍",
"Select a request URL" : "選取請求 URL",
- "Predefined URLs" : "預定義 URL",
"Files WebDAV" : "檔案 WebDAV",
- "Others" : "其他",
"Custom URL" : "自訂 URL",
"Select a user agent" : "選取使用者代理字串",
"Android client" : "Android 客戶端",
@@ -72,6 +71,7 @@ OC.L10N.register(
"Add new flow" : "新增新流程",
"When" : "當",
"and" : "與",
+ "Add a new filter" : "新增過濾條件",
"Cancel" : "取消",
"Delete" : "刪除",
"The configuration is invalid" : "設定無效",
@@ -115,6 +115,8 @@ OC.L10N.register(
"Select a tag" : "選取標籤",
"No results" : "無結果",
"%s (invisible)" : "%s(隱藏)",
- "%s (restricted)" : "%s(受限)"
+ "%s (restricted)" : "%s(受限)",
+ "Predefined URLs" : "預定義 URL",
+ "Others" : "其他"
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/zh_TW.json b/apps/workflowengine/l10n/zh_TW.json
index 93e602b8696..e9a557f1cce 100644
--- a/apps/workflowengine/l10n/zh_TW.json
+++ b/apps/workflowengine/l10n/zh_TW.json
@@ -46,6 +46,7 @@
"Nextcloud workflow engine" : "Nextcloud 工作流程引擎",
"Select a filter" : "選取過濾條件",
"Select a comparator" : "選取比較程式",
+ "Remove filter" : "移除過濾條件",
"Select a file type" : "選取檔案類型",
"e.g. httpd/unix-directory" : "例如:httpd/unix-directory",
"Folder" : "資料夾",
@@ -56,9 +57,7 @@
"Custom mimetype" : "自訂 mimetype",
"Please enter a valid time span" : "請輸入有效的時間範圍",
"Select a request URL" : "選取請求 URL",
- "Predefined URLs" : "預定義 URL",
"Files WebDAV" : "檔案 WebDAV",
- "Others" : "其他",
"Custom URL" : "自訂 URL",
"Select a user agent" : "選取使用者代理字串",
"Android client" : "Android 客戶端",
@@ -70,6 +69,7 @@
"Add new flow" : "新增新流程",
"When" : "當",
"and" : "與",
+ "Add a new filter" : "新增過濾條件",
"Cancel" : "取消",
"Delete" : "刪除",
"The configuration is invalid" : "設定無效",
@@ -113,6 +113,8 @@
"Select a tag" : "選取標籤",
"No results" : "無結果",
"%s (invisible)" : "%s(隱藏)",
- "%s (restricted)" : "%s(受限)"
+ "%s (restricted)" : "%s(受限)",
+ "Predefined URLs" : "預定義 URL",
+ "Others" : "其他"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/src/components/Check.vue b/apps/workflowengine/src/components/Check.vue
index 427835a7ec7..83f823838f7 100644
--- a/apps/workflowengine/src/components/Check.vue
+++ b/apps/workflowengine/src/components/Check.vue
@@ -1,20 +1,20 @@
<template>
<div v-click-outside="hideDelete" class="check" @click="showDelete">
- <NcMultiselect ref="checkSelector"
+ <NcSelect ref="checkSelector"
v-model="currentOption"
:options="options"
label="name"
track-by="class"
- :allow-empty="false"
+ :clearable="false"
:placeholder="t('workflowengine', 'Select a filter')"
@input="updateCheck" />
- <NcMultiselect v-model="currentOperator"
+ <NcSelect v-model="currentOperator"
:disabled="!currentOption"
:options="operators"
class="comparator"
label="name"
track-by="operator"
- :allow-empty="false"
+ :clearable="false"
:placeholder="t('workflowengine', 'Select a comparator')"
@input="updateCheck" />
<component :is="currentOption.component"
@@ -35,15 +35,22 @@
class="option"
@input="updateCheck">
<NcActions v-if="deleteVisible || !currentOption">
- <NcActionButton icon="icon-close" @click="$emit('remove')" />
+ <NcActionButton :title="t('workflowengine', 'Remove filter')" @click="$emit('remove')">
+ <template #icon>
+ <CloseIcon :size="20" />
+ </template>
+ </NcActionButton>
</NcActions>
</div>
</template>
<script>
-import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import NcActions from '@nextcloud/vue/dist/Components/NcActions.js'
import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
+import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
+
+import CloseIcon from 'vue-material-design-icons/Close.vue'
+
import ClickOutside from 'vue-click-outside'
export default {
@@ -51,7 +58,10 @@ export default {
components: {
NcActionButton,
NcActions,
- NcMultiselect,
+ NcSelect,
+
+ // Icons
+ CloseIcon,
},
directives: {
ClickOutside,
@@ -151,45 +161,36 @@ export default {
.check {
display: flex;
flex-wrap: wrap;
+ align-items: flex-start; // to not stretch components vertically
width: 100%;
padding-right: 20px;
+
& > *:not(.close) {
width: 180px;
}
& > .comparator {
- min-width: 130px;
- width: 130px;
+ min-width: 200px;
+ width: 200px;
}
& > .option {
- min-width: 230px;
- width: 230px;
+ min-width: 260px;
+ width: 260px;
+ min-height: 48px;
+
+ & > input[type=text] {
+ min-height: 48px;
+ }
}
- & > .multiselect,
+ & > .v-select,
+ & > .button-vue,
& > input[type=text] {
margin-right: 5px;
margin-bottom: 5px;
}
-
- .multiselect::v-deep .multiselect__content-wrapper li>span,
- .multiselect::v-deep .multiselect__single {
- display: block;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
}
input[type=text] {
margin: 0;
}
- ::placeholder {
- font-size: 10px;
- }
- button.action-item.action-item--single.icon-close {
- height: 44px;
- width: 44px;
- margin-top: -5px;
- margin-bottom: -5px;
- }
.invalid {
border-color: var(--color-error) !important;
}
diff --git a/apps/workflowengine/src/components/Checks/FileMimeType.vue b/apps/workflowengine/src/components/Checks/FileMimeType.vue
index 472edda613a..941347f0aa2 100644
--- a/apps/workflowengine/src/components/Checks/FileMimeType.vue
+++ b/apps/workflowengine/src/components/Checks/FileMimeType.vue
@@ -21,48 +21,50 @@
-->
<template>
<div>
- <NcMultiselect :value="currentValue"
+ <NcSelect :value="currentValue"
:placeholder="t('workflowengine', 'Select a file type')"
label="label"
- track-by="pattern"
:options="options"
- :multiple="false"
- :tagging="false"
+ :clearable="false"
@input="setValue">
- <template slot="singleLabel" slot-scope="props">
- <span v-if="props.option.icon" class="option__icon" :class="props.option.icon" />
- <img v-else
- class="option__icon-img"
- :src="props.option.iconUrl"
- alt="">
- <span class="option__title option__title_single">{{ props.option.label }}</span>
+ <template #option="option">
+ <span v-if="option.icon" class="option__icon" :class="option.icon" />
+ <span v-else class="option__icon-img">
+ <img :src="option.iconUrl" alt="">
+ </span>
+ <span class="option__title">
+ <NcEllipsisedOption :name="String(option.label)" />
+ </span>
</template>
- <template slot="option" slot-scope="props">
- <span v-if="props.option.icon" class="option__icon" :class="props.option.icon" />
- <img v-else
- class="option__icon-img"
- :src="props.option.iconUrl"
- alt="">
- <span class="option__title">{{ props.option.label }}</span>
+ <template #selected-option="selectedOption">
+ <span v-if="selectedOption.icon" class="option__icon" :class="selectedOption.icon" />
+ <span v-else class="option__icon-img">
+ <img :src="selectedOption.iconUrl" alt="">
+ </span>
+ <span class="option__title">
+ <NcEllipsisedOption :name="String(selectedOption.label)" />
+ </span>
</template>
- </NcMultiselect>
+ </NcSelect>
<input v-if="!isPredefined"
type="text"
- :value="currentValue.pattern"
+ :value="currentValue.id"
:placeholder="t('workflowengine', 'e.g. httpd/unix-directory')"
@input="updateCustom">
</div>
</template>
<script>
-import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
+import NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'
+import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import valueMixin from './../../mixins/valueMixin.js'
import { imagePath } from '@nextcloud/router'
export default {
name: 'FileMimeType',
components: {
- NcMultiselect,
+ NcEllipsisedOption,
+ NcSelect,
},
mixins: [
valueMixin,
@@ -73,22 +75,22 @@ export default {
{
icon: 'icon-folder',
label: t('workflowengine', 'Folder'),
- pattern: 'httpd/unix-directory',
+ id: 'httpd/unix-directory',
},
{
icon: 'icon-picture',
label: t('workflowengine', 'Images'),
- pattern: '/image\\/.*/',
+ id: '/image\\/.*/',
},
{
iconUrl: imagePath('core', 'filetypes/x-office-document'),
label: t('workflowengine', 'Office documents'),
- pattern: '/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/',
+ id: '/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/',
},
{
iconUrl: imagePath('core', 'filetypes/application-pdf'),
label: t('workflowengine', 'PDF documents'),
- pattern: 'application/pdf',
+ id: 'application/pdf',
},
],
}
@@ -98,7 +100,7 @@ export default {
return [...this.predefinedTypes, this.customValue]
},
isPredefined() {
- const matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)
+ const matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.id)
if (matchingPredefined) {
return true
}
@@ -108,18 +110,18 @@ export default {
return {
icon: 'icon-settings-dark',
label: t('workflowengine', 'Custom MIME type'),
- pattern: '',
+ id: '',
}
},
currentValue() {
- const matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)
+ const matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.id)
if (matchingPredefined) {
return matchingPredefined
}
return {
icon: 'icon-settings-dark',
label: t('workflowengine', 'Custom mimetype'),
- pattern: this.newValue,
+ id: this.newValue,
}
},
},
@@ -131,7 +133,7 @@ export default {
},
setValue(value) {
if (value !== null) {
- this.newValue = value.pattern
+ this.newValue = value.id
this.$emit('input', this.newValue)
}
},
@@ -143,24 +145,30 @@ export default {
}
</script>
<style scoped lang="scss">
-.multiselect, input[type='text'] {
+.v-select,
+input[type='text'] {
width: 100%;
}
-.multiselect::v-deep .multiselect__content-wrapper li > span,
-.multiselect::v-deep .multiselect__single {
- display: flex;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
+
+input[type=text] {
+ min-height: 48px;
}
-.option__icon {
+.option__icon,
+.option__icon-img {
display: inline-block;
min-width: 30px;
- background-position: left;
+ background-position: center;
+ vertical-align: middle;
}
.option__icon-img {
- margin-right: 14px;
+ text-align: center;
+}
+
+.option__title {
+ display: inline-flex;
+ width: calc(100% - 36px);
+ vertical-align: middle;
}
</style>
diff --git a/apps/workflowengine/src/components/Checks/RequestTime.vue b/apps/workflowengine/src/components/Checks/RequestTime.vue
index 79a91c0e544..36177e6ad65 100644
--- a/apps/workflowengine/src/components/Checks/RequestTime.vue
+++ b/apps/workflowengine/src/components/Checks/RequestTime.vue
@@ -12,15 +12,16 @@
<p v-if="!valid" class="invalid-hint">
{{ t('workflowengine', 'Please enter a valid time span') }}
</p>
- <NcMultiselect v-show="valid"
+ <NcSelect v-show="valid"
v-model="newValue.timezone"
+ :clearable="false"
:options="timezones"
@input="update" />
</div>
</template>
<script>
-import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
+import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import moment from 'moment-timezone'
import valueMixin from '../../mixins/valueMixin.js'
@@ -28,7 +29,7 @@ const zones = moment.tz.names()
export default {
name: 'RequestTime',
components: {
- NcMultiselect,
+ NcSelect,
},
mixins: [
valueMixin,
@@ -112,6 +113,7 @@ export default {
width: 50%;
margin: 0;
margin-bottom: 5px;
+ min-height: 48px;
&.timeslot--start {
margin-right: 5px;
diff --git a/apps/workflowengine/src/components/Checks/RequestURL.vue b/apps/workflowengine/src/components/Checks/RequestURL.vue
index 28184a52eb5..ce5e009cde9 100644
--- a/apps/workflowengine/src/components/Checks/RequestURL.vue
+++ b/apps/workflowengine/src/components/Checks/RequestURL.vue
@@ -22,41 +22,43 @@
<template>
<div>
- <NcMultiselect :value="currentValue"
+ <NcSelect :value="currentValue"
:placeholder="t('workflowengine', 'Select a request URL')"
label="label"
- track-by="pattern"
- group-values="children"
- group-label="label"
+ :clearable="false"
:options="options"
- :multiple="false"
- :tagging="false"
@input="setValue">
- <template slot="singleLabel" slot-scope="props">
- <span class="option__icon" :class="props.option.icon" />
- <span class="option__title option__title_single">{{ props.option.label }}</span>
+ <template #option="option">
+ <span class="option__icon" :class="option.icon" />
+ <span class="option__title">
+ <NcEllipsisedOption :name="String(option.label)" />
+ </span>
</template>
- <template slot="option" slot-scope="props">
- <span class="option__icon" :class="props.option.icon" />
- <span class="option__title">{{ props.option.label }} {{ props.option.$groupLabel }}</span>
+ <template #selected-option="selectedOption">
+ <span class="option__icon" :class="selectedOption.icon" />
+ <span class="option__title">
+ <NcEllipsisedOption :name="String(selectedOption.label)" />
+ </span>
</template>
- </NcMultiselect>
+ </NcSelect>
<input v-if="!isPredefined"
type="text"
- :value="currentValue.pattern"
+ :value="currentValue.id"
:placeholder="placeholder"
@input="updateCustom">
</div>
</template>
<script>
-import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
+import NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'
+import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import valueMixin from '../../mixins/valueMixin.js'
export default {
name: 'RequestURL',
components: {
- NcMultiselect,
+ NcEllipsisedOption,
+ NcSelect,
},
mixins: [
valueMixin,
@@ -66,10 +68,9 @@ export default {
newValue: '',
predefinedTypes: [
{
- label: t('workflowengine', 'Predefined URLs'),
- children: [
- { pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },
- ],
+ icon: 'icon-files-dark',
+ id: 'webdav',
+ label: t('workflowengine', 'Files WebDAV'),
},
],
}
@@ -86,23 +87,16 @@ export default {
},
matchingPredefined() {
return this.predefinedTypes
- .map(groups => groups.children)
- .flat()
- .find((type) => this.newValue === type.pattern)
+ .find((type) => this.newValue === type.id)
},
isPredefined() {
return !!this.matchingPredefined
},
customValue() {
return {
- label: t('workflowengine', 'Others'),
- children: [
- {
- icon: 'icon-settings-dark',
- label: t('workflowengine', 'Custom URL'),
- pattern: '',
- },
- ],
+ icon: 'icon-settings-dark',
+ label: t('workflowengine', 'Custom URL'),
+ id: '',
}
},
currentValue() {
@@ -112,7 +106,7 @@ export default {
return {
icon: 'icon-settings-dark',
label: t('workflowengine', 'Custom URL'),
- pattern: this.newValue,
+ id: this.newValue,
}
},
},
@@ -125,7 +119,7 @@ export default {
setValue(value) {
// TODO: check if value requires a regex and set the check operator according to that
if (value !== null) {
- this.newValue = value.pattern
+ this.newValue = value.id
this.$emit('input', this.newValue)
}
},
@@ -137,13 +131,24 @@ export default {
}
</script>
<style scoped lang="scss">
- .multiselect, input[type='text'] {
+ .v-select,
+ input[type='text'] {
width: 100%;
}
+ input[type='text'] {
+ min-height: 48px;
+ }
.option__icon {
display: inline-block;
min-width: 30px;
- background-position: left;
+ background-position: center;
+ vertical-align: middle;
+ }
+
+ .option__title {
+ display: inline-flex;
+ width: calc(100% - 36px);
+ vertical-align: middle;
}
</style>
diff --git a/apps/workflowengine/src/components/Checks/RequestUserAgent.vue b/apps/workflowengine/src/components/Checks/RequestUserAgent.vue
index 1d00bdc238d..eccf76ae58c 100644
--- a/apps/workflowengine/src/components/Checks/RequestUserAgent.vue
+++ b/apps/workflowengine/src/components/Checks/RequestUserAgent.vue
@@ -22,28 +22,25 @@
<template>
<div>
- <NcMultiselect :value="currentValue"
+ <NcSelect :value="currentValue"
:placeholder="t('workflowengine', 'Select a user agent')"
label="label"
- track-by="pattern"
:options="options"
- :multiple="false"
- :tagging="false"
+ :clearable="false"
@input="setValue">
- <template slot="singleLabel" slot-scope="props">
- <span class="option__icon" :class="props.option.icon" />
- <!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->
- <!-- eslint-disable-next-line vue/no-v-html -->
- <span class="option__title option__title_single" v-html="props.option.label" />
+ <template #option="option">
+ <span class="option__icon" :class="option.icon" />
+ <span class="option__title">
+ <NcEllipsisedOption :name="String(option.label)" />
+ </span>
</template>
- <template slot="option" slot-scope="props">
- <span class="option__icon" :class="props.option.icon" />
- <!-- eslint-disable-next-line vue/no-v-html -->
- <span v-if="props.option.$groupLabel" class="option__title" v-html="props.option.$groupLabel" />
- <!-- eslint-disable-next-line vue/no-v-html -->
- <span v-else class="option__title" v-html="props.option.label" />
+ <template #selected-option="selectedOption">
+ <span class="option__icon" :class="selectedOption.icon" />
+ <span class="option__title">
+ <NcEllipsisedOption :name="String(selectedOption.label)" />
+ </span>
</template>
- </NcMultiselect>
+ </NcSelect>
<input v-if="!isPredefined"
type="text"
:value="currentValue.pattern"
@@ -52,13 +49,15 @@
</template>
<script>
-import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
+import NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'
+import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import valueMixin from '../../mixins/valueMixin.js'
export default {
name: 'RequestUserAgent',
components: {
- NcMultiselect,
+ NcEllipsisedOption,
+ NcSelect,
},
mixins: [
valueMixin,
@@ -67,10 +66,10 @@ export default {
return {
newValue: '',
predefinedTypes: [
- { pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },
- { pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },
- { pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },
- { pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },
+ { id: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },
+ { id: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },
+ { id: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },
+ { id: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },
],
}
},
@@ -80,7 +79,7 @@ export default {
},
matchingPredefined() {
return this.predefinedTypes
- .find((type) => this.newValue === type.pattern)
+ .find((type) => this.newValue === type.id)
},
isPredefined() {
return !!this.matchingPredefined
@@ -89,7 +88,7 @@ export default {
return {
icon: 'icon-settings-dark',
label: t('workflowengine', 'Custom user agent'),
- pattern: '',
+ id: '',
}
},
currentValue() {
@@ -99,7 +98,7 @@ export default {
return {
icon: 'icon-settings-dark',
label: t('workflowengine', 'Custom user agent'),
- pattern: this.newValue,
+ id: this.newValue,
}
},
},
@@ -112,7 +111,7 @@ export default {
setValue(value) {
// TODO: check if value requires a regex and set the check operator according to that
if (value !== null) {
- this.newValue = value.pattern
+ this.newValue = value.id
this.$emit('input', this.newValue)
}
},
@@ -124,31 +123,24 @@ export default {
}
</script>
<style scoped>
- .multiselect, input[type='text'] {
+ .v-select,
+ input[type='text'] {
width: 100%;
}
-
- .multiselect .multiselect__content-wrapper li>span {
- display: flex;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .multiselect::v-deep .multiselect__single {
- width: 100%;
- display: flex;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
+ input[type='text'] {
+ min-height: 48px;
}
+
.option__icon {
display: inline-block;
min-width: 30px;
- background-position: left;
+ background-position: center;
+ vertical-align: middle;
}
+
.option__title {
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
+ display: inline-flex;
+ width: calc(100% - 36px);
+ vertical-align: middle;
}
</style>
diff --git a/apps/workflowengine/src/components/Checks/RequestUserGroup.vue b/apps/workflowengine/src/components/Checks/RequestUserGroup.vue
index cfb9c7dcc98..542fa46765e 100644
--- a/apps/workflowengine/src/components/Checks/RequestUserGroup.vue
+++ b/apps/workflowengine/src/components/Checks/RequestUserGroup.vue
@@ -22,10 +22,10 @@
<template>
<div>
- <NcMultiselect :value="currentValue"
+ <NcSelect :value="currentValue"
:loading="status.isLoading && groups.length === 0"
:options="groups"
- :multiple="false"
+ :clearable="false"
label="displayname"
track-by="id"
@search-change="searchAsync"
@@ -34,7 +34,7 @@
</template>
<script>
-import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
+import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'
@@ -46,7 +46,7 @@ const status = {
export default {
name: 'RequestUserGroup',
components: {
- NcMultiselect,
+ NcSelect,
},
props: {
value: {
@@ -106,7 +106,7 @@ export default {
}
</script>
<style scoped>
- .multiselect {
- width: 100%;
- }
+.v-select {
+ width: 100%;
+}
</style>
diff --git a/apps/workflowengine/src/components/Rule.vue b/apps/workflowengine/src/components/Rule.vue
index 6b0abed88c8..e641d8cffb8 100644
--- a/apps/workflowengine/src/components/Rule.vue
+++ b/apps/workflowengine/src/components/Rule.vue
@@ -18,7 +18,7 @@
<input v-if="lastCheckComplete"
type="button"
class="check--add"
- value="Add a new filter"
+ :value="t('workflowengine', 'Add a new filter')"
@click="onAddFilter">
</p>
</div>
@@ -213,10 +213,11 @@ export default {
flex-wrap: wrap;
border-left: 5px solid var(--color-primary-element);
- .trigger, .action {
+ .trigger,
+ .action {
flex-grow: 1;
min-height: 100px;
- max-width: 700px;
+ max-width: 920px;
}
.action {
max-width: 400px;
@@ -247,6 +248,9 @@ export default {
.trigger p:first-child span {
padding-top: 3px;
}
+ .trigger p:last-child {
+ padding-top: 8px;
+ }
.check--add {
background-position: 7px center;
diff --git a/apps/workflowengine/src/styles/operation.scss b/apps/workflowengine/src/styles/operation.scss
index 860258f2851..8370c896658 100644
--- a/apps/workflowengine/src/styles/operation.scss
+++ b/apps/workflowengine/src/styles/operation.scss
@@ -48,7 +48,7 @@ small {
.colored:not(.more) {
background-color: var(--color-primary-element);
h3, small {
- color: var(--color-primary-text)
+ color: var(--color-primary-element-text)
}
}