aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.drone.yml18
-rw-r--r--README.md2
-rw-r--r--apps/comments/appinfo/app.php1
-rw-r--r--apps/comments/css/comments.css14
-rw-r--r--apps/comments/js/activitytabviewplugin.js59
-rw-r--r--apps/comments/lib/Activity/Extension.php19
-rw-r--r--apps/dav/appinfo/info.xml2
-rw-r--r--apps/dav/lib/Connector/Sabre/FilesPlugin.php3
-rw-r--r--apps/dav/lib/Files/FilesHome.php55
-rw-r--r--apps/dav/lib/Files/RootCollection.php13
-rw-r--r--apps/dav/lib/Server.php6
-rw-r--r--apps/dav/lib/Upload/UploadHome.php2
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php52
-rw-r--r--apps/files/js/filelist.js4
-rw-r--r--apps/files/js/filesummary.js6
-rw-r--r--apps/files/js/newfilemenu.js4
-rw-r--r--apps/files/l10n/ar.js2
-rw-r--r--apps/files/l10n/ar.json2
-rw-r--r--apps/files/l10n/ast.js4
-rw-r--r--apps/files/l10n/ast.json4
-rw-r--r--apps/files/l10n/cs_CZ.js2
-rw-r--r--apps/files/l10n/cs_CZ.json2
-rw-r--r--apps/files/l10n/da.js4
-rw-r--r--apps/files/l10n/da.json4
-rw-r--r--apps/files/l10n/de.js2
-rw-r--r--apps/files/l10n/de.json2
-rw-r--r--apps/files/l10n/de_DE.js2
-rw-r--r--apps/files/l10n/de_DE.json2
-rw-r--r--apps/files/l10n/el.js2
-rw-r--r--apps/files/l10n/el.json2
-rw-r--r--apps/files/l10n/en_GB.js4
-rw-r--r--apps/files/l10n/en_GB.json4
-rw-r--r--apps/files/l10n/eo.js4
-rw-r--r--apps/files/l10n/eo.json4
-rw-r--r--apps/files/l10n/es.js2
-rw-r--r--apps/files/l10n/es.json2
-rw-r--r--apps/files/l10n/et_EE.js4
-rw-r--r--apps/files/l10n/et_EE.json4
-rw-r--r--apps/files/l10n/fi_FI.js2
-rw-r--r--apps/files/l10n/fi_FI.json2
-rw-r--r--apps/files/l10n/fr.js2
-rw-r--r--apps/files/l10n/fr.json2
-rw-r--r--apps/files/l10n/he.js4
-rw-r--r--apps/files/l10n/he.json4
-rw-r--r--apps/files/l10n/hu_HU.js2
-rw-r--r--apps/files/l10n/hu_HU.json2
-rw-r--r--apps/files/l10n/id.js2
-rw-r--r--apps/files/l10n/id.json2
-rw-r--r--apps/files/l10n/is.js2
-rw-r--r--apps/files/l10n/is.json2
-rw-r--r--apps/files/l10n/it.js2
-rw-r--r--apps/files/l10n/it.json2
-rw-r--r--apps/files/l10n/ja.js2
-rw-r--r--apps/files/l10n/ja.json2
-rw-r--r--apps/files/l10n/ko.js2
-rw-r--r--apps/files/l10n/ko.json2
-rw-r--r--apps/files/l10n/lt_LT.js4
-rw-r--r--apps/files/l10n/lt_LT.json4
-rw-r--r--apps/files/l10n/lv.js2
-rw-r--r--apps/files/l10n/lv.json2
-rw-r--r--apps/files/l10n/nb_NO.js2
-rw-r--r--apps/files/l10n/nb_NO.json2
-rw-r--r--apps/files/l10n/nl.js2
-rw-r--r--apps/files/l10n/nl.json2
-rw-r--r--apps/files/l10n/pl.js2
-rw-r--r--apps/files/l10n/pl.json2
-rw-r--r--apps/files/l10n/pt_BR.js2
-rw-r--r--apps/files/l10n/pt_BR.json2
-rw-r--r--apps/files/l10n/pt_PT.js4
-rw-r--r--apps/files/l10n/pt_PT.json4
-rw-r--r--apps/files/l10n/ro.js4
-rw-r--r--apps/files/l10n/ro.json4
-rw-r--r--apps/files/l10n/ru.js2
-rw-r--r--apps/files/l10n/ru.json2
-rw-r--r--apps/files/l10n/sl.js2
-rw-r--r--apps/files/l10n/sl.json2
-rw-r--r--apps/files/l10n/sq.js4
-rw-r--r--apps/files/l10n/sq.json4
-rw-r--r--apps/files/l10n/sr.js4
-rw-r--r--apps/files/l10n/sr.json4
-rw-r--r--apps/files/l10n/sv.js2
-rw-r--r--apps/files/l10n/sv.json2
-rw-r--r--apps/files/l10n/th_TH.js4
-rw-r--r--apps/files/l10n/th_TH.json4
-rw-r--r--apps/files/l10n/tr.js4
-rw-r--r--apps/files/l10n/tr.json4
-rw-r--r--apps/files/l10n/zh_CN.js4
-rw-r--r--apps/files/l10n/zh_CN.json4
-rw-r--r--apps/files/l10n/zh_TW.js2
-rw-r--r--apps/files/l10n/zh_TW.json2
-rw-r--r--apps/files/lib/Activity.php29
-rw-r--r--apps/files_sharing/css/sharetabview.css10
-rw-r--r--apps/files_sharing/lib/Activity.php1
-rw-r--r--apps/files_sharing/tests/EtagPropagationTest.php2
-rw-r--r--apps/files_sharing/tests/GroupEtagPropagationTest.php2
-rw-r--r--apps/files_sharing/tests/SharedMountTest.php2
-rw-r--r--apps/systemtags/lib/Activity/Extension.php2
-rw-r--r--apps/twofactor_backupcodes/appinfo/info.xml4
-rw-r--r--apps/twofactor_backupcodes/lib/Controller/SettingsController.php4
-rw-r--r--apps/twofactor_backupcodes/lib/Db/BackupCode.php2
-rw-r--r--apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php3
-rw-r--r--apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php4
-rw-r--r--apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php6
-rw-r--r--apps/twofactor_backupcodes/tests/Integration/Db/BackupCodeMapperTest.php6
-rw-r--r--apps/twofactor_backupcodes/tests/Integration/Service/BackupCodeStorageTest.php4
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Controller/SettingsControllerTest.php6
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php6
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php8
-rw-r--r--apps/updatenotification/l10n/cs_CZ.js4
-rw-r--r--apps/updatenotification/l10n/cs_CZ.json4
-rw-r--r--apps/updatenotification/l10n/de.js2
-rw-r--r--apps/updatenotification/l10n/de.json2
-rw-r--r--apps/updatenotification/l10n/de_DE.js2
-rw-r--r--apps/updatenotification/l10n/de_DE.json2
-rw-r--r--apps/updatenotification/l10n/fr.js2
-rw-r--r--apps/updatenotification/l10n/fr.json2
-rw-r--r--apps/updatenotification/l10n/hu_HU.js2
-rw-r--r--apps/updatenotification/l10n/hu_HU.json2
-rw-r--r--apps/updatenotification/l10n/is.js2
-rw-r--r--apps/updatenotification/l10n/is.json2
-rw-r--r--apps/updatenotification/l10n/it.js2
-rw-r--r--apps/updatenotification/l10n/it.json2
-rw-r--r--apps/updatenotification/l10n/nb_NO.js2
-rw-r--r--apps/updatenotification/l10n/nb_NO.json2
-rw-r--r--apps/updatenotification/l10n/nl.js2
-rw-r--r--apps/updatenotification/l10n/nl.json2
-rw-r--r--apps/updatenotification/l10n/ru.js2
-rw-r--r--apps/updatenotification/l10n/ru.json2
-rw-r--r--apps/updatenotification/lib/Notification/BackgroundJob.php14
-rw-r--r--apps/updatenotification/lib/Notification/Notifier.php8
-rw-r--r--apps/updatenotification/tests/Notification/BackgroundJobTest.php26
-rw-r--r--apps/user_ldap/lib/User/User.php10
-rwxr-xr-xautotest.sh7
-rw-r--r--build/integration/features/bootstrap/BasicStructure.php7
-rw-r--r--build/integration/features/bootstrap/WebDav.php36
-rw-r--r--build/integration/features/favorites.feature38
-rw-r--r--build/integration/features/webdav-related.feature22
-rw-r--r--console.php2
-rw-r--r--core/css/icons.css7
-rw-r--r--core/css/share.css13
-rw-r--r--core/css/styles.css5
-rw-r--r--core/img/actions/star-dark.svg1
-rw-r--r--core/img/places/files-dark.svg1
-rw-r--r--core/js/sharedialogshareelistview.js158
-rw-r--r--core/js/tests/specs/sharedialogshareelistview.js5
-rw-r--r--core/l10n/cs_CZ.js3
-rw-r--r--core/l10n/cs_CZ.json3
-rw-r--r--core/l10n/da.js2
-rw-r--r--core/l10n/da.json2
-rw-r--r--core/l10n/de.js3
-rw-r--r--core/l10n/de.json3
-rw-r--r--core/l10n/de_DE.js3
-rw-r--r--core/l10n/de_DE.json3
-rw-r--r--core/l10n/el.js2
-rw-r--r--core/l10n/el.json2
-rw-r--r--core/l10n/en_GB.js2
-rw-r--r--core/l10n/en_GB.json2
-rw-r--r--core/l10n/es.js2
-rw-r--r--core/l10n/es.json2
-rw-r--r--core/l10n/fi_FI.js2
-rw-r--r--core/l10n/fi_FI.json2
-rw-r--r--core/l10n/fr.js2
-rw-r--r--core/l10n/fr.json2
-rw-r--r--core/l10n/he.js2
-rw-r--r--core/l10n/he.json2
-rw-r--r--core/l10n/hu_HU.js2
-rw-r--r--core/l10n/hu_HU.json2
-rw-r--r--core/l10n/id.js2
-rw-r--r--core/l10n/id.json2
-rw-r--r--core/l10n/is.js2
-rw-r--r--core/l10n/is.json2
-rw-r--r--core/l10n/it.js3
-rw-r--r--core/l10n/it.json3
-rw-r--r--core/l10n/ja.js2
-rw-r--r--core/l10n/ja.json2
-rw-r--r--core/l10n/ko.js2
-rw-r--r--core/l10n/ko.json2
-rw-r--r--core/l10n/nb_NO.js2
-rw-r--r--core/l10n/nb_NO.json2
-rw-r--r--core/l10n/nl.js3
-rw-r--r--core/l10n/nl.json3
-rw-r--r--core/l10n/pl.js2
-rw-r--r--core/l10n/pl.json2
-rw-r--r--core/l10n/pt_BR.js2
-rw-r--r--core/l10n/pt_BR.json2
-rw-r--r--core/l10n/pt_PT.js2
-rw-r--r--core/l10n/pt_PT.json2
-rw-r--r--core/l10n/ro.js2
-rw-r--r--core/l10n/ro.json2
-rw-r--r--core/l10n/ru.js2
-rw-r--r--core/l10n/ru.json2
-rw-r--r--core/l10n/sk_SK.js4
-rw-r--r--core/l10n/sk_SK.json4
-rw-r--r--core/l10n/sl.js2
-rw-r--r--core/l10n/sl.json2
-rw-r--r--core/l10n/sq.js2
-rw-r--r--core/l10n/sq.json2
-rw-r--r--core/l10n/sv.js2
-rw-r--r--core/l10n/sv.json2
-rw-r--r--core/l10n/th_TH.js4
-rw-r--r--core/l10n/th_TH.json4
-rw-r--r--core/l10n/tr.js2
-rw-r--r--core/l10n/tr.json2
-rw-r--r--core/l10n/uk.js2
-rw-r--r--core/l10n/uk.json2
-rw-r--r--core/l10n/zh_CN.js2
-rw-r--r--core/l10n/zh_CN.json2
-rw-r--r--core/l10n/zh_TW.js2
-rw-r--r--core/l10n/zh_TW.json2
-rw-r--r--cron.php2
-rw-r--r--index.php4
-rw-r--r--lib/composer/composer/autoload_classmap.php10
-rw-r--r--lib/composer/composer/autoload_static.php10
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php5
-rw-r--r--lib/private/Avatar.php23
-rw-r--r--lib/private/AvatarManager.php29
-rw-r--r--lib/private/Files/AppData/AppData.php131
-rw-r--r--lib/private/Files/AppData/Factory.php50
-rw-r--r--lib/private/Files/SimpleFS/SimpleFile.php115
-rw-r--r--lib/private/Files/SimpleFS/SimpleFolder.php87
-rw-r--r--lib/private/Log/File.php6
-rw-r--r--lib/private/Repair.php5
-rw-r--r--lib/private/Repair/NC11/MoveAvatarBackgroundJob.php104
-rw-r--r--lib/private/Repair/NC11/MoveAvatars.php64
-rw-r--r--lib/private/Server.php18
-rw-r--r--lib/private/legacy/app.php74
-rw-r--r--lib/private/legacy/util.php12
-rw-r--r--lib/public/AppFramework/Http/FileDisplayResponse.php7
-rw-r--r--lib/public/Files/IAppData.php36
-rw-r--r--lib/public/Files/SimpleFS/ISimpleFile.php100
-rw-r--r--lib/public/Files/SimpleFS/ISimpleFolder.php88
-rw-r--r--lib/public/Files/SimpleFS/ISimpleRoot.php67
-rw-r--r--lib/public/IServerContainer.php1
-rw-r--r--ocs-provider/index.php2
-rw-r--r--ocs/providers.php2
-rw-r--r--ocs/v1.php2
-rw-r--r--ocs/v2.php2
-rw-r--r--public.php2
-rw-r--r--remote.php2
-rw-r--r--resources/config/ca-bundle.crt311
-rw-r--r--settings/Controller/ChangePasswordController.php28
-rw-r--r--settings/css/settings.css4
-rw-r--r--settings/js/apps.js7
-rw-r--r--settings/js/personal.js20
-rw-r--r--settings/l10n/hu_HU.js2
-rw-r--r--settings/l10n/hu_HU.json2
-rw-r--r--settings/l10n/ko.js2
-rw-r--r--settings/l10n/ko.json2
-rw-r--r--settings/templates/personal.php2
-rw-r--r--status.php2
-rw-r--r--tests/Core/Controller/ChangePasswordControllerTest.php25
-rw-r--r--tests/lib/Authentication/TwoFactorAuth/ManagerTest.php5
-rw-r--r--tests/lib/AvatarManagerTest.php74
-rw-r--r--tests/lib/AvatarTest.php22
-rw-r--r--tests/lib/Files/AppData/AppDataTest.php121
-rw-r--r--tests/lib/Files/AppData/FactoryTest.php55
-rw-r--r--tests/lib/Files/SimpleFS/SimpleFileTest.php104
-rw-r--r--tests/lib/Files/SimpleFS/SimpleFolderTest.php138
-rw-r--r--tests/lib/TestCase.php6
-rw-r--r--tests/phpunit-autotest.xml5
-rw-r--r--version.php2
261 files changed, 2482 insertions, 632 deletions
diff --git a/.drone.yml b/.drone.yml
index a3c3870dcdd..92dde90bf6d 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -301,7 +301,7 @@ pipeline:
when:
matrix:
TESTS: integration-sharees-features
- codecov:
+ nodb-codecov:
image: nextcloudci/php7.0:php7.0-2
commands:
- TEST_SELECTION=NODB ./autotest.sh sqlite
@@ -310,12 +310,22 @@ pipeline:
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
when:
matrix:
- TESTS: codecov
-
+ TESTS: nodb-codecov
+ db-codecov:
+ image: nextcloudci/php7.0:php7.0-2
+ commands:
+ - TEST_SELECTION=QUICKDB ./autotest.sh sqlite
+ - wget https://codecov.io/bash -O codecov.sh
+ - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
+ - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
+ when:
+ matrix:
+ TESTS: db-codecov
matrix:
include:
- TESTS: signed-off-check
- - TESTS: codecov
+ - TESTS: nodb-codecov
+ - TESTS: db-codecov
- TESTS: integration-capabilities_features
- TESTS: integration-federation_features
- TESTS: integration-auth
diff --git a/README.md b/README.md
index 2c0f11b43bd..cd6122894af 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# Nextcloud
-[![Build Status](https://drone.weasel.rocks/api/badges/nextcloud/server/status.svg)](https://drone.weasel.rocks/nextcloud/server)
+[![Build Status](https://drone.nextcloud.com/api/badges/nextcloud/server/status.svg)](https://drone.nextcloud.com/nextcloud/server)
[![irc](https://img.shields.io/badge/IRC-%23nextcloud%20on%20freenode-orange.svg)](https://webchat.freenode.net/?channels=nextcloud)
[![irc](https://img.shields.io/badge/IRC-%23nextcloud--dev%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=nextcloud-dev)
diff --git a/apps/comments/appinfo/app.php b/apps/comments/appinfo/app.php
index 00085cf9148..df41bdfa32d 100644
--- a/apps/comments/appinfo/app.php
+++ b/apps/comments/appinfo/app.php
@@ -32,6 +32,7 @@ $eventDispatcher->addListener(
\OCP\Util::addScript('comments', 'commentsummarymodel');
\OCP\Util::addScript('comments', 'commentstabview');
\OCP\Util::addScript('comments', 'filesplugin');
+ \OCP\Util::addScript('comments', 'activitytabviewplugin');
\OCP\Util::addStyle('comments', 'comments');
}
);
diff --git a/apps/comments/css/comments.css b/apps/comments/css/comments.css
index 7f64f1cf7db..103564c5faf 100644
--- a/apps/comments/css/comments.css
+++ b/apps/comments/css/comments.css
@@ -59,35 +59,39 @@
line-height: 32px;
}
+#activityTabView li.comment.collapsed .activitymessage,
#commentsTabView .comment.collapsed .message {
white-space: pre-wrap;
}
+#activityTabView li.comment.collapsed .activitymessage,
#commentsTabView .comment.collapsed .message {
max-height: 70px;
overflow: hidden;
}
+#activityTabView li.comment .message-overlay,
#commentsTabView .comment .message-overlay {
display: none;
}
+#activityTabView li.comment.collapsed .message-overlay,
#commentsTabView .comment.collapsed .message-overlay {
display: block;
- position: absolute;
+ position: absolute;
z-index: 2;
- height: 50px;
- pointer-events: none;
+ height: 50px;
+ pointer-events: none;
left: 0;
right: 0;
- bottom: 0;
+ bottom: 0;
background: -moz-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
background: -webkit-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
background: -o-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
background: -ms-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF');
- background-repeat: no-repeat;
+ background-repeat: no-repeat;
}
#commentsTabView .authorRow>div {
diff --git a/apps/comments/js/activitytabviewplugin.js b/apps/comments/js/activitytabviewplugin.js
new file mode 100644
index 00000000000..ca3253bd137
--- /dev/null
+++ b/apps/comments/js/activitytabviewplugin.js
@@ -0,0 +1,59 @@
+/*
+ * @author Joas Schilling <coding@schilljs.com>
+ * Copyright (c) 2016
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ */
+
+(function() {
+ OCA.Comments.ActivityTabViewPlugin = {
+
+ /**
+ * Prepare activity for display
+ *
+ * @param {OCA.Activity.ActivityModel} model for this activity
+ * @param {jQuery} $el jQuery handle for this activity
+ * @param {string} view The view that displayes this activity
+ */
+ prepareModelForDisplay: function (model, $el, view) {
+ if (model.get('app') !== 'comments' || model.get('type') !== 'comments') {
+ return;
+ }
+
+ if (view === 'ActivityTabView') {
+ $el.addClass('comment');
+ if (this._isLong(model.get('message_prepared'))) {
+ $el.addClass('collapsed');
+ var $overlay = $('<div>').addClass('message-overlay');
+ $el.find('.activitymessage').after($overlay);
+ $el.on('click', this._onClickCollapsedComment);
+ }
+ }
+ },
+
+ /*
+ * Copy of CommentsTabView._onClickComment()
+ */
+ _onClickCollapsedComment: function(ev) {
+ var $row = $(ev.target);
+ if (!$row.is('.comment')) {
+ $row = $row.closest('.comment');
+ }
+ $row.removeClass('collapsed');
+ },
+
+ /*
+ * Copy of CommentsTabView._isLong()
+ */
+ _isLong: function(message) {
+ return message.length > 250 || (message.match(/\n/g) || []).length > 1;
+ }
+ };
+
+
+})();
+
+OC.Plugins.register('OCA.Activity.RenderingPlugins', OCA.Comments.ActivityTabViewPlugin);
diff --git a/apps/comments/lib/Activity/Extension.php b/apps/comments/lib/Activity/Extension.php
index 0a7503c1915..6bf7bc9ac0b 100644
--- a/apps/comments/lib/Activity/Extension.php
+++ b/apps/comments/lib/Activity/Extension.php
@@ -159,7 +159,7 @@ class Extension implements IExtension {
}
return (string) $l->t('%1$s commented', $params);
case self::ADD_COMMENT_MESSAGE:
- return $this->convertParameterToComment($params[0], 120);
+ return $this->convertParameterToComment($params[0]);
}
return false;
@@ -196,7 +196,6 @@ class Extension implements IExtension {
try {
return strip_tags($user) === $this->activityManager->getCurrentUserId();
} catch (\UnexpectedValueException $e) {
- // FIXME this is awkward, but we have no access to the current user in emails
return false;
}
}
@@ -247,14 +246,15 @@ class Extension implements IExtension {
public function getNavigation() {
$l = $this->getL10N();
return [
- 'apps' => [],
- 'top' => [
+ 'apps' => [
self::APP_NAME => [
'id' => self::APP_NAME,
+ 'icon' => 'icon-comment',
'name' => (string) $l->t('Comments'),
'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::APP_NAME]),
],
],
+ 'top' => [],
];
}
@@ -300,21 +300,12 @@ class Extension implements IExtension {
* @param string $parameter
* @return string
*/
- protected function convertParameterToComment($parameter, $maxLength = 0) {
+ protected function convertParameterToComment($parameter) {
if (preg_match('/^\<parameter\>(\d*)\<\/parameter\>$/', $parameter, $matches)) {
try {
$comment = $this->commentsManager->get((int) $matches[1]);
$message = $comment->getMessage();
$message = str_replace("\n", '<br />', str_replace(['<', '>'], ['&lt;', '&gt;'], $message));
-
- if ($maxLength && isset($message[$maxLength + 20])) {
- $findSpace = strpos($message, ' ', $maxLength);
- if ($findSpace !== false && $findSpace < $maxLength + 20) {
- return substr($message, 0, $findSpace) . '…';
- }
- return substr($message, 0, $maxLength + 20) . '…';
- }
-
return $message;
} catch (NotFoundException $e) {
return '';
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index 9357ff9bb9e..c9cd6798018 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -18,7 +18,7 @@
<owncloud min-version="9.2" max-version="9.2" />
</dependencies>
<background-jobs>
- <job>OCA\DAV\CardDAV\Sync\SyncJob</job>
+ <job>OCA\DAV\CardDAV\SyncJob</job>
</background-jobs>
<repair-steps>
<post-migration>
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
index dd5f958ed4c..aa5bacea5bb 100644
--- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
@@ -329,8 +329,7 @@ class FilesPlugin extends ServerPlugin {
});
}
- if ($node instanceof \OCA\DAV\Connector\Sabre\Node
- || $node instanceof \OCA\DAV\Files\FilesHome) {
+ if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
$propFind->handle(self::DATA_FINGERPRINT_PROPERTYNAME, function() use ($node) {
return $this->config->getSystemValue('data-fingerprint', '');
});
diff --git a/apps/dav/lib/Files/FilesHome.php b/apps/dav/lib/Files/FilesHome.php
index a4fb7d285a6..9c8f9835d7c 100644
--- a/apps/dav/lib/Files/FilesHome.php
+++ b/apps/dav/lib/Files/FilesHome.php
@@ -23,11 +23,9 @@ namespace OCA\DAV\Files;
use OCA\DAV\Connector\Sabre\Directory;
use Sabre\DAV\Exception\Forbidden;
-use Sabre\DAV\ICollection;
-use Sabre\DAV\SimpleCollection;
use Sabre\HTTP\URLUtil;
-class FilesHome implements ICollection {
+class FilesHome extends Directory {
/**
* @var array
@@ -41,30 +39,13 @@ class FilesHome implements ICollection {
*/
public function __construct($principalInfo) {
$this->principalInfo = $principalInfo;
- }
-
- function createFile($name, $data = null) {
- return $this->impl()->createFile($name, $data);
- }
-
- function createDirectory($name) {
- $this->impl()->createDirectory($name);
- }
-
- function getChild($name) {
- return $this->impl()->getChild($name);
- }
-
- function getChildren() {
- return $this->impl()->getChildren();
- }
-
- function childExists($name) {
- return $this->impl()->childExists($name);
+ $view = \OC\Files\Filesystem::getView();
+ $rootInfo = $view->getFileInfo('');
+ parent::__construct($view, $rootInfo);
}
function delete() {
- $this->impl()->delete();
+ throw new Forbidden('Permission denied to delete home folder');
}
function getName() {
@@ -75,30 +56,4 @@ class FilesHome implements ICollection {
function setName($name) {
throw new Forbidden('Permission denied to rename this folder');
}
-
- /**
- * Returns the last modification time, as a unix timestamp
- *
- * @return int
- */
- function getLastModified() {
- return $this->impl()->getLastModified();
- }
-
- /**
- * @return Directory
- */
- private function impl() {
- //
- // TODO: we need to mount filesystem of the give user
- //
- $user = \OC::$server->getUserSession()->getUser();
- if ($this->getName() !== $user->getUID()) {
- return new SimpleCollection($this->getName());
- }
- $view = \OC\Files\Filesystem::getView();
- $rootInfo = $view->getFileInfo('');
- $impl = new Directory($view, $rootInfo);
- return $impl;
- }
}
diff --git a/apps/dav/lib/Files/RootCollection.php b/apps/dav/lib/Files/RootCollection.php
index 10459aa8ada..57802d19573 100644
--- a/apps/dav/lib/Files/RootCollection.php
+++ b/apps/dav/lib/Files/RootCollection.php
@@ -22,7 +22,8 @@
namespace OCA\DAV\Files;
use Sabre\DAVACL\AbstractPrincipalCollection;
-use Sabre\DAVACL\IPrincipal;
+use Sabre\HTTP\URLUtil;
+use Sabre\DAV\SimpleCollection;
class RootCollection extends AbstractPrincipalCollection {
@@ -34,9 +35,17 @@ class RootCollection extends AbstractPrincipalCollection {
* supplied by the authentication backend.
*
* @param array $principalInfo
- * @return IPrincipal
+ * @return INode
*/
function getChildForPrincipal(array $principalInfo) {
+ list(,$name) = URLUtil::splitPath($principalInfo['uri']);
+ $user = \OC::$server->getUserSession()->getUser();
+ if ($name !== $user->getUID()) {
+ // a user is only allowed to see their own home contents, so in case another collection
+ // is accessed, we return a simple empty collection for now
+ // in the future this could be considered to be used for accessing shared files
+ return new SimpleCollection($name);
+ }
return new FilesHome($principalInfo);
}
diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php
index c49df197a89..a06d4c570f6 100644
--- a/apps/dav/lib/Server.php
+++ b/apps/dav/lib/Server.php
@@ -47,6 +47,7 @@ use OCP\IRequest;
use OCP\SabrePluginEvent;
use Sabre\CardDAV\VCFExportPlugin;
use Sabre\DAV\Auth\Plugin;
+use OCA\DAV\Connector\Sabre\TagsPlugin;
class Server {
@@ -190,6 +191,11 @@ class Server {
$this->server->addPlugin(
new QuotaPlugin($view)
);
+ $this->server->addPlugin(
+ new TagsPlugin(
+ $this->server->tree, \OC::$server->getTagManager()
+ )
+ );
}
});
}
diff --git a/apps/dav/lib/Upload/UploadHome.php b/apps/dav/lib/Upload/UploadHome.php
index 296eb2df3a9..df458e8bc4b 100644
--- a/apps/dav/lib/Upload/UploadHome.php
+++ b/apps/dav/lib/Upload/UploadHome.php
@@ -30,7 +30,7 @@ use Sabre\DAV\ICollection;
class UploadHome implements ICollection {
/**
- * FilesHome constructor.
+ * UploadHome constructor.
*
* @param array $principalInfo
*/
diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
index e2d63868af0..282a5b2f626 100644
--- a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
@@ -217,58 +217,6 @@ class FilesPluginTest extends TestCase {
$this->assertEquals([self::SIZE_PROPERTYNAME], $propFind->get404Properties());
}
- public function testGetPropertiesForFileHome() {
- /** @var \OCA\DAV\Files\FilesHome | \PHPUnit_Framework_MockObject_MockObject $node */
- $node = $this->getMockBuilder('\OCA\DAV\Files\FilesHome')
- ->disableOriginalConstructor()
- ->getMock();
-
- $propFind = new PropFind(
- '/dummyPath',
- array(
- self::GETETAG_PROPERTYNAME,
- self::FILEID_PROPERTYNAME,
- self::INTERNAL_FILEID_PROPERTYNAME,
- self::SIZE_PROPERTYNAME,
- self::PERMISSIONS_PROPERTYNAME,
- self::DOWNLOADURL_PROPERTYNAME,
- self::OWNER_ID_PROPERTYNAME,
- self::OWNER_DISPLAY_NAME_PROPERTYNAME,
- self::DATA_FINGERPRINT_PROPERTYNAME,
- ),
- 0
- );
-
- $user = $this->getMockBuilder('\OC\User\User')
- ->disableOriginalConstructor()->getMock();
- $user->expects($this->never())->method('getUID');
- $user->expects($this->never())->method('getDisplayName');
-
- $this->plugin->handleGetProperties(
- $propFind,
- $node
- );
-
- $this->assertEquals(null, $propFind->get(self::GETETAG_PROPERTYNAME));
- $this->assertEquals(null, $propFind->get(self::FILEID_PROPERTYNAME));
- $this->assertEquals(null, $propFind->get(self::INTERNAL_FILEID_PROPERTYNAME));
- $this->assertEquals(null, $propFind->get(self::SIZE_PROPERTYNAME));
- $this->assertEquals(null, $propFind->get(self::PERMISSIONS_PROPERTYNAME));
- $this->assertEquals(null, $propFind->get(self::DOWNLOADURL_PROPERTYNAME));
- $this->assertEquals(null, $propFind->get(self::OWNER_ID_PROPERTYNAME));
- $this->assertEquals(null, $propFind->get(self::OWNER_DISPLAY_NAME_PROPERTYNAME));
- $this->assertEquals(['{DAV:}getetag',
- '{http://owncloud.org/ns}id',
- '{http://owncloud.org/ns}fileid',
- '{http://owncloud.org/ns}size',
- '{http://owncloud.org/ns}permissions',
- '{http://owncloud.org/ns}downloadURL',
- '{http://owncloud.org/ns}owner-id',
- '{http://owncloud.org/ns}owner-display-name'
- ], $propFind->get404Properties());
- $this->assertEquals('my_fingerprint', $propFind->get(self::DATA_FINGERPRINT_PROPERTYNAME));
- }
-
public function testGetPropertiesStorageNotAvailable() {
/** @var \OCA\DAV\Connector\Sabre\File | \PHPUnit_Framework_MockObject_MockObject $node */
$node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File');
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 0e842cc7a74..98d0f132ad6 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -1941,7 +1941,9 @@
// Files.isFileNameValid(filename) throws an exception itself
OCA.Files.Files.isFileNameValid(filename);
if (self.inList(filename)) {
- throw t('files', '{newName} already exists', {newName: filename});
+ throw t('files', '{newName} already exists', {newName: filename}, undefined, {
+ escape: false
+ });
}
}
return true;
diff --git a/apps/files/js/filesummary.js b/apps/files/js/filesummary.js
index 519718cfc82..7545654ec44 100644
--- a/apps/files/js/filesummary.js
+++ b/apps/files/js/filesummary.js
@@ -23,7 +23,7 @@
var INFO_TEMPLATE =
'<span class="info">' +
'<span class="dirinfo"></span>' +
- '<span class="connector"> and </span>' +
+ '<span class="connector">{{connectorLabel}}</span>' +
'<span class="fileinfo"></span>' +
'<span class="hiddeninfo"></span>' +
'<span class="filter"></span>' +
@@ -203,7 +203,9 @@
if (!this._infoTemplateCompiled) {
this._infoTemplateCompiled = Handlebars.compile(INFO_TEMPLATE);
}
- return this._infoTemplateCompiled(data);
+ return this._infoTemplateCompiled(_.extend({
+ connectorLabel: t('files', '{dirs} and {files}', {dirs: '', files: ''})
+ }, data));
},
/**
diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js
index f6cf87a55bf..75c4cdcc0ba 100644
--- a/apps/files/js/newfilemenu.js
+++ b/apps/files/js/newfilemenu.js
@@ -146,7 +146,9 @@
if (!Files.isFileNameValid(filename)) {
// Files.isFileNameValid(filename) throws an exception itself
} else if (self.fileList.inList(filename)) {
- throw t('files', '{newname} already exists', {newname: filename});
+ throw t('files', '{newName} already exists', {newName: filename}, undefined, {
+ escape: false
+ });
} else {
return true;
}
diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js
index e51b7051a26..69d4768d5a7 100644
--- a/apps/files/l10n/ar.js
+++ b/apps/files/l10n/ar.js
@@ -89,7 +89,6 @@ OC.L10N.register(
"Favorite" : "المفضلة",
"Folder" : "مجلد",
"New folder" : "مجلد جديد",
- "{newname} already exists" : "{newname} موجود مسبقاً",
"Upload" : "رفع",
"An error occurred while trying to update the tags" : "حدث خطأ اثناء محاولة تحديث tags",
"A new file or folder has been <strong>created</strong>" : "تم <strong> إنشاء</strong> ملف جديد أو مجلد ",
@@ -125,6 +124,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا ",
"Text file" : "ملف نصي",
"New text file.txt" : "ملف نصي جديد fille.txt",
+ "{newname} already exists" : "{newname} موجود مسبقاً",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "استخدم هذا الرابط <a href=\"%s\" target=\"_blank\">للوصول الى ملفاتك عبر WebDAV</a>",
"Cancel upload" : "إلغاء الرفع"
},
diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json
index 4940be29188..ec19614a801 100644
--- a/apps/files/l10n/ar.json
+++ b/apps/files/l10n/ar.json
@@ -87,7 +87,6 @@
"Favorite" : "المفضلة",
"Folder" : "مجلد",
"New folder" : "مجلد جديد",
- "{newname} already exists" : "{newname} موجود مسبقاً",
"Upload" : "رفع",
"An error occurred while trying to update the tags" : "حدث خطأ اثناء محاولة تحديث tags",
"A new file or folder has been <strong>created</strong>" : "تم <strong> إنشاء</strong> ملف جديد أو مجلد ",
@@ -123,6 +122,7 @@
"Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا ",
"Text file" : "ملف نصي",
"New text file.txt" : "ملف نصي جديد fille.txt",
+ "{newname} already exists" : "{newname} موجود مسبقاً",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "استخدم هذا الرابط <a href=\"%s\" target=\"_blank\">للوصول الى ملفاتك عبر WebDAV</a>",
"Cancel upload" : "إلغاء الرفع"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js
index 092610b7140..4a228519647 100644
--- a/apps/files/l10n/ast.js
+++ b/apps/files/l10n/ast.js
@@ -90,7 +90,6 @@ OC.L10N.register(
"Local link" : "Enllaz llocal",
"Folder" : "Carpeta",
"New folder" : "Nueva carpeta",
- "{newname} already exists" : "{newname} yá existe",
"Upload" : "Xubir",
"An error occurred while trying to update the tags" : "Hebo un fallu mientres s'intentaba actualizar les etiquetes",
"A new file or folder has been <strong>created</strong>" : "<strong>Creóse</strong> un ficheru o carpeta nuevos",
@@ -130,6 +129,7 @@ OC.L10N.register(
"No favorites" : "Nengún favoritu",
"Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí",
"Text file" : "Ficheru de testu",
- "New text file.txt" : "Nuevu testu ficheru.txt"
+ "New text file.txt" : "Nuevu testu ficheru.txt",
+ "{newname} already exists" : "{newname} yá existe"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json
index 7631a9149f2..507b12a3167 100644
--- a/apps/files/l10n/ast.json
+++ b/apps/files/l10n/ast.json
@@ -88,7 +88,6 @@
"Local link" : "Enllaz llocal",
"Folder" : "Carpeta",
"New folder" : "Nueva carpeta",
- "{newname} already exists" : "{newname} yá existe",
"Upload" : "Xubir",
"An error occurred while trying to update the tags" : "Hebo un fallu mientres s'intentaba actualizar les etiquetes",
"A new file or folder has been <strong>created</strong>" : "<strong>Creóse</strong> un ficheru o carpeta nuevos",
@@ -128,6 +127,7 @@
"No favorites" : "Nengún favoritu",
"Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí",
"Text file" : "Ficheru de testu",
- "New text file.txt" : "Nuevu testu ficheru.txt"
+ "New text file.txt" : "Nuevu testu ficheru.txt",
+ "{newname} already exists" : "{newname} yá existe"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js
index 766bd4b6177..70da26471c8 100644
--- a/apps/files/l10n/cs_CZ.js
+++ b/apps/files/l10n/cs_CZ.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Místní odkaz",
"Folder" : "Adresář",
"New folder" : "Nový adresář",
- "{newname} already exists" : "{newname} již existuje",
"Upload" : "Odeslat",
"An error occurred while trying to update the tags" : "Při pokusu o úpravu tagů nastala chyba",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo adresář",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Zde budou zobrazeny soubory a adresáře označené jako oblíbené",
"Text file" : "Textový soubor",
"New text file.txt" : "Nový textový soubor.txt",
+ "{newname} already exists" : "{newname} již existuje",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použijte tuto adresu pro <a href=\"%s\" target=\"_blank\">přístup ke svým Souborům přes WebDAV</a>",
"Cancel upload" : "Ukončit nahrávání"
},
diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json
index d5e7a34549e..71d3d67690f 100644
--- a/apps/files/l10n/cs_CZ.json
+++ b/apps/files/l10n/cs_CZ.json
@@ -91,7 +91,6 @@
"Local link" : "Místní odkaz",
"Folder" : "Adresář",
"New folder" : "Nový adresář",
- "{newname} already exists" : "{newname} již existuje",
"Upload" : "Odeslat",
"An error occurred while trying to update the tags" : "Při pokusu o úpravu tagů nastala chyba",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo adresář",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Zde budou zobrazeny soubory a adresáře označené jako oblíbené",
"Text file" : "Textový soubor",
"New text file.txt" : "Nový textový soubor.txt",
+ "{newname} already exists" : "{newname} již existuje",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použijte tuto adresu pro <a href=\"%s\" target=\"_blank\">přístup ke svým Souborům přes WebDAV</a>",
"Cancel upload" : "Ukončit nahrávání"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index 0829fbc53ee..e986bfd8800 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -83,7 +83,6 @@ OC.L10N.register(
"Local link" : "Lokalt link",
"Folder" : "Mappe",
"New folder" : "Ny Mappe",
- "{newname} already exists" : "{newname} eksistere allerede",
"Upload" : "Upload",
"An error occurred while trying to update the tags" : "Der opstod en fejl under forsøg på at opdatere mærkerne",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>",
@@ -123,6 +122,7 @@ OC.L10N.register(
"No favorites" : "Ingen foretrukne",
"Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her",
"Text file" : "Tekstfil",
- "New text file.txt" : "Ny tekst file.txt"
+ "New text file.txt" : "Ny tekst file.txt",
+ "{newname} already exists" : "{newname} eksistere allerede"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index 51d74687c41..620d8f77f81 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -81,7 +81,6 @@
"Local link" : "Lokalt link",
"Folder" : "Mappe",
"New folder" : "Ny Mappe",
- "{newname} already exists" : "{newname} eksistere allerede",
"Upload" : "Upload",
"An error occurred while trying to update the tags" : "Der opstod en fejl under forsøg på at opdatere mærkerne",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>",
@@ -121,6 +120,7 @@
"No favorites" : "Ingen foretrukne",
"Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her",
"Text file" : "Tekstfil",
- "New text file.txt" : "Ny tekst file.txt"
+ "New text file.txt" : "Ny tekst file.txt",
+ "{newname} already exists" : "{newname} eksistere allerede"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 74524a5e54c..fa51dc819bf 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Lokaler Link",
"Folder" : "Ordner",
"New folder" : "Neuer Ordner",
- "{newname} already exists" : "{newname} existiert bereits",
"Upload" : "Hochladen",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei.txt",
+ "{newname} already exists" : "{newname} existiert bereits",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Diese Adresse benutzen, um <a href=\"%s\" target=\"_blank\">über WebDAV auf deine Dateien zuzugreifen</a>",
"Cancel upload" : "Hochladen abbrechen"
},
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index f09f85bfdd3..c7df4fafc56 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -91,7 +91,6 @@
"Local link" : "Lokaler Link",
"Folder" : "Ordner",
"New folder" : "Neuer Ordner",
- "{newname} already exists" : "{newname} existiert bereits",
"Upload" : "Hochladen",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei.txt",
+ "{newname} already exists" : "{newname} existiert bereits",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Diese Adresse benutzen, um <a href=\"%s\" target=\"_blank\">über WebDAV auf deine Dateien zuzugreifen</a>",
"Cancel upload" : "Hochladen abbrechen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index b3b4a02c650..a199f017e69 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Lokaler Link",
"Folder" : "Ordner",
"New folder" : "Neuer Ordner",
- "{newname} already exists" : "{newname} existiert bereits",
"Upload" : "Hochladen",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
+ "{newname} already exists" : "{newname} existiert bereits",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutze diese Adresse, um <a href=\"%s\" target=\"_blank\">via WebDAV auf deine Dateien zuzugreifen</a>",
"Cancel upload" : "Hochladen abbrechen"
},
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index a10f9f386cc..d9486ef509b 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -91,7 +91,6 @@
"Local link" : "Lokaler Link",
"Folder" : "Ordner",
"New folder" : "Neuer Ordner",
- "{newname} already exists" : "{newname} existiert bereits",
"Upload" : "Hochladen",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
+ "{newname} already exists" : "{newname} existiert bereits",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutze diese Adresse, um <a href=\"%s\" target=\"_blank\">via WebDAV auf deine Dateien zuzugreifen</a>",
"Cancel upload" : "Hochladen abbrechen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index 43433366108..dd7d9ecb336 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -78,7 +78,6 @@ OC.L10N.register(
"Local link" : "Τοπικός σύνδεσμος",
"Folder" : "Φάκελος",
"New folder" : "Νέος φάκελος",
- "{newname} already exists" : "το {newname} υπάρχει ήδη",
"Upload" : "Μεταφόρτωση",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
@@ -118,6 +117,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ ",
"Text file" : "Αρχείο κειμένου",
"New text file.txt" : "Νέο αρχείο κειμένου.txt",
+ "{newname} already exists" : "το {newname} υπάρχει ήδη",
"Cancel upload" : "Ακύρωση αποστολής"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index c2e81b6c876..7a2676a3428 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -76,7 +76,6 @@
"Local link" : "Τοπικός σύνδεσμος",
"Folder" : "Φάκελος",
"New folder" : "Νέος φάκελος",
- "{newname} already exists" : "το {newname} υπάρχει ήδη",
"Upload" : "Μεταφόρτωση",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
@@ -116,6 +115,7 @@
"Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ ",
"Text file" : "Αρχείο κειμένου",
"New text file.txt" : "Νέο αρχείο κειμένου.txt",
+ "{newname} already exists" : "το {newname} υπάρχει ήδη",
"Cancel upload" : "Ακύρωση αποστολής"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index d97a6b45551..579ff4a768d 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -91,7 +91,6 @@ OC.L10N.register(
"Local link" : "Local link",
"Folder" : "Folder",
"New folder" : "New folder",
- "{newname} already exists" : "{newname} already exists",
"Upload" : "Upload",
"An error occurred while trying to update the tags" : "An error occurred whilst trying to update the tags",
"A new file or folder has been <strong>created</strong>" : "A new file or folder has been <strong>created</strong>",
@@ -131,6 +130,7 @@ OC.L10N.register(
"No favorites" : "No favourites",
"Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here",
"Text file" : "Text file",
- "New text file.txt" : "New text file.txt"
+ "New text file.txt" : "New text file.txt",
+ "{newname} already exists" : "{newname} already exists"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index 830ce301290..b647f539026 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -89,7 +89,6 @@
"Local link" : "Local link",
"Folder" : "Folder",
"New folder" : "New folder",
- "{newname} already exists" : "{newname} already exists",
"Upload" : "Upload",
"An error occurred while trying to update the tags" : "An error occurred whilst trying to update the tags",
"A new file or folder has been <strong>created</strong>" : "A new file or folder has been <strong>created</strong>",
@@ -129,6 +128,7 @@
"No favorites" : "No favourites",
"Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here",
"Text file" : "Text file",
- "New text file.txt" : "New text file.txt"
+ "New text file.txt" : "New text file.txt",
+ "{newname} already exists" : "{newname} already exists"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/eo.js b/apps/files/l10n/eo.js
index 0a935b38f1b..1d7b8e814e5 100644
--- a/apps/files/l10n/eo.js
+++ b/apps/files/l10n/eo.js
@@ -75,7 +75,6 @@ OC.L10N.register(
"Favorite" : "Favorato",
"Folder" : "Dosierujo",
"New folder" : "Nova dosierujo",
- "{newname} already exists" : "{newname} jam ekzistas",
"Upload" : "Alŝuti",
"An error occurred while trying to update the tags" : "Eraris provo ĝisdatigi la etikedojn",
"A new file or folder has been <strong>created</strong>" : "Nova dosiero aŭ dosierujo <strong>kreiĝis</strong>",
@@ -112,6 +111,7 @@ OC.L10N.register(
"No favorites" : "Neniu pliŝato",
"Files and folders you mark as favorite will show up here" : "Dosieroj kaj dosierujoj, kiujn vi markas, kiel pliŝatoj, aperos ĉi tie",
"Text file" : "Tekstodosiero",
- "New text file.txt" : "Nova tekstodosiero.txt"
+ "New text file.txt" : "Nova tekstodosiero.txt",
+ "{newname} already exists" : "{newname} jam ekzistas"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/eo.json b/apps/files/l10n/eo.json
index 4b7602e11a7..729cf6e1850 100644
--- a/apps/files/l10n/eo.json
+++ b/apps/files/l10n/eo.json
@@ -73,7 +73,6 @@
"Favorite" : "Favorato",
"Folder" : "Dosierujo",
"New folder" : "Nova dosierujo",
- "{newname} already exists" : "{newname} jam ekzistas",
"Upload" : "Alŝuti",
"An error occurred while trying to update the tags" : "Eraris provo ĝisdatigi la etikedojn",
"A new file or folder has been <strong>created</strong>" : "Nova dosiero aŭ dosierujo <strong>kreiĝis</strong>",
@@ -110,6 +109,7 @@
"No favorites" : "Neniu pliŝato",
"Files and folders you mark as favorite will show up here" : "Dosieroj kaj dosierujoj, kiujn vi markas, kiel pliŝatoj, aperos ĉi tie",
"Text file" : "Tekstodosiero",
- "New text file.txt" : "Nova tekstodosiero.txt"
+ "New text file.txt" : "Nova tekstodosiero.txt",
+ "{newname} already exists" : "{newname} jam ekzistas"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 20e98f05005..bcd2a529917 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Enlace local",
"Folder" : "Carpeta",
"New folder" : "Nueva carpeta",
- "{newname} already exists" : "{newname} ya existe",
"Upload" : "Subir",
"An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo archivo de texto.txt",
+ "{newname} already exists" : "{newname} ya existe",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use esta direccioń para <a href=\"%s\" target=\"_blank\">acceder a sus archivos vía WebDAV<a>",
"Cancel upload" : "Cancelar la subida"
},
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index 4071f5d6cc0..9b74fbf9099 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -91,7 +91,6 @@
"Local link" : "Enlace local",
"Folder" : "Carpeta",
"New folder" : "Nueva carpeta",
- "{newname} already exists" : "{newname} ya existe",
"Upload" : "Subir",
"An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo archivo de texto.txt",
+ "{newname} already exists" : "{newname} ya existe",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use esta direccioń para <a href=\"%s\" target=\"_blank\">acceder a sus archivos vía WebDAV<a>",
"Cancel upload" : "Cancelar la subida"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js
index fc6629c9436..35e2ce171a3 100644
--- a/apps/files/l10n/et_EE.js
+++ b/apps/files/l10n/et_EE.js
@@ -71,7 +71,6 @@ OC.L10N.register(
"Favorite" : "Lemmik",
"Folder" : "Kaust",
"New folder" : "Uus kaust",
- "{newname} already exists" : "{newname} on juba olemas",
"Upload" : "Lae üles",
"An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge",
"A new file or folder has been <strong>created</strong>" : "Uus fail või kataloog on <strong>loodud</strong>",
@@ -103,6 +102,7 @@ OC.L10N.register(
"No favorites" : "Lemmikuid pole",
"Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks",
"Text file" : "Tekstifail",
- "New text file.txt" : "Uus tekstifail.txt"
+ "New text file.txt" : "Uus tekstifail.txt",
+ "{newname} already exists" : "{newname} on juba olemas"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json
index 9dce37dc64d..174e81932c1 100644
--- a/apps/files/l10n/et_EE.json
+++ b/apps/files/l10n/et_EE.json
@@ -69,7 +69,6 @@
"Favorite" : "Lemmik",
"Folder" : "Kaust",
"New folder" : "Uus kaust",
- "{newname} already exists" : "{newname} on juba olemas",
"Upload" : "Lae üles",
"An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge",
"A new file or folder has been <strong>created</strong>" : "Uus fail või kataloog on <strong>loodud</strong>",
@@ -101,6 +100,7 @@
"No favorites" : "Lemmikuid pole",
"Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks",
"Text file" : "Tekstifail",
- "New text file.txt" : "Uus tekstifail.txt"
+ "New text file.txt" : "Uus tekstifail.txt",
+ "{newname} already exists" : "{newname} on juba olemas"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/fi_FI.js b/apps/files/l10n/fi_FI.js
index 311b8bed02c..10d5503a544 100644
--- a/apps/files/l10n/fi_FI.js
+++ b/apps/files/l10n/fi_FI.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Paikallinen linkki",
"Folder" : "Kansio",
"New folder" : "Uusi kansio",
- "{newname} already exists" : "{newname} on jo olemassa",
"Upload" : "Lähetä",
"An error occurred while trying to update the tags" : "Tunnisteiden päivitystä yrittäessä tapahtui virhe",
"A new file or folder has been <strong>created</strong>" : "Uusi tiedosto tai kansio on <strong>luotu</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä",
"Text file" : "Tekstitiedosto",
"New text file.txt" : "Uusi tekstitiedosto.txt",
+ "{newname} already exists" : "{newname} on jo olemassa",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Käytä tätä osoitetta <a href=\"%s\" target=\"_blank\">käyttääksesi tiedostojasi WebDAV:n yli</a>",
"Cancel upload" : "Peru lähetys"
},
diff --git a/apps/files/l10n/fi_FI.json b/apps/files/l10n/fi_FI.json
index f0793950846..dcc56957533 100644
--- a/apps/files/l10n/fi_FI.json
+++ b/apps/files/l10n/fi_FI.json
@@ -91,7 +91,6 @@
"Local link" : "Paikallinen linkki",
"Folder" : "Kansio",
"New folder" : "Uusi kansio",
- "{newname} already exists" : "{newname} on jo olemassa",
"Upload" : "Lähetä",
"An error occurred while trying to update the tags" : "Tunnisteiden päivitystä yrittäessä tapahtui virhe",
"A new file or folder has been <strong>created</strong>" : "Uusi tiedosto tai kansio on <strong>luotu</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä",
"Text file" : "Tekstitiedosto",
"New text file.txt" : "Uusi tekstitiedosto.txt",
+ "{newname} already exists" : "{newname} on jo olemassa",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Käytä tätä osoitetta <a href=\"%s\" target=\"_blank\">käyttääksesi tiedostojasi WebDAV:n yli</a>",
"Cancel upload" : "Peru lähetys"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index 7b352110e81..d45cfd431c8 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Dossier local",
"Folder" : "Dossier",
"New folder" : "Nouveau dossier",
- "{newname} already exists" : "{newname} existe déjà",
"Upload" : "Chargement",
"An error occurred while trying to update the tags" : "Une erreur est survenue lors de la mise à jour des étiquettes",
"A new file or folder has been <strong>created</strong>" : "Un nouveau fichier ou répertoire a été <strong>créé</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici",
"Text file" : "Fichier texte",
"New text file.txt" : "Nouveau fichier texte.txt",
+ "{newname} already exists" : "{newname} existe déjà",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accéder à vos fichiers par WebDAV</a>",
"Cancel upload" : "Annuler le téléversement"
},
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index b73ffbf229f..a7b9d35eef4 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -91,7 +91,6 @@
"Local link" : "Dossier local",
"Folder" : "Dossier",
"New folder" : "Nouveau dossier",
- "{newname} already exists" : "{newname} existe déjà",
"Upload" : "Chargement",
"An error occurred while trying to update the tags" : "Une erreur est survenue lors de la mise à jour des étiquettes",
"A new file or folder has been <strong>created</strong>" : "Un nouveau fichier ou répertoire a été <strong>créé</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici",
"Text file" : "Fichier texte",
"New text file.txt" : "Nouveau fichier texte.txt",
+ "{newname} already exists" : "{newname} existe déjà",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accéder à vos fichiers par WebDAV</a>",
"Cancel upload" : "Annuler le téléversement"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js
index 13b0922efd2..a97cac8bcc9 100644
--- a/apps/files/l10n/he.js
+++ b/apps/files/l10n/he.js
@@ -90,7 +90,6 @@ OC.L10N.register(
"Local link" : "קישור מקומי",
"Folder" : "תיקייה",
"New folder" : "תיקייה חדשה",
- "{newname} already exists" : "{newname} כבר קיים",
"Upload" : "העלאה",
"An error occurred while trying to update the tags" : "שגיאה אירעה בזמן עדכון התגיות",
"A new file or folder has been <strong>created</strong>" : "קובץ או תיקייה חדשים <strong>נוצרו<strong/>",
@@ -130,6 +129,7 @@ OC.L10N.register(
"No favorites" : "אין מועדפים",
"Files and folders you mark as favorite will show up here" : "קבצים ותיקיות שסומנו על ידך כמועדפים יוצגו כאן",
"Text file" : "קובץ טקסט",
- "New text file.txt" : "קובץ טקסט חדש.txt"
+ "New text file.txt" : "קובץ טקסט חדש.txt",
+ "{newname} already exists" : "{newname} כבר קיים"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json
index 57ecefe49b2..50e504f74bb 100644
--- a/apps/files/l10n/he.json
+++ b/apps/files/l10n/he.json
@@ -88,7 +88,6 @@
"Local link" : "קישור מקומי",
"Folder" : "תיקייה",
"New folder" : "תיקייה חדשה",
- "{newname} already exists" : "{newname} כבר קיים",
"Upload" : "העלאה",
"An error occurred while trying to update the tags" : "שגיאה אירעה בזמן עדכון התגיות",
"A new file or folder has been <strong>created</strong>" : "קובץ או תיקייה חדשים <strong>נוצרו<strong/>",
@@ -128,6 +127,7 @@
"No favorites" : "אין מועדפים",
"Files and folders you mark as favorite will show up here" : "קבצים ותיקיות שסומנו על ידך כמועדפים יוצגו כאן",
"Text file" : "קובץ טקסט",
- "New text file.txt" : "קובץ טקסט חדש.txt"
+ "New text file.txt" : "קובץ טקסט חדש.txt",
+ "{newname} already exists" : "{newname} כבר קיים"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/hu_HU.js b/apps/files/l10n/hu_HU.js
index 8ff051d04a3..783d7e29d0e 100644
--- a/apps/files/l10n/hu_HU.js
+++ b/apps/files/l10n/hu_HU.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Helyi hivatkozás",
"Folder" : "Mappa",
"New folder" : "Új mappa",
- "{newname} already exists" : "{newname} már létezik",
"Upload" : "Feltöltés",
"An error occurred while trying to update the tags" : "Hiba történt, miközben megpróbálta frissíteni a címkéket",
"A new file or folder has been <strong>created</strong>" : "Új fájl vagy mappa <strong>létrehozva</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg",
"Text file" : "Szövegfájl",
"New text file.txt" : "Új szöveges fájl.txt",
+ "{newname} already exists" : "{newname} már létezik",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Használd ezt a címet <a href=\"%s\" target=\"_blank\">a Fájlok eléréséhez WebDAV-on keresztül</a>.",
"Cancel upload" : "Feltöltés megszakítása"
},
diff --git a/apps/files/l10n/hu_HU.json b/apps/files/l10n/hu_HU.json
index 5844007ebcc..8dfa5d171d0 100644
--- a/apps/files/l10n/hu_HU.json
+++ b/apps/files/l10n/hu_HU.json
@@ -91,7 +91,6 @@
"Local link" : "Helyi hivatkozás",
"Folder" : "Mappa",
"New folder" : "Új mappa",
- "{newname} already exists" : "{newname} már létezik",
"Upload" : "Feltöltés",
"An error occurred while trying to update the tags" : "Hiba történt, miközben megpróbálta frissíteni a címkéket",
"A new file or folder has been <strong>created</strong>" : "Új fájl vagy mappa <strong>létrehozva</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg",
"Text file" : "Szövegfájl",
"New text file.txt" : "Új szöveges fájl.txt",
+ "{newname} already exists" : "{newname} már létezik",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Használd ezt a címet <a href=\"%s\" target=\"_blank\">a Fájlok eléréséhez WebDAV-on keresztül</a>.",
"Cancel upload" : "Feltöltés megszakítása"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js
index b840eb59cd8..232d0feac40 100644
--- a/apps/files/l10n/id.js
+++ b/apps/files/l10n/id.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Local link" : "Pranala lokal",
"Folder" : "Folder",
"New folder" : "Map baru",
- "{newname} already exists" : "{newname} sudah ada",
"Upload" : "Unggah",
"An error occurred while trying to update the tags" : "Terjadi kesalahan saat mencoba untuk memperbarui label",
"A new file or folder has been <strong>created</strong>" : "Sebuah berkas atau folder baru telah <strong>dibuat</strong>",
@@ -133,6 +132,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Berkas dan folder yang Anda tandai sebagai favorit akan ditampilkan disini.",
"Text file" : "Berkas teks",
"New text file.txt" : "Teks baru file.txt",
+ "{newname} already exists" : "{newname} sudah ada",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\">mengakses berkas Anda melalui WebDAV</a>",
"Cancel upload" : "Batalkan pengunggahan"
},
diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json
index f4bb1cb48e1..de11f50e5b0 100644
--- a/apps/files/l10n/id.json
+++ b/apps/files/l10n/id.json
@@ -90,7 +90,6 @@
"Local link" : "Pranala lokal",
"Folder" : "Folder",
"New folder" : "Map baru",
- "{newname} already exists" : "{newname} sudah ada",
"Upload" : "Unggah",
"An error occurred while trying to update the tags" : "Terjadi kesalahan saat mencoba untuk memperbarui label",
"A new file or folder has been <strong>created</strong>" : "Sebuah berkas atau folder baru telah <strong>dibuat</strong>",
@@ -131,6 +130,7 @@
"Files and folders you mark as favorite will show up here" : "Berkas dan folder yang Anda tandai sebagai favorit akan ditampilkan disini.",
"Text file" : "Berkas teks",
"New text file.txt" : "Teks baru file.txt",
+ "{newname} already exists" : "{newname} sudah ada",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\">mengakses berkas Anda melalui WebDAV</a>",
"Cancel upload" : "Batalkan pengunggahan"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index 788e8c5e73d..a3e6e52b7a9 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Staðvær tengill",
"Folder" : "Mappa",
"New folder" : "Ný mappa",
- "{newname} already exists" : "{newname} er þegar til",
"Upload" : "Senda inn",
"An error occurred while trying to update the tags" : "Villa kom upp við að reyna að uppfæra merkin",
"A new file or folder has been <strong>created</strong>" : "Skjal eða mappa hefur verið <strong>búin til</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem uppáhald birtast hér",
"Text file" : "Textaskrá",
"New text file.txt" : "Ný textaskrá.txt",
+ "{newname} already exists" : "{newname} er þegar til",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Notaðu þetta vistfang til að <a href=\"%s\" target=\"_blank\">nálgast skrárnar þínar með WebDAV</a>",
"Cancel upload" : "Hætta við innsendingu"
},
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index 60b290900a0..f522906908e 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -91,7 +91,6 @@
"Local link" : "Staðvær tengill",
"Folder" : "Mappa",
"New folder" : "Ný mappa",
- "{newname} already exists" : "{newname} er þegar til",
"Upload" : "Senda inn",
"An error occurred while trying to update the tags" : "Villa kom upp við að reyna að uppfæra merkin",
"A new file or folder has been <strong>created</strong>" : "Skjal eða mappa hefur verið <strong>búin til</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem uppáhald birtast hér",
"Text file" : "Textaskrá",
"New text file.txt" : "Ný textaskrá.txt",
+ "{newname} already exists" : "{newname} er þegar til",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Notaðu þetta vistfang til að <a href=\"%s\" target=\"_blank\">nálgast skrárnar þínar með WebDAV</a>",
"Cancel upload" : "Hætta við innsendingu"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 5f0fe1d98d0..d5d30636230 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Collegamento locale",
"Folder" : "Cartella",
"New folder" : "Nuova cartella",
- "{newname} already exists" : "{newname} esiste già",
"Upload" : "Carica",
"An error occurred while trying to update the tags" : "Si è verificato un errore durante il tentativo di aggiornare le etichette",
"A new file or folder has been <strong>created</strong>" : "Un nuovo file o cartella è stato <strong>creato</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui",
"Text file" : "File di testo",
"New text file.txt" : "Nuovo file di testo.txt",
+ "{newname} already exists" : "{newname} esiste già",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\">accedere ai tuoi file con WebDAV</a>",
"Cancel upload" : "Annulla caricamento"
},
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index 60d87046bf8..af11ab3c62d 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -91,7 +91,6 @@
"Local link" : "Collegamento locale",
"Folder" : "Cartella",
"New folder" : "Nuova cartella",
- "{newname} already exists" : "{newname} esiste già",
"Upload" : "Carica",
"An error occurred while trying to update the tags" : "Si è verificato un errore durante il tentativo di aggiornare le etichette",
"A new file or folder has been <strong>created</strong>" : "Un nuovo file o cartella è stato <strong>creato</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui",
"Text file" : "File di testo",
"New text file.txt" : "Nuovo file di testo.txt",
+ "{newname} already exists" : "{newname} esiste già",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\">accedere ai tuoi file con WebDAV</a>",
"Cancel upload" : "Annulla caricamento"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 009950730d1..b7ba017208e 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "ローカルリンク",
"Folder" : "フォルダー",
"New folder" : "新しいフォルダー",
- "{newname} already exists" : "{newname} はすでに存在します",
"Upload" : "アップロード",
"An error occurred while trying to update the tags" : "タグを更新する際にエラーが発生しました",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。",
"Text file" : "テキストファイル",
"New text file.txt" : "新規のテキストファイル作成",
+ "{newname} already exists" : "{newname} はすでに存在します",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">WebDAV 経由でファイルにアクセス</a> するにはこのアドレスを利用してください",
"Cancel upload" : "アップロードをキャンセル"
},
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 47f76ff74a1..d5e829abefe 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -91,7 +91,6 @@
"Local link" : "ローカルリンク",
"Folder" : "フォルダー",
"New folder" : "新しいフォルダー",
- "{newname} already exists" : "{newname} はすでに存在します",
"Upload" : "アップロード",
"An error occurred while trying to update the tags" : "タグを更新する際にエラーが発生しました",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。",
"Text file" : "テキストファイル",
"New text file.txt" : "新規のテキストファイル作成",
+ "{newname} already exists" : "{newname} はすでに存在します",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">WebDAV 経由でファイルにアクセス</a> するにはこのアドレスを利用してください",
"Cancel upload" : "アップロードをキャンセル"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index 0445413ef0b..a3dc8e23a31 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -86,7 +86,6 @@ OC.L10N.register(
"Local link" : "로컬 링크",
"Folder" : "폴더",
"New folder" : "새 폴더",
- "{newname} already exists" : "{newname} 항목이 이미 존재함",
"Upload" : "업로드",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
@@ -126,6 +125,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다",
"Text file" : "텍스트 파일",
"New text file.txt" : "새 텍스트 파일.txt",
+ "{newname} already exists" : "{newname} 항목이 이미 존재함",
"Cancel upload" : "업로드 취소"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 06fc678ee1d..beaa272bde4 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -84,7 +84,6 @@
"Local link" : "로컬 링크",
"Folder" : "폴더",
"New folder" : "새 폴더",
- "{newname} already exists" : "{newname} 항목이 이미 존재함",
"Upload" : "업로드",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
@@ -124,6 +123,7 @@
"Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다",
"Text file" : "텍스트 파일",
"New text file.txt" : "새 텍스트 파일.txt",
+ "{newname} already exists" : "{newname} 항목이 이미 존재함",
"Cancel upload" : "업로드 취소"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js
index 492c0f5cacc..c60217022cf 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -77,7 +77,6 @@ OC.L10N.register(
"Favorite" : "Mėgiamas",
"Folder" : "Katalogas",
"New folder" : "Naujas aplankas",
- "{newname} already exists" : "{newname} jau egzistuoja",
"Upload" : "Įkelti",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>",
@@ -115,6 +114,7 @@ OC.L10N.register(
"No favorites" : "Nėra mėgstamiausių",
"Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia",
"Text file" : "Teksto failas",
- "New text file.txt" : "Naujas tekstas file.txt"
+ "New text file.txt" : "Naujas tekstas file.txt",
+ "{newname} already exists" : "{newname} jau egzistuoja"
},
"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/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index 1d6ea355e5c..790b29a62e2 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -75,7 +75,6 @@
"Favorite" : "Mėgiamas",
"Folder" : "Katalogas",
"New folder" : "Naujas aplankas",
- "{newname} already exists" : "{newname} jau egzistuoja",
"Upload" : "Įkelti",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>",
@@ -113,6 +112,7 @@
"No favorites" : "Nėra mėgstamiausių",
"Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia",
"Text file" : "Teksto failas",
- "New text file.txt" : "Naujas tekstas file.txt"
+ "New text file.txt" : "Naujas tekstas file.txt",
+ "{newname} already exists" : "{newname} jau egzistuoja"
},"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/l10n/lv.js b/apps/files/l10n/lv.js
index 587d2406fb3..c37246c49bf 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Local link" : "Lokāla saite",
"Folder" : "Mape",
"New folder" : "Jauna mape",
- "{newname} already exists" : "{newname} jau eksistē",
"Upload" : "Augšupielādēt",
"An error occurred while trying to update the tags" : "Notika kļūda atjaunojot atzīmi",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidota</strong> jauna datne vai mape",
@@ -133,6 +132,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Datnes un mapes, ko atzīmēsiet kā favorītus, tiks rādīti šeit",
"Text file" : "Teksta datne",
"New text file.txt" : "Jauna teksta datne.txt",
+ "{newname} already exists" : "{newname} jau eksistē",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Izmanto šo adresi, lai <a href=\"%s\" target=\"_blank\">sasniegtu savas datnes caur WebDAV</a>",
"Cancel upload" : "Atcelt augšupielādi"
},
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 3d6eaa8635e..94afe1289fa 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -90,7 +90,6 @@
"Local link" : "Lokāla saite",
"Folder" : "Mape",
"New folder" : "Jauna mape",
- "{newname} already exists" : "{newname} jau eksistē",
"Upload" : "Augšupielādēt",
"An error occurred while trying to update the tags" : "Notika kļūda atjaunojot atzīmi",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidota</strong> jauna datne vai mape",
@@ -131,6 +130,7 @@
"Files and folders you mark as favorite will show up here" : "Datnes un mapes, ko atzīmēsiet kā favorītus, tiks rādīti šeit",
"Text file" : "Teksta datne",
"New text file.txt" : "Jauna teksta datne.txt",
+ "{newname} already exists" : "{newname} jau eksistē",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Izmanto šo adresi, lai <a href=\"%s\" target=\"_blank\">sasniegtu savas datnes caur WebDAV</a>",
"Cancel upload" : "Atcelt augšupielādi"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
diff --git a/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js
index 00aba4c4e20..c659afdb07e 100644
--- a/apps/files/l10n/nb_NO.js
+++ b/apps/files/l10n/nb_NO.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Lokal lenke",
"Folder" : "Mappe",
"New folder" : "Ny mappe",
- "{newname} already exists" : "{newname} finnes allerede",
"Upload" : "Last opp",
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av merkelappene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her",
"Text file" : "Tekstfil",
"New text file.txt" : "Ny tekstfil.txt",
+ "{newname} already exists" : "{newname} finnes allerede",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk følgende adresse for <a href=\"%s\" target=\"_blank\">tilgang til filene via WebDAV</a>",
"Cancel upload" : "Avbryt opplasting"
},
diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json
index fa4ae8abe26..276409f34c7 100644
--- a/apps/files/l10n/nb_NO.json
+++ b/apps/files/l10n/nb_NO.json
@@ -91,7 +91,6 @@
"Local link" : "Lokal lenke",
"Folder" : "Mappe",
"New folder" : "Ny mappe",
- "{newname} already exists" : "{newname} finnes allerede",
"Upload" : "Last opp",
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av merkelappene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her",
"Text file" : "Tekstfil",
"New text file.txt" : "Ny tekstfil.txt",
+ "{newname} already exists" : "{newname} finnes allerede",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk følgende adresse for <a href=\"%s\" target=\"_blank\">tilgang til filene via WebDAV</a>",
"Cancel upload" : "Avbryt opplasting"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index 6c18187e2bd..74a520a1245 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Lokale link",
"Folder" : "Map",
"New folder" : "Nieuwe map",
- "{newname} already exists" : "{newname} bestaat al",
"Upload" : "Uploaden",
"An error occurred while trying to update the tags" : "Er trad een fout op bij uw poging de markeringen bij te werken",
"A new file or folder has been <strong>created</strong>" : "Een nieuw bestand of map is <strong>aangemaakt</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Bestanden en mappen die je als favoriet aanmerkt, worden hier getoond",
"Text file" : "Tekstbestand",
"New text file.txt" : "Nieuw tekstbestand.txt",
+ "{newname} already exists" : "{newname} bestaat al",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">om je bestanden via WebDAV te benaderen</a>",
"Cancel upload" : "Upload annuleren"
},
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index 50cac7d841a..0fb8a949154 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -91,7 +91,6 @@
"Local link" : "Lokale link",
"Folder" : "Map",
"New folder" : "Nieuwe map",
- "{newname} already exists" : "{newname} bestaat al",
"Upload" : "Uploaden",
"An error occurred while trying to update the tags" : "Er trad een fout op bij uw poging de markeringen bij te werken",
"A new file or folder has been <strong>created</strong>" : "Een nieuw bestand of map is <strong>aangemaakt</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Bestanden en mappen die je als favoriet aanmerkt, worden hier getoond",
"Text file" : "Tekstbestand",
"New text file.txt" : "Nieuw tekstbestand.txt",
+ "{newname} already exists" : "{newname} bestaat al",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">om je bestanden via WebDAV te benaderen</a>",
"Cancel upload" : "Upload annuleren"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 1a76a26a611..71e0c1d298c 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -89,7 +89,6 @@ OC.L10N.register(
"Local link" : "Lokalny odnośnik",
"Folder" : "Folder",
"New folder" : "Nowy folder",
- "{newname} already exists" : "{newname} już istnieje",
"Upload" : "Wyślij",
"An error occurred while trying to update the tags" : "Wystąpił błąd podczas aktualizacji tagów",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
@@ -130,6 +129,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj",
"Text file" : "Plik tekstowy",
"New text file.txt" : "Nowy plik tekstowy.txt",
+ "{newname} already exists" : "{newname} już istnieje",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\">dostęp do swoich plików poprzez WebDAV</a>",
"Cancel upload" : "Anuluj wysyłanie"
},
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index c796422750d..7998ea385ce 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -87,7 +87,6 @@
"Local link" : "Lokalny odnośnik",
"Folder" : "Folder",
"New folder" : "Nowy folder",
- "{newname} already exists" : "{newname} już istnieje",
"Upload" : "Wyślij",
"An error occurred while trying to update the tags" : "Wystąpił błąd podczas aktualizacji tagów",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
@@ -128,6 +127,7 @@
"Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj",
"Text file" : "Plik tekstowy",
"New text file.txt" : "Nowy plik tekstowy.txt",
+ "{newname} already exists" : "{newname} już istnieje",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\">dostęp do swoich plików poprzez WebDAV</a>",
"Cancel upload" : "Anuluj wysyłanie"
},"pluralForm" :"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/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index c5c8ca9eb38..496d023c88f 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Link local",
"Folder" : "Pasta",
"New folder" : "Nova pasta",
- "{newname} already exists" : "{newname} já existe",
"Upload" : "Enviar",
"An error occurred while trying to update the tags" : "Ocorreu um erro enquanto tentava atualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favoritos são mostrados aqui",
"Text file" : "Arquivo texto",
"New text file.txt" : "Novo texto file.txt",
+ "{newname} already exists" : "{newname} já existe",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use este endereço para <a href=\"%s\" target=\"_blank\">acessar seus arquivos via WebDAV</a>",
"Cancel upload" : "Cancelar envio"
},
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index e31b837c110..e7cc3cd85b3 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -91,7 +91,6 @@
"Local link" : "Link local",
"Folder" : "Pasta",
"New folder" : "Nova pasta",
- "{newname} already exists" : "{newname} já existe",
"Upload" : "Enviar",
"An error occurred while trying to update the tags" : "Ocorreu um erro enquanto tentava atualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favoritos são mostrados aqui",
"Text file" : "Arquivo texto",
"New text file.txt" : "Novo texto file.txt",
+ "{newname} already exists" : "{newname} já existe",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use este endereço para <a href=\"%s\" target=\"_blank\">acessar seus arquivos via WebDAV</a>",
"Cancel upload" : "Cancelar envio"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files/l10n/pt_PT.js b/apps/files/l10n/pt_PT.js
index ee1e3636066..a54e72ade12 100644
--- a/apps/files/l10n/pt_PT.js
+++ b/apps/files/l10n/pt_PT.js
@@ -89,7 +89,6 @@ OC.L10N.register(
"Local link" : "Hiperligação local",
"Folder" : "Pasta",
"New folder" : "Nova pasta",
- "{newname} already exists" : "{newname} já existe",
"Upload" : "Enviar",
"An error occurred while trying to update the tags" : "Ocorreu um erro ao tentar atualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "Foi <strong>criado</strong> um novo ficheiro ou pasta",
@@ -129,6 +128,7 @@ OC.L10N.register(
"No favorites" : "Sem favoritos",
"Files and folders you mark as favorite will show up here" : "Os ficheiros e pastas que marcou como favoritos serão mostrados aqui",
"Text file" : "Ficheiro de Texto",
- "New text file.txt" : "Novo texto ficheiro.txt"
+ "New text file.txt" : "Novo texto ficheiro.txt",
+ "{newname} already exists" : "{newname} já existe"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/pt_PT.json b/apps/files/l10n/pt_PT.json
index e08a3841470..47dbd4bd010 100644
--- a/apps/files/l10n/pt_PT.json
+++ b/apps/files/l10n/pt_PT.json
@@ -87,7 +87,6 @@
"Local link" : "Hiperligação local",
"Folder" : "Pasta",
"New folder" : "Nova pasta",
- "{newname} already exists" : "{newname} já existe",
"Upload" : "Enviar",
"An error occurred while trying to update the tags" : "Ocorreu um erro ao tentar atualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "Foi <strong>criado</strong> um novo ficheiro ou pasta",
@@ -127,6 +126,7 @@
"No favorites" : "Sem favoritos",
"Files and folders you mark as favorite will show up here" : "Os ficheiros e pastas que marcou como favoritos serão mostrados aqui",
"Text file" : "Ficheiro de Texto",
- "New text file.txt" : "Novo texto ficheiro.txt"
+ "New text file.txt" : "Novo texto ficheiro.txt",
+ "{newname} already exists" : "{newname} já existe"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js
index 78a7cc314fa..9aa36101499 100644
--- a/apps/files/l10n/ro.js
+++ b/apps/files/l10n/ro.js
@@ -82,7 +82,6 @@ OC.L10N.register(
"Local link" : "Legătură locală",
"Folder" : "Dosar",
"New folder" : "Un nou dosar",
- "{newname} already exists" : "{newname} există deja",
"Upload" : "Încărcă",
"An error occurred while trying to update the tags" : "A apărut o eroare în timpul actualizării etichetelor",
"A new file or folder has been <strong>created</strong>" : "Un nou fișier sau dosar a fost <strong>creat</strong>",
@@ -119,6 +118,7 @@ OC.L10N.register(
"No favorites" : "Fără favorite",
"Files and folders you mark as favorite will show up here" : "FIșierele și directoarele pe care le marchezi ca favorite vor apărea aici",
"Text file" : "Fișier text",
- "New text file.txt" : "New text file.txt"
+ "New text file.txt" : "New text file.txt",
+ "{newname} already exists" : "{newname} există deja"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json
index 7c9a4b22262..e5e4d1d587b 100644
--- a/apps/files/l10n/ro.json
+++ b/apps/files/l10n/ro.json
@@ -80,7 +80,6 @@
"Local link" : "Legătură locală",
"Folder" : "Dosar",
"New folder" : "Un nou dosar",
- "{newname} already exists" : "{newname} există deja",
"Upload" : "Încărcă",
"An error occurred while trying to update the tags" : "A apărut o eroare în timpul actualizării etichetelor",
"A new file or folder has been <strong>created</strong>" : "Un nou fișier sau dosar a fost <strong>creat</strong>",
@@ -117,6 +116,7 @@
"No favorites" : "Fără favorite",
"Files and folders you mark as favorite will show up here" : "FIșierele și directoarele pe care le marchezi ca favorite vor apărea aici",
"Text file" : "Fișier text",
- "New text file.txt" : "New text file.txt"
+ "New text file.txt" : "New text file.txt",
+ "{newname} already exists" : "{newname} există deja"
},"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/l10n/ru.js b/apps/files/l10n/ru.js
index b8bf81d6d17..2d4bdb0545e 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Локальная ссылка",
"Folder" : "Каталог",
"New folder" : "Новый каталог",
- "{newname} already exists" : "{newname} уже существует",
"Upload" : "Загрузить",
"An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные",
"Text file" : "Текстовый файл",
"New text file.txt" : "Новый текстовый документ.txt",
+ "{newname} already exists" : "{newname} уже существует",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\">получения доступа к вашим файлам через WebDAV</a>",
"Cancel upload" : "Отменить загрузку"
},
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 0f9c9be81a7..1326a6d28e8 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -91,7 +91,6 @@
"Local link" : "Локальная ссылка",
"Folder" : "Каталог",
"New folder" : "Новый каталог",
- "{newname} already exists" : "{newname} уже существует",
"Upload" : "Загрузить",
"An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные",
"Text file" : "Текстовый файл",
"New text file.txt" : "Новый текстовый документ.txt",
+ "{newname} already exists" : "{newname} уже существует",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\">получения доступа к вашим файлам через WebDAV</a>",
"Cancel upload" : "Отменить загрузку"
},"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);"
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index b6f07f4d534..0a3647cbb5f 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Krajevna povezava",
"Folder" : "Mapa",
"New folder" : "Nova mapa",
- "{newname} already exists" : "{newname} že obstaja",
"Upload" : "Pošlji",
"An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak",
"A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je <strong>ustvarjena</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo zbrane na tem mestu.",
"Text file" : "Besedilna datoteka",
"New text file.txt" : "Nova datoteka.txt",
+ "{newname} already exists" : "{newname} že obstaja",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uporabi ta naslov za <a href=\"%s\" target=\"_blank\">dostop do tvojih datotek preko WebDAV</a>",
"Cancel upload" : "Prekini nalaganje"
},
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index d3f65d33bba..8b8b80cf51e 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -91,7 +91,6 @@
"Local link" : "Krajevna povezava",
"Folder" : "Mapa",
"New folder" : "Nova mapa",
- "{newname} already exists" : "{newname} že obstaja",
"Upload" : "Pošlji",
"An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak",
"A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je <strong>ustvarjena</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo zbrane na tem mestu.",
"Text file" : "Besedilna datoteka",
"New text file.txt" : "Nova datoteka.txt",
+ "{newname} already exists" : "{newname} že obstaja",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uporabi ta naslov za <a href=\"%s\" target=\"_blank\">dostop do tvojih datotek preko WebDAV</a>",
"Cancel upload" : "Prekini nalaganje"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js
index b104afdd723..1beef214878 100644
--- a/apps/files/l10n/sq.js
+++ b/apps/files/l10n/sq.js
@@ -90,7 +90,6 @@ OC.L10N.register(
"Local link" : "Lidhje vendore",
"Folder" : "Dosje",
"New folder" : "Dosje e re",
- "{newname} already exists" : "Ka tashmë një {newname}",
"Upload" : "Ngarkoje",
"An error occurred while trying to update the tags" : "Ndodhi një gabim teksa provohej të përditësoheshin etiketat",
"A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re",
@@ -130,6 +129,7 @@ OC.L10N.register(
"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",
"Text file" : "Kartelë tekst",
- "New text file.txt" : "Kartelë e re file.txt"
+ "New text file.txt" : "Kartelë e re file.txt",
+ "{newname} already exists" : "Ka tashmë një {newname}"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json
index 80e5f104fa6..522238dc7a8 100644
--- a/apps/files/l10n/sq.json
+++ b/apps/files/l10n/sq.json
@@ -88,7 +88,6 @@
"Local link" : "Lidhje vendore",
"Folder" : "Dosje",
"New folder" : "Dosje e re",
- "{newname} already exists" : "Ka tashmë një {newname}",
"Upload" : "Ngarkoje",
"An error occurred while trying to update the tags" : "Ndodhi një gabim teksa provohej të përditësoheshin etiketat",
"A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re",
@@ -128,6 +127,7 @@
"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",
"Text file" : "Kartelë tekst",
- "New text file.txt" : "Kartelë e re file.txt"
+ "New text file.txt" : "Kartelë e re file.txt",
+ "{newname} already exists" : "Ka tashmë një {newname}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index 74dd5dc3988..b4969688e99 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -67,7 +67,6 @@ OC.L10N.register(
"Favorite" : "Омиљени",
"Folder" : "фасцикла",
"New folder" : "Нова фасцикла",
- "{newname} already exists" : "{newname} већ постоји",
"Upload" : "Отпреми",
"An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака",
"A new file or folder has been <strong>created</strong>" : "Нови фајл или фасцикла су <strong>направљени</strong>",
@@ -103,6 +102,7 @@ OC.L10N.register(
"No favorites" : "Нема омиљених",
"Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде",
"Text file" : "текстуални фајл",
- "New text file.txt" : "Нов текстуални фајл.txt"
+ "New text file.txt" : "Нов текстуални фајл.txt",
+ "{newname} already exists" : "{newname} већ постоји"
},
"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/l10n/sr.json b/apps/files/l10n/sr.json
index 25683cd1df7..94ab1e4a65a 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -65,7 +65,6 @@
"Favorite" : "Омиљени",
"Folder" : "фасцикла",
"New folder" : "Нова фасцикла",
- "{newname} already exists" : "{newname} већ постоји",
"Upload" : "Отпреми",
"An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака",
"A new file or folder has been <strong>created</strong>" : "Нови фајл или фасцикла су <strong>направљени</strong>",
@@ -101,6 +100,7 @@
"No favorites" : "Нема омиљених",
"Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде",
"Text file" : "текстуални фајл",
- "New text file.txt" : "Нов текстуални фајл.txt"
+ "New text file.txt" : "Нов текстуални фајл.txt",
+ "{newname} already exists" : "{newname} већ постоји"
},"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/l10n/sv.js b/apps/files/l10n/sv.js
index 6ecdba35acb..515a5cfbaee 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Local link" : "Lokal länk",
"Folder" : "Mapp",
"New folder" : "Ny mapp",
- "{newname} already exists" : "{newname} existerar redan",
"Upload" : "Ladda upp",
"An error occurred while trying to update the tags" : "Ett fel uppstod när uppdatera taggarna",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
@@ -134,6 +133,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer att visas här",
"Text file" : "Textfil",
"New text file.txt" : "nytextfil.txt",
+ "{newname} already exists" : "{newname} existerar redan",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Använd denna adress för att <a href=\"%s\" target=\"_blank\">få tillgång till filer via WebDAV</a>",
"Cancel upload" : "Avbryt uppladdning"
},
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index cc92981e96a..596beee7be5 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -91,7 +91,6 @@
"Local link" : "Lokal länk",
"Folder" : "Mapp",
"New folder" : "Ny mapp",
- "{newname} already exists" : "{newname} existerar redan",
"Upload" : "Ladda upp",
"An error occurred while trying to update the tags" : "Ett fel uppstod när uppdatera taggarna",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
@@ -132,6 +131,7 @@
"Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer att visas här",
"Text file" : "Textfil",
"New text file.txt" : "nytextfil.txt",
+ "{newname} already exists" : "{newname} existerar redan",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Använd denna adress för att <a href=\"%s\" target=\"_blank\">få tillgång till filer via WebDAV</a>",
"Cancel upload" : "Avbryt uppladdning"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/th_TH.js b/apps/files/l10n/th_TH.js
index 06a02adab7f..4ba84e8655f 100644
--- a/apps/files/l10n/th_TH.js
+++ b/apps/files/l10n/th_TH.js
@@ -79,7 +79,6 @@ OC.L10N.register(
"Favorite" : "รายการโปรด",
"Folder" : "แฟ้มเอกสาร",
"New folder" : "โฟลเดอร์ใหม่",
- "{newname} already exists" : "{newname} ถูกใช้ไปแล้ว",
"Upload" : "อัพโหลด",
"An error occurred while trying to update the tags" : "เกิดข้อผิดพลาดขณะที่พยายามจะปรับปรุงแท็ก",
"A new file or folder has been <strong>created</strong>" : "มีไฟล์ใหม่หรือโฟลเดอร์ได้ถูก <strong>สร้างขึ้น!</strong>",
@@ -119,6 +118,7 @@ OC.L10N.register(
"No favorites" : "ยังไม่มีรายการโปรด",
"Files and folders you mark as favorite will show up here" : "ไฟล์และโฟลเดอร์ที่คุณทำเครื่องหมายเป็นรายการโปรดจะปรากฏขึ้นที่นี่",
"Text file" : "ไฟล์ข้อความ",
- "New text file.txt" : "ไฟล์ข้อความใหม่ .txt"
+ "New text file.txt" : "ไฟล์ข้อความใหม่ .txt",
+ "{newname} already exists" : "{newname} ถูกใช้ไปแล้ว"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/th_TH.json b/apps/files/l10n/th_TH.json
index 5c526d80a65..a2a160a9d5f 100644
--- a/apps/files/l10n/th_TH.json
+++ b/apps/files/l10n/th_TH.json
@@ -77,7 +77,6 @@
"Favorite" : "รายการโปรด",
"Folder" : "แฟ้มเอกสาร",
"New folder" : "โฟลเดอร์ใหม่",
- "{newname} already exists" : "{newname} ถูกใช้ไปแล้ว",
"Upload" : "อัพโหลด",
"An error occurred while trying to update the tags" : "เกิดข้อผิดพลาดขณะที่พยายามจะปรับปรุงแท็ก",
"A new file or folder has been <strong>created</strong>" : "มีไฟล์ใหม่หรือโฟลเดอร์ได้ถูก <strong>สร้างขึ้น!</strong>",
@@ -117,6 +116,7 @@
"No favorites" : "ยังไม่มีรายการโปรด",
"Files and folders you mark as favorite will show up here" : "ไฟล์และโฟลเดอร์ที่คุณทำเครื่องหมายเป็นรายการโปรดจะปรากฏขึ้นที่นี่",
"Text file" : "ไฟล์ข้อความ",
- "New text file.txt" : "ไฟล์ข้อความใหม่ .txt"
+ "New text file.txt" : "ไฟล์ข้อความใหม่ .txt",
+ "{newname} already exists" : "{newname} ถูกใช้ไปแล้ว"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index 41c7a83ffc7..f1f107befd2 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Local link" : "Yerel bağlantı",
"Folder" : "Klasör",
"New folder" : "Yeni klasör",
- "{newname} already exists" : "{newname} zaten mevcut",
"Upload" : "Yükle",
"An error occurred while trying to update the tags" : "Etiketler güncellenmeye çalışılırken bir hata oluştu",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>",
@@ -132,6 +131,7 @@ OC.L10N.register(
"No favorites" : "Sık kullanılan öge yok.",
"Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek",
"Text file" : "Metin dosyası",
- "New text file.txt" : "Yeni metin dosyası.txt"
+ "New text file.txt" : "Yeni metin dosyası.txt",
+ "{newname} already exists" : "{newname} zaten mevcut"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index f0a094c6108..56cc99d8b43 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -90,7 +90,6 @@
"Local link" : "Yerel bağlantı",
"Folder" : "Klasör",
"New folder" : "Yeni klasör",
- "{newname} already exists" : "{newname} zaten mevcut",
"Upload" : "Yükle",
"An error occurred while trying to update the tags" : "Etiketler güncellenmeye çalışılırken bir hata oluştu",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>",
@@ -130,6 +129,7 @@
"No favorites" : "Sık kullanılan öge yok.",
"Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek",
"Text file" : "Metin dosyası",
- "New text file.txt" : "Yeni metin dosyası.txt"
+ "New text file.txt" : "Yeni metin dosyası.txt",
+ "{newname} already exists" : "{newname} zaten mevcut"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 632804a4fad..7b0152dd11e 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -90,7 +90,6 @@ OC.L10N.register(
"Local link" : "本地链接",
"Folder" : "文件夹",
"New folder" : "增加文件夹",
- "{newname} already exists" : "{newname} 已经存在",
"Upload" : "上传",
"An error occurred while trying to update the tags" : "更新标签时出错",
"A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
@@ -130,6 +129,7 @@ OC.L10N.register(
"No favorites" : "无收藏",
"Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示",
"Text file" : "文本文件",
- "New text file.txt" : "创建文本文件 .txt"
+ "New text file.txt" : "创建文本文件 .txt",
+ "{newname} already exists" : "{newname} 已经存在"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 60db09ade1a..f2b10329640 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -88,7 +88,6 @@
"Local link" : "本地链接",
"Folder" : "文件夹",
"New folder" : "增加文件夹",
- "{newname} already exists" : "{newname} 已经存在",
"Upload" : "上传",
"An error occurred while trying to update the tags" : "更新标签时出错",
"A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
@@ -128,6 +127,7 @@
"No favorites" : "无收藏",
"Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示",
"Text file" : "文本文件",
- "New text file.txt" : "创建文本文件 .txt"
+ "New text file.txt" : "创建文本文件 .txt",
+ "{newname} already exists" : "{newname} 已经存在"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index 244204db381..7cd79d6e706 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Local link" : "本地連結",
"Folder" : "資料夾",
"New folder" : "新資料夾",
- "{newname} already exists" : "{newname} 已經存在",
"Upload" : "上傳",
"An error occurred while trying to update the tags" : "更新標籤時發生錯誤",
"A new file or folder has been <strong>created</strong>" : "新的檔案或目錄已被 <strong>建立</strong>",
@@ -133,6 +132,7 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
"Text file" : "文字檔",
"New text file.txt" : "新文字檔.txt",
+ "{newname} already exists" : "{newname} 已經存在",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用這個位址來<a href=\"%s\" target=\"_blank\">使用 WebDAV 存取檔案</a>",
"Cancel upload" : "取消上傳"
},
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index afa9a740071..365e36674e5 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -90,7 +90,6 @@
"Local link" : "本地連結",
"Folder" : "資料夾",
"New folder" : "新資料夾",
- "{newname} already exists" : "{newname} 已經存在",
"Upload" : "上傳",
"An error occurred while trying to update the tags" : "更新標籤時發生錯誤",
"A new file or folder has been <strong>created</strong>" : "新的檔案或目錄已被 <strong>建立</strong>",
@@ -131,6 +130,7 @@
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
"Text file" : "文字檔",
"New text file.txt" : "新文字檔.txt",
+ "{newname} already exists" : "{newname} 已經存在",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用這個位址來<a href=\"%s\" target=\"_blank\">使用 WebDAV 存取檔案</a>",
"Cancel upload" : "取消上傳"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files/lib/Activity.php b/apps/files/lib/Activity.php
index b9cc98cf7ea..5fc59f119e1 100644
--- a/apps/files/lib/Activity.php
+++ b/apps/files/lib/Activity.php
@@ -104,7 +104,7 @@ class Activity implements IExtension {
$l = $this->getL10N($languageCode);
return [
self::TYPE_SHARE_CREATED => (string) $l->t('A new file or folder has been <strong>created</strong>'),
- self::TYPE_SHARE_CHANGED => (string) $l->t('A file or folder has been <strong>changed</strong>'),
+ self::TYPE_SHARE_CHANGED => (string) $l->t('A file or folder has been <strong>changed</strong> or <strong>renamed</strong>'),
self::TYPE_FAVORITES => [
'desc' => (string) $l->t('Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>'),
'methods' => [self::METHOD_STREAM],
@@ -189,6 +189,14 @@ class Activity implements IExtension {
return (string) $l->t('You restored %1$s', $params);
case 'restored_by':
return (string) $l->t('%2$s restored %1$s', $params);
+ case 'renamed_self':
+ return (string) $l->t('You renamed %2$s to %1$s', $params);
+ case 'renamed_by':
+ return (string) $l->t('%2$s renamed %3$s to %1$s', $params);
+ case 'moved_self':
+ return (string) $l->t('You moved %2$s to %1$s', $params);
+ case 'moved_by':
+ return (string) $l->t('%2$s moved %3$s to %1$s', $params);
default:
return false;
@@ -209,6 +217,10 @@ class Activity implements IExtension {
return (string) $l->t('Deleted by %2$s', $params);
case 'restored_by':
return (string) $l->t('Restored by %2$s', $params);
+ case 'renamed_by':
+ return (string) $l->t('Renamed by %2$s', $params);
+ case 'moved_by':
+ return (string) $l->t('Moved by %2$s', $params);
default:
return false;
@@ -242,6 +254,19 @@ class Activity implements IExtension {
0 => 'file',
1 => 'username',
];
+ case 'renamed_self':
+ case 'moved_self':
+ return [
+ 0 => 'file',
+ 1 => 'file',
+ ];
+ case 'renamed_by':
+ case 'moved_by':
+ return [
+ 0 => 'file',
+ 1 => 'username',
+ 2 => 'file',
+ ];
}
}
@@ -306,6 +331,7 @@ class Activity implements IExtension {
'top' => [
self::FILTER_FAVORITES => [
'id' => self::FILTER_FAVORITES,
+ 'icon' => 'icon-favorite',
'name' => (string) $this->l->t('Favorites'),
'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::FILTER_FAVORITES]),
],
@@ -313,6 +339,7 @@ class Activity implements IExtension {
'apps' => [
self::FILTER_FILES => [
'id' => self::FILTER_FILES,
+ 'icon' => 'icon-files-dark',
'name' => (string) $this->l->t('Files'),
'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::FILTER_FILES]),
],
diff --git a/apps/files_sharing/css/sharetabview.css b/apps/files_sharing/css/sharetabview.css
index e048b7564ac..4190c43dd2f 100644
--- a/apps/files_sharing/css/sharetabview.css
+++ b/apps/files_sharing/css/sharetabview.css
@@ -57,6 +57,16 @@
vertical-align:text-bottom; /* properly align icons */
}
+#shareWithList .sharingOptionsGroup .icon-more,
+#shareWithList .unshare .icon-delete {
+ vertical-align: sub;
+}
+
+#shareWithList .unshare .icon-delete {
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
#shareWithList label input[type=checkbox]{
margin-left: 0;
position: relative;
diff --git a/apps/files_sharing/lib/Activity.php b/apps/files_sharing/lib/Activity.php
index f69f86175f8..4d57cc8c7b2 100644
--- a/apps/files_sharing/lib/Activity.php
+++ b/apps/files_sharing/lib/Activity.php
@@ -429,6 +429,7 @@ class Activity implements IExtension {
'top' => [
self::FILTER_SHARES => [
'id' => self::FILTER_SHARES,
+ 'icon' => 'icon-share',
'name' => (string) $l->t('Shares'),
'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::FILTER_SHARES]),
],
diff --git a/apps/files_sharing/tests/EtagPropagationTest.php b/apps/files_sharing/tests/EtagPropagationTest.php
index 977f98f0497..4aba9e29113 100644
--- a/apps/files_sharing/tests/EtagPropagationTest.php
+++ b/apps/files_sharing/tests/EtagPropagationTest.php
@@ -34,7 +34,7 @@ use OC\Files\View;
/**
* Class EtagPropagationTest
*
- * @group DB
+ * @group SLOWDB
*
* @package OCA\Files_Sharing\Tests
*/
diff --git a/apps/files_sharing/tests/GroupEtagPropagationTest.php b/apps/files_sharing/tests/GroupEtagPropagationTest.php
index 0ff3a4c01c6..eeb3c06bc59 100644
--- a/apps/files_sharing/tests/GroupEtagPropagationTest.php
+++ b/apps/files_sharing/tests/GroupEtagPropagationTest.php
@@ -28,7 +28,7 @@ use OC\Files\Filesystem;
use OC\Files\View;
/**
- * @group DB
+ * @group SLOWDB
*
* @package OCA\Files_Sharing\Tests
*/
diff --git a/apps/files_sharing/tests/SharedMountTest.php b/apps/files_sharing/tests/SharedMountTest.php
index 7427304eb14..5f769852dc8 100644
--- a/apps/files_sharing/tests/SharedMountTest.php
+++ b/apps/files_sharing/tests/SharedMountTest.php
@@ -31,7 +31,7 @@ namespace OCA\Files_Sharing\Tests;
/**
* Class SharedMountTest
*
- * @group DB
+ * @group SLOWDB
*/
class SharedMountTest extends TestCase {
diff --git a/apps/systemtags/lib/Activity/Extension.php b/apps/systemtags/lib/Activity/Extension.php
index c7342bd2af7..9fac2ddbc62 100644
--- a/apps/systemtags/lib/Activity/Extension.php
+++ b/apps/systemtags/lib/Activity/Extension.php
@@ -98,7 +98,7 @@ class Extension implements IExtension {
public function getTypeIcon($type) {
switch ($type) {
case self::APP_NAME:
- return false;
+ return 'icon-tag';
}
return false;
diff --git a/apps/twofactor_backupcodes/appinfo/info.xml b/apps/twofactor_backupcodes/appinfo/info.xml
index 45e9b022bbf..7b9ef2d90e4 100644
--- a/apps/twofactor_backupcodes/appinfo/info.xml
+++ b/apps/twofactor_backupcodes/appinfo/info.xml
@@ -6,11 +6,11 @@
<licence>agpl</licence>
<author>Christoph Wurst</author>
<version>1.0.0</version>
- <namespace>TwoFactor_BackupCodes</namespace>
+ <namespace>TwoFactorBackupCodes</namespace>
<category>other</category>
<two-factor-providers>
- <provider>OCA\TwoFactor_BackupCodes\Provider\BackupCodesProvider</provider>
+ <provider>OCA\TwoFactorBackupCodes\Provider\BackupCodesProvider</provider>
</two-factor-providers>
<dependencies>
diff --git a/apps/twofactor_backupcodes/lib/Controller/SettingsController.php b/apps/twofactor_backupcodes/lib/Controller/SettingsController.php
index 5130357baa5..fed7634643d 100644
--- a/apps/twofactor_backupcodes/lib/Controller/SettingsController.php
+++ b/apps/twofactor_backupcodes/lib/Controller/SettingsController.php
@@ -20,9 +20,9 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Controller;
+namespace OCA\TwoFactorBackupCodes\Controller;
-use OCA\TwoFactor_BackupCodes\Service\BackupCodeStorage;
+use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
diff --git a/apps/twofactor_backupcodes/lib/Db/BackupCode.php b/apps/twofactor_backupcodes/lib/Db/BackupCode.php
index a59a414e189..cff515dd4aa 100644
--- a/apps/twofactor_backupcodes/lib/Db/BackupCode.php
+++ b/apps/twofactor_backupcodes/lib/Db/BackupCode.php
@@ -19,7 +19,7 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Db;
+namespace OCA\TwoFactorBackupCodes\Db;
use OCP\AppFramework\Db\Entity;
diff --git a/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php b/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php
index 8acdfa45aae..8b56724fcec 100644
--- a/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php
+++ b/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php
@@ -19,8 +19,7 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Db;
-
+namespace OCA\TwoFactorBackupCodes\Db;
use OCP\AppFramework\Db\Mapper;
use OCP\DB\QueryBuilder\IQueryBuilder;
diff --git a/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php b/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php
index 91975dfad8d..902f7c783d5 100644
--- a/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php
+++ b/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php
@@ -20,9 +20,9 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Provider;
+namespace OCA\TwoFactorBackupCodes\Provider;
-use OCA\TwoFactor_BackupCodes\Service\BackupCodeStorage;
+use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\IL10N;
use OCP\IUser;
diff --git a/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php b/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php
index 9c78581255f..bb10081bb54 100644
--- a/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php
+++ b/apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php
@@ -20,10 +20,10 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Service;
+namespace OCA\TwoFactorBackupCodes\Service;
-use OCA\TwoFactor_BackupCodes\Db\BackupCode;
-use OCA\TwoFactor_BackupCodes\Db\BackupCodeMapper;
+use OCA\TwoFactorBackupCodes\Db\BackupCode;
+use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper;
use OCP\IUser;
use OCP\Security\IHasher;
use OCP\Security\ISecureRandom;
diff --git a/apps/twofactor_backupcodes/tests/Integration/Db/BackupCodeMapperTest.php b/apps/twofactor_backupcodes/tests/Integration/Db/BackupCodeMapperTest.php
index bb97f929d7a..c788262231a 100644
--- a/apps/twofactor_backupcodes/tests/Integration/Db/BackupCodeMapperTest.php
+++ b/apps/twofactor_backupcodes/tests/Integration/Db/BackupCodeMapperTest.php
@@ -20,10 +20,10 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Tests\Integration\Db;
+namespace OCA\TwoFactorBackupCodes\Tests\Integration\Db;
-use OCA\TwoFactor_BackupCodes\Db\BackupCode;
-use OCA\TwoFactor_BackupCodes\Db\BackupCodeMapper;
+use OCA\TwoFactorBackupCodes\Db\BackupCode;
+use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper;
use OCP\IDBConnection;
use OCP\IUser;
use Test\TestCase;
diff --git a/apps/twofactor_backupcodes/tests/Integration/Service/BackupCodeStorageTest.php b/apps/twofactor_backupcodes/tests/Integration/Service/BackupCodeStorageTest.php
index 934c44fb0db..6d28b4fa758 100644
--- a/apps/twofactor_backupcodes/tests/Integration/Service/BackupCodeStorageTest.php
+++ b/apps/twofactor_backupcodes/tests/Integration/Service/BackupCodeStorageTest.php
@@ -20,9 +20,9 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Tests\Integration\Service;
+namespace OCA\TwoFactorBackupCodes\Tests\Integration\Service;
-use OCA\TwoFactor_BackupCodes\Service\BackupCodeStorage;
+use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage;
use Test\TestCase;
/**
diff --git a/apps/twofactor_backupcodes/tests/Unit/Controller/SettingsControllerTest.php b/apps/twofactor_backupcodes/tests/Unit/Controller/SettingsControllerTest.php
index 918d1a8c64d..c7ac33467b3 100644
--- a/apps/twofactor_backupcodes/tests/Unit/Controller/SettingsControllerTest.php
+++ b/apps/twofactor_backupcodes/tests/Unit/Controller/SettingsControllerTest.php
@@ -20,10 +20,10 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Tests\Unit\Controller;
+namespace OCA\TwoFactorBackupCodes\Tests\Unit\Controller;
-use OCA\TwoFactor_BackupCodes\Controller\SettingsController;
-use OCA\TwoFactor_BackupCodes\Service\BackupCodeStorage;
+use OCA\TwoFactorBackupCodes\Controller\SettingsController;
+use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage;
use OCP\IRequest;
use OCP\IUser;
use OCP\IUserSession;
diff --git a/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php b/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php
index a744a44e609..5a99cfadd41 100644
--- a/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php
+++ b/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php
@@ -20,10 +20,10 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Tests\Unit\Provider;
+namespace OCA\TwoFactorBackupCodes\Tests\Unit\Provider;
-use OCA\TwoFactor_BackupCodes\Provider\BackupCodesProvider;
-use OCA\TwoFactor_BackupCodes\Service\BackupCodeStorage;
+use OCA\TwoFactorBackupCodes\Provider\BackupCodesProvider;
+use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage;
use OCP\IL10N;
use OCP\IUser;
use OCP\Template;
diff --git a/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php b/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php
index 1ebf445bb0f..7a1132b064b 100644
--- a/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php
+++ b/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php
@@ -20,11 +20,11 @@
*
*/
-namespace OCA\TwoFactor_BackupCodes\Tests\Unit\Service;
+namespace OCA\TwoFactorBackupCodes\Tests\Unit\Service;
-use OCA\TwoFactor_BackupCodes\Db\BackupCode;
-use OCA\TwoFactor_BackupCodes\Db\BackupCodeMapper;
-use OCA\TwoFactor_BackupCodes\Service\BackupCodeStorage;
+use OCA\TwoFactorBackupCodes\Db\BackupCode;
+use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper;
+use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage;
use OCP\IUser;
use OCP\Security\IHasher;
use OCP\Security\ISecureRandom;
diff --git a/apps/updatenotification/l10n/cs_CZ.js b/apps/updatenotification/l10n/cs_CZ.js
index 23af7c686d1..e3b558d5efd 100644
--- a/apps/updatenotification/l10n/cs_CZ.js
+++ b/apps/updatenotification/l10n/cs_CZ.js
@@ -2,11 +2,12 @@ OC.L10N.register(
"updatenotification",
{
"Update notifications" : "Aktualizovat upozornění",
+ "Could not start updater, please try the manual update" : "Nepodařilo se spustit aktualizátor, zkuste ruční aktualizaci",
"{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.",
"Channel updated" : "Kanál aktualizován",
- "Nextcloud core" : "Nextcloud Core",
"Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.",
"A new version is available: %s" : "Je dostupná nová verze: %s",
+ "Open updater" : "Otevřít aktualizátor",
"Download now" : "Stáhnout nyní",
"Your version is up to date." : "Používáte nejnovější verzi.",
"Checked on %s" : "Zkontrolováno %s",
@@ -16,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Je možné pouze upozornění na dostupné aktualizace aplikací.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.",
"The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru.",
+ "Nextcloud core" : "Nextcloud Core",
"Updater" : "Automatické aktualizace"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/updatenotification/l10n/cs_CZ.json b/apps/updatenotification/l10n/cs_CZ.json
index 95b10919df0..d1ba2465280 100644
--- a/apps/updatenotification/l10n/cs_CZ.json
+++ b/apps/updatenotification/l10n/cs_CZ.json
@@ -1,10 +1,11 @@
{ "translations": {
"Update notifications" : "Aktualizovat upozornění",
+ "Could not start updater, please try the manual update" : "Nepodařilo se spustit aktualizátor, zkuste ruční aktualizaci",
"{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.",
"Channel updated" : "Kanál aktualizován",
- "Nextcloud core" : "Nextcloud Core",
"Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.",
"A new version is available: %s" : "Je dostupná nová verze: %s",
+ "Open updater" : "Otevřít aktualizátor",
"Download now" : "Stáhnout nyní",
"Your version is up to date." : "Používáte nejnovější verzi.",
"Checked on %s" : "Zkontrolováno %s",
@@ -14,6 +15,7 @@
"Only notification for app updates are available." : "Je možné pouze upozornění na dostupné aktualizace aplikací.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.",
"The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru.",
+ "Nextcloud core" : "Nextcloud Core",
"Updater" : "Automatické aktualizace"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js
index 30cd705a003..6046f097a2e 100644
--- a/apps/updatenotification/l10n/de.js
+++ b/apps/updatenotification/l10n/de.js
@@ -5,7 +5,6 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "Aktualisierungsfunktion konnte nicht gestartet werden, bitte versuche ein mauelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
"Channel updated" : "Kanal aktualisiert",
- "Nextcloud core" : "Nextcloud Kern",
"Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater öffnen",
@@ -18,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
+ "Nextcloud core" : "Nextcloud Kern",
"Updater" : "Updater"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json
index a4c36706edf..4916dbda827 100644
--- a/apps/updatenotification/l10n/de.json
+++ b/apps/updatenotification/l10n/de.json
@@ -3,7 +3,6 @@
"Could not start updater, please try the manual update" : "Aktualisierungsfunktion konnte nicht gestartet werden, bitte versuche ein mauelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
"Channel updated" : "Kanal aktualisiert",
- "Nextcloud core" : "Nextcloud Kern",
"Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater öffnen",
@@ -16,6 +15,7 @@
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
+ "Nextcloud core" : "Nextcloud Kern",
"Updater" : "Updater"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js
index 45e238a41e3..41cdb706976 100644
--- a/apps/updatenotification/l10n/de_DE.js
+++ b/apps/updatenotification/l10n/de_DE.js
@@ -5,7 +5,6 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "Aktualisierungsfunktion konnte nicht gestartet werden, bitte versuchen Sie ein mauelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
"Channel updated" : "Kanal aktualisiert",
- "Nextcloud core" : "Nextcloud Kern",
"Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater öffnen",
@@ -18,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
+ "Nextcloud core" : "Nextcloud Kern",
"Updater" : "Updater"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json
index 5831fd491c8..fedfdec83ec 100644
--- a/apps/updatenotification/l10n/de_DE.json
+++ b/apps/updatenotification/l10n/de_DE.json
@@ -3,7 +3,6 @@
"Could not start updater, please try the manual update" : "Aktualisierungsfunktion konnte nicht gestartet werden, bitte versuchen Sie ein mauelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
"Channel updated" : "Kanal aktualisiert",
- "Nextcloud core" : "Nextcloud Kern",
"Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater öffnen",
@@ -16,6 +15,7 @@
"Only notification for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
+ "Nextcloud core" : "Nextcloud Kern",
"Updater" : "Updater"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js
index 3695cd2a60f..7663f200744 100644
--- a/apps/updatenotification/l10n/fr.js
+++ b/apps/updatenotification/l10n/fr.js
@@ -5,7 +5,6 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "Impossible de démarrer le système de mise à jour, s'il vous plaît essayer la mise à jour manuelle",
"{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.",
"Channel updated" : "Canal de mise à jour modifié",
- "Nextcloud core" : "Noyau Nextcloud",
"Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.",
"A new version is available: %s" : "Une nouvelle version est disponible : %s",
"Open updater" : "Ouvrir le système de mise à jour",
@@ -18,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Seules les notifications pour les mises à jour d'applications sont diponibles.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur.",
"The selected update channel does not support updates of the server." : "Le canal de mises à jour sélectionné ne supporte pas les mises à jour du serveur.",
+ "Nextcloud core" : "Noyau Nextcloud",
"Updater" : "Mises à jour"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json
index 4c89f78d1f0..4496331b780 100644
--- a/apps/updatenotification/l10n/fr.json
+++ b/apps/updatenotification/l10n/fr.json
@@ -3,7 +3,6 @@
"Could not start updater, please try the manual update" : "Impossible de démarrer le système de mise à jour, s'il vous plaît essayer la mise à jour manuelle",
"{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.",
"Channel updated" : "Canal de mise à jour modifié",
- "Nextcloud core" : "Noyau Nextcloud",
"Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.",
"A new version is available: %s" : "Une nouvelle version est disponible : %s",
"Open updater" : "Ouvrir le système de mise à jour",
@@ -16,6 +15,7 @@
"Only notification for app updates are available." : "Seules les notifications pour les mises à jour d'applications sont diponibles.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur.",
"The selected update channel does not support updates of the server." : "Le canal de mises à jour sélectionné ne supporte pas les mises à jour du serveur.",
+ "Nextcloud core" : "Noyau Nextcloud",
"Updater" : "Mises à jour"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/hu_HU.js b/apps/updatenotification/l10n/hu_HU.js
index a7747190c3a..6c0029df13f 100644
--- a/apps/updatenotification/l10n/hu_HU.js
+++ b/apps/updatenotification/l10n/hu_HU.js
@@ -5,7 +5,6 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "Nem sikerült elindítani a frissítőt, kérlek próbáld a manuális frissítést",
"{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.",
"Channel updated" : "Csatorna frissítve",
- "Nextcloud core" : "Nextcloud mag",
"Update for %1$s to version %2$s is available." : "%1$s frissíthető %2$s verzióra.",
"A new version is available: %s" : "Új verzió érhető el: %s",
"Open updater" : "Frissítő megnyitása",
@@ -18,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Csak az értesítő alkalmazás frissítései érhetők el.",
"The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor.",
"The selected update channel does not support updates of the server." : "A kiválasztott frissítése csatorna nem támogatja a szerver frissítéseit.",
+ "Nextcloud core" : "Nextcloud mag",
"Updater" : "Frissítéskezelő"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/hu_HU.json b/apps/updatenotification/l10n/hu_HU.json
index 90525b47df8..8780228072a 100644
--- a/apps/updatenotification/l10n/hu_HU.json
+++ b/apps/updatenotification/l10n/hu_HU.json
@@ -3,7 +3,6 @@
"Could not start updater, please try the manual update" : "Nem sikerült elindítani a frissítőt, kérlek próbáld a manuális frissítést",
"{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.",
"Channel updated" : "Csatorna frissítve",
- "Nextcloud core" : "Nextcloud mag",
"Update for %1$s to version %2$s is available." : "%1$s frissíthető %2$s verzióra.",
"A new version is available: %s" : "Új verzió érhető el: %s",
"Open updater" : "Frissítő megnyitása",
@@ -16,6 +15,7 @@
"Only notification for app updates are available." : "Csak az értesítő alkalmazás frissítései érhetők el.",
"The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor.",
"The selected update channel does not support updates of the server." : "A kiválasztott frissítése csatorna nem támogatja a szerver frissítéseit.",
+ "Nextcloud core" : "Nextcloud mag",
"Updater" : "Frissítéskezelő"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js
index 088002b3d0f..656f8020430 100644
--- a/apps/updatenotification/l10n/is.js
+++ b/apps/updatenotification/l10n/is.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Update notifications" : "Tilkynningar um uppfærslu",
"{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.",
"Channel updated" : "Rás uppfærð",
- "Nextcloud core" : "Nextcloud kjarni",
"Update for %1$s to version %2$s is available." : "Upfærsla %1$s í útgáfu %2$s er tiltæk.",
"A new version is available: %s" : "Ný útgáfa er tiltæk: %s",
"Your version is up to date." : "Útgáfan þín er af nýjustu gerð.",
@@ -15,6 +14,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.",
"The selected update channel does not support updates of the server." : "Valda uppfærslurásin styður ekki uppfærslur fyrir vefþjóninn.",
+ "Nextcloud core" : "Nextcloud kjarni",
"Updater" : "Uppfærslustýring"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json
index dffe445f297..b779927ea49 100644
--- a/apps/updatenotification/l10n/is.json
+++ b/apps/updatenotification/l10n/is.json
@@ -2,7 +2,6 @@
"Update notifications" : "Tilkynningar um uppfærslu",
"{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.",
"Channel updated" : "Rás uppfærð",
- "Nextcloud core" : "Nextcloud kjarni",
"Update for %1$s to version %2$s is available." : "Upfærsla %1$s í útgáfu %2$s er tiltæk.",
"A new version is available: %s" : "Ný útgáfa er tiltæk: %s",
"Your version is up to date." : "Útgáfan þín er af nýjustu gerð.",
@@ -13,6 +12,7 @@
"Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.",
"The selected update channel does not support updates of the server." : "Valda uppfærslurásin styður ekki uppfærslur fyrir vefþjóninn.",
+ "Nextcloud core" : "Nextcloud kjarni",
"Updater" : "Uppfærslustýring"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/it.js b/apps/updatenotification/l10n/it.js
index c28c310b1c5..8cb65e77643 100644
--- a/apps/updatenotification/l10n/it.js
+++ b/apps/updatenotification/l10n/it.js
@@ -5,7 +5,6 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "Impossibile avviare lo strumento di aggiornamento, prova l'aggiornamento manuale",
"{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.",
"Channel updated" : "Canale aggiornato",
- "Nextcloud core" : "Componente principale di Nextcloud",
"Update for %1$s to version %2$s is available." : "È disponibile l'aggiornamento di %1$s alla versione %2$s.",
"A new version is available: %s" : "Una nuova versione è disponibile: %s",
"Open updater" : "Apri strumento di aggiornamento",
@@ -18,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Sono disponibili solo le notifiche per gli aggiornamenti delle applicazioni.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server.",
"The selected update channel does not support updates of the server." : "Il canale di aggiornamento selezionato non supporta gli aggiornamenti del server.",
+ "Nextcloud core" : "Componente principale di Nextcloud",
"Updater" : "Strumento di aggiornamento"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/it.json b/apps/updatenotification/l10n/it.json
index b789ab5f12a..2da36e80bbf 100644
--- a/apps/updatenotification/l10n/it.json
+++ b/apps/updatenotification/l10n/it.json
@@ -3,7 +3,6 @@
"Could not start updater, please try the manual update" : "Impossibile avviare lo strumento di aggiornamento, prova l'aggiornamento manuale",
"{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.",
"Channel updated" : "Canale aggiornato",
- "Nextcloud core" : "Componente principale di Nextcloud",
"Update for %1$s to version %2$s is available." : "È disponibile l'aggiornamento di %1$s alla versione %2$s.",
"A new version is available: %s" : "Una nuova versione è disponibile: %s",
"Open updater" : "Apri strumento di aggiornamento",
@@ -16,6 +15,7 @@
"Only notification for app updates are available." : "Sono disponibili solo le notifiche per gli aggiornamenti delle applicazioni.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server.",
"The selected update channel does not support updates of the server." : "Il canale di aggiornamento selezionato non supporta gli aggiornamenti del server.",
+ "Nextcloud core" : "Componente principale di Nextcloud",
"Updater" : "Strumento di aggiornamento"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/nb_NO.js b/apps/updatenotification/l10n/nb_NO.js
index c0201e09731..f2872d2507c 100644
--- a/apps/updatenotification/l10n/nb_NO.js
+++ b/apps/updatenotification/l10n/nb_NO.js
@@ -5,7 +5,6 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, vennligst prøv å oppdatere manuelt",
"{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.",
"Channel updated" : "Kanal oppdatert",
- "Nextcloud core" : "Nextcloud kjerne",
"Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.",
"A new version is available: %s" : "En ny versjon er tilgjengelig: %s",
"Open updater" : "Åpne oppdaterer",
@@ -18,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Kun varsler for app oppdateringer er tilgjengelig.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør at dedikerte varsler til denne serveren utdatert.",
"The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren.",
+ "Nextcloud core" : "Nextcloud kjerne",
"Updater" : "Oppdaterer"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/nb_NO.json b/apps/updatenotification/l10n/nb_NO.json
index 9e3afa23d8f..be25e8ad75d 100644
--- a/apps/updatenotification/l10n/nb_NO.json
+++ b/apps/updatenotification/l10n/nb_NO.json
@@ -3,7 +3,6 @@
"Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, vennligst prøv å oppdatere manuelt",
"{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.",
"Channel updated" : "Kanal oppdatert",
- "Nextcloud core" : "Nextcloud kjerne",
"Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.",
"A new version is available: %s" : "En ny versjon er tilgjengelig: %s",
"Open updater" : "Åpne oppdaterer",
@@ -16,6 +15,7 @@
"Only notification for app updates are available." : "Kun varsler for app oppdateringer er tilgjengelig.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør at dedikerte varsler til denne serveren utdatert.",
"The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren.",
+ "Nextcloud core" : "Nextcloud kjerne",
"Updater" : "Oppdaterer"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/nl.js b/apps/updatenotification/l10n/nl.js
index 587a3502329..1133ed466b2 100644
--- a/apps/updatenotification/l10n/nl.js
+++ b/apps/updatenotification/l10n/nl.js
@@ -5,7 +5,6 @@ OC.L10N.register(
"Could not start updater, please try the manual update" : "Kon de updater niet starten, probeer alsjeblieft de handmatige update",
"{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.",
"Channel updated" : "Kanaal bijgewerkt",
- "Nextcloud core" : "Nextcloud core",
"Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.",
"A new version is available: %s" : "Er is een nieuwe versie beschikbaar: %s",
"Open updater" : "Open updater",
@@ -18,6 +17,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Er zijn alleen meldingen voor apps beschikbaar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren.",
"The selected update channel does not support updates of the server." : "Het geselecteerde updatekanaal ondersteunt geen updates voor de server.",
+ "Nextcloud core" : "Nextcloud core",
"Updater" : "Updater"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/nl.json b/apps/updatenotification/l10n/nl.json
index e3e0ec58a78..15d9589a7d9 100644
--- a/apps/updatenotification/l10n/nl.json
+++ b/apps/updatenotification/l10n/nl.json
@@ -3,7 +3,6 @@
"Could not start updater, please try the manual update" : "Kon de updater niet starten, probeer alsjeblieft de handmatige update",
"{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.",
"Channel updated" : "Kanaal bijgewerkt",
- "Nextcloud core" : "Nextcloud core",
"Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.",
"A new version is available: %s" : "Er is een nieuwe versie beschikbaar: %s",
"Open updater" : "Open updater",
@@ -16,6 +15,7 @@
"Only notification for app updates are available." : "Er zijn alleen meldingen voor apps beschikbaar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren.",
"The selected update channel does not support updates of the server." : "Het geselecteerde updatekanaal ondersteunt geen updates voor de server.",
+ "Nextcloud core" : "Nextcloud core",
"Updater" : "Updater"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js
index e69dbc37263..c8ed0eabaff 100644
--- a/apps/updatenotification/l10n/ru.js
+++ b/apps/updatenotification/l10n/ru.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Update notifications" : "Уведомления об обновлениях",
"{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.",
"Channel updated" : "Канал обновлен.",
- "Nextcloud core" : "Nextcloud core",
"Update for %1$s to version %2$s is available." : "Доступно обновление для %1$s до версии %2$s.",
"A new version is available: %s" : "Доступна новая версия: %s",
"Your version is up to date." : "Версия не требует обновления.",
@@ -15,6 +14,7 @@ OC.L10N.register(
"Only notification for app updates are available." : "Только уведомления об обновлении приложений доступны.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел.",
"The selected update channel does not support updates of the server." : "Выбранный канал обновлений не поддерживает обновление сервера.",
+ "Nextcloud core" : "Nextcloud core",
"Updater" : "Обновление"
},
"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/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json
index c095234f262..3d33f069b71 100644
--- a/apps/updatenotification/l10n/ru.json
+++ b/apps/updatenotification/l10n/ru.json
@@ -2,7 +2,6 @@
"Update notifications" : "Уведомления об обновлениях",
"{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.",
"Channel updated" : "Канал обновлен.",
- "Nextcloud core" : "Nextcloud core",
"Update for %1$s to version %2$s is available." : "Доступно обновление для %1$s до версии %2$s.",
"A new version is available: %s" : "Доступна новая версия: %s",
"Your version is up to date." : "Версия не требует обновления.",
@@ -13,6 +12,7 @@
"Only notification for app updates are available." : "Только уведомления об обновлении приложений доступны.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел.",
"The selected update channel does not support updates of the server." : "Выбранный канал обновлений не поддерживает обновление сервера.",
+ "Nextcloud core" : "Nextcloud core",
"Updater" : "Обновление"
},"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/updatenotification/lib/Notification/BackgroundJob.php b/apps/updatenotification/lib/Notification/BackgroundJob.php
index 70cde58bcb4..3a1aa5e0f16 100644
--- a/apps/updatenotification/lib/Notification/BackgroundJob.php
+++ b/apps/updatenotification/lib/Notification/BackgroundJob.php
@@ -98,8 +98,8 @@ class BackgroundJob extends TimedJob {
$status = $updater->check();
if (isset($status['version'])) {
- $url = $this->urlGenerator->linkToRouteAbsolute('settings_admin') . '#updater';
- $this->createNotifications('core', $status['version'], $url);
+ $url = $this->urlGenerator->linkToRouteAbsolute('settings.AdminSettings.index') . '#updater';
+ $this->createNotifications('core', $status['version'], $url, $status['versionstring']);
}
}
@@ -123,8 +123,9 @@ class BackgroundJob extends TimedJob {
* @param string $app
* @param string $version
* @param string $url
+ * @param string $visibleVersion
*/
- protected function createNotifications($app, $version, $url) {
+ protected function createNotifications($app, $version, $url, $visibleVersion = '') {
$lastNotification = $this->config->getAppValue('updatenotification', $app, false);
if ($lastNotification === $version) {
// We already notified about this update
@@ -139,9 +140,14 @@ class BackgroundJob extends TimedJob {
$notification->setApp('updatenotification')
->setDateTime(new \DateTime())
->setObject($app, $version)
- ->setSubject('update_available')
->setLink($url);
+ if ($visibleVersion !== '') {
+ $notification->setSubject('update_available', ['version' => $visibleVersion]);
+ } else {
+ $notification->setSubject('update_available');
+ }
+
foreach ($this->getUsersToNotify() as $uid) {
$notification->setUser($uid);
$this->notificationManager->notify($notification);
diff --git a/apps/updatenotification/lib/Notification/Notifier.php b/apps/updatenotification/lib/Notification/Notifier.php
index 48ce31f7374..3e1bc94425f 100644
--- a/apps/updatenotification/lib/Notification/Notifier.php
+++ b/apps/updatenotification/lib/Notification/Notifier.php
@@ -66,9 +66,10 @@ class Notifier implements INotifier {
$l = $this->l10NFactory->get('updatenotification', $languageCode);
if ($notification->getObjectType() === 'core') {
- $appName = $l->t('Nextcloud core');
-
$this->updateAlreadyInstalledCheck($notification, $this->getCoreVersions());
+
+ $parameters = $notification->getSubjectParameters();
+ $notification->setParsedSubject($l->t('Update to %1$s is available.', [$parameters['version']]));
} else {
$appInfo = $this->getAppInfo($notification->getObjectType());
$appName = ($appInfo === null) ? $notification->getObjectType() : $appInfo['name'];
@@ -76,9 +77,10 @@ class Notifier implements INotifier {
if (isset($this->appVersions[$notification->getObjectType()])) {
$this->updateAlreadyInstalledCheck($notification, $this->appVersions[$notification->getObjectType()]);
}
+
+ $notification->setParsedSubject($l->t('Update for %1$s to version %2$s is available.', [$appName, $notification->getObjectId()]));
}
- $notification->setParsedSubject($l->t('Update for %1$s to version %2$s is available.', [$appName, $notification->getObjectId()]));
return $notification;
}
diff --git a/apps/updatenotification/tests/Notification/BackgroundJobTest.php b/apps/updatenotification/tests/Notification/BackgroundJobTest.php
index c3a4c28830d..911b1cc8e2f 100644
--- a/apps/updatenotification/tests/Notification/BackgroundJobTest.php
+++ b/apps/updatenotification/tests/Notification/BackgroundJobTest.php
@@ -104,20 +104,23 @@ class BackgroundJobTest extends TestCase {
public function dataCheckCoreUpdate() {
return [
- ['daily', null, null],
- ['git', null, null],
- ['beta', false, null],
+ ['daily', null, null, null],
+ ['git', null, null, null],
+ ['beta', false, null, null],
['beta', [
'version' => '9.2.0',
- ], '9.2.0'],
- ['stable', false, null],
+ 'versionstring' => 'Nextcloud 11.0.0',
+ ], '9.2.0', 'Nextcloud 11.0.0'],
+ ['stable', false, null, null],
['stable', [
'version' => '9.2.0',
- ], '9.2.0'],
- ['production', false, null],
+ 'versionstring' => 'Nextcloud 11.0.0',
+ ], '9.2.0', 'Nextcloud 11.0.0'],
+ ['production', false, null, null],
['production', [
'version' => '9.2.0',
- ], '9.2.0'],
+ 'versionstring' => 'Nextcloud 11.0.0',
+ ], '9.2.0', 'Nextcloud 11.0.0'],
];
}
@@ -127,8 +130,9 @@ class BackgroundJobTest extends TestCase {
* @param string $channel
* @param mixed $versionCheck
* @param null|string $notification
+ * @param null|string $readableVersion
*/
- public function testCheckCoreUpdate($channel, $versionCheck, $notification) {
+ public function testCheckCoreUpdate($channel, $versionCheck, $notification, $readableVersion) {
$job = $this->getJob([
'getChannel',
'createVersionCheck',
@@ -164,12 +168,12 @@ class BackgroundJobTest extends TestCase {
} else {
$this->urlGenerator->expects($this->once())
->method('linkToRouteAbsolute')
- ->with('settings_admin')
+ ->with('settings.AdminSettings.index')
->willReturn('admin-url');
$job->expects($this->once())
->method('createNotifications')
- ->willReturn('core', $notification, 'admin-url#updater');
+ ->willReturn('core', $notification, 'admin-url#updater', $readableVersion);
}
$this->invokePrivate($job, 'checkCoreUpdate');
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index 3d247663b3f..b2fcac10641 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -6,6 +6,7 @@
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
*
* @license AGPL-3.0
*
@@ -32,6 +33,7 @@ use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\Image;
use OCP\IUserManager;
+use OCP\Util;
/**
* User
@@ -111,6 +113,14 @@ class User {
IConfig $config, FilesystemHelper $fs, Image $image,
LogWrapper $log, IAvatarManager $avatarManager, IUserManager $userManager) {
+ if ($username === null) {
+ $log->log("uid for '$dn' must not be null!", Util::ERROR);
+ throw new \InvalidArgumentException('uid must not be null!');
+ } else if ($username === '') {
+ $log->log("uid for '$dn' must not be an empty string", Util::ERROR);
+ throw new \InvalidArgumentException('uid must not be an empty string!');
+ }
+
$this->access = $access;
$this->connection = $access->getConnection();
$this->config = $config;
diff --git a/autotest.sh b/autotest.sh
index 2dfa961a1a2..eca3d81c048 100755
--- a/autotest.sh
+++ b/autotest.sh
@@ -293,11 +293,14 @@ function execute_tests {
export XDEBUG_CONFIG=$_XDEBUG_CONFIG
fi
GROUP=''
+ if [ "$TEST_SELECTION" == "QUICKDB" ]; then
+ GROUP='--group DB --exclude-group=SLOWDB'
+ fi
if [ "$TEST_SELECTION" == "DB" ]; then
- GROUP='--group DB'
+ GROUP='--group DB,SLOWDB'
fi
if [ "$TEST_SELECTION" == "NODB" ]; then
- GROUP='--exclude-group DB'
+ GROUP='--exclude-group DB,SLOWDB'
fi
COVER=''
diff --git a/build/integration/features/bootstrap/BasicStructure.php b/build/integration/features/bootstrap/BasicStructure.php
index df46d0b1983..30d78ebd23a 100644
--- a/build/integration/features/bootstrap/BasicStructure.php
+++ b/build/integration/features/bootstrap/BasicStructure.php
@@ -313,6 +313,13 @@ trait BasicStructure {
file_put_contents("../../data/$user/files" . "$filename", "$text");
}
+ public function createFileSpecificSize($name, $size){
+ $file = fopen("data/" . "$name", 'w');
+ fseek($file, $size - 1 ,SEEK_CUR);
+ fwrite($file,'a'); // write a dummy char at SIZE position
+ fclose($file);
+ }
+
/**
* @BeforeSuite
*/
diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php
index 02f3e82a4c3..ad29f28e105 100644
--- a/build/integration/features/bootstrap/WebDav.php
+++ b/build/integration/features/bootstrap/WebDav.php
@@ -53,9 +53,9 @@ trait WebDav {
/**
* @return string
*/
- public function getFilesPath() {
- if ($this->davPath === 'remote.php/dav') {
- $basePath = '/files/' . $this->currentUser . '/';
+ public function getFilesPath($user) {
+ if ($this->davPath === "remote.php/dav") {
+ $basePath = '/files/' . $user . '/';
} else {
$basePath = '/';
}
@@ -262,12 +262,13 @@ trait WebDav {
/**
* @Then /^as "([^"]*)" the (file|folder|entry) "([^"]*)" does not exist$/
* @param string $user
+ * @param string $entry
* @param string $path
* @param \Behat\Gherkin\Node\TableNode|null $propertiesTable
*/
public function asTheFileOrFolderDoesNotExist($user, $entry, $path) {
$client = $this->getSabreClient($user);
- $response = $client->request('HEAD', $this->makeSabrePath($path));
+ $response = $client->request('HEAD', $this->makeSabrePath($user, $path));
if ($response['statusCode'] !== 404) {
throw new \Exception($entry . ' "' . $path . '" expected to not exist (status code ' . $response['statusCode'] . ', expected 404)');
}
@@ -278,8 +279,8 @@ trait WebDav {
/**
* @Then /^as "([^"]*)" the (file|folder|entry) "([^"]*)" exists$/
* @param string $user
+ * @param string $entry
* @param string $path
- * @param \Behat\Gherkin\Node\TableNode|null $propertiesTable
*/
public function asTheFileOrFolderExists($user, $entry, $path) {
$this->response = $this->listFolder($user, $path, 0);
@@ -362,13 +363,13 @@ trait WebDav {
];
}
- $response = $client->propfind($this->makeSabrePath($path), $properties, $folderDepth);
+ $response = $client->propfind($this->makeSabrePath($user, $path), $properties, $folderDepth);
return $response;
}
- public function makeSabrePath($path) {
- return $this->encodePath($this->davPath . '/' . ltrim($path, '/'));
+ public function makeSabrePath($user, $path) {
+ return $this->encodePath($this->davPath . $this->getFilesPath($user) . ltrim($path, '/'));
}
public function getSabreClient($user) {
@@ -425,6 +426,21 @@ trait WebDav {
}
/**
+ * @When User :user adds a file of :bytes bytes to :destination
+ * @param string $user
+ * @param string $bytes
+ * @param string $destination
+ */
+ public function userAddsAFileTo($user, $bytes, $destination){
+ $filename = "filespecificSize.txt";
+ $this->createFileSpecificSize($filename, $bytes);
+ PHPUnit_Framework_Assert::assertEquals(1, file_exists("data/$filename"));
+ $this->userUploadsAFileTo($user, "data/$filename", $destination);
+ $this->removeFile("data/", $filename);
+ PHPUnit_Framework_Assert::assertEquals(1, file_exists("../../data/$user/files$destination"));
+ }
+
+ /**
* @When User :user uploads file with content :content to :destination
*/
public function userUploadsAFileWithContentTo($user, $content, $destination)
@@ -459,7 +475,7 @@ trait WebDav {
*/
public function userCreatedAFolder($user, $destination) {
try {
- $this->response = $this->makeDavRequest($user, "MKCOL", $this->getFilesPath() . ltrim($destination, $this->getFilesPath()), []);
+ $this->response = $this->makeDavRequest($user, "MKCOL", $this->getFilesPath($user) . ltrim($destination, $this->getFilesPath($user)), []);
} catch (\GuzzleHttp\Exception\ServerException $e) {
// 4xx and 5xx responses cause an exception
$this->response = $e->getResponse();
@@ -569,7 +585,7 @@ trait WebDav {
];
}
- $response = $client->proppatch($this->davPath . '/' . ltrim($path, '/'), $properties, $folderDepth);
+ $response = $client->proppatch($this->davPath . $this->getFilesPath($user) . ltrim($path, '/'), $properties, $folderDepth);
return $response;
}
diff --git a/build/integration/features/favorites.feature b/build/integration/features/favorites.feature
index 86643fdd1e2..baf4eadb166 100644
--- a/build/integration/features/favorites.feature
+++ b/build/integration/features/favorites.feature
@@ -40,3 +40,41 @@ Feature: favorite
|{http://owncloud.org/ns}favorite|
And the single response should contain a property "{http://owncloud.org/ns}favorite" with value ""
+ Scenario: Favorite a folder new endpoint
+ Given using dav path "remote.php/dav"
+ And As an "admin"
+ And user "user0" exists
+ When user "user0" favorites element "/FOLDER"
+ Then as "user0" gets properties of folder "/FOLDER" with
+ |{http://owncloud.org/ns}favorite|
+ And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
+
+ Scenario: Favorite and unfavorite a folder new endpoint
+ Given using dav path "remote.php/dav"
+ And As an "admin"
+ And user "user0" exists
+ When user "user0" favorites element "/FOLDER"
+ And user "user0" unfavorites element "/FOLDER"
+ Then as "user0" gets properties of folder "/FOLDER" with
+ |{http://owncloud.org/ns}favorite|
+ And the single response should contain a property "{http://owncloud.org/ns}favorite" with value ""
+
+ Scenario: Favorite a file new endpoint
+ Given using dav path "remote.php/dav"
+ And As an "admin"
+ And user "user0" exists
+ When user "user0" favorites element "/textfile0.txt"
+ Then as "user0" gets properties of file "/textfile0.txt" with
+ |{http://owncloud.org/ns}favorite|
+ And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
+
+ Scenario: Favorite and unfavorite a file new endpoint
+ Given using dav path "remote.php/dav"
+ And As an "admin"
+ And user "user0" exists
+ When user "user0" favorites element "/textfile0.txt"
+ And user "user0" unfavorites element "/textfile0.txt"
+ Then as "user0" gets properties of file "/textfile0.txt" with
+ |{http://owncloud.org/ns}favorite|
+ And the single response should contain a property "{http://owncloud.org/ns}favorite" with value ""
+
diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature
index a59d65a2674..01d437f519f 100644
--- a/build/integration/features/webdav-related.feature
+++ b/build/integration/features/webdav-related.feature
@@ -77,6 +77,28 @@ Feature: webdav-related
When User "user0" uploads file "data/textfile.txt" to "/testquota/asdf.txt"
Then the HTTP status code should be "201"
+ Scenario: Retrieving folder quota when quota is set and a file was uploaded
+ Given using dav path "remote.php/webdav"
+ And As an "admin"
+ And user "user0" exists
+ And user "user0" has a quota of "1 KB"
+ And user "user0" adds a file of 93 bytes to "/prueba.txt"
+ When as "user0" gets properties of folder "/" with
+ |{DAV:}quota-available-bytes|
+ Then the single response should contain a property "{DAV:}quota-available-bytes" with value "592"
+
+ Scenario: Retrieving folder quota when quota is set and a file was recieved
+ Given using dav path "remote.php/webdav"
+ And As an "admin"
+ And user "user0" exists
+ And user "user1" exists
+ And user "user1" has a quota of "1 KB"
+ And user "user0" adds a file of 93 bytes to "/user0.txt"
+ And file "user0.txt" of user "user0" is shared with user "user1"
+ When as "user1" gets properties of folder "/" with
+ |{DAV:}quota-available-bytes|
+ Then the single response should contain a property "{DAV:}quota-available-bytes" with value "685"
+
Scenario: download a public shared file with range
Given user "user0" exists
And As an "user0"
diff --git a/console.php b/console.php
index 8765b176ac7..3c68429cbd4 100644
--- a/console.php
+++ b/console.php
@@ -45,7 +45,7 @@ function exceptionHandler($exception) {
exit(1);
}
try {
- require_once 'lib/base.php';
+ require_once __DIR__ . '/lib/base.php';
// set to run indefinitely if needed
set_time_limit(0);
diff --git a/core/css/icons.css b/core/css/icons.css
index 45069a23c44..50dcf51fd3a 100644
--- a/core/css/icons.css
+++ b/core/css/icons.css
@@ -282,6 +282,10 @@ img.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading-
background-image: url('../img/actions/sound-off.svg?v=1');
}
+.icon-favorite {
+ background-image: url('../img/actions/star-dark.svg?v=1');
+}
+
.icon-star,
.icon-starred:hover,
.icon-starred:focus {
@@ -365,6 +369,9 @@ img.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading-
.icon-files {
background-image: url('../img/places/files.svg?v=1');
}
+.icon-files-dark {
+ background-image: url('../img/places/files-dark.svg?v=1');
+}
.icon-file,
.icon-filetype-text {
background-image: url('../img/filetypes/text.svg?v=1');
diff --git a/core/css/share.css b/core/css/share.css
index 0da3aa5359d..6ccb82a09ff 100644
--- a/core/css/share.css
+++ b/core/css/share.css
@@ -63,6 +63,15 @@
white-space: normal;
}
+#shareWithList .sharingOptionsGroup {
+ position: absolute;
+ right: 0;
+}
+
+#shareWithList .sharingOptionsGroup .popovermenu {
+ right: 44px;
+}
+
#shareWithList .shareOption {
white-space: nowrap;
display: inline-block;
@@ -104,12 +113,10 @@ a.showCruds {
}
a.unshare {
- display:inline;
- float:right;
+ display:inline-block;
opacity:.5;
padding: 10px;
margin-top: -5px;
- margin-right: -10px;
}
#link {
diff --git a/core/css/styles.css b/core/css/styles.css
index efc49e02a17..60b325111f8 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -490,8 +490,9 @@ label.infield {
}
#personal-show + label {
height: 14px;
- margin-top: 14px;
- margin-left: -36px;
+ margin-top: -25px;
+ left: 295px;
+ display: block;
}
#passwordbutton {
margin-left: .5em;
diff --git a/core/img/actions/star-dark.svg b/core/img/actions/star-dark.svg
new file mode 100644
index 00000000000..6edb7ea5000
--- /dev/null
+++ b/core/img/actions/star-dark.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="22" width="22"><path d="M11.017.06l2.946 7.384L22 8.077l-6.11 5.082L17.77 21l-6.72-4.242-6.876 4.213 1.957-7.703L0 8.03l7.932-.52z"/></svg>
diff --git a/core/img/places/files-dark.svg b/core/img/places/files-dark.svg
new file mode 100644
index 00000000000..dfcad56018a
--- /dev/null
+++ b/core/img/places/files-dark.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32"><path d="M2.917 5.015c-.5 0-.92.42-.92.92v22.16c0 .516.402.92.92.92h26.157a.91.91 0 0 0 .92-.92V9.938c0-.5-.418-.926-.92-.926H15.997l-4-4z" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js
index 540bafa5c1c..212bca96186 100644
--- a/core/js/sharedialogshareelistview.js
+++ b/core/js/sharedialogshareelistview.js
@@ -1,3 +1,5 @@
+/* global OC, Handlebars */
+
/*
* Copyright (c) 2015
*
@@ -19,7 +21,6 @@
'<ul id="shareWithList" class="shareWithList">' +
'{{#each sharees}}' +
'<li data-share-id="{{shareId}}" data-share-type="{{shareType}}" data-share-with="{{shareWith}}">' +
- '<a href="#" class="unshare"><span class="icon-loading-small hidden"></span><span class="icon icon-delete"></span><span class="hidden-visually">{{unshareLabel}}</span></a>' +
'{{#if avatarEnabled}}' +
'<div class="avatar {{#if modSeed}}imageplaceholderseed{{/if}}" data-username="{{shareWith}}" {{#if modSeed}}data-seed="{{shareWith}} {{shareType}}"{{/if}}></div>' +
'{{/if}}' +
@@ -30,45 +31,57 @@
'<label for="mail-{{cid}}-{{shareWith}}">{{notifyByMailLabel}}</label>' +
'</span>' +
'{{/unless}} {{/if}}' +
- '{{#if isResharingAllowed}} {{#if sharePermissionPossible}}' +
- '<span class="shareOption">' +
- '<input id="canShare-{{cid}}-{{shareWith}}" type="checkbox" name="share" class="permissions checkbox" {{#if hasSharePermission}}checked="checked"{{/if}} data-permissions="{{sharePermission}}" />' +
- '<label for="canShare-{{cid}}-{{shareWith}}">{{canShareLabel}}</label>' +
- '</span>' +
- '{{/if}} {{/if}}' +
- '{{#if editPermissionPossible}}' +
- '<span class="shareOption">' +
- '<input id="canEdit-{{cid}}-{{shareWith}}" type="checkbox" name="edit" class="permissions checkbox" {{#if hasEditPermission}}checked="checked"{{/if}} />' +
- '<label for="canEdit-{{cid}}-{{shareWith}}">{{canEditLabel}}</label>' +
- '{{#if isFolder}}' +
- '<a href="#" class="showCruds"><img alt="{{crudsLabel}}" src="{{triangleSImage}}"/></a>' +
- '{{/if}}' +
- '</span>' +
- '{{/if}}' +
- '<div class="cruds hidden">' +
- '{{#if createPermissionPossible}}' +
+ '<span class="sharingOptionsGroup">' +
+ '{{#if editPermissionPossible}}' +
'<span class="shareOption">' +
- '<input id="canCreate-{{cid}}-{{shareWith}}" type="checkbox" name="create" class="permissions checkbox" {{#if hasCreatePermission}}checked="checked"{{/if}} data-permissions="{{createPermission}}"/>' +
- '<label for="canCreate-{{cid}}-{{shareWith}}">{{createPermissionLabel}}</label>' +
+ '<input id="canEdit-{{cid}}-{{shareWith}}" type="checkbox" name="edit" class="permissions checkbox" {{#if hasEditPermission}}checked="checked"{{/if}} />' +
+ '<label for="canEdit-{{cid}}-{{shareWith}}">{{canEditLabel}}</label>' +
'</span>' +
'{{/if}}' +
- '{{#if updatePermissionPossible}}' +
- '<span class="shareOption">' +
- '<input id="canUpdate-{{cid}}-{{shareWith}}" type="checkbox" name="update" class="permissions checkbox" {{#if hasUpdatePermission}}checked="checked"{{/if}} data-permissions="{{updatePermission}}"/>' +
- '<label for="canUpdate-{{cid}}-{{shareWith}}">{{updatePermissionLabel}}</label>' +
- '</span>' +
- '{{/if}}' +
- '{{#if deletePermissionPossible}}' +
- '<span class="shareOption">' +
- '<input id="canDelete-{{cid}}-{{shareWith}}" type="checkbox" name="delete" class="permissions checkbox" {{#if hasDeletePermission}}checked="checked"{{/if}} data-permissions="{{deletePermission}}"/>' +
- '<label for="canDelete-{{cid}}-{{shareWith}}">{{deletePermissionLabel}}</label>' +
- '</span>' +
- '{{/if}}' +
- '</div>' +
+ '<a href="#"><span class="icon icon-more"></span></a>' +
+ '<div class="popovermenu bubble hidden menu">' +
+ '<ul>' +
+ '{{#if isResharingAllowed}} {{#if sharePermissionPossible}}' +
+ '<li>' +
+ '<span class="shareOption">' +
+ '<input id="canShare-{{cid}}-{{shareWith}}" type="checkbox" name="share" class="permissions checkbox" {{#if hasSharePermission}}checked="checked"{{/if}} data-permissions="{{sharePermission}}" />' +
+ '<label for="canShare-{{cid}}-{{shareWith}}">{{canShareLabel}}</label>' +
+ '</span>' +
+ '</li>' +
+ '{{/if}} {{/if}}' +
+ '{{#if isFolder}}' +
+ '{{#if createPermissionPossible}}' +
+ '<li>' +
+ '<span class="shareOption">' +
+ '<input id="canCreate-{{cid}}-{{shareWith}}" type="checkbox" name="create" class="permissions checkbox" {{#if hasCreatePermission}}checked="checked"{{/if}} data-permissions="{{createPermission}}"/>' +
+ '<label for="canCreate-{{cid}}-{{shareWith}}">{{createPermissionLabel}}</label>' +
+ '</span>' +
+ '</li>' +
+ '{{/if}}' +
+ '{{#if updatePermissionPossible}}' +
+ '<li>' +
+ '<span class="shareOption">' +
+ '<input id="canUpdate-{{cid}}-{{shareWith}}" type="checkbox" name="update" class="permissions checkbox" {{#if hasUpdatePermission}}checked="checked"{{/if}} data-permissions="{{updatePermission}}"/>' +
+ '<label for="canUpdate-{{cid}}-{{shareWith}}">{{updatePermissionLabel}}</label>' +
+ '</span>' +
+ '</li>' +
+ '{{/if}}' +
+ '{{#if deletePermissionPossible}}' +
+ '<li>' +
+ '<span class="shareOption">' +
+ '<input id="canDelete-{{cid}}-{{shareWith}}" type="checkbox" name="delete" class="permissions checkbox" {{#if hasDeletePermission}}checked="checked"{{/if}} data-permissions="{{deletePermission}}"/>' +
+ '<label for="canDelete-{{cid}}-{{shareWith}}">{{deletePermissionLabel}}</label>' +
+ '</span>' +
+ '</li>' +
+ '{{/if}}' +
+ '{{/if}}' +
+ '</ul>' +
+ '</div>' +
+ '<a href="#" class="unshare"><span class="icon-loading-small hidden"></span><span class="icon icon-delete"></span><span class="hidden-visually">{{unshareLabel}}</span></a>' +
+ '</span>' +
'</li>' +
'{{/each}}' +
- '</ul>'
- ;
+ '</ul>';
/**
* @class OCA.Share.ShareDialogShareeListView
@@ -90,10 +103,12 @@
/** @type {Function} **/
_template: undefined,
+ _menuOpen: false,
+
events: {
'click .unshare': 'onUnshare',
+ 'click .icon-more': 'onToggleMenu',
'click .permissions': 'onPermissionChange',
- 'click .showCruds': 'onCrudsToggle',
'click .mailNotification': 'onSendMailNotification'
},
@@ -150,7 +165,7 @@
mailNotificationEnabled: this.configModel.isMailNotificationEnabled(),
notifyByMailLabel: t('core', 'notify by email'),
unshareLabel: t('core', 'Unshare'),
- canShareLabel: t('core', 'can share'),
+ canShareLabel: t('core', 'can reshare'),
canEditLabel: t('core', 'can edit'),
createPermissionLabel: t('core', 'create'),
updatePermissionLabel: t('core', 'change'),
@@ -192,7 +207,7 @@
}));
if(this.configModel.areAvatarsEnabled()) {
- this.$el.find('.avatar').each(function() {
+ this.$('.avatar').each(function() {
var $this = $(this);
if ($this.hasClass('imageplaceholderseed')) {
$this.css({width: 32, height: 32});
@@ -203,10 +218,19 @@
});
}
- this.$el.find('.has-tooltip').tooltip({
+ this.$('.has-tooltip').tooltip({
placement: 'bottom'
});
+ var _this = this;
+ this.$('.popovermenu').on('afterHide', function() {
+ _this._menuOpen = false;
+ });
+ if (this._menuOpen) {
+ // Open menu again if it was opened before
+ OC.showMenu(null, this.$('.popovermenu'));
+ }
+
this.delegateEvents();
return this;
@@ -224,6 +248,8 @@
},
onUnshare: function(event) {
+ event.preventDefault();
+ event.stopPropagation();
var self = this;
var $element = $(event.target);
if (!$element.is('a')) {
@@ -237,7 +263,7 @@
}
$loading.removeClass('hidden');
- var $li = $element.closest('li');
+ var $li = $element.closest('li[data-share-id]');
var shareId = $li.data('share-id');
@@ -252,25 +278,45 @@
return false;
},
+ onToggleMenu: function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ var $element = $(event.target);
+ var $li = $element.closest('li[data-share-id]');
+ var $menu = $li.find('.popovermenu');
+
+ OC.showMenu(null, $menu);
+ this._menuOpen = true;
+ },
+
onPermissionChange: function(event) {
+ event.preventDefault();
+ event.stopPropagation();
var $element = $(event.target);
- var $li = $element.closest('li');
+ var $li = $element.closest('li[data-share-id]');
var shareId = $li.data('share-id');
- // adjust checkbox states
- var $checkboxes = $('.permissions', $li).not('input[name="edit"]').not('input[name="share"]');
- var checked;
- if ($element.attr('name') === 'edit') {
- checked = $element.is(':checked');
- // Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck
- $($checkboxes).prop('checked', checked);
+ var permissions = OC.PERMISSION_READ;
+
+ if (this.model.isFolder()) {
+ // adjust checkbox states
+ var $checkboxes = $('.permissions', $li).not('input[name="edit"]').not('input[name="share"]');
+ var checked;
+ if ($element.attr('name') === 'edit') {
+ checked = $element.is(':checked');
+ // Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck
+ $($checkboxes).prop('checked', checked);
+ } else {
+ var numberChecked = $checkboxes.filter(':checked').length;
+ checked = numberChecked > 0;
+ $('input[name="edit"]', $li).prop('checked', checked);
+ }
} else {
- var numberChecked = $checkboxes.filter(':checked').length;
- checked = numberChecked > 0;
- $('input[name="edit"]', $li).prop('checked', checked);
+ if ($element.attr('name') === 'edit' && $element.is(':checked')) {
+ permissions |= OC.PERMISSION_UPDATE;
+ }
}
- var permissions = OC.PERMISSION_READ;
$('.permissions', $li).not('input[name="edit"]').filter(':checked').each(function(index, checkbox) {
permissions |= $(checkbox).data('permissions');
});
@@ -278,15 +324,9 @@
this.model.updateShare(shareId, {permissions: permissions});
},
- onCrudsToggle: function(event) {
- var $target = $(event.target);
- $target.closest('li').find('.cruds').toggleClass('hidden');
- return false;
- },
-
onSendMailNotification: function(event) {
var $target = $(event.target);
- var $li = $(event.target).closest('li');
+ var $li = $(event.target).closest('li[data-share-id]');
var shareType = $li.data('share-type');
var shareWith = $li.attr('data-share-with');
diff --git a/core/js/tests/specs/sharedialogshareelistview.js b/core/js/tests/specs/sharedialogshareelistview.js
index cef97469753..9aab46d9117 100644
--- a/core/js/tests/specs/sharedialogshareelistview.js
+++ b/core/js/tests/specs/sharedialogshareelistview.js
@@ -102,6 +102,7 @@ describe('OC.Share.ShareDialogShareeListView', function () {
share_with: 'user1',
share_with_displayname: 'User One'
}]);
+ shareModel.set('itemType', 'folder');
listView.render();
listView.$el.find("input[name='edit']").click();
expect(listView.$el.find("input[name='update']").is(':checked')).toEqual(true);
@@ -115,8 +116,10 @@ describe('OC.Share.ShareDialogShareeListView', function () {
permissions: 1,
share_type: OC.Share.SHARE_TYPE_USER,
share_with: 'user1',
- share_with_displayname: 'User One'
+ share_with_displayname: 'User One',
+ itemType: 'folder'
}]);
+ shareModel.set('itemType', 'folder');
listView.render();
listView.$el.find("input[name='update']").click();
expect(listView.$el.find("input[name='edit']").is(':checked')).toEqual(true);
diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js
index bdb30b85dfc..0b90fc4d75c 100644
--- a/core/l10n/cs_CZ.js
+++ b/core/l10n/cs_CZ.js
@@ -168,7 +168,7 @@ OC.L10N.register(
"remote" : "vzdálený",
"notify by email" : "upozornit emailem",
"Unshare" : "Zrušit sdílení",
- "can share" : "může sdílet",
+ "can reshare" : "Může znovu sdílet",
"can edit" : "lze upravovat",
"create" : "vytvořit",
"change" : "změnit",
@@ -326,6 +326,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Nebylo možné odeslat email následujícím uživatelům: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Tento server nemá funkční připojení k Internetu. Některé moduly jako např. externí úložiště, oznámení o dostupných aktualizacích nebo instalace aplikací třetích stran nebudou fungovat. Přístup k souborům z jiných míst a odesílání oznamovacích emailů také nemusí fungovat. Pokud chcete využívat všechny možnosti ownCloud, doporučujeme povolit pro tento server připojení k Internetu.",
"Allow editing" : "Povolit úpravy",
+ "can share" : "může sdílet",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.",
"Updating to {version}" : "Aktualizace na {version}",
"The update was successful. There were warnings." : "Aktualizace byla úspěšná. Zachycen výskyt varování.",
diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json
index 9a00a498feb..4ffd6d80976 100644
--- a/core/l10n/cs_CZ.json
+++ b/core/l10n/cs_CZ.json
@@ -166,7 +166,7 @@
"remote" : "vzdálený",
"notify by email" : "upozornit emailem",
"Unshare" : "Zrušit sdílení",
- "can share" : "může sdílet",
+ "can reshare" : "Může znovu sdílet",
"can edit" : "lze upravovat",
"create" : "vytvořit",
"change" : "změnit",
@@ -324,6 +324,7 @@
"Couldn't send mail to following users: %s " : "Nebylo možné odeslat email následujícím uživatelům: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Tento server nemá funkční připojení k Internetu. Některé moduly jako např. externí úložiště, oznámení o dostupných aktualizacích nebo instalace aplikací třetích stran nebudou fungovat. Přístup k souborům z jiných míst a odesílání oznamovacích emailů také nemusí fungovat. Pokud chcete využívat všechny možnosti ownCloud, doporučujeme povolit pro tento server připojení k Internetu.",
"Allow editing" : "Povolit úpravy",
+ "can share" : "může sdílet",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.",
"Updating to {version}" : "Aktualizace na {version}",
"The update was successful. There were warnings." : "Aktualizace byla úspěšná. Zachycen výskyt varování.",
diff --git a/core/l10n/da.js b/core/l10n/da.js
index c5f8d35a417..6b1d0c45e0e 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -158,7 +158,6 @@ OC.L10N.register(
"remote" : "ekstern",
"notify by email" : "Giv besked med mail",
"Unshare" : "Fjern deling",
- "can share" : "kan dele",
"can edit" : "kan redigere",
"create" : "opret",
"change" : "tilpas",
@@ -297,6 +296,7 @@ OC.L10N.register(
"Error unfavoriting" : "Fejl ved fjernelse fra foretrukken.",
"Couldn't send mail to following users: %s " : "Kunne ikke sende mail til følgende brugere: %s",
"Allow editing" : "Tillad redigering",
+ "can share" : "kan dele",
"Cancel login" : "Annuller login"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/da.json b/core/l10n/da.json
index b356928e2fc..cac8515820f 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -156,7 +156,6 @@
"remote" : "ekstern",
"notify by email" : "Giv besked med mail",
"Unshare" : "Fjern deling",
- "can share" : "kan dele",
"can edit" : "kan redigere",
"create" : "opret",
"change" : "tilpas",
@@ -295,6 +294,7 @@
"Error unfavoriting" : "Fejl ved fjernelse fra foretrukken.",
"Couldn't send mail to following users: %s " : "Kunne ikke sende mail til følgende brugere: %s",
"Allow editing" : "Tillad redigering",
+ "can share" : "kan dele",
"Cancel login" : "Annuller login"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 64481a9946e..82dfaee2772 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -168,7 +168,7 @@ OC.L10N.register(
"remote" : "Entfernte Freigabe",
"notify by email" : "per E-Mail benachrichtigen",
"Unshare" : "Freigabe aufheben",
- "can share" : "kann teilen",
+ "can reshare" : "Kann weiterteilen",
"can edit" : "kann bearbeiten",
"create" : "erstellen",
"change" : "Ändern",
@@ -326,6 +326,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail versandt werden: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn du alle Funktionen nutzen möchtest.",
"Allow editing" : "Bearbeitung erlauben",
+ "can share" : "kann teilen",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Update läuft gerade. Das Verlassen dieser Seite könnte den Aktualisierungsprozess in einigen Umgebungen unterbrechen.",
"Updating to {version}" : "Aktualisierung auf {version}",
"The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 84201e54b8f..57168c437aa 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -166,7 +166,7 @@
"remote" : "Entfernte Freigabe",
"notify by email" : "per E-Mail benachrichtigen",
"Unshare" : "Freigabe aufheben",
- "can share" : "kann teilen",
+ "can reshare" : "Kann weiterteilen",
"can edit" : "kann bearbeiten",
"create" : "erstellen",
"change" : "Ändern",
@@ -324,6 +324,7 @@
"Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail versandt werden: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn du alle Funktionen nutzen möchtest.",
"Allow editing" : "Bearbeitung erlauben",
+ "can share" : "kann teilen",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Update läuft gerade. Das Verlassen dieser Seite könnte den Aktualisierungsprozess in einigen Umgebungen unterbrechen.",
"Updating to {version}" : "Aktualisierung auf {version}",
"The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index eb232acaa60..1fd90a6deeb 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -168,7 +168,7 @@ OC.L10N.register(
"remote" : "Entfernte Freigabe",
"notify by email" : "per E-Mail benachrichtigen",
"Unshare" : "Freigabe aufheben",
- "can share" : "kann teilen",
+ "can reshare" : "Kann weiterteilen",
"can edit" : "kann bearbeiten",
"create" : "erstellen",
"change" : "ändern",
@@ -326,6 +326,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail versandt werden: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Sie alle Funktionen nutzen möchten.",
"Allow editing" : "Bearbeitung erlauben",
+ "can share" : "kann teilen",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Die Aktualisierung wird durchgeführt, wenn Sie diese Seite verlassen, kann dies den Aktualisierungsprozess in manchen Umgebungen unterbrechen.",
"Updating to {version}" : "Aktualisiere auf {version}",
"The update was successful. There were warnings." : "Das Update war erfolgreich. Es wurden Warnungen ausgegeben.",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index fb13f692212..6b7b87488ee 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -166,7 +166,7 @@
"remote" : "Entfernte Freigabe",
"notify by email" : "per E-Mail benachrichtigen",
"Unshare" : "Freigabe aufheben",
- "can share" : "kann teilen",
+ "can reshare" : "Kann weiterteilen",
"can edit" : "kann bearbeiten",
"create" : "erstellen",
"change" : "ändern",
@@ -324,6 +324,7 @@
"Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail versandt werden: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Sie alle Funktionen nutzen möchten.",
"Allow editing" : "Bearbeitung erlauben",
+ "can share" : "kann teilen",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Die Aktualisierung wird durchgeführt, wenn Sie diese Seite verlassen, kann dies den Aktualisierungsprozess in manchen Umgebungen unterbrechen.",
"Updating to {version}" : "Aktualisiere auf {version}",
"The update was successful. There were warnings." : "Das Update war erfolgreich. Es wurden Warnungen ausgegeben.",
diff --git a/core/l10n/el.js b/core/l10n/el.js
index d543481008a..91de04a9cc6 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"remote" : "απομακρυσμένα",
"notify by email" : "ειδοποίηση με email",
"Unshare" : "Διακοπή διαμοιρασμού",
- "can share" : "δυνατότητα διαμοιρασμού",
"can edit" : "δυνατότητα αλλαγής",
"create" : "δημιουργία",
"change" : "αλλαγή",
@@ -290,6 +289,7 @@ OC.L10N.register(
"Error unfavoriting" : "Σφάλμα αφαίρεσης από τα αγαπημένα",
"Couldn't send mail to following users: %s " : "Αδυναμία αποστολής μηνύματος στους ακόλουθους χρήστες: %s",
"Allow editing" : "Επιτρέπεται η επεξεργασία",
+ "can share" : "δυνατότητα διαμοιρασμού",
"Updating to {version}" : "Ενημέρωση στην έκδοση {version}",
"The update was successful. There were warnings." : "Η ενημέρωση ήταν επιτυχής. Υπάρχουν προειδοποιήσεις."
},
diff --git a/core/l10n/el.json b/core/l10n/el.json
index 6ea2c8729f9..0d1f6dd10ed 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -150,7 +150,6 @@
"remote" : "απομακρυσμένα",
"notify by email" : "ειδοποίηση με email",
"Unshare" : "Διακοπή διαμοιρασμού",
- "can share" : "δυνατότητα διαμοιρασμού",
"can edit" : "δυνατότητα αλλαγής",
"create" : "δημιουργία",
"change" : "αλλαγή",
@@ -288,6 +287,7 @@
"Error unfavoriting" : "Σφάλμα αφαίρεσης από τα αγαπημένα",
"Couldn't send mail to following users: %s " : "Αδυναμία αποστολής μηνύματος στους ακόλουθους χρήστες: %s",
"Allow editing" : "Επιτρέπεται η επεξεργασία",
+ "can share" : "δυνατότητα διαμοιρασμού",
"Updating to {version}" : "Ενημέρωση στην έκδοση {version}",
"The update was successful. There were warnings." : "Η ενημέρωση ήταν επιτυχής. Υπάρχουν προειδοποιήσεις."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index 7073144d621..a14fcef5dec 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -162,7 +162,6 @@ OC.L10N.register(
"remote" : "remote",
"notify by email" : "notify by email",
"Unshare" : "Unshare",
- "can share" : "can share",
"can edit" : "can edit",
"create" : "create",
"change" : "change",
@@ -311,6 +310,7 @@ OC.L10N.register(
"Error unfavoriting" : "Error unfavouriting",
"Couldn't send mail to following users: %s " : "Couldn't send mail to following users: %s ",
"Allow editing" : "Allow editing",
+ "can share" : "can share",
"Two-step verification" : "Two-step verification",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Enhanced security has been enabled for your account. Please authenticate using a second factor.",
"Cancel login" : "Cancel login",
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index 2435d01074f..034416e6583 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -160,7 +160,6 @@
"remote" : "remote",
"notify by email" : "notify by email",
"Unshare" : "Unshare",
- "can share" : "can share",
"can edit" : "can edit",
"create" : "create",
"change" : "change",
@@ -309,6 +308,7 @@
"Error unfavoriting" : "Error unfavouriting",
"Couldn't send mail to following users: %s " : "Couldn't send mail to following users: %s ",
"Allow editing" : "Allow editing",
+ "can share" : "can share",
"Two-step verification" : "Two-step verification",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Enhanced security has been enabled for your account. Please authenticate using a second factor.",
"Cancel login" : "Cancel login",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 825d773ce19..8e812fd4cf9 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"remote" : "remoto",
"notify by email" : "notificar por correo electrónico",
"Unshare" : "Dejar de compartir",
- "can share" : "puede compartir",
"can edit" : "puede editar",
"create" : "crear",
"change" : "cambio",
@@ -326,6 +325,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "No se pudo enviar el mensaje a los siguientes usuarios: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor no tiene una conexión a Internet. Esto significa que algunas de las características como el montaje de almacenamiento externo, las notificaciones sobre actualizaciones o instalación de aplicaciones de terceros no funcionarán. Podría no funcionar el acceso a los archivos de forma remota y el envío de correos electrónicos de notificación. Sugerimos habilitar la conexión a Internet de este servidor, si quiere tener todas las funciones.",
"Allow editing" : "Permitir edición",
+ "can share" : "puede compartir",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, salir de esta página podrían interrumpir el proceso en algunos entornos.",
"Updating to {version}" : "Actualizando a {version}",
"The update was successful. There were warnings." : "La actualización tuvo éxito. Hubo advertencias.",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index 1b9e4767a31..d03806edf48 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -166,7 +166,6 @@
"remote" : "remoto",
"notify by email" : "notificar por correo electrónico",
"Unshare" : "Dejar de compartir",
- "can share" : "puede compartir",
"can edit" : "puede editar",
"create" : "crear",
"change" : "cambio",
@@ -324,6 +323,7 @@
"Couldn't send mail to following users: %s " : "No se pudo enviar el mensaje a los siguientes usuarios: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor no tiene una conexión a Internet. Esto significa que algunas de las características como el montaje de almacenamiento externo, las notificaciones sobre actualizaciones o instalación de aplicaciones de terceros no funcionarán. Podría no funcionar el acceso a los archivos de forma remota y el envío de correos electrónicos de notificación. Sugerimos habilitar la conexión a Internet de este servidor, si quiere tener todas las funciones.",
"Allow editing" : "Permitir edición",
+ "can share" : "puede compartir",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, salir de esta página podrían interrumpir el proceso en algunos entornos.",
"Updating to {version}" : "Actualizando a {version}",
"The update was successful. There were warnings." : "La actualización tuvo éxito. Hubo advertencias.",
diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js
index 26f3b290fce..24267635cf6 100644
--- a/core/l10n/fi_FI.js
+++ b/core/l10n/fi_FI.js
@@ -161,7 +161,6 @@ OC.L10N.register(
"remote" : "etä",
"notify by email" : "ilmoita sähköpostitse",
"Unshare" : "Lopeta jakaminen",
- "can share" : "voi jakaa",
"can edit" : "voi muokata",
"create" : "luo",
"change" : "muuta",
@@ -317,6 +316,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Sähköpostin lähetys seuraaville käyttäjille epäonnistui: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ominaisuuksia.",
"Allow editing" : "Salli muokkaus",
+ "can share" : "voi jakaa",
"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 to {version}" : "Päivitetään versioon {version}",
"The update was successful. There were warnings." : "Päivitys onnistui, tosin ilmeni varoituksia.",
diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json
index 3bbca0a4811..3fdecf1a15b 100644
--- a/core/l10n/fi_FI.json
+++ b/core/l10n/fi_FI.json
@@ -159,7 +159,6 @@
"remote" : "etä",
"notify by email" : "ilmoita sähköpostitse",
"Unshare" : "Lopeta jakaminen",
- "can share" : "voi jakaa",
"can edit" : "voi muokata",
"create" : "luo",
"change" : "muuta",
@@ -315,6 +314,7 @@
"Couldn't send mail to following users: %s " : "Sähköpostin lähetys seuraaville käyttäjille epäonnistui: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ominaisuuksia.",
"Allow editing" : "Salli muokkaus",
+ "can share" : "voi jakaa",
"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 to {version}" : "Päivitetään versioon {version}",
"The update was successful. There were warnings." : "Päivitys onnistui, tosin ilmeni varoituksia.",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index e5f75212027..d8432eeff10 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"remote" : "distant",
"notify by email" : "notifier par courriel",
"Unshare" : "Ne plus partager",
- "can share" : "peut partager",
"can edit" : "peut modifier",
"create" : "création",
"change" : "modification",
@@ -326,6 +325,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Impossible d'envoyer un courriel aux utilisateurs suivants : %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.",
"Allow editing" : "Permettre la modification",
+ "can share" : "peut partager",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La mise à jour est en cours, quitter la page peux interrompre le processus dans beaucoup d'environnements.",
"Updating to {version}" : "Mise à jour vers {version}",
"The update was successful. There were warnings." : "La mise à jour a été faite avec succès. Il y a eu des avertissements.",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index a23c8c3d96a..9009a5621b5 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -166,7 +166,6 @@
"remote" : "distant",
"notify by email" : "notifier par courriel",
"Unshare" : "Ne plus partager",
- "can share" : "peut partager",
"can edit" : "peut modifier",
"create" : "création",
"change" : "modification",
@@ -324,6 +323,7 @@
"Couldn't send mail to following users: %s " : "Impossible d'envoyer un courriel aux utilisateurs suivants : %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.",
"Allow editing" : "Permettre la modification",
+ "can share" : "peut partager",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La mise à jour est en cours, quitter la page peux interrompre le processus dans beaucoup d'environnements.",
"Updating to {version}" : "Mise à jour vers {version}",
"The update was successful. There were warnings." : "La mise à jour a été faite avec succès. Il y a eu des avertissements.",
diff --git a/core/l10n/he.js b/core/l10n/he.js
index 866b8b15718..43c86370d25 100644
--- a/core/l10n/he.js
+++ b/core/l10n/he.js
@@ -161,7 +161,6 @@ OC.L10N.register(
"remote" : "נשלט מרחוק",
"notify by email" : "קבלת הודעה בדואר אלקטרוני",
"Unshare" : "הסר שיתוף",
- "can share" : "ניתן לשתף",
"can edit" : "ניתן לערוך",
"create" : "יצירה",
"change" : "שינוי",
@@ -308,6 +307,7 @@ OC.L10N.register(
"Error unfavoriting" : "שגיאה בהסרת מועדפים",
"Couldn't send mail to following users: %s " : "לא ניתן היה לשלוח דואר אלקטרוני למשתמשים הבאים %s ",
"Allow editing" : "אישור עריכה",
+ "can share" : "ניתן לשתף",
"Two-step verification" : "אימות דו-שלבי",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "אבטחה מורחבת הופעלה בחשבון שלך. יש לאמת באמצעות גורם שני.",
"Cancel login" : "ביטול התחברות",
diff --git a/core/l10n/he.json b/core/l10n/he.json
index 25a46010dd0..342306fbd98 100644
--- a/core/l10n/he.json
+++ b/core/l10n/he.json
@@ -159,7 +159,6 @@
"remote" : "נשלט מרחוק",
"notify by email" : "קבלת הודעה בדואר אלקטרוני",
"Unshare" : "הסר שיתוף",
- "can share" : "ניתן לשתף",
"can edit" : "ניתן לערוך",
"create" : "יצירה",
"change" : "שינוי",
@@ -306,6 +305,7 @@
"Error unfavoriting" : "שגיאה בהסרת מועדפים",
"Couldn't send mail to following users: %s " : "לא ניתן היה לשלוח דואר אלקטרוני למשתמשים הבאים %s ",
"Allow editing" : "אישור עריכה",
+ "can share" : "ניתן לשתף",
"Two-step verification" : "אימות דו-שלבי",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "אבטחה מורחבת הופעלה בחשבון שלך. יש לאמת באמצעות גורם שני.",
"Cancel login" : "ביטול התחברות",
diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js
index c77d3154608..c3b7f07abaa 100644
--- a/core/l10n/hu_HU.js
+++ b/core/l10n/hu_HU.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"remote" : "távoli",
"notify by email" : "e-mail értesítés",
"Unshare" : "Megosztás visszavonása",
- "can share" : "megoszthatja",
"can edit" : "szerkesztheti",
"create" : "létrehoz",
"change" : "módosít",
@@ -326,6 +325,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Nem sikerült e-mailt küldeni a következő felhasználóknak: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ennek a szervernek nincs működő internet kapcsolata. Ez azt jelenti, hogy néhány funkció, mint pl. külső tárolók csatolása, frissítési értesítések, vagy a harmadik féltől származó alkalmazások telepítése nem fog működni. A fájlok távoli elérése és az e-mail értesítések is lehet, hogy nem működnek. Ajánlott az internet kapcsolat engedélyezése a szerveren, ha minden funkciót használni szeretnél.",
"Allow editing" : "Szerkesztés engedélyezése",
+ "can share" : "megoszthatja",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.",
"Updating to {version}" : "Frissítés erre a verzióra: {version}",
"The update was successful. There were warnings." : "A frissítés sikerült. Figyelmeztetések találhatók.",
diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json
index 295d6286432..5cea4db93a7 100644
--- a/core/l10n/hu_HU.json
+++ b/core/l10n/hu_HU.json
@@ -166,7 +166,6 @@
"remote" : "távoli",
"notify by email" : "e-mail értesítés",
"Unshare" : "Megosztás visszavonása",
- "can share" : "megoszthatja",
"can edit" : "szerkesztheti",
"create" : "létrehoz",
"change" : "módosít",
@@ -324,6 +323,7 @@
"Couldn't send mail to following users: %s " : "Nem sikerült e-mailt küldeni a következő felhasználóknak: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ennek a szervernek nincs működő internet kapcsolata. Ez azt jelenti, hogy néhány funkció, mint pl. külső tárolók csatolása, frissítési értesítések, vagy a harmadik féltől származó alkalmazások telepítése nem fog működni. A fájlok távoli elérése és az e-mail értesítések is lehet, hogy nem működnek. Ajánlott az internet kapcsolat engedélyezése a szerveren, ha minden funkciót használni szeretnél.",
"Allow editing" : "Szerkesztés engedélyezése",
+ "can share" : "megoszthatja",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.",
"Updating to {version}" : "Frissítés erre a verzióra: {version}",
"The update was successful. There were warnings." : "A frissítés sikerült. Figyelmeztetések találhatók.",
diff --git a/core/l10n/id.js b/core/l10n/id.js
index f2f33cddcd5..bb34a5b7031 100644
--- a/core/l10n/id.js
+++ b/core/l10n/id.js
@@ -167,7 +167,6 @@ OC.L10N.register(
"remote" : "remote",
"notify by email" : "notifikasi via email",
"Unshare" : "Batalkan berbagi",
- "can share" : "dapat berbagi",
"can edit" : "dapat sunting",
"create" : "buat",
"change" : "ubah",
@@ -320,6 +319,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Tidak dapat mengirim Email ke pengguna berikut: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Server ini tidak tersambung ke internet. Ini berarti beberapa fitur seperti me-mount penyimpanan eksternal, notifikasi pembaruan atau instalasi aplikasi pihak ketiga tidak akan bekerja. Mengakses berkas secara remote dan mengirim notifikasi email juga tidak bekerja. Kami menyarankan untuk mengaktifkan koneksi internet untuk server ini jika Anda ingin memiliki fitur ini.",
"Allow editing" : "Izinkan penyuntingan",
+ "can share" : "dapat berbagi",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Pembaruan sedang dalam proses, meninggalkan halaman ini mungkin dapat mengganggu proses di beberapa lingkungan.",
"Updating to {version}" : "Memperbarui ke {version}",
"The update was successful. There were warnings." : "Pembaruan telah berhasil. Terdapat peringatan.",
diff --git a/core/l10n/id.json b/core/l10n/id.json
index 952c691b934..68a1f291057 100644
--- a/core/l10n/id.json
+++ b/core/l10n/id.json
@@ -165,7 +165,6 @@
"remote" : "remote",
"notify by email" : "notifikasi via email",
"Unshare" : "Batalkan berbagi",
- "can share" : "dapat berbagi",
"can edit" : "dapat sunting",
"create" : "buat",
"change" : "ubah",
@@ -318,6 +317,7 @@
"Couldn't send mail to following users: %s " : "Tidak dapat mengirim Email ke pengguna berikut: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Server ini tidak tersambung ke internet. Ini berarti beberapa fitur seperti me-mount penyimpanan eksternal, notifikasi pembaruan atau instalasi aplikasi pihak ketiga tidak akan bekerja. Mengakses berkas secara remote dan mengirim notifikasi email juga tidak bekerja. Kami menyarankan untuk mengaktifkan koneksi internet untuk server ini jika Anda ingin memiliki fitur ini.",
"Allow editing" : "Izinkan penyuntingan",
+ "can share" : "dapat berbagi",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Pembaruan sedang dalam proses, meninggalkan halaman ini mungkin dapat mengganggu proses di beberapa lingkungan.",
"Updating to {version}" : "Memperbarui ke {version}",
"The update was successful. There were warnings." : "Pembaruan telah berhasil. Terdapat peringatan.",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 6df6a177283..b4361ec1c1a 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"remote" : "fjartengt",
"notify by email" : "tilkynna með tölvupósti",
"Unshare" : "Hætta deilingu",
- "can share" : "getur deilt",
"can edit" : "getur breytt",
"create" : "mynda",
"change" : "breyta",
@@ -326,6 +325,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Gat ekki sent póst á eftirfarandi notendur: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Þessi þjónn er ekki með virka nettengingu. Þetta þýðir að sumir eiginleikar eins og að virkja ytri gagnageymslu, tilkynningar um uppfærslur eða uppsetningu á forritum þriðja aðila, mun ekki virka. Fjartengdur aðgangur að skrám og sending tilkynninga í tölvupósti virka líklega ekki heldur. Við leggjum til að internettenging sé virkjuð fyrir þennan vefþjón ef þú vilt hafa alla eiginleika tiltæka.",
"Allow editing" : "Leyfa breytingar",
+ "can share" : "getur deilt",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppfærslan er í gangi, ef farið er af þessari síðu gæti það truflað ferlið á sumum kerfum.",
"Updating to {version}" : "Uppfæri í {version}",
"The update was successful. There were warnings." : "Uppfærslan tókst. Það voru viðvaranir.",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index 099ae548fa3..fe4b78bbb93 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -166,7 +166,6 @@
"remote" : "fjartengt",
"notify by email" : "tilkynna með tölvupósti",
"Unshare" : "Hætta deilingu",
- "can share" : "getur deilt",
"can edit" : "getur breytt",
"create" : "mynda",
"change" : "breyta",
@@ -324,6 +323,7 @@
"Couldn't send mail to following users: %s " : "Gat ekki sent póst á eftirfarandi notendur: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Þessi þjónn er ekki með virka nettengingu. Þetta þýðir að sumir eiginleikar eins og að virkja ytri gagnageymslu, tilkynningar um uppfærslur eða uppsetningu á forritum þriðja aðila, mun ekki virka. Fjartengdur aðgangur að skrám og sending tilkynninga í tölvupósti virka líklega ekki heldur. Við leggjum til að internettenging sé virkjuð fyrir þennan vefþjón ef þú vilt hafa alla eiginleika tiltæka.",
"Allow editing" : "Leyfa breytingar",
+ "can share" : "getur deilt",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppfærslan er í gangi, ef farið er af þessari síðu gæti það truflað ferlið á sumum kerfum.",
"Updating to {version}" : "Uppfæri í {version}",
"The update was successful. There were warnings." : "Uppfærslan tókst. Það voru viðvaranir.",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index 98c88889807..67403c6c966 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -168,7 +168,7 @@ OC.L10N.register(
"remote" : "remota",
"notify by email" : "notifica tramite email",
"Unshare" : "Rimuovi condivisione",
- "can share" : "può condividere",
+ "can reshare" : "può ri-condividere",
"can edit" : "può modificare",
"create" : "creare",
"change" : "cambia",
@@ -326,6 +326,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Impossibile inviare email ai seguenti utenti: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.",
"Allow editing" : "Consenti la modifica",
+ "can share" : "può condividere",
"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 to {version}" : "Aggiornamento a {version}",
"The update was successful. There were warnings." : "L'aggiornamento è stato effettuato correttamente. Ci sono degli avvisi.",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 9479404af00..8fc5c52346c 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -166,7 +166,7 @@
"remote" : "remota",
"notify by email" : "notifica tramite email",
"Unshare" : "Rimuovi condivisione",
- "can share" : "può condividere",
+ "can reshare" : "può ri-condividere",
"can edit" : "può modificare",
"create" : "creare",
"change" : "cambia",
@@ -324,6 +324,7 @@
"Couldn't send mail to following users: %s " : "Impossibile inviare email ai seguenti utenti: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.",
"Allow editing" : "Consenti la modifica",
+ "can share" : "può condividere",
"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 to {version}" : "Aggiornamento a {version}",
"The update was successful. There were warnings." : "L'aggiornamento è stato effettuato correttamente. Ci sono degli avvisi.",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index cab717c74a9..4984a90651f 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -162,7 +162,6 @@ OC.L10N.register(
"remote" : "リモート",
"notify by email" : "メールで通知",
"Unshare" : "共有解除",
- "can share" : "共有可",
"can edit" : "編集を許可",
"create" : "作成",
"change" : "更新",
@@ -311,6 +310,7 @@ OC.L10N.register(
"Error unfavoriting" : "お気に入りから削除エラー",
"Couldn't send mail to following users: %s " : "次のユーザーにメールを送信できませんでした: %s",
"Allow editing" : "編集を許可",
+ "can share" : "共有可",
"Two-step verification" : "2段階認証",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "あなたのアカウントではセキュリティ拡張が有効になっています。2要素認証を使って認証してください。",
"Cancel login" : "ログインをキャンセル",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 1163ffcad55..97f16c5873e 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -160,7 +160,6 @@
"remote" : "リモート",
"notify by email" : "メールで通知",
"Unshare" : "共有解除",
- "can share" : "共有可",
"can edit" : "編集を許可",
"create" : "作成",
"change" : "更新",
@@ -309,6 +308,7 @@
"Error unfavoriting" : "お気に入りから削除エラー",
"Couldn't send mail to following users: %s " : "次のユーザーにメールを送信できませんでした: %s",
"Allow editing" : "編集を許可",
+ "can share" : "共有可",
"Two-step verification" : "2段階認証",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "あなたのアカウントではセキュリティ拡張が有効になっています。2要素認証を使って認証してください。",
"Cancel login" : "ログインをキャンセル",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index 0ddbd881844..aa77185d5b8 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -156,7 +156,6 @@ OC.L10N.register(
"remote" : "원격",
"notify by email" : "이메일로 알림",
"Unshare" : "공유 해제",
- "can share" : "공유 가능",
"can edit" : "편집 가능",
"create" : "생성",
"change" : "변경",
@@ -310,6 +309,7 @@ OC.L10N.register(
"Error unfavoriting" : "즐겨찾기 삭제 오류",
"Couldn't send mail to following users: %s " : "%s 님에게 메일을 보낼 수 없습니다.",
"Allow editing" : "편집 허용",
+ "can share" : "공유 가능",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "업그레이드 중입니다. 이 페이지를 열어 두면 일부 환경에서 진행 과정을 중단시킬 수 있습니다.",
"Updating to {version}" : "{version}(으)로 업데이트 중",
"The update was successful. There were warnings." : "업데이트가 성공했습니다. 일부 경고가 있습니다.",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index 75f0fda4795..4a13b74ade0 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -154,7 +154,6 @@
"remote" : "원격",
"notify by email" : "이메일로 알림",
"Unshare" : "공유 해제",
- "can share" : "공유 가능",
"can edit" : "편집 가능",
"create" : "생성",
"change" : "변경",
@@ -308,6 +307,7 @@
"Error unfavoriting" : "즐겨찾기 삭제 오류",
"Couldn't send mail to following users: %s " : "%s 님에게 메일을 보낼 수 없습니다.",
"Allow editing" : "편집 허용",
+ "can share" : "공유 가능",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "업그레이드 중입니다. 이 페이지를 열어 두면 일부 환경에서 진행 과정을 중단시킬 수 있습니다.",
"Updating to {version}" : "{version}(으)로 업데이트 중",
"The update was successful. There were warnings." : "업데이트가 성공했습니다. 일부 경고가 있습니다.",
diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js
index 7dcc67a8ae9..dd6653434bf 100644
--- a/core/l10n/nb_NO.js
+++ b/core/l10n/nb_NO.js
@@ -162,7 +162,6 @@ OC.L10N.register(
"remote" : "ekstern",
"notify by email" : "Varsle på email",
"Unshare" : "Avslutt deling",
- "can share" : "kan dele",
"can edit" : "kan endre",
"create" : "opprette",
"change" : "endre",
@@ -320,6 +319,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Klarte ikke å sende mail til følgende brukere: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.",
"Allow editing" : "Tillat redigering",
+ "can share" : "kan dele",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "En oppdatering foregår, lukking av denne siden kan forstyrre prosessen på enkelte systemer.",
"Updating to {version}" : "Oppdaterer til {version}",
"The update was successful. There were warnings." : "Oppdateringen var vellykket. Det oppstod advarsler.",
diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json
index 64dccf7403c..b89294c03ee 100644
--- a/core/l10n/nb_NO.json
+++ b/core/l10n/nb_NO.json
@@ -160,7 +160,6 @@
"remote" : "ekstern",
"notify by email" : "Varsle på email",
"Unshare" : "Avslutt deling",
- "can share" : "kan dele",
"can edit" : "kan endre",
"create" : "opprette",
"change" : "endre",
@@ -318,6 +317,7 @@
"Couldn't send mail to following users: %s " : "Klarte ikke å sende mail til følgende brukere: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.",
"Allow editing" : "Tillat redigering",
+ "can share" : "kan dele",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "En oppdatering foregår, lukking av denne siden kan forstyrre prosessen på enkelte systemer.",
"Updating to {version}" : "Oppdaterer til {version}",
"The update was successful. There were warnings." : "Oppdateringen var vellykket. Det oppstod advarsler.",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index 861a499b4c6..3c1c01c6f28 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -168,7 +168,7 @@ OC.L10N.register(
"remote" : "extern",
"notify by email" : "melden per e-mail",
"Unshare" : "Stop met delen",
- "can share" : "kan delen",
+ "can reshare" : "kan doordelen",
"can edit" : "kan wijzigen",
"create" : "creëer",
"change" : "wijzig",
@@ -326,6 +326,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Kon geen e-mail sturen aan de volgende gebruikers: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie e-mails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.",
"Allow editing" : "Toestaan bewerken",
+ "can share" : "kan delen",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "De update is bezig, deze pagina verlaten kan het updateproces in sommige omgevingen onderbreken.",
"Updating to {version}" : "Bijwerken naar {version}",
"The update was successful. There were warnings." : "De update is geslaagd. Er zijn wel waarschuwingen.",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index 092cef08fd5..ecfb74f102c 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -166,7 +166,7 @@
"remote" : "extern",
"notify by email" : "melden per e-mail",
"Unshare" : "Stop met delen",
- "can share" : "kan delen",
+ "can reshare" : "kan doordelen",
"can edit" : "kan wijzigen",
"create" : "creëer",
"change" : "wijzig",
@@ -324,6 +324,7 @@
"Couldn't send mail to following users: %s " : "Kon geen e-mail sturen aan de volgende gebruikers: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie e-mails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.",
"Allow editing" : "Toestaan bewerken",
+ "can share" : "kan delen",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "De update is bezig, deze pagina verlaten kan het updateproces in sommige omgevingen onderbreken.",
"Updating to {version}" : "Bijwerken naar {version}",
"The update was successful. There were warnings." : "De update is geslaagd. Er zijn wel waarschuwingen.",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index fb15155332a..753ce80d3fc 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -153,7 +153,6 @@ OC.L10N.register(
"remote" : "zdalny",
"notify by email" : "powiadom przez emaila",
"Unshare" : "Zatrzymaj współdzielenie",
- "can share" : "może współdzielić",
"can edit" : "może edytować",
"create" : "utwórz",
"change" : "zmiany",
@@ -305,6 +304,7 @@ OC.L10N.register(
"Error unfavoriting" : "Błąd przy usuwaniu z ulubionych",
"Couldn't send mail to following users: %s " : "Nie można było wysłać wiadomości do następujących użytkowników: %s",
"Allow editing" : "Pozwól na edycję",
+ "can share" : "może współdzielić",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trwa aktualizacja. W niektórych przypadkach, opuszczenie tej strony może przerwać ten proces.",
"Updating to {version}" : "Uaktualnianie do {version}",
"The update was successful. There were warnings." : "Aktualizacja przebiegła pomyślnie. Pojawiły się ostrzeżenia.",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 85ef243be62..c3e4e151117 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -151,7 +151,6 @@
"remote" : "zdalny",
"notify by email" : "powiadom przez emaila",
"Unshare" : "Zatrzymaj współdzielenie",
- "can share" : "może współdzielić",
"can edit" : "może edytować",
"create" : "utwórz",
"change" : "zmiany",
@@ -303,6 +302,7 @@
"Error unfavoriting" : "Błąd przy usuwaniu z ulubionych",
"Couldn't send mail to following users: %s " : "Nie można było wysłać wiadomości do następujących użytkowników: %s",
"Allow editing" : "Pozwól na edycję",
+ "can share" : "może współdzielić",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trwa aktualizacja. W niektórych przypadkach, opuszczenie tej strony może przerwać ten proces.",
"Updating to {version}" : "Uaktualnianie do {version}",
"The update was successful. There were warnings." : "Aktualizacja przebiegła pomyślnie. Pojawiły się ostrzeżenia.",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 19ac63c3609..753ecbc1b88 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"remote" : "remoto",
"notify by email" : "notificar por e-mail",
"Unshare" : "Descompartilhar",
- "can share" : "pode compartilhar",
"can edit" : "pode editar",
"create" : "criar",
"change" : "mudança",
@@ -326,6 +325,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Não foi possível enviar e-mail para os seguintes usuários: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor não tem nenhuma conexão com a Internet. Isso significa que alguns dos recursos como montar armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acessar arquivos remotamente e envio de e-mails de notificação pode não funcionar, também. Sugerimos permitir conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.",
"Allow editing" : "Permitir edição",
+ "can share" : "pode compartilhar",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento. Sair desta página poderá interromper o processo em alguns ambientes.",
"Updating to {version}" : "Atualizando para {version}",
"The update was successful. There were warnings." : "A atualização foi concluída com sucesso. Existem avisos.",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index fed501282c2..d3890b20e03 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -166,7 +166,6 @@
"remote" : "remoto",
"notify by email" : "notificar por e-mail",
"Unshare" : "Descompartilhar",
- "can share" : "pode compartilhar",
"can edit" : "pode editar",
"create" : "criar",
"change" : "mudança",
@@ -324,6 +323,7 @@
"Couldn't send mail to following users: %s " : "Não foi possível enviar e-mail para os seguintes usuários: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor não tem nenhuma conexão com a Internet. Isso significa que alguns dos recursos como montar armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acessar arquivos remotamente e envio de e-mails de notificação pode não funcionar, também. Sugerimos permitir conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.",
"Allow editing" : "Permitir edição",
+ "can share" : "pode compartilhar",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento. Sair desta página poderá interromper o processo em alguns ambientes.",
"Updating to {version}" : "Atualizando para {version}",
"The update was successful. There were warnings." : "A atualização foi concluída com sucesso. Existem avisos.",
diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js
index 9ab49f9f04f..5ee84093111 100644
--- a/core/l10n/pt_PT.js
+++ b/core/l10n/pt_PT.js
@@ -161,7 +161,6 @@ OC.L10N.register(
"remote" : "remoto",
"notify by email" : "Notificar por mensagem",
"Unshare" : "Cancelar partilha",
- "can share" : "pode partilhar",
"can edit" : "pode editar",
"create" : "criar",
"change" : "alterar",
@@ -308,6 +307,7 @@ OC.L10N.register(
"Error unfavoriting" : "Erro ao remover como favorito",
"Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s",
"Allow editing" : "Permitir edição",
+ "can share" : "pode partilhar",
"Two-step verification" : "Verificação de dois passos:",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "A segurança reforçada foi ativada para a sua conta. Por favor, autentique utilizando um segundo fator.",
"Please authenticate using the selected factor." : "Por favor, autentique utilizando um segundo fator.",
diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json
index b11709660ff..6a0020a965c 100644
--- a/core/l10n/pt_PT.json
+++ b/core/l10n/pt_PT.json
@@ -159,7 +159,6 @@
"remote" : "remoto",
"notify by email" : "Notificar por mensagem",
"Unshare" : "Cancelar partilha",
- "can share" : "pode partilhar",
"can edit" : "pode editar",
"create" : "criar",
"change" : "alterar",
@@ -306,6 +305,7 @@
"Error unfavoriting" : "Erro ao remover como favorito",
"Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s",
"Allow editing" : "Permitir edição",
+ "can share" : "pode partilhar",
"Two-step verification" : "Verificação de dois passos:",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "A segurança reforçada foi ativada para a sua conta. Por favor, autentique utilizando um segundo fator.",
"Please authenticate using the selected factor." : "Por favor, autentique utilizando um segundo fator.",
diff --git a/core/l10n/ro.js b/core/l10n/ro.js
index 28280d91d26..aa2201ee1e1 100644
--- a/core/l10n/ro.js
+++ b/core/l10n/ro.js
@@ -140,7 +140,6 @@ OC.L10N.register(
"remote" : "de la distanță",
"notify by email" : "notifică prin email",
"Unshare" : "Anulare partajare",
- "can share" : "se poate partaja",
"can edit" : "poate edita",
"create" : "creare",
"change" : "modifică",
@@ -258,6 +257,7 @@ OC.L10N.register(
"Error unfavoriting" : "Eroare la scoaterea de la favorite",
"Couldn't send mail to following users: %s " : "Nu s-a putut trimite mesajul către următorii utilizatori: %s",
"Allow editing" : "Permite editarea",
+ "can share" : "se poate partaja",
"Two-step verification" : "Verificare în doi pași",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "A fost activată securitatea sporită pentru contul tău. Te rugăm să te autentifici folosind un al doilea factor.",
"Cancel login" : "Anulează autentificarea",
diff --git a/core/l10n/ro.json b/core/l10n/ro.json
index 1424284ae81..8be770cb775 100644
--- a/core/l10n/ro.json
+++ b/core/l10n/ro.json
@@ -138,7 +138,6 @@
"remote" : "de la distanță",
"notify by email" : "notifică prin email",
"Unshare" : "Anulare partajare",
- "can share" : "se poate partaja",
"can edit" : "poate edita",
"create" : "creare",
"change" : "modifică",
@@ -256,6 +255,7 @@
"Error unfavoriting" : "Eroare la scoaterea de la favorite",
"Couldn't send mail to following users: %s " : "Nu s-a putut trimite mesajul către următorii utilizatori: %s",
"Allow editing" : "Permite editarea",
+ "can share" : "se poate partaja",
"Two-step verification" : "Verificare în doi pași",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "A fost activată securitatea sporită pentru contul tău. Te rugăm să te autentifici folosind un al doilea factor.",
"Cancel login" : "Anulează autentificarea",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index b2ffb60441c..9298672bec1 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"remote" : "удаленный",
"notify by email" : "уведомить по почте",
"Unshare" : "Закрыть доступ",
- "can share" : "может делиться с другими",
"can edit" : "может редактировать",
"create" : "создать",
"change" : "изменить",
@@ -326,6 +325,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Невозможно отправить письмо следующим пользователям: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Этот сервер не имеет подключения к Интернету. Это означает, что некоторые из функций, таких как внешнее хранилище, уведомления об обновлениях и установка сторонних приложений не будут работать. Доступ к файлам удаленно и отправки уведомлений по почте могут не работать. Рекомендуется разрешить данному серверу доступ в Интернет если хотите, чтобы все функции работали.",
"Allow editing" : "Разрешить редактирование",
+ "can share" : "может делиться с другими",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Идет процесс обновления. Не покидайте эту страницу во избежание поломок.",
"Updating to {version}" : "Обновление до версии {version}",
"The update was successful. There were warnings." : "Обновление прошло успешно. Есть предупреждения.",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index c67a098449a..daf8b637678 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -166,7 +166,6 @@
"remote" : "удаленный",
"notify by email" : "уведомить по почте",
"Unshare" : "Закрыть доступ",
- "can share" : "может делиться с другими",
"can edit" : "может редактировать",
"create" : "создать",
"change" : "изменить",
@@ -324,6 +323,7 @@
"Couldn't send mail to following users: %s " : "Невозможно отправить письмо следующим пользователям: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Этот сервер не имеет подключения к Интернету. Это означает, что некоторые из функций, таких как внешнее хранилище, уведомления об обновлениях и установка сторонних приложений не будут работать. Доступ к файлам удаленно и отправки уведомлений по почте могут не работать. Рекомендуется разрешить данному серверу доступ в Интернет если хотите, чтобы все функции работали.",
"Allow editing" : "Разрешить редактирование",
+ "can share" : "может делиться с другими",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Идет процесс обновления. Не покидайте эту страницу во избежание поломок.",
"Updating to {version}" : "Обновление до версии {version}",
"The update was successful. There were warnings." : "Обновление прошло успешно. Есть предупреждения.",
diff --git a/core/l10n/sk_SK.js b/core/l10n/sk_SK.js
index 49cf9e5765e..45549989724 100644
--- a/core/l10n/sk_SK.js
+++ b/core/l10n/sk_SK.js
@@ -149,7 +149,6 @@ OC.L10N.register(
"remote" : "vzdialený",
"notify by email" : "informovať emailom",
"Unshare" : "Zrušiť zdieľanie",
- "can share" : "môže zdieľať",
"can edit" : "môže upraviť",
"create" : "vytvoriť",
"change" : "zmeniť",
@@ -280,6 +279,7 @@ OC.L10N.register(
"Error favoriting" : "Chyba pri pridaní do obľúbených",
"Error unfavoriting" : "Chyba pri odobratí z obľúbených",
"Couldn't send mail to following users: %s " : "Nebolo možné odoslať email týmto používateľom: %s ",
- "Allow editing" : "Povoliť úpravy"
+ "Allow editing" : "Povoliť úpravy",
+ "can share" : "môže zdieľať"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/core/l10n/sk_SK.json b/core/l10n/sk_SK.json
index f61a93c26eb..efc7566ddf5 100644
--- a/core/l10n/sk_SK.json
+++ b/core/l10n/sk_SK.json
@@ -147,7 +147,6 @@
"remote" : "vzdialený",
"notify by email" : "informovať emailom",
"Unshare" : "Zrušiť zdieľanie",
- "can share" : "môže zdieľať",
"can edit" : "môže upraviť",
"create" : "vytvoriť",
"change" : "zmeniť",
@@ -278,6 +277,7 @@
"Error favoriting" : "Chyba pri pridaní do obľúbených",
"Error unfavoriting" : "Chyba pri odobratí z obľúbených",
"Couldn't send mail to following users: %s " : "Nebolo možné odoslať email týmto používateľom: %s ",
- "Allow editing" : "Povoliť úpravy"
+ "Allow editing" : "Povoliť úpravy",
+ "can share" : "môže zdieľať"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 685f6d77e9b..0d628e46ecc 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"remote" : "oddaljeno",
"notify by email" : "obvesti po elektronski pošti",
"Unshare" : "Prekliči souporabo",
- "can share" : "lahko omogoči souporabo",
"can edit" : "lahko ureja",
"create" : "ustvari",
"change" : "sprememba",
@@ -321,6 +320,7 @@ OC.L10N.register(
"Error unfavoriting" : "Napaka odstranjevanja oznake priljubljenosti",
"Couldn't send mail to following users: %s " : "Ni mogoče poslati sporočila za: %s",
"Allow editing" : "Dovoli urejanje",
+ "can share" : "lahko omogoči souporabo",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Posodobitev je v teku. Če zapustiš to stran, lahko, v določenih okoljih, prekineš proces",
"Updating to {version}" : "Posodabljanje na različico {version}",
"The update was successful. There were warnings." : "Posodobitev je uspešno končana, vendar z nekaj opozorili.",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index 1e32aa04835..56b1182012b 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -163,7 +163,6 @@
"remote" : "oddaljeno",
"notify by email" : "obvesti po elektronski pošti",
"Unshare" : "Prekliči souporabo",
- "can share" : "lahko omogoči souporabo",
"can edit" : "lahko ureja",
"create" : "ustvari",
"change" : "sprememba",
@@ -319,6 +318,7 @@
"Error unfavoriting" : "Napaka odstranjevanja oznake priljubljenosti",
"Couldn't send mail to following users: %s " : "Ni mogoče poslati sporočila za: %s",
"Allow editing" : "Dovoli urejanje",
+ "can share" : "lahko omogoči souporabo",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Posodobitev je v teku. Če zapustiš to stran, lahko, v določenih okoljih, prekineš proces",
"Updating to {version}" : "Posodabljanje na različico {version}",
"The update was successful. There were warnings." : "Posodobitev je uspešno končana, vendar z nekaj opozorili.",
diff --git a/core/l10n/sq.js b/core/l10n/sq.js
index a35ebbf20c7..e45db40b1b7 100644
--- a/core/l10n/sq.js
+++ b/core/l10n/sq.js
@@ -161,7 +161,6 @@ OC.L10N.register(
"remote" : "i largët",
"notify by email" : "njofto me email",
"Unshare" : "Hiqe ndarjen",
- "can share" : "mund të ndajnë",
"can edit" : "mund të përpunojnë",
"create" : "krijoje",
"change" : "ndërroje",
@@ -308,6 +307,7 @@ OC.L10N.register(
"Error unfavoriting" : "Gabim në heqjen nga të parapëlqyerat",
"Couldn't send mail to following users: %s " : "S’u dërgua dot e-mail përdoruesve vijues: %s ",
"Allow editing" : "Lejo përpunim",
+ "can share" : "mund të ndajnë",
"Two-step verification" : "Verifikim dyhapësh",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Siguria e zgjeruar është aktivizuar për llogarinë tuaj. Ju lutemi, bëni mirëfilltësimin duke përdorur një faktor të dytë.",
"Cancel login" : "Anuloje hyrjen",
diff --git a/core/l10n/sq.json b/core/l10n/sq.json
index 9b4ec24511c..902151d405e 100644
--- a/core/l10n/sq.json
+++ b/core/l10n/sq.json
@@ -159,7 +159,6 @@
"remote" : "i largët",
"notify by email" : "njofto me email",
"Unshare" : "Hiqe ndarjen",
- "can share" : "mund të ndajnë",
"can edit" : "mund të përpunojnë",
"create" : "krijoje",
"change" : "ndërroje",
@@ -306,6 +305,7 @@
"Error unfavoriting" : "Gabim në heqjen nga të parapëlqyerat",
"Couldn't send mail to following users: %s " : "S’u dërgua dot e-mail përdoruesve vijues: %s ",
"Allow editing" : "Lejo përpunim",
+ "can share" : "mund të ndajnë",
"Two-step verification" : "Verifikim dyhapësh",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Siguria e zgjeruar është aktivizuar për llogarinë tuaj. Ju lutemi, bëni mirëfilltësimin duke përdorur një faktor të dytë.",
"Cancel login" : "Anuloje hyrjen",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index bbebb40ff25..7c9e94ecb6f 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"remote" : "fjärr",
"notify by email" : "informera via e-post",
"Unshare" : "Sluta dela",
- "can share" : "får dela",
"can edit" : "kan redigera",
"create" : "skapa",
"change" : "ändra",
@@ -326,6 +325,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Gick inte att skicka e-post till följande användare: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Servern har ingen fungerande internetuppkoppling. Detta betyder att vissa funktioner så som extern lagring, notifikationer om uppdateringar eller installationer utav tredjepartsapplikationer inte kommer fungera. Åtkomst av filer utifrån och att skicka notifieringar via epost kanske inte fungerar heller. Vi föreslår att internetanslutningen aktiveras för denna server om man vill använda samtliga funktioner.",
"Allow editing" : "Tillåt redigering",
+ "can share" : "får dela",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppgradering pågår, att lämna denna sidan kan störa processen i vissa miljöer",
"Updating to {version}" : "Uppdaterar till {version}",
"The update was successful. There were warnings." : "Uppdateringen lyckades. Det finns varningar.",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index eca94b3c1fc..b550bafc6e0 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -166,7 +166,6 @@
"remote" : "fjärr",
"notify by email" : "informera via e-post",
"Unshare" : "Sluta dela",
- "can share" : "får dela",
"can edit" : "kan redigera",
"create" : "skapa",
"change" : "ändra",
@@ -324,6 +323,7 @@
"Couldn't send mail to following users: %s " : "Gick inte att skicka e-post till följande användare: %s",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Servern har ingen fungerande internetuppkoppling. Detta betyder att vissa funktioner så som extern lagring, notifikationer om uppdateringar eller installationer utav tredjepartsapplikationer inte kommer fungera. Åtkomst av filer utifrån och att skicka notifieringar via epost kanske inte fungerar heller. Vi föreslår att internetanslutningen aktiveras för denna server om man vill använda samtliga funktioner.",
"Allow editing" : "Tillåt redigering",
+ "can share" : "får dela",
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppgradering pågår, att lämna denna sidan kan störa processen i vissa miljöer",
"Updating to {version}" : "Uppdaterar till {version}",
"The update was successful. There were warnings." : "Uppdateringen lyckades. Det finns varningar.",
diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js
index 6e9dd8acd3c..6e61f17bf7f 100644
--- a/core/l10n/th_TH.js
+++ b/core/l10n/th_TH.js
@@ -153,7 +153,6 @@ OC.L10N.register(
"remote" : "รีโมท",
"notify by email" : "แจ้งเตือนทางอีเมล",
"Unshare" : "ยกเลิกการแชร์",
- "can share" : "สามารถแชร์ได้",
"can edit" : "สามารถแก้ไข",
"create" : "สร้าง",
"change" : "เปลี่ยนแปลง",
@@ -281,6 +280,7 @@ OC.L10N.register(
"Error favoriting" : "เกิดข้อผิดพลาดขณะเลือกที่ชื่นชอบ",
"Error unfavoriting" : "เกิดข้อผิดพลาดขณะยกเลิกการเลือกที่ชื่นชอบ",
"Couldn't send mail to following users: %s " : "ไม่สามารถส่งอีเมลไปยังผู้ใช้: %s",
- "Allow editing" : "อนุญาตให้แก้ไข"
+ "Allow editing" : "อนุญาตให้แก้ไข",
+ "can share" : "สามารถแชร์ได้"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json
index a92a7fd962a..280dc7343cb 100644
--- a/core/l10n/th_TH.json
+++ b/core/l10n/th_TH.json
@@ -151,7 +151,6 @@
"remote" : "รีโมท",
"notify by email" : "แจ้งเตือนทางอีเมล",
"Unshare" : "ยกเลิกการแชร์",
- "can share" : "สามารถแชร์ได้",
"can edit" : "สามารถแก้ไข",
"create" : "สร้าง",
"change" : "เปลี่ยนแปลง",
@@ -279,6 +278,7 @@
"Error favoriting" : "เกิดข้อผิดพลาดขณะเลือกที่ชื่นชอบ",
"Error unfavoriting" : "เกิดข้อผิดพลาดขณะยกเลิกการเลือกที่ชื่นชอบ",
"Couldn't send mail to following users: %s " : "ไม่สามารถส่งอีเมลไปยังผู้ใช้: %s",
- "Allow editing" : "อนุญาตให้แก้ไข"
+ "Allow editing" : "อนุญาตให้แก้ไข",
+ "can share" : "สามารถแชร์ได้"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index ed649d2fcc7..3d378a95026 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -167,7 +167,6 @@ OC.L10N.register(
"remote" : "uzak",
"notify by email" : "e-posta ile bildir",
"Unshare" : "Paylaşmayı Kaldır",
- "can share" : "paylaşabilir",
"can edit" : "düzenleyebilir",
"create" : "oluştur",
"change" : "değiştir",
@@ -316,6 +315,7 @@ OC.L10N.register(
"Error unfavoriting" : "Beğeniden kaldırılırken hata",
"Couldn't send mail to following users: %s " : "Şu kullanıcılara posta gönderilemedi: %s",
"Allow editing" : "Düzenlemeye izin ver",
+ "can share" : "paylaşabilir",
"Two-step verification" : "2 adımlı doğrulama",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Hesabınız için gelişmiş güvenlik etkinleştirildi. Lütfen ikinci etkeni kullanarak kimlik doğrulaması yapın.",
"Cancel login" : "Girişi iptal et",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 6efd6fe1834..6bb2d13a848 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -165,7 +165,6 @@
"remote" : "uzak",
"notify by email" : "e-posta ile bildir",
"Unshare" : "Paylaşmayı Kaldır",
- "can share" : "paylaşabilir",
"can edit" : "düzenleyebilir",
"create" : "oluştur",
"change" : "değiştir",
@@ -314,6 +313,7 @@
"Error unfavoriting" : "Beğeniden kaldırılırken hata",
"Couldn't send mail to following users: %s " : "Şu kullanıcılara posta gönderilemedi: %s",
"Allow editing" : "Düzenlemeye izin ver",
+ "can share" : "paylaşabilir",
"Two-step verification" : "2 adımlı doğrulama",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Hesabınız için gelişmiş güvenlik etkinleştirildi. Lütfen ikinci etkeni kullanarak kimlik doğrulaması yapın.",
"Cancel login" : "Girişi iptal et",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 3780556854e..5ab295104cf 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"remote" : "Віддалений",
"notify by email" : "повідомити по Email",
"Unshare" : "Закрити доступ",
- "can share" : "може ділитися з іншими",
"can edit" : "може редагувати",
"create" : "створити",
"change" : "змінити",
@@ -296,6 +295,7 @@ OC.L10N.register(
"Error unfavoriting" : "Помилка видалення з улюбленого",
"Couldn't send mail to following users: %s " : "Неможливо надіслати листа наступним користувачам: %s ",
"Allow editing" : "Дозволити редагування",
+ "can share" : "може ділитися з іншими",
"Two-step verification" : "Дворівнева перевірка",
"An error occured while verifying the token" : "При верифікації токена виникла помилка"
},
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index a317ffdf012..e6a65ed3bd6 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -150,7 +150,6 @@
"remote" : "Віддалений",
"notify by email" : "повідомити по Email",
"Unshare" : "Закрити доступ",
- "can share" : "може ділитися з іншими",
"can edit" : "може редагувати",
"create" : "створити",
"change" : "змінити",
@@ -294,6 +293,7 @@
"Error unfavoriting" : "Помилка видалення з улюбленого",
"Couldn't send mail to following users: %s " : "Неможливо надіслати листа наступним користувачам: %s ",
"Allow editing" : "Дозволити редагування",
+ "can share" : "може ділитися з іншими",
"Two-step verification" : "Дворівнева перевірка",
"An error occured while verifying the token" : "При верифікації токена виникла помилка"
},"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);"
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index fa983bb804c..40bbcac15db 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -161,7 +161,6 @@ OC.L10N.register(
"remote" : "远程",
"notify by email" : "以邮件通知",
"Unshare" : "取消共享",
- "can share" : "可共享",
"can edit" : "可以修改",
"create" : "创建",
"change" : "更改",
@@ -308,6 +307,7 @@ OC.L10N.register(
"Error unfavoriting" : "删除收藏时出错",
"Couldn't send mail to following users: %s " : "无法发送邮件到用户: %s ",
"Allow editing" : "允许编辑",
+ "can share" : "可共享",
"Two-step verification" : "两步验证",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "您的帐户已启用增强安全性,请使用第二因子验证。",
"Cancel login" : "取消登录",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 44a9446fe3e..e5e59ad1d73 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -159,7 +159,6 @@
"remote" : "远程",
"notify by email" : "以邮件通知",
"Unshare" : "取消共享",
- "can share" : "可共享",
"can edit" : "可以修改",
"create" : "创建",
"change" : "更改",
@@ -306,6 +305,7 @@
"Error unfavoriting" : "删除收藏时出错",
"Couldn't send mail to following users: %s " : "无法发送邮件到用户: %s ",
"Allow editing" : "允许编辑",
+ "can share" : "可共享",
"Two-step verification" : "两步验证",
"Enhanced security has been enabled for your account. Please authenticate using a second factor." : "您的帐户已启用增强安全性,请使用第二因子验证。",
"Cancel login" : "取消登录",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index 3b479fed4ce..06dd1574545 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -159,7 +159,6 @@ OC.L10N.register(
"remote" : "遠端",
"notify by email" : "以 email 通知",
"Unshare" : "取消分享",
- "can share" : "可分享",
"can edit" : "可編輯",
"create" : "建立",
"change" : "更動",
@@ -306,6 +305,7 @@ OC.L10N.register(
"Error unfavoriting" : "從最愛移除出錯",
"Couldn't send mail to following users: %s " : "無法寄送郵件給這些使用者:%s",
"Allow editing" : "允許編輯",
+ "can share" : "可分享",
"Updating to {version}" : "正在更新到 {version}",
"The update was successful. There were warnings." : "更新成功,有警告訊息",
"Two-step verification" : "二階段驗證",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index f9fbfce644a..1d17bec5a3a 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -157,7 +157,6 @@
"remote" : "遠端",
"notify by email" : "以 email 通知",
"Unshare" : "取消分享",
- "can share" : "可分享",
"can edit" : "可編輯",
"create" : "建立",
"change" : "更動",
@@ -304,6 +303,7 @@
"Error unfavoriting" : "從最愛移除出錯",
"Couldn't send mail to following users: %s " : "無法寄送郵件給這些使用者:%s",
"Allow editing" : "允許編輯",
+ "can share" : "可分享",
"Updating to {version}" : "正在更新到 {version}",
"The update was successful. There were warnings." : "更新成功,有警告訊息",
"Two-step verification" : "二階段驗證",
diff --git a/cron.php b/cron.php
index 68f6a5552d8..a4d2bb8692c 100644
--- a/cron.php
+++ b/cron.php
@@ -32,7 +32,7 @@
try {
- require_once 'lib/base.php';
+ require_once __DIR__ . '/lib/base.php';
if (\OCP\Util::needUpgrade()) {
\OCP\Util::writeLog('cron', 'Update required, skipping cron', \OCP\Util::DEBUG);
diff --git a/index.php b/index.php
index 75a2d03fa7a..903b1fd6a76 100644
--- a/index.php
+++ b/index.php
@@ -34,8 +34,8 @@ if (version_compare(PHP_VERSION, '5.6.0') === -1) {
}
try {
-
- require_once 'lib/base.php';
+
+ require_once __DIR__ . '/lib/base.php';
OC::handleRequest();
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 2fa4df4d9e9..0ff46de07de 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -107,6 +107,7 @@ return array(
'OCP\\Files\\FileNameTooLongException' => $baseDir . '/lib/public/Files/FileNameTooLongException.php',
'OCP\\Files\\Folder' => $baseDir . '/lib/public/Files/Folder.php',
'OCP\\Files\\ForbiddenException' => $baseDir . '/lib/public/Files/ForbiddenException.php',
+ 'OCP\\Files\\IAppData' => $baseDir . '/lib/public/Files/IAppData.php',
'OCP\\Files\\IHomeStorage' => $baseDir . '/lib/public/Files/IHomeStorage.php',
'OCP\\Files\\IMimeTypeDetector' => $baseDir . '/lib/public/Files/IMimeTypeDetector.php',
'OCP\\Files\\IMimeTypeLoader' => $baseDir . '/lib/public/Files/IMimeTypeLoader.php',
@@ -123,6 +124,9 @@ return array(
'OCP\\Files\\NotPermittedException' => $baseDir . '/lib/public/Files/NotPermittedException.php',
'OCP\\Files\\ObjectStore\\IObjectStore' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStore.php',
'OCP\\Files\\ReservedWordException' => $baseDir . '/lib/public/Files/ReservedWordException.php',
+ 'OCP\\Files\\SimpleFS\\ISimpleFile' => $baseDir . '/lib/public/Files/SimpleFS/ISimpleFile.php',
+ 'OCP\\Files\\SimpleFS\\ISimpleFolder' => $baseDir . '/lib/public/Files/SimpleFS/ISimpleFolder.php',
+ 'OCP\\Files\\SimpleFS\\ISimpleRoot' => $baseDir . '/lib/public/Files/SimpleFS/ISimpleRoot.php',
'OCP\\Files\\Storage' => $baseDir . '/lib/public/Files/Storage.php',
'OCP\\Files\\StorageAuthException' => $baseDir . '/lib/public/Files/StorageAuthException.php',
'OCP\\Files\\StorageBadConfigException' => $baseDir . '/lib/public/Files/StorageBadConfigException.php',
@@ -459,6 +463,8 @@ return array(
'OC\\Encryption\\Manager' => $baseDir . '/lib/private/Encryption/Manager.php',
'OC\\Encryption\\Update' => $baseDir . '/lib/private/Encryption/Update.php',
'OC\\Encryption\\Util' => $baseDir . '/lib/private/Encryption/Util.php',
+ 'OC\\Files\\AppData\\AppData' => $baseDir . '/lib/private/Files/AppData/AppData.php',
+ 'OC\\Files\\AppData\\Factory' => $baseDir . '/lib/private/Files/AppData/Factory.php',
'OC\\Files\\Cache\\Cache' => $baseDir . '/lib/private/Files/Cache/Cache.php',
'OC\\Files\\Cache\\CacheEntry' => $baseDir . '/lib/private/Files/Cache/CacheEntry.php',
'OC\\Files\\Cache\\FailedCache' => $baseDir . '/lib/private/Files/Cache/FailedCache.php',
@@ -500,6 +506,8 @@ return array(
'OC\\Files\\ObjectStore\\NoopScanner' => $baseDir . '/lib/private/Files/ObjectStore/NoopScanner.php',
'OC\\Files\\ObjectStore\\ObjectStoreStorage' => $baseDir . '/lib/private/Files/ObjectStore/ObjectStoreStorage.php',
'OC\\Files\\ObjectStore\\Swift' => $baseDir . '/lib/private/Files/ObjectStore/Swift.php',
+ 'OC\\Files\\SimpleFS\\SimpleFile' => $baseDir . '/lib/private/Files/SimpleFS/SimpleFile.php',
+ 'OC\\Files\\SimpleFS\\SimpleFolder' => $baseDir . '/lib/private/Files/SimpleFS/SimpleFolder.php',
'OC\\Files\\Storage\\Common' => $baseDir . '/lib/private/Files/Storage/Common.php',
'OC\\Files\\Storage\\CommonTest' => $baseDir . '/lib/private/Files/Storage/CommonTest.php',
'OC\\Files\\Storage\\DAV' => $baseDir . '/lib/private/Files/Storage/DAV.php',
@@ -638,6 +646,8 @@ return array(
'OC\\Repair\\FillETags' => $baseDir . '/lib/private/Repair/FillETags.php',
'OC\\Repair\\InnoDB' => $baseDir . '/lib/private/Repair/InnoDB.php',
'OC\\Repair\\MoveUpdaterStepFile' => $baseDir . '/lib/private/Repair/MoveUpdaterStepFile.php',
+ 'OC\\Repair\\NC11\\MoveAvatars' => $baseDir . '/lib/private/Repair/NC11/MoveAvatars.php',
+ 'OC\\Repair\\NC11\\MoveAvatarsBackgroundJob' => $baseDir . '/lib/private/Repair/NC11/MoveAvatarBackgroundJob.php',
'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Preview' => $baseDir . '/lib/private/Repair/Preview.php',
'OC\\Repair\\RemoveGetETagEntries' => $baseDir . '/lib/private/Repair/RemoveGetETagEntries.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index ad493bfb041..24058a22edb 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -137,6 +137,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Files\\FileNameTooLongException' => __DIR__ . '/../../..' . '/lib/public/Files/FileNameTooLongException.php',
'OCP\\Files\\Folder' => __DIR__ . '/../../..' . '/lib/public/Files/Folder.php',
'OCP\\Files\\ForbiddenException' => __DIR__ . '/../../..' . '/lib/public/Files/ForbiddenException.php',
+ 'OCP\\Files\\IAppData' => __DIR__ . '/../../..' . '/lib/public/Files/IAppData.php',
'OCP\\Files\\IHomeStorage' => __DIR__ . '/../../..' . '/lib/public/Files/IHomeStorage.php',
'OCP\\Files\\IMimeTypeDetector' => __DIR__ . '/../../..' . '/lib/public/Files/IMimeTypeDetector.php',
'OCP\\Files\\IMimeTypeLoader' => __DIR__ . '/../../..' . '/lib/public/Files/IMimeTypeLoader.php',
@@ -153,6 +154,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Files\\NotPermittedException' => __DIR__ . '/../../..' . '/lib/public/Files/NotPermittedException.php',
'OCP\\Files\\ObjectStore\\IObjectStore' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStore.php',
'OCP\\Files\\ReservedWordException' => __DIR__ . '/../../..' . '/lib/public/Files/ReservedWordException.php',
+ 'OCP\\Files\\SimpleFS\\ISimpleFile' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/ISimpleFile.php',
+ 'OCP\\Files\\SimpleFS\\ISimpleFolder' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/ISimpleFolder.php',
+ 'OCP\\Files\\SimpleFS\\ISimpleRoot' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/ISimpleRoot.php',
'OCP\\Files\\Storage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage.php',
'OCP\\Files\\StorageAuthException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageAuthException.php',
'OCP\\Files\\StorageBadConfigException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageBadConfigException.php',
@@ -489,6 +493,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Encryption\\Manager' => __DIR__ . '/../../..' . '/lib/private/Encryption/Manager.php',
'OC\\Encryption\\Update' => __DIR__ . '/../../..' . '/lib/private/Encryption/Update.php',
'OC\\Encryption\\Util' => __DIR__ . '/../../..' . '/lib/private/Encryption/Util.php',
+ 'OC\\Files\\AppData\\AppData' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/AppData.php',
+ 'OC\\Files\\AppData\\Factory' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/Factory.php',
'OC\\Files\\Cache\\Cache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Cache.php',
'OC\\Files\\Cache\\CacheEntry' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheEntry.php',
'OC\\Files\\Cache\\FailedCache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/FailedCache.php',
@@ -530,6 +536,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\ObjectStore\\NoopScanner' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/NoopScanner.php',
'OC\\Files\\ObjectStore\\ObjectStoreStorage' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/ObjectStoreStorage.php',
'OC\\Files\\ObjectStore\\Swift' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/Swift.php',
+ 'OC\\Files\\SimpleFS\\SimpleFile' => __DIR__ . '/../../..' . '/lib/private/Files/SimpleFS/SimpleFile.php',
+ 'OC\\Files\\SimpleFS\\SimpleFolder' => __DIR__ . '/../../..' . '/lib/private/Files/SimpleFS/SimpleFolder.php',
'OC\\Files\\Storage\\Common' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Common.php',
'OC\\Files\\Storage\\CommonTest' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/CommonTest.php',
'OC\\Files\\Storage\\DAV' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/DAV.php',
@@ -668,6 +676,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair\\FillETags' => __DIR__ . '/../../..' . '/lib/private/Repair/FillETags.php',
'OC\\Repair\\InnoDB' => __DIR__ . '/../../..' . '/lib/private/Repair/InnoDB.php',
'OC\\Repair\\MoveUpdaterStepFile' => __DIR__ . '/../../..' . '/lib/private/Repair/MoveUpdaterStepFile.php',
+ 'OC\\Repair\\NC11\\MoveAvatars' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/MoveAvatars.php',
+ 'OC\\Repair\\NC11\\MoveAvatarsBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/MoveAvatarBackgroundJob.php',
'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Preview' => __DIR__ . '/../../..' . '/lib/private/Repair/Preview.php',
'OC\\Repair\\RemoveGetETagEntries' => __DIR__ . '/../../..' . '/lib/private/Repair/RemoveGetETagEntries.php',
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 20351d1321c..b6f8d8f458d 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -46,6 +46,7 @@ use OC\AppFramework\Utility\SimpleContainer;
use OC\Core\Middleware\TwoFactorMiddleware;
use OCP\AppFramework\IApi;
use OCP\AppFramework\IAppContainer;
+use OCP\Files\IAppData;
class DIContainer extends SimpleContainer implements IAppContainer {
@@ -164,6 +165,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $this->getServer()->getHTTPClientService();
});
+ $this->registerService(IAppData::class, function (SimpleContainer $c) {
+ return $this->getServer()->getAppDataDir($c->query('AppName'));
+ });
+
$this->registerService('OCP\\IGroupManager', function($c) {
return $this->getServer()->getGroupManager();
});
diff --git a/lib/private/Avatar.php b/lib/private/Avatar.php
index 9e8bd0136c2..c3a068701df 100644
--- a/lib/private/Avatar.php
+++ b/lib/private/Avatar.php
@@ -29,10 +29,10 @@
namespace OC;
use OC\User\User;
-use OCP\Files\Folder;
-use OCP\Files\File;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
+use OCP\Files\SimpleFS\ISimpleFile;
+use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\IAvatar;
use OCP\IConfig;
use OCP\IImage;
@@ -45,7 +45,7 @@ use OCP\ILogger;
*/
class Avatar implements IAvatar {
- /** @var Folder */
+ /** @var ISimpleFolder */
private $folder;
/** @var IL10N */
private $l;
@@ -59,13 +59,13 @@ class Avatar implements IAvatar {
/**
* constructor
*
- * @param Folder $folder The folder where the avatars are
+ * @param ISimpleFolder $folder The folder where the avatars are
* @param IL10N $l
* @param User $user
* @param ILogger $logger
* @param IConfig $config
*/
- public function __construct(Folder $folder,
+ public function __construct(ISimpleFolder $folder,
IL10N $l,
$user,
ILogger $logger,
@@ -98,7 +98,8 @@ class Avatar implements IAvatar {
* @return bool
*/
public function exists() {
- return $this->folder->nodeExists('avatar.jpg') || $this->folder->nodeExists('avatar.png');
+
+ return $this->folder->fileExists('avatar.jpg') || $this->folder->fileExists('avatar.png');
}
/**
@@ -170,15 +171,15 @@ class Avatar implements IAvatar {
}
try {
- $file = $this->folder->get($path);
+ $file = $this->folder->getFile($path);
} catch (NotFoundException $e) {
if ($size <= 0) {
throw new NotFoundException;
}
$avatar = new OC_Image();
- /** @var File $file */
- $file = $this->folder->get('avatar.' . $ext);
+ /** @var ISimpleFile $file */
+ $file = $this->folder->getFile('avatar.' . $ext);
$avatar->loadFromData($file->getContent());
if ($size !== -1) {
$avatar->resize($size);
@@ -201,9 +202,9 @@ class Avatar implements IAvatar {
* @throws NotFoundException
*/
private function getExtension() {
- if ($this->folder->nodeExists('avatar.jpg')) {
+ if ($this->folder->fileExists('avatar.jpg')) {
return 'jpg';
- } elseif ($this->folder->nodeExists('avatar.png')) {
+ } elseif ($this->folder->fileExists('avatar.png')) {
return 'png';
}
throw new NotFoundException;
diff --git a/lib/private/AvatarManager.php b/lib/private/AvatarManager.php
index 0eabc3a1754..b8c6c2a1eb6 100644
--- a/lib/private/AvatarManager.php
+++ b/lib/private/AvatarManager.php
@@ -27,13 +27,12 @@
namespace OC;
-use OCP\Files\Folder;
+use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\ILogger;
use OCP\IUserManager;
-use OCP\Files\IRootFolder;
use OCP\IL10N;
/**
@@ -44,8 +43,8 @@ class AvatarManager implements IAvatarManager {
/** @var IUserManager */
private $userManager;
- /** @var IRootFolder */
- private $rootFolder;
+ /** @var IAppData */
+ private $appData;
/** @var IL10N */
private $l;
@@ -60,19 +59,19 @@ class AvatarManager implements IAvatarManager {
* AvatarManager constructor.
*
* @param IUserManager $userManager
- * @param IRootFolder $rootFolder
+ * @param IAppData $appData
* @param IL10N $l
* @param ILogger $logger
* @param IConfig $config
*/
public function __construct(
IUserManager $userManager,
- IRootFolder $rootFolder,
+ IAppData $appData,
IL10N $l,
ILogger $logger,
IConfig $config) {
$this->userManager = $userManager;
- $this->rootFolder = $rootFolder;
+ $this->appData = $appData;
$this->l = $l;
$this->logger = $logger;
$this->config = $config;
@@ -92,14 +91,14 @@ class AvatarManager implements IAvatarManager {
throw new \Exception('user does not exist');
}
- /*
- * Fix for #22119
- * Basically we do not want to copy the skeleton folder
- */
- \OC\Files\Filesystem::initMountPoints($userId);
- $dir = '/' . $userId;
- /** @var Folder $folder */
- $folder = $this->rootFolder->get($dir);
+ // sanitize userID - fixes casing issue (needed for the filesystem stuff that is done below)
+ $userId = $user->getUID();
+
+ try {
+ $folder = $this->appData->getFolder($userId);
+ } catch (NotFoundException $e) {
+ $folder = $this->appData->newFolder($userId);
+ }
return new Avatar($folder, $this->l, $user, $this->logger, $this->config);
}
diff --git a/lib/private/Files/AppData/AppData.php b/lib/private/Files/AppData/AppData.php
new file mode 100644
index 00000000000..270e834b8e5
--- /dev/null
+++ b/lib/private/Files/AppData/AppData.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Files\AppData;
+
+use OC\Files\SimpleFS\SimpleFolder;
+use OCP\Files\IAppData;
+use OCP\Files\IRootFolder;
+use OCP\Files\Folder;
+use OC\SystemConfig;
+use OCP\Files\Node;
+use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
+
+class AppData implements IAppData {
+
+ /** @var IRootFolder */
+ private $rootFolder;
+
+ /** @var SystemConfig */
+ private $config;
+
+ /** @var string */
+ private $appId;
+
+ /** @var Folder */
+ private $folder;
+
+ /**
+ * AppData constructor.
+ *
+ * @param IRootFolder $rootFolder
+ * @param SystemConfig $systemConfig
+ * @param string $appId
+ */
+ public function __construct(IRootFolder $rootFolder,
+ SystemConfig $systemConfig,
+ $appId) {
+
+ $this->rootFolder = $rootFolder;
+ $this->config = $systemConfig;
+ $this->appId = $appId;
+ }
+
+ /**
+ * @return Folder
+ * @throws \RuntimeException
+ */
+ private function getAppDataFolder() {
+ if ($this->folder === null) {
+ $instanceId = $this->config->getValue('instanceid', null);
+ if ($instanceId === null) {
+ throw new \RuntimeException('no instance id!');
+ }
+
+ $name = 'appdata_' . $instanceId;
+
+ try {
+ $appDataFolder = $this->rootFolder->get($name);
+ } catch (NotFoundException $e) {
+ try {
+ $appDataFolder = $this->rootFolder->newFolder($name);
+ } catch (NotPermittedException $e) {
+ throw new \RuntimeException('Could not get appdata folder');
+ }
+ }
+
+ try {
+ $appDataFolder = $appDataFolder->get($this->appId);
+ } catch (NotFoundException $e) {
+ try {
+ $appDataFolder = $appDataFolder->newFolder($this->appId);
+ } catch (NotPermittedException $e) {
+ throw new \RuntimeException('Could not get appdata folder for ' . $this->appId);
+ }
+ }
+
+ $this->folder = $appDataFolder;
+ }
+
+ return $this->folder;
+ }
+
+ public function getFolder($name) {
+ $node = $this->getAppDataFolder()->get($name);
+
+ /** @var Folder $node */
+ return new SimpleFolder($node);
+ }
+
+ public function newFolder($name) {
+ $folder = $this->getAppDataFolder()->newFolder($name);
+
+ return new SimpleFolder($folder);
+ }
+
+ public function getDirectoryListing() {
+ $listing = $this->getAppDataFolder()->getDirectoryListing();
+
+ $fileListing = array_map(function(Node $folder) {
+ if ($folder instanceof Folder) {
+ return new SimpleFolder($folder);
+ }
+ return null;
+ }, $listing);
+
+ $fileListing = array_filter($fileListing);
+
+ return array_values($fileListing);
+ }
+}
diff --git a/lib/private/Files/AppData/Factory.php b/lib/private/Files/AppData/Factory.php
new file mode 100644
index 00000000000..85c75733796
--- /dev/null
+++ b/lib/private/Files/AppData/Factory.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Files\AppData;
+
+use OC\SystemConfig;
+use OCP\Files\IRootFolder;
+
+class Factory {
+
+ /** @var IRootFolder */
+ private $rootFolder;
+
+ /** @var SystemConfig */
+ private $config;
+
+ public function __construct(IRootFolder $rootFolder,
+ SystemConfig $systemConfig) {
+
+ $this->rootFolder = $rootFolder;
+ $this->config = $systemConfig;
+ }
+
+ /**
+ * @param string $appId
+ * @return AppData
+ */
+ public function get($appId) {
+ return new AppData($this->rootFolder, $this->config, $appId);
+ }
+}
diff --git a/lib/private/Files/SimpleFS/SimpleFile.php b/lib/private/Files/SimpleFS/SimpleFile.php
new file mode 100644
index 00000000000..5eadfd98b60
--- /dev/null
+++ b/lib/private/Files/SimpleFS/SimpleFile.php
@@ -0,0 +1,115 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Files\SimpleFS;
+
+use OCP\Files\File;
+use OCP\Files\NotPermittedException;
+use OCP\Files\SimpleFS\ISimpleFile;
+
+class SimpleFile implements ISimpleFile {
+
+ /** @var File $file */
+ private $file;
+
+ /**
+ * File constructor.
+ *
+ * @param File $file
+ */
+ public function __construct(File $file) {
+ $this->file = $file;
+ }
+
+ /**
+ * Get the name
+ *
+ * @return string
+ */
+ public function getName() {
+ return $this->file->getName();
+ }
+
+ /**
+ * Get the size in bytes
+ *
+ * @return int
+ */
+ public function getSize() {
+ return $this->file->getSize();
+ }
+
+ /**
+ * Get the ETag
+ *
+ * @return string
+ */
+ public function getETag() {
+ return $this->file->getEtag();
+ }
+
+ /**
+ * Get the last modification time
+ *
+ * @return int
+ */
+ public function getMTime() {
+ return $this->file->getMTime();
+ }
+
+ /**
+ * Get the content
+ *
+ * @return string
+ */
+ public function getContent() {
+ return $this->file->getContent();
+ }
+
+ /**
+ * Overwrite the file
+ *
+ * @param string $data
+ * @throws NotPermittedException
+ */
+ public function putContent($data) {
+ $this->file->putContent($data);
+ }
+
+ /**
+ * Delete the file
+ *
+ * @throws NotPermittedException
+ */
+ public function delete() {
+ $this->file->delete();
+ }
+
+ /**
+ * Get the MimeType
+ *
+ * @return string
+ */
+ public function getMimeType() {
+ return $this->file->getMimeType();
+ }
+}
diff --git a/lib/private/Files/SimpleFS/SimpleFolder.php b/lib/private/Files/SimpleFS/SimpleFolder.php
new file mode 100644
index 00000000000..5b55fe0f157
--- /dev/null
+++ b/lib/private/Files/SimpleFS/SimpleFolder.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Files\SimpleFS;
+
+use OCP\Files\File;
+use OCP\Files\Folder;
+use OCP\Files\Node;
+use OCP\Files\NotFoundException;
+use OCP\Files\SimpleFS\ISimpleFolder;
+
+class SimpleFolder implements ISimpleFolder {
+
+ /** @var Folder */
+ private $folder;
+
+ /**
+ * Folder constructor.
+ *
+ * @param Folder $folder
+ */
+ public function __construct(Folder $folder) {
+ $this->folder = $folder;
+ }
+
+ public function getName() {
+ return $this->folder->getName();
+ }
+
+ public function getDirectoryListing() {
+ $listing = $this->folder->getDirectoryListing();
+
+ $fileListing = array_map(function(Node $file) {
+ if ($file instanceof File) {
+ return new SimpleFile($file);
+ }
+ return null;
+ }, $listing);
+
+ $fileListing = array_filter($fileListing);
+
+ return array_values($fileListing);
+ }
+
+ public function delete() {
+ $this->folder->delete();
+ }
+
+ public function fileExists($name) {
+ return $this->folder->nodeExists($name);
+ }
+
+ public function getFile($name) {
+ $file = $this->folder->get($name);
+
+ if (!($file instanceof File)) {
+ throw new NotFoundException();
+ }
+
+ return new SimpleFile($file);
+ }
+
+ public function newFile($name) {
+ $file = $this->folder->newFile($name);
+
+ return new SimpleFile($file);
+ }
+}
diff --git a/lib/private/Log/File.php b/lib/private/Log/File.php
index a406dd83952..904aa1d93f1 100644
--- a/lib/private/Log/File.php
+++ b/lib/private/Log/File.php
@@ -96,11 +96,12 @@ class File {
$time = $time->format($format);
$url = ($request->getRequestUri() !== '') ? $request->getRequestUri() : '--';
$method = is_string($request->getMethod()) ? $request->getMethod() : '--';
- if(\OC::$server->getConfig()->getSystemValue('installed', false)) {
+ if($config->getValue('installed', false)) {
$user = (\OC_User::getUser()) ? \OC_User::getUser() : '--';
} else {
$user = '--';
}
+ $version = $config->getValue('version', '');
$entry = compact(
'reqId',
'remoteAddr',
@@ -110,7 +111,8 @@ class File {
'time',
'method',
'url',
- 'user'
+ 'user',
+ 'version'
);
$entry = json_encode($entry);
$handle = @fopen(self::$logFile, 'a');
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index bf441d03c35..2ba118b9c37 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -36,6 +36,7 @@ use OC\Repair\CleanTags;
use OC\Repair\Collation;
use OC\Repair\DropOldJobs;
use OC\Repair\MoveUpdaterStepFile;
+use OC\Repair\NC11\MoveAvatars;
use OC\Repair\OldGroupMembershipShares;
use OC\Repair\RemoveGetETagEntries;
use OC\Repair\RemoveOldShares;
@@ -149,6 +150,10 @@ class Repair implements IOutput{
\OC::$server->getGroupManager()
),
new MoveUpdaterStepFile(\OC::$server->getConfig()),
+ new MoveAvatars(
+ \OC::$server->getJobList(),
+ \OC::$server->getSystemConfig()
+ ),
];
}
diff --git a/lib/private/Repair/NC11/MoveAvatarBackgroundJob.php b/lib/private/Repair/NC11/MoveAvatarBackgroundJob.php
new file mode 100644
index 00000000000..993235146c9
--- /dev/null
+++ b/lib/private/Repair/NC11/MoveAvatarBackgroundJob.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Repair\NC11;
+
+use OC\BackgroundJob\QueuedJob;
+use OCP\Files\File;
+use OCP\Files\Folder;
+use OCP\Files\IAppData;
+use OCP\Files\IRootFolder;
+use OCP\Files\NotFoundException;
+use OCP\ILogger;
+use OCP\IUser;
+use OCP\IUserManager;
+
+class MoveAvatarsBackgroundJob extends QueuedJob {
+
+ /** @var IUserManager */
+ private $userManager;
+
+ /** @var IRootFolder */
+ private $rootFolder;
+
+ /** @var IAppData */
+ private $appData;
+
+ /** @var ILogger */
+ private $logger;
+
+ /**
+ * MoveAvatars constructor.
+ */
+ public function __construct() {
+ $this->userManager = \OC::$server->getUserManager();
+ $this->rootFolder = \OC::$server->getRootFolder();
+ $this->logger = \OC::$server->getLogger();
+ $this->appData = \OC::$server->getAppDataDir('avatar');
+ }
+
+ public function run($arguments) {
+ $this->logger->info('Started migrating avatars to AppData folder');
+ $this->moveAvatars();
+ $this->logger->info('All avatars migrated to AppData folder');
+ }
+
+ private function moveAvatars() {
+ $counter = 0;
+ $this->userManager->callForAllUsers(function (IUser $user) use ($counter) {
+ if ($user->getLastLogin() !== 0) {
+ $uid = $user->getUID();
+
+ \OC\Files\Filesystem::initMountPoints($uid);
+ /** @var Folder $userFolder */
+ $userFolder = $this->rootFolder->get($uid);
+
+ try {
+ $userData = $this->appData->getFolder($uid);
+ } catch (NotFoundException $e) {
+ $userData = $this->appData->newFolder($uid);
+ }
+
+
+ $regex = '/^avatar\.([0-9]+\.)?(jpg|png)$/';
+ $avatars = $userFolder->getDirectoryListing();
+
+ foreach ($avatars as $avatar) {
+ /** @var File $avatar */
+ if (preg_match($regex, $avatar->getName())) {
+ /*
+ * This is not the most effective but it is the most abstract way
+ * to handle this. Avatars should be small anyways.
+ */
+ $newAvatar = $userData->newFile($avatar->getName());
+ $newAvatar->putContent($avatar->getContent());
+ $avatar->delete();
+ }
+ }
+ }
+ $counter++;
+ if ($counter % 100) {
+ $this->logger->info('{amount} avatars migrated', ['amount' => $counter]);
+ }
+ });
+ }
+}
diff --git a/lib/private/Repair/NC11/MoveAvatars.php b/lib/private/Repair/NC11/MoveAvatars.php
new file mode 100644
index 00000000000..44402b1be4f
--- /dev/null
+++ b/lib/private/Repair/NC11/MoveAvatars.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Repair\NC11;
+
+use OC\SystemConfig;
+use OCP\BackgroundJob\IJobList;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class MoveAvatars implements IRepairStep {
+
+ /** @var IJobList */
+ private $jobList;
+
+ /** @var SystemConfig */
+ private $systemConfig;
+
+ /**
+ * MoveAvatars constructor.
+ *
+ * @param IJobList $jobList
+ * @param SystemConfig $systemConfig
+ */
+ public function __construct(IJobList $jobList,
+ SystemConfig $systemConfig) {
+ $this->jobList = $jobList;
+ $this->systemConfig = $systemConfig;
+ }
+
+ /**
+ * @return string
+ */
+ public function getName() {
+ return 'Add mover avatar background job';
+ }
+
+ public function run(IOutput $output) {
+ if ($this->systemConfig->getValue('enable_avatars', true) === false) {
+ $output->info('Avatars are disabled');
+ } else {
+ $this->jobList->add(MoveAvatarsBackgroundJob::class);
+ }
+ }
+}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 494387ab6ca..b49e94b554e 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -359,7 +359,7 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService('AvatarManager', function (Server $c) {
return new AvatarManager(
$c->getUserManager(),
- $c->getRootFolder(),
+ $c->getAppDataDir('avatar'),
$c->getL10N('lib'),
$c->getLogger(),
$c->getConfig()
@@ -742,6 +742,12 @@ class Server extends ServerContainer implements IServerContainer {
);
return $manager;
});
+ $this->registerService(\OC\Files\AppData\Factory::class, function (Server $c) {
+ return new \OC\Files\AppData\Factory(
+ $c->getRootFolder(),
+ $c->getSystemConfig()
+ );
+ });
}
/**
@@ -876,6 +882,7 @@ class Server extends ServerContainer implements IServerContainer {
* Returns an app-specific view in ownClouds data directory
*
* @return \OCP\Files\Folder
+ * @deprecated since 9.2.0 use IAppData
*/
public function getAppFolder() {
$dir = '/' . \OC_App::getCurrentApp();
@@ -1456,4 +1463,13 @@ class Server extends ServerContainer implements IServerContainer {
public function getSettingsManager() {
return $this->query('SettingsManager');
}
+
+ /**
+ * @return \OCP\Files\IAppData
+ */
+ public function getAppDataDir($app) {
+ /** @var \OC\Files\AppData\Factory $factory */
+ $factory = $this->query(\OC\Files\AppData\Factory::class);
+ return $factory->get($app);
+ }
}
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index d964212f3bb..c3d2d1d6ad4 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -662,15 +662,16 @@ class OC_App {
* Read all app metadata from the info.xml file
*
* @param string $appId id of the app or the path of the info.xml file
- * @param boolean $path (optional)
+ * @param bool $path
+ * @param string $lang
* @return array|null
* @note all data is read from info.xml, not just pre-defined fields
*/
- public static function getAppInfo($appId, $path = false) {
+ public static function getAppInfo($appId, $path = false, $lang = null) {
if ($path) {
$file = $appId;
} else {
- if (isset(self::$appInfo[$appId])) {
+ if ($lang === null && isset(self::$appInfo[$appId])) {
return self::$appInfo[$appId];
}
$appPath = self::getAppPath($appId);
@@ -684,7 +685,7 @@ class OC_App {
$data = $parser->parse($file);
if (is_array($data)) {
- $data = OC_App::parseAppInfo($data);
+ $data = OC_App::parseAppInfo($data, $lang);
}
if(isset($data['ocsid'])) {
$storedId = \OC::$server->getConfig()->getAppValue($appId, 'ocsid');
@@ -693,7 +694,9 @@ class OC_App {
}
}
- self::$appInfo[$appId] = $data;
+ if ($lang === null) {
+ self::$appInfo[$appId] = $data;
+ }
return $data;
}
@@ -843,11 +846,12 @@ class OC_App {
//we don't want to show configuration for these
$blacklist = \OC::$server->getAppManager()->getAlwaysEnabledApps();
$appList = array();
+ $langCode = \OC::$server->getL10N('core')->getLanguageCode();
foreach ($installedApps as $app) {
if (array_search($app, $blacklist) === false) {
- $info = OC_App::getAppInfo($app);
+ $info = OC_App::getAppInfo($app, false, $langCode);
if (!is_array($info)) {
\OCP\Util::writeLog('core', 'Could not read app info file for app "' . $app . '"', \OCP\Util::ERROR);
continue;
@@ -1327,13 +1331,69 @@ class OC_App {
}
}
+ protected static function findBestL10NOption($options, $lang) {
+ $fallback = $similarLangFallback = $englishFallback = false;
+
+ $lang = strtolower($lang);
+ $similarLang = $lang;
+ if (strpos($similarLang, '_')) {
+ // For "de_DE" we want to find "de" and the other way around
+ $similarLang = substr($lang, 0, strpos($lang, '_'));
+ }
+
+ foreach ($options as $option) {
+ if (is_array($option)) {
+ if ($fallback === false) {
+ $fallback = $option['@value'];
+ }
+
+ if (!isset($option['@attributes']['lang'])) {
+ continue;
+ }
+
+ $attributeLang = strtolower($option['@attributes']['lang']);
+ if ($attributeLang === $lang) {
+ return $option['@value'];
+ }
+
+ if ($attributeLang === $similarLang) {
+ $similarLangFallback = $option['@value'];
+ } else if (strpos($attributeLang, $similarLang . '_') === 0) {
+ if ($similarLangFallback === false) {
+ $similarLangFallback = $option['@value'];
+ }
+ }
+ } else {
+ $englishFallback = $option;
+ }
+ }
+
+ if ($similarLangFallback !== false) {
+ return $similarLangFallback;
+ } else if ($englishFallback !== false) {
+ return $englishFallback;
+ }
+ return (string) $fallback;
+ }
+
/**
* parses the app data array and enhanced the 'description' value
*
* @param array $data the app data
+ * @param string $lang
* @return array improved app data
*/
- public static function parseAppInfo(array $data) {
+ public static function parseAppInfo(array $data, $lang = null) {
+
+ if ($lang && isset($data['name']) && is_array($data['name'])) {
+ $data['name'] = self::findBestL10NOption($data['name'], $lang);
+ }
+ if ($lang && isset($data['summary']) && is_array($data['summary'])) {
+ $data['summary'] = self::findBestL10NOption($data['summary'], $lang);
+ }
+ if ($lang && isset($data['description']) && is_array($data['description'])) {
+ $data['description'] = self::findBestL10NOption($data['description'], $lang);
+ }
// just modify the description if it is available
// otherwise this will create a $data element with an empty 'description'
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index cb52949779f..b8f3a93ba50 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -311,10 +311,20 @@ class OC_Util {
*
* @param String $userId
* @param \OCP\Files\Folder $userDirectory
+ * @throws \RuntimeException
*/
public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) {
- $skeletonDirectory = \OCP\Config::getSystemValue('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton');
+ $skeletonDirectory = \OC::$server->getConfig()->getSystemValue('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton');
+ $instanceId = \OC::$server->getConfig()->getSystemValue('instanceid', '');
+
+ if ($instanceId === null) {
+ throw new \RuntimeException('no instance id!');
+ }
+ $appdata = 'appdata_' . $instanceId;
+ if ($userId === $appdata) {
+ throw new \RuntimeException('username is reserved name: ' . $appdata);
+ }
if (!empty($skeletonDirectory)) {
\OCP\Util::writeLog(
diff --git a/lib/public/AppFramework/Http/FileDisplayResponse.php b/lib/public/AppFramework/Http/FileDisplayResponse.php
index 22171e2b379..03a6fbec2dd 100644
--- a/lib/public/AppFramework/Http/FileDisplayResponse.php
+++ b/lib/public/AppFramework/Http/FileDisplayResponse.php
@@ -23,7 +23,6 @@
namespace OCP\AppFramework\Http;
use OCP\AppFramework\Http;
-use OCP\Files\File;
/**
* Class FileDisplayResponse
@@ -33,18 +32,18 @@ use OCP\Files\File;
*/
class FileDisplayResponse extends Response implements ICallbackResponse {
- /** @var File */
+ /** @var \OCP\Files\File|\OCP\Files\SimpleFS\ISimpleFile */
private $file;
/**
* FileDisplayResponse constructor.
*
- * @param File $file
+ * @param \OCP\Files\File|\OCP\Files\SimpleFS\ISimpleFile $file
* @param int $statusCode
* @param array $headers
* @since 9.2.0
*/
- public function __construct(File $file, $statusCode=Http::STATUS_OK,
+ public function __construct($file, $statusCode=Http::STATUS_OK,
$headers=[]) {
$this->file = $file;
$this->setStatus($statusCode);
diff --git a/lib/public/Files/IAppData.php b/lib/public/Files/IAppData.php
new file mode 100644
index 00000000000..92e54fee366
--- /dev/null
+++ b/lib/public/Files/IAppData.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files;
+
+use OCP\Files\SimpleFS\ISimpleRoot;
+
+/**
+ * Interface IAppData
+ *
+ * @package OCP\Files
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface IAppData extends ISimpleRoot {
+
+}
diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php
new file mode 100644
index 00000000000..efd682e7855
--- /dev/null
+++ b/lib/public/Files/SimpleFS/ISimpleFile.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files\SimpleFS;
+
+use OCP\Files\NotPermittedException;
+
+/**
+ * Interface ISimpleFile
+ *
+ * @package OCP\Files\SimpleFS
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface ISimpleFile {
+
+ /**
+ * Get the name
+ *
+ * @return string
+ * @since 9.2.0
+ */
+ public function getName();
+
+ /**
+ * Get the size in bytes
+ *
+ * @return int
+ * @since 9.2.0
+ */
+ public function getSize();
+
+ /**
+ * Get the ETag
+ *
+ * @return string
+ * @since 9.2.0
+ */
+ public function getETag();
+
+ /**
+ * Get the last modification time
+ *
+ * @return int
+ * @since 9.2.0
+ */
+ public function getMTime();
+
+ /**
+ * Get the content
+ *
+ * @return string
+ * @since 9.2.0
+ */
+ public function getContent();
+
+ /**
+ * Overwrite the file
+ *
+ * @param string $data
+ * @throws NotPermittedException
+ * @since 9.2.0
+ */
+ public function putContent($data);
+
+ /**
+ * Delete the file
+ *
+ * @throws NotPermittedException
+ * @since 9.2.0
+ */
+ public function delete();
+
+ /**
+ * Get the MimeType
+ *
+ * @return string
+ * @since 9.2.0
+ */
+ public function getMimeType();
+}
diff --git a/lib/public/Files/SimpleFS/ISimpleFolder.php b/lib/public/Files/SimpleFS/ISimpleFolder.php
new file mode 100644
index 00000000000..406bb631159
--- /dev/null
+++ b/lib/public/Files/SimpleFS/ISimpleFolder.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files\SimpleFS;
+
+use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
+
+/**
+ * Interface ISimpleFolder
+ *
+ * @package OCP\Files\SimpleFS
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface ISimpleFolder {
+ /**
+ * Get all the files in a folder
+ *
+ * @return ISimpleFile[]
+ * @since 9.2.0
+ */
+ public function getDirectoryListing();
+
+ /**
+ * Check if a file with $name exists
+ *
+ * @param string $name
+ * @return bool
+ * @since 9.2.0
+ */
+ public function fileExists($name);
+
+ /**
+ * Get the file named $name from the folder
+ *
+ * @param string $name
+ * @return ISimpleFile
+ * @throws NotFoundException
+ * @since 9.2.0
+ */
+ public function getFile($name);
+
+ /**
+ * Creates a new file with $name in the folder
+ *
+ * @param string $name
+ * @return ISimpleFile
+ * @throws NotPermittedException
+ * @since 9.2.0
+ */
+ public function newFile($name);
+
+ /**
+ * Remove the folder and all the files in it
+ *
+ * @throws NotPermittedException
+ * @since 9.2.0
+ */
+ public function delete();
+
+ /**
+ * Get the folder name
+ *
+ * @return string
+ * @since 9.2.0
+ */
+ public function getName();
+}
diff --git a/lib/public/Files/SimpleFS/ISimpleRoot.php b/lib/public/Files/SimpleFS/ISimpleRoot.php
new file mode 100644
index 00000000000..c2f9d4ff05d
--- /dev/null
+++ b/lib/public/Files/SimpleFS/ISimpleRoot.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files\SimpleFS;
+
+use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
+
+/**
+ * Interface ISimpleRoot
+ *
+ * @package OCP\Files\SimpleFS
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface ISimpleRoot {
+ /**
+ * Get the folder with name $name
+ *
+ * @param string $name
+ * @return ISimpleFolder
+ * @throws NotFoundException
+ * @throws \RuntimeException
+ * @since 9.2.0
+ */
+ public function getFolder($name);
+
+ /**
+ * Get all the Folders
+ *
+ * @return ISimpleFolder[]
+ * @throws NotFoundException
+ * @throws \RuntimeException
+ * @since 9.2.0
+ */
+ public function getDirectoryListing();
+
+ /**
+ * Create a new folder named $name
+ *
+ * @param string $name
+ * @return ISimpleFolder
+ * @throws NotPermittedException
+ * @throws \RuntimeException
+ * @since 9.2.0
+ */
+ public function newFolder($name);
+}
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index b736af2899a..354e39bd8f9 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -115,6 +115,7 @@ interface IServerContainer {
*
* @return \OCP\Files\Folder
* @since 6.0.0
+ * @deprecated since 9.2.0 use IAppData
*/
public function getAppFolder();
diff --git a/ocs-provider/index.php b/ocs-provider/index.php
index 20e27e38ce7..13dfa0b3779 100644
--- a/ocs-provider/index.php
+++ b/ocs-provider/index.php
@@ -19,7 +19,7 @@
*
*/
-require_once('../lib/base.php');
+require_once __DIR__ . '/../lib/base.php';
header('Content-Type: application/json');
diff --git a/ocs/providers.php b/ocs/providers.php
index be0aff8add2..9efca14768e 100644
--- a/ocs/providers.php
+++ b/ocs/providers.php
@@ -23,7 +23,7 @@
*
*/
-require_once '../lib/base.php';
+require_once __DIR__ . '/../lib/base.php';
header('Content-type: application/xml');
diff --git a/ocs/v1.php b/ocs/v1.php
index 575b509b012..5aec27ad981 100644
--- a/ocs/v1.php
+++ b/ocs/v1.php
@@ -29,7 +29,7 @@
*
*/
-require_once '../lib/base.php';
+require_once __DIR__ . '/../lib/base.php';
if (\OCP\Util::needUpgrade()
|| \OC::$server->getSystemConfig()->getValue('maintenance', false)
diff --git a/ocs/v2.php b/ocs/v2.php
index 45f65033056..dc57431e6c6 100644
--- a/ocs/v2.php
+++ b/ocs/v2.php
@@ -20,4 +20,4 @@
*
*/
-require_once 'v1.php';
+require_once __DIR__ . '/v1.php';
diff --git a/public.php b/public.php
index 48fca3e8c38..2f86bc92bc6 100644
--- a/public.php
+++ b/public.php
@@ -29,7 +29,7 @@
*/
try {
- require_once 'lib/base.php';
+ require_once __DIR__ . '/lib/base.php';
if (\OCP\Util::needUpgrade()) {
// since the behavior of apps or remotes are unpredictable during
// an upgrade, return a 503 directly
diff --git a/remote.php b/remote.php
index d4c321be802..e5bd3bb8fed 100644
--- a/remote.php
+++ b/remote.php
@@ -107,7 +107,7 @@ function resolveService($service) {
}
try {
- require_once 'lib/base.php';
+ require_once __DIR__ . '/lib/base.php';
// All resources served via the DAV endpoint should have the strictest possible
// policy. Exempted from this is the SabreDAV browser plugin which overwrites
diff --git a/resources/config/ca-bundle.crt b/resources/config/ca-bundle.crt
index c7d2d2c997f..aee4163d274 100644
--- a/resources/config/ca-bundle.crt
+++ b/resources/config/ca-bundle.crt
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla as of: Fri Jan 22 20:39:57 2016
+## Certificate data from Mozilla as of: Wed Sep 7 08:44:30 2016
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -13,8 +13,8 @@
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
-## Conversion done with mk-ca-bundle.pl version 1.25.
-## SHA1: 0ab47e2f41518f8d223eab517cb799e5b071231e
+## Conversion done with mk-ca-bundle.pl version 1.26.
+## SHA256: 01bbf1ecdd693f554ff4dcbe15880b3e6c33188a956c15ff845d313ca69cfeb8
##
@@ -629,28 +629,6 @@ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
llpwrN9M
-----END CERTIFICATE-----
-Staat der Nederlanden Root CA
-=============================
------BEGIN CERTIFICATE-----
-MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
-ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
-HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
-bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
-vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
-jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
-C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
-vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
-22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
-HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
-dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
-BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
-EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
-MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
-nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
-iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
------END CERTIFICATE-----
-
UTN USERFirst Hardware Root CA
==============================
-----BEGIN CERTIFICATE-----
@@ -731,41 +709,6 @@ IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
-----END CERTIFICATE-----
-NetLock Notary (Class A) Root
-=============================
------BEGIN CERTIFICATE-----
-MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
-EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
-dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
-ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
-DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
-EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
-VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
-cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
-D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
-z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
-/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
-tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
-4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
-A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
-Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
-bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
-IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
-LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
-ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
-IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
-IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
-b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
-bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
-Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
-bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
-ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
-ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
-CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
-KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
-8CgHrTwXZoi1/baI
------END CERTIFICATE-----
-
XRamp Global CA Root
====================
-----BEGIN CERTIFICATE-----
@@ -1876,30 +1819,6 @@ IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
66+KAQ==
-----END CERTIFICATE-----
-CA Disig
-========
------BEGIN CERTIFICATE-----
-MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
-QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
-MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
-bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
-GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
-Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
-hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
-ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
-gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
-AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
-aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
-ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
-BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
-WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
-mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
-CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
-ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
-4Z7CRneC9VkGjCFMhwnN5ag=
------END CERTIFICATE-----
-
Juur-SK
=======
-----BEGIN CERTIFICATE-----
@@ -3891,3 +3810,227 @@ MluARZPzA7gwCgYIKoZIzj0EAwMDaAAwZQIxAOSkhLCB1T2wdKyUpOgOPQB0TKGXa/kNUTyh2Tv0
Daupn75OcsqF1NnstTJFGG+rrQIwfcf3aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYu
a/GRspBl9JrmkO5K
-----END CERTIFICATE-----
+
+SZAFIR ROOT CA2
+===============
+-----BEGIN CERTIFICATE-----
+MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
+A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
+BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
+BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
+VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
+qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
+DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
+2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
+ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
+ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
+AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
+AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
+O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
+oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
+4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
++/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
+-----END CERTIFICATE-----
+
+Certum Trusted Network CA 2
+===========================
+-----BEGIN CERTIFICATE-----
+MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
+BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
+bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
+ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
+TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
+IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
+7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
+CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
+Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
+uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
+GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
+9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
+Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
+hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
+BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
+hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
+Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
+L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
+clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
+pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
+w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
+J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
+ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
+is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
+zAYspsbiDrW5viSP
+-----END CERTIFICATE-----
+
+Hellenic Academic and Research Institutions RootCA 2015
+=======================================================
+-----BEGIN CERTIFICATE-----
+MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
+BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
+aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
+YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
+MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
+QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
+BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
+MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
+bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
+iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
+6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
+FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
+i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
+GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
+fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
+iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
+Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
+hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
+D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
+d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
+d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
+82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
+davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
+Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
+J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
+JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
+p/UsQu0yrbYhnr68
+-----END CERTIFICATE-----
+
+Hellenic Academic and Research Institutions ECC RootCA 2015
+===========================================================
+-----BEGIN CERTIFICATE-----
+MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
+aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
+cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
+aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
+MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
+IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
+VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
+Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
+dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
+Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
+BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
+GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
+dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
+-----END CERTIFICATE-----
+
+Certplus Root CA G1
+===================
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUAMD4xCzAJBgNV
+BAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTAe
+Fw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhD
+ZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD
+ggIPADCCAgoCggIBANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHN
+r49aiZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt6kuJPKNx
+Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj
+BYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTv
+LRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDEEW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2
+z4QTd28n6v+WZxcIbekN1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc
+4nBvCGrch2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCTmehd
+4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV4EJQeIQEQWGw9CEj
+jy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPOWftwenMGE9nTdDckQQoRb5fc5+R+
+ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G
+A1UdDgQWBBSowcCbkahDFXxdBie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHY
+lwuBsTANBgkqhkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh
+66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7/SMNkPX0XtPG
+YX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BSS7CTKtQ+FjPlnsZlFT5kOwQ/
+2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F
+6ALEUz65noe8zDUa3qHpimOHZR4RKttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilX
+CNQ314cnrUlZp5GrRHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWe
+tUNy6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEVV/xuZDDC
+VRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5g4VCXA9DO2pJNdWY9BW/
++mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl++O/QmueD6i9a5jc2NvLi6Td11n0bt3+
+qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
+-----END CERTIFICATE-----
+
+Certplus Root CA G2
+===================
+-----BEGIN CERTIFICATE-----
+MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT
+AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x
+NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0
+cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
+BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN
+Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD
+AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud
+IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV
+HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl
+vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw==
+-----END CERTIFICATE-----
+
+OpenTrust Root CA G1
+====================
+-----BEGIN CERTIFICATE-----
+MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV
+BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcx
+MB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
+CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7fa
+Yp6bwiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX/uMftk87
+ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR077F9jAHiOH3BX2pfJLKO
+YheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGPuY4zbGneWK2gDqdkVBFpRGZPTBKnjix9
+xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLxp2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO
+9z0M+Yo0FMT7MzUj8czxKselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq
+3ywgsNw2TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+WG+Oi
+n6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPwvFEVVJSmdz7QdFG9
+URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYYEQRVzXR7z2FwefR7LFxckvzluFqr
+TJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zAdBgNVHQ4EFgQUl0YhVyE12jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/Px
+N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E
+PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kfgLMtMrpkZ2Cv
+uVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbSFXJfLkur1J1juONI5f6ELlgK
+n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh
+X4SPgPL0DTatdrOjteFkdjpY3H1PXlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80
+nR14SohWZ25g/4/Ii+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcm
+GS3tTAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L9109S5zvE/
+bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/KyPu1svf0OnWZzsD2097+o
+4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJAwSQiumPv+i2tCqjI40cHLI5kqiPAlxA
+OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx
+-----END CERTIFICATE-----
+
+OpenTrust Root CA G2
+====================
+-----BEGIN CERTIFICATE-----
+MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUAMEAxCzAJBgNV
+BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcy
+MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
+CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+
+Ntmh/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78eCbY2albz
+4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV
+eYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fEFY8ElggGQgT4hNYdvJGmQr5J1WqIP7wt
+UdGejeBSzFfdNTVY27SPJIjki9/ca1TSgSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz
+3GIZ38i1MH/1PCZ1Eb3XG7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj
+3CzMpSZyYhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaHvGOz
+9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4t/bQWVyJ98LVtZR0
+0dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/gh7PU3+06yzbXfZqfUAkBXKJOAGT
+y3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zAdBgNVHQ4EFgQUajn6QiL35okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59
+M4PLuG53hq8wDQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz
+Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0nXGEL8pZ0keI
+mUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qTRmTFAHneIWv2V6CG1wZy7HBG
+S4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpTwm+bREx50B1ws9efAvSyB7DH5fitIw6mVskp
+EndI2S9G/Tvw/HRwkqWOOAgfZDC2t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ
+6e18CL13zSdkzJTaTkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97kr
+gCf2o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU3jg9CcCo
+SmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eAiN1nE28daCSLT7d0geX0
+YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14fWKGVyasvc0rQLW6aWQ9VGHgtPFGml4vm
+u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK
+-----END CERTIFICATE-----
+
+OpenTrust Root CA G3
+====================
+-----BEGIN CERTIFICATE-----
+MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT
+AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X
+DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w
+ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA
+IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B
+ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB
+/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf
+BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
+BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
+3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
+-----END CERTIFICATE-----
diff --git a/settings/Controller/ChangePasswordController.php b/settings/Controller/ChangePasswordController.php
index df170b62f1a..f709a8dd431 100644
--- a/settings/Controller/ChangePasswordController.php
+++ b/settings/Controller/ChangePasswordController.php
@@ -91,6 +91,7 @@ class ChangePasswordController extends Controller {
* @return JSONResponse
*/
public function changePersonalPassword($oldpassword = '', $newpassword = null) {
+ /** @var IUser $user */
$user = $this->userManager->checkPassword($this->userId, $oldpassword);
if ($user === false) {
return new JSONResponse([
@@ -101,10 +102,19 @@ class ChangePasswordController extends Controller {
]);
}
- /** @var IUser $user */
- if ($newpassword === null || $user->setPassword($newpassword) === false) {
+ try {
+ if ($newpassword === null || $user->setPassword($newpassword) === false) {
+ return new JSONResponse([
+ 'status' => 'error'
+ ]);
+ }
+ // password policy app throws exception
+ } catch(HintException $e) {
return new JSONResponse([
- 'status' => 'error'
+ 'status' => 'error',
+ 'data' => [
+ 'message' => $e->getHint(),
+ ],
]);
}
@@ -216,7 +226,17 @@ class ChangePasswordController extends Controller {
]
]);
} else { // now we know that everything is fine regarding the recovery password, let's try to change the password
- $result = $targetUser->setPassword($password, $recoveryPassword);
+ try {
+ $result = $targetUser->setPassword($password, $recoveryPassword);
+ // password policy app throws exception
+ } catch(HintException $e) {
+ return new JSONResponse([
+ 'status' => 'error',
+ 'data' => [
+ 'message' => $e->getHint(),
+ ],
+ ]);
+ }
if (!$result && $recoveryEnabledForUser) {
return new JSONResponse([
'status' => 'error',
diff --git a/settings/css/settings.css b/settings/css/settings.css
index d66b0f82b55..3cebcfb8d9c 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -96,6 +96,10 @@ input#identity {
padding: 3px;
}
+.password-state {
+ display: inline-block;
+}
+
table.nostyle label { margin-right: 2em; }
table.nostyle td { padding: 0.2em 0; }
diff --git a/settings/js/apps.js b/settings/js/apps.js
index 99246f323fe..5119b35178e 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -183,6 +183,10 @@ OC.Settings.Apps = OC.Settings.Apps || {
app.previewAsIcon = true;
}
+ if (_.isArray(app.author)) {
+ app.author = app.author.join(', ');
+ }
+
var html = template(app);
if (selector) {
selector.html(html);
@@ -513,6 +517,9 @@ OC.Settings.Apps = OC.Settings.Apps || {
// Author Name
apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) {
+ if (_.isArray(app.author)) {
+ return app.author.join(', ').toLowerCase().indexOf(query) !== -1;
+ }
return app.author.toLowerCase().indexOf(query) !== -1;
}));
diff --git a/settings/js/personal.js b/settings/js/personal.js
index e0c99ae774d..3290074a84c 100644
--- a/settings/js/personal.js
+++ b/settings/js/personal.js
@@ -197,8 +197,16 @@ $(document).ready(function () {
if($('#pass2').length) {
$('#pass2').showPassword().keyup();
}
+
+ var removeloader = function () {
+ setTimeout(function(){
+ if ($('.password-state').length > 0) {
+ $('.password-state').remove();
+ }
+ }, 5000)
+ };
+
$("#passwordbutton").click(function () {
- OC.msg.startSaving('#password-error-msg');
var isIE8or9 = $('html').hasClass('lte9');
// FIXME - TODO - once support for IE8 and IE9 is dropped
// for IE8 and IE9 this will check additionally if the typed in password
@@ -210,12 +218,17 @@ $(document).ready(function () {
var post = $("#passwordform").serialize();
$('#passwordchanged').hide();
$('#passworderror').hide();
+ $("#passwordbutton").attr('disabled', 'disabled');
+ $("#passwordbutton").after("<span class='password-loading icon icon-loading-small-dark password-state'></span>");
+ $(".personal-show-label").hide();
// Ajax foo
$.post(OC.generateUrl('/settings/personal/changepassword'), post, function (data) {
if (data.status === "success") {
+ $("#passwordbutton").after("<span class='checkmark icon icon-checkmark password-state'></span>");
+ removeloader();
+ $(".personal-show-label").show();
$('#pass1').val('');
$('#pass2').val('').change();
- OC.msg.finishedSaving('#password-error-msg', data);
} else {
if (typeof(data.data) !== "undefined") {
OC.msg.finishedSaving('#password-error-msg', data);
@@ -230,6 +243,8 @@ $(document).ready(function () {
);
}
}
+ $(".password-loading").remove();
+ $("#passwordbutton").removeAttr('disabled');
});
return false;
} else {
@@ -243,7 +258,6 @@ $(document).ready(function () {
);
return false;
}
-
});
$('#displayName').keyUpDelayedOrEnter(changeDisplayName);
diff --git a/settings/l10n/hu_HU.js b/settings/l10n/hu_HU.js
index fa64323e89d..bb3efe3d8a5 100644
--- a/settings/l10n/hu_HU.js
+++ b/settings/l10n/hu_HU.js
@@ -226,7 +226,7 @@ OC.L10N.register(
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Más adatbázisról való áttéréshez használja a parancssort: 'occ db:convert-type', vagy keresse fel a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentációt ↗</a>.",
"How to do backups" : "Hogyan csináljunk biztonsági mentéseket",
"Advanced monitoring" : "Haladó monitorozás",
- "Performance tuning" : "Teljesítményi hangolás",
+ "Performance tuning" : "Teljesítmény hangolás",
"Improving the config.php" : "config.php javítása",
"Theming" : "Témázás",
"Hardening and security guidance" : "Erősítési és biztonsági útmutató",
diff --git a/settings/l10n/hu_HU.json b/settings/l10n/hu_HU.json
index 71bca9b76ae..6193993113c 100644
--- a/settings/l10n/hu_HU.json
+++ b/settings/l10n/hu_HU.json
@@ -224,7 +224,7 @@
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Más adatbázisról való áttéréshez használja a parancssort: 'occ db:convert-type', vagy keresse fel a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentációt ↗</a>.",
"How to do backups" : "Hogyan csináljunk biztonsági mentéseket",
"Advanced monitoring" : "Haladó monitorozás",
- "Performance tuning" : "Teljesítményi hangolás",
+ "Performance tuning" : "Teljesítmény hangolás",
"Improving the config.php" : "config.php javítása",
"Theming" : "Témázás",
"Hardening and security guidance" : "Erősítési és biztonsági útmutató",
diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js
index a762537f70f..1bb23e4a1e5 100644
--- a/settings/l10n/ko.js
+++ b/settings/l10n/ko.js
@@ -88,6 +88,8 @@ OC.L10N.register(
"This session" : "이 세션",
"Copied!" : "복사됨!",
"Not supported!" : "지원하지 않음!",
+ "Press ⌘-C to copy." : "⌘-C 복사",
+ "Press Ctrl-C to copy." : "Ctrl-C 복사",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "오류가 발생했습니다. ASCII로 인코딩된 PEM 인증서를 업로드하십시오.",
"Valid until {date}" : "{date}까지 유효함",
"Delete" : "삭제",
diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json
index b540ec2a44b..f3ea1d15847 100644
--- a/settings/l10n/ko.json
+++ b/settings/l10n/ko.json
@@ -86,6 +86,8 @@
"This session" : "이 세션",
"Copied!" : "복사됨!",
"Not supported!" : "지원하지 않음!",
+ "Press ⌘-C to copy." : "⌘-C 복사",
+ "Press Ctrl-C to copy." : "Ctrl-C 복사",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "오류가 발생했습니다. ASCII로 인코딩된 PEM 인증서를 업로드하십시오.",
"Valid until {date}" : "{date}까지 유효함",
"Delete" : "삭제",
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index bbb47f48bab..b7bb0c8bfc7 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -129,7 +129,7 @@ if($_['passwordChangeSupported']) {
placeholder="<?php echo $l->t('New password');?>"
data-typetoggle="#personal-show"
autocomplete="off" autocapitalize="off" autocorrect="off" />
- <input type="checkbox" id="personal-show" name="show" /><label for="personal-show"></label>
+ <input type="checkbox" id="personal-show" name="show" /><label for="personal-show" class="personal-show-label"></label>
<input id="passwordbutton" type="submit" value="<?php echo $l->t('Change password');?>" />
<br/>
</form>
diff --git a/status.php b/status.php
index e0db479d3e4..a4749bd8b5d 100644
--- a/status.php
+++ b/status.php
@@ -29,7 +29,7 @@
try {
- require_once 'lib/base.php';
+ require_once __DIR__ . '/lib/base.php';
$systemConfig = \OC::$server->getSystemConfig();
diff --git a/tests/Core/Controller/ChangePasswordControllerTest.php b/tests/Core/Controller/ChangePasswordControllerTest.php
index 8dd4ca8db95..869ef98b514 100644
--- a/tests/Core/Controller/ChangePasswordControllerTest.php
+++ b/tests/Core/Controller/ChangePasswordControllerTest.php
@@ -21,6 +21,7 @@
*/
namespace Tests\Core\Controller;
+use OC\HintException;
use OC\Settings\Controller\ChangePasswordController;
use OC\User\Session;
use OCP\App\IAppManager;
@@ -94,6 +95,30 @@ class ChangePasswordControllerTest extends \Test\TestCase {
$this->assertEquals($expects, $res->getData());
}
+ public function testChangePersonalPasswordCommonPassword() {
+ $user = $this->getMockBuilder('OCP\IUser')->getMock();
+ $this->userManager->expects($this->once())
+ ->method('checkPassword')
+ ->with($this->userId, 'old')
+ ->willReturn($user);
+
+ $user->expects($this->once())
+ ->method('setPassword')
+ ->with('new')
+ ->will($this->throwException(new HintException('Common password')));
+
+ $expects = [
+ 'status' => 'error',
+ 'data' => [
+ 'message' => 'Common password',
+ ],
+ ];
+
+ $res = $this->controller->changePersonalPassword('old', 'new');
+
+ $this->assertEquals($expects, $res->getData());
+ }
+
public function testChangePersonalPasswordNoNewPassword() {
$user = $this->getMockBuilder('OCP\IUser')->getMock();
$this->userManager->expects($this->once())
diff --git a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php
index b3fd28a30ad..72b70d817d2 100644
--- a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php
+++ b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php
@@ -26,7 +26,6 @@ use Exception;
use OC;
use OC\App\AppManager;
use OC\Authentication\TwoFactorAuth\Manager;
-use OCA\TwoFactor_BackupCodes\Provider\BackupCodesProvider;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\IConfig;
use OCP\ISession;
@@ -89,7 +88,7 @@ class ManagerTest extends TestCase {
$this->backupProvider->expects($this->any())
->method('isTwoFactorAuthEnabledForUser')
->will($this->returnValue(true));
- OC::$server->registerService('\OCA\TwoFactor_BackupCodes\Provider\FakeBackupCodesProvider', function () {
+ OC::$server->registerService('\OCA\TwoFactorBackupCodes\Provider\FakeBackupCodesProvider', function () {
return $this->backupProvider;
});
}
@@ -149,7 +148,7 @@ class ManagerTest extends TestCase {
[
'twofactor_backupcodes',
['two-factor-providers' => [
- '\OCA\TwoFactor_BackupCodes\Provider\FakeBackupCodesProvider',
+ '\OCA\TwoFactorBackupCodes\Provider\FakeBackupCodesProvider',
]
]
],
diff --git a/tests/lib/AvatarManagerTest.php b/tests/lib/AvatarManagerTest.php
index 2dd6ff34923..8ccc51d12e0 100644
--- a/tests/lib/AvatarManagerTest.php
+++ b/tests/lib/AvatarManagerTest.php
@@ -1,8 +1,11 @@
<?php
/**
* @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
+ *
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
@@ -21,33 +24,49 @@
namespace Test;
+use OC\Avatar;
use OC\AvatarManager;
-use Test\Traits\UserTrait;
-use Test\Traits\MountProviderTrait;
+use OCP\Files\IAppData;
+use OCP\Files\SimpleFS\ISimpleFolder;
+use OCP\IConfig;
+use OCP\IL10N;
+use OCP\ILogger;
+use OCP\IUser;
+use OCP\IUserManager;
/**
* Class AvatarManagerTest
- * @group DB
*/
class AvatarManagerTest extends \Test\TestCase {
- use UserTrait;
- use MountProviderTrait;
-
+ /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
+ private $userManager;
+ /** @var IAppData|\PHPUnit_Framework_MockObject_MockObject */
+ private $appData;
+ /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
+ private $l10n;
+ /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
+ private $logger;
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
+ private $config;
/** @var AvatarManager */
private $avatarManager;
- /** @var \OC\Files\Storage\Temporary */
- private $storage;
-
public function setUp() {
parent::setUp();
- $this->createUser('valid-user', 'valid-user');
+ $this->userManager = $this->createMock(IUserManager::class);
+ $this->appData = $this->createMock(IAppData::class);
+ $this->l10n = $this->createMock(IL10N::class);
+ $this->logger = $this->createMock(ILogger::class);
+ $this->config = $this->createMock(IConfig::class);
- $this->storage = new \OC\Files\Storage\Temporary();
- $this->registerMount('valid-user', $this->storage, '/valid-user/');
-
- $this->avatarManager = \OC::$server->getAvatarManager();
+ $this->avatarManager = new AvatarManager(
+ $this->userManager,
+ $this->appData,
+ $this->l10n,
+ $this->logger,
+ $this->config
+ );
}
/**
@@ -55,14 +74,35 @@ class AvatarManagerTest extends \Test\TestCase {
* @expectedExceptionMessage user does not exist
*/
public function testGetAvatarInvalidUser() {
+ $this->userManager
+ ->expects($this->once())
+ ->method('get')
+ ->with('invalidUser')
+ ->willReturn(null);
+
$this->avatarManager->getAvatar('invalidUser');
}
public function testGetAvatarValidUser() {
- $avatar = $this->avatarManager->getAvatar('valid-user');
+ $user = $this->createMock(IUser::class);
+ $user
+ ->expects($this->once())
+ ->method('getUID')
+ ->willReturn('valid-user');
+ $this->userManager
+ ->expects($this->once())
+ ->method('get')
+ ->with('valid-user')
+ ->willReturn($user);
+ $folder = $this->createMock(ISimpleFolder::class);
+ $this->appData
+ ->expects($this->once())
+ ->method('getFolder')
+ ->with('valid-user')
+ ->willReturn($folder);
- $this->assertInstanceOf('\OCP\IAvatar', $avatar);
- $this->assertFalse($this->storage->file_exists('files'));
+ $expected = new Avatar($folder, $this->l10n, $user, $this->logger, $this->config);;
+ $this->assertEquals($expected, $this->avatarManager->getAvatar('valid-user'));
}
}
diff --git a/tests/lib/AvatarTest.php b/tests/lib/AvatarTest.php
index 7f012c895fd..cea3f9bed1a 100644
--- a/tests/lib/AvatarTest.php
+++ b/tests/lib/AvatarTest.php
@@ -8,6 +8,8 @@
namespace Test;
+use OC\Files\SimpleFS\SimpleFolder;
+use OC\User\User;
use OCP\Files\File;
use OCP\Files\Folder;
use OCP\IConfig;
@@ -30,11 +32,11 @@ class AvatarTest extends \Test\TestCase {
public function setUp() {
parent::setUp();
- $this->folder = $this->createMock(Folder::class);
+ $this->folder = $this->createMock(SimpleFolder::class);
/** @var \OCP\IL10N | \PHPUnit_Framework_MockObject_MockObject $l */
$l = $this->createMock(IL10N::class);
$l->method('t')->will($this->returnArgument(0));
- $this->user = $this->getMockBuilder('OC\User\User')->disableOriginalConstructor()->getMock();
+ $this->user = $this->createMock(User::class);
$this->config = $this->createMock(IConfig::class);
$this->avatar = new \OC\Avatar(
@@ -51,7 +53,7 @@ class AvatarTest extends \Test\TestCase {
}
public function testGetAvatarSizeMatch() {
- $this->folder->method('nodeExists')
+ $this->folder->method('fileExists')
->will($this->returnValueMap([
['avatar.jpg', true],
['avatar.128.jpg', true],
@@ -61,13 +63,13 @@ class AvatarTest extends \Test\TestCase {
$file = $this->createMock(File::class);
$file->method('getContent')->willReturn($expected->data());
- $this->folder->method('get')->with('avatar.128.jpg')->willReturn($file);
+ $this->folder->method('getFile')->with('avatar.128.jpg')->willReturn($file);
$this->assertEquals($expected->data(), $this->avatar->get(128)->data());
}
public function testGetAvatarSizeMinusOne() {
- $this->folder->method('nodeExists')
+ $this->folder->method('fileExists')
->will($this->returnValueMap([
['avatar.jpg', true],
]));
@@ -76,13 +78,13 @@ class AvatarTest extends \Test\TestCase {
$file = $this->createMock(File::class);
$file->method('getContent')->willReturn($expected->data());
- $this->folder->method('get')->with('avatar.jpg')->willReturn($file);
+ $this->folder->method('getFile')->with('avatar.jpg')->willReturn($file);
$this->assertEquals($expected->data(), $this->avatar->get(-1)->data());
}
public function testGetAvatarNoSizeMatch() {
- $this->folder->method('nodeExists')
+ $this->folder->method('fileExists')
->will($this->returnValueMap([
['avatar.png', true],
['avatar.32.png', false],
@@ -95,7 +97,7 @@ class AvatarTest extends \Test\TestCase {
$file = $this->createMock(File::class);
$file->method('getContent')->willReturn($expected->data());
- $this->folder->method('get')
+ $this->folder->method('getFile')
->will($this->returnCallback(
function($path) use ($file) {
if ($path === 'avatar.png') {
@@ -126,7 +128,7 @@ class AvatarTest extends \Test\TestCase {
}
public function testExiststJPG() {
- $this->folder->method('nodeExists')
+ $this->folder->method('fileExists')
->will($this->returnValueMap([
['avatar.jpg', true],
['avatar.png', false],
@@ -135,7 +137,7 @@ class AvatarTest extends \Test\TestCase {
}
public function testExistsPNG() {
- $this->folder->method('nodeExists')
+ $this->folder->method('fileExists')
->will($this->returnValueMap([
['avatar.jpg', false],
['avatar.png', true],
diff --git a/tests/lib/Files/AppData/AppDataTest.php b/tests/lib/Files/AppData/AppDataTest.php
new file mode 100644
index 00000000000..3247ce7ba99
--- /dev/null
+++ b/tests/lib/Files/AppData/AppDataTest.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace Test\Files\AppData;
+
+use OC\Files\AppData\AppData;
+use OC\SystemConfig;
+use OCP\Files\File;
+use OCP\Files\Folder;
+use OCP\Files\IAppData;
+use OCP\Files\IRootFolder;
+use OCP\Files\Node;
+use OCP\Files\SimpleFS\ISimpleFolder;
+
+class AppDataTest extends \Test\TestCase {
+ /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
+ private $rootFolder;
+
+ /** @var SystemConfig|\PHPUnit_Framework_MockObject_MockObject */
+ private $systemConfig;
+
+ /** @var IAppData */
+ private $appData;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->rootFolder = $this->createMock(IRootFolder::class);
+ $this->systemConfig = $this->createMock(SystemConfig::class);
+ $this->appData = new AppData($this->rootFolder, $this->systemConfig, 'myApp');
+
+ $this->systemConfig->expects($this->any())
+ ->method('getValue')
+ ->with('instanceid', null)
+ ->willReturn('iid');
+ }
+
+ private function setupAppFolder() {
+ $dataFolder = $this->createMock(Folder::class);
+ $appFolder = $this->createMock(Folder::class);
+
+ $this->rootFolder->expects($this->once())
+ ->method('get')
+ ->with($this->equalTo('appdata_iid'))
+ ->willReturn($dataFolder);
+ $dataFolder->expects($this->once())
+ ->method('get')
+ ->with($this->equalTo('myApp'))
+ ->willReturn($appFolder);
+
+ return [$dataFolder, $appFolder];
+ }
+
+ public function testGetFolder() {
+ $folders = $this->setupAppFolder();
+ $appFolder = $folders[1];
+
+ $folder = $this->createMock(Folder::class);
+
+ $appFolder->expects($this->once())
+ ->method('get')
+ ->with($this->equalTo('folder'))
+ ->willReturn($folder);
+
+ $result = $this->appData->getFolder('folder');
+ $this->assertInstanceOf(ISimpleFolder::class, $result);
+ }
+
+ public function testNewFolder() {
+ $folders = $this->setupAppFolder();
+ $appFolder = $folders[1];
+
+ $folder = $this->createMock(Folder::class);
+
+ $appFolder->expects($this->once())
+ ->method('newFolder')
+ ->with($this->equalTo('folder'))
+ ->willReturn($folder);
+
+ $result = $this->appData->newFolder('folder');
+ $this->assertInstanceOf(ISimpleFolder::class, $result);
+ }
+
+ public function testGetDirectoryListing() {
+ $folders = $this->setupAppFolder();
+ $appFolder = $folders[1];
+
+ $file = $this->createMock(File::class);
+ $folder = $this->createMock(Folder::class);
+ $node = $this->createMock(Node::class);
+
+ $appFolder->expects($this->once())
+ ->method('getDirectoryListing')
+ ->willReturn([$file, $folder, $node]);
+
+ $result = $this->appData->getDirectoryListing();
+
+ $this->assertCount(1, $result);
+ $this->assertInstanceOf(ISimpleFolder::class, $result[0]);
+ }
+
+}
diff --git a/tests/lib/Files/AppData/FactoryTest.php b/tests/lib/Files/AppData/FactoryTest.php
new file mode 100644
index 00000000000..75999c8c7da
--- /dev/null
+++ b/tests/lib/Files/AppData/FactoryTest.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace Test\Files\AppData;
+
+use OC\Files\AppData\Factory;
+use OC\SystemConfig;
+use OCP\Files\IRootFolder;
+
+class FactoryTest extends \Test\TestCase {
+ /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
+ private $rootFolder;
+
+ /** @var SystemConfig|\PHPUnit_Framework_MockObject_MockObject */
+ private $systemConfig;
+
+ /** @var Factory */
+ private $factory;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->rootFolder = $this->createMock(IRootFolder::class);
+ $this->systemConfig = $this->createMock(SystemConfig::class);
+ $this->factory = new Factory($this->rootFolder, $this->systemConfig);
+ }
+
+ public function testGet() {
+ $this->rootFolder->expects($this->never())
+ ->method($this->anything());
+ $this->systemConfig->expects($this->never())
+ ->method($this->anything());
+
+ $this->factory->get('foo');
+ }
+}
diff --git a/tests/lib/Files/SimpleFS/SimpleFileTest.php b/tests/lib/Files/SimpleFS/SimpleFileTest.php
new file mode 100644
index 00000000000..4e623eafa22
--- /dev/null
+++ b/tests/lib/Files/SimpleFS/SimpleFileTest.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace Test\File\SimpleFS;
+
+use OC\Files\SimpleFS\SimpleFile;
+use OCP\Files\File;
+
+class SimpleFileTest extends \Test\TestCase {
+ /** @var File|\PHPUnit_Framework_MockObject_MockObject */
+ private $file;
+
+ /** @var SimpleFile */
+ private $simpleFile;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->file = $this->createMock(File::class);
+ $this->simpleFile = new SimpleFile($this->file);
+ }
+
+ public function testGetName() {
+ $this->file->expects($this->once())
+ ->method('getName')
+ ->willReturn('myname');
+
+ $this->assertEquals('myname', $this->simpleFile->getName());
+ }
+
+ public function testGetSize() {
+ $this->file->expects($this->once())
+ ->method('getSize')
+ ->willReturn(42);
+
+ $this->assertEquals(42, $this->simpleFile->getSize());
+ }
+
+ public function testGetETag() {
+ $this->file->expects($this->once())
+ ->method('getETag')
+ ->willReturn('etag');
+
+ $this->assertEquals('etag', $this->simpleFile->getETag());
+ }
+
+ public function testGetMTime() {
+ $this->file->expects($this->once())
+ ->method('getMTime')
+ ->willReturn(101);
+
+ $this->assertEquals(101, $this->simpleFile->getMTime());
+ }
+
+ public function testGetContent() {
+ $this->file->expects($this->once())
+ ->method('getContent')
+ ->willReturn('foo');
+
+ $this->assertEquals('foo', $this->simpleFile->getContent());
+ }
+
+ public function testPutContent() {
+ $this->file->expects($this->once())
+ ->method('putContent')
+ ->with($this->equalTo('bar'));
+
+ $this->simpleFile->putContent('bar');
+ }
+
+ public function testDelete() {
+ $this->file->expects($this->once())
+ ->method('delete');
+
+ $this->simpleFile->delete();
+ }
+
+ public function testGetMimeType() {
+ $this->file->expects($this->once())
+ ->method('getMimeType')
+ ->willReturn('app/awesome');
+
+ $this->assertEquals('app/awesome', $this->simpleFile->getMimeType());
+ }
+}
diff --git a/tests/lib/Files/SimpleFS/SimpleFolderTest.php b/tests/lib/Files/SimpleFS/SimpleFolderTest.php
new file mode 100644
index 00000000000..d86c705d880
--- /dev/null
+++ b/tests/lib/Files/SimpleFS/SimpleFolderTest.php
@@ -0,0 +1,138 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace Test\File\SimpleFS;
+
+use OC\Files\SimpleFS\SimpleFolder;
+use OCP\Files\File;
+use OCP\Files\Folder;
+use OCP\Files\Node;
+use OCP\Files\NotFoundException;
+use OCP\Files\SimpleFS\ISimpleFile;
+
+class SimpleFolderTest extends \Test\TestCase {
+ /** @var Folder|\PHPUnit_Framework_MockObject_MockObject */
+ private $folder;
+
+ /** @var SimpleFolder */
+ private $simpleFolder;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->folder = $this->createMock(Folder::class);
+ $this->simpleFolder = new SimpleFolder($this->folder);
+ }
+
+ public function testGetName() {
+ $this->folder->expects($this->once())
+ ->method('getName')
+ ->willReturn('myname');
+
+ $this->assertEquals('myname', $this->simpleFolder->getName());
+ }
+
+ public function testDelete() {
+ $this->folder->expects($this->once())
+ ->method('delete');
+
+ $this->simpleFolder->delete();
+ }
+
+ public function dataFileExists() {
+ return [
+ [true],
+ [false],
+ ];
+ }
+
+ /**
+ * @dataProvider dataFileExists
+ * @param bool $exists
+ */
+ public function testFileExists($exists) {
+ $this->folder->expects($this->once())
+ ->method('nodeExists')
+ ->with($this->equalTo('file'))
+ ->willReturn($exists);
+
+ $this->assertEquals($exists, $this->simpleFolder->fileExists('file'));
+ }
+
+ public function dataGetFile() {
+ return [
+ [File::class, false],
+ [Folder::class, true],
+ [Node::class, true],
+ ];
+ }
+
+ /**
+ * @dataProvider dataGetFile
+ * @param string $class
+ * @param bool $exception
+ */
+ public function testGetFile($class, $exception) {
+ $node = $this->createMock($class);
+
+ $this->folder->expects($this->once())
+ ->method('get')
+ ->with($this->equalTo('file'))
+ ->willReturn($node);
+
+ try {
+ $result = $this->simpleFolder->getFile('file');
+ $this->assertFalse($exception);
+ $this->assertInstanceOf(ISimpleFile::class, $result);
+ } catch (NotFoundException $e) {
+ $this->assertTrue($exception);
+ }
+ }
+
+ public function testNewFile() {
+ $file = $this->createMock(File::class);
+
+ $this->folder->expects($this->once())
+ ->method('newFile')
+ ->with($this->equalTo('file'))
+ ->willReturn($file);
+
+ $result = $this->simpleFolder->newFile('file');
+ $this->assertInstanceOf(ISimpleFile::class, $result);
+ }
+
+ public function testGetDirectoryListing() {
+ $file = $this->createMock(File::class);
+ $folder = $this->createMock(Folder::class);
+ $node = $this->createMock(Node::class);
+
+ $this->folder->expects($this->once())
+ ->method('getDirectoryListing')
+ ->willReturn([$file, $folder, $node]);
+
+ $result = $this->simpleFolder->getDirectoryListing();
+
+ $this->assertCount(1, $result);
+ $this->assertInstanceOf(ISimpleFile::class, $result[0]);
+ }
+
+}
diff --git a/tests/lib/TestCase.php b/tests/lib/TestCase.php
index 0389ef5d46b..7ccff382357 100644
--- a/tests/lib/TestCase.php
+++ b/tests/lib/TestCase.php
@@ -435,8 +435,10 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
return true;
}
$annotations = $this->getAnnotations();
- if (isset($annotations['class']['group']) && in_array('DB', $annotations['class']['group'])) {
- return true;
+ if (isset($annotations['class']['group'])) {
+ if(in_array('DB', $annotations['class']['group']) || in_array('SLOWDB', $annotations['class']['group']) ) {
+ return true;
+ }
}
return false;
diff --git a/tests/phpunit-autotest.xml b/tests/phpunit-autotest.xml
index 301f63a375d..3a82a56ebbf 100644
--- a/tests/phpunit-autotest.xml
+++ b/tests/phpunit-autotest.xml
@@ -29,10 +29,15 @@
<directory suffix=".php">../apps/files_trashbin/tests</directory>
<directory suffix=".php">../apps/files_versions/tests</directory>
<directory suffix=".php">../apps/provisioning_api/tests</directory>
+ <directory suffix=".php">../apps/systemtags/tests</directory>
+ <directory suffix=".php">../apps/theming/tests</directory>
+ <directory suffix=".php">../apps/twofactor_backupcodes/tests</directory>
<directory suffix=".php">../apps/updatenotification/tests</directory>
<directory suffix=".php">../apps/user_ldap/tests</directory>
+ <directory suffix=".php">../apps/workflowengine/tests</directory>
<directory suffix=".php">../tests</directory>
<directory suffix=".php">../build</directory>
+ <directory suffix=".php">../lib/composer</directory>
</exclude>
</whitelist>
</filter>
diff --git a/version.php b/version.php
index 01a822708e3..96725a6bb4d 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, 2, 0, 3);
+$OC_Version = array(9, 2, 0, 4);
// The human readable string
$OC_VersionString = '11.0 alpha';