aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
m---------3rdparty0
-rw-r--r--README.md4
-rw-r--r--apps/dav/appinfo/info.xml1
-rw-r--r--apps/files/l10n/oc.js2
-rw-r--r--apps/files/l10n/oc.json2
-rw-r--r--apps/files/l10n/sq.js6
-rw-r--r--apps/files/l10n/sq.json6
-rw-r--r--apps/files/lib/helper.php2
-rw-r--r--apps/files/tests/ajax_rename.php6
-rw-r--r--apps/files/tests/controller/apicontrollertest.php6
-rw-r--r--apps/files_external/l10n/ast.js1
-rw-r--r--apps/files_external/l10n/ast.json1
-rw-r--r--apps/files_external/l10n/az.js1
-rw-r--r--apps/files_external/l10n/az.json1
-rw-r--r--apps/files_external/l10n/bg_BG.js1
-rw-r--r--apps/files_external/l10n/bg_BG.json1
-rw-r--r--apps/files_external/l10n/bn_BD.js3
-rw-r--r--apps/files_external/l10n/bn_BD.json3
-rw-r--r--apps/files_external/l10n/ca.js1
-rw-r--r--apps/files_external/l10n/ca.json1
-rw-r--r--apps/files_external/l10n/cs_CZ.js1
-rw-r--r--apps/files_external/l10n/cs_CZ.json1
-rw-r--r--apps/files_external/l10n/da.js1
-rw-r--r--apps/files_external/l10n/da.json1
-rw-r--r--apps/files_external/l10n/de.js1
-rw-r--r--apps/files_external/l10n/de.json1
-rw-r--r--apps/files_external/l10n/de_DE.js1
-rw-r--r--apps/files_external/l10n/de_DE.json1
-rw-r--r--apps/files_external/l10n/el.js1
-rw-r--r--apps/files_external/l10n/el.json1
-rw-r--r--apps/files_external/l10n/en_GB.js1
-rw-r--r--apps/files_external/l10n/en_GB.json1
-rw-r--r--apps/files_external/l10n/eo.js1
-rw-r--r--apps/files_external/l10n/eo.json1
-rw-r--r--apps/files_external/l10n/es.js1
-rw-r--r--apps/files_external/l10n/es.json1
-rw-r--r--apps/files_external/l10n/es_AR.js3
-rw-r--r--apps/files_external/l10n/es_AR.json3
-rw-r--r--apps/files_external/l10n/es_MX.js3
-rw-r--r--apps/files_external/l10n/es_MX.json3
-rw-r--r--apps/files_external/l10n/et_EE.js1
-rw-r--r--apps/files_external/l10n/et_EE.json1
-rw-r--r--apps/files_external/l10n/eu.js1
-rw-r--r--apps/files_external/l10n/eu.json1
-rw-r--r--apps/files_external/l10n/fa.js3
-rw-r--r--apps/files_external/l10n/fa.json3
-rw-r--r--apps/files_external/l10n/fi_FI.js2
-rw-r--r--apps/files_external/l10n/fi_FI.json2
-rw-r--r--apps/files_external/l10n/fr.js1
-rw-r--r--apps/files_external/l10n/fr.json1
-rw-r--r--apps/files_external/l10n/gl.js1
-rw-r--r--apps/files_external/l10n/gl.json1
-rw-r--r--apps/files_external/l10n/he.js3
-rw-r--r--apps/files_external/l10n/he.json3
-rw-r--r--apps/files_external/l10n/hr.js1
-rw-r--r--apps/files_external/l10n/hr.json1
-rw-r--r--apps/files_external/l10n/hu_HU.js3
-rw-r--r--apps/files_external/l10n/hu_HU.json3
-rw-r--r--apps/files_external/l10n/id.js1
-rw-r--r--apps/files_external/l10n/id.json1
-rw-r--r--apps/files_external/l10n/is.js3
-rw-r--r--apps/files_external/l10n/is.json3
-rw-r--r--apps/files_external/l10n/it.js4
-rw-r--r--apps/files_external/l10n/it.json4
-rw-r--r--apps/files_external/l10n/ja.js4
-rw-r--r--apps/files_external/l10n/ja.json4
-rw-r--r--apps/files_external/l10n/ka_GE.js3
-rw-r--r--apps/files_external/l10n/ka_GE.json3
-rw-r--r--apps/files_external/l10n/ko.js1
-rw-r--r--apps/files_external/l10n/ko.json1
-rw-r--r--apps/files_external/l10n/lt_LT.js3
-rw-r--r--apps/files_external/l10n/lt_LT.json3
-rw-r--r--apps/files_external/l10n/lv.js3
-rw-r--r--apps/files_external/l10n/lv.json3
-rw-r--r--apps/files_external/l10n/mk.js3
-rw-r--r--apps/files_external/l10n/mk.json3
-rw-r--r--apps/files_external/l10n/nb_NO.js1
-rw-r--r--apps/files_external/l10n/nb_NO.json1
-rw-r--r--apps/files_external/l10n/nds.js1
-rw-r--r--apps/files_external/l10n/nds.json1
-rw-r--r--apps/files_external/l10n/nl.js1
-rw-r--r--apps/files_external/l10n/nl.json1
-rw-r--r--apps/files_external/l10n/oc.js28
-rw-r--r--apps/files_external/l10n/oc.json28
-rw-r--r--apps/files_external/l10n/pl.js1
-rw-r--r--apps/files_external/l10n/pl.json1
-rw-r--r--apps/files_external/l10n/pt_BR.js2
-rw-r--r--apps/files_external/l10n/pt_BR.json2
-rw-r--r--apps/files_external/l10n/pt_PT.js1
-rw-r--r--apps/files_external/l10n/pt_PT.json1
-rw-r--r--apps/files_external/l10n/ro.js1
-rw-r--r--apps/files_external/l10n/ro.json1
-rw-r--r--apps/files_external/l10n/ru.js1
-rw-r--r--apps/files_external/l10n/ru.json1
-rw-r--r--apps/files_external/l10n/si_LK.js3
-rw-r--r--apps/files_external/l10n/si_LK.json3
-rw-r--r--apps/files_external/l10n/sk_SK.js1
-rw-r--r--apps/files_external/l10n/sk_SK.json1
-rw-r--r--apps/files_external/l10n/sl.js1
-rw-r--r--apps/files_external/l10n/sl.json1
-rw-r--r--apps/files_external/l10n/sq.js12
-rw-r--r--apps/files_external/l10n/sq.json12
-rw-r--r--apps/files_external/l10n/sr.js1
-rw-r--r--apps/files_external/l10n/sr.json1
-rw-r--r--apps/files_external/l10n/sr@latin.js1
-rw-r--r--apps/files_external/l10n/sr@latin.json1
-rw-r--r--apps/files_external/l10n/sv.js1
-rw-r--r--apps/files_external/l10n/sv.json1
-rw-r--r--apps/files_external/l10n/ta_LK.js3
-rw-r--r--apps/files_external/l10n/ta_LK.json3
-rw-r--r--apps/files_external/l10n/th_TH.js1
-rw-r--r--apps/files_external/l10n/th_TH.json1
-rw-r--r--apps/files_external/l10n/tr.js1
-rw-r--r--apps/files_external/l10n/tr.json1
-rw-r--r--apps/files_external/l10n/uk.js1
-rw-r--r--apps/files_external/l10n/uk.json1
-rw-r--r--apps/files_external/l10n/vi.js3
-rw-r--r--apps/files_external/l10n/vi.json3
-rw-r--r--apps/files_external/l10n/zh_CN.js1
-rw-r--r--apps/files_external/l10n/zh_CN.json1
-rw-r--r--apps/files_external/l10n/zh_TW.js1
-rw-r--r--apps/files_external/l10n/zh_TW.json1
-rw-r--r--apps/files_external/lib/dropbox.php14
-rw-r--r--apps/files_external/templates/settings.php2
-rw-r--r--apps/files_sharing/appinfo/info.xml2
-rw-r--r--apps/files_sharing/appinfo/install.php1
-rw-r--r--apps/files_sharing/appinfo/update.php1
-rw-r--r--apps/files_sharing/js/public.js2
-rw-r--r--apps/files_sharing/l10n/ja.js1
-rw-r--r--apps/files_sharing/l10n/ja.json1
-rw-r--r--apps/files_sharing/l10n/sq.js9
-rw-r--r--apps/files_sharing/l10n/sq.json9
-rw-r--r--apps/files_sharing/lib/expiresharesjob.php76
-rw-r--r--apps/files_sharing/tests/expiresharesjobtest.php204
-rw-r--r--apps/provisioning_api/appinfo/routes.php2
-rw-r--r--apps/provisioning_api/lib/users.php27
-rw-r--r--apps/provisioning_api/tests/testcase.php2
-rw-r--r--apps/provisioning_api/tests/userstest.php95
-rw-r--r--apps/user_ldap/l10n/ja.js2
-rw-r--r--apps/user_ldap/l10n/ja.json2
-rw-r--r--apps/user_ldap/l10n/sq.js3
-rw-r--r--apps/user_ldap/l10n/sq.json3
-rw-r--r--core/ajax/update.php27
-rw-r--r--core/command/upgrade.php12
-rw-r--r--core/js/js.js9
-rw-r--r--core/js/tests/specs/sharedialogviewSpec.js78
-rw-r--r--core/js/update.js9
-rw-r--r--core/l10n/bg_BG.js1
-rw-r--r--core/l10n/bg_BG.json1
-rw-r--r--core/l10n/ca.js1
-rw-r--r--core/l10n/ca.json1
-rw-r--r--core/l10n/cs_CZ.js1
-rw-r--r--core/l10n/cs_CZ.json1
-rw-r--r--core/l10n/da.js1
-rw-r--r--core/l10n/da.json1
-rw-r--r--core/l10n/de.js1
-rw-r--r--core/l10n/de.json1
-rw-r--r--core/l10n/de_DE.js1
-rw-r--r--core/l10n/de_DE.json1
-rw-r--r--core/l10n/el.js1
-rw-r--r--core/l10n/el.json1
-rw-r--r--core/l10n/en_GB.js1
-rw-r--r--core/l10n/en_GB.json1
-rw-r--r--core/l10n/es.js1
-rw-r--r--core/l10n/es.json1
-rw-r--r--core/l10n/et_EE.js1
-rw-r--r--core/l10n/et_EE.json1
-rw-r--r--core/l10n/fi_FI.js2
-rw-r--r--core/l10n/fi_FI.json2
-rw-r--r--core/l10n/fr.js1
-rw-r--r--core/l10n/fr.json1
-rw-r--r--core/l10n/gl.js1
-rw-r--r--core/l10n/gl.json1
-rw-r--r--core/l10n/hu_HU.js1
-rw-r--r--core/l10n/hu_HU.json1
-rw-r--r--core/l10n/id.js1
-rw-r--r--core/l10n/id.json1
-rw-r--r--core/l10n/is.js1
-rw-r--r--core/l10n/is.json1
-rw-r--r--core/l10n/it.js2
-rw-r--r--core/l10n/it.json2
-rw-r--r--core/l10n/ja.js5
-rw-r--r--core/l10n/ja.json5
-rw-r--r--core/l10n/ko.js1
-rw-r--r--core/l10n/ko.json1
-rw-r--r--core/l10n/lt_LT.js1
-rw-r--r--core/l10n/lt_LT.json1
-rw-r--r--core/l10n/mk.js1
-rw-r--r--core/l10n/mk.json1
-rw-r--r--core/l10n/nb_NO.js1
-rw-r--r--core/l10n/nb_NO.json1
-rw-r--r--core/l10n/nds.js1
-rw-r--r--core/l10n/nds.json1
-rw-r--r--core/l10n/nl.js1
-rw-r--r--core/l10n/nl.json1
-rw-r--r--core/l10n/oc.js33
-rw-r--r--core/l10n/oc.json33
-rw-r--r--core/l10n/pl.js1
-rw-r--r--core/l10n/pl.json1
-rw-r--r--core/l10n/pt_BR.js2
-rw-r--r--core/l10n/pt_BR.json2
-rw-r--r--core/l10n/pt_PT.js1
-rw-r--r--core/l10n/pt_PT.json1
-rw-r--r--core/l10n/ro.js1
-rw-r--r--core/l10n/ro.json1
-rw-r--r--core/l10n/ru.js4
-rw-r--r--core/l10n/ru.json4
-rw-r--r--core/l10n/sk_SK.js1
-rw-r--r--core/l10n/sk_SK.json1
-rw-r--r--core/l10n/sl.js1
-rw-r--r--core/l10n/sl.json1
-rw-r--r--core/l10n/sq.js5
-rw-r--r--core/l10n/sq.json5
-rw-r--r--core/l10n/sr.js1
-rw-r--r--core/l10n/sr.json1
-rw-r--r--core/l10n/th_TH.js1
-rw-r--r--core/l10n/th_TH.json1
-rw-r--r--core/l10n/tr.js1
-rw-r--r--core/l10n/tr.json1
-rw-r--r--core/l10n/uk.js1
-rw-r--r--core/l10n/uk.json1
-rw-r--r--core/l10n/zh_CN.js1
-rw-r--r--core/l10n/zh_CN.json1
-rw-r--r--core/l10n/zh_TW.js1
-rw-r--r--core/l10n/zh_TW.json1
-rw-r--r--core/shipped.json1
-rw-r--r--indie.json92
-rw-r--r--lib/base.php14
-rw-r--r--lib/l10n/ru.js1
-rw-r--r--lib/l10n/ru.json1
-rw-r--r--lib/l10n/sq.js4
-rw-r--r--lib/l10n/sq.json4
-rw-r--r--lib/private/api.php18
-rw-r--r--lib/private/appframework/dependencyinjection/dicontainer.php4
-rw-r--r--lib/private/appframework/http/request.php15
-rw-r--r--lib/private/group/manager.php19
-rw-r--r--lib/private/legacy/subadmin.php172
-rw-r--r--lib/private/lock/dblockingprovider.php2
-rw-r--r--lib/private/ocs/result.php4
-rw-r--r--lib/private/server.php2
-rw-r--r--lib/private/subadmin.php251
-rw-r--r--lib/private/updater.php9
-rw-r--r--lib/private/util.php19
-rw-r--r--settings/controller/checksetupcontroller.php4
-rw-r--r--settings/controller/userscontroller.php2
-rw-r--r--settings/js/apps.js4
-rw-r--r--settings/l10n/ja.js7
-rw-r--r--settings/l10n/ja.json7
-rw-r--r--settings/l10n/ru.js2
-rw-r--r--settings/l10n/ru.json2
-rw-r--r--settings/l10n/sq.js27
-rw-r--r--settings/l10n/sq.json27
-rw-r--r--tests/lib/api.php62
-rw-r--r--tests/lib/appframework/controller/ApiControllerTest.php1
-rw-r--r--tests/lib/appframework/controller/ControllerTest.php1
-rw-r--r--tests/lib/appframework/controller/OCSControllerTest.php4
-rw-r--r--tests/lib/appframework/dependencyinjection/DIContainerTest.php1
-rw-r--r--tests/lib/appframework/http/DispatcherTest.php6
-rw-r--r--tests/lib/appframework/http/RequestTest.php84
-rw-r--r--tests/lib/appframework/middleware/MiddlewareDispatcherTest.php1
-rw-r--r--tests/lib/appframework/middleware/MiddlewareTest.php1
-rw-r--r--tests/lib/appframework/middleware/security/CORSMiddlewareTest.php10
-rw-r--r--tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php1
-rw-r--r--tests/lib/appframework/middleware/sessionmiddlewaretest.php1
-rw-r--r--tests/lib/subadmin.php264
-rw-r--r--tests/lib/util.php2
-rw-r--r--tests/settings/controller/userscontrollertest.php108
-rw-r--r--version.php2
268 files changed, 1598 insertions, 723 deletions
diff --git a/3rdparty b/3rdparty
-Subproject 1914e923a4589e619b930e1ca587041d6fd3a1f
+Subproject 40dfc0121ec2a4940a62fdbc86b2a9a300658c5
diff --git a/README.md b/README.md
index 1085d516263..7e1a9fbc78b 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ Dependencies:
[![Dependency Status](https://www.versioneye.com/user/projects/54d1f76f3ca0840b190000c0/badge.svg?style=flat)](https://www.versioneye.com/user/projects/54d1f76f3ca0840b190000c0)
### Installation instructions
-https://doc.owncloud.org/server/8.2/developer_manual/app/index.html
+https://doc.owncloud.org/server/9.0/developer_manual/app/index.html
### Contribution Guidelines
https://owncloud.org/contribute/
@@ -35,4 +35,4 @@ https://www.transifex.com/projects/p/owncloud/
[![Transifex](https://www.transifex.com/projects/p/owncloud/resource/core/chart/image_png)](https://www.transifex.com/projects/p/owncloud/)
For more detailed information about translations:
-http://doc.owncloud.org/server/8.2/developer_manual/core/translation.html
+http://doc.owncloud.org/server/9.0/developer_manual/core/translation.html
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index c80af15a29b..38878ec27f2 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -5,6 +5,7 @@
<description>ownCloud WebDAV endpoint</description>
<licence>AGPL</licence>
<author>owncloud.org</author>
+ <version>0.1</version>
<requiremin>9.0</requiremin>
<shipped>true</shipped>
<standalone/>
diff --git a/apps/files/l10n/oc.js b/apps/files/l10n/oc.js
index 6e82e5c5dff..4e1c7e0a011 100644
--- a/apps/files/l10n/oc.js
+++ b/apps/files/l10n/oc.js
@@ -30,10 +30,10 @@ OC.L10N.register(
"Favorites" : "Favorits",
"Home" : "Mos fichièrs",
"Close" : "Tampar",
+ "Upload cancelled." : "Mandadís anullat.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible de mandar {filename} perque s'agís d'un repertòri o d'un fichièr de talha nulla",
"Total file size {size1} exceeds upload limit {size2}" : "La talha totala del fichièr {size1} excedís la talha maximala de mandadís {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Espaci liure insufisent : ensajatz de mandar {size1} mas solament {size2} son disponibles",
- "Upload cancelled." : "Mandadís anullat.",
"Could not get result from server." : "Pòt pas recebre los resultats del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Lo mandadís del fichièr es en cors. Quitar aquesta pagina ara anullarà lo mandadís del fichièr.",
"Actions" : "Accions",
diff --git a/apps/files/l10n/oc.json b/apps/files/l10n/oc.json
index b75d26a5ad3..108bc5d9de9 100644
--- a/apps/files/l10n/oc.json
+++ b/apps/files/l10n/oc.json
@@ -28,10 +28,10 @@
"Favorites" : "Favorits",
"Home" : "Mos fichièrs",
"Close" : "Tampar",
+ "Upload cancelled." : "Mandadís anullat.",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible de mandar {filename} perque s'agís d'un repertòri o d'un fichièr de talha nulla",
"Total file size {size1} exceeds upload limit {size2}" : "La talha totala del fichièr {size1} excedís la talha maximala de mandadís {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Espaci liure insufisent : ensajatz de mandar {size1} mas solament {size2} son disponibles",
- "Upload cancelled." : "Mandadís anullat.",
"Could not get result from server." : "Pòt pas recebre los resultats del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Lo mandadís del fichièr es en cors. Quitar aquesta pagina ara anullarà lo mandadís del fichièr.",
"Actions" : "Accions",
diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js
index 4ed7b72558d..8f19800cd2a 100644
--- a/apps/files/l10n/sq.js
+++ b/apps/files/l10n/sq.js
@@ -27,7 +27,7 @@ OC.L10N.register(
"Invalid directory." : "Drejtori e pavlefshme.",
"Files" : "Kartela",
"All files" : "Krejt kartelat",
- "Favorites" : "Të parapëlqyer",
+ "Favorites" : "Të parapëlqyera",
"Home" : "Kreu",
"Close" : "Mbylle",
"Upload cancelled." : "Ngarkimi u anulua.",
@@ -41,7 +41,7 @@ OC.L10N.register(
"Rename" : "Riemërtojeni",
"Delete" : "Fshije",
"Details" : "Hollësi",
- "Select" : "Përzgjidhni",
+ "Select" : "Përzgjidhe",
"Pending" : "Në pritje",
"Unable to determine date" : "S’arrihet të përcaktohet data",
"This operation is forbidden" : "Ky veprim është i ndaluar",
@@ -119,7 +119,7 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.",
"Files are being scanned, please wait." : "Kartelat po kontrollohen, ju lutemi, pritni.",
"Currently scanning" : "Po kontrollohet",
- "No favorites" : "Pa të parapëlqyer",
+ "No favorites" : "Pa të parapëlqyera",
"Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json
index e3168339a2b..462f4d06392 100644
--- a/apps/files/l10n/sq.json
+++ b/apps/files/l10n/sq.json
@@ -25,7 +25,7 @@
"Invalid directory." : "Drejtori e pavlefshme.",
"Files" : "Kartela",
"All files" : "Krejt kartelat",
- "Favorites" : "Të parapëlqyer",
+ "Favorites" : "Të parapëlqyera",
"Home" : "Kreu",
"Close" : "Mbylle",
"Upload cancelled." : "Ngarkimi u anulua.",
@@ -39,7 +39,7 @@
"Rename" : "Riemërtojeni",
"Delete" : "Fshije",
"Details" : "Hollësi",
- "Select" : "Përzgjidhni",
+ "Select" : "Përzgjidhe",
"Pending" : "Në pritje",
"Unable to determine date" : "S’arrihet të përcaktohet data",
"This operation is forbidden" : "Ky veprim është i ndaluar",
@@ -117,7 +117,7 @@
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.",
"Files are being scanned, please wait." : "Kartelat po kontrollohen, ju lutemi, pritni.",
"Currently scanning" : "Po kontrollohet",
- "No favorites" : "Pa të parapëlqyer",
+ "No favorites" : "Pa të parapëlqyera",
"Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php
index 6bfdc0a095c..fb14cea731f 100644
--- a/apps/files/lib/helper.php
+++ b/apps/files/lib/helper.php
@@ -137,10 +137,8 @@ class Helper {
$entry['id'] = $i['fileid'];
$entry['parentId'] = $i['parent'];
- $entry['date'] = \OCP\Util::formatDate($i['mtime']);
$entry['mtime'] = $i['mtime'] * 1000;
// only pick out the needed attributes
- $entry['icon'] = \OCA\Files\Helper::determineIcon($i);
if (\OC::$server->getPreviewManager()->isAvailable($i)) {
$entry['isPreviewAvailable'] = true;
}
diff --git a/apps/files/tests/ajax_rename.php b/apps/files/tests/ajax_rename.php
index 45d49c9549d..00a62fa002d 100644
--- a/apps/files/tests/ajax_rename.php
+++ b/apps/files/tests/ajax_rename.php
@@ -117,9 +117,6 @@ class Test_OC_Files_App_Rename extends \Test\TestCase {
$this->assertEquals('abcdef', $result['data']['etag']);
$this->assertFalse(isset($result['data']['tags']));
$this->assertEquals('/', $result['data']['path']);
- $icon = \OC_Helper::mimetypeIcon('dir-external');
- $icon = substr($icon, 0, -3) . 'svg';
- $this->assertEquals($icon, $result['data']['icon']);
}
/**
@@ -182,9 +179,6 @@ class Test_OC_Files_App_Rename extends \Test\TestCase {
$this->assertEquals('abcdef', $result['data']['etag']);
$this->assertEquals(array('tag1', 'tag2'), $result['data']['tags']);
$this->assertEquals('/', $result['data']['path']);
- $icon = \OC_Helper::mimetypeIcon('text');
- $icon = substr($icon, 0, -3) . 'svg';
- $this->assertEquals($icon, $result['data']['icon']);
\OC::$server->registerService('TagManager', function ($c) use ($oldTagManager) {
return $oldTagManager;
diff --git a/apps/files/tests/controller/apicontrollertest.php b/apps/files/tests/controller/apicontrollertest.php
index 35d00af75ba..7f34c0a5642 100644
--- a/apps/files/tests/controller/apicontrollertest.php
+++ b/apps/files/tests/controller/apicontrollertest.php
@@ -110,9 +110,7 @@ class ApiControllerTest extends TestCase {
[
'id' => null,
'parentId' => null,
- 'date' => \OCP\Util::formatDate(55),
'mtime' => 55000,
- 'icon' => \OCA\Files\Helper::determineIcon($fileInfo),
'name' => 'root.txt',
'permissions' => null,
'mimetype' => 'application/pdf',
@@ -175,9 +173,7 @@ class ApiControllerTest extends TestCase {
[
'id' => null,
'parentId' => null,
- 'date' => \OCP\Util::formatDate(55),
'mtime' => 55000,
- 'icon' => \OCA\Files\Helper::determineIcon($fileInfo1),
'name' => 'root.txt',
'permissions' => null,
'mimetype' => 'application/pdf',
@@ -194,9 +190,7 @@ class ApiControllerTest extends TestCase {
[
'id' => null,
'parentId' => null,
- 'date' => \OCP\Util::formatDate(999),
'mtime' => 999000,
- 'icon' => \OCA\Files\Helper::determineIcon($fileInfo2),
'name' => 'root.txt',
'permissions' => null,
'mimetype' => 'application/binary',
diff --git a/apps/files_external/l10n/ast.js b/apps/files_external/l10n/ast.js
index 21eba8c59d5..b663657e029 100644
--- a/apps/files_external/l10n/ast.js
+++ b/apps/files_external/l10n/ast.js
@@ -55,7 +55,6 @@ OC.L10N.register(
"Available for" : "Disponible pa",
"Delete" : "Desaniciar",
"Add storage" : "Amestar almacenamientu",
- "Enable User External Storage" : "Habilitar almacenamientu esterno d'usuariu",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamientu esternu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/ast.json b/apps/files_external/l10n/ast.json
index 2464f44ca63..0e98fe5a24a 100644
--- a/apps/files_external/l10n/ast.json
+++ b/apps/files_external/l10n/ast.json
@@ -53,7 +53,6 @@
"Available for" : "Disponible pa",
"Delete" : "Desaniciar",
"Add storage" : "Amestar almacenamientu",
- "Enable User External Storage" : "Habilitar almacenamientu esterno d'usuariu",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamientu esternu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/az.js b/apps/files_external/l10n/az.js
index f51a743d874..700e36a4aef 100644
--- a/apps/files_external/l10n/az.js
+++ b/apps/files_external/l10n/az.js
@@ -60,7 +60,6 @@ OC.L10N.register(
"Advanced settings" : "İrəliləmiş quraşdırmalar",
"Delete" : "Sil",
"Add storage" : "Deponu əlavə et",
- "Enable User External Storage" : "İstifadəçi kənar deponu aktivləşdir",
"Allow users to mount the following external storage" : "Göstərilən kənar deponun bərkidilməsi üçün istifadəçilərə izin ver"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/az.json b/apps/files_external/l10n/az.json
index 317b7948570..6cccabb2dd6 100644
--- a/apps/files_external/l10n/az.json
+++ b/apps/files_external/l10n/az.json
@@ -58,7 +58,6 @@
"Advanced settings" : "İrəliləmiş quraşdırmalar",
"Delete" : "Sil",
"Add storage" : "Deponu əlavə et",
- "Enable User External Storage" : "İstifadəçi kənar deponu aktivləşdir",
"Allow users to mount the following external storage" : "Göstərilən kənar deponun bərkidilməsi üçün istifadəçilərə izin ver"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/bg_BG.js b/apps/files_external/l10n/bg_BG.js
index 8a416271bce..f14b13d2a0e 100644
--- a/apps/files_external/l10n/bg_BG.js
+++ b/apps/files_external/l10n/bg_BG.js
@@ -62,7 +62,6 @@ OC.L10N.register(
"Advanced settings" : "Разширени настройки",
"Delete" : "Изтрий",
"Add storage" : "Добави дисково пространство",
- "Enable User External Storage" : "Разреши Потребителско Външно Дисково Пространство",
"Allow users to mount the following external storage" : "Разреши на потребителите да прикачват следното външно дисково пространство"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/bg_BG.json b/apps/files_external/l10n/bg_BG.json
index c9191e6d402..6cce8fd5cfa 100644
--- a/apps/files_external/l10n/bg_BG.json
+++ b/apps/files_external/l10n/bg_BG.json
@@ -60,7 +60,6 @@
"Advanced settings" : "Разширени настройки",
"Delete" : "Изтрий",
"Add storage" : "Добави дисково пространство",
- "Enable User External Storage" : "Разреши Потребителско Външно Дисково Пространство",
"Allow users to mount the following external storage" : "Разреши на потребителите да прикачват следното външно дисково пространство"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/bn_BD.js b/apps/files_external/l10n/bn_BD.js
index 3676a1a8b51..32d40f3fb8a 100644
--- a/apps/files_external/l10n/bn_BD.js
+++ b/apps/files_external/l10n/bn_BD.js
@@ -34,7 +34,6 @@ OC.L10N.register(
"External Storage" : "বাহ্যিক সংরক্ষণাগার",
"Folder name" : "ফোলডারের নাম",
"Configuration" : "কনফিগারেসন",
- "Delete" : "মুছে",
- "Enable User External Storage" : "ব্যবহারকারীর বাহ্যিক সংরক্ষণাগার সক্রিয় কর"
+ "Delete" : "মুছে"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/bn_BD.json b/apps/files_external/l10n/bn_BD.json
index 5b7d07da5a2..3a2d8d4f2af 100644
--- a/apps/files_external/l10n/bn_BD.json
+++ b/apps/files_external/l10n/bn_BD.json
@@ -32,7 +32,6 @@
"External Storage" : "বাহ্যিক সংরক্ষণাগার",
"Folder name" : "ফোলডারের নাম",
"Configuration" : "কনফিগারেসন",
- "Delete" : "মুছে",
- "Enable User External Storage" : "ব্যবহারকারীর বাহ্যিক সংরক্ষণাগার সক্রিয় কর"
+ "Delete" : "মুছে"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ca.js b/apps/files_external/l10n/ca.js
index 36ea0086c1f..b14057ea420 100644
--- a/apps/files_external/l10n/ca.js
+++ b/apps/files_external/l10n/ca.js
@@ -69,7 +69,6 @@ OC.L10N.register(
"Advanced settings" : "Configuració avançada",
"Delete" : "Esborra",
"Add storage" : "Afegeix emmagatzemament",
- "Enable User External Storage" : "Habilita l'emmagatzemament extern d'usuari",
"Allow users to mount the following external storage" : "Permet als usuaris muntar els dispositius externs següents"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/ca.json b/apps/files_external/l10n/ca.json
index ffbacca550f..cce51970c18 100644
--- a/apps/files_external/l10n/ca.json
+++ b/apps/files_external/l10n/ca.json
@@ -67,7 +67,6 @@
"Advanced settings" : "Configuració avançada",
"Delete" : "Esborra",
"Add storage" : "Afegeix emmagatzemament",
- "Enable User External Storage" : "Habilita l'emmagatzemament extern d'usuari",
"Allow users to mount the following external storage" : "Permet als usuaris muntar els dispositius externs següents"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js
index f547c7e26b5..78b5832d70c 100644
--- a/apps/files_external/l10n/cs_CZ.js
+++ b/apps/files_external/l10n/cs_CZ.js
@@ -99,7 +99,6 @@ OC.L10N.register(
"Advanced settings" : "Pokročilá nastavení",
"Delete" : "Smazat",
"Add storage" : "Přidat úložiště",
- "Enable User External Storage" : "Zapnout externí uživatelské úložiště",
"Allow users to mount the following external storage" : "Povolit uživatelů připojit následující externí úložiště"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json
index d6255e0bc7e..d509e99689a 100644
--- a/apps/files_external/l10n/cs_CZ.json
+++ b/apps/files_external/l10n/cs_CZ.json
@@ -97,7 +97,6 @@
"Advanced settings" : "Pokročilá nastavení",
"Delete" : "Smazat",
"Add storage" : "Přidat úložiště",
- "Enable User External Storage" : "Zapnout externí uživatelské úložiště",
"Allow users to mount the following external storage" : "Povolit uživatelů připojit následující externí úložiště"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/da.js b/apps/files_external/l10n/da.js
index 3d0c15e578d..ba5d572a206 100644
--- a/apps/files_external/l10n/da.js
+++ b/apps/files_external/l10n/da.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Avancerede indstillinger",
"Delete" : "Slet",
"Add storage" : "Tilføj lager",
- "Enable User External Storage" : "Aktivér ekstern opbevaring for brugere",
"Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/da.json b/apps/files_external/l10n/da.json
index 0c70ebcf77a..c819040bc74 100644
--- a/apps/files_external/l10n/da.json
+++ b/apps/files_external/l10n/da.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Avancerede indstillinger",
"Delete" : "Slet",
"Add storage" : "Tilføj lager",
- "Enable User External Storage" : "Aktivér ekstern opbevaring for brugere",
"Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js
index 633b499934e..c26322495d6 100644
--- a/apps/files_external/l10n/de.js
+++ b/apps/files_external/l10n/de.js
@@ -87,7 +87,6 @@ OC.L10N.register(
"Advanced settings" : "Erweiterte Einstellungen",
"Delete" : "Löschen",
"Add storage" : "Speicher hinzufügen",
- "Enable User External Storage" : "Externen Speicher für Benutzer aktivieren",
"Allow users to mount the following external storage" : "Erlaube es Benutzern, den folgenden externen Speicher einzubinden"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json
index 94a89346c5d..adec32d072b 100644
--- a/apps/files_external/l10n/de.json
+++ b/apps/files_external/l10n/de.json
@@ -85,7 +85,6 @@
"Advanced settings" : "Erweiterte Einstellungen",
"Delete" : "Löschen",
"Add storage" : "Speicher hinzufügen",
- "Enable User External Storage" : "Externen Speicher für Benutzer aktivieren",
"Allow users to mount the following external storage" : "Erlaube es Benutzern, den folgenden externen Speicher einzubinden"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js
index db8c77aa35c..c30fcb95919 100644
--- a/apps/files_external/l10n/de_DE.js
+++ b/apps/files_external/l10n/de_DE.js
@@ -70,7 +70,6 @@ OC.L10N.register(
"Advanced settings" : "Erweiterte Einstellungen",
"Delete" : "Löschen",
"Add storage" : "Speicher hinzufügen",
- "Enable User External Storage" : "Externen Speicher für Benutzer aktivieren",
"Allow users to mount the following external storage" : "Erlauben Sie Benutzern, folgende externe Speicher einzubinden"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json
index c3a254be26f..7fec06bf90f 100644
--- a/apps/files_external/l10n/de_DE.json
+++ b/apps/files_external/l10n/de_DE.json
@@ -68,7 +68,6 @@
"Advanced settings" : "Erweiterte Einstellungen",
"Delete" : "Löschen",
"Add storage" : "Speicher hinzufügen",
- "Enable User External Storage" : "Externen Speicher für Benutzer aktivieren",
"Allow users to mount the following external storage" : "Erlauben Sie Benutzern, folgende externe Speicher einzubinden"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js
index 4e62178830b..8b4d089a964 100644
--- a/apps/files_external/l10n/el.js
+++ b/apps/files_external/l10n/el.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Ρυθμίσεις για προχωρημένους",
"Delete" : "Διαγραφή",
"Add storage" : "Προσθηκη αποθηκευσης",
- "Enable User External Storage" : "Ενεργοποίηση Εξωτερικού Αποθηκευτικού Χώρου Χρήστη",
"Allow users to mount the following external storage" : "Χορήγηση άδειας στους χρήστες να συνδέσουν τα παρακάτω εξωτερικά μέσα αποθήκευσης"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json
index 8aa6c987225..74a9aa298ef 100644
--- a/apps/files_external/l10n/el.json
+++ b/apps/files_external/l10n/el.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Ρυθμίσεις για προχωρημένους",
"Delete" : "Διαγραφή",
"Add storage" : "Προσθηκη αποθηκευσης",
- "Enable User External Storage" : "Ενεργοποίηση Εξωτερικού Αποθηκευτικού Χώρου Χρήστη",
"Allow users to mount the following external storage" : "Χορήγηση άδειας στους χρήστες να συνδέσουν τα παρακάτω εξωτερικά μέσα αποθήκευσης"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js
index 444d0db1d52..9829bd3e8c7 100644
--- a/apps/files_external/l10n/en_GB.js
+++ b/apps/files_external/l10n/en_GB.js
@@ -70,7 +70,6 @@ OC.L10N.register(
"Advanced settings" : "Advanced settings",
"Delete" : "Delete",
"Add storage" : "Add storage",
- "Enable User External Storage" : "Enable User External Storage",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json
index 8af92769bdf..88467528431 100644
--- a/apps/files_external/l10n/en_GB.json
+++ b/apps/files_external/l10n/en_GB.json
@@ -68,7 +68,6 @@
"Advanced settings" : "Advanced settings",
"Delete" : "Delete",
"Add storage" : "Add storage",
- "Enable User External Storage" : "Enable User External Storage",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/eo.js b/apps/files_external/l10n/eo.js
index 8a8884777e6..ce3dd21c012 100644
--- a/apps/files_external/l10n/eo.js
+++ b/apps/files_external/l10n/eo.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Available for" : "Disponebla por",
"Delete" : "Forigi",
"Add storage" : "Aldoni memorilon",
- "Enable User External Storage" : "Kapabligi malenan memorilon de uzanto",
"Allow users to mount the following external storage" : "Permesi uzantojn munti la jenajn malenajn memorilojn"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/eo.json b/apps/files_external/l10n/eo.json
index 6741a31e72a..d8c620d24c2 100644
--- a/apps/files_external/l10n/eo.json
+++ b/apps/files_external/l10n/eo.json
@@ -38,7 +38,6 @@
"Available for" : "Disponebla por",
"Delete" : "Forigi",
"Add storage" : "Aldoni memorilon",
- "Enable User External Storage" : "Kapabligi malenan memorilon de uzanto",
"Allow users to mount the following external storage" : "Permesi uzantojn munti la jenajn malenajn memorilojn"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js
index 21e9476f77a..5415e8963cd 100644
--- a/apps/files_external/l10n/es.js
+++ b/apps/files_external/l10n/es.js
@@ -88,7 +88,6 @@ OC.L10N.register(
"Advanced settings" : "Configuración avanzada",
"Delete" : "Eliminar",
"Add storage" : "Añadir almacenamiento",
- "Enable User External Storage" : "Habilitar almacenamiento externo de usuario",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json
index 5f89e008ed5..10cbf0c974a 100644
--- a/apps/files_external/l10n/es.json
+++ b/apps/files_external/l10n/es.json
@@ -86,7 +86,6 @@
"Advanced settings" : "Configuración avanzada",
"Delete" : "Eliminar",
"Add storage" : "Añadir almacenamiento",
- "Enable User External Storage" : "Habilitar almacenamiento externo de usuario",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/es_AR.js b/apps/files_external/l10n/es_AR.js
index 383b511a75f..fd242104c8c 100644
--- a/apps/files_external/l10n/es_AR.js
+++ b/apps/files_external/l10n/es_AR.js
@@ -23,7 +23,6 @@ OC.L10N.register(
"Folder name" : "Nombre de la carpeta",
"Configuration" : "Configuración",
"Delete" : "Borrar",
- "Add storage" : "Añadir almacenamiento",
- "Enable User External Storage" : "Habilitar almacenamiento de usuario externo"
+ "Add storage" : "Añadir almacenamiento"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/es_AR.json b/apps/files_external/l10n/es_AR.json
index 0389f98e647..d9e91a3af47 100644
--- a/apps/files_external/l10n/es_AR.json
+++ b/apps/files_external/l10n/es_AR.json
@@ -21,7 +21,6 @@
"Folder name" : "Nombre de la carpeta",
"Configuration" : "Configuración",
"Delete" : "Borrar",
- "Add storage" : "Añadir almacenamiento",
- "Enable User External Storage" : "Habilitar almacenamiento de usuario externo"
+ "Add storage" : "Añadir almacenamiento"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js
index 574ba7443d8..9682e360a58 100644
--- a/apps/files_external/l10n/es_MX.js
+++ b/apps/files_external/l10n/es_MX.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Folder name" : "Nombre de la carpeta",
"Configuration" : "Configuración",
"Delete" : "Eliminar",
- "Add storage" : "Añadir almacenamiento",
- "Enable User External Storage" : "Habilitar almacenamiento externo de usuario"
+ "Add storage" : "Añadir almacenamiento"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json
index ab4fd8153c4..81b2f408d11 100644
--- a/apps/files_external/l10n/es_MX.json
+++ b/apps/files_external/l10n/es_MX.json
@@ -20,7 +20,6 @@
"Folder name" : "Nombre de la carpeta",
"Configuration" : "Configuración",
"Delete" : "Eliminar",
- "Add storage" : "Añadir almacenamiento",
- "Enable User External Storage" : "Habilitar almacenamiento externo de usuario"
+ "Add storage" : "Añadir almacenamiento"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/et_EE.js b/apps/files_external/l10n/et_EE.js
index 69ddf1a9ab2..ae66daa37a6 100644
--- a/apps/files_external/l10n/et_EE.js
+++ b/apps/files_external/l10n/et_EE.js
@@ -80,7 +80,6 @@ OC.L10N.register(
"Advanced settings" : "Lisavalikud",
"Delete" : "Kustuta",
"Add storage" : "Lisa andmehoidla",
- "Enable User External Storage" : "Luba kasutajatele väline salvestamine",
"Allow users to mount the following external storage" : "Võimalda kasutajatel ühendada järgmist välist andmehoidlat"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/et_EE.json b/apps/files_external/l10n/et_EE.json
index 3538ef2e7ad..f2cc31e46e1 100644
--- a/apps/files_external/l10n/et_EE.json
+++ b/apps/files_external/l10n/et_EE.json
@@ -78,7 +78,6 @@
"Advanced settings" : "Lisavalikud",
"Delete" : "Kustuta",
"Add storage" : "Lisa andmehoidla",
- "Enable User External Storage" : "Luba kasutajatele väline salvestamine",
"Allow users to mount the following external storage" : "Võimalda kasutajatel ühendada järgmist välist andmehoidlat"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/eu.js b/apps/files_external/l10n/eu.js
index fd31a4b6db3..599229a92b3 100644
--- a/apps/files_external/l10n/eu.js
+++ b/apps/files_external/l10n/eu.js
@@ -54,7 +54,6 @@ OC.L10N.register(
"Available for" : "Hauentzat eskuragarri",
"Delete" : "Ezabatu",
"Add storage" : "Gehitu biltegiratzea",
- "Enable User External Storage" : "Gaitu erabiltzaileentzako kanpo biltegiratzea",
"Allow users to mount the following external storage" : "Baimendu erabiltzaileak hurrengo kanpo biltegiratzeak muntatzen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/eu.json b/apps/files_external/l10n/eu.json
index 2270fa96d08..5a568893060 100644
--- a/apps/files_external/l10n/eu.json
+++ b/apps/files_external/l10n/eu.json
@@ -52,7 +52,6 @@
"Available for" : "Hauentzat eskuragarri",
"Delete" : "Ezabatu",
"Add storage" : "Gehitu biltegiratzea",
- "Enable User External Storage" : "Gaitu erabiltzaileentzako kanpo biltegiratzea",
"Allow users to mount the following external storage" : "Baimendu erabiltzaileak hurrengo kanpo biltegiratzeak muntatzen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/fa.js b/apps/files_external/l10n/fa.js
index efcb4fea048..a18f7cdcf5c 100644
--- a/apps/files_external/l10n/fa.js
+++ b/apps/files_external/l10n/fa.js
@@ -59,7 +59,6 @@ OC.L10N.register(
"Available for" : "در دسترس برای",
"Advanced settings" : "تنظیمات پیشرفته",
"Delete" : "حذف",
- "Add storage" : "اضافه کردن حافظه",
- "Enable User External Storage" : "فعال سازی حافظه خارجی کاربر"
+ "Add storage" : "اضافه کردن حافظه"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/fa.json b/apps/files_external/l10n/fa.json
index 9e4e3b00365..4bc16f72f54 100644
--- a/apps/files_external/l10n/fa.json
+++ b/apps/files_external/l10n/fa.json
@@ -57,7 +57,6 @@
"Available for" : "در دسترس برای",
"Advanced settings" : "تنظیمات پیشرفته",
"Delete" : "حذف",
- "Add storage" : "اضافه کردن حافظه",
- "Enable User External Storage" : "فعال سازی حافظه خارجی کاربر"
+ "Add storage" : "اضافه کردن حافظه"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/fi_FI.js b/apps/files_external/l10n/fi_FI.js
index 610005fa925..18e4db069de 100644
--- a/apps/files_external/l10n/fi_FI.js
+++ b/apps/files_external/l10n/fi_FI.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Advanced settings" : "Lisäasetukset",
"Delete" : "Poista",
"Add storage" : "Lisää tallennustila",
- "Enable User External Storage" : "Ota käyttöön ulkopuoliset tallennuspaikat",
+ "Allow users to mount external storages" : "Salli käyttäjien liittää erillisiä tallennustiloja",
"Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/fi_FI.json b/apps/files_external/l10n/fi_FI.json
index f8961048e2f..d879826f901 100644
--- a/apps/files_external/l10n/fi_FI.json
+++ b/apps/files_external/l10n/fi_FI.json
@@ -76,7 +76,7 @@
"Advanced settings" : "Lisäasetukset",
"Delete" : "Poista",
"Add storage" : "Lisää tallennustila",
- "Enable User External Storage" : "Ota käyttöön ulkopuoliset tallennuspaikat",
+ "Allow users to mount external storages" : "Salli käyttäjien liittää erillisiä tallennustiloja",
"Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index 03ceb4ab632..48567ebd604 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Paramètres avancés",
"Delete" : "Supprimer",
"Add storage" : "Ajouter un support de stockage",
- "Enable User External Storage" : "Autoriser les utilisateurs à ajouter des stockages externes",
"Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index 5fbba59b929..228ff869c4a 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Paramètres avancés",
"Delete" : "Supprimer",
"Add storage" : "Ajouter un support de stockage",
- "Enable User External Storage" : "Autoriser les utilisateurs à ajouter des stockages externes",
"Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/gl.js b/apps/files_external/l10n/gl.js
index 1fa5f41d64a..5827a6ab57f 100644
--- a/apps/files_external/l10n/gl.js
+++ b/apps/files_external/l10n/gl.js
@@ -70,7 +70,6 @@ OC.L10N.register(
"Advanced settings" : "Axustes avanzados",
"Delete" : "Eliminar",
"Add storage" : "Engadir almacenamento",
- "Enable User External Storage" : "Activar o almacenamento externo do usuario",
"Allow users to mount the following external storage" : "Permitirlle aos usuarios montar o seguinte almacenamento externo"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/gl.json b/apps/files_external/l10n/gl.json
index a4cacf44faf..29dde23c329 100644
--- a/apps/files_external/l10n/gl.json
+++ b/apps/files_external/l10n/gl.json
@@ -68,7 +68,6 @@
"Advanced settings" : "Axustes avanzados",
"Delete" : "Eliminar",
"Add storage" : "Engadir almacenamento",
- "Enable User External Storage" : "Activar o almacenamento externo do usuario",
"Allow users to mount the following external storage" : "Permitirlle aos usuarios montar o seguinte almacenamento externo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js
index 2de5539e7d1..613f2688ee4 100644
--- a/apps/files_external/l10n/he.js
+++ b/apps/files_external/l10n/he.js
@@ -21,7 +21,6 @@ OC.L10N.register(
"External Storage" : "אחסון חיצוני",
"Folder name" : "שם התיקייה",
"Configuration" : "הגדרות",
- "Delete" : "מחיקה",
- "Enable User External Storage" : "הפעלת אחסון חיצוני למשתמשים"
+ "Delete" : "מחיקה"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json
index 4b4e289c53e..928329f1d4e 100644
--- a/apps/files_external/l10n/he.json
+++ b/apps/files_external/l10n/he.json
@@ -19,7 +19,6 @@
"External Storage" : "אחסון חיצוני",
"Folder name" : "שם התיקייה",
"Configuration" : "הגדרות",
- "Delete" : "מחיקה",
- "Enable User External Storage" : "הפעלת אחסון חיצוני למשתמשים"
+ "Delete" : "מחיקה"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/hr.js b/apps/files_external/l10n/hr.js
index 651470a58fe..4ab71f76ffb 100644
--- a/apps/files_external/l10n/hr.js
+++ b/apps/files_external/l10n/hr.js
@@ -52,7 +52,6 @@ OC.L10N.register(
"Available for" : "Dostupno za",
"Delete" : "Izbrišite",
"Add storage" : "Dodajte spremište",
- "Enable User External Storage" : "Omogućite korisničko vanjsko spremište",
"Allow users to mount the following external storage" : "Dopustite korisnicima postavljanje sljedećeg vanjskog spremišta"
},
"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/files_external/l10n/hr.json b/apps/files_external/l10n/hr.json
index 80722b18ca4..e8b8dcd3f61 100644
--- a/apps/files_external/l10n/hr.json
+++ b/apps/files_external/l10n/hr.json
@@ -50,7 +50,6 @@
"Available for" : "Dostupno za",
"Delete" : "Izbrišite",
"Add storage" : "Dodajte spremište",
- "Enable User External Storage" : "Omogućite korisničko vanjsko spremište",
"Allow users to mount the following external storage" : "Dopustite korisnicima postavljanje sljedećeg vanjskog spremišta"
},"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/files_external/l10n/hu_HU.js b/apps/files_external/l10n/hu_HU.js
index 563267f66fd..0a307f8a609 100644
--- a/apps/files_external/l10n/hu_HU.js
+++ b/apps/files_external/l10n/hu_HU.js
@@ -40,7 +40,6 @@ OC.L10N.register(
"Configuration" : "Beállítások",
"Available for" : "Elérhető számukra",
"Delete" : "Törlés",
- "Add storage" : "Tároló becsatolása",
- "Enable User External Storage" : "Külső tárolók engedélyezése a felhasználók részére"
+ "Add storage" : "Tároló becsatolása"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/hu_HU.json b/apps/files_external/l10n/hu_HU.json
index a3608dba7b7..4012c0eb490 100644
--- a/apps/files_external/l10n/hu_HU.json
+++ b/apps/files_external/l10n/hu_HU.json
@@ -38,7 +38,6 @@
"Configuration" : "Beállítások",
"Available for" : "Elérhető számukra",
"Delete" : "Törlés",
- "Add storage" : "Tároló becsatolása",
- "Enable User External Storage" : "Külső tárolók engedélyezése a felhasználók részére"
+ "Add storage" : "Tároló becsatolása"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js
index e324a70e98e..b01e13e6085 100644
--- a/apps/files_external/l10n/id.js
+++ b/apps/files_external/l10n/id.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Pengaturan Lanjutan",
"Delete" : "Hapus",
"Add storage" : "Tambahkan penyimpanan",
- "Enable User External Storage" : "Aktifkan Penyimpanan Eksternal Pengguna",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json
index 83f81014b1e..383850199ac 100644
--- a/apps/files_external/l10n/id.json
+++ b/apps/files_external/l10n/id.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Pengaturan Lanjutan",
"Delete" : "Hapus",
"Add storage" : "Tambahkan penyimpanan",
- "Enable User External Storage" : "Aktifkan Penyimpanan Eksternal Pengguna",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/is.js b/apps/files_external/l10n/is.js
index 8af1f2ac0cf..a1edd11fc1c 100644
--- a/apps/files_external/l10n/is.js
+++ b/apps/files_external/l10n/is.js
@@ -17,7 +17,6 @@ OC.L10N.register(
"External Storage" : "Ytri gagnageymsla",
"Folder name" : "Nafn möppu",
"Configuration" : "Uppsetning",
- "Delete" : "Eyða",
- "Enable User External Storage" : "Virkja ytra gagnasvæði notenda"
+ "Delete" : "Eyða"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json
index 8abd02bdf0a..6d52ed3a896 100644
--- a/apps/files_external/l10n/is.json
+++ b/apps/files_external/l10n/is.json
@@ -15,7 +15,6 @@
"External Storage" : "Ytri gagnageymsla",
"Folder name" : "Nafn möppu",
"Configuration" : "Uppsetning",
- "Delete" : "Eyða",
- "Enable User External Storage" : "Virkja ytra gagnasvæði notenda"
+ "Delete" : "Eyða"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js
index c39e1764909..a5f8afb474b 100644
--- a/apps/files_external/l10n/it.js
+++ b/apps/files_external/l10n/it.js
@@ -101,7 +101,7 @@ OC.L10N.register(
"Advanced settings" : "Impostazioni avanzate",
"Delete" : "Elimina",
"Add storage" : "Aggiungi archiviazione",
- "Enable User External Storage" : "Abilita la memoria esterna dell'utente",
- "Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente memoria esterna"
+ "Allow users to mount external storages" : "Consenti agli utenti di montare archiviazioni esterne",
+ "Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json
index ca3786bd3f5..2f6dad37d7c 100644
--- a/apps/files_external/l10n/it.json
+++ b/apps/files_external/l10n/it.json
@@ -99,7 +99,7 @@
"Advanced settings" : "Impostazioni avanzate",
"Delete" : "Elimina",
"Add storage" : "Aggiungi archiviazione",
- "Enable User External Storage" : "Abilita la memoria esterna dell'utente",
- "Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente memoria esterna"
+ "Allow users to mount external storages" : "Consenti agli utenti di montare archiviazioni esterne",
+ "Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js
index 954fff49f47..358a362e506 100644
--- a/apps/files_external/l10n/ja.js
+++ b/apps/files_external/l10n/ja.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"files_external",
{
+ "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。",
"Step 1 failed. Exception: %s" : "ステップ 1 の実行に失敗しました。例外: %s",
"Step 2 failed. Exception: %s" : "ステップ 2 の実行に失敗しました。例外: %s",
"External storage" : "外部ストレージ",
@@ -66,6 +67,7 @@ OC.L10N.register(
"SMB / CIFS using OC login" : "ownCloudログインを利用したSMB / CIFS",
"Username as share" : "共有名",
"OpenStack Object Storage" : "OpenStack ObjectStorage",
+ "Service name" : "サービス名",
"<b>Note:</b> " : "<b>注意:</b> ",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにcURLのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにFTPのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
@@ -77,12 +79,12 @@ OC.L10N.register(
"Scope" : "スコープ",
"External Storage" : "外部ストレージ",
"Folder name" : "フォルダー名",
+ "Authentication" : "認証",
"Configuration" : "設定",
"Available for" : "利用可能",
"Advanced settings" : "詳細設定",
"Delete" : "削除",
"Add storage" : "ストレージを追加",
- "Enable User External Storage" : "ユーザーの外部ストレージを有効にする",
"Allow users to mount the following external storage" : "ユーザーに以下の外部ストレージのマウントを許可する"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json
index 257f0d85251..8af4ce97ced 100644
--- a/apps/files_external/l10n/ja.json
+++ b/apps/files_external/l10n/ja.json
@@ -1,4 +1,5 @@
{ "translations": {
+ "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。",
"Step 1 failed. Exception: %s" : "ステップ 1 の実行に失敗しました。例外: %s",
"Step 2 failed. Exception: %s" : "ステップ 2 の実行に失敗しました。例外: %s",
"External storage" : "外部ストレージ",
@@ -64,6 +65,7 @@
"SMB / CIFS using OC login" : "ownCloudログインを利用したSMB / CIFS",
"Username as share" : "共有名",
"OpenStack Object Storage" : "OpenStack ObjectStorage",
+ "Service name" : "サービス名",
"<b>Note:</b> " : "<b>注意:</b> ",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにcURLのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>注意:</b> PHPにFTPのエクステンションが入っていないか、有効ではありません。%s をマウントすることができません。このシステムの管理者にインストールをお願いしてください。",
@@ -75,12 +77,12 @@
"Scope" : "スコープ",
"External Storage" : "外部ストレージ",
"Folder name" : "フォルダー名",
+ "Authentication" : "認証",
"Configuration" : "設定",
"Available for" : "利用可能",
"Advanced settings" : "詳細設定",
"Delete" : "削除",
"Add storage" : "ストレージを追加",
- "Enable User External Storage" : "ユーザーの外部ストレージを有効にする",
"Allow users to mount the following external storage" : "ユーザーに以下の外部ストレージのマウントを許可する"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ka_GE.js b/apps/files_external/l10n/ka_GE.js
index 6f38743a215..824295cb93d 100644
--- a/apps/files_external/l10n/ka_GE.js
+++ b/apps/files_external/l10n/ka_GE.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Folder name" : "ფოლდერის სახელი",
"Configuration" : "კონფიგურაცია",
"Delete" : "წაშლა",
- "Add storage" : "საცავის დამატება",
- "Enable User External Storage" : "მომხმარებლის ექსტერნალ საცავის აქტივირება"
+ "Add storage" : "საცავის დამატება"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/ka_GE.json b/apps/files_external/l10n/ka_GE.json
index 7ca96f6db5d..73ad2cfd0c5 100644
--- a/apps/files_external/l10n/ka_GE.json
+++ b/apps/files_external/l10n/ka_GE.json
@@ -20,7 +20,6 @@
"Folder name" : "ფოლდერის სახელი",
"Configuration" : "კონფიგურაცია",
"Delete" : "წაშლა",
- "Add storage" : "საცავის დამატება",
- "Enable User External Storage" : "მომხმარებლის ექსტერნალ საცავის აქტივირება"
+ "Add storage" : "საცავის დამატება"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js
index 3faf53bf1e5..0d5bf1b4622 100644
--- a/apps/files_external/l10n/ko.js
+++ b/apps/files_external/l10n/ko.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "고급 설정",
"Delete" : "삭제",
"Add storage" : "저장소 추가",
- "Enable User External Storage" : "사용자 외부 저장소 사용",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json
index 039190cf4f9..2695f209730 100644
--- a/apps/files_external/l10n/ko.json
+++ b/apps/files_external/l10n/ko.json
@@ -99,7 +99,6 @@
"Advanced settings" : "고급 설정",
"Delete" : "삭제",
"Add storage" : "저장소 추가",
- "Enable User External Storage" : "사용자 외부 저장소 사용",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js
index 741d507db42..b6d334d792d 100644
--- a/apps/files_external/l10n/lt_LT.js
+++ b/apps/files_external/l10n/lt_LT.js
@@ -23,7 +23,6 @@ OC.L10N.register(
"Folder name" : "Katalogo pavadinimas",
"Configuration" : "Konfigūracija",
"Delete" : "Ištrinti",
- "Add storage" : "Pridėti saugyklą",
- "Enable User External Storage" : "Įjungti vartotojų išorines saugyklas"
+ "Add storage" : "Pridėti saugyklą"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json
index 152c48a1035..f1c46b145ee 100644
--- a/apps/files_external/l10n/lt_LT.json
+++ b/apps/files_external/l10n/lt_LT.json
@@ -21,7 +21,6 @@
"Folder name" : "Katalogo pavadinimas",
"Configuration" : "Konfigūracija",
"Delete" : "Ištrinti",
- "Add storage" : "Pridėti saugyklą",
- "Enable User External Storage" : "Įjungti vartotojų išorines saugyklas"
+ "Add storage" : "Pridėti saugyklą"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/lv.js b/apps/files_external/l10n/lv.js
index 2f694de2249..7b4d94be6c7 100644
--- a/apps/files_external/l10n/lv.js
+++ b/apps/files_external/l10n/lv.js
@@ -21,7 +21,6 @@ OC.L10N.register(
"Folder name" : "Mapes nosaukums",
"Configuration" : "Konfigurācija",
"Delete" : "Dzēst",
- "Add storage" : "Pievienot krātuvi",
- "Enable User External Storage" : "Aktivēt lietotāja ārējo krātuvi"
+ "Add storage" : "Pievienot krātuvi"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/files_external/l10n/lv.json b/apps/files_external/l10n/lv.json
index 5b281307ec3..7ad68595d73 100644
--- a/apps/files_external/l10n/lv.json
+++ b/apps/files_external/l10n/lv.json
@@ -19,7 +19,6 @@
"Folder name" : "Mapes nosaukums",
"Configuration" : "Konfigurācija",
"Delete" : "Dzēst",
- "Add storage" : "Pievienot krātuvi",
- "Enable User External Storage" : "Aktivēt lietotāja ārējo krātuvi"
+ "Add storage" : "Pievienot krātuvi"
},"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/files_external/l10n/mk.js b/apps/files_external/l10n/mk.js
index 3a62a2b580b..e75f1afa620 100644
--- a/apps/files_external/l10n/mk.js
+++ b/apps/files_external/l10n/mk.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"External Storage" : "Надворешно складиште",
"Folder name" : "Име на папка",
"Configuration" : "Конфигурација",
- "Delete" : "Избриши",
- "Enable User External Storage" : "Овозможи надворешни за корисници"
+ "Delete" : "Избриши"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/files_external/l10n/mk.json b/apps/files_external/l10n/mk.json
index 9fb0994a604..ae095b46310 100644
--- a/apps/files_external/l10n/mk.json
+++ b/apps/files_external/l10n/mk.json
@@ -20,7 +20,6 @@
"External Storage" : "Надворешно складиште",
"Folder name" : "Име на папка",
"Configuration" : "Конфигурација",
- "Delete" : "Избриши",
- "Enable User External Storage" : "Овозможи надворешни за корисници"
+ "Delete" : "Избриши"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/nb_NO.js b/apps/files_external/l10n/nb_NO.js
index 2057f257adc..ecafac048c0 100644
--- a/apps/files_external/l10n/nb_NO.js
+++ b/apps/files_external/l10n/nb_NO.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Avanserte innstillinger",
"Delete" : "Slett",
"Add storage" : "Legg til lagringsplass",
- "Enable User External Storage" : "Aktiver ekstern lagring for bruker",
"Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/nb_NO.json b/apps/files_external/l10n/nb_NO.json
index 36556fd9912..9a7a2ae6287 100644
--- a/apps/files_external/l10n/nb_NO.json
+++ b/apps/files_external/l10n/nb_NO.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Avanserte innstillinger",
"Delete" : "Slett",
"Add storage" : "Legg til lagringsplass",
- "Enable User External Storage" : "Aktiver ekstern lagring for bruker",
"Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/nds.js b/apps/files_external/l10n/nds.js
index 717417fdc2b..f7f1da30c60 100644
--- a/apps/files_external/l10n/nds.js
+++ b/apps/files_external/l10n/nds.js
@@ -96,7 +96,6 @@ OC.L10N.register(
"Advanced settings" : "Erweiterte Einstellungen",
"Delete" : "Löschen",
"Add storage" : "Speicher hinzufügen",
- "Enable User External Storage" : "Externen Speicher für Nutzer aktivieren",
"Allow users to mount the following external storage" : "Erlaube Benutzern folgenden externen Speicher einzuhängen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/nds.json b/apps/files_external/l10n/nds.json
index b7c196ef64c..bfadfc0c123 100644
--- a/apps/files_external/l10n/nds.json
+++ b/apps/files_external/l10n/nds.json
@@ -94,7 +94,6 @@
"Advanced settings" : "Erweiterte Einstellungen",
"Delete" : "Löschen",
"Add storage" : "Speicher hinzufügen",
- "Enable User External Storage" : "Externen Speicher für Nutzer aktivieren",
"Allow users to mount the following external storage" : "Erlaube Benutzern folgenden externen Speicher einzuhängen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js
index 02661996d5e..50e2f785da7 100644
--- a/apps/files_external/l10n/nl.js
+++ b/apps/files_external/l10n/nl.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Geavanceerde instellingen",
"Delete" : "Verwijder",
"Add storage" : "Toevoegen opslag",
- "Enable User External Storage" : "Externe opslag voor gebruikers activeren",
"Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json
index ef7f42b1f38..a17e8e0e1eb 100644
--- a/apps/files_external/l10n/nl.json
+++ b/apps/files_external/l10n/nl.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Geavanceerde instellingen",
"Delete" : "Verwijder",
"Add storage" : "Toevoegen opslag",
- "Enable User External Storage" : "Externe opslag voor gebruikers activeren",
"Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/oc.js b/apps/files_external/l10n/oc.js
index b7bc419fdd7..4771b564edb 100644
--- a/apps/files_external/l10n/oc.js
+++ b/apps/files_external/l10n/oc.js
@@ -1,25 +1,41 @@
OC.L10N.register(
"files_external",
{
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons de requèsta a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons d'aacès a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.",
+ "Please provide a valid app key and secret." : "Provesissètz una clau d'aplicacion e un senhal valids.",
"Step 1 failed. Exception: %s" : "L’etapa 1 a fracassat. Error : %s",
"Step 2 failed. Exception: %s" : "L’etapa 2 a fracassat. Error : %s",
"External storage" : "Emmagazinatge extèrne",
"Storage with id \"%i\" not found" : "Emmagazinatge amb l'id \"%i\" pas trobat",
+ "Invalid backend or authentication mechanism class" : "Servici o metòde d'autentificacion pas valable",
"Invalid mount point" : "Punt de montatge invalid",
+ "Objectstore forbidden" : "\"Objectstore\" interdich",
"Invalid storage backend \"%s\"" : "Servici d'emmagazinatge invalid : \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Pas autorizat a utilizar lo servici \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Pas autorizat a utilizar lo mecanisme d'autentificacion \"%s\"",
+ "Unsatisfied backend parameters" : "Paramètres mancants pel servici",
+ "Unsatisfied authentication mechanism parameters" : "Paramètres mancants pel metòde d'autentificacion",
"Personal" : "Personal",
"System" : "Sistèma",
"Grant access" : "Autorizar l'accès",
"Access granted" : "Accès autorizat",
+ "Error configuring OAuth1" : "Error al moment de la configuracion d'OAuth1",
+ "Error configuring OAuth2" : "Error al moment de la configuracion d'OAuth2",
"Generate keys" : "Generar de claus",
"Error generating key pair" : "Error al moment de la generacion de las claus",
"Enable encryption" : "Activar lo chiframent",
"Enable previews" : "Activar las previsualizacions",
+ "Check for changes" : "Recercar las modificacions",
"Never" : "Pas jamai",
+ "Once every direct access" : "Un còp a cada accès dirècte",
+ "Every time the filesystem is used" : "A cada còp que lo sistèma de fichièrs es utilizat",
+ "All users. Type to select user or group." : "Totes los utilizaires. Clicatz aicí per restrénher.",
"(group)" : "(grop)",
- "Saved" : "Salvat",
+ "Saved" : "Enregistrat",
"Access key" : "Clau d'accès",
"Secret key" : "Clau secreta",
+ "Builtin" : "Integrat",
"None" : "Pas cap",
"OAuth1" : "OAuth1",
"App key" : "App key",
@@ -27,9 +43,15 @@ OC.L10N.register(
"OAuth2" : "OAuth2",
"Client ID" : "ID Client",
"Client secret" : "Secret client",
+ "OpenStack" : "OpenStack",
"Username" : "Nom d'utilizaire",
"Password" : "Senhal",
+ "Tenant name" : "Tenant name",
+ "Identity endpoint URL" : "Identity endpoint URL",
+ "Rackspace" : "Rackspace",
"API key" : "Clau API",
+ "Username and password" : "Nom d'utilizaire e senhal",
+ "Session credentials" : "Informacions d'identificacion de session",
"RSA public key" : "Clau publica RSA",
"Public key" : "Clau publica",
"Amazon S3" : "Amazon S3",
@@ -52,6 +74,7 @@ OC.L10N.register(
"Location" : "Emplaçament",
"ownCloud" : "ownCloud",
"SFTP" : "SFTP",
+ "Root" : "Raiç",
"SFTP with secret key login" : "SFTP amb un identificant secret",
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Partejar",
@@ -60,6 +83,7 @@ OC.L10N.register(
"Username as share" : "Nom d'utilizaire coma nom de partiment",
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Nom del servici",
+ "Request timeout (seconds)" : "Timeout de las requèstas (en segondas)",
"<b>Note:</b> " : "<b>Atencion :</b>",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion :</b> La presa en carga de cURL per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion : </b> La presa en carga del FTP per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.",
@@ -77,7 +101,7 @@ OC.L10N.register(
"Advanced settings" : "Paramètres avançats",
"Delete" : "Suprimir",
"Add storage" : "Apondre un supòrt d'emmagazinatge",
- "Enable User External Storage" : "Autorizar los utilizaires a apondre d'emmagazinatges extèrnes",
+ "Allow users to mount external storages" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes",
"Allow users to mount the following external storage" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes seguents"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_external/l10n/oc.json b/apps/files_external/l10n/oc.json
index 05670245634..f89691dddde 100644
--- a/apps/files_external/l10n/oc.json
+++ b/apps/files_external/l10n/oc.json
@@ -1,23 +1,39 @@
{ "translations": {
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons de requèsta a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons d'aacès a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.",
+ "Please provide a valid app key and secret." : "Provesissètz una clau d'aplicacion e un senhal valids.",
"Step 1 failed. Exception: %s" : "L’etapa 1 a fracassat. Error : %s",
"Step 2 failed. Exception: %s" : "L’etapa 2 a fracassat. Error : %s",
"External storage" : "Emmagazinatge extèrne",
"Storage with id \"%i\" not found" : "Emmagazinatge amb l'id \"%i\" pas trobat",
+ "Invalid backend or authentication mechanism class" : "Servici o metòde d'autentificacion pas valable",
"Invalid mount point" : "Punt de montatge invalid",
+ "Objectstore forbidden" : "\"Objectstore\" interdich",
"Invalid storage backend \"%s\"" : "Servici d'emmagazinatge invalid : \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Pas autorizat a utilizar lo servici \"%s\"",
+ "Not permitted to use authentication mechanism \"%s\"" : "Pas autorizat a utilizar lo mecanisme d'autentificacion \"%s\"",
+ "Unsatisfied backend parameters" : "Paramètres mancants pel servici",
+ "Unsatisfied authentication mechanism parameters" : "Paramètres mancants pel metòde d'autentificacion",
"Personal" : "Personal",
"System" : "Sistèma",
"Grant access" : "Autorizar l'accès",
"Access granted" : "Accès autorizat",
+ "Error configuring OAuth1" : "Error al moment de la configuracion d'OAuth1",
+ "Error configuring OAuth2" : "Error al moment de la configuracion d'OAuth2",
"Generate keys" : "Generar de claus",
"Error generating key pair" : "Error al moment de la generacion de las claus",
"Enable encryption" : "Activar lo chiframent",
"Enable previews" : "Activar las previsualizacions",
+ "Check for changes" : "Recercar las modificacions",
"Never" : "Pas jamai",
+ "Once every direct access" : "Un còp a cada accès dirècte",
+ "Every time the filesystem is used" : "A cada còp que lo sistèma de fichièrs es utilizat",
+ "All users. Type to select user or group." : "Totes los utilizaires. Clicatz aicí per restrénher.",
"(group)" : "(grop)",
- "Saved" : "Salvat",
+ "Saved" : "Enregistrat",
"Access key" : "Clau d'accès",
"Secret key" : "Clau secreta",
+ "Builtin" : "Integrat",
"None" : "Pas cap",
"OAuth1" : "OAuth1",
"App key" : "App key",
@@ -25,9 +41,15 @@
"OAuth2" : "OAuth2",
"Client ID" : "ID Client",
"Client secret" : "Secret client",
+ "OpenStack" : "OpenStack",
"Username" : "Nom d'utilizaire",
"Password" : "Senhal",
+ "Tenant name" : "Tenant name",
+ "Identity endpoint URL" : "Identity endpoint URL",
+ "Rackspace" : "Rackspace",
"API key" : "Clau API",
+ "Username and password" : "Nom d'utilizaire e senhal",
+ "Session credentials" : "Informacions d'identificacion de session",
"RSA public key" : "Clau publica RSA",
"Public key" : "Clau publica",
"Amazon S3" : "Amazon S3",
@@ -50,6 +72,7 @@
"Location" : "Emplaçament",
"ownCloud" : "ownCloud",
"SFTP" : "SFTP",
+ "Root" : "Raiç",
"SFTP with secret key login" : "SFTP amb un identificant secret",
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Partejar",
@@ -58,6 +81,7 @@
"Username as share" : "Nom d'utilizaire coma nom de partiment",
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Nom del servici",
+ "Request timeout (seconds)" : "Timeout de las requèstas (en segondas)",
"<b>Note:</b> " : "<b>Atencion :</b>",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion :</b> La presa en carga de cURL per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion : </b> La presa en carga del FTP per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.",
@@ -75,7 +99,7 @@
"Advanced settings" : "Paramètres avançats",
"Delete" : "Suprimir",
"Add storage" : "Apondre un supòrt d'emmagazinatge",
- "Enable User External Storage" : "Autorizar los utilizaires a apondre d'emmagazinatges extèrnes",
+ "Allow users to mount external storages" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes",
"Allow users to mount the following external storage" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes seguents"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js
index ac24a2b9006..1f7cc6b1979 100644
--- a/apps/files_external/l10n/pl.js
+++ b/apps/files_external/l10n/pl.js
@@ -70,7 +70,6 @@ OC.L10N.register(
"Advanced settings" : "Ustawienia zaawansowane",
"Delete" : "Usuń",
"Add storage" : "Dodaj zasoby dyskowe",
- "Enable User External Storage" : "Włącz zewnętrzne zasoby dyskowe użytkownika",
"Allow users to mount the following external storage" : "Pozwól użytkownikom montować następujące zewnętrzne zasoby dyskowe"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json
index 750e7384d68..5b5059a5d18 100644
--- a/apps/files_external/l10n/pl.json
+++ b/apps/files_external/l10n/pl.json
@@ -68,7 +68,6 @@
"Advanced settings" : "Ustawienia zaawansowane",
"Delete" : "Usuń",
"Add storage" : "Dodaj zasoby dyskowe",
- "Enable User External Storage" : "Włącz zewnętrzne zasoby dyskowe użytkownika",
"Allow users to mount the following external storage" : "Pozwól użytkownikom montować następujące zewnętrzne zasoby dyskowe"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 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/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js
index 3d392a688ee..3abc6d280d9 100644
--- a/apps/files_external/l10n/pt_BR.js
+++ b/apps/files_external/l10n/pt_BR.js
@@ -101,7 +101,7 @@ OC.L10N.register(
"Advanced settings" : "Configurações avançadas",
"Delete" : "Excluir",
"Add storage" : "Adicionar Armazenamento",
- "Enable User External Storage" : "Habilitar Armazenamento Externo do Usuário",
+ "Allow users to mount external storages" : "Permitir que usuários possam realizar armazenamentos externos",
"Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json
index 9289ac7f388..31f71df8be9 100644
--- a/apps/files_external/l10n/pt_BR.json
+++ b/apps/files_external/l10n/pt_BR.json
@@ -99,7 +99,7 @@
"Advanced settings" : "Configurações avançadas",
"Delete" : "Excluir",
"Add storage" : "Adicionar Armazenamento",
- "Enable User External Storage" : "Habilitar Armazenamento Externo do Usuário",
+ "Allow users to mount external storages" : "Permitir que usuários possam realizar armazenamentos externos",
"Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js
index 6ea55871262..3d6d9377cc9 100644
--- a/apps/files_external/l10n/pt_PT.js
+++ b/apps/files_external/l10n/pt_PT.js
@@ -89,7 +89,6 @@ OC.L10N.register(
"Advanced settings" : "Definições avançadas",
"Delete" : "Apagar",
"Add storage" : "Adicionar armazenamento",
- "Enable User External Storage" : "Ativar Armazenamento Externo para o Utilizador",
"Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json
index 8711356815f..ae3cf899ed8 100644
--- a/apps/files_external/l10n/pt_PT.json
+++ b/apps/files_external/l10n/pt_PT.json
@@ -87,7 +87,6 @@
"Advanced settings" : "Definições avançadas",
"Delete" : "Apagar",
"Add storage" : "Adicionar armazenamento",
- "Enable User External Storage" : "Ativar Armazenamento Externo para o Utilizador",
"Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ro.js b/apps/files_external/l10n/ro.js
index 89f07797d96..d8ba040824c 100644
--- a/apps/files_external/l10n/ro.js
+++ b/apps/files_external/l10n/ro.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Configuration" : "Configurație",
"Delete" : "Șterge",
"Add storage" : "Adauga stocare",
- "Enable User External Storage" : "Permite stocare externă pentru utilizatori",
"Allow users to mount the following external storage" : "Permite utilizatorilor să monteze următoarea unitate de stocare"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/files_external/l10n/ro.json b/apps/files_external/l10n/ro.json
index 912e6d99b9e..cbe2826def4 100644
--- a/apps/files_external/l10n/ro.json
+++ b/apps/files_external/l10n/ro.json
@@ -29,7 +29,6 @@
"Configuration" : "Configurație",
"Delete" : "Șterge",
"Add storage" : "Adauga stocare",
- "Enable User External Storage" : "Permite stocare externă pentru utilizatori",
"Allow users to mount the following external storage" : "Permite utilizatorilor să monteze următoarea unitate de stocare"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js
index 7e4bfc18730..5550ea780ab 100644
--- a/apps/files_external/l10n/ru.js
+++ b/apps/files_external/l10n/ru.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Расширенные настройки",
"Delete" : "Удалить",
"Add storage" : "Добавить хранилище",
- "Enable User External Storage" : "Включить пользовательские внешние хранилища",
"Allow users to mount the following external storage" : "Разрешить пользователям монтировать следующие сервисы хранения данных"
},
"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/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json
index 50754b309ec..52792a3f09a 100644
--- a/apps/files_external/l10n/ru.json
+++ b/apps/files_external/l10n/ru.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Расширенные настройки",
"Delete" : "Удалить",
"Add storage" : "Добавить хранилище",
- "Enable User External Storage" : "Включить пользовательские внешние хранилища",
"Allow users to mount the following external storage" : "Разрешить пользователям монтировать следующие сервисы хранения данных"
},"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/files_external/l10n/si_LK.js b/apps/files_external/l10n/si_LK.js
index 80a6026ad75..82b68af82eb 100644
--- a/apps/files_external/l10n/si_LK.js
+++ b/apps/files_external/l10n/si_LK.js
@@ -18,7 +18,6 @@ OC.L10N.register(
"External Storage" : "භාහිර ගබඩාව",
"Folder name" : "ෆොල්ඩරයේ නම",
"Configuration" : "වින්‍යාසය",
- "Delete" : "මකා දමන්න",
- "Enable User External Storage" : "පරිශීලක භාහිර ගබඩාවන් සක්‍රිය කරන්න"
+ "Delete" : "මකා දමන්න"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/si_LK.json b/apps/files_external/l10n/si_LK.json
index bc3a9ee11db..2150ac0f9b2 100644
--- a/apps/files_external/l10n/si_LK.json
+++ b/apps/files_external/l10n/si_LK.json
@@ -16,7 +16,6 @@
"External Storage" : "භාහිර ගබඩාව",
"Folder name" : "ෆොල්ඩරයේ නම",
"Configuration" : "වින්‍යාසය",
- "Delete" : "මකා දමන්න",
- "Enable User External Storage" : "පරිශීලක භාහිර ගබඩාවන් සක්‍රිය කරන්න"
+ "Delete" : "මකා දමන්න"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sk_SK.js b/apps/files_external/l10n/sk_SK.js
index 2f9732961fb..41f9c866196 100644
--- a/apps/files_external/l10n/sk_SK.js
+++ b/apps/files_external/l10n/sk_SK.js
@@ -100,7 +100,6 @@ OC.L10N.register(
"Advanced settings" : "Rozšírené nastavenia",
"Delete" : "Zmazať",
"Add storage" : "Pridať úložisko",
- "Enable User External Storage" : "Povoliť externé úložisko",
"Allow users to mount the following external storage" : "Povoliť používateľom pripojiť tieto externé úložiská"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files_external/l10n/sk_SK.json b/apps/files_external/l10n/sk_SK.json
index b2b21ffe1bb..4072136fa53 100644
--- a/apps/files_external/l10n/sk_SK.json
+++ b/apps/files_external/l10n/sk_SK.json
@@ -98,7 +98,6 @@
"Advanced settings" : "Rozšírené nastavenia",
"Delete" : "Zmazať",
"Add storage" : "Pridať úložisko",
- "Enable User External Storage" : "Povoliť externé úložisko",
"Allow users to mount the following external storage" : "Povoliť používateľom pripojiť tieto externé úložiská"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js
index c971920298a..f9513a5f11c 100644
--- a/apps/files_external/l10n/sl.js
+++ b/apps/files_external/l10n/sl.js
@@ -70,7 +70,6 @@ OC.L10N.register(
"Advanced settings" : "Napredne nastavitve",
"Delete" : "Izbriši",
"Add storage" : "Dodaj shrambo",
- "Enable User External Storage" : "Omogoči zunanjo uporabniško podatkovno shrambo",
"Allow users to mount the following external storage" : "Dovoli uporabnikom priklapljanje navedenih zunanjih shramb."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json
index 1a8df6097d8..ca97f27b234 100644
--- a/apps/files_external/l10n/sl.json
+++ b/apps/files_external/l10n/sl.json
@@ -68,7 +68,6 @@
"Advanced settings" : "Napredne nastavitve",
"Delete" : "Izbriši",
"Add storage" : "Dodaj shrambo",
- "Enable User External Storage" : "Omogoči zunanjo uporabniško podatkovno shrambo",
"Allow users to mount the following external storage" : "Dovoli uporabnikom priklapljanje navedenih zunanjih shramb."
},"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/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js
index e61b50257ce..7edf0b5e67b 100644
--- a/apps/files_external/l10n/sq.js
+++ b/apps/files_external/l10n/sq.js
@@ -58,10 +58,10 @@ OC.L10N.register(
"Port" : "Portë",
"Region" : "Rajon",
"Enable SSL" : "Aktivizo SSL-në",
- "Enable Path Style" : "Aktivizon Stile Shtegu",
+ "Enable Path Style" : "Aktivizo Stile Shtegu",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Remote subfolder" : "Nëndosje e largët",
+ "Remote subfolder" : "Nëndosje e largët",
"Secure https://" : "https:// e sigurt",
"Dropbox" : "Dropbox",
"FTP" : "FTP",
@@ -69,7 +69,7 @@ OC.L10N.register(
"Secure ftps://" : "ftps:// e sigurt",
"Google Drive" : "Google Drive",
"Local" : "Vendore",
- "Location" : "Vendndodhja",
+ "Location" : "Vendndodhje",
"ownCloud" : "ownCloud",
"SFTP" : "SFTP",
"Root" : "Rrënjë",
@@ -87,7 +87,7 @@ OC.L10N.register(
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është aktivizuar ose instaluar mbulimi i FTP-së në PHP. Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është instaluar \"%s\". Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
"No external storage configured" : "Pa depozita të jashtme të formësuara",
- "You can add external storages in the personal settings" : "Depozita të jashmte mund të shtoni që prej rregullimeve personale",
+ "You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale",
"Name" : "Emër",
"Storage type" : "Lloj depozite",
"Scope" : "Shtrirje",
@@ -95,11 +95,11 @@ OC.L10N.register(
"Folder name" : "Emër dosjeje",
"Authentication" : "Mirëfilltësim",
"Configuration" : "Formësim",
- "Available for" : "I gatshëm për",
+ "Available for" : "E gatshme për",
"Advanced settings" : "Rregullime të mëtejshme",
"Delete" : "Fshije",
"Add storage" : "Shtoni depozitë",
- "Enable User External Storage" : "Aktivizo Depozita të Jashtme Përdoruesi",
+ "Allow users to mount external storages" : "Lejoju përdoruesve të montojnë depozita të jashtme",
"Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json
index 6c2d60c87a1..3d597974f48 100644
--- a/apps/files_external/l10n/sq.json
+++ b/apps/files_external/l10n/sq.json
@@ -56,10 +56,10 @@
"Port" : "Portë",
"Region" : "Rajon",
"Enable SSL" : "Aktivizo SSL-në",
- "Enable Path Style" : "Aktivizon Stile Shtegu",
+ "Enable Path Style" : "Aktivizo Stile Shtegu",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Remote subfolder" : "Nëndosje e largët",
+ "Remote subfolder" : "Nëndosje e largët",
"Secure https://" : "https:// e sigurt",
"Dropbox" : "Dropbox",
"FTP" : "FTP",
@@ -67,7 +67,7 @@
"Secure ftps://" : "ftps:// e sigurt",
"Google Drive" : "Google Drive",
"Local" : "Vendore",
- "Location" : "Vendndodhja",
+ "Location" : "Vendndodhje",
"ownCloud" : "ownCloud",
"SFTP" : "SFTP",
"Root" : "Rrënjë",
@@ -85,7 +85,7 @@
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është aktivizuar ose instaluar mbulimi i FTP-së në PHP. Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Shënim:</b> S’është instaluar \"%s\". Montimi i %s s’është i mundur. Ju lutemi, kërkojini përgjegjësit të sistemit tuaj ta instalojë.",
"No external storage configured" : "Pa depozita të jashtme të formësuara",
- "You can add external storages in the personal settings" : "Depozita të jashmte mund të shtoni që prej rregullimeve personale",
+ "You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale",
"Name" : "Emër",
"Storage type" : "Lloj depozite",
"Scope" : "Shtrirje",
@@ -93,11 +93,11 @@
"Folder name" : "Emër dosjeje",
"Authentication" : "Mirëfilltësim",
"Configuration" : "Formësim",
- "Available for" : "I gatshëm për",
+ "Available for" : "E gatshme për",
"Advanced settings" : "Rregullime të mëtejshme",
"Delete" : "Fshije",
"Add storage" : "Shtoni depozitë",
- "Enable User External Storage" : "Aktivizo Depozita të Jashtme Përdoruesi",
+ "Allow users to mount external storages" : "Lejoju përdoruesve të montojnë depozita të jashtme",
"Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sr.js b/apps/files_external/l10n/sr.js
index 633bfbcb423..02596d8ab22 100644
--- a/apps/files_external/l10n/sr.js
+++ b/apps/files_external/l10n/sr.js
@@ -69,7 +69,6 @@ OC.L10N.register(
"Advanced settings" : "Напредне поставке",
"Delete" : "Обриши",
"Add storage" : "Додај складиште",
- "Enable User External Storage" : "Укључи корисничко спољашње складиште",
"Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта"
},
"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/files_external/l10n/sr.json b/apps/files_external/l10n/sr.json
index 820bec758df..f1c12eeb0f7 100644
--- a/apps/files_external/l10n/sr.json
+++ b/apps/files_external/l10n/sr.json
@@ -67,7 +67,6 @@
"Advanced settings" : "Напредне поставке",
"Delete" : "Обриши",
"Add storage" : "Додај складиште",
- "Enable User External Storage" : "Укључи корисничко спољашње складиште",
"Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта"
},"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/files_external/l10n/sr@latin.js b/apps/files_external/l10n/sr@latin.js
index 0d1c69f4b75..880a33c1614 100644
--- a/apps/files_external/l10n/sr@latin.js
+++ b/apps/files_external/l10n/sr@latin.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Available for" : "Dostupno za",
"Delete" : "Obriši",
"Add storage" : "Dodaj skladište",
- "Enable User External Storage" : "Omogući korisničko spoljašnje skladište",
"Allow users to mount the following external storage" : "Omogući korisnicima da namontiraju sledeće spoljašnje skladište"
},
"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/files_external/l10n/sr@latin.json b/apps/files_external/l10n/sr@latin.json
index 747a9f1082d..760100867eb 100644
--- a/apps/files_external/l10n/sr@latin.json
+++ b/apps/files_external/l10n/sr@latin.json
@@ -48,7 +48,6 @@
"Available for" : "Dostupno za",
"Delete" : "Obriši",
"Add storage" : "Dodaj skladište",
- "Enable User External Storage" : "Omogući korisničko spoljašnje skladište",
"Allow users to mount the following external storage" : "Omogući korisnicima da namontiraju sledeće spoljašnje skladište"
},"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/files_external/l10n/sv.js b/apps/files_external/l10n/sv.js
index 2defbf76c8c..09786533e87 100644
--- a/apps/files_external/l10n/sv.js
+++ b/apps/files_external/l10n/sv.js
@@ -55,7 +55,6 @@ OC.L10N.register(
"Available for" : "Tillgänglig för",
"Delete" : "Radera",
"Add storage" : "Lägg till lagring",
- "Enable User External Storage" : "Aktivera extern lagring för användare",
"Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json
index ec8b7ef37fb..ddb7439cb8d 100644
--- a/apps/files_external/l10n/sv.json
+++ b/apps/files_external/l10n/sv.json
@@ -53,7 +53,6 @@
"Available for" : "Tillgänglig för",
"Delete" : "Radera",
"Add storage" : "Lägg till lagring",
- "Enable User External Storage" : "Aktivera extern lagring för användare",
"Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ta_LK.js b/apps/files_external/l10n/ta_LK.js
index 382d5e943a1..8ab0f6d513c 100644
--- a/apps/files_external/l10n/ta_LK.js
+++ b/apps/files_external/l10n/ta_LK.js
@@ -18,7 +18,6 @@ OC.L10N.register(
"External Storage" : "வெளி சேமிப்பு",
"Folder name" : "கோப்புறை பெயர்",
"Configuration" : "தகவமைப்பு",
- "Delete" : "நீக்குக",
- "Enable User External Storage" : "பயனாளர் வெளி சேமிப்பை இயலுமைப்படுத்துக"
+ "Delete" : "நீக்குக"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/ta_LK.json b/apps/files_external/l10n/ta_LK.json
index c838cbe0173..dd1c1003728 100644
--- a/apps/files_external/l10n/ta_LK.json
+++ b/apps/files_external/l10n/ta_LK.json
@@ -16,7 +16,6 @@
"External Storage" : "வெளி சேமிப்பு",
"Folder name" : "கோப்புறை பெயர்",
"Configuration" : "தகவமைப்பு",
- "Delete" : "நீக்குக",
- "Enable User External Storage" : "பயனாளர் வெளி சேமிப்பை இயலுமைப்படுத்துக"
+ "Delete" : "நீக்குக"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/th_TH.js b/apps/files_external/l10n/th_TH.js
index 9879265a709..c027e63642f 100644
--- a/apps/files_external/l10n/th_TH.js
+++ b/apps/files_external/l10n/th_TH.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "ตั้งค่าขั้นสูง",
"Delete" : "ลบ",
"Add storage" : "เพิ่มพื้นที่จัดเก็บข้อมูล",
- "Enable User External Storage" : "เปิดให้มีการใช้พื้นที่จัดเก็บข้อมูลของผู้ใช้งานจากภายนอกได้",
"Allow users to mount the following external storage" : "อนุญาตให้ผู้ใช้ติดตั้งจัดเก็บข้อมูลภายนอกต่อไปนี้"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/th_TH.json b/apps/files_external/l10n/th_TH.json
index 8c00efd7bb2..34bf501d7af 100644
--- a/apps/files_external/l10n/th_TH.json
+++ b/apps/files_external/l10n/th_TH.json
@@ -99,7 +99,6 @@
"Advanced settings" : "ตั้งค่าขั้นสูง",
"Delete" : "ลบ",
"Add storage" : "เพิ่มพื้นที่จัดเก็บข้อมูล",
- "Enable User External Storage" : "เปิดให้มีการใช้พื้นที่จัดเก็บข้อมูลของผู้ใช้งานจากภายนอกได้",
"Allow users to mount the following external storage" : "อนุญาตให้ผู้ใช้ติดตั้งจัดเก็บข้อมูลภายนอกต่อไปนี้"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js
index 6eada0b32f3..619e5975ed8 100644
--- a/apps/files_external/l10n/tr.js
+++ b/apps/files_external/l10n/tr.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Advanced settings" : "Gelişmiş ayarlar",
"Delete" : "Sil",
"Add storage" : "Depo ekle",
- "Enable User External Storage" : "Kullanıcılar için Harici Depolamayı Etkinleştir",
"Allow users to mount the following external storage" : "Kullanıcıların aşağıdaki harici depolamayı bağlamalarına izin ver"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json
index 7fd764d0165..cb315a333c2 100644
--- a/apps/files_external/l10n/tr.json
+++ b/apps/files_external/l10n/tr.json
@@ -99,7 +99,6 @@
"Advanced settings" : "Gelişmiş ayarlar",
"Delete" : "Sil",
"Add storage" : "Depo ekle",
- "Enable User External Storage" : "Kullanıcılar için Harici Depolamayı Etkinleştir",
"Allow users to mount the following external storage" : "Kullanıcıların aşağıdaki harici depolamayı bağlamalarına izin ver"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/uk.js b/apps/files_external/l10n/uk.js
index 68b1787346a..f8ca8dc360c 100644
--- a/apps/files_external/l10n/uk.js
+++ b/apps/files_external/l10n/uk.js
@@ -64,7 +64,6 @@ OC.L10N.register(
"Advanced settings" : "Розширені налаштування",
"Delete" : "Видалити",
"Add storage" : "Додати сховище",
- "Enable User External Storage" : "Активувати користувацькі зовнішні сховища",
"Allow users to mount the following external storage" : "Дозволити користувачам монтувати наступні зовнішні сховища"
},
"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/files_external/l10n/uk.json b/apps/files_external/l10n/uk.json
index 5765a30dc59..c34d0d2c82f 100644
--- a/apps/files_external/l10n/uk.json
+++ b/apps/files_external/l10n/uk.json
@@ -62,7 +62,6 @@
"Advanced settings" : "Розширені налаштування",
"Delete" : "Видалити",
"Add storage" : "Додати сховище",
- "Enable User External Storage" : "Активувати користувацькі зовнішні сховища",
"Allow users to mount the following external storage" : "Дозволити користувачам монтувати наступні зовнішні сховища"
},"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/files_external/l10n/vi.js b/apps/files_external/l10n/vi.js
index 49c746851eb..f3fdb39136c 100644
--- a/apps/files_external/l10n/vi.js
+++ b/apps/files_external/l10n/vi.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"Folder name" : "Tên thư mục",
"Configuration" : "Cấu hình",
"Delete" : "Xóa",
- "Add storage" : "Thêm bộ nhớ",
- "Enable User External Storage" : "Kích hoạt tính năng lưu trữ ngoài"
+ "Add storage" : "Thêm bộ nhớ"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/vi.json b/apps/files_external/l10n/vi.json
index 4daddc7ae57..fdba39fc95e 100644
--- a/apps/files_external/l10n/vi.json
+++ b/apps/files_external/l10n/vi.json
@@ -20,7 +20,6 @@
"Folder name" : "Tên thư mục",
"Configuration" : "Cấu hình",
"Delete" : "Xóa",
- "Add storage" : "Thêm bộ nhớ",
- "Enable User External Storage" : "Kích hoạt tính năng lưu trữ ngoài"
+ "Add storage" : "Thêm bộ nhớ"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js
index 3ba25300d95..4b99fc170a2 100644
--- a/apps/files_external/l10n/zh_CN.js
+++ b/apps/files_external/l10n/zh_CN.js
@@ -42,7 +42,6 @@ OC.L10N.register(
"Available for" : "可用于",
"Delete" : "删除",
"Add storage" : "增加存储",
- "Enable User External Storage" : "启用用户外部存储",
"Allow users to mount the following external storage" : "允许用户挂载以下外部存储"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json
index 94301573ab9..fddc688c5c2 100644
--- a/apps/files_external/l10n/zh_CN.json
+++ b/apps/files_external/l10n/zh_CN.json
@@ -40,7 +40,6 @@
"Available for" : "可用于",
"Delete" : "删除",
"Add storage" : "增加存储",
- "Enable User External Storage" : "启用用户外部存储",
"Allow users to mount the following external storage" : "允许用户挂载以下外部存储"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js
index e4e01cd2d59..d272f82f094 100644
--- a/apps/files_external/l10n/zh_TW.js
+++ b/apps/files_external/l10n/zh_TW.js
@@ -33,7 +33,6 @@ OC.L10N.register(
"Available for" : "可用的",
"Delete" : "刪除",
"Add storage" : "增加儲存區",
- "Enable User External Storage" : "啓用使用者外部儲存",
"Allow users to mount the following external storage" : "允許使用者自行掛載以下的外部儲存"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json
index 1ed049bc079..3efd2fa691f 100644
--- a/apps/files_external/l10n/zh_TW.json
+++ b/apps/files_external/l10n/zh_TW.json
@@ -31,7 +31,6 @@
"Available for" : "可用的",
"Delete" : "刪除",
"Add storage" : "增加儲存區",
- "Enable User External Storage" : "啓用使用者外部儲存",
"Allow users to mount the following external storage" : "允許使用者自行掛載以下的外部儲存"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php
index 6a822c3fc69..3b353b7777a 100644
--- a/apps/files_external/lib/dropbox.php
+++ b/apps/files_external/lib/dropbox.php
@@ -64,7 +64,7 @@ class Dropbox extends \OC\Files\Storage\Common {
* @param string $path
*/
private function deleteMetaData($path) {
- $path = $this->root.$path;
+ $path = ltrim($this->root.$path, '/');
if (isset($this->metaData[$path])) {
unset($this->metaData[$path]);
return true;
@@ -72,6 +72,10 @@ class Dropbox extends \OC\Files\Storage\Common {
return false;
}
+ private function setMetaData($path, $metaData) {
+ $this->metaData[ltrim($path, '/')] = $metaData;
+ }
+
/**
* Returns the path's metadata
* @param string $path path for which to return the metadata
@@ -80,7 +84,7 @@ class Dropbox extends \OC\Files\Storage\Common {
* false, null if the file doesn't exist or "false" if the operation failed
*/
private function getDropBoxMetaData($path, $list = false) {
- $path = $this->root.$path;
+ $path = ltrim($this->root.$path, '/');
if ( ! $list && isset($this->metaData[$path])) {
return $this->metaData[$path];
} else {
@@ -96,14 +100,14 @@ class Dropbox extends \OC\Files\Storage\Common {
// Cache folder's contents
foreach ($response['contents'] as $file) {
if (!isset($file['is_deleted']) || !$file['is_deleted']) {
- $this->metaData[$path.'/'.basename($file['path'])] = $file;
+ $this->setMetaData($path.'/'.basename($file['path']), $file);
$contents[] = $file;
}
}
unset($response['contents']);
}
if (!isset($response['is_deleted']) || !$response['is_deleted']) {
- $this->metaData[$path] = $response;
+ $this->setMetaData($path, $response);
}
// Return contents of folder only
return $contents;
@@ -116,7 +120,7 @@ class Dropbox extends \OC\Files\Storage\Common {
$response = $this->dropbox->getMetaData($requestPath, 'false');
if (!isset($response['is_deleted']) || !$response['is_deleted']) {
- $this->metaData[$path] = $response;
+ $this->setMetaData($path, $response);
return $response;
}
return null;
diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php
index d00d22765e3..cac73cb87ee 100644
--- a/apps/files_external/templates/settings.php
+++ b/apps/files_external/templates/settings.php
@@ -193,7 +193,7 @@
<br />
<input type="checkbox" name="allowUserMounting" id="allowUserMounting" class="checkbox"
value="1" <?php if ($_['allowUserMounting'] == 'yes') print_unescaped(' checked="checked"'); ?> />
- <label for="allowUserMounting"><?php p($l->t('Enable User External Storage')); ?></label> <span id="userMountingMsg" class="msg"></span>
+ <label for="allowUserMounting"><?php p($l->t('Allow users to mount external storages')); ?></label> <span id="userMountingMsg" class="msg"></span>
<p id="userMountingBackends"<?php if ($_['allowUserMounting'] != 'yes'): ?> class="hidden"<?php endif; ?>>
<?php p($l->t('Allow users to mount the following external storage')); ?><br />
diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index 80925dd3d6b..72e56456961 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -11,7 +11,7 @@ Turning the feature off removes shared files and folders on the server for all s
<author>Michael Gapczynski, Bjoern Schiessle</author>
<shipped>true</shipped>
<default_enable/>
- <version>0.8.0</version>
+ <version>0.8.1</version>
<types>
<filesystem/>
</types>
diff --git a/apps/files_sharing/appinfo/install.php b/apps/files_sharing/appinfo/install.php
index f076a17e444..607e990346a 100644
--- a/apps/files_sharing/appinfo/install.php
+++ b/apps/files_sharing/appinfo/install.php
@@ -20,3 +20,4 @@
*/
\OC::$server->getJobList()->add('OCA\Files_sharing\Lib\DeleteOrphanedSharesJob');
+\OC::$server->getJobList()->add('OCA\Files_sharing\ExpireSharesJob');
diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php
index 0eb3224c1ca..03fb78a05af 100644
--- a/apps/files_sharing/appinfo/update.php
+++ b/apps/files_sharing/appinfo/update.php
@@ -30,3 +30,4 @@ if (version_compare($installedVersion, '0.6.0', '<')) {
}
\OC::$server->getJobList()->add('OCA\Files_sharing\Lib\DeleteOrphanedSharesJob');
+\OC::$server->getJobList()->add('OCA\Files_sharing\ExpireSharesJob');
diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js
index 16b4f1589b1..246b639f652 100644
--- a/apps/files_sharing/js/public.js
+++ b/apps/files_sharing/js/public.js
@@ -54,7 +54,7 @@ OCA.Sharing.PublicApp = {
$el,
{
id: 'files.public',
- scrollContainer: $(window),
+ scrollContainer: $('#content-wrapper'),
dragOptions: dragOptions,
folderDropOptions: folderDropOptions,
fileActions: fileActions,
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index 413f4a2ac8c..d2e3bc9b263 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -67,6 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "クラウド連携",
"Your Federated Cloud ID:" : "あなたのクラウド連携ID:",
"Share it:" : "以下で共有:",
+ "Add to your website" : "ウェブサイトに追加",
"Share with me via ownCloud" : "OwnCloud経由で共有",
"HTML Code:" : "HTMLコード:"
},
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index 65d762871de..16ca792e33d 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -65,6 +65,7 @@
"Federated Cloud" : "クラウド連携",
"Your Federated Cloud ID:" : "あなたのクラウド連携ID:",
"Share it:" : "以下で共有:",
+ "Add to your website" : "ウェブサイトに追加",
"Share with me via ownCloud" : "OwnCloud経由で共有",
"HTML Code:" : "HTMLコード:"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js
index 6127399e1c8..413214d58de 100644
--- a/apps/files_sharing/l10n/sq.js
+++ b/apps/files_sharing/l10n/sq.js
@@ -7,9 +7,9 @@ OC.L10N.register(
"Could not authenticate to remote share, password might be wrong" : "S’bëri dot mirëfilltësimin te ndarja e largët, fjalëkalimi mund të jetë i gabuar",
"Storage not valid" : "Depozitë jo e vlefshme",
"Couldn't add remote share" : "S’shtoi dotë ndarje të largët",
- "Shared with you" : "Ndarë me ju",
- "Shared with others" : "Ndarë me të tjerët",
- "Shared by link" : "Ndarë me lidhje",
+ "Shared with you" : "Të ndara me ju",
+ "Shared with others" : "Të ndara me të tjerët",
+ "Shared by link" : "Të ndara me lidhje",
"Nothing shared with you yet" : "Ende pa ndarë gjë me ju",
"Files and folders others share with you will show up here" : "Këtu do të shfaqen kartelat dhe dosjet që të jerët ndajnë me ju",
"Nothing shared yet" : "Ende pa ndarë gjë",
@@ -41,7 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with group %3$s" : "%2$s ndau %1$s me grupin %3$s",
"%2$s shared %1$s via link" : "%2$s ndau %1$s përmes një lidhjeje",
"%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
- "You shared %1$s via link" : "E ndatë %1$s përmes një lidhjeje",
+ "You shared %1$s via link" : "Ndatë %1$s përmes një lidhjeje",
"Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
"Shared with %2$s" : "U nda me %2$s",
"Shared with group %2$s" : "U nda me grupin %2$s",
@@ -61,6 +61,7 @@ OC.L10N.register(
"Password" : "Fjalëkalim",
"No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
"Name" : "Emër",
+ "Share time" : "Kohë ndarjeje",
"Sorry, this link doesn’t seem to work anymore." : "Na ndjeni, kjo lidhje duket se nuk funksionon më.",
"Reasons might be:" : "Arsyet mund të jenë:",
"the item was removed" : "objekti është hequr",
diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json
index 7c5cfcc068d..8722966f5da 100644
--- a/apps/files_sharing/l10n/sq.json
+++ b/apps/files_sharing/l10n/sq.json
@@ -5,9 +5,9 @@
"Could not authenticate to remote share, password might be wrong" : "S’bëri dot mirëfilltësimin te ndarja e largët, fjalëkalimi mund të jetë i gabuar",
"Storage not valid" : "Depozitë jo e vlefshme",
"Couldn't add remote share" : "S’shtoi dotë ndarje të largët",
- "Shared with you" : "Ndarë me ju",
- "Shared with others" : "Ndarë me të tjerët",
- "Shared by link" : "Ndarë me lidhje",
+ "Shared with you" : "Të ndara me ju",
+ "Shared with others" : "Të ndara me të tjerët",
+ "Shared by link" : "Të ndara me lidhje",
"Nothing shared with you yet" : "Ende pa ndarë gjë me ju",
"Files and folders others share with you will show up here" : "Këtu do të shfaqen kartelat dhe dosjet që të jerët ndajnë me ju",
"Nothing shared yet" : "Ende pa ndarë gjë",
@@ -39,7 +39,7 @@
"%2$s shared %1$s with group %3$s" : "%2$s ndau %1$s me grupin %3$s",
"%2$s shared %1$s via link" : "%2$s ndau %1$s përmes një lidhjeje",
"%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
- "You shared %1$s via link" : "E ndatë %1$s përmes një lidhjeje",
+ "You shared %1$s via link" : "Ndatë %1$s përmes një lidhjeje",
"Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
"Shared with %2$s" : "U nda me %2$s",
"Shared with group %2$s" : "U nda me grupin %2$s",
@@ -59,6 +59,7 @@
"Password" : "Fjalëkalim",
"No entries found in this folder" : "S’u gjetën zëra në këtë dosje",
"Name" : "Emër",
+ "Share time" : "Kohë ndarjeje",
"Sorry, this link doesn’t seem to work anymore." : "Na ndjeni, kjo lidhje duket se nuk funksionon më.",
"Reasons might be:" : "Arsyet mund të jenë:",
"the item was removed" : "objekti është hequr",
diff --git a/apps/files_sharing/lib/expiresharesjob.php b/apps/files_sharing/lib/expiresharesjob.php
new file mode 100644
index 00000000000..bcd3fbe4605
--- /dev/null
+++ b/apps/files_sharing/lib/expiresharesjob.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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\Files_Sharing;
+
+use OC\BackgroundJob\TimedJob;
+
+/**
+ * Delete all shares that are expired
+ */
+class ExpireSharesJob extends TimedJob {
+
+ /**
+ * sets the correct interval for this timed job
+ */
+ public function __construct() {
+ // Run once a day
+ $this->setInterval(24 * 60 * 60);
+ }
+
+ /**
+ * Makes the background job do its work
+ *
+ * @param array $argument unused argument
+ */
+ public function run($argument) {
+ $connection = \OC::$server->getDatabaseConnection();
+ $logger = \OC::$server->getLogger();
+
+ //Current time
+ $now = new \DateTime();
+ $now = $now->format('Y-m-d H:i:s');
+
+ /*
+ * Expire file link shares only (for now)
+ */
+ $qb = $connection->getQueryBuilder();
+ $qb->select('id', 'file_source', 'uid_owner', 'item_type')
+ ->from('share')
+ ->where(
+ $qb->expr()->andX(
+ $qb->expr()->eq('share_type', $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK)),
+ $qb->expr()->lte('expiration', $qb->expr()->literal($now)),
+ $qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->expr()->literal('file')),
+ $qb->expr()->eq('item_type', $qb->expr()->literal('folder'))
+ )
+ )
+ );
+
+ $shares = $qb->execute();
+ while($share = $shares->fetch()) {
+ \OCP\Share::unshare($share['item_type'], $share['file_source'], \OCP\Share::SHARE_TYPE_LINK, null, $share['uid_owner']);
+ }
+ $shares->closeCursor();
+ }
+
+}
diff --git a/apps/files_sharing/tests/expiresharesjobtest.php b/apps/files_sharing/tests/expiresharesjobtest.php
new file mode 100644
index 00000000000..90da4011d8b
--- /dev/null
+++ b/apps/files_sharing/tests/expiresharesjobtest.php
@@ -0,0 +1,204 @@
+<?php
+/**
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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\Files_Sharing\Tests;
+
+use OCA\Files_Sharing\ExpireSharesJob;
+
+class ExpireSharesJobTest extends \Test\TestCase {
+
+ /**
+ * @var ExpireSharesJob
+ */
+ private $job;
+
+ /**
+ * @var \OCP\IDBConnection
+ */
+ private $connection;
+
+ /**
+ * @var string
+ */
+ private $user1;
+
+ /**
+ * @var string
+ */
+ private $user2;
+
+ protected function setup() {
+ parent::setUp();
+
+ $this->connection = \OC::$server->getDatabaseConnection();
+ // clear occasional leftover shares from other tests
+ $this->connection->executeUpdate('DELETE FROM `*PREFIX*share`');
+
+ $this->user1 = $this->getUniqueID('user1_');
+ $this->user2 = $this->getUniqueID('user2_');
+
+ $userManager = \OC::$server->getUserManager();
+ $userManager->createUser($this->user1, 'pass');
+ $userManager->createUser($this->user2, 'pass');
+
+ \OC::registerShareHooks();
+
+ $this->job = new ExpireSharesJob();
+ }
+
+ protected function tearDown() {
+ $this->connection->executeUpdate('DELETE FROM `*PREFIX*share`');
+
+ $userManager = \OC::$server->getUserManager();
+ $user1 = $userManager->get($this->user1);
+ if($user1) {
+ $user1->delete();
+ }
+ $user2 = $userManager->get($this->user2);
+ if($user2) {
+ $user2->delete();
+ }
+
+ $this->logout();
+
+ parent::tearDown();
+ }
+
+ private function getShares() {
+ $shares = [];
+ $qb = $this->connection->getQueryBuilder();
+
+ $result = $qb->select('*')
+ ->from('share')
+ ->execute();
+
+ while ($row = $result->fetch()) {
+ $shares[] = $row;
+ }
+ $result->closeCursor();
+ return $shares;
+ }
+
+ public function dataExpireLinkShare() {
+ return [
+ [false, '', false, false],
+ [false, '', true, false],
+ [true, 'P1D', false, true],
+ [true, 'P1D', true, false],
+ [true, 'P1W', false, true],
+ [true, 'P1W', true, false],
+ [true, 'P1M', false, true],
+ [true, 'P1M', true, false],
+ [true, 'P1Y', false, true],
+ [true, 'P1Y', true, false],
+ ];
+ }
+
+ /**
+ * @dataProvider dataExpireLinkShare
+ *
+ * @param bool addExpiration Should we add an expire date
+ * @param string $interval The dateInterval
+ * @param bool $addInterval If true add to the current time if false subtract
+ * @param bool $shouldExpire Should this share be expired
+ */
+ public function testExpireLinkShare($addExpiration, $interval, $addInterval, $shouldExpire) {
+ $this->loginAsUser($this->user1);
+
+ $view = new \OC\Files\View('/' . $this->user1 . '/');
+ $view->mkdir('files/test');
+
+ $fileInfo = $view->getFileInfo('files/test');
+
+ $this->assertNotNull(
+ \OCP\Share::shareItem('folder', $fileInfo->getId(), \OCP\Share::SHARE_TYPE_LINK, null, \OCP\Constants::PERMISSION_READ),
+ 'Failed asserting that user 1 successfully shared "test" by link.'
+ );
+
+ $shares = $this->getShares();
+ $this->assertCount(1, $shares);
+ reset($shares);
+ $share = current($shares);
+
+ if ($addExpiration) {
+ $expire = new \DateTime();
+ $expire->setTime(0, 0, 0);
+ if ($addInterval) {
+ $expire->add(new \DateInterval($interval));
+ } else {
+ $expire->sub(new \DateInterval($interval));
+ }
+ $expire = $expire->format('Y-m-d 00:00:00');
+
+ // Set expiration date to yesterday
+ $qb = $this->connection->getQueryBuilder();
+ $qb->update('share')
+ ->set('expiration', $qb->createParameter('expiration'))
+ ->where($qb->expr()->eq('id', $qb->createParameter('id')))
+ ->setParameter('id', $share['id'])
+ ->setParameter('expiration', $expire)
+ ->execute();
+
+ $shares = $this->getShares();
+ $this->assertCount(1, $shares);
+ }
+
+ $this->logout();
+
+ $this->job->run([]);
+
+ $shares = $this->getShares();
+
+ if ($shouldExpire) {
+ $this->assertCount(0, $shares);
+ } else {
+ $this->assertCount(1, $shares);
+ }
+ }
+
+ public function testDoNotExpireOtherShares() {
+ $this->loginAsUser($this->user1);
+
+ $view = new \OC\Files\View('/' . $this->user1 . '/');
+ $view->mkdir('files/test');
+
+ $fileInfo = $view->getFileInfo('files/test');
+
+ $this->assertNotNull(
+ \OCP\Share::shareItem('folder', $fileInfo->getId(), \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ),
+ 'Failed asserting that user 1 successfully shared "test" by link with user2.'
+ );
+
+ $shares = $this->getShares();
+ $this->assertCount(1, $shares);
+ reset($shares);
+ $share = current($shares);
+
+ $this->logout();
+
+ $this->job->run([]);
+
+ $shares = $this->getShares();
+ $this->assertCount(1, $shares);
+ }
+
+}
+
diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php
index 5c53684fd77..17cfea26572 100644
--- a/apps/provisioning_api/appinfo/routes.php
+++ b/apps/provisioning_api/appinfo/routes.php
@@ -33,7 +33,7 @@ $users = new \OCA\Provisioning_API\Users(
\OC::$server->getGroupManager(),
\OC::$server->getUserSession()
);
-API::register('get', '/cloud/users', [$users, 'getUsers'], 'provisioning_api', API::ADMIN_AUTH);
+API::register('get', '/cloud/users', [$users, 'getUsers'], 'provisioning_api', API::SUBADMIN_AUTH);
API::register('post', '/cloud/users', [$users, 'addUser'], 'provisioning_api', API::ADMIN_AUTH);
API::register('get', '/cloud/users/{userid}', [$users, 'getUser'], 'provisioning_api', API::USER_AUTH);
API::register('put', '/cloud/users/{userid}', [$users, 'editUser'], 'provisioning_api', API::USER_AUTH);
diff --git a/apps/provisioning_api/lib/users.php b/apps/provisioning_api/lib/users.php
index fc5e79d4b2b..0b529bcea2c 100644
--- a/apps/provisioning_api/lib/users.php
+++ b/apps/provisioning_api/lib/users.php
@@ -29,6 +29,7 @@ namespace OCA\Provisioning_API;
use \OC_OCS_Result;
use \OC_SubAdmin;
use \OC_Helper;
+use \OC_Group;
use OCP\Files\NotFoundException;
class Users {
@@ -71,7 +72,31 @@ class Users {
$limit = !empty($_GET['limit']) ? $_GET['limit'] : null;
$offset = !empty($_GET['offset']) ? $_GET['offset'] : null;
- $users = $this->userManager->search($search, $limit, $offset);
+ // Check if user is logged in
+ $user = $this->userSession->getUser();
+ if ($user === null) {
+ return new OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
+ }
+
+ // Admin? Or SubAdmin?
+ if($this->groupManager->isAdmin($user->getUID())){
+ $users = $this->userManager->search($search, $limit, $offset);
+ } else if (\OC_SubAdmin::isSubAdmin($user->getUID())) {
+ $subAdminOfGroups = \OC_SubAdmin::getSubAdminsGroups($user->getUID());
+
+ if($offset === null) {
+ $offset = 0;
+ }
+
+ $users = [];
+ foreach ($subAdminOfGroups as $group) {
+ $users = array_merge($users, $this->groupManager->displayNamesInGroup($group, $search));
+ }
+
+ $users = array_slice($users, $offset, $limit);
+ } else {
+ return new OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
+ }
$users = array_keys($users);
return new OC_OCS_Result([
diff --git a/apps/provisioning_api/tests/testcase.php b/apps/provisioning_api/tests/testcase.php
index cc8f5c1d16d..6135a6d2f96 100644
--- a/apps/provisioning_api/tests/testcase.php
+++ b/apps/provisioning_api/tests/testcase.php
@@ -46,7 +46,7 @@ abstract class TestCase extends \Test\TestCase {
/**
* Generates a temp user
* @param int $num number of users to generate
- * @return array
+ * @return IUser[]|Iuser
*/
protected function generateUsers($num = 1) {
$users = array();
diff --git a/apps/provisioning_api/tests/userstest.php b/apps/provisioning_api/tests/userstest.php
index 350586f8335..b43041bbbf9 100644
--- a/apps/provisioning_api/tests/userstest.php
+++ b/apps/provisioning_api/tests/userstest.php
@@ -63,10 +63,16 @@ class UsersTest extends TestCase {
$this->groupManager,
$this->userSession
);
+
+ $this->userSession->setUser(null);
}
// Test getting the list of users
- public function testGetUsers() {
+ public function testGetUsersAsAdmin() {
+ $user = $this->generateUsers();
+ $this->groupManager->get('admin')->addUser($user);
+ $this->userSession->setUser($user);
+
$result = $this->api->getUsers();
$this->assertInstanceOf('OC_OCS_Result', $result);
$this->assertTrue($result->succeeded());
@@ -103,6 +109,83 @@ class UsersTest extends TestCase {
$this->assertEquals(array_keys($this->userManager->search('', 1, 1)), $data['users']);
}
+ public function testGetUsersAsSubAdmin() {
+ $user = $this->generateUsers(10);
+ $this->userSession->setUser($user[0]);
+ $group = $this->groupManager->createGroup($this->getUniqueID());
+ \OC_SubAdmin::createSubAdmin($user[0]->getUID(), $group->getGID());
+
+ //Empty list
+ $result = $this->api->getUsers([]);
+ $this->assertInstanceOf('OC_OCS_Result', $result);
+ $this->assertTrue($result->succeeded());
+ $this->assertEquals(['users' => []], $result->getData());
+
+ //Some users in group
+ $group->addUser($user[1]);
+ $group->addUser($user[2]);
+ $group->addUser($user[3]);
+ $group->addUser($user[4]);
+
+ $result = $this->api->getUsers([]);
+ $this->assertInstanceOf('OC_OCS_Result', $result);
+ $this->assertTrue($result->succeeded());
+ $this->assertArrayHasKey('users', $result->getData());
+
+ $this->assertContains($user[1]->getUID(), $result->getData()['users']);
+ $this->assertContains($user[2]->getUID(), $result->getData()['users']);
+ $this->assertContains($user[3]->getUID(), $result->getData()['users']);
+ $this->assertContains($user[4]->getUID(), $result->getData()['users']);
+
+ $uids = [
+ $user[1]->getUID(),
+ $user[2]->getUID(),
+ $user[3]->getUID(),
+ $user[4]->getUID()
+ ];
+ sort($uids);
+
+ $_GET['limit'] = 2;
+ $_GET['offset'] = 1;
+ $result = $this->api->getUsers([]);
+
+ $this->assertInstanceOf('OC_OCS_Result', $result);
+ $this->assertTrue($result->succeeded());
+
+ // Disable this test for now since sorting is not done the same on all backends
+ //$this->assertEquals(['users' => array_slice($uids, 1, 2)], $result->getData());
+
+ $this->assertCount(2, $result->getData()['users']);
+
+ $counter = 0;
+ foreach ($uids as $uid) {
+ if (in_array($uid, $result->getData()['users'], true)) {
+ $counter += 1;
+ }
+ }
+
+ $this->assertEquals(2, $counter);
+ }
+
+ public function testGetUsersNoUser() {
+ $result = $this->api->getUsers([]);
+
+ $this->assertInstanceOf('OC_OCS_Result', $result);
+ $this->assertFalse($result->succeeded());
+ $this->assertEquals(\OCP\API::RESPOND_UNAUTHORISED, $result->getStatusCode());
+ }
+
+ public function testGetUsersAsUser() {
+ $user = $this->generateUsers();
+ $this->userSession->setUser($user);
+
+ $result = $this->api->getUsers();
+ $this->assertInstanceOf('OC_OCS_Result', $result);
+ $this->assertFalse($result->succeeded());
+ $this->assertEquals(\OCP\API::RESPOND_UNAUTHORISED, $result->getStatusCode());
+
+ }
+
public function testAddUser() {
$this->resetParams();
$_POST['userid'] = $this->getUniqueID();
@@ -164,7 +247,7 @@ class UsersTest extends TestCase {
$user = $this->generateUsers();
$user->setDisplayName('foobar');
$this->userSession->setUser($user);
- $params['userid'] = $user->getUID();
+ $params = ['userid' => $user->getUID()];
$result = $this->api->getUser($params);
$this->assertInstanceOf('OC_OCS_Result', $result);
$this->assertTrue($result->succeeded());
@@ -191,7 +274,7 @@ class UsersTest extends TestCase {
public function testGetUserOnOtherUser() {
$users = $this->generateUsers(2);
- $params['userid'] = $users[0];
+ $params = ['userid' => $users[0]->getUID()];
$this->userSession->setUser($users[1]);
$result = $this->api->getUser($params);
$this->assertInstanceOf('OC_OCS_Result', $result);
@@ -794,6 +877,9 @@ class UsersTest extends TestCase {
}
public function testAddToGroupNoGroupId() {
+ $user = $this->generateUsers();
+ $this->userSession->setUser($user);
+
$_POST['groupid'] = '';
$result = $this->api->addToGroup([
'userid' => $this->getUniqueID(),
@@ -935,6 +1021,9 @@ class UsersTest extends TestCase {
}
public function testRemoveFromGroupNoGroupId() {
+ $user = $this->generateUsers();
+ $this->userSession->setUser($user);
+
$result = $this->api->removeFromGroup([
'_delete' => [
'groupid' => ''
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index 344896e480d..2db99acf7af 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -98,7 +98,7 @@ OC.L10N.register(
"Limit %s access to users meeting these criteria:" : "以下のフィルターに適合するユーザーのみ %s へアクセスを許可:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "ユーザーの最も一般的なオブジェクトクラスは、organizationalPerson, person, user と inetOrgPerson です。もし、どのオブジェクトを選択すれば良いか分からない場合は、ディレクトリ管理者に相談してください。",
"The filter specifies which LDAP users shall have access to the %s instance." : "フィルターは、どのLDAPユーザーが %s にアクセスするかを指定します。",
- "Verify settings and count users" : "設定を検証し、ユーザを数える",
+ "Verify settings and count users" : "設定を検証し、ユーザーを数える",
"Saving" : "保存中",
"Back" : "戻る",
"Continue" : "続ける",
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index 74550f07e2a..3a9475699ae 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -96,7 +96,7 @@
"Limit %s access to users meeting these criteria:" : "以下のフィルターに適合するユーザーのみ %s へアクセスを許可:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "ユーザーの最も一般的なオブジェクトクラスは、organizationalPerson, person, user と inetOrgPerson です。もし、どのオブジェクトを選択すれば良いか分からない場合は、ディレクトリ管理者に相談してください。",
"The filter specifies which LDAP users shall have access to the %s instance." : "フィルターは、どのLDAPユーザーが %s にアクセスするかを指定します。",
- "Verify settings and count users" : "設定を検証し、ユーザを数える",
+ "Verify settings and count users" : "設定を検証し、ユーザーを数える",
"Saving" : "保存中",
"Back" : "戻る",
"Continue" : "続ける",
diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js
index bf5c3a13d46..0c46ff72a98 100644
--- a/apps/user_ldap/l10n/sq.js
+++ b/apps/user_ldap/l10n/sq.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"No action specified" : "S’është treguar veprim",
"No configuration specified" : "S’u dha formësim",
"No data specified" : "S’u treguan të dhëna",
+ " Could not set configuration %s" : "S’vuri dot në punë formësimin %s",
"Action does not exist" : "Veprimi s’ekziston",
"The Base DN appears to be wrong" : "DN-ja Bazë duket se është e gabuar",
"Configuration incorrect" : "Formësim i pasaktë",
@@ -65,6 +66,7 @@ OC.L10N.register(
"Edit LDAP Query" : "Përpunoni Kërkesë LDAP",
"LDAP Filter:" : "Filtër LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtri përcakton se cilët grupe LDAP do të kenë hyrje te instanca %s.",
+ "Verify settings and count groups" : "Verifiko rregullimet dhe numëro grupet",
"When logging in, %s will find the user based on the following attributes:" : "Kur hyhet, %s do ta gjejë përdoruesin duke u bazuar në atributet vijues:",
"LDAP / AD Username:" : "Emër përdoruesi LDAP / AD:",
"Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Lejon hyrje kundrejt emrin të përdoruesit LDAP / AD, që është ose uid, ose samaccountname, dhe do të zbulohet.",
@@ -96,6 +98,7 @@ OC.L10N.register(
"Limit %s access to users meeting these criteria:" : "Kufizo hyrje %s vetëm për përdorues që plotësojnë këtë kusht:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesht për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhniI, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.",
+ "Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit",
"Saving" : "Po ruhet",
"Back" : "Mbrapsht",
"Continue" : "Vazhdo",
diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json
index 05ce68fa5b2..246adb316c2 100644
--- a/apps/user_ldap/l10n/sq.json
+++ b/apps/user_ldap/l10n/sq.json
@@ -8,6 +8,7 @@
"No action specified" : "S’është treguar veprim",
"No configuration specified" : "S’u dha formësim",
"No data specified" : "S’u treguan të dhëna",
+ " Could not set configuration %s" : "S’vuri dot në punë formësimin %s",
"Action does not exist" : "Veprimi s’ekziston",
"The Base DN appears to be wrong" : "DN-ja Bazë duket se është e gabuar",
"Configuration incorrect" : "Formësim i pasaktë",
@@ -63,6 +64,7 @@
"Edit LDAP Query" : "Përpunoni Kërkesë LDAP",
"LDAP Filter:" : "Filtër LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtri përcakton se cilët grupe LDAP do të kenë hyrje te instanca %s.",
+ "Verify settings and count groups" : "Verifiko rregullimet dhe numëro grupet",
"When logging in, %s will find the user based on the following attributes:" : "Kur hyhet, %s do ta gjejë përdoruesin duke u bazuar në atributet vijues:",
"LDAP / AD Username:" : "Emër përdoruesi LDAP / AD:",
"Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Lejon hyrje kundrejt emrin të përdoruesit LDAP / AD, që është ose uid, ose samaccountname, dhe do të zbulohet.",
@@ -94,6 +96,7 @@
"Limit %s access to users meeting these criteria:" : "Kufizo hyrje %s vetëm për përdorues që plotësojnë këtë kusht:",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesht për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhniI, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.",
+ "Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit",
"Saving" : "Po ruhet",
"Back" : "Mbrapsht",
"Continue" : "Vazhdo",
diff --git a/core/ajax/update.php b/core/ajax/update.php
index 11d159f15d1..42f7f14bbdd 100644
--- a/core/ajax/update.php
+++ b/core/ajax/update.php
@@ -68,12 +68,24 @@ if (OC::checkUpgrade(false)) {
$updater->listen('\OC\Updater', 'maintenanceActive', function () use ($eventSource, $l) {
$eventSource->send('success', (string)$l->t('Maintenance mode is kept active'));
});
+ $updater->listen('\OC\Updater', 'dbUpgradeBefore', function () use($eventSource, $l) {
+ $eventSource->send('success', (string)$l->t('Updating database schema'));
+ });
$updater->listen('\OC\Updater', 'dbUpgrade', function () use ($eventSource, $l) {
$eventSource->send('success', (string)$l->t('Updated database'));
});
+ $updater->listen('\OC\Updater', 'dbSimulateUpgradeBefore', function () use($eventSource, $l) {
+ $eventSource->send('success', (string)$l->t('Checking whether the database schema can be updated (this can take a long time depending on the database size)'));
+ });
$updater->listen('\OC\Updater', 'dbSimulateUpgrade', function () use ($eventSource, $l) {
$eventSource->send('success', (string)$l->t('Checked database schema update'));
});
+ $updater->listen('\OC\Updater', 'appUpgradeCheckBefore', function () use ($eventSource, $l) {
+ $eventSource->send('success', (string)$l->t('Checking updates of apps'));
+ });
+ $updater->listen('\OC\Updater', 'appSimulateUpdate', function ($app) use ($eventSource, $l) {
+ $eventSource->send('success', (string)$l->t('Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)', [$app]));
+ });
$updater->listen('\OC\Updater', 'appUpgradeCheck', function () use ($eventSource, $l) {
$eventSource->send('success', (string)$l->t('Checked database schema update for apps'));
});
@@ -112,15 +124,18 @@ if (OC::checkUpgrade(false)) {
exit();
}
- if (!empty($incompatibleApps)) {
- $eventSource->send('notice',
- (string)$l->t('Following incompatible apps have been disabled: %s', implode(', ', $incompatibleApps)));
+ $disabledApps = [];
+ foreach ($disabledThirdPartyApps as $app) {
+ $disabledApps[$app] = (string) $l->t('%s (3rdparty)', [$app]);
}
- if (!empty($disabledThirdPartyApps)) {
- $eventSource->send('notice',
- (string)$l->t('Following apps have been disabled: %s', implode(', ', $disabledThirdPartyApps)));
+ foreach ($incompatibleApps as $app) {
+ $disabledApps[$app] = (string) $l->t('%s (incompatible)', [$app]);
}
+ if (!empty($disabledApps)) {
+ $eventSource->send('notice',
+ (string)$l->t('Following apps have been disabled: %s', implode(', ', $disabledApps)));
+ }
} else {
$eventSource->send('notice', (string)$l->t('Already up to date'));
}
diff --git a/core/command/upgrade.php b/core/command/upgrade.php
index 5d4819f6baf..9c313f83e14 100644
--- a/core/command/upgrade.php
+++ b/core/command/upgrade.php
@@ -155,9 +155,15 @@ class Upgrade extends Command {
}
$output->writeln($message);
});
+ $updater->listen('\OC\Updater', 'dbUpgradeBefore', function () use($output) {
+ $output->writeln('<info>Updating database schema</info>');
+ });
$updater->listen('\OC\Updater', 'dbUpgrade', function () use($output) {
$output->writeln('<info>Updated database</info>');
});
+ $updater->listen('\OC\Updater', 'dbSimulateUpgradeBefore', function () use($output) {
+ $output->writeln('<info>Checking whether the database schema can be updated (this can take a long time depending on the database size)</info>');
+ });
$updater->listen('\OC\Updater', 'dbSimulateUpgrade', function () use($output) {
$output->writeln('<info>Checked database schema update</info>');
});
@@ -176,6 +182,12 @@ class Upgrade extends Command {
$updater->listen('\OC\Updater', 'repairError', function ($app) use($output) {
$output->writeln('<error>Repair error: ' . $app . '</error>');
});
+ $updater->listen('\OC\Updater', 'appUpgradeCheckBefore', function () use ($output) {
+ $output->writeln('<info>Checking updates of apps</info>');
+ });
+ $updater->listen('\OC\Updater', 'appSimulateUpdate', function ($app) use ($output) {
+ $output->writeln("<info>Checking whether the database schema for <$app> can be updated (this can take a long time depending on the database size)</info>");
+ });
$updater->listen('\OC\Updater', 'appUpgradeCheck', function () use ($output) {
$output->writeln('<info>Checked database schema update for apps</info>');
});
diff --git a/core/js/js.js b/core/js/js.js
index 00a775b8027..3eafb3d9d6d 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -1633,6 +1633,15 @@ OC.Util = {
},
/**
+ * Returns whether this is IE
+ *
+ * @return {bool} true if this is IE, false otherwise
+ */
+ isIE: function() {
+ return $('html').hasClass('ie');
+ },
+
+ /**
* Returns whether this is IE8
*
* @return {bool} true if this is IE8, false otherwise
diff --git a/core/js/tests/specs/sharedialogviewSpec.js b/core/js/tests/specs/sharedialogviewSpec.js
index 55aa0541bd0..0117f517d4c 100644
--- a/core/js/tests/specs/sharedialogviewSpec.js
+++ b/core/js/tests/specs/sharedialogviewSpec.js
@@ -676,5 +676,83 @@ describe('OC.Share.ShareDialogView', function() {
});
});
});
+ describe('remote sharing', function() {
+ it('shows remote share info when allows', function() {
+ configModel.set({
+ isRemoteShareAllowed: true
+ });
+ dialog.render();
+ expect(dialog.$el.find('.shareWithRemoteInfo').length).toEqual(1);
+ });
+ it('does not show remote share info when not allowed', function() {
+ configModel.set({
+ isRemoteShareAllowed: false
+ });
+ dialog.render();
+ expect(dialog.$el.find('.shareWithRemoteInfo').length).toEqual(0);
+ });
+ });
+ describe('autocompeltion of users', function() {
+ it('triggers autocomplete display and focus with data when ajax search succeeds', function () {
+ dialog.render();
+ var response = sinon.stub();
+ dialog.autocompleteHandler({term: 'bob'}, response);
+ var jsonData = JSON.stringify({
+ "data": [{"label": "bob", "value": {"shareType": 0, "shareWith": "test"}}],
+ "status": "success"
+ });
+ fakeServer.requests[0].respond(
+ 200,
+ {'Content-Type': 'application/json'},
+ jsonData
+ );
+ expect(response.calledWithExactly(JSON.parse(jsonData).data)).toEqual(true);
+ expect(autocompleteStub.calledWith("option", "autoFocus", true)).toEqual(true);
+ });
+
+ it('gracefully handles successful ajax call with failure content', function () {
+ dialog.render();
+ var response = sinon.stub();
+ dialog.autocompleteHandler({term: 'bob'}, response);
+ var jsonData = JSON.stringify({"status": "failure"});
+ fakeServer.requests[0].respond(
+ 200,
+ {'Content-Type': 'application/json'},
+ jsonData
+ );
+ expect(response.calledWithExactly()).toEqual(true);
+ });
+
+ it('throws a notification when the ajax search lookup fails', function () {
+ notificationStub = sinon.stub(OC.Notification, 'show');
+ dialog.render();
+ dialog.autocompleteHandler({term: 'bob'}, sinon.stub());
+ fakeServer.requests[0].respond(500);
+ expect(notificationStub.calledOnce).toEqual(true);
+ notificationStub.restore();
+ });
+
+ describe('renders the autocomplete elements', function() {
+ it('renders a group element', function() {
+ dialog.render();
+ var el = dialog.autocompleteRenderItem(
+ $("<ul></ul>"),
+ {label: "1", value: { shareType: OC.Share.SHARE_TYPE_GROUP }}
+ );
+ expect(el.is('li')).toEqual(true);
+ expect(el.hasClass('group')).toEqual(true);
+ });
+
+ it('renders a remote element', function() {
+ dialog.render();
+ var el = dialog.autocompleteRenderItem(
+ $("<ul></ul>"),
+ {label: "1", value: { shareType: OC.Share.SHARE_TYPE_REMOTE }}
+ );
+ expect(el.is('li')).toEqual(true);
+ expect(el.hasClass('user')).toEqual(true);
+ });
+ });
+ });
});
diff --git a/core/js/update.js b/core/js/update.js
index bc8df0e20c0..090f8fa5d23 100644
--- a/core/js/update.js
+++ b/core/js/update.js
@@ -27,6 +27,11 @@
this.$el = $el;
this._started = true;
+
+ $(window).on('beforeunload.inprogress', function () {
+ return t('core', 'The upgrade is in progress, leaving this page might interrupt the process in some environments.');
+ });
+
this.addMessage(t(
'core',
'Updating {productName} to version {version}, this may take a while.', {
@@ -46,12 +51,14 @@
});
updateEventSource.listen('error', function(message) {
message = message || t('core', 'An error occurred.');
+ $(window).off('beforeunload.inprogress');
$('<span>').addClass('error').append(message).append('<br />').appendTo($el);
message = t('core', 'Please reload the page.');
$('<span>').addClass('error').append('<a href=".">'+message+'</a><br />').appendTo($el);
updateEventSource.close();
});
updateEventSource.listen('failure', function(message) {
+ $(window).off('beforeunload.inprogress');
$('<span>').addClass('error').append(message).append('<br />').appendTo($el);
$('<span>')
.addClass('bold')
@@ -61,6 +68,8 @@
.appendTo($el);
});
updateEventSource.listen('done', function() {
+ $(window).off('beforeunload.inprogress');
+
if (hasWarnings) {
$('<span>').addClass('bold')
.append('<br />')
diff --git a/core/l10n/bg_BG.js b/core/l10n/bg_BG.js
index f8d2e44204a..47af1b28d94 100644
--- a/core/l10n/bg_BG.js
+++ b/core/l10n/bg_BG.js
@@ -10,7 +10,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Обновен \"%s\" до %s",
"Repair warning: " : "Предупреждение при поправка:",
"Repair error: " : "Грешка при поправка:",
- "Following incompatible apps have been disabled: %s" : "Следните несъвместими приложения бяха изключени: %s",
"Invalid file provided" : "Предоставен е невалиден файл",
"No image or file provided" : "Не бяха доставени картинка или файл",
"Unknown filetype" : "Непознат файлов тип",
diff --git a/core/l10n/bg_BG.json b/core/l10n/bg_BG.json
index 4709830c087..43b5d5dbe21 100644
--- a/core/l10n/bg_BG.json
+++ b/core/l10n/bg_BG.json
@@ -8,7 +8,6 @@
"Updated \"%s\" to %s" : "Обновен \"%s\" до %s",
"Repair warning: " : "Предупреждение при поправка:",
"Repair error: " : "Грешка при поправка:",
- "Following incompatible apps have been disabled: %s" : "Следните несъвместими приложения бяха изключени: %s",
"Invalid file provided" : "Предоставен е невалиден файл",
"No image or file provided" : "Не бяха доставени картинка или файл",
"Unknown filetype" : "Непознат файлов тип",
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index 9d397d03408..b32aac7cf1d 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -12,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s",
"Repair warning: " : "Advertiment de reparació:",
"Repair error: " : "Error de reparació:",
- "Following incompatible apps have been disabled: %s" : "Les següents apps incompatibles s'han deshabilitat: %s",
"Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s",
"Already up to date" : "Ja actualitzat",
"File is too big" : "El fitxer és massa gran",
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 52de7a322b4..04a0e7232d9 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -10,7 +10,6 @@
"Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s",
"Repair warning: " : "Advertiment de reparació:",
"Repair error: " : "Error de reparació:",
- "Following incompatible apps have been disabled: %s" : "Les següents apps incompatibles s'han deshabilitat: %s",
"Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s",
"Already up to date" : "Ja actualitzat",
"File is too big" : "El fitxer és massa gran",
diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js
index f48b1f54d2b..047023401d7 100644
--- a/core/l10n/cs_CZ.js
+++ b/core/l10n/cs_CZ.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Chyba opravy:",
"Set log level to debug - current level: \"%s\"" : "Nastavit úroveň logování na debug - aktuální úroveň: \"%s\"",
"Reset log level to \"%s\"" : "Vrátit úroveň logování na \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Následující nekompatibilní aplikace byly zakázány: %s",
"Following apps have been disabled: %s" : "Následující aplikace byly vypnuty: %s",
"Already up to date" : "Je již aktuální",
"File is too big" : "Soubor je příliš velký",
diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json
index e83942a8922..aa0228f8568 100644
--- a/core/l10n/cs_CZ.json
+++ b/core/l10n/cs_CZ.json
@@ -13,7 +13,6 @@
"Repair error: " : "Chyba opravy:",
"Set log level to debug - current level: \"%s\"" : "Nastavit úroveň logování na debug - aktuální úroveň: \"%s\"",
"Reset log level to \"%s\"" : "Vrátit úroveň logování na \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Následující nekompatibilní aplikace byly zakázány: %s",
"Following apps have been disabled: %s" : "Následující aplikace byly vypnuty: %s",
"Already up to date" : "Je již aktuální",
"File is too big" : "Soubor je příliš velký",
diff --git a/core/l10n/da.js b/core/l10n/da.js
index 3d90b55836c..3eef4d31c1e 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -14,7 +14,6 @@ OC.L10N.register(
"Repair error: " : "Reparationsfejl:",
"Set log level to debug - current level: \"%s\"" : "Sæt log niveau til fejlfinding - nuværende niveau: \"%s\"",
"Reset log level to \"%s\"" : "Nulstil log niveau til \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Følgende inkompatible apps er blevet deaktiveret: %s",
"Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s",
"Already up to date" : "Allerede opdateret",
"File is too big" : "Filen er for stor",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index 53182aeab70..a5e0912e774 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -12,7 +12,6 @@
"Repair error: " : "Reparationsfejl:",
"Set log level to debug - current level: \"%s\"" : "Sæt log niveau til fejlfinding - nuværende niveau: \"%s\"",
"Reset log level to \"%s\"" : "Nulstil log niveau til \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Følgende inkompatible apps er blevet deaktiveret: %s",
"Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s",
"Already up to date" : "Allerede opdateret",
"File is too big" : "Filen er for stor",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index ff0176b6d94..07f436c8510 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Reperaturfehler:",
"Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"",
"Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt",
- "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s",
"Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s",
"Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 94df2d559fc..be36f78d567 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -13,7 +13,6 @@
"Repair error: " : "Reperaturfehler:",
"Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"",
"Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt",
- "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s",
"Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s",
"Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index b593fc452ae..2980331c651 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Reperaturfehler:",
"Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"",
"Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt",
- "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s",
"Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s",
"Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index c7fa1e368a9..68ab793889e 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -13,7 +13,6 @@
"Repair error: " : "Reperaturfehler:",
"Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"",
"Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt",
- "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s",
"Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s",
"Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
diff --git a/core/l10n/el.js b/core/l10n/el.js
index 975f3895b46..e6e798db3eb 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Σφάλμα διόρθωσης:",
"Set log level to debug - current level: \"%s\"" : "Καθορισμός του επιπέδου καταγραφής σε αποσφαλμάτωση - τρέχον επίπεδο: \"%s\"",
"Reset log level to \"%s\"" : "Επαναφορά επιπέδου καταγραφής σε \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Οι παρακάτω εφαρμογές έχουν απενεργοποιηθεί: %s",
"Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s",
"Already up to date" : "Ήδη ενημερωμένο",
"File is too big" : "Το αρχείο είναι πολύ μεγάλο",
diff --git a/core/l10n/el.json b/core/l10n/el.json
index 21901440ecc..5e398ac086a 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -13,7 +13,6 @@
"Repair error: " : "Σφάλμα διόρθωσης:",
"Set log level to debug - current level: \"%s\"" : "Καθορισμός του επιπέδου καταγραφής σε αποσφαλμάτωση - τρέχον επίπεδο: \"%s\"",
"Reset log level to \"%s\"" : "Επαναφορά επιπέδου καταγραφής σε \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Οι παρακάτω εφαρμογές έχουν απενεργοποιηθεί: %s",
"Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s",
"Already up to date" : "Ήδη ενημερωμένο",
"File is too big" : "Το αρχείο είναι πολύ μεγάλο",
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index d2f3ce77c73..b669829f061 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -10,7 +10,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Updated \"%s\" to %s",
"Repair warning: " : "Repair warning: ",
"Repair error: " : "Repair error: ",
- "Following incompatible apps have been disabled: %s" : "Following incompatible apps have been disabled: %s",
"Invalid file provided" : "Invalid file provided",
"No image or file provided" : "No image or file provided",
"Unknown filetype" : "Unknown filetype",
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index 75e8e30d594..5514abe5c44 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -8,7 +8,6 @@
"Updated \"%s\" to %s" : "Updated \"%s\" to %s",
"Repair warning: " : "Repair warning: ",
"Repair error: " : "Repair error: ",
- "Following incompatible apps have been disabled: %s" : "Following incompatible apps have been disabled: %s",
"Invalid file provided" : "Invalid file provided",
"No image or file provided" : "No image or file provided",
"Unknown filetype" : "Unknown filetype",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 4ee9dac0760..a9ee8ede55e 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Error que reparar:",
"Set log level to debug - current level: \"%s\"" : "Establecer nivel de registro para depurar - nivel actual: \"%s\"",
"Reset log level to \"%s\"" : "Restablecer nivel de registro a \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Las siguientes apps incompatibles se han deshabilitado: %s",
"Following apps have been disabled: %s" : "Siguiendo aplicaciones ha sido deshabilitado: %s",
"Already up to date" : "Ya actualizado",
"File is too big" : "El archivo es demasiado grande",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index 8a598d505e5..ccd38613554 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -13,7 +13,6 @@
"Repair error: " : "Error que reparar:",
"Set log level to debug - current level: \"%s\"" : "Establecer nivel de registro para depurar - nivel actual: \"%s\"",
"Reset log level to \"%s\"" : "Restablecer nivel de registro a \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Las siguientes apps incompatibles se han deshabilitado: %s",
"Following apps have been disabled: %s" : "Siguiendo aplicaciones ha sido deshabilitado: %s",
"Already up to date" : "Ya actualizado",
"File is too big" : "El archivo es demasiado grande",
diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js
index a55e1c04ccd..48fc8219653 100644
--- a/core/l10n/et_EE.js
+++ b/core/l10n/et_EE.js
@@ -11,7 +11,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Uuendatud \"%s\" -> %s",
"Repair warning: " : "Paranda hoiatus:",
"Repair error: " : "Paranda viga:",
- "Following incompatible apps have been disabled: %s" : "Järgnevad mitteühilduvad rakendused on välja lülitatud: %s",
"Following apps have been disabled: %s" : "Järgnevad rakendused on välja lülitatud: %s",
"Already up to date" : "On juba ajakohane",
"File is too big" : "Fail on liiga suur",
diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json
index ee32aba5690..0c56d74d091 100644
--- a/core/l10n/et_EE.json
+++ b/core/l10n/et_EE.json
@@ -9,7 +9,6 @@
"Updated \"%s\" to %s" : "Uuendatud \"%s\" -> %s",
"Repair warning: " : "Paranda hoiatus:",
"Repair error: " : "Paranda viga:",
- "Following incompatible apps have been disabled: %s" : "Järgnevad mitteühilduvad rakendused on välja lülitatud: %s",
"Following apps have been disabled: %s" : "Järgnevad rakendused on välja lülitatud: %s",
"Already up to date" : "On juba ajakohane",
"File is too big" : "Fail on liiga suur",
diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js
index c0f89d5899d..206c6d2632a 100644
--- a/core/l10n/fi_FI.js
+++ b/core/l10n/fi_FI.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Korjausvirhe:",
"Set log level to debug - current level: \"%s\"" : "Aseta lokitasoksi vianjäljitys - nykyinen taso: \"%s\"",
"Reset log level to \"%s\"" : "Palauta lokitasoksi \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Seuraavat yhteensopimattomat sovellukset on poistettu käytöstä: %s",
"Following apps have been disabled: %s" : "Seuraavat sovellukset on poistettu käytöstä: %s",
"Already up to date" : "Kaikki on jo ajan tasalla",
"File is too big" : "Tiedosto on liian suuri",
@@ -173,6 +172,7 @@ OC.L10N.register(
"Hello {name}" : "Hei {name}",
"_download %n file_::_download %n files_" : ["lataa %n tiedosto","lataa %n tiedostoa"],
"{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Päivitys on meneillään. Poistuminen tältä sivulta saattaa keskeyttää toimenpiteen joissain käyttöympäristöissä.",
"Updating {productName} to version {version}, this may take a while." : "Päivitetään {productName} versioon {version}, tämä saattaa kestää hetken.",
"An error occurred." : "Tapahtui virhe.",
"Please reload the page." : "Päivitä sivu.",
diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json
index 52c1c5553b3..0f9f8d3ca5e 100644
--- a/core/l10n/fi_FI.json
+++ b/core/l10n/fi_FI.json
@@ -13,7 +13,6 @@
"Repair error: " : "Korjausvirhe:",
"Set log level to debug - current level: \"%s\"" : "Aseta lokitasoksi vianjäljitys - nykyinen taso: \"%s\"",
"Reset log level to \"%s\"" : "Palauta lokitasoksi \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Seuraavat yhteensopimattomat sovellukset on poistettu käytöstä: %s",
"Following apps have been disabled: %s" : "Seuraavat sovellukset on poistettu käytöstä: %s",
"Already up to date" : "Kaikki on jo ajan tasalla",
"File is too big" : "Tiedosto on liian suuri",
@@ -171,6 +170,7 @@
"Hello {name}" : "Hei {name}",
"_download %n file_::_download %n files_" : ["lataa %n tiedosto","lataa %n tiedostoa"],
"{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Päivitys on meneillään. Poistuminen tältä sivulta saattaa keskeyttää toimenpiteen joissain käyttöympäristöissä.",
"Updating {productName} to version {version}, this may take a while." : "Päivitetään {productName} versioon {version}, tämä saattaa kestää hetken.",
"An error occurred." : "Tapahtui virhe.",
"Please reload the page." : "Päivitä sivu.",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 905e9943c3f..976051f105a 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Erreur de réparation :",
"Set log level to debug - current level: \"%s\"" : "Réglage du niveau de log à \"debug\" - niveau actuel: \"%s\"",
"Reset log level to \"%s\"" : "Réglage du niveau de log à \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Les applications incompatibles suivantes ont été désactivées : %s",
"Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s",
"Already up to date" : "Déjà à jour",
"File is too big" : "Fichier trop volumineux",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 9cfa4af12c1..82078d9c0c8 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -13,7 +13,6 @@
"Repair error: " : "Erreur de réparation :",
"Set log level to debug - current level: \"%s\"" : "Réglage du niveau de log à \"debug\" - niveau actuel: \"%s\"",
"Reset log level to \"%s\"" : "Réglage du niveau de log à \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Les applications incompatibles suivantes ont été désactivées : %s",
"Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s",
"Already up to date" : "Déjà à jour",
"File is too big" : "Fichier trop volumineux",
diff --git a/core/l10n/gl.js b/core/l10n/gl.js
index 5ac505ab535..bf1b9fceb39 100644
--- a/core/l10n/gl.js
+++ b/core/l10n/gl.js
@@ -11,7 +11,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Actualizado «%s» a %s",
"Repair warning: " : "Aviso de arranxo:",
"Repair error: " : "Arranxar o erro:",
- "Following incompatible apps have been disabled: %s" : "As seguintes aplicacións incompatíbeis foron desactivadas: %s",
"Following apps have been disabled: %s" : "As seguintes aplicacións foron desactivadas: %s",
"File is too big" : "O ficheiro é grande de máis",
"Invalid file provided" : "O ficheiro fornecido non é válido",
diff --git a/core/l10n/gl.json b/core/l10n/gl.json
index d9b28a5a86f..2c8864fb13c 100644
--- a/core/l10n/gl.json
+++ b/core/l10n/gl.json
@@ -9,7 +9,6 @@
"Updated \"%s\" to %s" : "Actualizado «%s» a %s",
"Repair warning: " : "Aviso de arranxo:",
"Repair error: " : "Arranxar o erro:",
- "Following incompatible apps have been disabled: %s" : "As seguintes aplicacións incompatíbeis foron desactivadas: %s",
"Following apps have been disabled: %s" : "As seguintes aplicacións foron desactivadas: %s",
"File is too big" : "O ficheiro é grande de máis",
"Invalid file provided" : "O ficheiro fornecido non é válido",
diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js
index 05b34ef23e3..cbf6eae1820 100644
--- a/core/l10n/hu_HU.js
+++ b/core/l10n/hu_HU.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Javítás hiba:",
"Set log level to debug - current level: \"%s\"" : "Hibakeresési naplózási szint beállítása - jelenlegi szint: \"%s\"",
"Reset log level to \"%s\"" : "Naplózási szint visszaállítása \"%s\"-re",
- "Following incompatible apps have been disabled: %s" : "A következő nem kompatibilis applikációk lettek tiltva: %s",
"Following apps have been disabled: %s" : "A következő applikációk lettek tiltva: %s",
"Already up to date" : "Már a legfrissebb változat",
"File is too big" : "A fájl túl nagy",
diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json
index c32ed57c5a2..3d57204bb4d 100644
--- a/core/l10n/hu_HU.json
+++ b/core/l10n/hu_HU.json
@@ -13,7 +13,6 @@
"Repair error: " : "Javítás hiba:",
"Set log level to debug - current level: \"%s\"" : "Hibakeresési naplózási szint beállítása - jelenlegi szint: \"%s\"",
"Reset log level to \"%s\"" : "Naplózási szint visszaállítása \"%s\"-re",
- "Following incompatible apps have been disabled: %s" : "A következő nem kompatibilis applikációk lettek tiltva: %s",
"Following apps have been disabled: %s" : "A következő applikációk lettek tiltva: %s",
"Already up to date" : "Már a legfrissebb változat",
"File is too big" : "A fájl túl nagy",
diff --git a/core/l10n/id.js b/core/l10n/id.js
index 7213844072f..8e3b71651cd 100644
--- a/core/l10n/id.js
+++ b/core/l10n/id.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Kesalahan perbaikan:",
"Set log level to debug - current level: \"%s\"" : "Atur level log untuk debug - level saat ini: \"%s\"",
"Reset log level to \"%s\"" : "Atur ulang level log menjadi \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Aplikasi tidak kompatibel berikut telah dinonaktifkan: %s",
"Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s",
"Already up to date" : "Sudah yang terbaru",
"File is too big" : "Berkas terlalu besar",
diff --git a/core/l10n/id.json b/core/l10n/id.json
index 1c71260efec..918d095ba8e 100644
--- a/core/l10n/id.json
+++ b/core/l10n/id.json
@@ -13,7 +13,6 @@
"Repair error: " : "Kesalahan perbaikan:",
"Set log level to debug - current level: \"%s\"" : "Atur level log untuk debug - level saat ini: \"%s\"",
"Reset log level to \"%s\"" : "Atur ulang level log menjadi \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Aplikasi tidak kompatibel berikut telah dinonaktifkan: %s",
"Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s",
"Already up to date" : "Sudah yang terbaru",
"File is too big" : "Berkas terlalu besar",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index bc3b13aaf4e..cfacb5640bc 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -12,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Uppfært \\\"%s\\\" to %s",
"Repair warning: " : "Viðgerðar viðvörun:",
"Repair error: " : "Viðgerðar villa:",
- "Following incompatible apps have been disabled: %s" : "Eftirfarandi forrit eru ósamhæfð hafa verið gerð óvirk: %s",
"Following apps have been disabled: %s" : "Eftirfarandi forrit hafa verið gerð óvirk: %s",
"Already up to date" : "Allt uppfært nú þegar",
"File is too big" : "Skrá er of stór",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index c46572fd129..527703e476b 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -10,7 +10,6 @@
"Updated \"%s\" to %s" : "Uppfært \\\"%s\\\" to %s",
"Repair warning: " : "Viðgerðar viðvörun:",
"Repair error: " : "Viðgerðar villa:",
- "Following incompatible apps have been disabled: %s" : "Eftirfarandi forrit eru ósamhæfð hafa verið gerð óvirk: %s",
"Following apps have been disabled: %s" : "Eftirfarandi forrit hafa verið gerð óvirk: %s",
"Already up to date" : "Allt uppfært nú þegar",
"File is too big" : "Skrá er of stór",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index d3ac7cfa40d..584b67c59f1 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Errore di riparazione:",
"Set log level to debug - current level: \"%s\"" : "Imposta il livello del log a debug - livello attuale: \"%s\"",
"Reset log level to \"%s\"" : "Ripristina il livello del log a \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Le seguenti applicazioni incompatibili sono state disabilitate: %s",
"Following apps have been disabled: %s" : "Le seguenti applicazioni sono state disabilitate: %s",
"Already up to date" : "Già aggiornato",
"File is too big" : "Il file è troppo grande",
@@ -173,6 +172,7 @@ OC.L10N.register(
"Hello {name}" : "Ciao {name}",
"_download %n file_::_download %n files_" : ["scarica %n file","scarica %s file"],
"{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "L'aggiornamento è in corso, l'abbandono di questa pagina potrebbe interrompere il processo in alcuni ambienti.",
"Updating {productName} to version {version}, this may take a while." : "Aggiornamento di {productName} alla versione {version}, potrebbe richiedere del tempo.",
"An error occurred." : "Si è verificato un errore.",
"Please reload the page." : "Ricarica la pagina.",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 4862e2b5efe..889e325fbbc 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -13,7 +13,6 @@
"Repair error: " : "Errore di riparazione:",
"Set log level to debug - current level: \"%s\"" : "Imposta il livello del log a debug - livello attuale: \"%s\"",
"Reset log level to \"%s\"" : "Ripristina il livello del log a \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Le seguenti applicazioni incompatibili sono state disabilitate: %s",
"Following apps have been disabled: %s" : "Le seguenti applicazioni sono state disabilitate: %s",
"Already up to date" : "Già aggiornato",
"File is too big" : "Il file è troppo grande",
@@ -171,6 +170,7 @@
"Hello {name}" : "Ciao {name}",
"_download %n file_::_download %n files_" : ["scarica %n file","scarica %s file"],
"{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "L'aggiornamento è in corso, l'abbandono di questa pagina potrebbe interrompere il processo in alcuni ambienti.",
"Updating {productName} to version {version}, this may take a while." : "Aggiornamento di {productName} alla versione {version}, potrebbe richiedere del tempo.",
"An error occurred." : "Si è verificato un errore.",
"Please reload the page." : "Ricarica la pagina.",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index b819989c217..c13d8548bc1 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"core",
{
"Couldn't send mail to following users: %s " : "次のユーザーにメールを送信できませんでした: %s",
+ "Preparing update" : "アップデートの準備中",
"Turned on maintenance mode" : "メンテナンスモードがオンになりました",
"Turned off maintenance mode" : "メンテナンスモードがオフになりました",
"Maintenance mode is kept active" : "メンテナンスモードが継続中です",
@@ -11,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "\"%s\" を %s にアップデートしました。",
"Repair warning: " : "修復警告:",
"Repair error: " : "修復エラー:",
- "Following incompatible apps have been disabled: %s" : "次の互換性のないアプリは無効にされています: %s",
"Following apps have been disabled: %s" : "以下のアプリが無効にされています: %s",
"File is too big" : "ファイルが大きすぎます",
"Invalid file provided" : "無効なファイルが提供されました",
@@ -165,6 +165,7 @@ OC.L10N.register(
"_download %n file_::_download %n files_" : ["%n個のファイルをダウンロード"],
"{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。",
"Updating {productName} to version {version}, this may take a while." : "{productName} を バージョン {version} に更新しています。しばらくお待ちください。",
+ "An error occurred." : "エラーが発生しました。",
"Please reload the page." : "ページをリロードしてください。",
"The update was unsuccessful. " : "アップデートに失敗しました。",
"The update was successful. There were warnings." : "アップデートは成功しました。警告がありました。",
@@ -197,7 +198,7 @@ OC.L10N.register(
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "こんにちは、\n\n%s があなたと %s を共有したことをお知らせします。\nそれを表示: %s\n",
"The share will expire on %s." : "共有は %s で有効期限が切れます。",
"Cheers!" : "それでは!",
- "Internal Server Error" : "内部サーバエラー",
+ "Internal Server Error" : "内部サーバーエラー",
"The server encountered an internal error and was unable to complete your request." : "サーバー内でエラーが発生したため、リクエストを完了できませんでした。",
"Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "このエラーが繰り返し表示されるようであれば、以下の技術情報を添付してサーバー管理者に問い合わせてください。",
"More details can be found in the server log." : "詳細は、サーバーのログを確認してください。",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 4d9d98b9ef3..7134e2aecb7 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -1,5 +1,6 @@
{ "translations": {
"Couldn't send mail to following users: %s " : "次のユーザーにメールを送信できませんでした: %s",
+ "Preparing update" : "アップデートの準備中",
"Turned on maintenance mode" : "メンテナンスモードがオンになりました",
"Turned off maintenance mode" : "メンテナンスモードがオフになりました",
"Maintenance mode is kept active" : "メンテナンスモードが継続中です",
@@ -9,7 +10,6 @@
"Updated \"%s\" to %s" : "\"%s\" を %s にアップデートしました。",
"Repair warning: " : "修復警告:",
"Repair error: " : "修復エラー:",
- "Following incompatible apps have been disabled: %s" : "次の互換性のないアプリは無効にされています: %s",
"Following apps have been disabled: %s" : "以下のアプリが無効にされています: %s",
"File is too big" : "ファイルが大きすぎます",
"Invalid file provided" : "無効なファイルが提供されました",
@@ -163,6 +163,7 @@
"_download %n file_::_download %n files_" : ["%n個のファイルをダウンロード"],
"{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。",
"Updating {productName} to version {version}, this may take a while." : "{productName} を バージョン {version} に更新しています。しばらくお待ちください。",
+ "An error occurred." : "エラーが発生しました。",
"Please reload the page." : "ページをリロードしてください。",
"The update was unsuccessful. " : "アップデートに失敗しました。",
"The update was successful. There were warnings." : "アップデートは成功しました。警告がありました。",
@@ -195,7 +196,7 @@
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "こんにちは、\n\n%s があなたと %s を共有したことをお知らせします。\nそれを表示: %s\n",
"The share will expire on %s." : "共有は %s で有効期限が切れます。",
"Cheers!" : "それでは!",
- "Internal Server Error" : "内部サーバエラー",
+ "Internal Server Error" : "内部サーバーエラー",
"The server encountered an internal error and was unable to complete your request." : "サーバー内でエラーが発生したため、リクエストを完了できませんでした。",
"Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "このエラーが繰り返し表示されるようであれば、以下の技術情報を添付してサーバー管理者に問い合わせてください。",
"More details can be found in the server log." : "詳細は、サーバーのログを確認してください。",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index 4198d5ea74a..90cac2d0ded 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "수리 오류:",
"Set log level to debug - current level: \"%s\"" : "로그 단계를 디버그로 설정함 - 현재 단계: \"%s\"",
"Reset log level to \"%s\"" : "로그 단계를 \"%s\"(으)로 초기화",
- "Following incompatible apps have been disabled: %s" : "다음 호환되지 않는 앱이 비활성화되었습니다: %s",
"Following apps have been disabled: %s" : "다음 앱이 비활성화되었습니다: %s",
"Already up to date" : "최신 상태임",
"File is too big" : "파일이 너무 큼",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index 64341720004..c0623020662 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -13,7 +13,6 @@
"Repair error: " : "수리 오류:",
"Set log level to debug - current level: \"%s\"" : "로그 단계를 디버그로 설정함 - 현재 단계: \"%s\"",
"Reset log level to \"%s\"" : "로그 단계를 \"%s\"(으)로 초기화",
- "Following incompatible apps have been disabled: %s" : "다음 호환되지 않는 앱이 비활성화되었습니다: %s",
"Following apps have been disabled: %s" : "다음 앱이 비활성화되었습니다: %s",
"Already up to date" : "최신 상태임",
"File is too big" : "파일이 너무 큼",
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index 622dbb5ab3d..bead18595e6 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -14,7 +14,6 @@ OC.L10N.register(
"Repair error: " : "Taisymo klaida:",
"Set log level to debug - current level: \"%s\"" : "Nustatykite žurnalų lygį į derinimas - dabar \"%s\"",
"Reset log level to \"%s\"" : "Atkurkite žurnalų lygį į \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Nesudarinami įskiepiai buvo išjungti: %s",
"Following apps have been disabled: %s" : "Išjungti įskiepiai: %s",
"Already up to date" : "Jau naujausia",
"File is too big" : "Per didelis failas",
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index 998cd62a5b2..84f9e4a0f2d 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -12,7 +12,6 @@
"Repair error: " : "Taisymo klaida:",
"Set log level to debug - current level: \"%s\"" : "Nustatykite žurnalų lygį į derinimas - dabar \"%s\"",
"Reset log level to \"%s\"" : "Atkurkite žurnalų lygį į \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Nesudarinami įskiepiai buvo išjungti: %s",
"Following apps have been disabled: %s" : "Išjungti įskiepiai: %s",
"Already up to date" : "Jau naujausia",
"File is too big" : "Per didelis failas",
diff --git a/core/l10n/mk.js b/core/l10n/mk.js
index ef283e7d24f..bf4997c9069 100644
--- a/core/l10n/mk.js
+++ b/core/l10n/mk.js
@@ -10,7 +10,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Ажурирано е \"%s\" во %s",
"Repair warning: " : "Предупредувања при поправка:",
"Repair error: " : "Грешка при поправка:",
- "Following incompatible apps have been disabled: %s" : "Следниве некомпатибилни апликации се оневозможени: %s",
"Invalid file provided" : "Дадена е невалидна датотека",
"No image or file provided" : "Не е доставена фотографија или датотека",
"Unknown filetype" : "Непознат тип на датотека",
diff --git a/core/l10n/mk.json b/core/l10n/mk.json
index 258a912388d..39d238c8608 100644
--- a/core/l10n/mk.json
+++ b/core/l10n/mk.json
@@ -8,7 +8,6 @@
"Updated \"%s\" to %s" : "Ажурирано е \"%s\" во %s",
"Repair warning: " : "Предупредувања при поправка:",
"Repair error: " : "Грешка при поправка:",
- "Following incompatible apps have been disabled: %s" : "Следниве некомпатибилни апликации се оневозможени: %s",
"Invalid file provided" : "Дадена е невалидна датотека",
"No image or file provided" : "Не е доставена фотографија или датотека",
"Unknown filetype" : "Непознат тип на датотека",
diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js
index 13cf58087a9..15d8a65b166 100644
--- a/core/l10n/nb_NO.js
+++ b/core/l10n/nb_NO.js
@@ -12,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Oppdaterte \"%s\" til %s",
"Repair warning: " : "Advarsel fra reparering: ",
"Repair error: " : "Feil ved reparering: ",
- "Following incompatible apps have been disabled: %s" : "Følgende inkompatible apper har blitt deaktivert: %s",
"Following apps have been disabled: %s" : "Følgende apper har blitt deaktivert: %s",
"Already up to date" : "Allerede oppdatert",
"File is too big" : "Filen er for stor",
diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json
index efdf8439833..1441a3a83d2 100644
--- a/core/l10n/nb_NO.json
+++ b/core/l10n/nb_NO.json
@@ -10,7 +10,6 @@
"Updated \"%s\" to %s" : "Oppdaterte \"%s\" til %s",
"Repair warning: " : "Advarsel fra reparering: ",
"Repair error: " : "Feil ved reparering: ",
- "Following incompatible apps have been disabled: %s" : "Følgende inkompatible apper har blitt deaktivert: %s",
"Following apps have been disabled: %s" : "Følgende apper har blitt deaktivert: %s",
"Already up to date" : "Allerede oppdatert",
"File is too big" : "Filen er for stor",
diff --git a/core/l10n/nds.js b/core/l10n/nds.js
index 9c81f34e70f..65aacb0a081 100644
--- a/core/l10n/nds.js
+++ b/core/l10n/nds.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Reparaturfehler",
"Set log level to debug - current level: \"%s\"" : "Protokollierungsstufe auf Debug gesetzt - Aktuelle Stufe: \"%s\"",
"Reset log level to \"%s\"" : "Protokollierungsstufe auf \"%s\" zurückgesetzt",
- "Following incompatible apps have been disabled: %s" : "Folgende inkompatible Apps wurden deaktiviert: %s",
"Following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
diff --git a/core/l10n/nds.json b/core/l10n/nds.json
index e62ab93e307..111325199df 100644
--- a/core/l10n/nds.json
+++ b/core/l10n/nds.json
@@ -13,7 +13,6 @@
"Repair error: " : "Reparaturfehler",
"Set log level to debug - current level: \"%s\"" : "Protokollierungsstufe auf Debug gesetzt - Aktuelle Stufe: \"%s\"",
"Reset log level to \"%s\"" : "Protokollierungsstufe auf \"%s\" zurückgesetzt",
- "Following incompatible apps have been disabled: %s" : "Folgende inkompatible Apps wurden deaktiviert: %s",
"Following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index 4828e3ba098..44ab2bd31f6 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Reparatiefout:",
"Set log level to debug - current level: \"%s\"" : "Instellen logniveau op debug - huidige niveau: \"%s\"",
"Reset log level to \"%s\"" : "Terugzetten logniveau op \"#%s\"",
- "Following incompatible apps have been disabled: %s" : "De volgende incompatibele apps zijn uitgeschakeld: %s",
"Following apps have been disabled: %s" : "De volgende apps zijn gedeactiveerd: %s",
"Already up to date" : "Al bijgewerkt",
"File is too big" : "Bestand te groot",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index 900d89cdc50..6812d59aca6 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -13,7 +13,6 @@
"Repair error: " : "Reparatiefout:",
"Set log level to debug - current level: \"%s\"" : "Instellen logniveau op debug - huidige niveau: \"%s\"",
"Reset log level to \"%s\"" : "Terugzetten logniveau op \"#%s\"",
- "Following incompatible apps have been disabled: %s" : "De volgende incompatibele apps zijn uitgeschakeld: %s",
"Following apps have been disabled: %s" : "De volgende apps zijn gedeactiveerd: %s",
"Already up to date" : "Al bijgewerkt",
"File is too big" : "Bestand te groot",
diff --git a/core/l10n/oc.js b/core/l10n/oc.js
index 48a672add67..b578bc1349f 100644
--- a/core/l10n/oc.js
+++ b/core/l10n/oc.js
@@ -10,7 +10,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Mesa a jorn de « %s » cap a %s",
"Repair warning: " : "Avertiment de reparacion :",
"Repair error: " : "Error de reparacion :",
- "Following incompatible apps have been disabled: %s" : "Las aplicacions incompatiblas seguentas son estadas desactivadas : %s",
"Invalid file provided" : "Fichièr invalid",
"No image or file provided" : "Cap de fichièr pas provesit",
"Unknown filetype" : "Tipe de fichièr desconegut",
@@ -27,24 +26,24 @@ OC.L10N.register(
"Friday" : "Divendres",
"Saturday" : "Dissabte",
"Sun." : "Dim.",
- "Mon." : "Luns.",
- "Tue." : "Març.",
- "Wed." : "Mec.",
+ "Mon." : "Lun.",
+ "Tue." : "Mar.",
+ "Wed." : "Mèc.",
"Thu." : "Jòu.",
"Fri." : "Ven.",
"Sat." : "Sab.",
- "January" : "genièr",
- "February" : "febrièr",
- "March" : "març",
- "April" : "abril",
- "May" : "mai",
- "June" : "junh",
- "July" : "julhet",
- "August" : "agost",
- "September" : "setembre",
- "October" : "octobre",
- "November" : "novembre",
- "December" : "decembre",
+ "January" : "Genièr",
+ "February" : "Febrièr",
+ "March" : "Març",
+ "April" : "Abril",
+ "May" : "Mai",
+ "June" : "Junh",
+ "July" : "Julhet",
+ "August" : "Agost",
+ "September" : "Setembre",
+ "October" : "Octobre",
+ "November" : "Novembre",
+ "December" : "Decembre",
"Jan." : "Gen.",
"Feb." : "Feb.",
"Mar." : "Mar.",
@@ -53,7 +52,7 @@ OC.L10N.register(
"Jun." : "Jun.",
"Jul." : "Jul.",
"Aug." : "Ago.",
- "Sep." : "Sep.",
+ "Sep." : "Set.",
"Oct." : "Oct.",
"Nov." : "Nov.",
"Dec." : "Dec.",
diff --git a/core/l10n/oc.json b/core/l10n/oc.json
index 44402648aa7..a0851af4b6c 100644
--- a/core/l10n/oc.json
+++ b/core/l10n/oc.json
@@ -8,7 +8,6 @@
"Updated \"%s\" to %s" : "Mesa a jorn de « %s » cap a %s",
"Repair warning: " : "Avertiment de reparacion :",
"Repair error: " : "Error de reparacion :",
- "Following incompatible apps have been disabled: %s" : "Las aplicacions incompatiblas seguentas son estadas desactivadas : %s",
"Invalid file provided" : "Fichièr invalid",
"No image or file provided" : "Cap de fichièr pas provesit",
"Unknown filetype" : "Tipe de fichièr desconegut",
@@ -25,24 +24,24 @@
"Friday" : "Divendres",
"Saturday" : "Dissabte",
"Sun." : "Dim.",
- "Mon." : "Luns.",
- "Tue." : "Març.",
- "Wed." : "Mec.",
+ "Mon." : "Lun.",
+ "Tue." : "Mar.",
+ "Wed." : "Mèc.",
"Thu." : "Jòu.",
"Fri." : "Ven.",
"Sat." : "Sab.",
- "January" : "genièr",
- "February" : "febrièr",
- "March" : "març",
- "April" : "abril",
- "May" : "mai",
- "June" : "junh",
- "July" : "julhet",
- "August" : "agost",
- "September" : "setembre",
- "October" : "octobre",
- "November" : "novembre",
- "December" : "decembre",
+ "January" : "Genièr",
+ "February" : "Febrièr",
+ "March" : "Març",
+ "April" : "Abril",
+ "May" : "Mai",
+ "June" : "Junh",
+ "July" : "Julhet",
+ "August" : "Agost",
+ "September" : "Setembre",
+ "October" : "Octobre",
+ "November" : "Novembre",
+ "December" : "Decembre",
"Jan." : "Gen.",
"Feb." : "Feb.",
"Mar." : "Mar.",
@@ -51,7 +50,7 @@
"Jun." : "Jun.",
"Jul." : "Jul.",
"Aug." : "Ago.",
- "Sep." : "Sep.",
+ "Sep." : "Set.",
"Oct." : "Oct.",
"Nov." : "Nov.",
"Dec." : "Dec.",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index 525c4aef880..017985efffd 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -10,7 +10,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Zaktualizowano \"%s\" do %s",
"Repair warning: " : "Ostrzeżenie naprawiania:",
"Repair error: " : "Błąd naprawiania:",
- "Following incompatible apps have been disabled: %s" : "Poniższe niezgodne aplikacje zostały wyłączone: %s",
"Invalid file provided" : "Podano błędny plik",
"No image or file provided" : "Brak obrazu lub pliku dostarczonego",
"Unknown filetype" : "Nieznany typ pliku",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index d187cbcc626..4b554ae3742 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -8,7 +8,6 @@
"Updated \"%s\" to %s" : "Zaktualizowano \"%s\" do %s",
"Repair warning: " : "Ostrzeżenie naprawiania:",
"Repair error: " : "Błąd naprawiania:",
- "Following incompatible apps have been disabled: %s" : "Poniższe niezgodne aplikacje zostały wyłączone: %s",
"Invalid file provided" : "Podano błędny plik",
"No image or file provided" : "Brak obrazu lub pliku dostarczonego",
"Unknown filetype" : "Nieznany typ pliku",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index a11d02acb78..bbe970f8cf9 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Reparação de erro:",
"Set log level to debug - current level: \"%s\"" : "Configure o nível de log para debug - nível corrente: \"%s\"",
"Reset log level to \"%s\"" : "Reconfigurar o nível de log para \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Seguir aplicativos incompatíveis foi desativado: %s",
"Following apps have been disabled: %s" : "Os seguintes aplicativos foram desabilitados: %s",
"Already up to date" : "Já está atualizado",
"File is too big" : "O arquivo é muito grande",
@@ -173,6 +172,7 @@ OC.L10N.register(
"Hello {name}" : "Olá {name}",
"_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"],
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento, deixando esta página pode haver interrupção do processo em alguns ambientes.",
"Updating {productName} to version {version}, this may take a while." : "Atualizando {productName} para a versão {version}, isso pode demorar um pouco.",
"An error occurred." : "Ocorreu um erro.",
"Please reload the page." : "Por favor recarregue a página",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index efced19042d..220c3998639 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -13,7 +13,6 @@
"Repair error: " : "Reparação de erro:",
"Set log level to debug - current level: \"%s\"" : "Configure o nível de log para debug - nível corrente: \"%s\"",
"Reset log level to \"%s\"" : "Reconfigurar o nível de log para \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Seguir aplicativos incompatíveis foi desativado: %s",
"Following apps have been disabled: %s" : "Os seguintes aplicativos foram desabilitados: %s",
"Already up to date" : "Já está atualizado",
"File is too big" : "O arquivo é muito grande",
@@ -171,6 +170,7 @@
"Hello {name}" : "Olá {name}",
"_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"],
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento, deixando esta página pode haver interrupção do processo em alguns ambientes.",
"Updating {productName} to version {version}, this may take a while." : "Atualizando {productName} para a versão {version}, isso pode demorar um pouco.",
"An error occurred." : "Ocorreu um erro.",
"Please reload the page." : "Por favor recarregue a página",
diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js
index 903124c6b63..2c96d2723fa 100644
--- a/core/l10n/pt_PT.js
+++ b/core/l10n/pt_PT.js
@@ -12,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Atualizado \"%s\" para %s",
"Repair warning: " : "Aviso de reparação:",
"Repair error: " : "Corrija o erro:",
- "Following incompatible apps have been disabled: %s" : "As seguintes apps incompatíveis foram desativadas: %s",
"Following apps have been disabled: %s" : "As seguintes apps foram desativadas: %s",
"Already up to date" : "Já está atualizado",
"File is too big" : "O ficheiro é muito grande",
diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json
index 733f7375feb..ee4061799a3 100644
--- a/core/l10n/pt_PT.json
+++ b/core/l10n/pt_PT.json
@@ -10,7 +10,6 @@
"Updated \"%s\" to %s" : "Atualizado \"%s\" para %s",
"Repair warning: " : "Aviso de reparação:",
"Repair error: " : "Corrija o erro:",
- "Following incompatible apps have been disabled: %s" : "As seguintes apps incompatíveis foram desativadas: %s",
"Following apps have been disabled: %s" : "As seguintes apps foram desativadas: %s",
"Already up to date" : "Já está atualizado",
"File is too big" : "O ficheiro é muito grande",
diff --git a/core/l10n/ro.js b/core/l10n/ro.js
index 45f5cdece60..2630fd3f2c0 100644
--- a/core/l10n/ro.js
+++ b/core/l10n/ro.js
@@ -8,7 +8,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "\"%s\" a fost actualizat până la %s",
"Repair warning: " : "Alerte reparare:",
"Repair error: " : "Eroare de reparare:",
- "Following incompatible apps have been disabled: %s" : "Următoarele aplicații incompatibile au fost dezactivate: %s",
"No image or file provided" : "Nu a fost furnizat vreo imagine sau fișier",
"Unknown filetype" : "Tip fișier necunoscut",
"Invalid image" : "Imagine invalidă",
diff --git a/core/l10n/ro.json b/core/l10n/ro.json
index 1f85508c86e..e23282e054c 100644
--- a/core/l10n/ro.json
+++ b/core/l10n/ro.json
@@ -6,7 +6,6 @@
"Updated \"%s\" to %s" : "\"%s\" a fost actualizat până la %s",
"Repair warning: " : "Alerte reparare:",
"Repair error: " : "Eroare de reparare:",
- "Following incompatible apps have been disabled: %s" : "Următoarele aplicații incompatibile au fost dezactivate: %s",
"No image or file provided" : "Nu a fost furnizat vreo imagine sau fișier",
"Unknown filetype" : "Tip fișier necunoscut",
"Invalid image" : "Imagine invalidă",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index eadbc2eac72..0ed9bcc073e 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Ошибка восстановления:",
"Set log level to debug - current level: \"%s\"" : "Установить отладочное журналирование - текущий уровень: \"%s\"",
"Reset log level to \"%s\"" : "Сбросить уровень журналирования в \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Следующие несовместимые приложения были отключены: %s",
"Following apps have been disabled: %s" : "Были отключены следующие приложения: %s",
"Already up to date" : "Не нуждается в обновлении",
"File is too big" : "Файл слишком большой",
@@ -23,6 +22,7 @@ OC.L10N.register(
"No image or file provided" : "Не указано изображение или файл",
"Unknown filetype" : "Неизвестный тип файла",
"Invalid image" : "Некорректное изображение",
+ "An error occurred. Please contact your admin." : "Произошла ошибка. Пожалуйста, свяжитесь с Вашим администратором.",
"No temporary profile picture available, try again" : "Временная картинка профиля недоступна, повторите попытку",
"No crop data provided" : "Не указана информация о кадрировании",
"No valid crop data provided" : "Не указаны корректные данные о кадрировании",
@@ -110,6 +110,7 @@ OC.L10N.register(
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom не может быть прочитан PHP, что крайне нежелательно по причинам безопасности. Дополнительную информацию можно найти в a href=\"{docLink}\">документации</a>.",
"Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) более не <a href=\"{phpLink}\">поддерживается PHP</a>. Мы советуем Вам обновить Вашу версию PHP для получения обновлений производительности и безопасности, предоставляемых PHP.",
"The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Конфигурация заголовков обратного прокси сервера некорректна, либо Вы заходите в ownCloud через доверенный прокси. Если Вы не заходите в ownCloud через доверенный прокси, это может быть небезопасно, так как злоумышленник может подменить видимые Owncloud IP-адреса. Более подробную информацию можно найти в нашей <a href=\"{docLink}\">документации</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached настроен на распределенный кеш, но установлен не поддерживаемый модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только модуль \"memcached\"! Информацию о модулях читайте на странице <a href=\"{wikiLink}\">memcached</a>.",
"Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Заголовок HTTP \"{header}\" не настроен на ожидаемый \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" должен быть настроен хотя бы на \"{seconds}\" секунд. Для улучшения безопасности мы рекомендуем включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.",
@@ -172,6 +173,7 @@ OC.L10N.register(
"_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"],
"{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.",
"Updating {productName} to version {version}, this may take a while." : "Идет обновление {productName} до версии {version}, пожалуйста, подождите.",
+ "An error occurred." : "Произошла ошибка.",
"Please reload the page." : "Обновите страницу.",
"The update was unsuccessful. " : "Обновление не удалось.",
"The update was successful. There were warnings." : "Обновление прошло успешно. Были предупреждения.",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index 54b96e373f2..19b44b89224 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -13,7 +13,6 @@
"Repair error: " : "Ошибка восстановления:",
"Set log level to debug - current level: \"%s\"" : "Установить отладочное журналирование - текущий уровень: \"%s\"",
"Reset log level to \"%s\"" : "Сбросить уровень журналирования в \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Следующие несовместимые приложения были отключены: %s",
"Following apps have been disabled: %s" : "Были отключены следующие приложения: %s",
"Already up to date" : "Не нуждается в обновлении",
"File is too big" : "Файл слишком большой",
@@ -21,6 +20,7 @@
"No image or file provided" : "Не указано изображение или файл",
"Unknown filetype" : "Неизвестный тип файла",
"Invalid image" : "Некорректное изображение",
+ "An error occurred. Please contact your admin." : "Произошла ошибка. Пожалуйста, свяжитесь с Вашим администратором.",
"No temporary profile picture available, try again" : "Временная картинка профиля недоступна, повторите попытку",
"No crop data provided" : "Не указана информация о кадрировании",
"No valid crop data provided" : "Не указаны корректные данные о кадрировании",
@@ -108,6 +108,7 @@
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom не может быть прочитан PHP, что крайне нежелательно по причинам безопасности. Дополнительную информацию можно найти в a href=\"{docLink}\">документации</a>.",
"Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) более не <a href=\"{phpLink}\">поддерживается PHP</a>. Мы советуем Вам обновить Вашу версию PHP для получения обновлений производительности и безопасности, предоставляемых PHP.",
"The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Конфигурация заголовков обратного прокси сервера некорректна, либо Вы заходите в ownCloud через доверенный прокси. Если Вы не заходите в ownCloud через доверенный прокси, это может быть небезопасно, так как злоумышленник может подменить видимые Owncloud IP-адреса. Более подробную информацию можно найти в нашей <a href=\"{docLink}\">документации</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached настроен на распределенный кеш, но установлен не поддерживаемый модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только модуль \"memcached\"! Информацию о модулях читайте на странице <a href=\"{wikiLink}\">memcached</a>.",
"Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Заголовок HTTP \"{header}\" не настроен на ожидаемый \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" должен быть настроен хотя бы на \"{seconds}\" секунд. Для улучшения безопасности мы рекомендуем включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.",
@@ -170,6 +171,7 @@
"_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"],
"{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.",
"Updating {productName} to version {version}, this may take a while." : "Идет обновление {productName} до версии {version}, пожалуйста, подождите.",
+ "An error occurred." : "Произошла ошибка.",
"Please reload the page." : "Обновите страницу.",
"The update was unsuccessful. " : "Обновление не удалось.",
"The update was successful. There were warnings." : "Обновление прошло успешно. Были предупреждения.",
diff --git a/core/l10n/sk_SK.js b/core/l10n/sk_SK.js
index 044f126f353..642b56f1839 100644
--- a/core/l10n/sk_SK.js
+++ b/core/l10n/sk_SK.js
@@ -11,7 +11,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Aktualizované \"%s\" na %s",
"Repair warning: " : "Oznámenie opravy:",
"Repair error: " : "Chyba opravy:",
- "Following incompatible apps have been disabled: %s" : "Nasledovné nekompatibilné aplikácie boli zakázané: %s",
"Invalid file provided" : "Zadaný neplatný súbor",
"No image or file provided" : "Obrázok alebo súbor nebol zadaný",
"Unknown filetype" : "Neznámy typ súboru",
diff --git a/core/l10n/sk_SK.json b/core/l10n/sk_SK.json
index 7938364de5f..61ca1276e5a 100644
--- a/core/l10n/sk_SK.json
+++ b/core/l10n/sk_SK.json
@@ -9,7 +9,6 @@
"Updated \"%s\" to %s" : "Aktualizované \"%s\" na %s",
"Repair warning: " : "Oznámenie opravy:",
"Repair error: " : "Chyba opravy:",
- "Following incompatible apps have been disabled: %s" : "Nasledovné nekompatibilné aplikácie boli zakázané: %s",
"Invalid file provided" : "Zadaný neplatný súbor",
"No image or file provided" : "Obrázok alebo súbor nebol zadaný",
"Unknown filetype" : "Neznámy typ súboru",
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index fd415376b14..fc03d628ae8 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -8,7 +8,6 @@ OC.L10N.register(
"Checked database schema update" : "Izbrana posodobitev sheme podatkovne zbirke",
"Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe",
"Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s",
- "Following incompatible apps have been disabled: %s" : "Navedeni neskladni programi so onemogočeni: %s",
"No image or file provided" : "Ni podane datoteke ali slike",
"Unknown filetype" : "Neznana vrsta datoteke",
"Invalid image" : "Neveljavna slika",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index df0ec47a292..357f21cd643 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -6,7 +6,6 @@
"Checked database schema update" : "Izbrana posodobitev sheme podatkovne zbirke",
"Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe",
"Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s",
- "Following incompatible apps have been disabled: %s" : "Navedeni neskladni programi so onemogočeni: %s",
"No image or file provided" : "Ni podane datoteke ali slike",
"Unknown filetype" : "Neznana vrsta datoteke",
"Invalid image" : "Neveljavna slika",
diff --git a/core/l10n/sq.js b/core/l10n/sq.js
index 1df18f40ab5..971ea7f7d84 100644
--- a/core/l10n/sq.js
+++ b/core/l10n/sq.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Gabim ndreqjeje: ",
"Set log level to debug - current level: \"%s\"" : "Caktoni debug si nivel regjistri - niveli i tanishëm: \"%s\"",
"Reset log level to \"%s\"" : "Riktheni nivel regjistri në \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Janë çaktivizuar aplikacionet e papërputhshme vijuese: %s",
"Following apps have been disabled: %s" : "Janë çaktivizuar aplikacionet vijuese : %s",
"Already up to date" : "Tashmë e përditësuar",
"File is too big" : "Kartela është shumë e madhe",
@@ -25,6 +24,9 @@ OC.L10N.register(
"Invalid image" : "Figurë e pavlefshme",
"An error occurred. Please contact your admin." : "Ndodhi një gabim. Ju lutemi, lidhuni me përgjegjësin tuaj.",
"No temporary profile picture available, try again" : "S’ka gati foto të përkohshme profili, riprovoni",
+ "No crop data provided" : "S’u dhanë të dhëna qethjeje",
+ "No valid crop data provided" : "S’u dhanë të dhëna qethjeje të vlefshme",
+ "Crop is not square" : "Qethja s’është katrore",
"Sunday" : "E dielë",
"Monday" : "E hënë",
"Tuesday" : "E martë",
@@ -170,6 +172,7 @@ OC.L10N.register(
"Hello {name}" : "Tungjatjeta {name}",
"_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"],
"{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Përmirësimi po kryhet, braktisja e kësaj faqeje mund ta ndërpresë procesin në disa mjedise.",
"Updating {productName} to version {version}, this may take a while." : "Po përditësohet {productName} me versionin {version}, kjo mund të zgjasë pak.",
"An error occurred." : "Ndodhi një gabim.",
"Please reload the page." : "Ju lutemi, ringarkoni faqen.",
diff --git a/core/l10n/sq.json b/core/l10n/sq.json
index 7b7c14010bb..23e9e4de7d9 100644
--- a/core/l10n/sq.json
+++ b/core/l10n/sq.json
@@ -13,7 +13,6 @@
"Repair error: " : "Gabim ndreqjeje: ",
"Set log level to debug - current level: \"%s\"" : "Caktoni debug si nivel regjistri - niveli i tanishëm: \"%s\"",
"Reset log level to \"%s\"" : "Riktheni nivel regjistri në \"%s\"",
- "Following incompatible apps have been disabled: %s" : "Janë çaktivizuar aplikacionet e papërputhshme vijuese: %s",
"Following apps have been disabled: %s" : "Janë çaktivizuar aplikacionet vijuese : %s",
"Already up to date" : "Tashmë e përditësuar",
"File is too big" : "Kartela është shumë e madhe",
@@ -23,6 +22,9 @@
"Invalid image" : "Figurë e pavlefshme",
"An error occurred. Please contact your admin." : "Ndodhi një gabim. Ju lutemi, lidhuni me përgjegjësin tuaj.",
"No temporary profile picture available, try again" : "S’ka gati foto të përkohshme profili, riprovoni",
+ "No crop data provided" : "S’u dhanë të dhëna qethjeje",
+ "No valid crop data provided" : "S’u dhanë të dhëna qethjeje të vlefshme",
+ "Crop is not square" : "Qethja s’është katrore",
"Sunday" : "E dielë",
"Monday" : "E hënë",
"Tuesday" : "E martë",
@@ -168,6 +170,7 @@
"Hello {name}" : "Tungjatjeta {name}",
"_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"],
"{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Përmirësimi po kryhet, braktisja e kësaj faqeje mund ta ndërpresë procesin në disa mjedise.",
"Updating {productName} to version {version}, this may take a while." : "Po përditësohet {productName} me versionin {version}, kjo mund të zgjasë pak.",
"An error occurred." : "Ndodhi një gabim.",
"Please reload the page." : "Ju lutemi, ringarkoni faqen.",
diff --git a/core/l10n/sr.js b/core/l10n/sr.js
index f34b4213f0f..9b01b18fe07 100644
--- a/core/l10n/sr.js
+++ b/core/l10n/sr.js
@@ -12,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "„%s“ ажириран на %s",
"Repair warning: " : "Упозорење о поправци :",
"Repair error: " : "Грешка поправке:",
- "Following incompatible apps have been disabled: %s" : "Следеће неусаглашене апликације су искључене: %s",
"Following apps have been disabled: %s" : "Следеће апликације су искључене: %s",
"File is too big" : "Фајл је превелик",
"Invalid file provided" : "Понуђени фајл је неисправан",
diff --git a/core/l10n/sr.json b/core/l10n/sr.json
index 3825ab821cb..a50af15a742 100644
--- a/core/l10n/sr.json
+++ b/core/l10n/sr.json
@@ -10,7 +10,6 @@
"Updated \"%s\" to %s" : "„%s“ ажириран на %s",
"Repair warning: " : "Упозорење о поправци :",
"Repair error: " : "Грешка поправке:",
- "Following incompatible apps have been disabled: %s" : "Следеће неусаглашене апликације су искључене: %s",
"Following apps have been disabled: %s" : "Следеће апликације су искључене: %s",
"File is too big" : "Фајл је превелик",
"Invalid file provided" : "Понуђени фајл је неисправан",
diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js
index 24f13a2c8fe..510f8f8b4ac 100644
--- a/core/l10n/th_TH.js
+++ b/core/l10n/th_TH.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "เกิดข้อผิดพลาดในการซ่อมแซม:",
"Set log level to debug - current level: \"%s\"" : "การตั้งค่าระดับของการบันทึกเพื่อแก้ปัญหา - ระดับปัจจุบันคือ: \"%s\"",
"Reset log level to \"%s\"" : "รีเซ็ทระดับการบันทึกเป็น \"%s\"",
- "Following incompatible apps have been disabled: %s" : "แอพพลิเคชันต่อไปนี้เข้ากันไม่ได้มันจะถูกปิดการใช้งาน: %s",
"Following apps have been disabled: %s" : "แอพฯดังต่อไปนี้ถูกปิดการใช้งาน: %s",
"Already up to date" : "มีอยู่แล้วถึงวันที่",
"File is too big" : "ไฟล์มีขนาดใหญ่เกินไป",
diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json
index 2742a569a6a..e8ccc1b2d54 100644
--- a/core/l10n/th_TH.json
+++ b/core/l10n/th_TH.json
@@ -13,7 +13,6 @@
"Repair error: " : "เกิดข้อผิดพลาดในการซ่อมแซม:",
"Set log level to debug - current level: \"%s\"" : "การตั้งค่าระดับของการบันทึกเพื่อแก้ปัญหา - ระดับปัจจุบันคือ: \"%s\"",
"Reset log level to \"%s\"" : "รีเซ็ทระดับการบันทึกเป็น \"%s\"",
- "Following incompatible apps have been disabled: %s" : "แอพพลิเคชันต่อไปนี้เข้ากันไม่ได้มันจะถูกปิดการใช้งาน: %s",
"Following apps have been disabled: %s" : "แอพฯดังต่อไปนี้ถูกปิดการใช้งาน: %s",
"Already up to date" : "มีอยู่แล้วถึงวันที่",
"File is too big" : "ไฟล์มีขนาดใหญ่เกินไป",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index a040c37e73e..81603bc89ed 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -15,7 +15,6 @@ OC.L10N.register(
"Repair error: " : "Onarım hatası:",
"Set log level to debug - current level: \"%s\"" : "Günlük seviyesini hata ayıklamaya ayarla - geçerli seviye: \"%s\"",
"Reset log level to \"%s\"" : "Günlük seviyesini \"%s\" olarak sıfırla",
- "Following incompatible apps have been disabled: %s" : "Aşağıdaki uyumsuz uygulamalar devre dışı bırakıldı: %s",
"Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s",
"Already up to date" : "Zaten güncel",
"File is too big" : "Dosya çok büyük",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 2da5a2dec94..fc5f26a20ea 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -13,7 +13,6 @@
"Repair error: " : "Onarım hatası:",
"Set log level to debug - current level: \"%s\"" : "Günlük seviyesini hata ayıklamaya ayarla - geçerli seviye: \"%s\"",
"Reset log level to \"%s\"" : "Günlük seviyesini \"%s\" olarak sıfırla",
- "Following incompatible apps have been disabled: %s" : "Aşağıdaki uyumsuz uygulamalar devre dışı bırakıldı: %s",
"Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s",
"Already up to date" : "Zaten güncel",
"File is too big" : "Dosya çok büyük",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 1cd0de81ff5..f020b00c7d9 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -12,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Оновлено \"%s\" до %s",
"Repair warning: " : "Попередження відновлення:",
"Repair error: " : "Помилка відновлення:",
- "Following incompatible apps have been disabled: %s" : "Наступні несумісні додатки були вимкнені: %s",
"Following apps have been disabled: %s" : "Наступні додатки були вимкнені: %s",
"Already up to date" : "Актуально",
"File is too big" : "Файл занадто великий",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index 4e066cd6dd7..f3c74dbe667 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -10,7 +10,6 @@
"Updated \"%s\" to %s" : "Оновлено \"%s\" до %s",
"Repair warning: " : "Попередження відновлення:",
"Repair error: " : "Помилка відновлення:",
- "Following incompatible apps have been disabled: %s" : "Наступні несумісні додатки були вимкнені: %s",
"Following apps have been disabled: %s" : "Наступні додатки були вимкнені: %s",
"Already up to date" : "Актуально",
"File is too big" : "Файл занадто великий",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 305caeb0b80..86c05393953 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -14,7 +14,6 @@ OC.L10N.register(
"Repair error: " : "修复错误:",
"Set log level to debug - current level: \"%s\"" : "设置日志级别为 调试 - 目前级别:%s",
"Reset log level to \"%s\"" : "重设日志级别为 \"%s\"",
- "Following incompatible apps have been disabled: %s" : "下列不兼容应用已经被禁用:%s",
"Following apps have been disabled: %s" : "下列应用已经被禁用:%s",
"Already up to date" : "已经是最新",
"File is too big" : "文件太大",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 001338a4383..62145b4cc5e 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -12,7 +12,6 @@
"Repair error: " : "修复错误:",
"Set log level to debug - current level: \"%s\"" : "设置日志级别为 调试 - 目前级别:%s",
"Reset log level to \"%s\"" : "重设日志级别为 \"%s\"",
- "Following incompatible apps have been disabled: %s" : "下列不兼容应用已经被禁用:%s",
"Following apps have been disabled: %s" : "下列应用已经被禁用:%s",
"Already up to date" : "已经是最新",
"File is too big" : "文件太大",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index c17dc5f09e2..c7dafb3dd45 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -12,7 +12,6 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "已更新 %s 到 %s",
"Repair warning: " : "修復警告:",
"Repair error: " : "修復錯誤",
- "Following incompatible apps have been disabled: %s" : "以下不相容的應用程式已經被停用:%s",
"Following apps have been disabled: %s" : "以下應用程式已經被停用:%s",
"Already up to date" : "已經是最新版",
"File is too big" : "檔案太大",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index e336e6f5e74..8ef3c8406f7 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -10,7 +10,6 @@
"Updated \"%s\" to %s" : "已更新 %s 到 %s",
"Repair warning: " : "修復警告:",
"Repair error: " : "修復錯誤",
- "Following incompatible apps have been disabled: %s" : "以下不相容的應用程式已經被停用:%s",
"Following apps have been disabled: %s" : "以下應用程式已經被停用:%s",
"Already up to date" : "已經是最新版",
"File is too big" : "檔案太大",
diff --git a/core/shipped.json b/core/shipped.json
index 184308d7a48..7d506c3401a 100644
--- a/core/shipped.json
+++ b/core/shipped.json
@@ -1,5 +1,4 @@
{
- "core-version": "8.1.0.0",
"shippedApps": [
"activity",
"admin_audit",
diff --git a/indie.json b/indie.json
deleted file mode 100644
index bb3fcb96691..00000000000
--- a/indie.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "name": "ownCloud",
- "icons": [
- {
- "src": "https://raw.githubusercontent.com/owncloud/www/master/assets/img/common/owncloud-square-logo.png",
- "sizes": "500x500",
- "type": "image/png",
- "density": "1"
- },
- {
- "src": "core/img/favicon-touch.png",
- "sizes": "128x128",
- "type": "image/png",
- "density": "1"
- },
- {
- "src": "core/img/favicon.png",
- "sizes": "32x32",
- "type": "image/png",
- "density": "1"
- }
- ],
- "start_url": "/",
- "display": "fullscreen",
- "orientation": "landscape",
- "short_description": "sync & share your stuff",
- "description": "ownCloud gives you web services under your control. It is a self-hosted open source platform with file sync & sharing at its core and available clients for desktop and mobile. The web frontend has apps for Pictures, Calendar, Contacts, News/RSS, Bookmarks, Notes, Music and much more via an open app platform.",
- "license": "AGPLv3",
- "license_url": "https://raw.githubusercontent.com/owncloud/core/master/COPYING-AGPL",
- "source_url": "https://github.com/owncloud/core",
- "version": "7.0.0",
- "developer": {
- "name": "ownCloud Inc.",
- "url": "https://owncloud.org"
- },
- "wikipedia_url": "https://wikipedia.org/wiki/ownCloud",
- "default_locale": "en",
- "protocols": [
- "SSL/TLS",
- "WebDAV",
- "CalDAV",
- "CardDAV",
- "Ampache",
- "RSS"
- ],
- "categories": [
- {
- "name": "BSD",
- "subcategories": [
- "Files",
- "Sync",
- "Calendar",
- "Contacts",
- "News",
- "Notes"
- ]
- },
- {
- "name": "GNU/Linux",
- "subcategories": [
- "Files",
- "Sync",
- "Calendar",
- "Contacts",
- "News",
- "Notes"
- ]
- },
- {
- "name": "OS X",
- "subcategories": [
- "Files",
- "Sync",
- "Calendar",
- "Contacts",
- "News",
- "Notes"
- ]
- },
- {
- "name": "Windows",
- "subcategories": [
- "Files",
- "Sync",
- "Calendar",
- "Contacts",
- "News",
- "Notes"
- ]
- }
- ]
-}
diff --git a/lib/base.php b/lib/base.php
index 09e1d0aea49..95a47dec1e2 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -133,7 +133,18 @@ class OC {
OC_Config::$object = new \OC\Config(self::$configDir);
OC::$SUBURI = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen(OC::$SERVERROOT)));
- $scriptName = $_SERVER['SCRIPT_NAME'];
+ /**
+ * FIXME: The following lines are required because we can't yet instantiiate
+ * \OC::$server->getRequest() since \OC::$server does not yet exist.
+ */
+ $params = [
+ 'server' => [
+ 'SCRIPT_NAME' => $_SERVER['SCRIPT_NAME'],
+ 'SCRIPT_FILENAME' => $_SERVER['SCRIPT_FILENAME'],
+ ],
+ ];
+ $fakeRequest = new \OC\AppFramework\Http\Request($params, null, new \OC\AllConfig(new \OC\SystemConfig()));
+ $scriptName = $fakeRequest->getScriptName();
if (substr($scriptName, -1) == '/') {
$scriptName .= 'index.php';
//make sure suburi follows the same rules as scriptName
@@ -145,6 +156,7 @@ class OC {
}
}
+
if (OC::$CLI) {
OC::$WEBROOT = OC_Config::getValue('overwritewebroot', '');
} else {
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index 631c38835b5..073506c2453 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, общий доступ не допускает публикации из элементов типа %i",
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
"You are not allowed to share %s" : "Вам запрещено делиться %s",
+ "Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
"Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, пользователь %s не состоит в какой-либо группе в которой состоит %s",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index f46036d2029..732be6644ff 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -85,6 +85,7 @@
"Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, общий доступ не допускает публикации из элементов типа %i",
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
"You are not allowed to share %s" : "Вам запрещено делиться %s",
+ "Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
"Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, пользователь %s не состоит в какой-либо группе в которой состоит %s",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index cd2cb4bff97..34399fe01cf 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -103,9 +103,13 @@ OC.L10N.register(
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "S’caktohet dot data e skadimit. Ndarjet s’mund të skadojnë më vonë se %s pasi të jenë ofruar",
"Cannot set expiration date. Expiration date is in the past" : "S’caktohet dot data e skadimit. Data e skadimit bie në të kaluarën",
"Cannot clear expiration date. Shares are required to have an expiration date." : "S’hiqet dot data e skadimit. Ndarjet lypse të kenë një datë skadimi.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Mekanizmi i shërbimit për ndarje %s duhet të sendërtojë ndërfaqen OCP\\Share_Backend",
+ "Sharing backend %s not found" : "S’u gjet mekanizmi i shërbimit për ndarje %s",
+ "Sharing backend for %s not found" : "S’u gjet mekanizmi i shërbimit për ndarje për %s",
"Sharing failed, because the user %s is the original sharer" : "Ndarja dështoi, ngaqë përdoruesi %s është ai që e ndau fillimisht",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ndarja e %s me të tjerët dështoi, ngaqë lejet tejkalojnë lejet e akorduara për %s",
"Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të",
"Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave",
"Could not find category \"%s\"" : "S’u gjet kategori \"%s\"",
"Apps" : "Aplikacione",
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index bd5cbf5d81a..b6077a5bfb4 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -101,9 +101,13 @@
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "S’caktohet dot data e skadimit. Ndarjet s’mund të skadojnë më vonë se %s pasi të jenë ofruar",
"Cannot set expiration date. Expiration date is in the past" : "S’caktohet dot data e skadimit. Data e skadimit bie në të kaluarën",
"Cannot clear expiration date. Shares are required to have an expiration date." : "S’hiqet dot data e skadimit. Ndarjet lypse të kenë një datë skadimi.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Mekanizmi i shërbimit për ndarje %s duhet të sendërtojë ndërfaqen OCP\\Share_Backend",
+ "Sharing backend %s not found" : "S’u gjet mekanizmi i shërbimit për ndarje %s",
+ "Sharing backend for %s not found" : "S’u gjet mekanizmi i shërbimit për ndarje për %s",
"Sharing failed, because the user %s is the original sharer" : "Ndarja dështoi, ngaqë përdoruesi %s është ai që e ndau fillimisht",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ndarja e %s me të tjerët dështoi, ngaqë lejet tejkalojnë lejet e akorduara për %s",
"Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të",
"Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave",
"Could not find category \"%s\"" : "S’u gjet kategori \"%s\"",
"Apps" : "Aplikacione",
diff --git a/lib/private/api.php b/lib/private/api.php
index 10d58f2d9e6..6d7354c7193 100644
--- a/lib/private/api.php
+++ b/lib/private/api.php
@@ -231,7 +231,8 @@ class OC_API {
$picked = reset($shipped['failed']);
$code = $picked['response']->getStatusCode();
$meta = $picked['response']->getMeta();
- $response = new OC_OCS_Result($data, $code, $meta['message']);
+ $headers = $picked['response']->getHeaders();
+ $response = new OC_OCS_Result($data, $code, $meta['message'], $headers);
return $response;
} elseif(!empty($shipped['succeeded'])) {
$responses = array_merge($shipped['succeeded'], $thirdparty['succeeded']);
@@ -244,13 +245,16 @@ class OC_API {
$picked = reset($thirdparty['failed']);
$code = $picked['response']->getStatusCode();
$meta = $picked['response']->getMeta();
- $response = new OC_OCS_Result($data, $code, $meta['message']);
+ $headers = $picked['response']->getHeaders();
+ $response = new OC_OCS_Result($data, $code, $meta['message'], $headers);
return $response;
} else {
$responses = $thirdparty['succeeded'];
}
// Merge the successful responses
- $data = array();
+ $data = [];
+ $codes = [];
+ $header = [];
foreach($responses as $response) {
if($response['shipped']) {
@@ -258,8 +262,9 @@ class OC_API {
} else {
$data = array_merge_recursive($data, $response['response']->getData());
}
- $codes[] = array('code' => $response['response']->getStatusCode(),
- 'meta' => $response['response']->getMeta());
+ $header = array_merge_recursive($header, $response['response']->getHeaders());
+ $codes[] = ['code' => $response['response']->getStatusCode(),
+ 'meta' => $response['response']->getMeta()];
}
// Use any non 100 status codes
@@ -273,8 +278,7 @@ class OC_API {
}
}
- $result = new OC_OCS_Result($data, $statusCode, $statusMessage);
- return $result;
+ return new OC_OCS_Result($data, $statusCode, $statusMessage, $header);
}
/**
diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php
index 651b268a35e..de8672bc4cd 100644
--- a/lib/private/appframework/dependencyinjection/dicontainer.php
+++ b/lib/private/appframework/dependencyinjection/dicontainer.php
@@ -226,6 +226,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $this->getServer();
});
+ $this->registerService('OCP\\AppFramework\\IAppContainer', function ($c) {
+ return $c;
+ });
+
// commonly used attributes
$this->registerService('UserId', function ($c) {
return $c->query('OCP\\IUserSession')->getSession()->get('user_id');
diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php
index 77785135162..96620838dfb 100644
--- a/lib/private/appframework/http/request.php
+++ b/lib/private/appframework/http/request.php
@@ -88,20 +88,17 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* - string 'method' the request method (GET, POST etc)
* - string|false 'requesttoken' the requesttoken or false when not available
* @param ISecureRandom $secureRandom
- * @param ICrypto $crypto
* @param IConfig $config
* @param string $stream
* @see http://www.php.net/manual/en/reserved.variables.php
*/
public function __construct(array $vars=array(),
ISecureRandom $secureRandom = null,
- ICrypto $crypto,
IConfig $config,
$stream='php://input') {
$this->inputStream = $stream;
$this->items['params'] = array();
$this->secureRandom = $secureRandom;
- $this->crypto = $crypto;
$this->config = $config;
if(!array_key_exists('method', $vars)) {
@@ -439,22 +436,18 @@ class Request implements \ArrayAccess, \Countable, IRequest {
return false;
}
- // Decrypt token to prevent BREACH like attacks
+ // Deobfuscate token to prevent BREACH like attacks
$token = explode(':', $token);
if (count($token) !== 2) {
return false;
}
- $encryptedToken = $token[0];
+ $obfuscatedToken = $token[0];
$secret = $token[1];
- try {
- $decryptedToken = $this->crypto->decrypt($encryptedToken, $secret);
- } catch (\Exception $e) {
- return false;
- }
+ $deobfuscatedToken = base64_decode($obfuscatedToken) ^ $secret;
// Check if the token is valid
- if(\OCP\Security\StringUtils::equals($decryptedToken, $this->items['requesttoken'])) {
+ if(\OCP\Security\StringUtils::equals($deobfuscatedToken, $this->items['requesttoken'])) {
return true;
} else {
return false;
diff --git a/lib/private/group/manager.php b/lib/private/group/manager.php
index 65ae49dfcd2..6905dd8f5f2 100644
--- a/lib/private/group/manager.php
+++ b/lib/private/group/manager.php
@@ -71,11 +71,13 @@ class Manager extends PublicEmitter implements IGroupManager {
*/
private $cachedUserGroups = array();
+ /** @var \OC\SubAdmin */
+ private $subAdmin = null;
/**
* @param \OC\User\Manager $userManager
*/
- public function __construct($userManager) {
+ public function __construct(\OC\User\Manager $userManager) {
$this->userManager = $userManager;
$cachedGroups = & $this->cachedGroups;
$cachedUserGroups = & $this->cachedUserGroups;
@@ -314,4 +316,19 @@ class Manager extends PublicEmitter implements IGroupManager {
}
return $matchingUsers;
}
+
+ /**
+ * @return \OC\SubAdmin
+ */
+ public function getSubAdmin() {
+ if (!$this->subAdmin) {
+ $this->subAdmin = new \OC\SubAdmin(
+ $this->userManager,
+ $this,
+ \OC::$server->getDatabaseConnection()
+ );
+ }
+
+ return $this->subAdmin;
+ }
}
diff --git a/lib/private/legacy/subadmin.php b/lib/private/legacy/subadmin.php
new file mode 100644
index 00000000000..d10b6e90bb5
--- /dev/null
+++ b/lib/private/legacy/subadmin.php
@@ -0,0 +1,172 @@
+<?php
+/**
+ * @author Bart Visscher <bartv@thisnet.nl>
+ * @author Georg Ehrke <georg@owncloud.com>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin McCorkell <rmccorkell@karoshi.org.uk>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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/>
+ *
+ */
+
+/**
+ * This class provides all methods needed for managing groups.
+ *
+ * Hooks provided:
+ * post_createSubAdmin($gid)
+ * post_deleteSubAdmin($gid)
+ */
+class OC_SubAdmin{
+
+ /**
+ * add a SubAdmin
+ * @param string $uid uid of the SubAdmin
+ * @param string $gid gid of the group
+ * @return boolean
+ */
+ public static function createSubAdmin($uid, $gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->createSubAdmin($userManager->get($uid), $groupManager->get($gid));
+ }
+
+ /**
+ * delete a SubAdmin
+ * @param string $uid uid of the SubAdmin
+ * @param string $gid gid of the group
+ * @return boolean
+ */
+ public static function deleteSubAdmin($uid, $gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->deleteSubAdmin($userManager->get($uid), $groupManager->get($gid));
+ }
+
+ /**
+ * get groups of a SubAdmin
+ * @param string $uid uid of the SubAdmin
+ * @return array
+ */
+ public static function getSubAdminsGroups($uid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ $groups = $subAdmin->getSubAdminsGroups($userManager->get($uid));
+
+ // New class returns IGroup[] so convert back
+ $gids = [];
+ foreach ($groups as $group) {
+ $gids[] = $group->getGID();
+ }
+ return $gids;
+ }
+
+ /**
+ * get SubAdmins of a group
+ * @param string $gid gid of the group
+ * @return array
+ */
+ public static function getGroupsSubAdmins($gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ $users = $subAdmin->getGroupsSubAdmins($groupManager->get($gid));
+
+ // New class returns IUser[] so convert back
+ $uids = [];
+ foreach ($users as $user) {
+ $uids[] = $user->getUID();
+ }
+ return $uids;
+ }
+
+ /**
+ * get all SubAdmins
+ * @return array
+ */
+ public static function getAllSubAdmins() {
+ $groupManager = \OC::$server->getGroupManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ $subAdmins = $subAdmin->getAllSubAdmins();
+
+ // New class returns IUser[] so convert back
+ $result = [];
+ foreach ($subAdmins as $subAdmin) {
+ $result[] = [
+ 'gid' => $subAdmin['group']->getGID(),
+ 'uid' => $subAdmin['user']->getUID(),
+ ];
+ }
+ return $result;
+ }
+
+ /**
+ * checks if a user is a SubAdmin of a group
+ * @param string $uid uid of the subadmin
+ * @param string $gid gid of the group
+ * @return bool
+ */
+ public static function isSubAdminofGroup($uid, $gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->isSubAdminOfGroup($userManager->get($uid), $groupManager->get($gid));
+ }
+
+ /**
+ * checks if a user is a SubAdmin
+ * @param string $uid uid of the subadmin
+ * @return bool
+ */
+ public static function isSubAdmin($uid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->isSubAdmin($userManager->get($uid));
+ }
+
+ /**
+ * checks if a user is a accessible by a subadmin
+ * @param string $subadmin uid of the subadmin
+ * @param string $user uid of the user
+ * @return bool
+ */
+ public static function isUserAccessible($subadmin, $user) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->isUserAccessible($userManager->get($subadmin), $userManager->get($user));
+ }
+
+ /*
+ * alias for self::isSubAdminofGroup()
+ */
+ public static function isGroupAccessible($subadmin, $group) {
+ return self::isSubAdminofGroup($subadmin, $group);
+ }
+}
diff --git a/lib/private/lock/dblockingprovider.php b/lib/private/lock/dblockingprovider.php
index 1e93a6cec6c..450a0a27ab0 100644
--- a/lib/private/lock/dblockingprovider.php
+++ b/lib/private/lock/dblockingprovider.php
@@ -187,7 +187,7 @@ class DBLockingProvider extends AbstractLockingProvider {
public function __destruct() {
try {
$this->cleanEmptyLocks();
- } catch (\PDOException $e) {
+ } catch (\Exception $e) {
// If the table is missing, the clean up was successful
if ($this->connection->tableExists('file_locks')) {
throw $e;
diff --git a/lib/private/ocs/result.php b/lib/private/ocs/result.php
index 916e25e45ae..2c3f676510c 100644
--- a/lib/private/ocs/result.php
+++ b/lib/private/ocs/result.php
@@ -51,8 +51,9 @@ class OC_OCS_Result{
* @param mixed $data the data to return
* @param int $code
* @param null|string $message
+ * @param array $headers
*/
- public function __construct($data=null, $code=100, $message=null) {
+ public function __construct($data = null, $code = 100, $message = null, $headers = []) {
if ($data === null) {
$this->data = array();
} elseif (!is_array($data)) {
@@ -62,6 +63,7 @@ class OC_OCS_Result{
}
$this->statusCode = $code;
$this->message = $message;
+ $this->headers = $headers;
}
/**
diff --git a/lib/private/server.php b/lib/private/server.php
index 14fa323f74d..15ee3454d85 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -438,7 +438,6 @@ class Server extends SimpleContainer implements IServerContainer {
'requesttoken' => $requestToken,
],
$this->getSecureRandom(),
- $this->getCrypto(),
$this->getConfig(),
$stream
);
@@ -512,7 +511,6 @@ class Server extends SimpleContainer implements IServerContainer {
: null,
],
new SecureRandom(),
- $c->getCrypto(),
$c->getConfig()
);
diff --git a/lib/private/subadmin.php b/lib/private/subadmin.php
index ec4f9f3b899..0e130a7700a 100644
--- a/lib/private/subadmin.php
+++ b/lib/private/subadmin.php
@@ -2,10 +2,9 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Georg Ehrke <georg@owncloud.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin McCorkell <rmccorkell@karoshi.org.uk>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
@@ -24,171 +23,235 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
-OC_Hook::connect('OC_User', 'post_deleteUser', 'OC_SubAdmin', 'post_deleteUser');
-OC_Hook::connect('OC_User', 'post_deleteGroup', 'OC_SubAdmin', 'post_deleteGroup');
-/**
- * This class provides all methods needed for managing groups.
- *
- * Hooks provided:
- * post_createSubAdmin($gid)
- * post_deleteSubAdmin($gid)
- */
-class OC_SubAdmin{
+
+namespace OC;
+
+use OC\Hooks\PublicEmitter;
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\IGroup;
+use OCP\IGroupManager;
+use OCP\IDBConnection;
+
+class SubAdmin extends PublicEmitter {
+
+ /** @var IUserManager */
+ private $userManager;
+
+ /** @var IGroupManager */
+ private $groupManager;
+
+ /** @var IDBConnection */
+ private $dbConn;
+
+ public function __construct(IUserManager $userManager,
+ IGroupManager $groupManager,
+ IDBConnection $dbConn) {
+ $this->userManager = $userManager;
+ $this->groupManager = $groupManager;
+ $this->dbConn = $dbConn;
+
+ $this->userManager->listen('\OC\User', 'postDelete', function($user) {
+ $this->post_deleteUser($user);
+ });
+ $this->groupManager->listen('\OC\Group', 'postDelete', function($group) {
+ $this->post_deleteGroup($group);
+ });
+ }
/**
* add a SubAdmin
- * @param string $uid uid of the SubAdmin
- * @param string $gid gid of the group
- * @return boolean
+ * @param IUser $user user to be SubAdmin
+ * @param IGroup $group group $user becomes subadmin of
+ * @return bool
*/
- public static function createSubAdmin($uid, $gid) {
- $stmt = OC_DB::prepare('INSERT INTO `*PREFIX*group_admin` (`gid`,`uid`) VALUES(?,?)');
- $stmt->execute(array($gid, $uid));
- OC_Hook::emit( "OC_SubAdmin", "post_createSubAdmin", array( "gid" => $gid ));
+ public function createSubAdmin(IUser $user, IGroup $group) {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->insert('group_admin')
+ ->values([
+ 'gid' => $qb->createNamedParameter($group->getGID()),
+ 'uid' => $qb->createNamedParameter($user->getUID())
+ ])
+ ->execute();
+
+ $this->emit('\OC\SubAdmin', 'postCreateSubAdmin', [$user, $group]);
+ \OC_Hook::emit("OC_SubAdmin", "post_createSubAdmin", ["gid" => $group->getGID()]);
return true;
}
/**
* delete a SubAdmin
- * @param string $uid uid of the SubAdmin
- * @param string $gid gid of the group
- * @return boolean
+ * @param IUser $user the user that is the SubAdmin
+ * @param IGroup $group the group
+ * @return bool
*/
- public static function deleteSubAdmin($uid, $gid) {
- $stmt = OC_DB::prepare('DELETE FROM `*PREFIX*group_admin` WHERE `gid` = ? AND `uid` = ?');
- $stmt->execute(array($gid, $uid));
- OC_Hook::emit( "OC_SubAdmin", "post_deleteSubAdmin", array( "gid" => $gid ));
+ public function deleteSubAdmin(IUser $user, IGroup $group) {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->delete('group_admin')
+ ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
+ ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
+ ->execute();
+
+ $this->emit('\OC\SubAdmin', 'postDeleteSubAdmin', [$user, $group]);
+ \OC_Hook::emit("OC_SubAdmin", "post_deleteSubAdmin", ["gid" => $group->getGID()]);
return true;
}
/**
* get groups of a SubAdmin
- * @param string $uid uid of the SubAdmin
- * @return array
+ * @param IUser $user the SubAdmin
+ * @return IGroup[]
*/
- public static function getSubAdminsGroups($uid) {
- $stmt = OC_DB::prepare('SELECT `gid` FROM `*PREFIX*group_admin` WHERE `uid` = ?');
- $result = $stmt->execute(array($uid));
- $gids = array();
- while($row = $result->fetchRow()) {
- $gids[] = $row['gid'];
+ public function getSubAdminsGroups(IUser $user) {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->select('gid')
+ ->from('group_admin')
+ ->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
+ ->execute();
+
+ $groups = [];
+ while($row = $result->fetch()) {
+ $groups[] = $this->groupManager->get($row['gid']);
}
- return $gids;
+
+ return $groups;
}
/**
* get SubAdmins of a group
- * @param string $gid gid of the group
- * @return array
+ * @param IGroup $group the group
+ * @return IUser[]
*/
- public static function getGroupsSubAdmins($gid) {
- $stmt = OC_DB::prepare('SELECT `uid` FROM `*PREFIX*group_admin` WHERE `gid` = ?');
- $result = $stmt->execute(array($gid));
- $uids = array();
- while($row = $result->fetchRow()) {
- $uids[] = $row['uid'];
+ public function getGroupsSubAdmins(IGroup $group) {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->select('uid')
+ ->from('group_admin')
+ ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
+ ->execute();
+
+ $users = [];
+ while($row = $result->fetch()) {
+ $users[] = $this->userManager->get($row['uid']);
}
- return $uids;
+
+ return $users;
}
/**
* get all SubAdmins
* @return array
*/
- public static function getAllSubAdmins() {
- $stmt = OC_DB::prepare('SELECT * FROM `*PREFIX*group_admin`');
- $result = $stmt->execute();
- $subadmins = array();
- while($row = $result->fetchRow()) {
- $subadmins[] = $row;
+ public function getAllSubAdmins() {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->select('*')
+ ->from('group_admin')
+ ->execute();
+
+ $subadmins = [];
+ while($row = $result->fetch()) {
+ $subadmins[] = [
+ 'user' => $this->userManager->get($row['uid']),
+ 'group' => $this->groupManager->get($row['gid'])
+ ];
}
return $subadmins;
}
/**
* checks if a user is a SubAdmin of a group
- * @param string $uid uid of the subadmin
- * @param string $gid gid of the group
+ * @param IUser $user
+ * @param IGroup $group
* @return bool
*/
- public static function isSubAdminofGroup($uid, $gid) {
- $stmt = OC_DB::prepare('SELECT COUNT(*) AS `count` FROM `*PREFIX*group_admin` WHERE `uid` = ? AND `gid` = ?');
- $result = $stmt->execute(array($uid, $gid));
- $result = $result->fetchRow();
- if($result['count'] >= 1) {
- return true;
- }
- return false;
+ public function isSubAdminofGroup(IUser $user, IGroup $group) {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->select('*')
+ ->from('group_admin')
+ ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
+ ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
+ ->execute();
+
+ return !empty($result->fetch()) ? true : false;
}
/**
* checks if a user is a SubAdmin
- * @param string $uid uid of the subadmin
+ * @param IUser $user
* @return bool
*/
- public static function isSubAdmin($uid) {
+ public function isSubAdmin(IUser $user) {
// Check if the user is already an admin
- if(OC_Group::inGroup($uid, 'admin' )) {
+ if ($this->groupManager->isAdmin($user->getUID())) {
return true;
}
- $stmt = OC_DB::prepare('SELECT COUNT(*) AS `count` FROM `*PREFIX*group_admin` WHERE `uid` = ?');
- $result = $stmt->execute(array($uid));
- $result = $result->fetchRow();
- if($result['count'] > 0) {
- return true;
- }
- return false;
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->select('gid')
+ ->from('group_admin')
+ ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
+ ->setMaxResults(1)
+ ->execute()
+ ->fetch();
+
+ return $result === false ? false : true;
}
/**
* checks if a user is a accessible by a subadmin
- * @param string $subadmin uid of the subadmin
- * @param string $user uid of the user
+ * @param IUser $subadmin
+ * @param IUser $user
* @return bool
*/
- public static function isUserAccessible($subadmin, $user) {
- if(!self::isSubAdmin($subadmin)) {
+ public function isUserAccessible($subadmin, $user) {
+ if(!$this->isSubAdmin($subadmin)) {
return false;
}
- if(OC_User::isAdminUser($user)) {
+ if($this->groupManager->isAdmin($user->getUID())) {
return false;
}
- $accessiblegroups = self::getSubAdminsGroups($subadmin);
+ $accessiblegroups = $this->getSubAdminsGroups($subadmin);
foreach($accessiblegroups as $accessiblegroup) {
- if(OC_Group::inGroup($user, $accessiblegroup)) {
+ if($accessiblegroup->inGroup($user)) {
return true;
}
}
return false;
}
- /*
- * alias for self::isSubAdminofGroup()
- */
- public static function isGroupAccessible($subadmin, $group) {
- return self::isSubAdminofGroup($subadmin, $group);
- }
-
/**
- * delete all SubAdmins by uid
- * @param array $parameters
+ * delete all SubAdmins by $user
+ * @param IUser $user
* @return boolean
*/
- public static function post_deleteUser($parameters) {
- $stmt = OC_DB::prepare('DELETE FROM `*PREFIX*group_admin` WHERE `uid` = ?');
- $stmt->execute(array($parameters['uid']));
+ private function post_deleteUser($user) {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->delete('group_admin')
+ ->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
+ ->execute();
+
return true;
}
/**
- * delete all SubAdmins by gid
- * @param array $parameters
+ * delete all SubAdmins by $group
+ * @param IGroup $group
* @return boolean
*/
- public static function post_deleteGroup($parameters) {
- $stmt = OC_DB::prepare('DELETE FROM `*PREFIX*group_admin` WHERE `gid` = ?');
- $stmt->execute(array($parameters['gid']));
+ private function post_deleteGroup($group) {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $result = $qb->delete('group_admin')
+ ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
+ ->execute();
+
return true;
}
}
diff --git a/lib/private/updater.php b/lib/private/updater.php
index 70d68863788..1e4421c39d7 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -315,6 +315,9 @@ class Updater extends BasicEmitter {
if ($this->updateStepEnabled) {
$this->doCoreUpgrade();
+ // install new shipped apps on upgrade
+ OC_Installer::installShippedApps();
+
// update all shipped apps
$disabledApps = $this->checkAppsRequirements();
$this->doAppUpgrade();
@@ -337,6 +340,8 @@ class Updater extends BasicEmitter {
}
protected function checkCoreUpgrade() {
+ $this->emit('\OC\Updater', 'dbSimulateUpgradeBefore');
+
// simulate core DB upgrade
\OC_DB::simulateUpdateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml');
@@ -344,6 +349,8 @@ class Updater extends BasicEmitter {
}
protected function doCoreUpgrade() {
+ $this->emit('\OC\Updater', 'dbUpgradeBefore');
+
// do the real upgrade
\OC_DB::updateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml');
@@ -355,6 +362,7 @@ class Updater extends BasicEmitter {
*/
protected function checkAppUpgrade($version) {
$apps = \OC_App::getEnabledApps();
+ $this->emit('\OC\Updater', 'appUpgradeCheckBefore');
foreach ($apps as $appId) {
$info = \OC_App::getAppInfo($appId);
@@ -372,6 +380,7 @@ class Updater extends BasicEmitter {
$this->includePreUpdate($appId);
}
if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/database.xml')) {
+ $this->emit('\OC\Updater', 'appSimulateUpdate', array($appId));
\OC_DB::simulateUpdateDbFromStructure(\OC_App::getAppPath($appId) . '/appinfo/database.xml');
}
}
diff --git a/lib/private/util.php b/lib/private/util.php
index 05f10aef1e0..e51edaf0ee3 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -1093,7 +1093,7 @@ class OC_Util {
return $id;
}
- protected static $encryptedToken;
+ protected static $obfuscatedToken;
/**
* Register an get/post call. Important to prevent CSRF attacks.
*
@@ -1107,24 +1107,27 @@ class OC_Util {
*/
public static function callRegister() {
// Use existing token if function has already been called
- if(isset(self::$encryptedToken)) {
- return self::$encryptedToken;
+ if(isset(self::$obfuscatedToken)) {
+ return self::$obfuscatedToken;
}
+ $tokenLength = 30;
+
// Check if a token exists
if (!\OC::$server->getSession()->exists('requesttoken')) {
// No valid token found, generate a new one.
- $requestToken = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate(30);
+ $requestToken = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate($tokenLength);
\OC::$server->getSession()->set('requesttoken', $requestToken);
} else {
// Valid token already exists, send it
$requestToken = \OC::$server->getSession()->get('requesttoken');
}
- // Encrypt the token to mitigate breach-like attacks
- $sharedSecret = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate(10);
- self::$encryptedToken = \OC::$server->getCrypto()->encrypt($requestToken, $sharedSecret) . ':' . $sharedSecret;
- return self::$encryptedToken;
+ // XOR the token to mitigate breach-like attacks
+ $sharedSecret = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate($tokenLength);
+ self::$obfuscatedToken = base64_encode($requestToken ^ $sharedSecret) .':'.$sharedSecret;
+
+ return self::$obfuscatedToken;
}
/**
diff --git a/settings/controller/checksetupcontroller.php b/settings/controller/checksetupcontroller.php
index 2ff55fc72c9..bd0737aacc4 100644
--- a/settings/controller/checksetupcontroller.php
+++ b/settings/controller/checksetupcontroller.php
@@ -195,7 +195,7 @@ class CheckSetupController extends Controller {
return '';
}
-
+
/**
* Whether the php version is still supported (at time of release)
* according to: https://secure.php.net/supported-versions.php
@@ -244,7 +244,7 @@ class CheckSetupController extends Controller {
// there are two different memcached modules for PHP
// we only support memcached and not memcache
// https://code.google.com/p/memcached/wiki/PHPClientComparison
- return !extension_loaded('memcached') && extension_loaded('memcache');
+ return !(!extension_loaded('memcached') && extension_loaded('memcache'));
}
/**
diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php
index d9b6ba7f721..ddabd308a50 100644
--- a/settings/controller/userscontroller.php
+++ b/settings/controller/userscontroller.php
@@ -167,7 +167,7 @@ class UsersController extends Controller {
'name' => $user->getUID(),
'displayname' => $user->getDisplayName(),
'groups' => (empty($userGroups)) ? $this->groupManager->getUserGroupIds($user) : $userGroups,
- 'subadmin' => \OC_SubAdmin::getSubAdminsGroups($user->getUID()),
+ 'subadmin' => $this->subAdminFactory->getSubAdminsOfGroups($user->getUID()),
'quota' => $this->config->getUserValue($user->getUID(), 'files', 'quota', 'default'),
'storageLocation' => $user->getHome(),
'lastLogin' => $user->getLastLogin() * 1000,
diff --git a/settings/js/apps.js b/settings/js/apps.js
index d51c642c9c9..987153b778c 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -161,8 +161,8 @@ OC.Settings.Apps = OC.Settings.Apps || {
var page = $('#app-' + app.id);
- // image loading kung-fu
- if (app.preview) {
+ // image loading kung-fu (IE doesn't properly scale SVGs, so disable app icons)
+ if (app.preview && !OC.Util.isIE()) {
var currentImage = new Image();
currentImage.src = app.preview;
diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js
index 43c75680057..74e3673c4ce 100644
--- a/settings/l10n/ja.js
+++ b/settings/l10n/ja.js
@@ -75,6 +75,8 @@ OC.L10N.register(
"Uninstalling ...." : "アンインストール中 ....",
"Error while uninstalling app" : "アプリをアンインストール中にエラーが発生",
"Uninstall" : "アンインストール",
+ "App update" : "アプリのアップデート",
+ "An error occurred: {message}" : "エラーが発生しました: {message}",
"Select a profile picture" : "プロファイル画像を選択",
"Very weak password" : "非常に弱いパスワード",
"Weak password" : "弱いパスワード",
@@ -99,7 +101,7 @@ OC.L10N.register(
"A valid password must be provided" : "有効なパスワードを指定する必要があります",
"A valid email must be provided" : "有効なメールアドレスを指定する必要があります",
"__language_name__" : "Japanese (日本語)",
- "Sync clients" : "クライアントの同期",
+ "Sync clients" : "同期用クライアント",
"Personal info" : "個人情報",
"SSL root certificates" : "SSLルート証明書",
"Everything (fatal issues, errors, warnings, info, debug)" : "すべて (致命的な問題、エラー、警告、情報、デバッグ)",
@@ -138,6 +140,7 @@ OC.L10N.register(
"Allow users to send mail notification for shared files to other users" : "他ユーザーへの共有ファイルに関するメール通知の送信をユーザーに許可する",
"Exclude groups from sharing" : "共有可能なグループから除外する",
"These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。",
+ "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "共有ダイアログでのユーザー名の自動補完を有効にする。このチェックを無効にした場合は、完全なユーザー名を入力する必要があります。",
"Last cron job execution: %s." : "最終cronジョブ実行: %s",
"Last cron job execution: %s. Something seems wrong." : "最終cronジョブ実行: %s 何らかの問題があります。",
"Cron was not executed yet!" : "cronはまだ実行されていません!",
@@ -174,6 +177,8 @@ OC.L10N.register(
"Advanced monitoring" : "詳細モニタリング",
"Performance tuning" : "パフォーマンスチューニング",
"Improving the config.php" : "config.phpの改善",
+ "Theming" : "テーマ",
+ "Hardening and security guidance" : "堅牢化とセキュリティガイダンス",
"Version" : "バージョン",
"Developer documentation" : "開発者ドキュメント",
"by" : "by",
diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json
index cbc130a24e0..ca01117ad8f 100644
--- a/settings/l10n/ja.json
+++ b/settings/l10n/ja.json
@@ -73,6 +73,8 @@
"Uninstalling ...." : "アンインストール中 ....",
"Error while uninstalling app" : "アプリをアンインストール中にエラーが発生",
"Uninstall" : "アンインストール",
+ "App update" : "アプリのアップデート",
+ "An error occurred: {message}" : "エラーが発生しました: {message}",
"Select a profile picture" : "プロファイル画像を選択",
"Very weak password" : "非常に弱いパスワード",
"Weak password" : "弱いパスワード",
@@ -97,7 +99,7 @@
"A valid password must be provided" : "有効なパスワードを指定する必要があります",
"A valid email must be provided" : "有効なメールアドレスを指定する必要があります",
"__language_name__" : "Japanese (日本語)",
- "Sync clients" : "クライアントの同期",
+ "Sync clients" : "同期用クライアント",
"Personal info" : "個人情報",
"SSL root certificates" : "SSLルート証明書",
"Everything (fatal issues, errors, warnings, info, debug)" : "すべて (致命的な問題、エラー、警告、情報、デバッグ)",
@@ -136,6 +138,7 @@
"Allow users to send mail notification for shared files to other users" : "他ユーザーへの共有ファイルに関するメール通知の送信をユーザーに許可する",
"Exclude groups from sharing" : "共有可能なグループから除外する",
"These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。",
+ "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "共有ダイアログでのユーザー名の自動補完を有効にする。このチェックを無効にした場合は、完全なユーザー名を入力する必要があります。",
"Last cron job execution: %s." : "最終cronジョブ実行: %s",
"Last cron job execution: %s. Something seems wrong." : "最終cronジョブ実行: %s 何らかの問題があります。",
"Cron was not executed yet!" : "cronはまだ実行されていません!",
@@ -172,6 +175,8 @@
"Advanced monitoring" : "詳細モニタリング",
"Performance tuning" : "パフォーマンスチューニング",
"Improving the config.php" : "config.phpの改善",
+ "Theming" : "テーマ",
+ "Hardening and security guidance" : "堅牢化とセキュリティガイダンス",
"Version" : "バージョン",
"Developer documentation" : "開発者ドキュメント",
"by" : "by",
diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js
index 0cc1446d982..54d87a1096c 100644
--- a/settings/l10n/ru.js
+++ b/settings/l10n/ru.js
@@ -159,7 +159,9 @@ OC.L10N.register(
"Use system's cron service to call the cron.php file every 15 minutes." : "Использовать системный cron для вызова cron.php каждые 15 минут.",
"Enable server-side encryption" : "Включить шифрование на стороне сервера",
"Please read carefully before activating server-side encryption: " : "Пожалуйста прочтите внимательно прежде чем включать шифрование на стороне сервера:",
+ "Encryption alone does not guarantee security of the system. Please see ownCloud documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование не гарантирует безопасность системы. Пожалуйста читайте документацию для получения информации о работе модуля шифрования и случаи его использования.",
"Be aware that encryption always increases the file size." : "Будьте в курсе, что шифрование всегда увеличивает размер файла.",
+ "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Хорошая практика делать регулярные резервные копии ваших данных. При использовании шифрования сохраняйте ключи вместе с данными.",
"This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: Вы действительно желаете включить шифрование?",
"Enable encryption" : "Включить шифрование",
"No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрования не загружен, пожалуйста включите модуль шифрования в меню приложений.",
diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json
index 47c811c0da2..12b183c2fac 100644
--- a/settings/l10n/ru.json
+++ b/settings/l10n/ru.json
@@ -157,7 +157,9 @@
"Use system's cron service to call the cron.php file every 15 minutes." : "Использовать системный cron для вызова cron.php каждые 15 минут.",
"Enable server-side encryption" : "Включить шифрование на стороне сервера",
"Please read carefully before activating server-side encryption: " : "Пожалуйста прочтите внимательно прежде чем включать шифрование на стороне сервера:",
+ "Encryption alone does not guarantee security of the system. Please see ownCloud documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование не гарантирует безопасность системы. Пожалуйста читайте документацию для получения информации о работе модуля шифрования и случаи его использования.",
"Be aware that encryption always increases the file size." : "Будьте в курсе, что шифрование всегда увеличивает размер файла.",
+ "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Хорошая практика делать регулярные резервные копии ваших данных. При использовании шифрования сохраняйте ключи вместе с данными.",
"This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: Вы действительно желаете включить шифрование?",
"Enable encryption" : "Включить шифрование",
"No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрования не загружен, пожалуйста включите модуль шифрования в меню приложений.",
diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js
index c699c2d859f..7423b86e026 100644
--- a/settings/l10n/sq.js
+++ b/settings/l10n/sq.js
@@ -24,8 +24,8 @@ OC.L10N.register(
"Couldn't update app." : "S’përditësoi dot aplikacionin.",
"Wrong password" : "Fjalëkalim i gabuar",
"No user supplied" : "S’u dha përdorues",
- "Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutem jepni një fjalëkalim restaurimi administrativ, në të kundërt të gjitha të dhënat do humbasin",
- "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar restaurimi administrativ. Ju lutem kontrolloni fjalëkalimin dhe provoni përsëri.",
+ "Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutemi, jepni një fjalëkalim rikthimesh për përgjegjësin, në të kundërt të gjitha të dhënat do të humbasin",
+ "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.",
"Backend doesn't support password change, but the user's encryption key was successfully updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.",
"Unable to change password" : "S’arrin të ndryshojë fjalëkalimin",
"Enabled" : "E aktivizuar",
@@ -37,9 +37,9 @@ OC.L10N.register(
"Group already exists." : "Grupi ekziston tashmë.",
"Unable to add group." : "S’arrin të shtojë grup.",
"Unable to delete group." : "S’arrin të fshijë grup.",
- "log-level out of allowed range" : "shkallë regjistrimi jashtë intervalit të lejuar",
+ "log-level out of allowed range" : "nivel regjistrimi jashtë intervalit të lejuar",
"Saved" : "U ruajt",
- "test email settings" : "rregullime email-i test",
+ "test email settings" : "testoni rregullime email-i",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
"Email sent" : "Email-i u dërgua",
"You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.",
@@ -135,18 +135,18 @@ OC.L10N.register(
"Open documentation" : "Hapni dokumentimin",
"Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share",
"Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
- "Enforce password protection" : "Detyro mbrojtje fjalëkalimi",
+ "Enforce password protection" : "Detyro mbrojtje me fjalëkalim",
"Allow public uploads" : "Lejo ngarkime publike",
- "Allow users to send mail notification for shared files" : "Lejojuni përdoruesve të dërgojnë njoftime me email për kartela të ndara me të tjerët",
+ "Allow users to send mail notification for shared files" : "Lejoju përdoruesve të dërgojnë njoftime me email për kartela të ndara me të tjerët",
"Set default expiration date" : "Caktoni datë parazgjedhje skadimi",
"Expire after " : "Skadon pas ",
"days" : "ditësh",
"Enforce expiration date" : "Detyro datë skadimi",
"Allow resharing" : "Lejo rindarje",
"Restrict users to only share with users in their groups" : "Përdoruesit kufizoji të ndajnë gjëra vetëm me përdorues në grupin e tyre",
- "Allow users to send mail notification for shared files to other users" : "Lejojuni përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët",
+ "Allow users to send mail notification for shared files to other users" : "Lejoju përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët",
"Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet",
- "These groups will still be able to receive shares, but not to initiate them." : "Këta grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.",
+ "These groups will still be able to receive shares, but not to initiate them." : "Këto grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.",
"Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Lejo vetëplotësim emra përdoruesish te dialogu i ndarjeve me të tjerët. Nëse kjo është e çaktivizuar, do të duhet të jepen emra përdoruesish.",
"Last cron job execution: %s." : "Përmbushja e fundit e aktit cron: %s.",
"Last cron job execution: %s. Something seems wrong." : "Përmbushja e fundit e aktit cron: %s. Duket se nuk shkon diçka.",
@@ -167,8 +167,8 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu. Ju lutemi, aktivizoni \"Modul parazgjedhje fshehtëzimesh\" dhe ekzekutoni 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.",
"Start migration" : "Fillo migrimin",
- "This is used for sending out notifications." : "Kjo përdoret për të dërguar njoftime.",
- "Send mode" : "Mënyra e dërgimit",
+ "This is used for sending out notifications." : "Ky përdoret për të dërguar njoftime.",
+ "Send mode" : "Mënyrë dërgimi",
"Encryption" : "Fshehtëzim",
"From address" : "Nga adresa",
"mail" : "email",
@@ -194,6 +194,7 @@ OC.L10N.register(
"Advanced monitoring" : "Mbikëqyrje e mëtejshme",
"Performance tuning" : "Përimtime performance",
"Improving the config.php" : "Si të përmirësohet config.php",
+ "Theming" : "Ndryshim teme grafike",
"Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
"Version" : "Version",
"Developer documentation" : "Dokumentim për zhvillues",
@@ -254,7 +255,7 @@ OC.L10N.register(
"Valid until %s" : "E vlefshme deri më %s",
"Import root certificate" : "Importoni dëshmi rrënjë",
"Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Krijuar nga {communityopen}bashkësia ownCloud{linkclose}, {githubopen}kodi burim{linkclose} mund të përdoret sipas licencës {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
- "Show storage location" : "Shfaq vendndodhje depoje",
+ "Show storage location" : "Shfaq vendndodhje depozite",
"Show last log in" : "Shfaq hyrjen e fundit",
"Show user backend" : "Shfaq programin klient të përdoruesit",
"Send email to new user" : "Dërgo email përdoruesi të ri",
@@ -269,13 +270,13 @@ OC.L10N.register(
"Everyone" : "Kushdo",
"Admins" : "Administratorë",
"Default Quota" : "Kuota Parazgjedhje",
- "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ju lutemi, jepni kuotë depozimi (psh: \"512 MB\" ose \"12 GB\")",
+ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ju lutemi, jepni kuotë depozitimi (psh: \"512 MB\" ose \"12 GB\")",
"Unlimited" : "E pakufizuar",
"Other" : "Tjetër",
"Full Name" : "Emri i Plotë",
"Group Admin for" : "Admin Grupi për",
"Quota" : "Kuota",
- "Storage Location" : "Vendndodhje Depoje",
+ "Storage Location" : "Vendndodhje Depozite",
"User Backend" : "Program klient i përdoruesit",
"Last Login" : "Hyrja e fundit",
"change full name" : "ndryshoni emrin e plotë",
diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json
index eb66c38363d..4abef20fbae 100644
--- a/settings/l10n/sq.json
+++ b/settings/l10n/sq.json
@@ -22,8 +22,8 @@
"Couldn't update app." : "S’përditësoi dot aplikacionin.",
"Wrong password" : "Fjalëkalim i gabuar",
"No user supplied" : "S’u dha përdorues",
- "Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutem jepni një fjalëkalim restaurimi administrativ, në të kundërt të gjitha të dhënat do humbasin",
- "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar restaurimi administrativ. Ju lutem kontrolloni fjalëkalimin dhe provoni përsëri.",
+ "Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutemi, jepni një fjalëkalim rikthimesh për përgjegjësin, në të kundërt të gjitha të dhënat do të humbasin",
+ "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.",
"Backend doesn't support password change, but the user's encryption key was successfully updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.",
"Unable to change password" : "S’arrin të ndryshojë fjalëkalimin",
"Enabled" : "E aktivizuar",
@@ -35,9 +35,9 @@
"Group already exists." : "Grupi ekziston tashmë.",
"Unable to add group." : "S’arrin të shtojë grup.",
"Unable to delete group." : "S’arrin të fshijë grup.",
- "log-level out of allowed range" : "shkallë regjistrimi jashtë intervalit të lejuar",
+ "log-level out of allowed range" : "nivel regjistrimi jashtë intervalit të lejuar",
"Saved" : "U ruajt",
- "test email settings" : "rregullime email-i test",
+ "test email settings" : "testoni rregullime email-i",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
"Email sent" : "Email-i u dërgua",
"You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.",
@@ -133,18 +133,18 @@
"Open documentation" : "Hapni dokumentimin",
"Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share",
"Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
- "Enforce password protection" : "Detyro mbrojtje fjalëkalimi",
+ "Enforce password protection" : "Detyro mbrojtje me fjalëkalim",
"Allow public uploads" : "Lejo ngarkime publike",
- "Allow users to send mail notification for shared files" : "Lejojuni përdoruesve të dërgojnë njoftime me email për kartela të ndara me të tjerët",
+ "Allow users to send mail notification for shared files" : "Lejoju përdoruesve të dërgojnë njoftime me email për kartela të ndara me të tjerët",
"Set default expiration date" : "Caktoni datë parazgjedhje skadimi",
"Expire after " : "Skadon pas ",
"days" : "ditësh",
"Enforce expiration date" : "Detyro datë skadimi",
"Allow resharing" : "Lejo rindarje",
"Restrict users to only share with users in their groups" : "Përdoruesit kufizoji të ndajnë gjëra vetëm me përdorues në grupin e tyre",
- "Allow users to send mail notification for shared files to other users" : "Lejojuni përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët",
+ "Allow users to send mail notification for shared files to other users" : "Lejoju përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët",
"Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet",
- "These groups will still be able to receive shares, but not to initiate them." : "Këta grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.",
+ "These groups will still be able to receive shares, but not to initiate them." : "Këto grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.",
"Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Lejo vetëplotësim emra përdoruesish te dialogu i ndarjeve me të tjerët. Nëse kjo është e çaktivizuar, do të duhet të jepen emra përdoruesish.",
"Last cron job execution: %s." : "Përmbushja e fundit e aktit cron: %s.",
"Last cron job execution: %s. Something seems wrong." : "Përmbushja e fundit e aktit cron: %s. Duket se nuk shkon diçka.",
@@ -165,8 +165,8 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu. Ju lutemi, aktivizoni \"Modul parazgjedhje fshehtëzimesh\" dhe ekzekutoni 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.",
"Start migration" : "Fillo migrimin",
- "This is used for sending out notifications." : "Kjo përdoret për të dërguar njoftime.",
- "Send mode" : "Mënyra e dërgimit",
+ "This is used for sending out notifications." : "Ky përdoret për të dërguar njoftime.",
+ "Send mode" : "Mënyrë dërgimi",
"Encryption" : "Fshehtëzim",
"From address" : "Nga adresa",
"mail" : "email",
@@ -192,6 +192,7 @@
"Advanced monitoring" : "Mbikëqyrje e mëtejshme",
"Performance tuning" : "Përimtime performance",
"Improving the config.php" : "Si të përmirësohet config.php",
+ "Theming" : "Ndryshim teme grafike",
"Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
"Version" : "Version",
"Developer documentation" : "Dokumentim për zhvillues",
@@ -252,7 +253,7 @@
"Valid until %s" : "E vlefshme deri më %s",
"Import root certificate" : "Importoni dëshmi rrënjë",
"Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Krijuar nga {communityopen}bashkësia ownCloud{linkclose}, {githubopen}kodi burim{linkclose} mund të përdoret sipas licencës {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
- "Show storage location" : "Shfaq vendndodhje depoje",
+ "Show storage location" : "Shfaq vendndodhje depozite",
"Show last log in" : "Shfaq hyrjen e fundit",
"Show user backend" : "Shfaq programin klient të përdoruesit",
"Send email to new user" : "Dërgo email përdoruesi të ri",
@@ -267,13 +268,13 @@
"Everyone" : "Kushdo",
"Admins" : "Administratorë",
"Default Quota" : "Kuota Parazgjedhje",
- "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ju lutemi, jepni kuotë depozimi (psh: \"512 MB\" ose \"12 GB\")",
+ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ju lutemi, jepni kuotë depozitimi (psh: \"512 MB\" ose \"12 GB\")",
"Unlimited" : "E pakufizuar",
"Other" : "Tjetër",
"Full Name" : "Emri i Plotë",
"Group Admin for" : "Admin Grupi për",
"Quota" : "Kuota",
- "Storage Location" : "Vendndodhje Depoje",
+ "Storage Location" : "Vendndodhje Depozite",
"User Backend" : "Program klient i përdoruesit",
"Last Login" : "Hyrja e fundit",
"change full name" : "ndryshoni emrin e plotë",
diff --git a/tests/lib/api.php b/tests/lib/api.php
index f8f03965711..1d1f97c4942 100644
--- a/tests/lib/api.php
+++ b/tests/lib/api.php
@@ -14,11 +14,13 @@ class Test_API extends \Test\TestCase {
* @param string $message
*/
function buildResponse($shipped, $data, $code, $message=null) {
- return array(
+ $resp = new OC_OCS_Result($data, $code, $message);
+ $resp->addHeader('KEY', 'VALUE');
+ return [
'shipped' => $shipped,
- 'response' => new OC_OCS_Result($data, $code, $message),
+ 'response' => $resp,
'app' => $this->getUniqueID('testapp_'),
- );
+ ];
}
// Validate details of the result
@@ -79,11 +81,11 @@ class Test_API extends \Test\TestCase {
}
function dataProviderTestOneResult() {
- return array(
- array(100, true),
- array(101, false),
- array(997, false),
- );
+ return [
+ [100, true],
+ [101, false],
+ [997, false],
+ ];
}
/**
@@ -94,47 +96,47 @@ class Test_API extends \Test\TestCase {
*/
public function testOneResult($statusCode, $succeeded) {
// Setup some data arrays
- $data1 = array(
- 'users' => array(
- 'tom' => array(
+ $data1 = [
+ 'users' => [
+ 'tom' => [
'key' => 'value',
- ),
- 'frank' => array(
+ ],
+ 'frank' => [
'key' => 'value',
- ),
- ));
+ ],
+ ]];
// Test merging one success result
$response = $this->buildResponse(true, $data1, $statusCode);
- $result = OC_API::mergeResponses(array($response));
+ $result = OC_API::mergeResponses([$response]);
$this->assertEquals($response['response'], $result);
$this->checkResult($result, $succeeded);
}
function dataProviderTestMergeResponses() {
- return array(
+ return [
// Two shipped success results
- array(true, 100, true, 100, true),
+ [true, 100, true, 100, true],
// Two shipped results, one success and one failure
- array(true, 100, true, 998, false),
+ [true, 100, true, 998, false],
// Two shipped results, both failure
- array(true, 997, true, 998, false),
+ [true, 997, true, 998, false],
// Two third party success results
- array(false, 100, false, 100, true),
+ [false, 100, false, 100, true],
// Two third party results, one success and one failure
- array(false, 100, false, 998, false),
+ [false, 100, false, 998, false],
// Two third party results, both failure
- array(false, 997, false, 998, false),
+ [false, 997, false, 998, false],
// One of each, both success
- array(false, 100, true, 100, true),
- array(true, 100, false, 100, true),
+ [false, 100, true, 100, true],
+ [true, 100, false, 100, true],
// One of each, both failure
- array(false, 997, true, 998, false),
+ [false, 997, true, 998, false],
// One of each, shipped success
- array(false, 997, true, 100, true),
+ [false, 997, true, 100, true],
// One of each, third party success
- array(false, 100, true, 998, false),
- );
+ [false, 100, true, 998, false],
+ ];
}
/**
* @dataProvider dataProviderTestMergeResponses
@@ -175,9 +177,11 @@ class Test_API extends \Test\TestCase {
$this->checkResult($result, $succeeded);
$resultData = $result->getData();
$resultMeta = $result->getMeta();
+ $resultHeaders = $result->getHeaders();
$resultStatusCode = $result->getStatusCode();
$this->assertArrayHasKey('jan', $resultData['users']);
+ $this->assertArrayHasKey('KEY', $resultHeaders);
// check if the returned status message matches the selected status code
if ($resultStatusCode === 997) {
diff --git a/tests/lib/appframework/controller/ApiControllerTest.php b/tests/lib/appframework/controller/ApiControllerTest.php
index 573fe7f3bad..137e5950f67 100644
--- a/tests/lib/appframework/controller/ApiControllerTest.php
+++ b/tests/lib/appframework/controller/ApiControllerTest.php
@@ -38,7 +38,6 @@ class ApiControllerTest extends \Test\TestCase {
$request = new Request(
['server' => ['HTTP_ORIGIN' => 'test']],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->controller = new ChildApiController('app', $request, 'verbs',
diff --git a/tests/lib/appframework/controller/ControllerTest.php b/tests/lib/appframework/controller/ControllerTest.php
index c847525c263..1493c0c3175 100644
--- a/tests/lib/appframework/controller/ControllerTest.php
+++ b/tests/lib/appframework/controller/ControllerTest.php
@@ -76,7 +76,6 @@ class ControllerTest extends \Test\TestCase {
'method' => 'hi',
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
diff --git a/tests/lib/appframework/controller/OCSControllerTest.php b/tests/lib/appframework/controller/OCSControllerTest.php
index 292a56e3caa..92b092cf0e9 100644
--- a/tests/lib/appframework/controller/OCSControllerTest.php
+++ b/tests/lib/appframework/controller/OCSControllerTest.php
@@ -43,7 +43,6 @@ class OCSControllerTest extends \Test\TestCase {
],
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$controller = new ChildOCSController('app', $request, 'verbs',
@@ -65,7 +64,6 @@ class OCSControllerTest extends \Test\TestCase {
$controller = new ChildOCSController('app', new Request(
[],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
));
$expected = "<?xml version=\"1.0\"?>\n" .
@@ -98,7 +96,6 @@ class OCSControllerTest extends \Test\TestCase {
$controller = new ChildOCSController('app', new Request(
[],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
));
$expected = "<?xml version=\"1.0\"?>\n" .
@@ -131,7 +128,6 @@ class OCSControllerTest extends \Test\TestCase {
$controller = new ChildOCSController('app', new Request(
[],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
));
$expected = '{"ocs":{"meta":{"status":"failure","statuscode":400,"message":"OK",' .
diff --git a/tests/lib/appframework/dependencyinjection/DIContainerTest.php b/tests/lib/appframework/dependencyinjection/DIContainerTest.php
index 598e70beffc..0cbdddbb205 100644
--- a/tests/lib/appframework/dependencyinjection/DIContainerTest.php
+++ b/tests/lib/appframework/dependencyinjection/DIContainerTest.php
@@ -74,7 +74,6 @@ class DIContainerTest extends \Test\TestCase {
$this->container['Request'] = new Request(
['method' => 'GET'],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$security = $this->container['SecurityMiddleware'];
diff --git a/tests/lib/appframework/http/DispatcherTest.php b/tests/lib/appframework/http/DispatcherTest.php
index c25fd7b6f85..02c86df8e72 100644
--- a/tests/lib/appframework/http/DispatcherTest.php
+++ b/tests/lib/appframework/http/DispatcherTest.php
@@ -295,7 +295,6 @@ class DispatcherTest extends \Test\TestCase {
'method' => 'POST'
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->dispatcher = new Dispatcher(
@@ -323,7 +322,6 @@ class DispatcherTest extends \Test\TestCase {
'method' => 'POST',
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->dispatcher = new Dispatcher(
@@ -354,7 +352,6 @@ class DispatcherTest extends \Test\TestCase {
'method' => 'GET'
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->dispatcher = new Dispatcher(
@@ -384,7 +381,6 @@ class DispatcherTest extends \Test\TestCase {
'method' => 'GET'
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->dispatcher = new Dispatcher(
@@ -415,7 +411,6 @@ class DispatcherTest extends \Test\TestCase {
'method' => 'PUT'
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->dispatcher = new Dispatcher(
@@ -448,7 +443,6 @@ class DispatcherTest extends \Test\TestCase {
'method' => 'POST'
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->dispatcher = new Dispatcher(
diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php
index bb9910b6a46..f628a30f1da 100644
--- a/tests/lib/appframework/http/RequestTest.php
+++ b/tests/lib/appframework/http/RequestTest.php
@@ -54,7 +54,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -87,7 +86,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -110,7 +108,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -130,7 +127,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -150,7 +146,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -167,7 +162,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -189,7 +183,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -213,7 +206,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -235,7 +227,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -260,7 +251,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -281,7 +271,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -306,7 +295,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -336,7 +324,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -358,7 +345,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
$vars,
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -382,7 +368,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
[],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -394,7 +379,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
[],
\OC::$server->getSecureRandom(),
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -419,7 +403,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -448,7 +431,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -477,7 +459,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -510,7 +491,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -561,7 +541,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -589,7 +568,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
[],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -611,7 +589,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -622,7 +599,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -646,7 +622,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -667,7 +642,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -684,7 +658,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
[],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -705,7 +678,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -727,7 +699,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -816,7 +787,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -833,7 +803,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -851,7 +820,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -869,7 +837,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -897,7 +864,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
[],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -919,7 +885,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -946,7 +911,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -973,7 +937,6 @@ class RequestTest extends \Test\TestCase {
],
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -990,7 +953,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
[],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1018,7 +980,6 @@ class RequestTest extends \Test\TestCase {
$request = new Request(
[],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1034,7 +995,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1055,7 +1015,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1076,7 +1035,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1099,7 +1057,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1122,7 +1079,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1145,7 +1101,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1168,7 +1123,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1223,7 +1177,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
);
@@ -1263,7 +1216,6 @@ class RequestTest extends \Test\TestCase {
]
],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
])
@@ -1277,25 +1229,17 @@ class RequestTest extends \Test\TestCase {
}
public function testPassesCSRFCheckWithGet() {
- $crypto = $this->getMock('\OCP\Security\ICrypto');
- $crypto
- ->expects($this->once())
- ->method('decrypt')
- ->with('1c637c4147e40a8a8f09428ec2059cebea3480c27b402b4e793c69710a731513|wlXxNUaFqHuQnZr5|e6ab49c9e0e20c8d3607e02f1d8e6ec17ad6020ae10b7d64ab4b0a6318c0875940943a6aa303dc090fea0b4cd5b9fb8bcbecac4308a2bd15d9f369cdc22121a4', 'secret')
- ->will($this->returnValue('MyStoredRequestToken'));
-
/** @var Request $request */
$request = $this->getMockBuilder('\OC\AppFramework\Http\Request')
->setMethods(['getScriptName'])
->setConstructorArgs([
[
'get' => [
- 'requesttoken' => '1c637c4147e40a8a8f09428ec2059cebea3480c27b402b4e793c69710a731513|wlXxNUaFqHuQnZr5|e6ab49c9e0e20c8d3607e02f1d8e6ec17ad6020ae10b7d64ab4b0a6318c0875940943a6aa303dc090fea0b4cd5b9fb8bcbecac4308a2bd15d9f369cdc22121a4:secret',
+ 'requesttoken' => 'AAAHGxsTCTc3BgMQESAcNR0OAR0=:MyTotalSecretShareds',
],
'requesttoken' => 'MyStoredRequestToken',
],
$this->secureRandom,
- $crypto,
$this->config,
$this->stream
])
@@ -1305,25 +1249,17 @@ class RequestTest extends \Test\TestCase {
}
public function testPassesCSRFCheckWithPost() {
- $crypto = $this->getMock('\OCP\Security\ICrypto');
- $crypto
- ->expects($this->once())
- ->method('decrypt')
- ->with('1c637c4147e40a8a8f09428ec2059cebea3480c27b402b4e793c69710a731513|wlXxNUaFqHuQnZr5|e6ab49c9e0e20c8d3607e02f1d8e6ec17ad6020ae10b7d64ab4b0a6318c0875940943a6aa303dc090fea0b4cd5b9fb8bcbecac4308a2bd15d9f369cdc22121a4', 'secret')
- ->will($this->returnValue('MyStoredRequestToken'));
-
/** @var Request $request */
$request = $this->getMockBuilder('\OC\AppFramework\Http\Request')
->setMethods(['getScriptName'])
->setConstructorArgs([
[
'post' => [
- 'requesttoken' => '1c637c4147e40a8a8f09428ec2059cebea3480c27b402b4e793c69710a731513|wlXxNUaFqHuQnZr5|e6ab49c9e0e20c8d3607e02f1d8e6ec17ad6020ae10b7d64ab4b0a6318c0875940943a6aa303dc090fea0b4cd5b9fb8bcbecac4308a2bd15d9f369cdc22121a4:secret',
+ 'requesttoken' => 'AAAHGxsTCTc3BgMQESAcNR0OAR0=:MyTotalSecretShareds',
],
'requesttoken' => 'MyStoredRequestToken',
],
$this->secureRandom,
- $crypto,
$this->config,
$this->stream
])
@@ -1333,24 +1269,17 @@ class RequestTest extends \Test\TestCase {
}
public function testPassesCSRFCheckWithHeader() {
- $crypto = $this->getMock('\OCP\Security\ICrypto');
- $crypto
- ->expects($this->once())
- ->method('decrypt')
- ->with('1c637c4147e40a8a8f09428ec2059cebea3480c27b402b4e793c69710a731513|wlXxNUaFqHuQnZr5|e6ab49c9e0e20c8d3607e02f1d8e6ec17ad6020ae10b7d64ab4b0a6318c0875940943a6aa303dc090fea0b4cd5b9fb8bcbecac4308a2bd15d9f369cdc22121a4', 'secret')
- ->will($this->returnValue('MyStoredRequestToken'));
/** @var Request $request */
$request = $this->getMockBuilder('\OC\AppFramework\Http\Request')
->setMethods(['getScriptName'])
->setConstructorArgs([
[
'server' => [
- 'HTTP_REQUESTTOKEN' => '1c637c4147e40a8a8f09428ec2059cebea3480c27b402b4e793c69710a731513|wlXxNUaFqHuQnZr5|e6ab49c9e0e20c8d3607e02f1d8e6ec17ad6020ae10b7d64ab4b0a6318c0875940943a6aa303dc090fea0b4cd5b9fb8bcbecac4308a2bd15d9f369cdc22121a4:secret',
+ 'HTTP_REQUESTTOKEN' => 'AAAHGxsTCTc3BgMQESAcNR0OAR0=:MyTotalSecretShareds',
],
'requesttoken' => 'MyStoredRequestToken',
],
$this->secureRandom,
- $crypto,
$this->config,
$this->stream
])
@@ -1359,6 +1288,9 @@ class RequestTest extends \Test\TestCase {
$this->assertTrue($request->passesCSRFCheck());
}
+ /**
+ * @return array
+ */
public function invalidTokenDataProvider() {
return [
['InvalidSentToken'],
@@ -1373,8 +1305,6 @@ class RequestTest extends \Test\TestCase {
* @param string $invalidToken
*/
public function testPassesCSRFCheckWithInvalidToken($invalidToken) {
- $crypto = new Crypto($this->config, $this->secureRandom);
-
/** @var Request $request */
$request = $this->getMockBuilder('\OC\AppFramework\Http\Request')
->setMethods(['getScriptName'])
@@ -1386,7 +1316,6 @@ class RequestTest extends \Test\TestCase {
'requesttoken' => 'MyStoredRequestToken',
],
$this->secureRandom,
- $crypto,
$this->config,
$this->stream
])
@@ -1402,7 +1331,6 @@ class RequestTest extends \Test\TestCase {
->setConstructorArgs([
[],
$this->secureRandom,
- $this->getMock('\OCP\Security\ICrypto'),
$this->config,
$this->stream
])
diff --git a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
index eab45b03c98..a8731525798 100644
--- a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
+++ b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
@@ -133,7 +133,6 @@ class MiddlewareDispatcherTest extends \Test\TestCase {
new Request(
['method' => 'GET'],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
)
]
diff --git a/tests/lib/appframework/middleware/MiddlewareTest.php b/tests/lib/appframework/middleware/MiddlewareTest.php
index 8e077b37e2f..33f04e1383d 100644
--- a/tests/lib/appframework/middleware/MiddlewareTest.php
+++ b/tests/lib/appframework/middleware/MiddlewareTest.php
@@ -61,7 +61,6 @@ class MiddlewareTest extends \Test\TestCase {
new Request(
[],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
)
]
diff --git a/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php b/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php
index f5e6106dc3a..ca526fb859c 100644
--- a/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php
+++ b/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php
@@ -42,7 +42,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
]
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->reflector->reflect($this, __FUNCTION__);
@@ -62,7 +61,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
]
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session);
@@ -80,7 +78,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
$request = new Request(
[],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->reflector->reflect($this, __FUNCTION__);
@@ -104,7 +101,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
]
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->reflector->reflect($this, __FUNCTION__);
@@ -123,7 +119,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
$request = new Request(
[],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->reflector->reflect($this, __FUNCTION__);
@@ -149,7 +144,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_PW' => 'pass'
]],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->session->expects($this->once())
@@ -175,7 +169,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_PW' => 'pass'
]],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->session->expects($this->once())
@@ -197,7 +190,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_PW' => 'pass'
]],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session);
@@ -214,7 +206,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_PW' => 'pass'
]],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session);
@@ -235,7 +226,6 @@ class CORSMiddlewareTest extends \Test\TestCase {
'PHP_AUTH_PW' => 'pass'
]],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$middleware = new CORSMiddleware($request, $this->reflector, $this->session);
diff --git a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
index 3b4d7987e94..347a0423ea6 100644
--- a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
+++ b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
@@ -322,7 +322,6 @@ class SecurityMiddlewareTest extends \Test\TestCase {
]
],
$this->getMock('\OCP\Security\ISecureRandom'),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->middleware = $this->getMiddleware(true, true);
diff --git a/tests/lib/appframework/middleware/sessionmiddlewaretest.php b/tests/lib/appframework/middleware/sessionmiddlewaretest.php
index 06390e96d4c..11c1600f515 100644
--- a/tests/lib/appframework/middleware/sessionmiddlewaretest.php
+++ b/tests/lib/appframework/middleware/sessionmiddlewaretest.php
@@ -36,7 +36,6 @@ class SessionMiddlewareTest extends \Test\TestCase {
$this->request = new Request(
[],
$this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(),
- $this->getMock('\OCP\Security\ICrypto'),
$this->getMock('\OCP\IConfig')
);
$this->reflector = new ControllerMethodReflector();
diff --git a/tests/lib/subadmin.php b/tests/lib/subadmin.php
new file mode 100644
index 00000000000..0855e514c7e
--- /dev/null
+++ b/tests/lib/subadmin.php
@@ -0,0 +1,264 @@
+<?php
+/**
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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 Test;
+
+class SubAdmin extends \Test\TestCase {
+
+ /** @var \OCP\IUserManager */
+ private $userManager;
+
+ /** @var \OCP\IGroupManager */
+ private $groupManager;
+
+ /** @var \OCP\IDBConnection */
+ private $dbConn;
+
+ /** @var \OCP\IUser[] */
+ private $users;
+
+ /** @var \OCP\IGroup[] */
+ private $groups;
+
+ public function setup() {
+ $this->users = [];
+ $this->groups = [];
+
+ $this->userManager = \OC::$server->getUserManager();
+ $this->groupManager = \OC::$server->getGroupManager();
+ $this->dbConn = \OC::$server->getDatabaseConnection();
+
+ // Create 3 users and 3 groups
+ for ($i = 0; $i < 3; $i++) {
+ $this->users[] = $this->userManager->createUser('user'.$i, 'user');
+ $this->groups[] = $this->groupManager->createGroup('group'.$i);
+ }
+
+ // Create admin group
+ if (!$this->groupManager->groupExists('admin')) {
+ $this->groupManager->createGroup('admin');
+ }
+ }
+
+ public function tearDown() {
+ foreach($this->users as $user) {
+ $user->delete();
+ }
+
+ foreach($this->groups as $group) {
+ $group->delete();
+ }
+ }
+
+ public function testCreateSubAdmin() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+
+ // Look for subadmin in the database
+ $qb = $this->dbConn->getQueryBuilder();
+ $result = $qb->select(['gid', 'uid'])
+ ->from('group_admin')
+ ->where($qb->expr()->eq('gid', $qb->createNamedParameter($this->groups[0]->getGID())))
+ ->andWHere($qb->expr()->eq('uid', $qb->createNamedParameter($this->users[0]->getUID())))
+ ->execute()
+ ->fetch();
+ $this->assertEquals(
+ [
+ 'gid' => $this->groups[0]->getGID(),
+ 'uid' => $this->users[0]->getUID()
+ ], $result);
+
+ // Delete subadmin
+ $result = $qb->delete('*PREFIX*group_admin')
+ ->where($qb->expr()->eq('gid', $qb->createNamedParameter($this->groups[0]->getGID())))
+ ->andWHere($qb->expr()->eq('uid', $qb->createNamedParameter($this->users[0]->getUID())))
+ ->execute();
+ }
+
+ public function testDeleteSubAdmin() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
+
+ // DB query should be empty
+ $qb = $this->dbConn->getQueryBuilder();
+ $result = $qb->select(['gid', 'uid'])
+ ->from('group_admin')
+ ->where($qb->expr()->eq('gid', $qb->createNamedParameter($this->groups[0]->getGID())))
+ ->andWHere($qb->expr()->eq('uid', $qb->createNamedParameter($this->users[0]->getUID())))
+ ->execute()
+ ->fetch();
+ $this->assertEmpty($result);
+ }
+
+ public function testGetSubAdminsGroups() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[1]));
+
+ $result = $subAdmin->getSubAdminsGroups($this->users[0]);
+
+ $this->assertContains($this->groups[0], $result);
+ $this->assertContains($this->groups[1], $result);
+ $this->assertNotContains($this->groups[2], $result);
+
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[1]));
+ }
+
+ public function testGetGroupsSubAdmins() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[1], $this->groups[0]));
+
+ $result = $subAdmin->getGroupsSubAdmins($this->groups[0]);
+
+ $this->assertContains($this->users[0], $result);
+ $this->assertContains($this->users[1], $result);
+ $this->assertNotContains($this->users[2], $result);
+
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[1], $this->groups[0]));
+ }
+
+ public function testGetAllSubAdmin() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[1], $this->groups[1]));
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[2], $this->groups[1]));
+
+ $result = $subAdmin->getAllSubAdmins();
+
+ $this->assertContains(['user' => $this->users[0], 'group' => $this->groups[0]], $result);
+ $this->assertContains(['user' => $this->users[1], 'group' => $this->groups[1]], $result);
+ $this->assertContains(['user' => $this->users[2], 'group' => $this->groups[1]], $result);
+ }
+
+ public function testIsSubAdminofGroup() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+
+ $this->assertTrue($subAdmin->isSubAdminOfGroup($this->users[0], $this->groups[0]));
+ $this->assertFalse($subAdmin->isSubAdminOfGroup($this->users[0], $this->groups[1]));
+ $this->assertFalse($subAdmin->isSubAdminOfGroup($this->users[1], $this->groups[0]));
+
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
+ }
+
+ public function testIsSubAdmin() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+
+ $this->assertTrue($subAdmin->isSubAdmin($this->users[0]));
+ $this->assertFalse($subAdmin->isSubAdmin($this->users[1]));
+
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
+ }
+
+ public function testIsSubAdminAsAdmin() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->groupManager->get('admin')->addUser($this->users[0]);
+
+ $this->assertTrue($subAdmin->isSubAdmin($this->users[0]));
+ }
+
+ public function testIsUserAccessible() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->groups[0]->addUser($this->users[1]);
+ $this->groups[1]->addUser($this->users[1]);
+ $this->groups[1]->addUser($this->users[2]);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[2], $this->groups[2]));
+
+ $this->assertTrue($subAdmin->isUserAccessible($this->users[0], $this->users[1]));
+ $this->assertFalse($subAdmin->isUserAccessible($this->users[0], $this->users[2]));
+ $this->assertFalse($subAdmin->isUserAccessible($this->users[2], $this->users[0]));
+
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
+ $this->assertTrue($subAdmin->deleteSubAdmin($this->users[2], $this->groups[2]));
+ }
+
+ public function testIsUserAccessibleAsUser() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertFalse($subAdmin->isUserAccessible($this->users[0], $this->users[1]));
+ }
+
+ public function testIsUserAccessibleAdmin() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+ $this->assertTrue($subAdmin->createSubAdmin($this->users[0], $this->groups[0]));
+ $this->groupManager->get('admin')->addUser($this->users[1]);
+
+ $this->assertFalse($subAdmin->isUserAccessible($this->users[0], $this->users[1]));
+
+ }
+
+ public function testPostDeleteUser() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+
+ $user = array_shift($this->users);
+ foreach($this->groups as $group) {
+ $this->assertTrue($subAdmin->createSubAdmin($user, $group));
+ }
+
+ $user->delete();
+ $this->assertEmpty($subAdmin->getAllSubAdmins());
+ }
+
+ public function testPostDeleteGroup() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+
+ $group = array_shift($this->groups);
+ foreach($this->users as $user) {
+ $this->assertTrue($subAdmin->createSubAdmin($user, $group));
+ }
+
+ $group->delete();
+ $this->assertEmpty($subAdmin->getAllSubAdmins());
+ }
+
+ public function testHooks() {
+ $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn);
+
+ $test = $this;
+ $u = $this->users[0];
+ $g = $this->groups[0];
+ $count = 0;
+
+ $subAdmin->listen('\OC\SubAdmin', 'postCreateSubAdmin', function ($user, $group) use ($test, $u, $g, &$count) {
+ $test->assertEquals($u->getUID(), $user->getUID());
+ $test->assertEquals($g->getGID(), $group->getGID());
+ $count++;
+ });
+
+ $subAdmin->listen('\OC\SubAdmin', 'postDeleteSubAdmin', function ($user, $group) use ($test, $u, $g, &$count) {
+ $test->assertEquals($u->getUID(), $user->getUID());
+ $test->assertEquals($g->getGID(), $group->getGID());
+ $count++;
+ });
+
+ $this->assertTrue($subAdmin->createSubAdmin($u, $g));
+ $this->assertEquals(1, $count);
+
+ $this->assertTrue($subAdmin->deleteSubAdmin($u, $g));
+ $this->assertEquals(2, $count);
+ }
+
+}
diff --git a/tests/lib/util.php b/tests/lib/util.php
index eaa3d0795e3..9974e799d08 100644
--- a/tests/lib/util.php
+++ b/tests/lib/util.php
@@ -91,7 +91,7 @@ class Test_Util extends \Test\TestCase {
function testCallRegister() {
$result = strlen(OC_Util::callRegister());
- $this->assertEquals(221, $result);
+ $this->assertEquals(71, $result);
}
function testSanitizeHTML() {
diff --git a/tests/settings/controller/userscontrollertest.php b/tests/settings/controller/userscontrollertest.php
index 6fab43d6a16..408ddc45589 100644
--- a/tests/settings/controller/userscontrollertest.php
+++ b/tests/settings/controller/userscontrollertest.php
@@ -153,6 +153,22 @@ class UsersControllerTest extends \Test\TestCase {
404, 'admin@bar.com',
2323, 'bar@dummy.com'));
+ $this->container['SubAdminFactory']
+ ->expects($this->at(0))
+ ->method('getSubAdminsOfGroups')
+ ->with('foo')
+ ->will($this->returnValue([]));
+ $this->container['SubAdminFactory']
+ ->expects($this->at(1))
+ ->method('getSubAdminsOfGroups')
+ ->with('admin')
+ ->will($this->returnValue([]));
+ $this->container['SubAdminFactory']
+ ->expects($this->at(2))
+ ->method('getSubAdminsOfGroups')
+ ->with('bar')
+ ->will($this->returnValue([]));
+
$expectedResponse = new DataResponse(
array(
0 => array(
@@ -199,11 +215,6 @@ class UsersControllerTest extends \Test\TestCase {
public function testIndexSubAdmin() {
$this->container['IsAdmin'] = false;
- $this->container['SubAdminFactory']
- ->expects($this->once())
- ->method('getSubAdminsOfGroups')
- ->with('username')
- ->will($this->returnValue(['SubGroup1', 'SubGroup2']));
$user = $this->getMockBuilder('\OC\User\User')
->disableOriginalConstructor()->getMock();
@@ -321,6 +332,15 @@ class UsersControllerTest extends \Test\TestCase {
2323, 'bar@dummy.com'
));
+ $this->container['SubAdminFactory']
+ ->method('getSubAdminsOfGroups')
+ ->will($this->returnValueMap([
+ ['username' , ['SubGroup1', 'SubGroup2']],
+ ['foo', []],
+ ['admin', []],
+ ['bar', []],
+ ]));
+
$expectedResponse = new DataResponse(
[
0 => [
@@ -452,6 +472,23 @@ class UsersControllerTest extends \Test\TestCase {
404, 'admin@bar.com',
2323, 'bar@dummy.com'));
+ $this->container['SubAdminFactory']
+ ->expects($this->at(0))
+ ->method('getSubAdminsOfGroups')
+ ->with('foo')
+ ->will($this->returnValue([]));
+ $this->container['SubAdminFactory']
+ ->expects($this->at(1))
+ ->method('getSubAdminsOfGroups')
+ ->with('admin')
+ ->will($this->returnValue([]));
+ $this->container['SubAdminFactory']
+ ->expects($this->at(2))
+ ->method('getSubAdminsOfGroups')
+ ->with('bar')
+ ->will($this->returnValue([]));
+
+
$expectedResponse = new DataResponse(
array(
0 => array(
@@ -532,6 +569,12 @@ class UsersControllerTest extends \Test\TestCase {
->with('')
->will($this->returnValue([$user]));
+ $this->container['SubAdminFactory']
+ ->expects($this->once())
+ ->method('getSubAdminsOfGroups')
+ ->with('foo')
+ ->will($this->returnValue([]));
+
$expectedResponse = new DataResponse(
array(
0 => array(
@@ -591,6 +634,11 @@ class UsersControllerTest extends \Test\TestCase {
->method('createUser')
->will($this->onConsecutiveCalls($user));
+ $this->container['SubAdminFactory']
+ ->expects($this->once())
+ ->method('getSubAdminsOfGroups')
+ ->with('foo')
+ ->will($this->returnValue([]));
$expectedResponse = new DataResponse(
array(
@@ -613,11 +661,6 @@ class UsersControllerTest extends \Test\TestCase {
public function testCreateSuccessfulWithoutGroupSubAdmin() {
$this->container['IsAdmin'] = false;
- $this->container['SubAdminFactory']
- ->expects($this->once())
- ->method('getSubAdminsOfGroups')
- ->with('username')
- ->will($this->returnValue(['SubGroup1', 'SubGroup2']));
$user = $this->getMockBuilder('\OC\User\User')
->disableOriginalConstructor()->getMock();
$user
@@ -671,6 +714,13 @@ class UsersControllerTest extends \Test\TestCase {
->with($user)
->will($this->onConsecutiveCalls(['SubGroup1', 'SubGroup2']));
+ $this->container['SubAdminFactory']
+ ->method('getSubAdminsOfGroups')
+ ->will($this->returnValueMap([
+ ['username', ['SubGroup1', 'SubGroup2']],
+ ['foo', []],
+ ]));
+
$expectedResponse = new DataResponse(
array(
'name' => 'foo',
@@ -740,6 +790,12 @@ class UsersControllerTest extends \Test\TestCase {
->with($user)
->will($this->onConsecutiveCalls(array('NewGroup', 'ExistingGroup')));
+ $this->container['SubAdminFactory']
+ ->expects($this->once())
+ ->method('getSubAdminsOfGroups')
+ ->with('foo')
+ ->will($this->returnValue([]));
+
$expectedResponse = new DataResponse(
array(
'name' => 'foo',
@@ -761,11 +817,6 @@ class UsersControllerTest extends \Test\TestCase {
public function testCreateSuccessfulWithGroupSubAdmin() {
$this->container['IsAdmin'] = false;
- $this->container['SubAdminFactory']
- ->expects($this->once())
- ->method('getSubAdminsOfGroups')
- ->with('username')
- ->will($this->returnValue(['SubGroup1', 'SubGroup2']));
$user = $this->getMockBuilder('\OC\User\User')
->disableOriginalConstructor()->getMock();
$user
@@ -819,6 +870,13 @@ class UsersControllerTest extends \Test\TestCase {
->with($user)
->will($this->onConsecutiveCalls(['SubGroup1']));
+ $this->container['SubAdminFactory']
+ ->method('getSubAdminsOfGroups')
+ ->will($this->returnValueMap([
+ ['username', ['SubGroup1', 'SubGroup2']],
+ ['foo', []],
+ ]));
+
$expectedResponse = new DataResponse(
array(
'name' => 'foo',
@@ -1286,6 +1344,11 @@ class UsersControllerTest extends \Test\TestCase {
list($user, $expectedResult) = $this->mockUser();
+ $this->container['SubAdminFactory']
+ ->method('getSubAdminsOfGroups')
+ ->with($user->getUID())
+ ->will($this->returnValue([]));
+
$result = self::invokePrivate($this->container['UsersController'], 'formatUserForIndex', [$user]);
$this->assertEquals($expectedResult, $result);
}
@@ -1323,6 +1386,11 @@ class UsersControllerTest extends \Test\TestCase {
)
->will($this->returnValue('1'));
+ $this->container['SubAdminFactory']
+ ->method('getSubAdminsOfGroups')
+ ->with($user->getUID())
+ ->will($this->returnValue([]));
+
$result = self::invokePrivate($this->container['UsersController'], 'formatUserForIndex', [$user]);
$this->assertEquals($expectedResult, $result);
}
@@ -1341,6 +1409,11 @@ class UsersControllerTest extends \Test\TestCase {
$expectedResult['isRestoreDisabled'] = true;
+ $this->container['SubAdminFactory']
+ ->method('getSubAdminsOfGroups')
+ ->with($user->getUID())
+ ->will($this->returnValue([]));
+
$result = self::invokePrivate($this->container['UsersController'], 'formatUserForIndex', [$user]);
$this->assertEquals($expectedResult, $result);
}
@@ -1380,6 +1453,11 @@ class UsersControllerTest extends \Test\TestCase {
$expectedResult['isRestoreDisabled'] = true;
+ $this->container['SubAdminFactory']
+ ->method('getSubAdminsOfGroups')
+ ->with($user->getUID())
+ ->will($this->returnValue([]));
+
$result = self::invokePrivate($this->container['UsersController'], 'formatUserForIndex', [$user]);
$this->assertEquals($expectedResult, $result);
}
diff --git a/version.php b/version.php
index cc5a18b1cb3..008bb7dafc6 100644
--- a/version.php
+++ b/version.php
@@ -25,7 +25,7 @@
// We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version = array(9, 0, 0, 0);
+$OC_Version = array(9, 0, 0, 1);
// The human readable string
$OC_VersionString = '9.0 pre alpha';