summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/encryption/appinfo/application.php3
-rw-r--r--apps/encryption/appinfo/register_command.php22
-rw-r--r--apps/encryption/appinfo/routes.php2
-rw-r--r--apps/encryption/command/migratekeys.php22
-rw-r--r--apps/encryption/controller/recoverycontroller.php2
-rw-r--r--apps/encryption/controller/settingscontroller.php2
-rw-r--r--apps/encryption/controller/statuscontroller.php2
-rw-r--r--apps/encryption/hooks/contracts/ihook.php2
-rw-r--r--apps/encryption/l10n/et_EE.js1
-rw-r--r--apps/encryption/l10n/et_EE.json1
-rw-r--r--apps/encryption/l10n/fr.js2
-rw-r--r--apps/encryption/l10n/fr.json2
-rw-r--r--apps/encryption/l10n/id.js3
-rw-r--r--apps/encryption/l10n/id.json3
-rw-r--r--apps/encryption/l10n/ja.js2
-rw-r--r--apps/encryption/l10n/ja.json2
-rw-r--r--apps/encryption/l10n/pt_PT.js4
-rw-r--r--apps/encryption/l10n/pt_PT.json4
-rw-r--r--apps/encryption/l10n/sk_SK.js7
-rw-r--r--apps/encryption/l10n/sk_SK.json7
-rw-r--r--apps/encryption/l10n/sl.js11
-rw-r--r--apps/encryption/l10n/sl.json11
-rw-r--r--apps/encryption/lib/crypto/crypt.php2
-rw-r--r--apps/encryption/lib/crypto/encryption.php5
-rw-r--r--apps/encryption/lib/hookmanager.php2
-rw-r--r--apps/encryption/lib/migration.php65
-rw-r--r--apps/encryption/lib/recovery.php2
-rw-r--r--apps/encryption/lib/session.php2
-rw-r--r--apps/encryption/lib/users/setup.php2
-rw-r--r--apps/encryption/lib/util.php2
-rw-r--r--apps/encryption/tests/controller/RecoveryControllerTest.php16
-rw-r--r--apps/encryption/tests/controller/SettingsControllerTest.php2
-rw-r--r--apps/encryption/tests/hooks/UserHooksTest.php17
-rw-r--r--apps/encryption/tests/lib/HookManagerTest.php3
-rw-r--r--apps/encryption/tests/lib/KeyManagerTest.php2
-rw-r--r--apps/encryption/tests/lib/MigrationTest.php86
-rw-r--r--apps/encryption/tests/lib/RecoveryTest.php4
-rw-r--r--apps/encryption/tests/lib/UtilTest.php3
-rw-r--r--apps/encryption/tests/lib/crypto/cryptTest.php2
-rw-r--r--apps/encryption/tests/lib/crypto/encryptionTest.php3
-rw-r--r--apps/encryption/tests/lib/users/SetupTest.php2
-rw-r--r--apps/files/ajax/delete.php2
-rw-r--r--apps/files/ajax/getstoragestats.php1
-rw-r--r--apps/files/ajax/move.php1
-rw-r--r--apps/files/ajax/newfile.php1
-rw-r--r--apps/files/ajax/newfolder.php1
-rw-r--r--apps/files/ajax/rename.php1
-rw-r--r--apps/files/ajax/upload.php1
-rw-r--r--apps/files/appinfo/app.php1
-rw-r--r--apps/files/appinfo/remote.php2
-rw-r--r--apps/files/appinfo/routes.php3
-rw-r--r--apps/files/command/scan.php9
-rw-r--r--apps/files/download.php1
-rw-r--r--apps/files/index.php1
-rw-r--r--apps/files/js/filelist.js72
-rw-r--r--apps/files/js/files.js19
-rw-r--r--apps/files/l10n/ast.js4
-rw-r--r--apps/files/l10n/ast.json4
-rw-r--r--apps/files/l10n/cs_CZ.js4
-rw-r--r--apps/files/l10n/cs_CZ.json4
-rw-r--r--apps/files/l10n/da.js2
-rw-r--r--apps/files/l10n/da.json2
-rw-r--r--apps/files/l10n/de.js2
-rw-r--r--apps/files/l10n/de.json2
-rw-r--r--apps/files/l10n/de_DE.js2
-rw-r--r--apps/files/l10n/de_DE.json2
-rw-r--r--apps/files/l10n/el.js2
-rw-r--r--apps/files/l10n/el.json2
-rw-r--r--apps/files/l10n/es.js10
-rw-r--r--apps/files/l10n/es.json10
-rw-r--r--apps/files/l10n/et_EE.js6
-rw-r--r--apps/files/l10n/et_EE.json6
-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/gl.js2
-rw-r--r--apps/files/l10n/gl.json2
-rw-r--r--apps/files/l10n/id.js7
-rw-r--r--apps/files/l10n/id.json7
-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/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/pt_BR.js2
-rw-r--r--apps/files/l10n/pt_BR.json2
-rw-r--r--apps/files/l10n/pt_PT.js2
-rw-r--r--apps/files/l10n/pt_PT.json2
-rw-r--r--apps/files/l10n/ru.js4
-rw-r--r--apps/files/l10n/ru.json4
-rw-r--r--apps/files/l10n/sk_SK.js3
-rw-r--r--apps/files/l10n/sk_SK.json3
-rw-r--r--apps/files/l10n/sl.js5
-rw-r--r--apps/files/l10n/sl.json5
-rw-r--r--apps/files/l10n/th_TH.js2
-rw-r--r--apps/files/l10n/th_TH.json2
-rw-r--r--apps/files/l10n/tr.js2
-rw-r--r--apps/files/l10n/tr.json2
-rw-r--r--apps/files/l10n/uk.js1
-rw-r--r--apps/files/l10n/uk.json1
-rw-r--r--apps/files/l10n/zh_CN.js12
-rw-r--r--apps/files/l10n/zh_CN.json12
-rw-r--r--apps/files/tests/activitytest.php23
-rw-r--r--apps/files/tests/controller/apicontrollertest.php1
-rw-r--r--apps/files/tests/js/filelistSpec.js29
-rw-r--r--apps/files/tests/service/tagservice.php1
-rw-r--r--apps/files_external/ajax/applicable.php1
-rw-r--r--apps/files_external/ajax/dropbox.php1
-rw-r--r--apps/files_external/appinfo/app.php1
-rw-r--r--apps/files_external/appinfo/routes.php1
-rw-r--r--apps/files_external/l10n/ar.js1
-rw-r--r--apps/files_external/l10n/ar.json1
-rw-r--r--apps/files_external/l10n/cs_CZ.js5
-rw-r--r--apps/files_external/l10n/cs_CZ.json5
-rw-r--r--apps/files_external/l10n/et_EE.js17
-rw-r--r--apps/files_external/l10n/et_EE.json17
-rw-r--r--apps/files_external/l10n/fr.js4
-rw-r--r--apps/files_external/l10n/fr.json4
-rw-r--r--apps/files_external/l10n/id.js6
-rw-r--r--apps/files_external/l10n/id.json6
-rw-r--r--apps/files_external/l10n/ja.js1
-rw-r--r--apps/files_external/l10n/ja.json1
-rw-r--r--apps/files_external/l10n/lb.js1
-rw-r--r--apps/files_external/l10n/lb.json1
-rw-r--r--apps/files_external/l10n/nb_NO.js2
-rw-r--r--apps/files_external/l10n/nb_NO.json2
-rw-r--r--apps/files_external/l10n/ru.js4
-rw-r--r--apps/files_external/l10n/ru.json4
-rw-r--r--apps/files_external/l10n/sk_SK.js5
-rw-r--r--apps/files_external/l10n/sk_SK.json5
-rw-r--r--apps/files_external/l10n/sl.js7
-rw-r--r--apps/files_external/l10n/sl.json7
-rw-r--r--apps/files_external/l10n/zh_CN.js1
-rw-r--r--apps/files_external/l10n/zh_CN.json1
-rw-r--r--apps/files_external/lib/amazons3.php21
-rw-r--r--apps/files_external/lib/config.php4
-rw-r--r--apps/files_external/lib/google.php1
-rw-r--r--apps/files_external/lib/sftp.php6
-rw-r--r--apps/files_external/lib/sftp_key.php1
-rw-r--r--apps/files_external/lib/smb_oc.php1
-rw-r--r--apps/files_external/list.php1
-rw-r--r--apps/files_external/personal.php1
-rw-r--r--apps/files_external/service/globalstoragesservice.php2
-rw-r--r--apps/files_external/service/storagesservice.php2
-rw-r--r--apps/files_external/settings.php1
-rw-r--r--apps/files_external/tests/backends/sftp.php1
-rw-r--r--apps/files_external/tests/config.php1
-rw-r--r--apps/files_sharing/ajax/external.php107
-rw-r--r--apps/files_sharing/ajax/list.php5
-rw-r--r--apps/files_sharing/ajax/publicpreview.php14
-rw-r--r--apps/files_sharing/ajax/shareinfo.php3
-rw-r--r--apps/files_sharing/api/local.php29
-rw-r--r--apps/files_sharing/api/remote.php91
-rw-r--r--apps/files_sharing/api/server2server.php24
-rw-r--r--apps/files_sharing/appinfo/app.php2
-rw-r--r--apps/files_sharing/appinfo/application.php22
-rw-r--r--apps/files_sharing/appinfo/info.xml1
-rw-r--r--apps/files_sharing/appinfo/routes.php17
-rw-r--r--apps/files_sharing/appinfo/update.php1
-rw-r--r--apps/files_sharing/appinfo/version2
-rw-r--r--apps/files_sharing/css/public.css2
-rw-r--r--apps/files_sharing/js/share.js6
-rw-r--r--apps/files_sharing/js/sharedfilelist.js2
-rw-r--r--apps/files_sharing/l10n/cs_CZ.js11
-rw-r--r--apps/files_sharing/l10n/cs_CZ.json11
-rw-r--r--apps/files_sharing/l10n/da.js10
-rw-r--r--apps/files_sharing/l10n/da.json10
-rw-r--r--apps/files_sharing/l10n/de.js4
-rw-r--r--apps/files_sharing/l10n/de.json4
-rw-r--r--apps/files_sharing/l10n/de_DE.js5
-rw-r--r--apps/files_sharing/l10n/de_DE.json5
-rw-r--r--apps/files_sharing/l10n/el.js10
-rw-r--r--apps/files_sharing/l10n/el.json10
-rw-r--r--apps/files_sharing/l10n/es.js10
-rw-r--r--apps/files_sharing/l10n/es.json10
-rw-r--r--apps/files_sharing/l10n/et_EE.js11
-rw-r--r--apps/files_sharing/l10n/et_EE.json11
-rw-r--r--apps/files_sharing/l10n/fi_FI.js10
-rw-r--r--apps/files_sharing/l10n/fi_FI.json10
-rw-r--r--apps/files_sharing/l10n/fr.js14
-rw-r--r--apps/files_sharing/l10n/fr.json14
-rw-r--r--apps/files_sharing/l10n/gl.js10
-rw-r--r--apps/files_sharing/l10n/gl.json10
-rw-r--r--apps/files_sharing/l10n/id.js12
-rw-r--r--apps/files_sharing/l10n/id.json12
-rw-r--r--apps/files_sharing/l10n/it.js10
-rw-r--r--apps/files_sharing/l10n/it.json10
-rw-r--r--apps/files_sharing/l10n/ja.js4
-rw-r--r--apps/files_sharing/l10n/ja.json4
-rw-r--r--apps/files_sharing/l10n/nb_NO.js10
-rw-r--r--apps/files_sharing/l10n/nb_NO.json10
-rw-r--r--apps/files_sharing/l10n/nl.js10
-rw-r--r--apps/files_sharing/l10n/nl.json10
-rw-r--r--apps/files_sharing/l10n/pt_BR.js10
-rw-r--r--apps/files_sharing/l10n/pt_BR.json10
-rw-r--r--apps/files_sharing/l10n/pt_PT.js4
-rw-r--r--apps/files_sharing/l10n/pt_PT.json4
-rw-r--r--apps/files_sharing/l10n/ru.js10
-rw-r--r--apps/files_sharing/l10n/ru.json10
-rw-r--r--apps/files_sharing/l10n/sk_SK.js4
-rw-r--r--apps/files_sharing/l10n/sk_SK.json4
-rw-r--r--apps/files_sharing/l10n/sl.js5
-rw-r--r--apps/files_sharing/l10n/sl.json5
-rw-r--r--apps/files_sharing/l10n/th_TH.js10
-rw-r--r--apps/files_sharing/l10n/th_TH.json10
-rw-r--r--apps/files_sharing/l10n/tr.js10
-rw-r--r--apps/files_sharing/l10n/tr.json10
-rw-r--r--apps/files_sharing/l10n/uk.js5
-rw-r--r--apps/files_sharing/l10n/uk.json5
-rw-r--r--apps/files_sharing/l10n/zh_CN.js5
-rw-r--r--apps/files_sharing/l10n/zh_CN.json5
-rw-r--r--apps/files_sharing/lib/activity.php15
-rw-r--r--apps/files_sharing/lib/cache.php4
-rw-r--r--apps/files_sharing/lib/controllers/externalsharescontroller.php1
-rw-r--r--apps/files_sharing/lib/external/manager.php10
-rw-r--r--apps/files_sharing/lib/external/scanner.php5
-rw-r--r--apps/files_sharing/lib/external/storage.php20
-rw-r--r--apps/files_sharing/lib/helper.php4
-rw-r--r--apps/files_sharing/lib/hooks.php1
-rw-r--r--apps/files_sharing/lib/mountprovider.php34
-rw-r--r--apps/files_sharing/lib/propagation/changewatcher.php37
-rw-r--r--apps/files_sharing/lib/propagation/propagationmanager.php27
-rw-r--r--apps/files_sharing/lib/propagation/recipientpropagator.php53
-rw-r--r--apps/files_sharing/lib/readonlywrapper.php74
-rw-r--r--apps/files_sharing/lib/share/file.php2
-rw-r--r--apps/files_sharing/lib/share/folder.php6
-rw-r--r--apps/files_sharing/lib/sharedmount.php31
-rw-r--r--apps/files_sharing/lib/sharedstorage.php17
-rw-r--r--apps/files_sharing/lib/updater.php6
-rw-r--r--apps/files_sharing/list.php1
-rw-r--r--apps/files_sharing/publicwebdav.php9
-rw-r--r--apps/files_sharing/settings-personal.php1
-rw-r--r--apps/files_sharing/templates/public.php2
-rw-r--r--apps/files_sharing/tests/api.php69
-rw-r--r--apps/files_sharing/tests/controller/sharecontroller.php1
-rw-r--r--apps/files_sharing/tests/deleteorphanedsharesjobtest.php1
-rw-r--r--apps/files_sharing/tests/etagpropagation.php14
-rw-r--r--apps/files_sharing/tests/js/shareSpec.js19
-rw-r--r--apps/files_sharing/tests/locking.php101
-rw-r--r--apps/files_sharing/tests/middleware/sharingcheckmiddleware.php1
-rw-r--r--apps/files_sharing/tests/permissions.php1
-rw-r--r--apps/files_sharing/tests/share.php148
-rw-r--r--apps/files_sharing/tests/sharedmount.php7
-rw-r--r--apps/files_sharing/tests/sizepropagation.php3
-rw-r--r--apps/files_sharing/tests/unsharechildren.php10
-rw-r--r--apps/files_sharing/tests/updater.php45
-rw-r--r--apps/files_sharing/tests/watcher.php1
-rw-r--r--apps/files_trashbin/ajax/delete.php3
-rw-r--r--apps/files_trashbin/ajax/list.php1
-rw-r--r--apps/files_trashbin/ajax/preview.php7
-rw-r--r--apps/files_trashbin/ajax/undelete.php3
-rw-r--r--apps/files_trashbin/appinfo/info.xml1
-rw-r--r--apps/files_trashbin/appinfo/register_command.php29
-rw-r--r--apps/files_trashbin/appinfo/routes.php1
-rw-r--r--apps/files_trashbin/appinfo/update.php1
-rw-r--r--apps/files_trashbin/appinfo/version2
-rw-r--r--apps/files_trashbin/command/cleanup.php118
-rw-r--r--apps/files_trashbin/command/expire.php3
-rw-r--r--apps/files_trashbin/l10n/be.js2
-rw-r--r--apps/files_trashbin/l10n/be.json2
-rw-r--r--apps/files_trashbin/l10n/et_EE.js1
-rw-r--r--apps/files_trashbin/l10n/et_EE.json1
-rw-r--r--apps/files_trashbin/l10n/zh_CN.js3
-rw-r--r--apps/files_trashbin/l10n/zh_CN.json3
-rw-r--r--apps/files_trashbin/lib/helper.php1
-rw-r--r--apps/files_trashbin/lib/trashbin.php14
-rw-r--r--apps/files_trashbin/list.php1
-rw-r--r--apps/files_trashbin/tests/command/cleanuptest.php192
-rw-r--r--apps/files_trashbin/tests/trashbin.php1
-rw-r--r--apps/files_versions/ajax/preview.php7
-rw-r--r--apps/files_versions/ajax/rollbackVersion.php1
-rw-r--r--apps/files_versions/appinfo/app.php1
-rw-r--r--apps/files_versions/appinfo/info.xml1
-rw-r--r--apps/files_versions/appinfo/register_command.php (renamed from apps/files/ajax/mimeicon.php)13
-rw-r--r--apps/files_versions/appinfo/routes.php1
-rw-r--r--apps/files_versions/appinfo/update.php1
-rw-r--r--apps/files_versions/appinfo/version2
-rw-r--r--apps/files_versions/command/cleanup.php114
-rw-r--r--apps/files_versions/command/expire.php23
-rw-r--r--apps/files_versions/download.php3
-rw-r--r--apps/files_versions/l10n/is.js2
-rw-r--r--apps/files_versions/l10n/is.json2
-rw-r--r--apps/files_versions/l10n/ru.js2
-rw-r--r--apps/files_versions/l10n/ru.json2
-rw-r--r--apps/files_versions/lib/storage.php1
-rw-r--r--apps/files_versions/tests/command/cleanuptest.php162
-rw-r--r--apps/files_versions/tests/versions.php2
-rw-r--r--apps/provisioning_api/appinfo/app.php1
-rw-r--r--apps/provisioning_api/appinfo/routes.php1
-rw-r--r--apps/provisioning_api/lib/apps.php1
-rw-r--r--apps/provisioning_api/lib/groups.php3
-rw-r--r--apps/provisioning_api/lib/users.php9
-rw-r--r--apps/provisioning_api/tests/appstest.php1
-rw-r--r--apps/provisioning_api/tests/groupstest.php1
-rw-r--r--apps/provisioning_api/tests/userstest.php3
-rw-r--r--apps/user_ldap/ajax/getNewServerConfigPrefix.php1
-rw-r--r--apps/user_ldap/appinfo/info.xml1
-rw-r--r--apps/user_ldap/appinfo/install.php1
-rw-r--r--apps/user_ldap/appinfo/version2
-rw-r--r--apps/user_ldap/group_ldap.php4
-rw-r--r--apps/user_ldap/l10n/cs_CZ.js2
-rw-r--r--apps/user_ldap/l10n/cs_CZ.json2
-rw-r--r--apps/user_ldap/l10n/da.js2
-rw-r--r--apps/user_ldap/l10n/da.json2
-rw-r--r--apps/user_ldap/l10n/de.js1
-rw-r--r--apps/user_ldap/l10n/de.json1
-rw-r--r--apps/user_ldap/l10n/de_DE.js1
-rw-r--r--apps/user_ldap/l10n/de_DE.json1
-rw-r--r--apps/user_ldap/l10n/el.js2
-rw-r--r--apps/user_ldap/l10n/el.json2
-rw-r--r--apps/user_ldap/l10n/en_GB.js1
-rw-r--r--apps/user_ldap/l10n/en_GB.json1
-rw-r--r--apps/user_ldap/l10n/es.js2
-rw-r--r--apps/user_ldap/l10n/es.json2
-rw-r--r--apps/user_ldap/l10n/et_EE.js21
-rw-r--r--apps/user_ldap/l10n/et_EE.json21
-rw-r--r--apps/user_ldap/l10n/fr.js24
-rw-r--r--apps/user_ldap/l10n/fr.json24
-rw-r--r--apps/user_ldap/l10n/gl.js2
-rw-r--r--apps/user_ldap/l10n/gl.json2
-rw-r--r--apps/user_ldap/l10n/id.js68
-rw-r--r--apps/user_ldap/l10n/id.json68
-rw-r--r--apps/user_ldap/l10n/it.js2
-rw-r--r--apps/user_ldap/l10n/it.json2
-rw-r--r--apps/user_ldap/l10n/ja.js2
-rw-r--r--apps/user_ldap/l10n/ja.json2
-rw-r--r--apps/user_ldap/l10n/lb.js1
-rw-r--r--apps/user_ldap/l10n/lb.json1
-rw-r--r--apps/user_ldap/l10n/nb_NO.js2
-rw-r--r--apps/user_ldap/l10n/nb_NO.json2
-rw-r--r--apps/user_ldap/l10n/nl.js2
-rw-r--r--apps/user_ldap/l10n/nl.json2
-rw-r--r--apps/user_ldap/l10n/pl.js18
-rw-r--r--apps/user_ldap/l10n/pl.json18
-rw-r--r--apps/user_ldap/l10n/pt_BR.js2
-rw-r--r--apps/user_ldap/l10n/pt_BR.json2
-rw-r--r--apps/user_ldap/l10n/ru.js2
-rw-r--r--apps/user_ldap/l10n/ru.json2
-rw-r--r--apps/user_ldap/l10n/sk_SK.js4
-rw-r--r--apps/user_ldap/l10n/sk_SK.json4
-rw-r--r--apps/user_ldap/l10n/sl.js6
-rw-r--r--apps/user_ldap/l10n/sl.json6
-rw-r--r--apps/user_ldap/l10n/sr.js1
-rw-r--r--apps/user_ldap/l10n/sr.json1
-rw-r--r--apps/user_ldap/l10n/th_TH.js2
-rw-r--r--apps/user_ldap/l10n/th_TH.json2
-rw-r--r--apps/user_ldap/l10n/tr.js25
-rw-r--r--apps/user_ldap/l10n/tr.json25
-rw-r--r--apps/user_ldap/l10n/uk.js6
-rw-r--r--apps/user_ldap/l10n/uk.json6
-rw-r--r--apps/user_ldap/l10n/zh_CN.js1
-rw-r--r--apps/user_ldap/l10n/zh_CN.json1
-rw-r--r--apps/user_ldap/lib/access.php27
-rw-r--r--apps/user_ldap/lib/connection.php1
-rw-r--r--apps/user_ldap/lib/proxy.php1
-rw-r--r--apps/user_ldap/lib/user/manager.php1
-rw-r--r--apps/user_ldap/settings.php1
-rw-r--r--apps/user_ldap/templates/part.wizard-server.php2
-rwxr-xr-xapps/user_ldap/tests/.htaccess14
-rw-r--r--apps/user_ldap/tests/group_ldap.php4
-rw-r--r--apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php158
-rw-r--r--apps/user_ldap/tests/integration/readme.md60
-rwxr-xr-xapps/user_ldap/tests/integration/run-test.sh17
-rw-r--r--apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php52
-rw-r--r--apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php54
-rw-r--r--apps/user_ldap/tests/user_ldap.php1
-rw-r--r--apps/user_ldap/user_ldap.php12
-rw-r--r--apps/user_ldap/user_proxy.php13
-rw-r--r--apps/user_webdavauth/appinfo/app.php1
-rw-r--r--apps/user_webdavauth/appinfo/info.xml7
-rw-r--r--apps/user_webdavauth/appinfo/version2
-rw-r--r--apps/user_webdavauth/l10n/is.js2
-rw-r--r--apps/user_webdavauth/l10n/is.json2
-rw-r--r--apps/user_webdavauth/l10n/ru.js2
-rw-r--r--apps/user_webdavauth/l10n/ru.json2
-rw-r--r--apps/user_webdavauth/user_webdavauth.php10
380 files changed, 3288 insertions, 674 deletions
diff --git a/apps/encryption/appinfo/application.php b/apps/encryption/appinfo/application.php
index cb9c33cfe58..d4804394c5f 100644
--- a/apps/encryption/appinfo/application.php
+++ b/apps/encryption/appinfo/application.php
@@ -2,8 +2,9 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/appinfo/register_command.php b/apps/encryption/appinfo/register_command.php
index 8a9df8ea3eb..f727fdf9d70 100644
--- a/apps/encryption/appinfo/register_command.php
+++ b/apps/encryption/appinfo/register_command.php
@@ -1,9 +1,23 @@
<?php
/**
- * Copyright (c) 2015 Thomas Müller <deepdiver@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
use OCA\Encryption\Command\MigrateKeys;
diff --git a/apps/encryption/appinfo/routes.php b/apps/encryption/appinfo/routes.php
index 8fa163d0751..a73cc578437 100644
--- a/apps/encryption/appinfo/routes.php
+++ b/apps/encryption/appinfo/routes.php
@@ -2,6 +2,8 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/command/migratekeys.php b/apps/encryption/command/migratekeys.php
index b814d697a2c..e6e5e7b70b0 100644
--- a/apps/encryption/command/migratekeys.php
+++ b/apps/encryption/command/migratekeys.php
@@ -1,9 +1,23 @@
<?php
/**
- * Copyright (c) 2015 Thomas Müller <thomas.mueller@tmit.eu>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
namespace OCA\Encryption\Command;
diff --git a/apps/encryption/controller/recoverycontroller.php b/apps/encryption/controller/recoverycontroller.php
index f1a2651443e..a92c49f539f 100644
--- a/apps/encryption/controller/recoverycontroller.php
+++ b/apps/encryption/controller/recoverycontroller.php
@@ -3,6 +3,8 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/controller/settingscontroller.php b/apps/encryption/controller/settingscontroller.php
index 7fa3f469a14..641c97e1d6e 100644
--- a/apps/encryption/controller/settingscontroller.php
+++ b/apps/encryption/controller/settingscontroller.php
@@ -1,6 +1,8 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/controller/statuscontroller.php b/apps/encryption/controller/statuscontroller.php
index cdc4b2e92e0..f330f726c0b 100644
--- a/apps/encryption/controller/statuscontroller.php
+++ b/apps/encryption/controller/statuscontroller.php
@@ -1,6 +1,8 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/hooks/contracts/ihook.php b/apps/encryption/hooks/contracts/ihook.php
index d4f20700d78..53217f8ac06 100644
--- a/apps/encryption/hooks/contracts/ihook.php
+++ b/apps/encryption/hooks/contracts/ihook.php
@@ -1,6 +1,8 @@
<?php
/**
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/l10n/et_EE.js b/apps/encryption/l10n/et_EE.js
index dfd1cdfcb69..0c33015cdf1 100644
--- a/apps/encryption/l10n/et_EE.js
+++ b/apps/encryption/l10n/et_EE.js
@@ -8,6 +8,7 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Ei suutnud lubada taastevõtit. Palun kontrolli oma taastevõtme parooli!",
"Recovery key successfully disabled" : "Taastevõtme keelamine õnnestus",
"Could not disable recovery key. Please check your recovery key password!" : "Ei suuda keelata taastevõtit. Palun kontrolli oma taastevõtme parooli!",
+ "Missing parameters" : "Paramttrid puuduvad",
"Please provide the old recovery password" : "Palun sisesta vana taastevõtme parool",
"Please provide a new recovery password" : "Palun sisesta uus taastevõtme parool",
"Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli",
diff --git a/apps/encryption/l10n/et_EE.json b/apps/encryption/l10n/et_EE.json
index e5a4bd72482..1f8f74dc7fe 100644
--- a/apps/encryption/l10n/et_EE.json
+++ b/apps/encryption/l10n/et_EE.json
@@ -6,6 +6,7 @@
"Could not enable recovery key. Please check your recovery key password!" : "Ei suutnud lubada taastevõtit. Palun kontrolli oma taastevõtme parooli!",
"Recovery key successfully disabled" : "Taastevõtme keelamine õnnestus",
"Could not disable recovery key. Please check your recovery key password!" : "Ei suuda keelata taastevõtit. Palun kontrolli oma taastevõtme parooli!",
+ "Missing parameters" : "Paramttrid puuduvad",
"Please provide the old recovery password" : "Palun sisesta vana taastevõtme parool",
"Please provide a new recovery password" : "Palun sisesta uus taastevõtme parool",
"Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli",
diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js
index a5b5cc00707..6eaf7b125a5 100644
--- a/apps/encryption/l10n/fr.js
+++ b/apps/encryption/l10n/fr.js
@@ -39,7 +39,7 @@ OC.L10N.register(
"Change Password" : "Changer de mot de passe",
"ownCloud basic encryption module" : "Module de chiffrement de base d'ownCloud",
"Your private key password no longer matches your log-in password." : "Le mot de passe de votre clef privée ne correspond plus à votre mot de passe de connexion.",
- "Set your old private key password to your current log-in password:" : "Faites de votre mot de passe de connexion le mot de passe de votre clef privée :",
+ "Set your old private key password to your current log-in password:" : "Remplacez l'ancien mot de passe de votre clé privée par votre mot de passe de connexion actuel :",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez plus de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.",
"Old log-in password" : "Ancien mot de passe de connexion",
"Current log-in password" : "Actuel mot de passe de connexion",
diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json
index 2044ab7b80b..8e319e87fde 100644
--- a/apps/encryption/l10n/fr.json
+++ b/apps/encryption/l10n/fr.json
@@ -37,7 +37,7 @@
"Change Password" : "Changer de mot de passe",
"ownCloud basic encryption module" : "Module de chiffrement de base d'ownCloud",
"Your private key password no longer matches your log-in password." : "Le mot de passe de votre clef privée ne correspond plus à votre mot de passe de connexion.",
- "Set your old private key password to your current log-in password:" : "Faites de votre mot de passe de connexion le mot de passe de votre clef privée :",
+ "Set your old private key password to your current log-in password:" : "Remplacez l'ancien mot de passe de votre clé privée par votre mot de passe de connexion actuel :",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez plus de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.",
"Old log-in password" : "Ancien mot de passe de connexion",
"Current log-in password" : "Actuel mot de passe de connexion",
diff --git a/apps/encryption/l10n/id.js b/apps/encryption/l10n/id.js
index 7117924864c..e1de33fe156 100644
--- a/apps/encryption/l10n/id.js
+++ b/apps/encryption/l10n/id.js
@@ -21,9 +21,12 @@ OC.L10N.register(
"The old password was not correct, please try again." : "Sandi lama salah, mohon coba lagi.",
"The current log-in password was not correct, please try again." : "Sandi masuk saat ini salah, mohon coba lagi.",
"Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk Aplikasi Enskripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienskripsi.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi",
+ "Encryption App is enabled and ready" : "Apl Enkripsi telah diaktifkan dan siap",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat membaca berkas ini, kemungkinan merupakan berkas berbagi. Silakan minta pemilik berkas untuk membagikan ulang kepada Anda.",
"Enable recovery key" : "Aktifkan kunci pemulihan",
"Disable recovery key" : "Nonaktifkan kunci pemulihan",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Kunci pemulihan adalah kunci enkripsi tambahan yang digunakan untuk mengenkripsi berkas. Kunci pemulihan memungkinkan untuk memulihkan berkas-berkas pengguna ketika pengguna tersebut melupakan sandi mereka.",
diff --git a/apps/encryption/l10n/id.json b/apps/encryption/l10n/id.json
index 5a0466c5f2a..66d7f6c8991 100644
--- a/apps/encryption/l10n/id.json
+++ b/apps/encryption/l10n/id.json
@@ -19,9 +19,12 @@
"The old password was not correct, please try again." : "Sandi lama salah, mohon coba lagi.",
"The current log-in password was not correct, please try again." : "Sandi masuk saat ini salah, mohon coba lagi.",
"Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk Aplikasi Enskripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienskripsi.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi",
+ "Encryption App is enabled and ready" : "Apl Enkripsi telah diaktifkan dan siap",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat membaca berkas ini, kemungkinan merupakan berkas berbagi. Silakan minta pemilik berkas untuk membagikan ulang kepada Anda.",
"Enable recovery key" : "Aktifkan kunci pemulihan",
"Disable recovery key" : "Nonaktifkan kunci pemulihan",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Kunci pemulihan adalah kunci enkripsi tambahan yang digunakan untuk mengenkripsi berkas. Kunci pemulihan memungkinkan untuk memulihkan berkas-berkas pengguna ketika pengguna tersebut melupakan sandi mereka.",
diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js
index 3919997ed61..f76b215fe1f 100644
--- a/apps/encryption/l10n/ja.js
+++ b/apps/encryption/l10n/ja.js
@@ -16,7 +16,7 @@ OC.L10N.register(
"Could not change the password. Maybe the old password was not correct." : "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。",
"Recovery Key disabled" : "復旧キーが無効になりました。",
"Recovery Key enabled" : "復旧キーが有効になりました。",
- "Could not enable the recovery key, please try again or contact your administrator" : "復旧キーを有効化できませんでした。もう一度試してみるか、管理者に連絡してください。",
+ "Could not enable the recovery key, please try again or contact your administrator" : "復旧キーを有効化できませんでした。もう一度試してみるか、管理者に問い合わせてください。",
"Could not update the private key password." : "秘密鍵のパスワードを更新できませんでした。",
"The old password was not correct, please try again." : "古いパスワードが一致しませんでした。もう一度入力してください。",
"The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。",
diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json
index c8f65e0d7b3..58b32ebdd2e 100644
--- a/apps/encryption/l10n/ja.json
+++ b/apps/encryption/l10n/ja.json
@@ -14,7 +14,7 @@
"Could not change the password. Maybe the old password was not correct." : "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。",
"Recovery Key disabled" : "復旧キーが無効になりました。",
"Recovery Key enabled" : "復旧キーが有効になりました。",
- "Could not enable the recovery key, please try again or contact your administrator" : "復旧キーを有効化できませんでした。もう一度試してみるか、管理者に連絡してください。",
+ "Could not enable the recovery key, please try again or contact your administrator" : "復旧キーを有効化できませんでした。もう一度試してみるか、管理者に問い合わせてください。",
"Could not update the private key password." : "秘密鍵のパスワードを更新できませんでした。",
"The old password was not correct, please try again." : "古いパスワードが一致しませんでした。もう一度入力してください。",
"The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。",
diff --git a/apps/encryption/l10n/pt_PT.js b/apps/encryption/l10n/pt_PT.js
index c144e2c68a5..c02efa4c1fe 100644
--- a/apps/encryption/l10n/pt_PT.js
+++ b/apps/encryption/l10n/pt_PT.js
@@ -1,8 +1,8 @@
OC.L10N.register(
"encryption",
{
- "Missing recovery key password" : "Senha da chave de recuperação em falta",
- "Please repeat the recovery key password" : "Por favor, insira a contrassenha da chave de recuperação",
+ "Missing recovery key password" : "Palavra-passe da chave de recuperação em falta",
+ "Please repeat the recovery key password" : "Por favor, insira a palavra-passe da chave de recuperação",
"Repeated recovery key password does not match the provided recovery key password" : "A palavra-passe de recuperação repetida não corresponde à palavra-passe fornecida",
"Recovery key successfully enabled" : "A chave de recuperação foi ativada com sucesso",
"Could not enable recovery key. Please check your recovery key password!" : "Não foi possível ativar a chave de recuperação. Por favor, verifique a sua senha da chave de recuperação!",
diff --git a/apps/encryption/l10n/pt_PT.json b/apps/encryption/l10n/pt_PT.json
index f23d8ce1cf1..32f1d984ff1 100644
--- a/apps/encryption/l10n/pt_PT.json
+++ b/apps/encryption/l10n/pt_PT.json
@@ -1,6 +1,6 @@
{ "translations": {
- "Missing recovery key password" : "Senha da chave de recuperação em falta",
- "Please repeat the recovery key password" : "Por favor, insira a contrassenha da chave de recuperação",
+ "Missing recovery key password" : "Palavra-passe da chave de recuperação em falta",
+ "Please repeat the recovery key password" : "Por favor, insira a palavra-passe da chave de recuperação",
"Repeated recovery key password does not match the provided recovery key password" : "A palavra-passe de recuperação repetida não corresponde à palavra-passe fornecida",
"Recovery key successfully enabled" : "A chave de recuperação foi ativada com sucesso",
"Could not enable recovery key. Please check your recovery key password!" : "Não foi possível ativar a chave de recuperação. Por favor, verifique a sua senha da chave de recuperação!",
diff --git a/apps/encryption/l10n/sk_SK.js b/apps/encryption/l10n/sk_SK.js
index 727903f5679..3f3b93f043e 100644
--- a/apps/encryption/l10n/sk_SK.js
+++ b/apps/encryption/l10n/sk_SK.js
@@ -8,11 +8,14 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Nepodarilo sa povoliť záchranný kľúč. Skontrolujte prosím Vaše heslo záchranného kľúča!",
"Recovery key successfully disabled" : "Záchranný kľúč bol úspešne zakázaný",
"Could not disable recovery key. Please check your recovery key password!" : "Nepodarilo sa zakázať záchranný kľúč. Skontrolujte prosím Vaše heslo záchranného kľúča!",
+ "Missing parameters" : "Chýbajúce parametre",
"Please provide the old recovery password" : "Zadajte prosím staré heslo pre obnovenie",
"Please provide a new recovery password" : "Zadajte prosím nové heslo pre obnovenie",
"Please repeat the new recovery password" : "Zopakujte prosím nové heslo pre obnovenie",
"Password successfully changed." : "Heslo úspešne zmenené.",
"Could not change the password. Maybe the old password was not correct." : "Nemožno zmeniť heslo. Pravdepodobne nebolo staré heslo zadané správne.",
+ "Recovery Key disabled" : "Obnovovací kľúč je zakázaný",
+ "Recovery Key enabled" : "Obnovovací kľúč je povolený",
"Could not update the private key password." : "Nemožno aktualizovať heslo súkromného kľúča.",
"The old password was not correct, please try again." : "Staré heslo nebolo zadané správne, prosím skúste to ešte raz.",
"The current log-in password was not correct, please try again." : "Toto heslo nebolo správne, prosím skúste to ešte raz.",
@@ -20,8 +23,12 @@ OC.L10N.register(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný súkromný kľúč na šifrovanie aplikácií. Zaktualizujte si heslo súkromného kľúča v svojom osobnom nastavení, aby ste znovu získali prístup k svojim zašifrovaným súborom.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor sa nepodarilo dešifrovať, pravdepodobne je zdieľaný. Požiadajte majiteľa súboru, aby ho s vami znovu vyzdieľal.",
+ "Enable recovery key" : "Povoliť obnovovací kľúč",
+ "Disable recovery key" : "Zakázať obnovovací kľúč",
"Recovery key password" : "Heslo obnovovacieho kľúča",
"Change recovery key password:" : "Zmeniť heslo obnovovacieho kľúča:",
+ "New recovery key password" : "Nové heslo obnovovacieho kľúča",
+ "Repeat new recovery key password" : "Zopakujte nové heslo obnovovacieho kľúča",
"Change Password" : "Zmeniť heslo",
"Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.",
"Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:",
diff --git a/apps/encryption/l10n/sk_SK.json b/apps/encryption/l10n/sk_SK.json
index ced78b0931f..05371299dbc 100644
--- a/apps/encryption/l10n/sk_SK.json
+++ b/apps/encryption/l10n/sk_SK.json
@@ -6,11 +6,14 @@
"Could not enable recovery key. Please check your recovery key password!" : "Nepodarilo sa povoliť záchranný kľúč. Skontrolujte prosím Vaše heslo záchranného kľúča!",
"Recovery key successfully disabled" : "Záchranný kľúč bol úspešne zakázaný",
"Could not disable recovery key. Please check your recovery key password!" : "Nepodarilo sa zakázať záchranný kľúč. Skontrolujte prosím Vaše heslo záchranného kľúča!",
+ "Missing parameters" : "Chýbajúce parametre",
"Please provide the old recovery password" : "Zadajte prosím staré heslo pre obnovenie",
"Please provide a new recovery password" : "Zadajte prosím nové heslo pre obnovenie",
"Please repeat the new recovery password" : "Zopakujte prosím nové heslo pre obnovenie",
"Password successfully changed." : "Heslo úspešne zmenené.",
"Could not change the password. Maybe the old password was not correct." : "Nemožno zmeniť heslo. Pravdepodobne nebolo staré heslo zadané správne.",
+ "Recovery Key disabled" : "Obnovovací kľúč je zakázaný",
+ "Recovery Key enabled" : "Obnovovací kľúč je povolený",
"Could not update the private key password." : "Nemožno aktualizovať heslo súkromného kľúča.",
"The old password was not correct, please try again." : "Staré heslo nebolo zadané správne, prosím skúste to ešte raz.",
"The current log-in password was not correct, please try again." : "Toto heslo nebolo správne, prosím skúste to ešte raz.",
@@ -18,8 +21,12 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný súkromný kľúč na šifrovanie aplikácií. Zaktualizujte si heslo súkromného kľúča v svojom osobnom nastavení, aby ste znovu získali prístup k svojim zašifrovaným súborom.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor sa nepodarilo dešifrovať, pravdepodobne je zdieľaný. Požiadajte majiteľa súboru, aby ho s vami znovu vyzdieľal.",
+ "Enable recovery key" : "Povoliť obnovovací kľúč",
+ "Disable recovery key" : "Zakázať obnovovací kľúč",
"Recovery key password" : "Heslo obnovovacieho kľúča",
"Change recovery key password:" : "Zmeniť heslo obnovovacieho kľúča:",
+ "New recovery key password" : "Nové heslo obnovovacieho kľúča",
+ "Repeat new recovery key password" : "Zopakujte nové heslo obnovovacieho kľúča",
"Change Password" : "Zmeniť heslo",
"Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.",
"Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:",
diff --git a/apps/encryption/l10n/sl.js b/apps/encryption/l10n/sl.js
index ef695af626d..7c90ba7e9a7 100644
--- a/apps/encryption/l10n/sl.js
+++ b/apps/encryption/l10n/sl.js
@@ -5,14 +5,17 @@ OC.L10N.register(
"Please repeat the recovery key password" : "Ponovite vpis ključa za obnovitev",
"Repeated recovery key password does not match the provided recovery key password" : "Ponovljen vpis ključa za obnovitev ni enak prvemu vpisu tega ključa",
"Recovery key successfully enabled" : "Ključ za obnovitev gesla je uspešno nastavljen",
- "Could not enable recovery key. Please check your recovery key password!" : "Ključa za obnovitev gesla ni mogoče nastaviti. Preverite ključ!",
+ "Could not enable recovery key. Please check your recovery key password!" : "Ključa za obnovitev gesla ni mogoče nastaviti. Preverite geslo ključa!",
"Recovery key successfully disabled" : "Ključ za obnovitev gesla je uspešno onemogočen",
"Could not disable recovery key. Please check your recovery key password!" : "Ključa za obnovitev gesla ni mogoče onemogočiti. Preverite ključ!",
+ "Missing parameters" : "Manjkajoči parametri:",
"Please provide the old recovery password" : "Vpišite star ključ za obnovitev",
"Please provide a new recovery password" : "Vpišite nov ključ za obnovitev",
"Please repeat the new recovery password" : "Ponovno vpišite nov ključ za obnovitev",
"Password successfully changed." : "Geslo je uspešno spremenjeno.",
"Could not change the password. Maybe the old password was not correct." : "Gesla ni mogoče spremeniti. Morda vnos starega gesla ni pravilen.",
+ "Recovery Key disabled" : "Ključ za obnovitev gesla je onemogočen.",
+ "Recovery Key enabled" : "Ključ za obnovitev gesla je omogočen.",
"Could not update the private key password." : "Ni mogoče posodobiti gesla zasebnega ključa.",
"The old password was not correct, please try again." : "Staro geslo ni vpisano pravilno. Poskusite znova.",
"The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.",
@@ -20,8 +23,14 @@ OC.L10N.register(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Te datoteke ni mogoče šifrirati, ker je to najverjetneje datoteka v souporabi. Prosite lastnika datoteke, da jo da ponovno v souporabo.",
+ "Enable recovery key" : "Omogoči obnovitev gesla",
+ "Disable recovery key" : "Onemogoči obnovitev gesla",
"Recovery key password" : "Ključ za obnovitev gesla",
+ "Repeat recovery key password" : "Ponovi ključ za obnovitev gesla",
"Change recovery key password:" : "Spremeni ključ za obnovitev gesla:",
+ "Old recovery key password" : "Stari ključ za obnovitev gesla",
+ "New recovery key password" : "Novi ključ za obnovitev gesla",
+ "Repeat new recovery key password" : "Ponovi novi ključ za obnovitev gesla",
"Change Password" : "Spremeni geslo",
"Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.",
"Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:",
diff --git a/apps/encryption/l10n/sl.json b/apps/encryption/l10n/sl.json
index 7e50e87f41b..82d23fc6e74 100644
--- a/apps/encryption/l10n/sl.json
+++ b/apps/encryption/l10n/sl.json
@@ -3,14 +3,17 @@
"Please repeat the recovery key password" : "Ponovite vpis ključa za obnovitev",
"Repeated recovery key password does not match the provided recovery key password" : "Ponovljen vpis ključa za obnovitev ni enak prvemu vpisu tega ključa",
"Recovery key successfully enabled" : "Ključ za obnovitev gesla je uspešno nastavljen",
- "Could not enable recovery key. Please check your recovery key password!" : "Ključa za obnovitev gesla ni mogoče nastaviti. Preverite ključ!",
+ "Could not enable recovery key. Please check your recovery key password!" : "Ključa za obnovitev gesla ni mogoče nastaviti. Preverite geslo ključa!",
"Recovery key successfully disabled" : "Ključ za obnovitev gesla je uspešno onemogočen",
"Could not disable recovery key. Please check your recovery key password!" : "Ključa za obnovitev gesla ni mogoče onemogočiti. Preverite ključ!",
+ "Missing parameters" : "Manjkajoči parametri:",
"Please provide the old recovery password" : "Vpišite star ključ za obnovitev",
"Please provide a new recovery password" : "Vpišite nov ključ za obnovitev",
"Please repeat the new recovery password" : "Ponovno vpišite nov ključ za obnovitev",
"Password successfully changed." : "Geslo je uspešno spremenjeno.",
"Could not change the password. Maybe the old password was not correct." : "Gesla ni mogoče spremeniti. Morda vnos starega gesla ni pravilen.",
+ "Recovery Key disabled" : "Ključ za obnovitev gesla je onemogočen.",
+ "Recovery Key enabled" : "Ključ za obnovitev gesla je omogočen.",
"Could not update the private key password." : "Ni mogoče posodobiti gesla zasebnega ključa.",
"The old password was not correct, please try again." : "Staro geslo ni vpisano pravilno. Poskusite znova.",
"The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.",
@@ -18,8 +21,14 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Te datoteke ni mogoče šifrirati, ker je to najverjetneje datoteka v souporabi. Prosite lastnika datoteke, da jo da ponovno v souporabo.",
+ "Enable recovery key" : "Omogoči obnovitev gesla",
+ "Disable recovery key" : "Onemogoči obnovitev gesla",
"Recovery key password" : "Ključ za obnovitev gesla",
+ "Repeat recovery key password" : "Ponovi ključ za obnovitev gesla",
"Change recovery key password:" : "Spremeni ključ za obnovitev gesla:",
+ "Old recovery key password" : "Stari ključ za obnovitev gesla",
+ "New recovery key password" : "Novi ključ za obnovitev gesla",
+ "Repeat new recovery key password" : "Ponovi novi ključ za obnovitev gesla",
"Change Password" : "Spremeni geslo",
"Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.",
"Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:",
diff --git a/apps/encryption/lib/crypto/crypt.php b/apps/encryption/lib/crypto/crypt.php
index 65af3a93d0a..f3cf38fb96c 100644
--- a/apps/encryption/lib/crypto/crypt.php
+++ b/apps/encryption/lib/crypto/crypt.php
@@ -2,6 +2,8 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/encryption/lib/crypto/encryption.php b/apps/encryption/lib/crypto/encryption.php
index fe1d955524a..1fa0581506b 100644
--- a/apps/encryption/lib/crypto/encryption.php
+++ b/apps/encryption/lib/crypto/encryption.php
@@ -2,8 +2,11 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Jan-Christoph Borchardt <hey@jancborchardt.net>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/lib/hookmanager.php b/apps/encryption/lib/hookmanager.php
index 4b885cd7f64..0fea1b0f9f2 100644
--- a/apps/encryption/lib/hookmanager.php
+++ b/apps/encryption/lib/hookmanager.php
@@ -3,6 +3,8 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/lib/migration.php b/apps/encryption/lib/migration.php
index e4e5595efa1..b5d5dc26568 100644
--- a/apps/encryption/lib/migration.php
+++ b/apps/encryption/lib/migration.php
@@ -1,23 +1,22 @@
<?php
/**
- * ownCloud
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
- * @copyright (C) 2015 ownCloud, Inc.
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
*
- * @author Bjoern Schiessle <schiessle@owncloud.com>
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
+ * 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.
+ * 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 library. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
@@ -54,6 +53,7 @@ class Migration {
public function __destruct() {
$this->view->deleteAll('files_encryption/public_keys');
$this->updateFileCache();
+ $this->config->deleteAppValue('files_encryption', 'installed_version');
}
/**
@@ -139,27 +139,36 @@ class Migration {
public function updateDB() {
// delete left-over from old encryption which is no longer needed
- $this->config->deleteAppValue('files_encryption', 'installed_version');
$this->config->deleteAppValue('files_encryption', 'ocsid');
$this->config->deleteAppValue('files_encryption', 'types');
$this->config->deleteAppValue('files_encryption', 'enabled');
+ $oldAppValues = $this->connection->createQueryBuilder();
+ $oldAppValues->select('*')
+ ->from('`*PREFIX*appconfig`')
+ ->where($oldAppValues->expr()->eq('`appid`', ':appid'))
+ ->setParameter('appid', 'files_encryption');
+ $appSettings = $oldAppValues->execute();
+
+ while ($row = $appSettings->fetch()) {
+ // 'installed_version' gets deleted at the end of the migration process
+ if ($row['configkey'] !== 'installed_version' ) {
+ $this->config->setAppValue('encryption', $row['configkey'], $row['configvalue']);
+ $this->config->deleteAppValue('files_encryption', $row['configkey']);
+ }
+ }
- $query = $this->connection->createQueryBuilder();
- $query->update('`*PREFIX*appconfig`')
- ->set('`appid`', ':newappid')
- ->where($query->expr()->eq('`appid`', ':oldappid'))
- ->setParameter('oldappid', 'files_encryption')
- ->setParameter('newappid', 'encryption');
- $query->execute();
+ $oldPreferences = $this->connection->createQueryBuilder();
+ $oldPreferences->select('*')
+ ->from('`*PREFIX*preferences`')
+ ->where($oldPreferences->expr()->eq('`appid`', ':appid'))
+ ->setParameter('appid', 'files_encryption');
+ $preferenceSettings = $oldPreferences->execute();
- $query = $this->connection->createQueryBuilder();
- $query->update('`*PREFIX*preferences`')
- ->set('`appid`', ':newappid')
- ->where($query->expr()->eq('`appid`', ':oldappid'))
- ->setParameter('oldappid', 'files_encryption')
- ->setParameter('newappid', 'encryption');
- $query->execute();
+ while ($row = $preferenceSettings->fetch()) {
+ $this->config->setUserValue($row['userid'], 'encryption', $row['configkey'], $row['configvalue']);
+ $this->config->deleteUserValue($row['userid'], 'files_encryption', $row['configkey']);
+ }
}
/**
diff --git a/apps/encryption/lib/recovery.php b/apps/encryption/lib/recovery.php
index 61a659e484e..e31a14fba63 100644
--- a/apps/encryption/lib/recovery.php
+++ b/apps/encryption/lib/recovery.php
@@ -2,6 +2,8 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/lib/session.php b/apps/encryption/lib/session.php
index 9709518a27d..c3759c3fc56 100644
--- a/apps/encryption/lib/session.php
+++ b/apps/encryption/lib/session.php
@@ -3,6 +3,8 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/lib/users/setup.php b/apps/encryption/lib/users/setup.php
index fd8261cc637..f224826ed52 100644
--- a/apps/encryption/lib/users/setup.php
+++ b/apps/encryption/lib/users/setup.php
@@ -3,6 +3,8 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/lib/util.php b/apps/encryption/lib/util.php
index afed96aaa38..fbedc5d6077 100644
--- a/apps/encryption/lib/util.php
+++ b/apps/encryption/lib/util.php
@@ -2,6 +2,8 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/tests/controller/RecoveryControllerTest.php b/apps/encryption/tests/controller/RecoveryControllerTest.php
index 89b541e7bd6..d122b992ef0 100644
--- a/apps/encryption/tests/controller/RecoveryControllerTest.php
+++ b/apps/encryption/tests/controller/RecoveryControllerTest.php
@@ -1,9 +1,23 @@
<?php
/**
- * @author Clark Tomlinson <clark@owncloud.com>
+ * @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
diff --git a/apps/encryption/tests/controller/SettingsControllerTest.php b/apps/encryption/tests/controller/SettingsControllerTest.php
index 478bf8213b5..ed8135b9c4d 100644
--- a/apps/encryption/tests/controller/SettingsControllerTest.php
+++ b/apps/encryption/tests/controller/SettingsControllerTest.php
@@ -1,6 +1,8 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/tests/hooks/UserHooksTest.php b/apps/encryption/tests/hooks/UserHooksTest.php
index b0cc9cc924a..921c924d015 100644
--- a/apps/encryption/tests/hooks/UserHooksTest.php
+++ b/apps/encryption/tests/hooks/UserHooksTest.php
@@ -1,9 +1,24 @@
<?php
/**
- * @author Clark Tomlinson <clark@owncloud.com>
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
diff --git a/apps/encryption/tests/lib/HookManagerTest.php b/apps/encryption/tests/lib/HookManagerTest.php
index fb74c05546b..b1d511cb89b 100644
--- a/apps/encryption/tests/lib/HookManagerTest.php
+++ b/apps/encryption/tests/lib/HookManagerTest.php
@@ -1,6 +1,9 @@
<?php
/**
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/tests/lib/KeyManagerTest.php b/apps/encryption/tests/lib/KeyManagerTest.php
index eb43d5a843f..2561b29462f 100644
--- a/apps/encryption/tests/lib/KeyManagerTest.php
+++ b/apps/encryption/tests/lib/KeyManagerTest.php
@@ -2,6 +2,8 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/encryption/tests/lib/MigrationTest.php b/apps/encryption/tests/lib/MigrationTest.php
index c876cea05c9..de1e2bd268b 100644
--- a/apps/encryption/tests/lib/MigrationTest.php
+++ b/apps/encryption/tests/lib/MigrationTest.php
@@ -1,23 +1,23 @@
<?php
- /**
- * ownCloud
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
- * @copyright (C) 2015 ownCloud, Inc.
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
*
- * @author Bjoern Schiessle <schiessle@owncloud.com>
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
+ * 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.
+ * 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 library. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
@@ -242,6 +242,12 @@ class MigrationTest extends \Test\TestCase {
$config->setAppValue('files_encryption', 'recoveryAdminEnabled', '1');
$config->setUserValue(self::TEST_ENCRYPTION_MIGRATION_USER1, 'files_encryption', 'recoverKeyEnabled', '1');
+ //$this->invokePrivate($config, 'cache', [[]]);
+ $cache = $this->invokePrivate(\OC::$server->getAppConfig(), 'cache');
+ unset($cache['encryption']);
+ unset($cache['files_encryption']);
+ $this->invokePrivate(\OC::$server->getAppConfig(), 'cache', [$cache]);
+
// delete default values set by the encryption app during initialization
/** @var \OC\DB\Connection $connection */
@@ -271,6 +277,58 @@ class MigrationTest extends \Test\TestCase {
}
+ /**
+ * test update db if the db already contain some existing new values
+ */
+ public function testUpdateDBExistingNewConfig() {
+ $this->prepareDB();
+ $config = \OC::$server->getConfig();
+ $config->setAppValue('encryption', 'publicShareKeyId', 'wrong_share_id');
+ $config->setUserValue(self::TEST_ENCRYPTION_MIGRATION_USER1, 'encryption', 'recoverKeyEnabled', '9');
+
+ $m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection());
+ $m->updateDB();
+
+ $this->verifyDB('`*PREFIX*appconfig`', 'files_encryption', 0);
+ $this->verifyDB('`*PREFIX*preferences`', 'files_encryption', 0);
+ $this->verifyDB('`*PREFIX*appconfig`', 'encryption', 3);
+ $this->verifyDB('`*PREFIX*preferences`', 'encryption', 1);
+
+ // check if the existing values where overwritten correctly
+ /** @var \OC\DB\Connection $connection */
+ $connection = \OC::$server->getDatabaseConnection();
+ $query = $connection->createQueryBuilder();
+ $query->select('`configvalue`')
+ ->from('`*PREFIX*appconfig`')
+ ->where($query->expr()->andX(
+ $query->expr()->eq('`appid`', ':appid'),
+ $query->expr()->eq('`configkey`', ':configkey')
+ ))
+ ->setParameter('appid', 'encryption')
+ ->setParameter('configkey', 'publicShareKeyId');
+ $result = $query->execute();
+ $value = $result->fetch();
+ $this->assertTrue(isset($value['configvalue']));
+ $this->assertSame('share_id', $value['configvalue']);
+
+ $query = $connection->createQueryBuilder();
+ $query->select('`configvalue`')
+ ->from('`*PREFIX*preferences`')
+ ->where($query->expr()->andX(
+ $query->expr()->eq('`appid`', ':appid'),
+ $query->expr()->eq('`configkey`', ':configkey'),
+ $query->expr()->eq('`userid`', ':userid')
+ ))
+ ->setParameter('appid', 'encryption')
+ ->setParameter('configkey', 'recoverKeyEnabled')
+ ->setParameter('userid', self::TEST_ENCRYPTION_MIGRATION_USER1);
+ $result = $query->execute();
+ $value = $result->fetch();
+ $this->assertTrue(isset($value['configvalue']));
+ $this->assertSame('1', $value['configvalue']);
+
+ }
+
public function verifyDB($table, $appid, $expected) {
/** @var \OC\DB\Connection $connection */
$connection = \OC::$server->getDatabaseConnection();
diff --git a/apps/encryption/tests/lib/RecoveryTest.php b/apps/encryption/tests/lib/RecoveryTest.php
index 0b85192690b..8d5d31af0b8 100644
--- a/apps/encryption/tests/lib/RecoveryTest.php
+++ b/apps/encryption/tests/lib/RecoveryTest.php
@@ -1,6 +1,10 @@
<?php
/**
+ * @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/tests/lib/UtilTest.php b/apps/encryption/tests/lib/UtilTest.php
index 18cf0386793..e75e8ea36b4 100644
--- a/apps/encryption/tests/lib/UtilTest.php
+++ b/apps/encryption/tests/lib/UtilTest.php
@@ -1,6 +1,9 @@
<?php
/**
+ * @author Björn Schießle <schiessle@owncloud.com>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/tests/lib/crypto/cryptTest.php b/apps/encryption/tests/lib/crypto/cryptTest.php
index f850725108b..14ed1513e1e 100644
--- a/apps/encryption/tests/lib/crypto/cryptTest.php
+++ b/apps/encryption/tests/lib/crypto/cryptTest.php
@@ -1,6 +1,8 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/tests/lib/crypto/encryptionTest.php b/apps/encryption/tests/lib/crypto/encryptionTest.php
index c6c0d57eff5..7b0b29fe197 100644
--- a/apps/encryption/tests/lib/crypto/encryptionTest.php
+++ b/apps/encryption/tests/lib/crypto/encryptionTest.php
@@ -1,6 +1,9 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/encryption/tests/lib/users/SetupTest.php b/apps/encryption/tests/lib/users/SetupTest.php
index 354de26253e..e6936c5c12e 100644
--- a/apps/encryption/tests/lib/users/SetupTest.php
+++ b/apps/encryption/tests/lib/users/SetupTest.php
@@ -1,6 +1,8 @@
<?php
/**
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files/ajax/delete.php b/apps/files/ajax/delete.php
index dcd05d8da9e..2d02869df14 100644
--- a/apps/files/ajax/delete.php
+++ b/apps/files/ajax/delete.php
@@ -1,13 +1,11 @@
<?php
/**
* @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Björn Schießle <schiessle@owncloud.com>
* @author Frank Karlitschek <frank@owncloud.org>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files/ajax/getstoragestats.php b/apps/files/ajax/getstoragestats.php
index e56e425c1c6..10f8704dded 100644
--- a/apps/files/ajax/getstoragestats.php
+++ b/apps/files/ajax/getstoragestats.php
@@ -2,7 +2,6 @@
/**
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php
index ab02f993f82..0961636a116 100644
--- a/apps/files/ajax/move.php
+++ b/apps/files/ajax/move.php
@@ -5,7 +5,6 @@
* @author Georg Ehrke <georg@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/apps/files/ajax/newfile.php b/apps/files/ajax/newfile.php
index 6dd3e3e7a80..be09b288d4b 100644
--- a/apps/files/ajax/newfile.php
+++ b/apps/files/ajax/newfile.php
@@ -4,7 +4,6 @@
* @author Georg Ehrke <georg@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files/ajax/newfolder.php b/apps/files/ajax/newfolder.php
index b15457e0173..a2897dd437a 100644
--- a/apps/files/ajax/newfolder.php
+++ b/apps/files/ajax/newfolder.php
@@ -6,7 +6,6 @@
* @author Georg Ehrke <georg@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php
index edb6dd7862d..a24a57b1046 100644
--- a/apps/files/ajax/rename.php
+++ b/apps/files/ajax/rename.php
@@ -7,6 +7,7 @@
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php
index debdf26ffdf..4bc2ce8bdf3 100644
--- a/apps/files/ajax/upload.php
+++ b/apps/files/ajax/upload.php
@@ -9,7 +9,6 @@
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Luke Policinski <lpolicinski@gmail.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Roman Geber <rgeber@owncloudapps.com>
* @author TheSFReader <TheSFReader@gmail.com>
diff --git a/apps/files/appinfo/app.php b/apps/files/appinfo/app.php
index c483ad31ec5..40b194ab882 100644
--- a/apps/files/appinfo/app.php
+++ b/apps/files/appinfo/app.php
@@ -3,7 +3,6 @@
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files/appinfo/remote.php b/apps/files/appinfo/remote.php
index 325773a81ea..fff3332ef49 100644
--- a/apps/files/appinfo/remote.php
+++ b/apps/files/appinfo/remote.php
@@ -50,7 +50,7 @@ $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, $defaults->getName()
// FIXME: The following line is a workaround for legacy components relying on being able to send a GET to /
$server->addPlugin(new \OC\Connector\Sabre\DummyGetResponsePlugin());
$server->addPlugin(new \OC\Connector\Sabre\FilesPlugin($objectTree));
-$server->addPlugin(new \OC\Connector\Sabre\MaintenancePlugin());
+$server->addPlugin(new \OC\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig()));
$server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('webdav', \OC::$server->getLogger()));
// wait with registering these until auth is handled and the filesystem is setup
diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php
index 08c9041062d..5aa52f17a29 100644
--- a/apps/files/appinfo/routes.php
+++ b/apps/files/appinfo/routes.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Tobias Kaminsky <tobias@kaminsky.me>
@@ -65,8 +66,6 @@ $this->create('files_ajax_getstoragestats', 'ajax/getstoragestats.php')
->actionInclude('files/ajax/getstoragestats.php');
$this->create('files_ajax_list', 'ajax/list.php')
->actionInclude('files/ajax/list.php');
-$this->create('files_ajax_mimeicon', 'ajax/mimeicon.php')
- ->actionInclude('files/ajax/mimeicon.php');
$this->create('files_ajax_move', 'ajax/move.php')
->actionInclude('files/ajax/move.php');
$this->create('files_ajax_newfile', 'ajax/newfile.php')
diff --git a/apps/files/command/scan.php b/apps/files/command/scan.php
index 599dc603c7b..99ce64e09cc 100644
--- a/apps/files/command/scan.php
+++ b/apps/files/command/scan.php
@@ -92,10 +92,10 @@ class Scan extends Command {
}
protected function execute(InputInterface $input, OutputInterface $output) {
- $path = $input->getOption('path');
- if ($path) {
- $path = '/'.trim($path, '/');
- list (, $user, ) = explode('/', $path, 3);
+ $inputPath = $input->getOption('path');
+ if ($inputPath) {
+ $inputPath = '/' . trim($inputPath, '/');
+ list (, $user,) = explode('/', $inputPath, 3);
$users = array($user);
} else if ($input->getOption('all')) {
$users = $this->userManager->search('');
@@ -114,6 +114,7 @@ class Scan extends Command {
if (is_object($user)) {
$user = $user->getUID();
}
+ $path = $inputPath ? $inputPath : '/' . $user;
if ($this->userManager->userExists($user)) {
$this->scanFiles($user, $path, $quiet, $output);
} else {
diff --git a/apps/files/download.php b/apps/files/download.php
index c85051e0f4e..b0628e394be 100644
--- a/apps/files/download.php
+++ b/apps/files/download.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Andreas Fischer <bantu@owncloud.com>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Frank Karlitschek <frank@owncloud.org>
* @author Jakob Sack <mail@jakobsack.de>
diff --git a/apps/files/index.php b/apps/files/index.php
index ee12df5f075..4f103f975cb 100644
--- a/apps/files/index.php
+++ b/apps/files/index.php
@@ -8,7 +8,6 @@
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <rmccorkell@karoshi.org.uk>
* @author Roman Geber <rgeber@owncloudapps.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index b6f464bfd29..a3fd605ff7e 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -670,7 +670,7 @@
*/
_createRow: function(fileData, options) {
var td, simpleSize, basename, extension, sizeColor,
- icon = OC.Util.replaceSVGIcon(fileData.icon),
+ icon = OC.MimeType.getIconUrl(fileData.mimetype),
name = fileData.name,
type = fileData.type || 'file',
mtime = parseInt(fileData.mtime, 10),
@@ -1123,6 +1123,22 @@
return false;
}
+ // Firewall Blocked request?
+ if (result.status === 403) {
+ // Go home
+ this.changeDirectory('/');
+ OC.Notification.show(t('files', 'This operation is forbidden'));
+ return false;
+ }
+
+ // Did share service die or something else fail?
+ if (result.status === 500) {
+ // Go home
+ this.changeDirectory('/');
+ OC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'));
+ return false;
+ }
+
if (result.status === 404) {
// go back home
this.changeDirectory('/');
@@ -1197,36 +1213,34 @@
var etag = options.etag;
// get mime icon url
- OCA.Files.Files.getMimeIcon(mime, function(iconURL) {
- var previewURL,
- urlSpec = {};
- ready(iconURL); // set mimeicon URL
+ var iconURL = OC.MimeType.getIconUrl(mime);
+ var previewURL,
+ urlSpec = {};
+ ready(iconURL); // set mimeicon URL
- urlSpec.file = OCA.Files.Files.fixPath(path);
+ urlSpec.file = OCA.Files.Files.fixPath(path);
- if (etag){
- // use etag as cache buster
- urlSpec.c = etag;
- }
- else {
- console.warn('OCA.Files.FileList.lazyLoadPreview(): missing etag argument');
- }
+ if (etag){
+ // use etag as cache buster
+ urlSpec.c = etag;
+ } else {
+ console.warn('OCA.Files.FileList.lazyLoadPreview(): missing etag argument');
+ }
- previewURL = self.generatePreviewUrl(urlSpec);
- previewURL = previewURL.replace('(', '%28');
- previewURL = previewURL.replace(')', '%29');
-
- // preload image to prevent delay
- // this will make the browser cache the image
- var img = new Image();
- img.onload = function(){
- // if loading the preview image failed (no preview for the mimetype) then img.width will < 5
- if (img.width > 5) {
- ready(previewURL);
- }
- };
- img.src = previewURL;
- });
+ previewURL = self.generatePreviewUrl(urlSpec);
+ previewURL = previewURL.replace('(', '%28');
+ previewURL = previewURL.replace(')', '%29');
+
+ // preload image to prevent delay
+ // this will make the browser cache the image
+ var img = new Image();
+ img.onload = function(){
+ // if loading the preview image failed (no preview for the mimetype) then img.width will < 5
+ if (img.width > 5) {
+ ready(previewURL);
+ }
+ };
+ img.src = previewURL;
},
setDirectoryPermissions: function(permissions) {
@@ -1708,11 +1722,13 @@
if (this._filter && this.fileSummary.summary.totalDirs + this.fileSummary.summary.totalFiles === 0) {
this.$el.find('#filestable thead th').addClass('hidden');
this.$el.find('#emptycontent').addClass('hidden');
+ $('#searchresults').addClass('filter-empty');
if ( $('#searchresults').length === 0 || $('#searchresults').hasClass('hidden') ) {
this.$el.find('.nofilterresults').removeClass('hidden').
find('p').text(t('files', "No entries in this folder match '{filter}'", {filter:this._filter}, null, {'escape': false}));
}
} else {
+ $('#searchresults').removeClass('filter-empty');
this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty);
if (!this.$el.find('.mask').exists()) {
this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 44868e78bd0..1b498769dd6 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -163,18 +163,14 @@
return OC.filePath('files', 'ajax', action + '.php') + q;
},
+ /**
+ * Fetch the icon url for the mimetype
+ * @param {string} mime The mimetype
+ * @param {Files~mimeicon} ready Function to call when mimetype is retrieved
+ * @deprecated use OC.MimeType.getIconUrl(mime)
+ */
getMimeIcon: function(mime, ready) {
- if (Files.getMimeIcon.cache[mime]) {
- ready(Files.getMimeIcon.cache[mime]);
- } else {
- $.get( OC.filePath('files','ajax','mimeicon.php'), {mime: mime}, function(path) {
- if(OC.Util.hasSVGSupport()){
- path = path.substr(0, path.length-4) + '.svg';
- }
- Files.getMimeIcon.cache[mime]=path;
- ready(Files.getMimeIcon.cache[mime]);
- });
- }
+ ready(OC.MimeType.getIconUrl(mime));
},
/**
@@ -211,7 +207,6 @@
* Initialize the files view
*/
initialize: function() {
- Files.getMimeIcon.cache = {};
Files.bindKeyboardShortcuts(document, $);
// TODO: move file list related code (upload) to OCA.Files.FileList
diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js
index 2b2359f9e98..297ebd60484 100644
--- a/apps/files/l10n/ast.js
+++ b/apps/files/l10n/ast.js
@@ -42,8 +42,12 @@ OC.L10N.register(
"Delete" : "Desaniciar",
"Disconnect storage" : "Desconeutar almacenamientu",
"Unshare" : "Dexar de compartir",
+ "No permission to delete" : "Ensin permisos pa desaniciar",
"Download" : "Descargar",
+ "Select" : "Esbillar",
"Pending" : "Pendiente",
+ "Unable to determine date" : "Imposible determinar la fecha",
+ "This operation is forbidden" : "La operación ta prohibida",
"Error moving file." : "Fallu moviendo'l ficheru.",
"Error moving file" : "Fallu moviendo'l ficheru",
"Error" : "Fallu",
diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json
index 23f78d08323..b242d62a521 100644
--- a/apps/files/l10n/ast.json
+++ b/apps/files/l10n/ast.json
@@ -40,8 +40,12 @@
"Delete" : "Desaniciar",
"Disconnect storage" : "Desconeutar almacenamientu",
"Unshare" : "Dexar de compartir",
+ "No permission to delete" : "Ensin permisos pa desaniciar",
"Download" : "Descargar",
+ "Select" : "Esbillar",
"Pending" : "Pendiente",
+ "Unable to determine date" : "Imposible determinar la fecha",
+ "This operation is forbidden" : "La operación ta prohibida",
"Error moving file." : "Fallu moviendo'l ficheru.",
"Error moving file" : "Fallu moviendo'l ficheru",
"Error" : "Fallu",
diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js
index 9c0d27d9f44..39f0a9e6958 100644
--- a/apps/files/l10n/cs_CZ.js
+++ b/apps/files/l10n/cs_CZ.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Vybrat",
"Pending" : "Nevyřízené",
"Unable to determine date" : "Nelze určit datum",
+ "This operation is forbidden" : "Tato operace je zakázána",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte prosím logy nebo kontaktujte svého správce systému",
"Error moving file." : "Chyba při přesunu souboru.",
"Error moving file" : "Chyba při přesunu souboru",
"Error" : "Chyba",
@@ -62,7 +64,9 @@ OC.L10N.register(
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů"],
"\"{name}\" is an invalid file name." : "\"{name}\" je neplatným názvem souboru.",
"File name cannot be empty." : "Název souboru nemůže být prázdný řetězec.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Úložiště uživatele {owner} je zaplněné, soubory nelze aktualizovat a synchronizovat!",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše úložiště je plné, nelze aktualizovat ani synchronizovat soubory.",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úložiště uživatele {owner} je téměř plné ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložiště je téměř plné ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'"],
"{dirs} and {files}" : "{dirs} a {files}",
diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json
index 663161c5e42..8742662c1da 100644
--- a/apps/files/l10n/cs_CZ.json
+++ b/apps/files/l10n/cs_CZ.json
@@ -45,6 +45,8 @@
"Select" : "Vybrat",
"Pending" : "Nevyřízené",
"Unable to determine date" : "Nelze určit datum",
+ "This operation is forbidden" : "Tato operace je zakázána",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte prosím logy nebo kontaktujte svého správce systému",
"Error moving file." : "Chyba při přesunu souboru.",
"Error moving file" : "Chyba při přesunu souboru",
"Error" : "Chyba",
@@ -60,7 +62,9 @@
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů"],
"\"{name}\" is an invalid file name." : "\"{name}\" je neplatným názvem souboru.",
"File name cannot be empty." : "Název souboru nemůže být prázdný řetězec.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Úložiště uživatele {owner} je zaplněné, soubory nelze aktualizovat a synchronizovat!",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše úložiště je plné, nelze aktualizovat ani synchronizovat soubory.",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úložiště uživatele {owner} je téměř plné ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložiště je téměř plné ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'"],
"{dirs} and {files}" : "{dirs} a {files}",
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index 8235311a5a7..e039bddf6a7 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Vælg",
"Pending" : "Afventer",
"Unable to determine date" : "Kan ikke fastslå datoen",
+ "This operation is forbidden" : "Denne operation er forbudt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig - tjek venligst loggene eller kontakt administratoren",
"Error moving file." : "Fejl ved flytning af fil",
"Error moving file" : "Fejl ved flytning af fil",
"Error" : "Fejl",
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index 449408fa9b1..f8e5b4af457 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -45,6 +45,8 @@
"Select" : "Vælg",
"Pending" : "Afventer",
"Unable to determine date" : "Kan ikke fastslå datoen",
+ "This operation is forbidden" : "Denne operation er forbudt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig - tjek venligst loggene eller kontakt administratoren",
"Error moving file." : "Fejl ved flytning af fil",
"Error moving file" : "Fejl ved flytning af fil",
"Error" : "Fejl",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 3e636d96275..00d88d52918 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Auswählen",
"Pending" : "Ausstehend",
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
+ "This operation is forbidden" : "Diese Operation ist nicht erlaubt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfe die Logdateien oder kontaktiere den Administrator",
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index 6b7be416ed3..7d75fb70ead 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -45,6 +45,8 @@
"Select" : "Auswählen",
"Pending" : "Ausstehend",
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
+ "This operation is forbidden" : "Diese Operation ist nicht erlaubt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfe die Logdateien oder kontaktiere den Administrator",
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index b9578f9ac88..69699135b8f 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Auswählen",
"Pending" : "Ausstehend",
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
+ "This operation is forbidden" : "Diese Operation ist nicht erlaubt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator",
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 7595fced712..2a1e548ec5f 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -45,6 +45,8 @@
"Select" : "Auswählen",
"Pending" : "Ausstehend",
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
+ "This operation is forbidden" : "Diese Operation ist nicht erlaubt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator",
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index 10f7326d928..255f70f29e5 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Επιλογή",
"Pending" : "Εκκρεμεί",
"Unable to determine date" : "Αδυναμία προσδιορισμού ημερομηνίας ",
+ "This operation is forbidden" : "Αυτή η ενέργεια απαγορεύεται",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλώ ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή",
"Error moving file." : "Σφάλμα κατά τη μετακίνηση του αρχείου.",
"Error moving file" : "Σφάλμα κατά τη μετακίνηση του αρχείου",
"Error" : "Σφάλμα",
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index 8f3d92e53cf..2b72213e533 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -45,6 +45,8 @@
"Select" : "Επιλογή",
"Pending" : "Εκκρεμεί",
"Unable to determine date" : "Αδυναμία προσδιορισμού ημερομηνίας ",
+ "This operation is forbidden" : "Αυτή η ενέργεια απαγορεύεται",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλώ ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή",
"Error moving file." : "Σφάλμα κατά τη μετακίνηση του αρχείου.",
"Error moving file" : "Σφάλμα κατά τη μετακίνηση του αρχείου",
"Error" : "Σφάλμα",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 6add18226fc..c7409a25df4 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -42,11 +42,13 @@ OC.L10N.register(
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar almacenamiento",
"Unshare" : "Dejar de compartir",
- "No permission to delete" : "Ninguna autorización que borrar",
+ "No permission to delete" : "Permisos insuficientes para borrar",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendiente",
"Unable to determine date" : "No se pudo determinar la fecha",
+ "This operation is forbidden" : "Esta operación está prohibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador",
"Error moving file." : "Error al mover el archivo.",
"Error moving file" : "Error moviendo archivo",
"Error" : "Error",
@@ -62,13 +64,13 @@ OC.L10N.register(
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "El almacen de {owner} está lleno, ¡los archivos no se actualizarán ni sincronizarán más!",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "El almacén de {owner} está repleto, ¡los archivos no se actualizarán ni sincronizarán más!",
"Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡los archivos no se actualizarán ni sincronizarán más!",
- "Storage of {owner} is almost full ({usedSpacePercent}%)" : "El almacen de {owner} está casi lleno en un ({usedSpacePercent}%)",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "El almacén de {owner} está casi lleno en un ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Su almacenamiento está casi lleno ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["coincidencias '{filter}'","coincidencia '{filter}'"],
"{dirs} and {files}" : "{dirs} y {files}",
- "Favorited" : "Agregado a favoritos",
+ "Favorited" : "Agregado a Favoritos",
"Favorite" : "Favorito",
"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",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index 7fbdb56ce3f..fc7a12fdf04 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -40,11 +40,13 @@
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar almacenamiento",
"Unshare" : "Dejar de compartir",
- "No permission to delete" : "Ninguna autorización que borrar",
+ "No permission to delete" : "Permisos insuficientes para borrar",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendiente",
"Unable to determine date" : "No se pudo determinar la fecha",
+ "This operation is forbidden" : "Esta operación está prohibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador",
"Error moving file." : "Error al mover el archivo.",
"Error moving file" : "Error moviendo archivo",
"Error" : "Error",
@@ -60,13 +62,13 @@
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
- "Storage of {owner} is full, files can not be updated or synced anymore!" : "El almacen de {owner} está lleno, ¡los archivos no se actualizarán ni sincronizarán más!",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "El almacén de {owner} está repleto, ¡los archivos no se actualizarán ni sincronizarán más!",
"Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡los archivos no se actualizarán ni sincronizarán más!",
- "Storage of {owner} is almost full ({usedSpacePercent}%)" : "El almacen de {owner} está casi lleno en un ({usedSpacePercent}%)",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "El almacén de {owner} está casi lleno en un ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Su almacenamiento está casi lleno ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["coincidencias '{filter}'","coincidencia '{filter}'"],
"{dirs} and {files}" : "{dirs} y {files}",
- "Favorited" : "Agregado a favoritos",
+ "Favorited" : "Agregado a Favoritos",
"Favorite" : "Favorito",
"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",
diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js
index 7eada9d7875..bf9e8574c28 100644
--- a/apps/files/l10n/et_EE.js
+++ b/apps/files/l10n/et_EE.js
@@ -42,10 +42,13 @@ OC.L10N.register(
"Delete" : "Kustuta",
"Disconnect storage" : "Ühenda andmehoidla lahti.",
"Unshare" : "Lõpeta jagamine",
+ "No permission to delete" : "Kustutamiseks pole õigusi",
"Download" : "Lae alla",
"Select" : "Vali",
"Pending" : "Ootel",
"Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud",
+ "This operation is forbidden" : "See toiming on keelatud",
+ "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga",
"Error moving file." : "Viga faili liigutamisel.",
"Error moving file" : "Viga faili eemaldamisel",
"Error" : "Viga",
@@ -60,11 +63,13 @@ OC.L10N.register(
"_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"],
"\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.",
"File name cannot be empty." : "Faili nimi ei saa olla tühi.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
"Your storage is full, files can not be updated or synced anymore!" : "Sinu andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
"Your storage is almost full ({usedSpacePercent}%)" : "Su andmemaht on peaaegu täis ({usedSpacePercent}%)",
"{dirs} and {files}" : "{dirs} ja {files}",
"Favorited" : "Lemmikud",
"Favorite" : "Lemmik",
+ "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>",
"A file or folder has been <strong>changed</strong>" : "Fail või kataloog on <strong>muudetud</strong>",
"A file or folder has been <strong>deleted</strong>" : "Fail või kataloog on <strong>kustutatud</strong>",
@@ -85,6 +90,7 @@ OC.L10N.register(
"Maximum upload size" : "Maksimaalne üleslaadimise suurus",
"max. possible: " : "maks. võimalik: ",
"Save" : "Salvesta",
+ "Can not be edited from here due to insufficient permissions." : "Ei saa õiguste puudumise tõttu muuta.",
"Settings" : "Seaded",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Kasuta seda aadressi <a href=\"%s\" target=\"_blank\">oma failidele ligipääsuks WebDAV kaudu</a>",
diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json
index 342c43b5daf..40fa7efca6b 100644
--- a/apps/files/l10n/et_EE.json
+++ b/apps/files/l10n/et_EE.json
@@ -40,10 +40,13 @@
"Delete" : "Kustuta",
"Disconnect storage" : "Ühenda andmehoidla lahti.",
"Unshare" : "Lõpeta jagamine",
+ "No permission to delete" : "Kustutamiseks pole õigusi",
"Download" : "Lae alla",
"Select" : "Vali",
"Pending" : "Ootel",
"Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud",
+ "This operation is forbidden" : "See toiming on keelatud",
+ "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga",
"Error moving file." : "Viga faili liigutamisel.",
"Error moving file" : "Viga faili eemaldamisel",
"Error" : "Viga",
@@ -58,11 +61,13 @@
"_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"],
"\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.",
"File name cannot be empty." : "Faili nimi ei saa olla tühi.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
"Your storage is full, files can not be updated or synced anymore!" : "Sinu andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
"Your storage is almost full ({usedSpacePercent}%)" : "Su andmemaht on peaaegu täis ({usedSpacePercent}%)",
"{dirs} and {files}" : "{dirs} ja {files}",
"Favorited" : "Lemmikud",
"Favorite" : "Lemmik",
+ "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>",
"A file or folder has been <strong>changed</strong>" : "Fail või kataloog on <strong>muudetud</strong>",
"A file or folder has been <strong>deleted</strong>" : "Fail või kataloog on <strong>kustutatud</strong>",
@@ -83,6 +88,7 @@
"Maximum upload size" : "Maksimaalne üleslaadimise suurus",
"max. possible: " : "maks. võimalik: ",
"Save" : "Salvesta",
+ "Can not be edited from here due to insufficient permissions." : "Ei saa õiguste puudumise tõttu muuta.",
"Settings" : "Seaded",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Kasuta seda aadressi <a href=\"%s\" target=\"_blank\">oma failidele ligipääsuks WebDAV kaudu</a>",
diff --git a/apps/files/l10n/fi_FI.js b/apps/files/l10n/fi_FI.js
index cfd0b29b834..abeb0b26b23 100644
--- a/apps/files/l10n/fi_FI.js
+++ b/apps/files/l10n/fi_FI.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Valitse",
"Pending" : "Odottaa",
"Unable to determine date" : "Päivämäärän määrittäminen epäonnistui",
+ "This operation is forbidden" : "Tämä toiminto on kielletty",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.",
"Error moving file." : "Virhe tiedostoa siirrettäessä.",
"Error moving file" : "Virhe tiedostoa siirrettäessä",
"Error" : "Virhe",
diff --git a/apps/files/l10n/fi_FI.json b/apps/files/l10n/fi_FI.json
index a4852188af0..f67505268c7 100644
--- a/apps/files/l10n/fi_FI.json
+++ b/apps/files/l10n/fi_FI.json
@@ -45,6 +45,8 @@
"Select" : "Valitse",
"Pending" : "Odottaa",
"Unable to determine date" : "Päivämäärän määrittäminen epäonnistui",
+ "This operation is forbidden" : "Tämä toiminto on kielletty",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.",
"Error moving file." : "Virhe tiedostoa siirrettäessä.",
"Error moving file" : "Virhe tiedostoa siirrettäessä",
"Error" : "Virhe",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index 1b516707995..1d57bb79d07 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Sélectionner",
"Pending" : "En attente",
"Unable to determine date" : "Impossible de déterminer la date",
+ "This operation is forbidden" : "Cette opération est interdite",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur",
"Error moving file." : "Erreur lors du déplacement du fichier.",
"Error moving file" : "Erreur lors du déplacement du fichier",
"Error" : "Erreur",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index d0308da56e0..2b578466faa 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -45,6 +45,8 @@
"Select" : "Sélectionner",
"Pending" : "En attente",
"Unable to determine date" : "Impossible de déterminer la date",
+ "This operation is forbidden" : "Cette opération est interdite",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur",
"Error moving file." : "Erreur lors du déplacement du fichier.",
"Error moving file" : "Erreur lors du déplacement du fichier",
"Error" : "Erreur",
diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js
index 3eb5a9bc101..2ab8c9f94ab 100644
--- a/apps/files/l10n/gl.js
+++ b/apps/files/l10n/gl.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Seleccionar",
"Pending" : "Pendentes",
"Unable to determine date" : "Non é posíbel determinar a data",
+ "This operation is forbidden" : "Esta operación está prohibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador",
"Error moving file." : "Produciuse un erro ao mover o ficheiro.",
"Error moving file" : "Produciuse un erro ao mover o ficheiro",
"Error" : "Erro",
diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json
index f50da3bba01..0668c535aee 100644
--- a/apps/files/l10n/gl.json
+++ b/apps/files/l10n/gl.json
@@ -45,6 +45,8 @@
"Select" : "Seleccionar",
"Pending" : "Pendentes",
"Unable to determine date" : "Non é posíbel determinar a data",
+ "This operation is forbidden" : "Esta operación está prohibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador",
"Error moving file." : "Produciuse un erro ao mover o ficheiro.",
"Error moving file" : "Produciuse un erro ao mover o ficheiro",
"Error" : "Erro",
diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js
index 97190ddf47a..d11e9b7a4f6 100644
--- a/apps/files/l10n/id.js
+++ b/apps/files/l10n/id.js
@@ -42,10 +42,13 @@ OC.L10N.register(
"Delete" : "Hapus",
"Disconnect storage" : "Memutuskan penyimpaan",
"Unshare" : "Batalkan berbagi",
+ "No permission to delete" : "Tidak memiliki hak untuk menghapus",
"Download" : "Unduh",
"Select" : "Pilih",
- "Pending" : "Menunggu",
+ "Pending" : "Tertunda",
"Unable to determine date" : "Tidak dapat menentukan tanggal",
+ "This operation is forbidden" : "Operasi ini dilarang",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak",
"Error moving file." : "Kesalahan saat memindahkan berkas.",
"Error moving file" : "Kesalahan saat memindahkan berkas",
"Error" : "Kesalahan ",
@@ -61,7 +64,9 @@ OC.L10N.register(
"_Uploading %n file_::_Uploading %n files_" : ["Mengunggah %n berkas"],
"\"{name}\" is an invalid file name." : "\"{name}\" adalah nama berkas yang tidak sah.",
"File name cannot be empty." : "Nama berkas tidak boleh kosong.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Penyimpanan {owner} penuh, berkas tidak dapat diperbarui atau disinkronisasikan lagi!",
"Your storage is full, files can not be updated or synced anymore!" : "Ruang penyimpanan Anda penuh, berkas tidak dapat diperbarui atau disinkronkan lagi!",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Penyimpanan {owner} hampir penuh ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Ruang penyimpanan hampir penuh ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["cocok dengan '{filter}'"],
"{dirs} and {files}" : "{dirs} dan {files}",
diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json
index c3906da3c3d..f2b557205b7 100644
--- a/apps/files/l10n/id.json
+++ b/apps/files/l10n/id.json
@@ -40,10 +40,13 @@
"Delete" : "Hapus",
"Disconnect storage" : "Memutuskan penyimpaan",
"Unshare" : "Batalkan berbagi",
+ "No permission to delete" : "Tidak memiliki hak untuk menghapus",
"Download" : "Unduh",
"Select" : "Pilih",
- "Pending" : "Menunggu",
+ "Pending" : "Tertunda",
"Unable to determine date" : "Tidak dapat menentukan tanggal",
+ "This operation is forbidden" : "Operasi ini dilarang",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak",
"Error moving file." : "Kesalahan saat memindahkan berkas.",
"Error moving file" : "Kesalahan saat memindahkan berkas",
"Error" : "Kesalahan ",
@@ -59,7 +62,9 @@
"_Uploading %n file_::_Uploading %n files_" : ["Mengunggah %n berkas"],
"\"{name}\" is an invalid file name." : "\"{name}\" adalah nama berkas yang tidak sah.",
"File name cannot be empty." : "Nama berkas tidak boleh kosong.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Penyimpanan {owner} penuh, berkas tidak dapat diperbarui atau disinkronisasikan lagi!",
"Your storage is full, files can not be updated or synced anymore!" : "Ruang penyimpanan Anda penuh, berkas tidak dapat diperbarui atau disinkronkan lagi!",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Penyimpanan {owner} hampir penuh ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Ruang penyimpanan hampir penuh ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["cocok dengan '{filter}'"],
"{dirs} and {files}" : "{dirs} dan {files}",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index a766d07f1d2..2c57c0e5ac5 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Seleziona",
"Pending" : "In corso",
"Unable to determine date" : "Impossibile determinare la data",
+ "This operation is forbidden" : "Questa operazione è vietata",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore",
"Error moving file." : "Errore durante lo spostamento del file.",
"Error moving file" : "Errore durante lo spostamento del file",
"Error" : "Errore",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index aa9704291d1..4ebb6a360b5 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -45,6 +45,8 @@
"Select" : "Seleziona",
"Pending" : "In corso",
"Unable to determine date" : "Impossibile determinare la data",
+ "This operation is forbidden" : "Questa operazione è vietata",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore",
"Error moving file." : "Errore durante lo spostamento del file.",
"Error moving file" : "Errore durante lo spostamento del file",
"Error" : "Errore",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index ffe551e5e1b..154fc6d2106 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "選択",
"Pending" : "中断",
"Unable to determine date" : "更新日不明",
+ "This operation is forbidden" : "この操作は禁止されています",
+ "This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。",
"Error moving file." : "ファイル移動でエラー",
"Error moving file" : "ファイルの移動エラー",
"Error" : "エラー",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index dfee36655a3..e82b9dfc986 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -45,6 +45,8 @@
"Select" : "選択",
"Pending" : "中断",
"Unable to determine date" : "更新日不明",
+ "This operation is forbidden" : "この操作は禁止されています",
+ "This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。",
"Error moving file." : "ファイル移動でエラー",
"Error moving file" : "ファイルの移動エラー",
"Error" : "エラー",
diff --git a/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js
index 3870544e19b..b7741835c0f 100644
--- a/apps/files/l10n/nb_NO.js
+++ b/apps/files/l10n/nb_NO.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Velg",
"Pending" : "Ventende",
"Unable to determine date" : "Kan ikke fastslå datoen",
+ "This operation is forbidden" : "Operasjonen er forbudt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator",
"Error moving file." : "Feil ved flytting av fil.",
"Error moving file" : "Feil ved flytting av fil",
"Error" : "Feil",
diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json
index 28fb382255e..662d8433c21 100644
--- a/apps/files/l10n/nb_NO.json
+++ b/apps/files/l10n/nb_NO.json
@@ -45,6 +45,8 @@
"Select" : "Velg",
"Pending" : "Ventende",
"Unable to determine date" : "Kan ikke fastslå datoen",
+ "This operation is forbidden" : "Operasjonen er forbudt",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator",
"Error moving file." : "Feil ved flytting av fil.",
"Error moving file" : "Feil ved flytting av fil",
"Error" : "Feil",
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index b345b5ca04d..85bebde9c3e 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Selecteer",
"Pending" : "In behandeling",
"Unable to determine date" : "Kon datum niet vaststellen",
+ "This operation is forbidden" : "Deze taak is verboden",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder",
"Error moving file." : "Fout bij verplaatsen bestand.",
"Error moving file" : "Fout bij verplaatsen bestand",
"Error" : "Fout",
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index cb3a2eb1438..9094ed1b031 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -45,6 +45,8 @@
"Select" : "Selecteer",
"Pending" : "In behandeling",
"Unable to determine date" : "Kon datum niet vaststellen",
+ "This operation is forbidden" : "Deze taak is verboden",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder",
"Error moving file." : "Fout bij verplaatsen bestand.",
"Error moving file" : "Fout bij verplaatsen bestand",
"Error" : "Fout",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index f961bfd341d..583123252f9 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Selecionar",
"Pending" : "Pendente",
"Unable to determine date" : "Impossível determinar a data",
+ "This operation is forbidden" : "Esta operação é proibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador",
"Error moving file." : "Erro movendo o arquivo.",
"Error moving file" : "Erro movendo o arquivo",
"Error" : "Erro",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 29cc2ce34c4..31227d66f82 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -45,6 +45,8 @@
"Select" : "Selecionar",
"Pending" : "Pendente",
"Unable to determine date" : "Impossível determinar a data",
+ "This operation is forbidden" : "Esta operação é proibida",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador",
"Error moving file." : "Erro movendo o arquivo.",
"Error moving file" : "Erro movendo o arquivo",
"Error" : "Erro",
diff --git a/apps/files/l10n/pt_PT.js b/apps/files/l10n/pt_PT.js
index 09974a0321d..d1830fefd99 100644
--- a/apps/files/l10n/pt_PT.js
+++ b/apps/files/l10n/pt_PT.js
@@ -43,7 +43,7 @@ OC.L10N.register(
"Disconnect storage" : "Desconete o armazenamento",
"Unshare" : "Deixar de partilhar",
"No permission to delete" : "Não tem permissão para apagar",
- "Download" : "Transferir",
+ "Download" : "Descarregar",
"Select" : "Selecionar",
"Pending" : "Pendente",
"Unable to determine date" : "Impossível determinar a data",
diff --git a/apps/files/l10n/pt_PT.json b/apps/files/l10n/pt_PT.json
index 4172185936a..f0d2d6b74de 100644
--- a/apps/files/l10n/pt_PT.json
+++ b/apps/files/l10n/pt_PT.json
@@ -41,7 +41,7 @@
"Disconnect storage" : "Desconete o armazenamento",
"Unshare" : "Deixar de partilhar",
"No permission to delete" : "Não tem permissão para apagar",
- "Download" : "Transferir",
+ "Download" : "Descarregar",
"Select" : "Selecionar",
"Pending" : "Pendente",
"Unable to determine date" : "Impossível determinar a data",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 7ad52c51ee6..a2a7bc69c96 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Выбрать",
"Pending" : "Ожидание",
"Unable to determine date" : "Невозможно определить дату",
+ "This operation is forbidden" : "Операция запрещена",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Директория недоступна, пожалуйста проверьте журнал сообщений или свяжитесь с администратором",
"Error moving file." : "Ошибка при перемещении файла.",
"Error moving file" : "Ошибка при перемещении файла",
"Error" : "Ошибка",
@@ -77,7 +79,7 @@ OC.L10N.register(
"A file or folder has been <strong>deleted</strong>" : "<strong>Удален</strong> файл или каталог",
"A file or folder has been <strong>restored</strong>" : "<strong>Восстановлен</strong> файл или каталог",
"You created %1$s" : "Вы создали %1$s",
- "%2$s created %1$s" : "%2$s создано %1$s",
+ "%2$s created %1$s" : "%2$s создал %1$s",
"%1$s was created in a public folder" : "%1$s создан в общем каталоге",
"You changed %1$s" : "Вы изменили %1$s",
"%2$s changed %1$s" : "%2$s изменил %1$s",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 1772b494914..80487e989fb 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -45,6 +45,8 @@
"Select" : "Выбрать",
"Pending" : "Ожидание",
"Unable to determine date" : "Невозможно определить дату",
+ "This operation is forbidden" : "Операция запрещена",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Директория недоступна, пожалуйста проверьте журнал сообщений или свяжитесь с администратором",
"Error moving file." : "Ошибка при перемещении файла.",
"Error moving file" : "Ошибка при перемещении файла",
"Error" : "Ошибка",
@@ -75,7 +77,7 @@
"A file or folder has been <strong>deleted</strong>" : "<strong>Удален</strong> файл или каталог",
"A file or folder has been <strong>restored</strong>" : "<strong>Восстановлен</strong> файл или каталог",
"You created %1$s" : "Вы создали %1$s",
- "%2$s created %1$s" : "%2$s создано %1$s",
+ "%2$s created %1$s" : "%2$s создал %1$s",
"%1$s was created in a public folder" : "%1$s создан в общем каталоге",
"You changed %1$s" : "Вы изменили %1$s",
"%2$s changed %1$s" : "%2$s изменил %1$s",
diff --git a/apps/files/l10n/sk_SK.js b/apps/files/l10n/sk_SK.js
index a806979d086..809e9567b95 100644
--- a/apps/files/l10n/sk_SK.js
+++ b/apps/files/l10n/sk_SK.js
@@ -42,10 +42,12 @@ OC.L10N.register(
"Delete" : "Zmazať",
"Disconnect storage" : "Odpojiť úložisko",
"Unshare" : "Zrušiť zdieľanie",
+ "No permission to delete" : "Žiadne povolenie na odstránenie",
"Download" : "Sťahovanie",
"Select" : "Vybrať",
"Pending" : "Čaká",
"Unable to determine date" : "Nemožno určiť dátum",
+ "This operation is forbidden" : "Táto operácia je zakázaná",
"Error moving file." : "Chyba pri presune súboru.",
"Error moving file" : "Chyba pri presúvaní súboru",
"Error" : "Chyba",
@@ -98,6 +100,7 @@ OC.L10N.register(
"Folder" : "Priečinok",
"Upload" : "Nahrať",
"Cancel upload" : "Zrušiť nahrávanie",
+ "No files in here" : "Nie sú tu žiadne súbory",
"Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!",
"No entries found in this folder" : "V tomto priečinku nebolo nič nájdené",
"Select all" : "Vybrať všetko",
diff --git a/apps/files/l10n/sk_SK.json b/apps/files/l10n/sk_SK.json
index f16ccc8f241..2702076b234 100644
--- a/apps/files/l10n/sk_SK.json
+++ b/apps/files/l10n/sk_SK.json
@@ -40,10 +40,12 @@
"Delete" : "Zmazať",
"Disconnect storage" : "Odpojiť úložisko",
"Unshare" : "Zrušiť zdieľanie",
+ "No permission to delete" : "Žiadne povolenie na odstránenie",
"Download" : "Sťahovanie",
"Select" : "Vybrať",
"Pending" : "Čaká",
"Unable to determine date" : "Nemožno určiť dátum",
+ "This operation is forbidden" : "Táto operácia je zakázaná",
"Error moving file." : "Chyba pri presune súboru.",
"Error moving file" : "Chyba pri presúvaní súboru",
"Error" : "Chyba",
@@ -96,6 +98,7 @@
"Folder" : "Priečinok",
"Upload" : "Nahrať",
"Cancel upload" : "Zrušiť nahrávanie",
+ "No files in here" : "Nie sú tu žiadne súbory",
"Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!",
"No entries found in this folder" : "V tomto priečinku nebolo nič nájdené",
"Select all" : "Vybrať všetko",
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index a4a15c932e0..299bce880f5 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -42,7 +42,7 @@ OC.L10N.register(
"Delete" : "Izbriši",
"Disconnect storage" : "Odklopi shrambo",
"Unshare" : "Prekini souporabo",
- "No permission to delete" : "Nimate pravic za brisanje",
+ "No permission to delete" : "Ni ustreznih dovoljenj za brisanje tega stika",
"Download" : "Prejmi",
"Select" : "Izberi",
"Pending" : "V čakanju ...",
@@ -62,7 +62,9 @@ OC.L10N.register(
"_Uploading %n file_::_Uploading %n files_" : ["Posodabljanje %n datoteke","Posodabljanje %n datotek","Posodabljanje %n datotek","Posodabljanje %n datotek"],
"\"{name}\" is an invalid file name." : "\"{name}\" je neveljavno ime datoteke.",
"File name cannot be empty." : "Ime datoteke ne sme biti prazno polje.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Shramba uporabnika {owner} je polna, zato datotek ni več mogoče posodabljati in usklajevati!",
"Your storage is full, files can not be updated or synced anymore!" : "Shramba je povsem napolnjena. Datotek ni več mogoče posodabljati in usklajevati!",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Shramba uporabnika {owner} je polna ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)" : "Prostor za shranjevanje je skoraj do konca zaseden ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["se sklada s filtrom '{filter}'","se skladata s filtrom '{filter}'","se skladajo s filtrom '{filter}'","se skladajo s filtrom '{filter}'"],
"{dirs} and {files}" : "{dirs} in {files}",
@@ -71,6 +73,7 @@ OC.L10N.register(
"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>",
"A file or folder has been <strong>changed</strong>" : "Datoteka ali mapa je <strong>spremenjena</strong>.",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih </strong> datotek <em>(omogoči pretok)</em>",
"A file or folder has been <strong>deleted</strong>" : "Datoteka ali mapa je <strong>izbrisana</strong>.",
"A file or folder has been <strong>restored</strong>" : "Datoteka ali mapa je <strong>obnovljena</strong>.",
"You created %1$s" : "Ustvarili ste %1$s",
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index 9c6ed85e9a9..7e684c04efe 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -40,7 +40,7 @@
"Delete" : "Izbriši",
"Disconnect storage" : "Odklopi shrambo",
"Unshare" : "Prekini souporabo",
- "No permission to delete" : "Nimate pravic za brisanje",
+ "No permission to delete" : "Ni ustreznih dovoljenj za brisanje tega stika",
"Download" : "Prejmi",
"Select" : "Izberi",
"Pending" : "V čakanju ...",
@@ -60,7 +60,9 @@
"_Uploading %n file_::_Uploading %n files_" : ["Posodabljanje %n datoteke","Posodabljanje %n datotek","Posodabljanje %n datotek","Posodabljanje %n datotek"],
"\"{name}\" is an invalid file name." : "\"{name}\" je neveljavno ime datoteke.",
"File name cannot be empty." : "Ime datoteke ne sme biti prazno polje.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "Shramba uporabnika {owner} je polna, zato datotek ni več mogoče posodabljati in usklajevati!",
"Your storage is full, files can not be updated or synced anymore!" : "Shramba je povsem napolnjena. Datotek ni več mogoče posodabljati in usklajevati!",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Shramba uporabnika {owner} je polna ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)" : "Prostor za shranjevanje je skoraj do konca zaseden ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["se sklada s filtrom '{filter}'","se skladata s filtrom '{filter}'","se skladajo s filtrom '{filter}'","se skladajo s filtrom '{filter}'"],
"{dirs} and {files}" : "{dirs} in {files}",
@@ -69,6 +71,7 @@
"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>",
"A file or folder has been <strong>changed</strong>" : "Datoteka ali mapa je <strong>spremenjena</strong>.",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih </strong> datotek <em>(omogoči pretok)</em>",
"A file or folder has been <strong>deleted</strong>" : "Datoteka ali mapa je <strong>izbrisana</strong>.",
"A file or folder has been <strong>restored</strong>" : "Datoteka ali mapa je <strong>obnovljena</strong>.",
"You created %1$s" : "Ustvarili ste %1$s",
diff --git a/apps/files/l10n/th_TH.js b/apps/files/l10n/th_TH.js
index cc13af78f64..40af2bb490d 100644
--- a/apps/files/l10n/th_TH.js
+++ b/apps/files/l10n/th_TH.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "เลือก",
"Pending" : "อยู่ระหว่างดำเนินการ",
"Unable to determine date" : "ไม่สามารถกำหนดวัน",
+ "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม",
+ "This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ",
"Error moving file." : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error moving file" : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error" : "ข้อผิดพลาด",
diff --git a/apps/files/l10n/th_TH.json b/apps/files/l10n/th_TH.json
index b1b26261c7a..a6febf6fadf 100644
--- a/apps/files/l10n/th_TH.json
+++ b/apps/files/l10n/th_TH.json
@@ -45,6 +45,8 @@
"Select" : "เลือก",
"Pending" : "อยู่ระหว่างดำเนินการ",
"Unable to determine date" : "ไม่สามารถกำหนดวัน",
+ "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม",
+ "This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ",
"Error moving file." : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error moving file" : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error" : "ข้อผิดพลาด",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index a92d45e2481..dbc91ba15dc 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -47,6 +47,8 @@ OC.L10N.register(
"Select" : "Seç",
"Pending" : "Bekliyor",
"Unable to determine date" : "Tarih tespit edilemedi",
+ "This operation is forbidden" : "Bu işlem yasak",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin",
"Error moving file." : "Dosya taşıma hatası.",
"Error moving file" : "Dosya taşıma hatası",
"Error" : "Hata",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 1eb5534accb..eb967e2e3ec 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -45,6 +45,8 @@
"Select" : "Seç",
"Pending" : "Bekliyor",
"Unable to determine date" : "Tarih tespit edilemedi",
+ "This operation is forbidden" : "Bu işlem yasak",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin",
"Error moving file." : "Dosya taşıma hatası.",
"Error moving file" : "Dosya taşıma hatası",
"Error" : "Hata",
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index cf006f9c0d6..167897b57e5 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -47,6 +47,7 @@ OC.L10N.register(
"Select" : "Оберіть",
"Pending" : "Очікування",
"Unable to determine date" : "Неможливо визначити дату",
+ "This operation is forbidden" : "Ця операція заборонена",
"Error moving file." : "Помилка переміщення файлу.",
"Error moving file" : "Помилка переміщення файлу",
"Error" : "Помилка",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index 1a313865f7a..803d9887627 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -45,6 +45,7 @@
"Select" : "Оберіть",
"Pending" : "Очікування",
"Unable to determine date" : "Неможливо визначити дату",
+ "This operation is forbidden" : "Ця операція заборонена",
"Error moving file." : "Помилка переміщення файлу.",
"Error moving file" : "Помилка переміщення файлу",
"Error" : "Помилка",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 66b638df86f..76cbe4110a8 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -42,15 +42,19 @@ OC.L10N.register(
"Delete" : "删除",
"Disconnect storage" : "断开储存连接",
"Unshare" : "取消共享",
+ "No permission to delete" : "无权删除",
"Download" : "下载",
"Select" : "选择",
"Pending" : "等待",
"Unable to determine date" : "无法确定日期",
+ "This operation is forbidden" : "操作被禁止",
+ "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
"Error moving file." : "移动文件出错。",
"Error moving file" : "移动文件错误",
"Error" : "错误",
"Could not rename file" : "不能重命名文件",
"Error deleting file." : "删除文件出错。",
+ "No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”",
"Name" : "名称",
"Size" : "大小",
"Modified" : "修改日期",
@@ -60,13 +64,18 @@ OC.L10N.register(
"_Uploading %n file_::_Uploading %n files_" : ["上传 %n 个文件"],
"\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
"File name cannot be empty." : "文件名不能为空。",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满,文件将无法更新或同步!",
"Your storage is full, files can not be updated or synced anymore!" : "您的存储空间已满,文件将无法更新或同步!",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的存储空间即将用完 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的存储空间即将用完 ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["匹配“{filter}”"],
"{dirs} and {files}" : "{dirs} 和 {files}",
"Favorited" : "已收藏",
"Favorite" : "收藏",
+ "An error occurred while trying to update the tags" : "更新标签时出错",
"A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
"A file or folder has been <strong>changed</strong>" : "一个文件或文件夹已被<strong>修改</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "针对<strong>已收藏文件</strong>的新建和修改发送有限的通知 <em>(仅流)</em>",
"A file or folder has been <strong>deleted</strong>" : "一个文件或文件夹已被<strong>删除</strong>",
"A file or folder has been <strong>restored</strong>" : "一个文件或文件夹已经被 <strong>恢复</strong>",
"You created %1$s" : "您创建了%1$s",
@@ -85,6 +94,7 @@ OC.L10N.register(
"Maximum upload size" : "最大上传大小",
"max. possible: " : "最大允许: ",
"Save" : "保存",
+ "Can not be edited from here due to insufficient permissions." : "由于权限不足无法在此编辑。",
"Settings" : "设置",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\">通过 WebDAV 访问您的文件</a>",
@@ -95,7 +105,9 @@ OC.L10N.register(
"Folder" : "文件夹",
"Upload" : "上传",
"Cancel upload" : "取消上传",
+ "No files in here" : "无文件",
"Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!",
+ "No entries found in this folder" : "此文件夹中无项目",
"Select all" : "全部选择",
"Upload too large" : "上传文件过大",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "您正尝试上传的文件超过了此服务器可以上传的最大容量限制",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index eb27d81060d..44e763a42fd 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -40,15 +40,19 @@
"Delete" : "删除",
"Disconnect storage" : "断开储存连接",
"Unshare" : "取消共享",
+ "No permission to delete" : "无权删除",
"Download" : "下载",
"Select" : "选择",
"Pending" : "等待",
"Unable to determine date" : "无法确定日期",
+ "This operation is forbidden" : "操作被禁止",
+ "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
"Error moving file." : "移动文件出错。",
"Error moving file" : "移动文件错误",
"Error" : "错误",
"Could not rename file" : "不能重命名文件",
"Error deleting file." : "删除文件出错。",
+ "No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”",
"Name" : "名称",
"Size" : "大小",
"Modified" : "修改日期",
@@ -58,13 +62,18 @@
"_Uploading %n file_::_Uploading %n files_" : ["上传 %n 个文件"],
"\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
"File name cannot be empty." : "文件名不能为空。",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满,文件将无法更新或同步!",
"Your storage is full, files can not be updated or synced anymore!" : "您的存储空间已满,文件将无法更新或同步!",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的存储空间即将用完 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的存储空间即将用完 ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["匹配“{filter}”"],
"{dirs} and {files}" : "{dirs} 和 {files}",
"Favorited" : "已收藏",
"Favorite" : "收藏",
+ "An error occurred while trying to update the tags" : "更新标签时出错",
"A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
"A file or folder has been <strong>changed</strong>" : "一个文件或文件夹已被<strong>修改</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "针对<strong>已收藏文件</strong>的新建和修改发送有限的通知 <em>(仅流)</em>",
"A file or folder has been <strong>deleted</strong>" : "一个文件或文件夹已被<strong>删除</strong>",
"A file or folder has been <strong>restored</strong>" : "一个文件或文件夹已经被 <strong>恢复</strong>",
"You created %1$s" : "您创建了%1$s",
@@ -83,6 +92,7 @@
"Maximum upload size" : "最大上传大小",
"max. possible: " : "最大允许: ",
"Save" : "保存",
+ "Can not be edited from here due to insufficient permissions." : "由于权限不足无法在此编辑。",
"Settings" : "设置",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\">通过 WebDAV 访问您的文件</a>",
@@ -93,7 +103,9 @@
"Folder" : "文件夹",
"Upload" : "上传",
"Cancel upload" : "取消上传",
+ "No files in here" : "无文件",
"Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!",
+ "No entries found in this folder" : "此文件夹中无项目",
"Select all" : "全部选择",
"Upload too large" : "上传文件过大",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "您正尝试上传的文件超过了此服务器可以上传的最大容量限制",
diff --git a/apps/files/tests/activitytest.php b/apps/files/tests/activitytest.php
index 1f8d6330e51..4ab8ad11eae 100644
--- a/apps/files/tests/activitytest.php
+++ b/apps/files/tests/activitytest.php
@@ -1,11 +1,24 @@
<?php
/**
- * Copyright (c) 2015 Joas Schilling <nickvergessen@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
*
-*/
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
namespace OCA\Files\Tests;
diff --git a/apps/files/tests/controller/apicontrollertest.php b/apps/files/tests/controller/apicontrollertest.php
index 0ec38e0e2e7..35d00af75ba 100644
--- a/apps/files/tests/controller/apicontrollertest.php
+++ b/apps/files/tests/controller/apicontrollertest.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index aa44c92792d..316df0281e9 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -697,7 +697,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.findFileEl('One.txt').length).toEqual(1);
expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail')))
- .toEqual(OC.imagePath('core', 'filetypes/file.svg'));
+ .toEqual(OC.imagePath('core', 'filetypes/text.svg'));
});
});
describe('Moving files', function() {
@@ -816,7 +816,7 @@ describe('OCA.Files.FileList tests', function() {
expect(notificationStub.getCall(0).args[0]).toEqual('Error while moving file');
expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail')))
- .toEqual(OC.imagePath('core', 'filetypes/file.svg'));
+ .toEqual(OC.imagePath('core', 'filetypes/text.svg'));
});
});
describe('List rendering', function() {
@@ -1161,7 +1161,8 @@ describe('OCA.Files.FileList tests', function() {
var fileData = {
type: 'file',
name: 'test dir',
- icon: OC.webroot + '/core/img/filetypes/application-pdf.svg'
+ icon: OC.webroot + '/core/img/filetypes/application-pdf.svg',
+ mimetype: 'application/pdf'
};
var $tr = fileList.add(fileData);
var $imgDiv = $tr.find('td.filename .thumbnail');
@@ -1279,6 +1280,28 @@ describe('OCA.Files.FileList tests', function() {
fakeServer.respond();
expect(fileList.getCurrentDirectory()).toEqual('/');
});
+ it('switches to root dir when current directory is forbidden', function() {
+ fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [
+ 403, {
+ "Content-Type": "application/json"
+ },
+ ''
+ ]);
+ fileList.changeDirectory('/unexist');
+ fakeServer.respond();
+ expect(fileList.getCurrentDirectory()).toEqual('/');
+ });
+ it('switches to root dir when current directory is unavailable', function() {
+ fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [
+ 500, {
+ "Content-Type": "application/json"
+ },
+ ''
+ ]);
+ fileList.changeDirectory('/unexist');
+ fakeServer.respond();
+ expect(fileList.getCurrentDirectory()).toEqual('/');
+ });
it('shows mask before loading file list then hides it at the end', function() {
var showMaskStub = sinon.stub(fileList, 'showMask');
var hideMaskStub = sinon.stub(fileList, 'hideMask');
diff --git a/apps/files/tests/service/tagservice.php b/apps/files/tests/service/tagservice.php
index 2b5d1e5ec34..147e698aaaa 100644
--- a/apps/files/tests/service/tagservice.php
+++ b/apps/files/tests/service/tagservice.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_external/ajax/applicable.php b/apps/files_external/ajax/applicable.php
index b41f2e0c0df..1b93cc3a1aa 100644
--- a/apps/files_external/ajax/applicable.php
+++ b/apps/files_external/ajax/applicable.php
@@ -2,7 +2,6 @@
/**
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files_external/ajax/dropbox.php b/apps/files_external/ajax/dropbox.php
index 495387b45bb..55dc417b73a 100644
--- a/apps/files_external/ajax/dropbox.php
+++ b/apps/files_external/ajax/dropbox.php
@@ -3,7 +3,6 @@
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Volkan Gezer <volkangezer@gmail.com>
diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php
index cc64e298b96..66897eba3d3 100644
--- a/apps/files_external/appinfo/app.php
+++ b/apps/files_external/appinfo/app.php
@@ -6,7 +6,6 @@
* @author j-ed <juergen@eisfair.org>
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Philipp Kapfer <philipp.kapfer@gmx.at>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <rmccorkell@karoshi.org.uk>
diff --git a/apps/files_external/appinfo/routes.php b/apps/files_external/appinfo/routes.php
index 8c6dff7a901..97eb1353b1e 100644
--- a/apps/files_external/appinfo/routes.php
+++ b/apps/files_external/appinfo/routes.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Ross Nicoll <jrn@jrn.me.uk>
diff --git a/apps/files_external/l10n/ar.js b/apps/files_external/l10n/ar.js
index a4ded22fae3..174b0d1d547 100644
--- a/apps/files_external/l10n/ar.js
+++ b/apps/files_external/l10n/ar.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"files_external",
{
+ "Local" : "محلي",
"Location" : "المكان",
"Key" : "المفتاح",
"Secret" : "سر",
diff --git a/apps/files_external/l10n/ar.json b/apps/files_external/l10n/ar.json
index 8900ee04f9d..582813959dc 100644
--- a/apps/files_external/l10n/ar.json
+++ b/apps/files_external/l10n/ar.json
@@ -1,4 +1,5 @@
{ "translations": {
+ "Local" : "محلي",
"Location" : "المكان",
"Key" : "المفتاح",
"Secret" : "سر",
diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js
index f2e86b5748c..4698dd915ac 100644
--- a/apps/files_external/l10n/cs_CZ.js
+++ b/apps/files_external/l10n/cs_CZ.js
@@ -55,6 +55,11 @@ OC.L10N.register(
"Personal" : "Osobní",
"System" : "Systém",
"Enable encryption" : "Povolit šifrování",
+ "Enable previews" : "Povolit náhledy",
+ "Check for changes" : "Zkontrolovat změny",
+ "Never" : "Nikdy",
+ "Once every direct access" : "Jednou pro každý přímý přístup",
+ "Every time the filesystem is used" : "Pokaždé když je použit souborový systém",
"All users. Type to select user or group." : "Všichni uživatelé. Začněte psát pro výběr uživatelů a skupin.",
"(group)" : "(skupina)",
"Saved" : "Uloženo",
diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json
index b96a2e52274..53b2162dafe 100644
--- a/apps/files_external/l10n/cs_CZ.json
+++ b/apps/files_external/l10n/cs_CZ.json
@@ -53,6 +53,11 @@
"Personal" : "Osobní",
"System" : "Systém",
"Enable encryption" : "Povolit šifrování",
+ "Enable previews" : "Povolit náhledy",
+ "Check for changes" : "Zkontrolovat změny",
+ "Never" : "Nikdy",
+ "Once every direct access" : "Jednou pro každý přímý přístup",
+ "Every time the filesystem is used" : "Pokaždé když je použit souborový systém",
"All users. Type to select user or group." : "Všichni uživatelé. Začněte psát pro výběr uživatelů a skupin.",
"(group)" : "(skupina)",
"Saved" : "Uloženo",
diff --git a/apps/files_external/l10n/et_EE.js b/apps/files_external/l10n/et_EE.js
index 07bdfa7cdd3..bc43609aca2 100644
--- a/apps/files_external/l10n/et_EE.js
+++ b/apps/files_external/l10n/et_EE.js
@@ -43,19 +43,35 @@ OC.L10N.register(
"Username as share" : "Kasutajanimi kui jagamine",
"URL" : "URL",
"Secure https://" : "Turvaline https://",
+ "SFTP with secret key login" : "SFTP koos salajase võtmega logimisega",
+ "Public key" : "Avalik võti",
+ "Storage with id \"%i\" not found" : "Salvestuskohta ID-ga \"%i\" ei leitud",
+ "Invalid mount point" : "Vigane ühenduspunkt",
+ "Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"",
"Access granted" : "Ligipääs on antud",
"Error configuring Dropbox storage" : "Viga Dropboxi salvestusruumi seadistamisel",
"Grant access" : "Anna ligipääs",
"Error configuring Google Drive storage" : "Viga Google Drive'i salvestusruumi seadistamisel",
"Personal" : "Isiklik",
"System" : "Süsteem",
+ "Enable encryption" : "Luba krüpteerimine",
+ "Enable previews" : "Luba eelvaated",
+ "Check for changes" : "Otsi uuendusi",
+ "Never" : "Mitte kunagi",
+ "Once every direct access" : "Kord iga otsese pöördumise korral",
+ "Every time the filesystem is used" : "Iga kord, kui failisüsteemi kasutatakse",
"All users. Type to select user or group." : "Kõik kasutajad. Kirjuta, et valida kasutaja või grupp.",
"(group)" : "(grupp)",
"Saved" : "Salvestatud",
+ "Generate keys" : "Loo võtmed",
+ "Error generating key pair" : "Viga võtmepaari loomisel",
"<b>Note:</b> " : "<b>Märkus:</b>",
+ "and" : "ja",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Märkus:</b> cURL tugi puudub PHP paigalduses. FTP %s hoidla ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata cURL tugi.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Märkus:</b> FTP tugi puudub PHP paigalduses. FTP %s hoidla ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata FTP tugi.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Märkus:</b> \"%s\" pole paigaldatud. Hoidla %s ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata vajalik tugi.",
+ "No external storage configured" : "Välist salvestuskohta pole seadistatud",
+ "You can add external storages in the personal settings" : "Sa võid lisada välise salvestuskoha isiklikes seadetes",
"Name" : "Nimi",
"Storage type" : "Andmehoidla tüüp",
"Scope" : "Skoop",
@@ -64,6 +80,7 @@ OC.L10N.register(
"Configuration" : "Seadistamine",
"Available for" : "Saadaval",
"Add storage" : "Lisa andmehoidla",
+ "Advanced settings" : "Lisavalikud",
"Delete" : "Kustuta",
"Enable User External Storage" : "Luba kasutajatele väline salvestamine",
"Allow users to mount the following external storage" : "Võimalda kasutajatel ühendada järgmist välist andmehoidlat"
diff --git a/apps/files_external/l10n/et_EE.json b/apps/files_external/l10n/et_EE.json
index 11592f9e9a7..4870b55afb3 100644
--- a/apps/files_external/l10n/et_EE.json
+++ b/apps/files_external/l10n/et_EE.json
@@ -41,19 +41,35 @@
"Username as share" : "Kasutajanimi kui jagamine",
"URL" : "URL",
"Secure https://" : "Turvaline https://",
+ "SFTP with secret key login" : "SFTP koos salajase võtmega logimisega",
+ "Public key" : "Avalik võti",
+ "Storage with id \"%i\" not found" : "Salvestuskohta ID-ga \"%i\" ei leitud",
+ "Invalid mount point" : "Vigane ühenduspunkt",
+ "Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"",
"Access granted" : "Ligipääs on antud",
"Error configuring Dropbox storage" : "Viga Dropboxi salvestusruumi seadistamisel",
"Grant access" : "Anna ligipääs",
"Error configuring Google Drive storage" : "Viga Google Drive'i salvestusruumi seadistamisel",
"Personal" : "Isiklik",
"System" : "Süsteem",
+ "Enable encryption" : "Luba krüpteerimine",
+ "Enable previews" : "Luba eelvaated",
+ "Check for changes" : "Otsi uuendusi",
+ "Never" : "Mitte kunagi",
+ "Once every direct access" : "Kord iga otsese pöördumise korral",
+ "Every time the filesystem is used" : "Iga kord, kui failisüsteemi kasutatakse",
"All users. Type to select user or group." : "Kõik kasutajad. Kirjuta, et valida kasutaja või grupp.",
"(group)" : "(grupp)",
"Saved" : "Salvestatud",
+ "Generate keys" : "Loo võtmed",
+ "Error generating key pair" : "Viga võtmepaari loomisel",
"<b>Note:</b> " : "<b>Märkus:</b>",
+ "and" : "ja",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Märkus:</b> cURL tugi puudub PHP paigalduses. FTP %s hoidla ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata cURL tugi.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Märkus:</b> FTP tugi puudub PHP paigalduses. FTP %s hoidla ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata FTP tugi.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Märkus:</b> \"%s\" pole paigaldatud. Hoidla %s ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata vajalik tugi.",
+ "No external storage configured" : "Välist salvestuskohta pole seadistatud",
+ "You can add external storages in the personal settings" : "Sa võid lisada välise salvestuskoha isiklikes seadetes",
"Name" : "Nimi",
"Storage type" : "Andmehoidla tüüp",
"Scope" : "Skoop",
@@ -62,6 +78,7 @@
"Configuration" : "Seadistamine",
"Available for" : "Saadaval",
"Add storage" : "Lisa andmehoidla",
+ "Advanced settings" : "Lisavalikud",
"Delete" : "Kustuta",
"Enable User External Storage" : "Luba kasutajatele väline salvestamine",
"Allow users to mount the following external storage" : "Võimalda kasutajatel ühendada järgmist välist andmehoidlat"
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index f56418616bc..9877d2b2407 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -38,7 +38,7 @@ OC.L10N.register(
"Service Name (required for OpenStack Object Storage)" : "Nom du service (requis pour le stockage OpenStack)",
"URL of identity endpoint (required for OpenStack Object Storage)" : "URL du point d'accès d'identité (requis pour le stockage OpenStack)",
"Timeout of HTTP requests in seconds" : "Délai d'attente maximal des requêtes HTTP en secondes",
- "Share" : "Partager",
+ "Share" : "Partage",
"SMB / CIFS using OC login" : "SMB / CIFS en utilisant les identifiants OC",
"Username as share" : "Nom d'utilisateur comme nom de partage",
"URL" : "URL",
@@ -71,7 +71,7 @@ OC.L10N.register(
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> \"%s\" n'est pas installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
"No external storage configured" : "Aucun stockage externe configuré",
- "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes dans les paramètres personnels",
+ "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels",
"Name" : "Nom",
"Storage type" : "Type de stockage",
"Scope" : "Portée",
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index 9a283e2b78f..22c5106b44a 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -36,7 +36,7 @@
"Service Name (required for OpenStack Object Storage)" : "Nom du service (requis pour le stockage OpenStack)",
"URL of identity endpoint (required for OpenStack Object Storage)" : "URL du point d'accès d'identité (requis pour le stockage OpenStack)",
"Timeout of HTTP requests in seconds" : "Délai d'attente maximal des requêtes HTTP en secondes",
- "Share" : "Partager",
+ "Share" : "Partage",
"SMB / CIFS using OC login" : "SMB / CIFS en utilisant les identifiants OC",
"Username as share" : "Nom d'utilisateur comme nom de partage",
"URL" : "URL",
@@ -69,7 +69,7 @@
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> \"%s\" n'est pas installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.",
"No external storage configured" : "Aucun stockage externe configuré",
- "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes dans les paramètres personnels",
+ "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels",
"Name" : "Nom",
"Storage type" : "Type de stockage",
"Scope" : "Portée",
diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js
index ff582a863e9..7f153b9f49a 100644
--- a/apps/files_external/l10n/id.js
+++ b/apps/files_external/l10n/id.js
@@ -43,6 +43,7 @@ OC.L10N.register(
"Username as share" : "Nama pengguna berbagi",
"URL" : "URL",
"Secure https://" : "Secure https://",
+ "SFTP with secret key login" : "SFTP dengan kunci rahasia masuk",
"Public key" : "Kunci Public",
"Storage with id \"%i\" not found" : "Penyimpanan dengan id \"%i\" tidak ditemukan",
"Invalid mount point" : "Mount point salah",
@@ -54,6 +55,11 @@ OC.L10N.register(
"Personal" : "Pribadi",
"System" : "Sistem",
"Enable encryption" : "Aktifkan enkripsi",
+ "Enable previews" : "Aktifkan pratinjau",
+ "Check for changes" : "Periksa perubahan",
+ "Never" : "Jangan pernah",
+ "Once every direct access" : "Setiap kali akses langsung",
+ "Every time the filesystem is used" : "Setiap kali sistem berkas digunakan",
"All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.",
"(group)" : "(grup)",
"Saved" : "Disimpan",
diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json
index 2c1c450e9af..205ac8b210b 100644
--- a/apps/files_external/l10n/id.json
+++ b/apps/files_external/l10n/id.json
@@ -41,6 +41,7 @@
"Username as share" : "Nama pengguna berbagi",
"URL" : "URL",
"Secure https://" : "Secure https://",
+ "SFTP with secret key login" : "SFTP dengan kunci rahasia masuk",
"Public key" : "Kunci Public",
"Storage with id \"%i\" not found" : "Penyimpanan dengan id \"%i\" tidak ditemukan",
"Invalid mount point" : "Mount point salah",
@@ -52,6 +53,11 @@
"Personal" : "Pribadi",
"System" : "Sistem",
"Enable encryption" : "Aktifkan enkripsi",
+ "Enable previews" : "Aktifkan pratinjau",
+ "Check for changes" : "Periksa perubahan",
+ "Never" : "Jangan pernah",
+ "Once every direct access" : "Setiap kali akses langsung",
+ "Every time the filesystem is used" : "Setiap kali sistem berkas digunakan",
"All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.",
"(group)" : "(grup)",
"Saved" : "Disimpan",
diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js
index 7abf8067b6d..9181fbb4e3a 100644
--- a/apps/files_external/l10n/ja.js
+++ b/apps/files_external/l10n/ja.js
@@ -54,6 +54,7 @@ OC.L10N.register(
"Personal" : "個人",
"System" : "システム",
"Enable encryption" : "暗号化を有効に",
+ "Check for changes" : "変更点を確認",
"All users. Type to select user or group." : "すべてのユーザー。ユーザー、グループを追加",
"(group)" : "(グループ)",
"Saved" : "保存されました",
diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json
index 6da6fe15b12..19a986bfb99 100644
--- a/apps/files_external/l10n/ja.json
+++ b/apps/files_external/l10n/ja.json
@@ -52,6 +52,7 @@
"Personal" : "個人",
"System" : "システム",
"Enable encryption" : "暗号化を有効に",
+ "Check for changes" : "変更点を確認",
"All users. Type to select user or group." : "すべてのユーザー。ユーザー、グループを追加",
"(group)" : "(グループ)",
"Saved" : "保存されました",
diff --git a/apps/files_external/l10n/lb.js b/apps/files_external/l10n/lb.js
index eb46704c970..4f18f5b6e39 100644
--- a/apps/files_external/l10n/lb.js
+++ b/apps/files_external/l10n/lb.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"files_external",
{
"Location" : "Uert",
+ "Port" : "Port",
"Region" : "Regioun",
"Host" : "Host",
"Username" : "Benotzernumm",
diff --git a/apps/files_external/l10n/lb.json b/apps/files_external/l10n/lb.json
index a1e3e397636..a9acd181800 100644
--- a/apps/files_external/l10n/lb.json
+++ b/apps/files_external/l10n/lb.json
@@ -1,5 +1,6 @@
{ "translations": {
"Location" : "Uert",
+ "Port" : "Port",
"Region" : "Regioun",
"Host" : "Host",
"Username" : "Benotzernumm",
diff --git a/apps/files_external/l10n/nb_NO.js b/apps/files_external/l10n/nb_NO.js
index 1cb5f7a52da..8faf9719fe7 100644
--- a/apps/files_external/l10n/nb_NO.js
+++ b/apps/files_external/l10n/nb_NO.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"files_external",
{
"Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Henting av henvendelsessymboler feilet. Sjekk at app-nøkkelen og hemmeligheten din for Dropbox stemmer.",
- "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Henting adgangssymboler feilet. Sjekk at app-nøkkelen og hemmeligheten din for Dropbox stemmer.",
+ "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Henting av adgangssymboler feilet. Sjekk at app-nøkkelen og hemmeligheten din for Dropbox stemmer.",
"Please provide a valid Dropbox app key and secret." : "Vær vennlig å oppgi gyldig Dropbox appnøkkel og hemmelighet.",
"Step 1 failed. Exception: %s" : "Steg 1 feilet. Unntak: %s",
"Step 2 failed. Exception: %s" : "Steg 2 feilet. Unntak: %s",
diff --git a/apps/files_external/l10n/nb_NO.json b/apps/files_external/l10n/nb_NO.json
index 7855bc36279..c6d566b057a 100644
--- a/apps/files_external/l10n/nb_NO.json
+++ b/apps/files_external/l10n/nb_NO.json
@@ -1,6 +1,6 @@
{ "translations": {
"Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Henting av henvendelsessymboler feilet. Sjekk at app-nøkkelen og hemmeligheten din for Dropbox stemmer.",
- "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Henting adgangssymboler feilet. Sjekk at app-nøkkelen og hemmeligheten din for Dropbox stemmer.",
+ "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Henting av adgangssymboler feilet. Sjekk at app-nøkkelen og hemmeligheten din for Dropbox stemmer.",
"Please provide a valid Dropbox app key and secret." : "Vær vennlig å oppgi gyldig Dropbox appnøkkel og hemmelighet.",
"Step 1 failed. Exception: %s" : "Steg 1 feilet. Unntak: %s",
"Step 2 failed. Exception: %s" : "Steg 2 feilet. Unntak: %s",
diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js
index 32db7c48d55..d395470a794 100644
--- a/apps/files_external/l10n/ru.js
+++ b/apps/files_external/l10n/ru.js
@@ -1,8 +1,8 @@
OC.L10N.register(
"files_external",
{
- "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Получение токенов запроса прошло не успешно. Проверьте правильность вашего ключа и секрета Dropbox.",
- "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Получение токенов доступа прошло не успешно. Проверьте правильность вашего ключа и секрета Dropbox.",
+ "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Не удалось получить токен запроса. Проверьте правильность вашего ключа и секрета Dropbox.",
+ "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Не удалось получить токен доступа. Проверьте правильность вашего ключа и секрета Dropbox.",
"Please provide a valid Dropbox app key and secret." : "Укажите действительные ключ и секрет для Dropbox.",
"Step 1 failed. Exception: %s" : "Шаг 1 неудачен. Исключение: %s",
"Step 2 failed. Exception: %s" : "Шаг 2 неудачен. Исключение: %s",
diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json
index 8966cac2221..daeda1d8363 100644
--- a/apps/files_external/l10n/ru.json
+++ b/apps/files_external/l10n/ru.json
@@ -1,6 +1,6 @@
{ "translations": {
- "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Получение токенов запроса прошло не успешно. Проверьте правильность вашего ключа и секрета Dropbox.",
- "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Получение токенов доступа прошло не успешно. Проверьте правильность вашего ключа и секрета Dropbox.",
+ "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Не удалось получить токен запроса. Проверьте правильность вашего ключа и секрета Dropbox.",
+ "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Не удалось получить токен доступа. Проверьте правильность вашего ключа и секрета Dropbox.",
"Please provide a valid Dropbox app key and secret." : "Укажите действительные ключ и секрет для Dropbox.",
"Step 1 failed. Exception: %s" : "Шаг 1 неудачен. Исключение: %s",
"Step 2 failed. Exception: %s" : "Шаг 2 неудачен. Исключение: %s",
diff --git a/apps/files_external/l10n/sk_SK.js b/apps/files_external/l10n/sk_SK.js
index c20e140e24d..dc9b1ee84ef 100644
--- a/apps/files_external/l10n/sk_SK.js
+++ b/apps/files_external/l10n/sk_SK.js
@@ -44,12 +44,16 @@ OC.L10N.register(
"URL" : "URL",
"Secure https://" : "Zabezpečené https://",
"Public key" : "Verejný kľúč",
+ "Invalid mount point" : "Chybný prípojný bod",
"Access granted" : "Prístup povolený",
"Error configuring Dropbox storage" : "Chyba pri konfigurácii úložiska Dropbox",
"Grant access" : "Povoliť prístup",
"Error configuring Google Drive storage" : "Chyba pri konfigurácii úložiska Google drive",
"Personal" : "Osobné",
"System" : "Systém",
+ "Enable encryption" : "Povoliť šifrovanie",
+ "Enable previews" : "Povoliť náhľady",
+ "Never" : "Nikdy",
"All users. Type to select user or group." : "Všetci používatelia. Začnite písať pre výber používateľa alebo skupinu.",
"(group)" : "(skupina)",
"Saved" : "Uložené",
@@ -69,6 +73,7 @@ OC.L10N.register(
"Configuration" : "Nastavenia",
"Available for" : "K dispozícii pre",
"Add storage" : "Pridať úložisko",
+ "Advanced settings" : "Rozšírené nastavenia",
"Delete" : "Zmazať",
"Enable User External Storage" : "Povoliť externé úložisko",
"Allow users to mount the following external storage" : "Povoliť používateľom pripojiť tieto externé úložiská"
diff --git a/apps/files_external/l10n/sk_SK.json b/apps/files_external/l10n/sk_SK.json
index 0a9e2434739..fbc4c821210 100644
--- a/apps/files_external/l10n/sk_SK.json
+++ b/apps/files_external/l10n/sk_SK.json
@@ -42,12 +42,16 @@
"URL" : "URL",
"Secure https://" : "Zabezpečené https://",
"Public key" : "Verejný kľúč",
+ "Invalid mount point" : "Chybný prípojný bod",
"Access granted" : "Prístup povolený",
"Error configuring Dropbox storage" : "Chyba pri konfigurácii úložiska Dropbox",
"Grant access" : "Povoliť prístup",
"Error configuring Google Drive storage" : "Chyba pri konfigurácii úložiska Google drive",
"Personal" : "Osobné",
"System" : "Systém",
+ "Enable encryption" : "Povoliť šifrovanie",
+ "Enable previews" : "Povoliť náhľady",
+ "Never" : "Nikdy",
"All users. Type to select user or group." : "Všetci používatelia. Začnite písať pre výber používateľa alebo skupinu.",
"(group)" : "(skupina)",
"Saved" : "Uložené",
@@ -67,6 +71,7 @@
"Configuration" : "Nastavenia",
"Available for" : "K dispozícii pre",
"Add storage" : "Pridať úložisko",
+ "Advanced settings" : "Rozšírené nastavenia",
"Delete" : "Zmazať",
"Enable User External Storage" : "Povoliť externé úložisko",
"Allow users to mount the following external storage" : "Povoliť používateľom pripojiť tieto externé úložiská"
diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js
index 2938f681116..094414ed296 100644
--- a/apps/files_external/l10n/sl.js
+++ b/apps/files_external/l10n/sl.js
@@ -43,6 +43,7 @@ OC.L10N.register(
"Username as share" : "Uporabniško ime za souporabo",
"URL" : "Naslov URL",
"Secure https://" : "Varni način https://",
+ "SFTP with secret key login" : "Prijava preko protokola SFTP z geslom",
"Public key" : "Javni ključ",
"Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.",
"Invalid mount point" : "Neveljavna priklopna točka",
@@ -53,6 +54,12 @@ OC.L10N.register(
"Error configuring Google Drive storage" : "Napaka nastavljanja shrambe Google Drive",
"Personal" : "Osebno",
"System" : "Sistem",
+ "Enable encryption" : "Omogoči šifriranje",
+ "Enable previews" : "Omogoči predogled",
+ "Check for changes" : "Preveri za spremembe",
+ "Never" : "Nikoli",
+ "Once every direct access" : "Enkrat ob neposrednem dostopu",
+ "Every time the filesystem is used" : "Kadarkoli je datotečni sistem v uporabi",
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
"Saved" : "Shranjeno",
diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json
index c3282e859dd..4cebc8a1ac4 100644
--- a/apps/files_external/l10n/sl.json
+++ b/apps/files_external/l10n/sl.json
@@ -41,6 +41,7 @@
"Username as share" : "Uporabniško ime za souporabo",
"URL" : "Naslov URL",
"Secure https://" : "Varni način https://",
+ "SFTP with secret key login" : "Prijava preko protokola SFTP z geslom",
"Public key" : "Javni ključ",
"Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.",
"Invalid mount point" : "Neveljavna priklopna točka",
@@ -51,6 +52,12 @@
"Error configuring Google Drive storage" : "Napaka nastavljanja shrambe Google Drive",
"Personal" : "Osebno",
"System" : "Sistem",
+ "Enable encryption" : "Omogoči šifriranje",
+ "Enable previews" : "Omogoči predogled",
+ "Check for changes" : "Preveri za spremembe",
+ "Never" : "Nikoli",
+ "Once every direct access" : "Enkrat ob neposrednem dostopu",
+ "Every time the filesystem is used" : "Kadarkoli je datotečni sistem v uporabi",
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
"Saved" : "Shranjeno",
diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js
index 1045c03423f..0b2731fd911 100644
--- a/apps/files_external/l10n/zh_CN.js
+++ b/apps/files_external/l10n/zh_CN.js
@@ -31,6 +31,7 @@ OC.L10N.register(
"Error configuring Google Drive storage" : "配置Google Drive存储时出错",
"Personal" : "个人",
"System" : "系统",
+ "Enable encryption" : "启用加密",
"Saved" : "已保存",
"<b>Note:</b> " : "<b>注意:</b>",
"Name" : "名称",
diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json
index b6a826e4209..6d842332264 100644
--- a/apps/files_external/l10n/zh_CN.json
+++ b/apps/files_external/l10n/zh_CN.json
@@ -29,6 +29,7 @@
"Error configuring Google Drive storage" : "配置Google Drive存储时出错",
"Personal" : "个人",
"System" : "系统",
+ "Enable encryption" : "启用加密",
"Saved" : "已保存",
"<b>Note:</b> " : "<b>注意:</b>",
"Name" : "名称",
diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php
index 763cf59aa4c..02a02710a14 100644
--- a/apps/files_external/lib/amazons3.php
+++ b/apps/files_external/lib/amazons3.php
@@ -443,9 +443,12 @@ class AmazonS3 extends \OC\Files\Storage\Common {
$path = $this->normalizePath($path);
$metadata = array();
- if (!is_null($mtime)) {
- $metadata = array('lastmodified' => $mtime);
+ if (is_null($mtime)) {
+ $mtime = time();
}
+ $metadata = [
+ 'lastmodified' => gmdate(\Aws\Common\Enum\DateFormat::RFC1123, $mtime)
+ ];
$fileType = $this->filetype($path);
try {
@@ -453,22 +456,24 @@ class AmazonS3 extends \OC\Files\Storage\Common {
if ($fileType === 'dir' && ! $this->isRoot($path)) {
$path .= '/';
}
- $this->getConnection()->copyObject(array(
+ $this->getConnection()->copyObject([
'Bucket' => $this->bucket,
'Key' => $this->cleanKey($path),
'Metadata' => $metadata,
- 'CopySource' => $this->bucket . '/' . $path
- ));
+ 'CopySource' => $this->bucket . '/' . $path,
+ 'MetadataDirective' => 'REPLACE',
+ ]);
$this->testTimeout();
} else {
$mimeType = \OC_Helper::getMimetypeDetector()->detectPath($path);
- $this->getConnection()->putObject(array(
+ $this->getConnection()->putObject([
'Bucket' => $this->bucket,
'Key' => $this->cleanKey($path),
'Metadata' => $metadata,
'Body' => '',
- 'ContentType' => $mimeType
- ));
+ 'ContentType' => $mimeType,
+ 'MetadataDirective' => 'REPLACE',
+ ]);
$this->testTimeout();
}
} catch (S3Exception $e) {
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index 40e9a75790f..5dc6d06ae06 100644
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -124,10 +124,10 @@ class OC_Mount_Config {
self::addStorageIdToConfig($data['user']);
$user = \OC::$server->getUserManager()->get($data['user']);
if (!$user) {
- \OC_Log::write(
+ \OCP\Util::writeLog(
'files_external',
'Cannot init external mount points for non-existant user "' . $data['user'] . '".',
- \OC_Log::WARN
+ \OCP\Util::WARN
);
return;
}
diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php
index 541113fb530..8199d97eacb 100644
--- a/apps/files_external/lib/google.php
+++ b/apps/files_external/lib/google.php
@@ -5,6 +5,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Lukas Reschke <lukas@owncloud.com>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Philipp Kapfer <philipp.kapfer@gmx.at>
diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/sftp.php
index c457a87a6c7..cbe090311a9 100644
--- a/apps/files_external/lib/sftp.php
+++ b/apps/files_external/lib/sftp.php
@@ -251,7 +251,11 @@ class SFTP extends \OC\Files\Storage\Common {
*/
public function rmdir($path) {
try {
- return $this->getConnection()->delete($this->absPath($path), true);
+ $result = $this->getConnection()->delete($this->absPath($path), true);
+ // workaround: stray stat cache entry when deleting empty folders
+ // see https://github.com/phpseclib/phpseclib/issues/706
+ $this->getConnection()->clearStatCache();
+ return $result;
} catch (\Exception $e) {
return false;
}
diff --git a/apps/files_external/lib/sftp_key.php b/apps/files_external/lib/sftp_key.php
index d9bcadb9eb7..1bcea6bc96d 100644
--- a/apps/files_external/lib/sftp_key.php
+++ b/apps/files_external/lib/sftp_key.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Ross Nicoll <jrn@jrn.me.uk>
*
diff --git a/apps/files_external/lib/smb_oc.php b/apps/files_external/lib/smb_oc.php
index 9fd3aa3721f..52b73c46ff9 100644
--- a/apps/files_external/lib/smb_oc.php
+++ b/apps/files_external/lib/smb_oc.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/apps/files_external/list.php b/apps/files_external/list.php
index c97c0d8f653..b98db79de89 100644
--- a/apps/files_external/list.php
+++ b/apps/files_external/list.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_external/personal.php b/apps/files_external/personal.php
index b2ab32411f9..1ac0f65a1f0 100644
--- a/apps/files_external/personal.php
+++ b/apps/files_external/personal.php
@@ -4,6 +4,7 @@
* @author Lukas Reschke <lukas@owncloud.com>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_external/service/globalstoragesservice.php b/apps/files_external/service/globalstoragesservice.php
index 7df0f73f652..04445127b34 100644
--- a/apps/files_external/service/globalstoragesservice.php
+++ b/apps/files_external/service/globalstoragesservice.php
@@ -1,5 +1,7 @@
<?php
/**
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php
index 51eb4abcc00..930f994455e 100644
--- a/apps/files_external/service/storagesservice.php
+++ b/apps/files_external/service/storagesservice.php
@@ -1,5 +1,7 @@
<?php
/**
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_external/settings.php b/apps/files_external/settings.php
index daf205d3d57..6db68713d98 100644
--- a/apps/files_external/settings.php
+++ b/apps/files_external/settings.php
@@ -6,6 +6,7 @@
* @author Lukas Reschke <lukas@owncloud.com>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_external/tests/backends/sftp.php b/apps/files_external/tests/backends/sftp.php
index 29461c3abcc..da2c0ac6ba2 100644
--- a/apps/files_external/tests/backends/sftp.php
+++ b/apps/files_external/tests/backends/sftp.php
@@ -4,6 +4,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php
index 9907353588e..19dad215a36 100644
--- a/apps/files_external/tests/config.php
+++ b/apps/files_external/tests/config.php
@@ -3,7 +3,6 @@
* @author Christian Berendt <berendt@b1-systems.de>
* @author hkjolhede <hkjolhede@gmail.com>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Ross Nicoll <jrn@jrn.me.uk>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/apps/files_sharing/ajax/external.php b/apps/files_sharing/ajax/external.php
index 7bef0c3197a..d26a64d3aec 100644
--- a/apps/files_sharing/ajax/external.php
+++ b/apps/files_sharing/ajax/external.php
@@ -56,71 +56,76 @@ $externalManager = new \OCA\Files_Sharing\External\Manager(
);
// check for ssl cert
-if (substr($remote, 0, 5) === 'https' and !OC_Util::getUrlContent($remote)) {
- \OCP\JSON::error(array('data' => array('message' => $l->t('Invalid or untrusted SSL certificate'))));
- exit;
-} else {
- $mount = $externalManager->addShare($remote, $token, $password, $name, $owner, true);
+if (substr($remote, 0, 5) === 'https') {
+ try {
+ \OC::$server->getHTTPClientService()->newClient()->get($remote)->getBody();
+ } catch (\Exception $e) {
+ \OCP\JSON::error(array('data' => array('message' => $l->t('Invalid or untrusted SSL certificate'))));
+ exit;
+ }
+}
+
+$mount = $externalManager->addShare($remote, $token, $password, $name, $owner, true);
- /**
- * @var \OCA\Files_Sharing\External\Storage $storage
- */
- $storage = $mount->getStorage();
+/**
+ * @var \OCA\Files_Sharing\External\Storage $storage
+ */
+$storage = $mount->getStorage();
+try {
+ // check if storage exists
+ $storage->checkStorageAvailability();
+} catch (\OCP\Files\StorageInvalidException $e) {
+ // note: checkStorageAvailability will already remove the invalid share
+ \OCP\Util::writeLog(
+ 'files_sharing',
+ 'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
+ \OCP\Util::DEBUG
+ );
+ \OCP\JSON::error(
+ array(
+ 'data' => array(
+ 'message' => $l->t('Could not authenticate to remote share, password might be wrong')
+ )
+ )
+ );
+ exit();
+} catch (\Exception $e) {
+ \OCP\Util::writeLog(
+ 'files_sharing',
+ 'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
+ \OCP\Util::DEBUG
+ );
+ $externalManager->removeShare($mount->getMountPoint());
+ \OCP\JSON::error(array('data' => array('message' => $l->t('Storage not valid'))));
+ exit();
+}
+$result = $storage->file_exists('');
+if ($result) {
try {
- // check if storage exists
- $storage->checkStorageAvailability();
+ $storage->getScanner()->scanAll();
+ \OCP\JSON::success();
} catch (\OCP\Files\StorageInvalidException $e) {
- // note: checkStorageAvailability will already remove the invalid share
\OCP\Util::writeLog(
'files_sharing',
'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
\OCP\Util::DEBUG
);
- \OCP\JSON::error(
- array(
- 'data' => array(
- 'message' => $l->t('Could not authenticate to remote share, password might be wrong')
- )
- )
- );
- exit();
+ \OCP\JSON::error(array('data' => array('message' => $l->t('Storage not valid'))));
} catch (\Exception $e) {
\OCP\Util::writeLog(
'files_sharing',
'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
\OCP\Util::DEBUG
);
- $externalManager->removeShare($mount->getMountPoint());
- \OCP\JSON::error(array('data' => array('message' => $l->t('Storage not valid'))));
- exit();
- }
- $result = $storage->file_exists('');
- if ($result) {
- try {
- $storage->getScanner()->scanAll();
- \OCP\JSON::success();
- } catch (\OCP\Files\StorageInvalidException $e) {
- \OCP\Util::writeLog(
- 'files_sharing',
- 'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
- \OCP\Util::DEBUG
- );
- \OCP\JSON::error(array('data' => array('message' => $l->t('Storage not valid'))));
- } catch (\Exception $e) {
- \OCP\Util::writeLog(
- 'files_sharing',
- 'Invalid remote storage: ' . get_class($e) . ': ' . $e->getMessage(),
- \OCP\Util::DEBUG
- );
- \OCP\JSON::error(array('data' => array('message' => $l->t('Couldn\'t add remote share'))));
- }
- } else {
- $externalManager->removeShare($mount->getMountPoint());
- \OCP\Util::writeLog(
- 'files_sharing',
- 'Couldn\'t add remote share',
- \OCP\Util::DEBUG
- );
\OCP\JSON::error(array('data' => array('message' => $l->t('Couldn\'t add remote share'))));
}
+} else {
+ $externalManager->removeShare($mount->getMountPoint());
+ \OCP\Util::writeLog(
+ 'files_sharing',
+ 'Couldn\'t add remote share',
+ \OCP\Util::DEBUG
+ );
+ \OCP\JSON::error(array('data' => array('message' => $l->t('Couldn\'t add remote share'))));
}
+
diff --git a/apps/files_sharing/ajax/list.php b/apps/files_sharing/ajax/list.php
index 354041fed9d..9185e508e67 100644
--- a/apps/files_sharing/ajax/list.php
+++ b/apps/files_sharing/ajax/list.php
@@ -27,7 +27,7 @@ OCP\JSON::checkAppEnabled('files_sharing');
if(!isset($_GET['t'])){
\OC_Response::setStatus(\OC_Response::STATUS_BAD_REQUEST);
- \OC_Log::write('core-preview', 'No token parameter was passed', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core-preview', 'No token parameter was passed', \OCP\Util::DEBUG);
exit;
}
@@ -71,6 +71,9 @@ foreach ($files as $file) {
unset($entry['directory']);
// do not disclose share owner
unset($entry['shareOwner']);
+ // do not disclose if something is a remote shares
+ unset($entry['mountType']);
+ unset($entry['icon']);
$entry['permissions'] = \OCP\Constants::PERMISSION_READ;
$formattedFiles[] = $entry;
}
diff --git a/apps/files_sharing/ajax/publicpreview.php b/apps/files_sharing/ajax/publicpreview.php
index 0734c8c1159..6ddd4786c2a 100644
--- a/apps/files_sharing/ajax/publicpreview.php
+++ b/apps/files_sharing/ajax/publicpreview.php
@@ -36,20 +36,20 @@ $keepAspect = array_key_exists('a', $_GET) ? true : false;
if($token === ''){
\OC_Response::setStatus(\OC_Response::STATUS_BAD_REQUEST);
- \OC_Log::write('core-preview', 'No token parameter was passed', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core-preview', 'No token parameter was passed', \OCP\Util::DEBUG);
exit;
}
$linkedItem = \OCP\Share::getShareByToken($token);
if($linkedItem === false || ($linkedItem['item_type'] !== 'file' && $linkedItem['item_type'] !== 'folder')) {
\OC_Response::setStatus(\OC_Response::STATUS_NOT_FOUND);
- \OC_Log::write('core-preview', 'Passed token parameter is not valid', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core-preview', 'Passed token parameter is not valid', \OCP\Util::DEBUG);
exit;
}
if(!isset($linkedItem['uid_owner']) || !isset($linkedItem['file_source'])) {
\OC_Response::setStatus(\OC_Response::STATUS_INTERNAL_SERVER_ERROR);
- \OC_Log::write('core-preview', 'Passed token seems to be valid, but it does not contain all necessary information . ("' . $token . '")', \OC_Log::WARN);
+ \OCP\Util::writeLog('core-preview', 'Passed token seems to be valid, but it does not contain all necessary information . ("' . $token . '")', \OCP\Util::WARN);
exit;
}
@@ -66,7 +66,7 @@ $path = $view->getPath($pathId);
if($path === null) {
\OC_Response::setStatus(\OC_Response::STATUS_NOT_FOUND);
- \OC_Log::write('core-preview', 'Could not resolve file for shared item', OC_Log::WARN);
+ \OCP\Util::writeLog('core-preview', 'Could not resolve file for shared item', \OCP\Util::WARN);
exit;
}
@@ -77,7 +77,7 @@ if($linkedItem['item_type'] === 'folder') {
$isValid = \OC\Files\Filesystem::isValidPath($file);
if(!$isValid) {
\OC_Response::setStatus(\OC_Response::STATUS_BAD_REQUEST);
- \OC_Log::write('core-preview', 'Passed filename is not valid, might be malicious (file:"' . $file . '";ip:"' . \OC::$server->getRequest()->getRemoteAddress() . '")', \OC_Log::WARN);
+ \OCP\Util::writeLog('core-preview', 'Passed filename is not valid, might be malicious (file:"' . $file . '";ip:"' . \OC::$server->getRequest()->getRemoteAddress() . '")', \OCP\Util::WARN);
exit;
}
$sharedFile = \OC\Files\Filesystem::normalizePath($file);
@@ -96,7 +96,7 @@ if(substr($path, 0, 1) === '/') {
if($maxX === 0 || $maxY === 0) {
\OC_Response::setStatus(\OC_Response::STATUS_BAD_REQUEST);
- \OC_Log::write('core-preview', 'x and/or y set to 0', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core-preview', 'x and/or y set to 0', \OCP\Util::DEBUG);
exit;
}
@@ -113,5 +113,5 @@ try{
$preview->showPreview();
} catch (\Exception $e) {
\OC_Response::setStatus(\OC_Response::STATUS_INTERNAL_SERVER_ERROR);
- \OC_Log::write('core', $e->getmessage(), \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::DEBUG);
}
diff --git a/apps/files_sharing/ajax/shareinfo.php b/apps/files_sharing/ajax/shareinfo.php
index b2f88265ca1..db6194d3f05 100644
--- a/apps/files_sharing/ajax/shareinfo.php
+++ b/apps/files_sharing/ajax/shareinfo.php
@@ -3,6 +3,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
@@ -54,7 +55,7 @@ $path = $data['realPath'];
$isWritable = $linkItem['permissions'] & (\OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_CREATE);
if (!$isWritable) {
\OC\Files\Filesystem::addStorageWrapper('readonly', function ($mountPoint, $storage) {
- return new \OCA\Files_Sharing\ReadOnlyWrapper(array('storage' => $storage));
+ return new \OC\Files\Storage\Wrapper\PermissionsMask(array('storage' => $storage, 'mask' => \OCP\Constants::PERMISSION_READ + \OCP\Constants::PERMISSION_SHARE));
});
}
diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php
index 03812800c17..2b2b475466f 100644
--- a/apps/files_sharing/api/local.php
+++ b/apps/files_sharing/api/local.php
@@ -3,7 +3,6 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <rmccorkell@karoshi.org.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -27,6 +26,8 @@
namespace OCA\Files_Sharing\API;
+use OC\HintException;
+
class Local {
/**
@@ -68,7 +69,10 @@ class Local {
if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) {
$share['isPreviewAvailable'] = true;
}
- $share['icon'] = substr(\OC_Helper::mimetypeIcon($share['mimetype']), 0, -3) . 'svg';
+ }
+
+ if (!is_null($share['token'])) {
+ $share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
}
}
return new \OC_OCS_Result($shares);
@@ -142,6 +146,12 @@ class Local {
if ($shares === null || empty($shares)) {
return new \OC_OCS_Result(null, 404, 'share doesn\'t exist');
} else {
+ foreach ($shares as &$share) {
+ if (!is_null($share['token'])) {
+ $share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
+ }
+ }
+
return new \OC_OCS_Result($shares);
}
}
@@ -163,7 +173,7 @@ class Local {
}
$select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `file_source`, `path` , `*PREFIX*share`.`permissions`, `stime`, `expiration`, `token`, `storage`, `mail_send`, `mail_send`';
- $getReshares = \OC_DB::prepare('SELECT ' . $select . ' FROM `*PREFIX*share` INNER JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid` WHERE `*PREFIX*share`.`file_source` = ? AND `*PREFIX*share`.`item_type` IN (\'file\', \'folder\') AND `uid_owner` != ?');
+ $getReshares = \OCP\DB::prepare('SELECT ' . $select . ' FROM `*PREFIX*share` INNER JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid` WHERE `*PREFIX*share`.`file_source` = ? AND `*PREFIX*share`.`item_type` IN (\'file\', \'folder\') AND `uid_owner` != ?');
$reshares = $getReshares->execute(array($itemSource, \OCP\User::getUser()))->fetchAll();
foreach ($reshares as $key => $reshare) {
@@ -249,6 +259,7 @@ class Local {
return new \OC_OCS_Result(null, 400, "please specify a file or folder path");
}
$itemSource = self::getFileId($path);
+ $itemSourceName = $itemSource;
$itemType = self::getItemType($path);
if($itemSource === null) {
@@ -259,9 +270,10 @@ class Local {
$shareType = isset($_POST['shareType']) ? (int)$_POST['shareType'] : null;
switch($shareType) {
+ case \OCP\Share::SHARE_TYPE_REMOTE:
+ $shareWith = rtrim($shareWith, '/');
+ $itemSourceName = basename($path);
case \OCP\Share::SHARE_TYPE_USER:
- $permissions = isset($_POST['permissions']) ? (int)$_POST['permissions'] : 31;
- break;
case \OCP\Share::SHARE_TYPE_GROUP:
$permissions = isset($_POST['permissions']) ? (int)$_POST['permissions'] : 31;
break;
@@ -292,8 +304,11 @@ class Local {
$itemSource,
$shareType,
$shareWith,
- $permissions
+ $permissions,
+ $itemSourceName
);
+ } catch (HintException $e) {
+ return new \OC_OCS_Result(null, 400, $e->getHint());
} catch (\Exception $e) {
return new \OC_OCS_Result(null, 403, $e->getMessage());
}
@@ -572,7 +587,7 @@ class Local {
$result = $query->execute($args);
if (\OCP\DB::isError($result)) {
- \OCP\Util::writeLog('files_sharing', \OC_DB::getErrorMessage(), \OCP\Util::ERROR);
+ \OCP\Util::writeLog('files_sharing', \OCP\DB::getErrorMessage(), \OCP\Util::ERROR);
return null;
}
if ($share = $result->fetchRow()) {
diff --git a/apps/files_sharing/api/remote.php b/apps/files_sharing/api/remote.php
new file mode 100644
index 00000000000..f6cb0a29d8b
--- /dev/null
+++ b/apps/files_sharing/api/remote.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files_Sharing\API;
+
+use OC\Files\Filesystem;
+use OCA\Files_Sharing\External\Manager;
+
+class Remote {
+
+ /**
+ * Accept a remote share
+ *
+ * @param array $params contains the shareID 'id' which should be accepted
+ * @return \OC_OCS_Result
+ */
+ public static function getOpenShares($params) {
+ $externalManager = new Manager(
+ \OC::$server->getDatabaseConnection(),
+ Filesystem::getMountManager(),
+ Filesystem::getLoader(),
+ \OC::$server->getHTTPHelper(),
+ \OC_User::getUser()
+ );
+
+ return new \OC_OCS_Result($externalManager->getOpenShares());
+ }
+
+ /**
+ * Accept a remote share
+ *
+ * @param array $params contains the shareID 'id' which should be accepted
+ * @return \OC_OCS_Result
+ */
+ public static function acceptShare($params) {
+ $externalManager = new Manager(
+ \OC::$server->getDatabaseConnection(),
+ Filesystem::getMountManager(),
+ Filesystem::getLoader(),
+ \OC::$server->getHTTPHelper(),
+ \OC_User::getUser()
+ );
+
+ if ($externalManager->acceptShare($params['id'])) {
+ return new \OC_OCS_Result();
+ }
+
+ return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
+ }
+
+ /**
+ * Decline a remote share
+ *
+ * @param array $params contains the shareID 'id' which should be declined
+ * @return \OC_OCS_Result
+ */
+ public static function declineShare($params) {
+ $externalManager = new Manager(
+ \OC::$server->getDatabaseConnection(),
+ Filesystem::getMountManager(),
+ Filesystem::getLoader(),
+ \OC::$server->getHTTPHelper(),
+ \OC_User::getUser()
+ );
+
+ if ($externalManager->declineShare($params['id'])) {
+ return new \OC_OCS_Result();
+ }
+
+ return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
+ }
+
+}
diff --git a/apps/files_sharing/api/server2server.php b/apps/files_sharing/api/server2server.php
index 3ecdf65dc74..8bda0bb8749 100644
--- a/apps/files_sharing/api/server2server.php
+++ b/apps/files_sharing/api/server2server.php
@@ -22,6 +22,8 @@
namespace OCA\Files_Sharing\API;
+use OCA\Files_Sharing\Activity;
+
class Server2Server {
/**
@@ -69,8 +71,8 @@ class Server2Server {
$user = $owner . '@' . $this->cleanupRemote($remote);
\OC::$server->getActivityManager()->publishActivity(
- 'files_sharing', \OCA\Files_Sharing\Activity::SUBJECT_REMOTE_SHARE_RECEIVED, array($user), '', array(),
- '', '', $shareWith, \OCA\Files_Sharing\Activity::TYPE_REMOTE_SHARE, \OCA\Files_Sharing\Activity::PRIORITY_LOW);
+ Activity::FILES_SHARING_APP, Activity::SUBJECT_REMOTE_SHARE_RECEIVED, array($user, trim($name, '/')), '', array(),
+ '', '', $shareWith, Activity::TYPE_REMOTE_SHARE, Activity::PRIORITY_LOW);
return new \OC_OCS_Result();
} catch (\Exception $e) {
@@ -102,8 +104,8 @@ class Server2Server {
list($file, $link) = self::getFile($share['uid_owner'], $share['file_source']);
\OC::$server->getActivityManager()->publishActivity(
- 'files_sharing', \OCA\Files_Sharing\Activity::SUBJECT_REMOTE_SHARE_ACCEPTED, array($share['share_with'], basename($file)), '', array(),
- $file, $link, $share['uid_owner'], \OCA\Files_Sharing\Activity::TYPE_REMOTE_SHARE, \OCA\Files_Sharing\Activity::PRIORITY_LOW);
+ Activity::FILES_SHARING_APP, Activity::SUBJECT_REMOTE_SHARE_ACCEPTED, array($share['share_with'], basename($file)), '', array(),
+ $file, $link, $share['uid_owner'], Activity::TYPE_REMOTE_SHARE, Activity::PRIORITY_LOW);
}
return new \OC_OCS_Result();
@@ -133,8 +135,8 @@ class Server2Server {
list($file, $link) = $this->getFile($share['uid_owner'], $share['file_source']);
\OC::$server->getActivityManager()->publishActivity(
- 'files_sharing', \OCA\Files_Sharing\Activity::SUBJECT_REMOTE_SHARE_DECLINED, array($share['share_with'], basename($file)), '', array(),
- $file, $link, $share['uid_owner'], \OCA\Files_Sharing\Activity::TYPE_REMOTE_SHARE, \OCA\Files_Sharing\Activity::PRIORITY_LOW);
+ Activity::FILES_SHARING_APP, Activity::SUBJECT_REMOTE_SHARE_DECLINED, array($share['share_with'], basename($file)), '', array(),
+ $file, $link, $share['uid_owner'], Activity::TYPE_REMOTE_SHARE, Activity::PRIORITY_LOW);
}
return new \OC_OCS_Result();
@@ -170,9 +172,15 @@ class Server2Server {
$query = \OCP\DB::prepare('DELETE FROM `*PREFIX*share_external` WHERE `remote_id` = ? AND `share_token` = ?');
$query->execute(array($id, $token));
+ if ($share['accepted']) {
+ $path = trim($mountpoint, '/');
+ } else {
+ $path = trim($share['name'], '/');
+ }
+
\OC::$server->getActivityManager()->publishActivity(
- 'files_sharing', \OCA\Files_Sharing\Activity::SUBJECT_REMOTE_SHARE_UNSHARED, array($owner, $mountpoint), '', array(),
- '', '', $user, \OCA\Files_Sharing\Activity::TYPE_REMOTE_SHARE, \OCA\Files_Sharing\Activity::PRIORITY_MEDIUM);
+ Activity::FILES_SHARING_APP, Activity::SUBJECT_REMOTE_SHARE_UNSHARED, array($owner, $path), '', array(),
+ '', '', $user, Activity::TYPE_REMOTE_SHARE, Activity::PRIORITY_MEDIUM);
}
return new \OC_OCS_Result();
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php
index c54038f17e3..f72f5024622 100644
--- a/apps/files_sharing/appinfo/app.php
+++ b/apps/files_sharing/appinfo/app.php
@@ -2,10 +2,8 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Gadzy <dev@gadzy.fr>
- * @author j-ed <juergen@eisfair.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/apps/files_sharing/appinfo/application.php b/apps/files_sharing/appinfo/application.php
index 0eb20945070..b9c2844d78c 100644
--- a/apps/files_sharing/appinfo/application.php
+++ b/apps/files_sharing/appinfo/application.php
@@ -1,9 +1,23 @@
<?php
/**
- * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
namespace OCA\Files_Sharing\Appinfo;
diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index d6f7e4b1320..28c64cbb1b4 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -19,5 +19,4 @@ Turning the feature off removes shared files and folders on the server for all s
<files>public.php</files>
<webdav>publicwebdav.php</webdav>
</public>
- <ocsid>166050</ocsid>
</info>
diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php
index 78fa138f5b5..21d21a83441 100644
--- a/apps/files_sharing/appinfo/routes.php
+++ b/apps/files_sharing/appinfo/routes.php
@@ -2,9 +2,11 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Georg Ehrke <georg@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
@@ -80,6 +82,21 @@ API::register('delete',
array('\OCA\Files_Sharing\API\Local', 'deleteShare'),
'files_sharing');
+API::register('get',
+ '/apps/files_sharing/api/v1/remote_shares',
+ array('\OCA\Files_Sharing\API\Remote', 'getOpenShares'),
+ 'files_sharing');
+
+API::register('post',
+ '/apps/files_sharing/api/v1/remote_shares/{id}',
+ array('\OCA\Files_Sharing\API\Remote', 'acceptShare'),
+ 'files_sharing');
+
+API::register('delete',
+ '/apps/files_sharing/api/v1/remote_shares/{id}',
+ array('\OCA\Files_Sharing\API\Remote', 'declineShare'),
+ 'files_sharing');
+
// Register with the capabilities API
API::register('get',
'/cloud/capabilities',
diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php
index f19c9ee1f9b..e98b60ea36d 100644
--- a/apps/files_sharing/appinfo/update.php
+++ b/apps/files_sharing/appinfo/update.php
@@ -1,7 +1,6 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files_sharing/appinfo/version b/apps/files_sharing/appinfo/version
index ee6cdce3c29..b6160487433 100644
--- a/apps/files_sharing/appinfo/version
+++ b/apps/files_sharing/appinfo/version
@@ -1 +1 @@
-0.6.1
+0.6.2
diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css
index a649ecfe885..a5cf57d0ac5 100644
--- a/apps/files_sharing/css/public.css
+++ b/apps/files_sharing/css/public.css
@@ -72,7 +72,7 @@ thead {
}
/* keep long file names in one line to not overflow download button on mobile */
-.directDownload #download {
+.directDownload #downloadFile {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index 11c3170c2f0..e7823454c53 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -25,6 +25,10 @@
* @param {OCA.Files.FileList} fileList file list to be extended
*/
attach: function(fileList) {
+ // core sharing is disabled/not loaded
+ if (!OC.Share) {
+ return;
+ }
if (fileList.id === 'trashbin' || fileList.id === 'files.public') {
return;
}
@@ -151,7 +155,7 @@
var permissions = $tr.data('permissions');
var hasLink = !!(shareStatus && shareStatus.link);
OC.Share.markFileAsShared($tr, true, hasLink);
- if ((permissions & OC.PERMISSION_SHARE) === 0) {
+ if ((permissions & OC.PERMISSION_SHARE) === 0 && $tr.attr('data-share-owner')) {
// if no share action exists because the admin disabled sharing for this user
// we create a share notification action to inform the user about files
// shared with him otherwise we just update the existing share action.
diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js
index ca187940a08..98dbd4c6702 100644
--- a/apps/files_sharing/js/sharedfilelist.js
+++ b/apps/files_sharing/js/sharedfilelist.js
@@ -176,7 +176,7 @@
.map(function(share) {
var file = {
id: share.file_source,
- icon: share.icon,
+ icon: OC.MimeType.getIconUrl(share.mimetype),
mimetype: share.mimetype
};
if (share.item_type === 'folder') {
diff --git a/apps/files_sharing/l10n/cs_CZ.js b/apps/files_sharing/l10n/cs_CZ.js
index d1d89a15999..dc15a19e520 100644
--- a/apps/files_sharing/l10n/cs_CZ.js
+++ b/apps/files_sharing/l10n/cs_CZ.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Soubor nebo složka byla <strong>nasdílena</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Soubor nebo složka byla nasdílena z <strong>jiného serveru</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> veřejně sdílený soubor nebo adresář",
+ "You received a new remote share %2$s from %1$s" : "Obdrželi jste nové vzdálené sdílení %2$s od uživatele %1$s",
"You received a new remote share from %s" : "Obdrželi jste nové vzdálené sdílení z %s",
"%1$s accepted remote share %2$s" : "%1$s přijal(a) vzdálené sdílení %2$s",
"%1$s declined remote share %2$s" : "%1$s odmítl(a) vzdálené sdílení %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
"You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
"Shares" : "Sdílení",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID, více na %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID",
"This share is password-protected" : "Toto sdílení je chráněno heslem",
"The password is wrong. Try again." : "Heslo není správné. Zkuste to znovu.",
"Password" : "Heslo",
@@ -59,6 +62,12 @@ OC.L10N.register(
"Federated Cloud Sharing" : "Propojené cloudové sdílení",
"Open documentation" : "Otevřít dokumentaci",
"Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery",
- "Allow users on this server to receive shares from other servers" : "Povolit uživatelům z tohoto serveru přijímat sdílení z jiných serverů"
+ "Allow users on this server to receive shares from other servers" : "Povolit uživatelům z tohoto serveru přijímat sdílení z jiných serverů",
+ "Federated Cloud" : "Sdružený cloud",
+ "Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
+ "Share it:" : "Sdílet:",
+ "Add it to your website:" : "Přidat na svou webovou stránku:",
+ "Share with me via ownCloud" : "Sdíleno se mnou přes ownCloud",
+ "HTML Code:" : "HTML kód:"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/cs_CZ.json b/apps/files_sharing/l10n/cs_CZ.json
index 95fea4806cf..8533ee053c3 100644
--- a/apps/files_sharing/l10n/cs_CZ.json
+++ b/apps/files_sharing/l10n/cs_CZ.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Soubor nebo složka byla <strong>nasdílena</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Soubor nebo složka byla nasdílena z <strong>jiného serveru</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Byl <strong>stažen</strong> veřejně sdílený soubor nebo adresář",
+ "You received a new remote share %2$s from %1$s" : "Obdrželi jste nové vzdálené sdílení %2$s od uživatele %1$s",
"You received a new remote share from %s" : "Obdrželi jste nové vzdálené sdílení z %s",
"%1$s accepted remote share %2$s" : "%1$s přijal(a) vzdálené sdílení %2$s",
"%1$s declined remote share %2$s" : "%1$s odmítl(a) vzdálené sdílení %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
"You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
"Shares" : "Sdílení",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID, více na %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID",
"This share is password-protected" : "Toto sdílení je chráněno heslem",
"The password is wrong. Try again." : "Heslo není správné. Zkuste to znovu.",
"Password" : "Heslo",
@@ -57,6 +60,12 @@
"Federated Cloud Sharing" : "Propojené cloudové sdílení",
"Open documentation" : "Otevřít dokumentaci",
"Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery",
- "Allow users on this server to receive shares from other servers" : "Povolit uživatelům z tohoto serveru přijímat sdílení z jiných serverů"
+ "Allow users on this server to receive shares from other servers" : "Povolit uživatelům z tohoto serveru přijímat sdílení z jiných serverů",
+ "Federated Cloud" : "Sdružený cloud",
+ "Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
+ "Share it:" : "Sdílet:",
+ "Add it to your website:" : "Přidat na svou webovou stránku:",
+ "Share with me via ownCloud" : "Sdíleno se mnou přes ownCloud",
+ "HTML Code:" : "HTML kód:"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js
index 79d8ae76314..a7cfb0a652d 100644
--- a/apps/files_sharing/l10n/da.js
+++ b/apps/files_sharing/l10n/da.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "En fil eller mappe er blevet <strong>delt</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe blev delt fra <strong>en anden server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "En offentligt delt fil eller mappe blev <strong>hentet</strong>",
+ "You received a new remote share %2$s from %1$s" : "Du modtog en ny ekstern deling %2$s fra %1$s",
"You received a new remote share from %s" : "Du modtog en ny ekstern deling fra %s",
"%1$s accepted remote share %2$s" : "%1$s accepterede den ekstern deling %2$s",
"%1$s declined remote share %2$s" : "%1$s afviste den eksterne deling %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s delt %1$s med dig",
"You shared %1$s via link" : "Du delte %1$s via link",
"Shares" : "Delt",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med mig gennem min #ownCloud Federated Cloud ID, se %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Del med mig gennem min #ownCloud Federated Cloud ID",
"This share is password-protected" : "Delingen er beskyttet af kodeord",
"The password is wrong. Try again." : "Kodeordet er forkert. Prøv igen.",
"Password" : "Kodeord",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Åben dokumentation",
"Allow users on this server to send shares to other servers" : "Tillad brugere på denne server, at sende delinger til andre servere",
"Allow users on this server to receive shares from other servers" : "Tillad brugere på denne server, at modtage delinger fra andre servere",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Din Federated Cloud ID:",
+ "Share it:" : "Del:",
+ "Add it to your website:" : "Tilføj den til din hjemmeside:",
+ "Share with me via ownCloud" : "Del med mig gennem ownCloud",
+ "HTML Code:" : "HTMLkode:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json
index 15807298f4f..d18cf792757 100644
--- a/apps/files_sharing/l10n/da.json
+++ b/apps/files_sharing/l10n/da.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "En fil eller mappe er blevet <strong>delt</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe blev delt fra <strong>en anden server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "En offentligt delt fil eller mappe blev <strong>hentet</strong>",
+ "You received a new remote share %2$s from %1$s" : "Du modtog en ny ekstern deling %2$s fra %1$s",
"You received a new remote share from %s" : "Du modtog en ny ekstern deling fra %s",
"%1$s accepted remote share %2$s" : "%1$s accepterede den ekstern deling %2$s",
"%1$s declined remote share %2$s" : "%1$s afviste den eksterne deling %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s delt %1$s med dig",
"You shared %1$s via link" : "Du delte %1$s via link",
"Shares" : "Delt",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med mig gennem min #ownCloud Federated Cloud ID, se %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Del med mig gennem min #ownCloud Federated Cloud ID",
"This share is password-protected" : "Delingen er beskyttet af kodeord",
"The password is wrong. Try again." : "Kodeordet er forkert. Prøv igen.",
"Password" : "Kodeord",
@@ -58,6 +61,11 @@
"Open documentation" : "Åben dokumentation",
"Allow users on this server to send shares to other servers" : "Tillad brugere på denne server, at sende delinger til andre servere",
"Allow users on this server to receive shares from other servers" : "Tillad brugere på denne server, at modtage delinger fra andre servere",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Din Federated Cloud ID:",
+ "Share it:" : "Del:",
+ "Add it to your website:" : "Tilføj den til din hjemmeside:",
+ "Share with me via ownCloud" : "Del med mig gennem ownCloud",
+ "HTML Code:" : "HTMLkode:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index 06aecac9c42..d46e907e0c8 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -60,6 +60,8 @@ OC.L10N.register(
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
+ "HTML Code:" : "HTML-Code:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 1e3213113b1..30d6badbb34 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -58,6 +58,8 @@
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
+ "HTML Code:" : "HTML-Code:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 1536da3b98f..0074bdbecad 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -60,6 +60,9 @@ OC.L10N.register(
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:",
+ "Share with me via ownCloud" : "Teilen Sie mit mir über ownCloud",
+ "HTML Code:" : "HTML-Code:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 9ff15fb26da..fef8ebf7b9d 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -58,6 +58,9 @@
"Open documentation" : "Dokumentation öffnen",
"Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben",
"Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:",
+ "Share with me via ownCloud" : "Teilen Sie mit mir über ownCloud",
+ "HTML Code:" : "HTML-Code:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js
index 1c1c863a240..01effb3f91f 100644
--- a/apps/files_sharing/l10n/el.js
+++ b/apps/files_sharing/l10n/el.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Ένα αρχείο ή φάκελος <strong>διαμοιράστηκε</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Ένα αρχείο ή φάκελος διαμοιράστηκε από <strong>έναν άλλο διακομιστή</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Ένα δημόσια διαμοιρασμένο αρχείο ή φάκελος <strong>ελήφθη</strong>",
+ "You received a new remote share %2$s from %1$s" : "Λάβατε ένα νέο απομακρυσμένο διαμοιρασμό %2$s από %1$s",
"You received a new remote share from %s" : "Λάβατε ένα νέο απομακρυσμένο κοινόχρηστο φάκελο από %s",
"%1$s accepted remote share %2$s" : "Ο %1$s αποδέχθηκε τον απομακρυσμένο φάκελο %2$s",
"%1$s declined remote share %2$s" : "Ο %1$s αρνήθηκε τον απομακρυσμένο διαμοιρασμένο φάκελο %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "Ο %2$s διαμοιράστηκε το %1$s με εσάς",
"You shared %1$s via link" : "Μοιραστήκατε το %1$s μέσω συνδέσμου",
"Shares" : "Κοινόχρηστοι φάκελοι",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου, δείτε %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου",
"This share is password-protected" : "Αυτός ο κοινόχρηστος φάκελος προστατεύεται με κωδικό",
"The password is wrong. Try again." : "Εσφαλμένος κωδικός πρόσβασης. Προσπαθήστε ξανά.",
"Password" : "Κωδικός πρόσβασης",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Ανοιχτή τεκμηρίωση.",
"Allow users on this server to send shares to other servers" : "Να επιτρέπεται σε χρήστες αυτού του διακομιστή να στέλνουν διαμοιρασμένους φακέλους σε άλλους διακομιστές",
"Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές",
- "Federated Cloud" : "Federated σύννεφο"
+ "Federated Cloud" : "Federated σύννεφο",
+ "Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:",
+ "Share it:" : "Μοιραστείτε το:",
+ "Add it to your website:" : "Προσθέστε το στην ιστοσελίδα σας:",
+ "Share with me via ownCloud" : "Διαμοιρασμός με εμένα μέσω του ",
+ "HTML Code:" : "Κώδικας HTML:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json
index 934b6704146..aee0ccb29a1 100644
--- a/apps/files_sharing/l10n/el.json
+++ b/apps/files_sharing/l10n/el.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Ένα αρχείο ή φάκελος <strong>διαμοιράστηκε</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Ένα αρχείο ή φάκελος διαμοιράστηκε από <strong>έναν άλλο διακομιστή</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Ένα δημόσια διαμοιρασμένο αρχείο ή φάκελος <strong>ελήφθη</strong>",
+ "You received a new remote share %2$s from %1$s" : "Λάβατε ένα νέο απομακρυσμένο διαμοιρασμό %2$s από %1$s",
"You received a new remote share from %s" : "Λάβατε ένα νέο απομακρυσμένο κοινόχρηστο φάκελο από %s",
"%1$s accepted remote share %2$s" : "Ο %1$s αποδέχθηκε τον απομακρυσμένο φάκελο %2$s",
"%1$s declined remote share %2$s" : "Ο %1$s αρνήθηκε τον απομακρυσμένο διαμοιρασμένο φάκελο %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "Ο %2$s διαμοιράστηκε το %1$s με εσάς",
"You shared %1$s via link" : "Μοιραστήκατε το %1$s μέσω συνδέσμου",
"Shares" : "Κοινόχρηστοι φάκελοι",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου, δείτε %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου",
"This share is password-protected" : "Αυτός ο κοινόχρηστος φάκελος προστατεύεται με κωδικό",
"The password is wrong. Try again." : "Εσφαλμένος κωδικός πρόσβασης. Προσπαθήστε ξανά.",
"Password" : "Κωδικός πρόσβασης",
@@ -58,6 +61,11 @@
"Open documentation" : "Ανοιχτή τεκμηρίωση.",
"Allow users on this server to send shares to other servers" : "Να επιτρέπεται σε χρήστες αυτού του διακομιστή να στέλνουν διαμοιρασμένους φακέλους σε άλλους διακομιστές",
"Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές",
- "Federated Cloud" : "Federated σύννεφο"
+ "Federated Cloud" : "Federated σύννεφο",
+ "Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:",
+ "Share it:" : "Μοιραστείτε το:",
+ "Add it to your website:" : "Προσθέστε το στην ιστοσελίδα σας:",
+ "Share with me via ownCloud" : "Διαμοιρασμός με εμένα μέσω του ",
+ "HTML Code:" : "Κώδικας HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index 4920f6e3226..a7dd3ca5705 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Se ha <strong>compartido</strong> un archivo o carpeta",
"A file or folder was shared from <strong>another server</strong>" : "Se ha compartido un archivo o carpeta desde <strong>otro servidor</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Ha sido <strong>descargado</strong> un archivo (o carpeta) compartido públicamente",
+ "You received a new remote share %2$s from %1$s" : "Recibió un nuevo recurso compartido remoto %2$s de %1$s",
"You received a new remote share from %s" : "Ha recibido un nuevo recurso compartido remoto de %s",
"%1$s accepted remote share %2$s" : "%1$s aceptó el recurso compartido remoto %2$s",
"%1$s declined remote share %2$s" : "%1$s ha rechazado el recurso compartido remoto %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s ha compartido %1$s con usted",
"You shared %1$s via link" : "Ha compartido %1$s vía enlace",
"Shares" : "Compartidos",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud",
"This share is password-protected" : "Este elemento compartido está protegido por contraseña",
"The password is wrong. Try again." : "La contraseña introducida es errónea. Inténtelo de nuevo.",
"Password" : "Contraseña",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Documentación abierta",
"Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores",
- "Federated Cloud" : "Nube Federada"
+ "Federated Cloud" : "Nube Federada",
+ "Your Federated Cloud ID:" : "Su ID Nube Federada:",
+ "Share it:" : "Compartir:",
+ "Add it to your website:" : "Agregarlo a su sitio de internet:",
+ "Share with me via ownCloud" : "Compartirlo conmigo vía OwnCloud",
+ "HTML Code:" : "Código HTML:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 6d7c232a184..b79640abc08 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Se ha <strong>compartido</strong> un archivo o carpeta",
"A file or folder was shared from <strong>another server</strong>" : "Se ha compartido un archivo o carpeta desde <strong>otro servidor</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Ha sido <strong>descargado</strong> un archivo (o carpeta) compartido públicamente",
+ "You received a new remote share %2$s from %1$s" : "Recibió un nuevo recurso compartido remoto %2$s de %1$s",
"You received a new remote share from %s" : "Ha recibido un nuevo recurso compartido remoto de %s",
"%1$s accepted remote share %2$s" : "%1$s aceptó el recurso compartido remoto %2$s",
"%1$s declined remote share %2$s" : "%1$s ha rechazado el recurso compartido remoto %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s ha compartido %1$s con usted",
"You shared %1$s via link" : "Ha compartido %1$s vía enlace",
"Shares" : "Compartidos",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud",
"This share is password-protected" : "Este elemento compartido está protegido por contraseña",
"The password is wrong. Try again." : "La contraseña introducida es errónea. Inténtelo de nuevo.",
"Password" : "Contraseña",
@@ -58,6 +61,11 @@
"Open documentation" : "Documentación abierta",
"Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores",
- "Federated Cloud" : "Nube Federada"
+ "Federated Cloud" : "Nube Federada",
+ "Your Federated Cloud ID:" : "Su ID Nube Federada:",
+ "Share it:" : "Compartir:",
+ "Add it to your website:" : "Agregarlo a su sitio de internet:",
+ "Share with me via ownCloud" : "Compartirlo conmigo vía OwnCloud",
+ "HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js
index bbe0b020b42..aa6dde2d7bb 100644
--- a/apps/files_sharing/l10n/et_EE.js
+++ b/apps/files_sharing/l10n/et_EE.js
@@ -8,11 +8,15 @@ OC.L10N.register(
"Shared with you" : "Sinuga jagatud",
"Shared with others" : "Teistega jagatud",
"Shared by link" : "Jagatud lingiga",
+ "Nothing shared with you yet" : "Sinuga pole veel midagi jagatud",
+ "Nothing shared yet" : "Midagi pole veel jagatud",
+ "No shared links" : "Jagatud linke pole",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisata kaugjagamise {name} asukohast {owner}@{remote}?",
"Remote share" : "Kaugjagamine",
"Remote share password" : "Kaugjagamise parool",
"Cancel" : "Loobu",
"Add remote share" : "Lisa kaugjagamine",
+ "You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida",
"Invalid ownCloud url" : "Vigane ownCloud url",
"Share" : "Jaga",
"Shared by" : "Jagas",
@@ -38,7 +42,12 @@ OC.L10N.register(
"Download" : "Lae alla",
"Download %s" : "Laadi alla %s",
"Direct link" : "Otsene link",
+ "Open documentation" : "Ava dokumentatsioon",
"Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse",
- "Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest"
+ "Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest",
+ "Share it:" : "Jaga seda:",
+ "Add it to your website:" : "Lisa see oma veebisaidile:",
+ "Share with me via ownCloud" : "Jaga minuga läbi ownCloudiga",
+ "HTML Code:" : "HTML kood:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json
index 3e36c3540fa..0f0c3c492dd 100644
--- a/apps/files_sharing/l10n/et_EE.json
+++ b/apps/files_sharing/l10n/et_EE.json
@@ -6,11 +6,15 @@
"Shared with you" : "Sinuga jagatud",
"Shared with others" : "Teistega jagatud",
"Shared by link" : "Jagatud lingiga",
+ "Nothing shared with you yet" : "Sinuga pole veel midagi jagatud",
+ "Nothing shared yet" : "Midagi pole veel jagatud",
+ "No shared links" : "Jagatud linke pole",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisata kaugjagamise {name} asukohast {owner}@{remote}?",
"Remote share" : "Kaugjagamine",
"Remote share password" : "Kaugjagamise parool",
"Cancel" : "Loobu",
"Add remote share" : "Lisa kaugjagamine",
+ "You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida",
"Invalid ownCloud url" : "Vigane ownCloud url",
"Share" : "Jaga",
"Shared by" : "Jagas",
@@ -36,7 +40,12 @@
"Download" : "Lae alla",
"Download %s" : "Laadi alla %s",
"Direct link" : "Otsene link",
+ "Open documentation" : "Ava dokumentatsioon",
"Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse",
- "Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest"
+ "Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest",
+ "Share it:" : "Jaga seda:",
+ "Add it to your website:" : "Lisa see oma veebisaidile:",
+ "Share with me via ownCloud" : "Jaga minuga läbi ownCloudiga",
+ "HTML Code:" : "HTML kood:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/fi_FI.js b/apps/files_sharing/l10n/fi_FI.js
index 70495b7d550..0e1beda5afa 100644
--- a/apps/files_sharing/l10n/fi_FI.js
+++ b/apps/files_sharing/l10n/fi_FI.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Tiedosto tai kansio on <strong>jaettu</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Tiedosto tai kansio jaettiin <strong>toiselta palvelimelta</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Julkisesti jaettu tiedosto tai kansio <strong>ladattiin</strong>",
+ "You received a new remote share %2$s from %1$s" : "Vastaanotit uuden etäjaon %2$s käyttäjältä %1$s",
"You received a new remote share from %s" : "Vastaanotit uuden etäjaon käyttäjältä %s",
"%1$s accepted remote share %2$s" : "%1$s hyväksyi etäjaon %2$s",
"%1$s declined remote share %2$s" : "%1$s kieltäytyi etäjaosta %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s jakoi kohteen %1$s kanssasi",
"You shared %1$s via link" : "Jaoit kohteen %1$s linkin kautta",
"Shares" : "Jaot",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta, katso %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta",
"This share is password-protected" : "Tämä jako on suojattu salasanalla",
"The password is wrong. Try again." : "Väärä salasana. Yritä uudelleen.",
"Password" : "Salasana",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Avaa dokumentaatio",
"Allow users on this server to send shares to other servers" : "Salli tämän palvelimen käyttäjien lähettää jakoja muille palvelimille",
"Allow users on this server to receive shares from other servers" : "Salli tämän palvelimen käyttäjien vastaanottaa jakoja muilta palvelimilta",
- "Federated Cloud" : "Federoitu pilvi"
+ "Federated Cloud" : "Federoitu pilvi",
+ "Your Federated Cloud ID:" : "Federoidun pilvesi tunniste:",
+ "Share it:" : "Jaa se:",
+ "Add it to your website:" : "Lisää verkkosivustollesi:",
+ "Share with me via ownCloud" : "Jaa kanssani ownCloudin kautta",
+ "HTML Code:" : "HTML-koodi:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/fi_FI.json b/apps/files_sharing/l10n/fi_FI.json
index 0b2f2b91ed2..5f87c38f32e 100644
--- a/apps/files_sharing/l10n/fi_FI.json
+++ b/apps/files_sharing/l10n/fi_FI.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Tiedosto tai kansio on <strong>jaettu</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Tiedosto tai kansio jaettiin <strong>toiselta palvelimelta</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Julkisesti jaettu tiedosto tai kansio <strong>ladattiin</strong>",
+ "You received a new remote share %2$s from %1$s" : "Vastaanotit uuden etäjaon %2$s käyttäjältä %1$s",
"You received a new remote share from %s" : "Vastaanotit uuden etäjaon käyttäjältä %s",
"%1$s accepted remote share %2$s" : "%1$s hyväksyi etäjaon %2$s",
"%1$s declined remote share %2$s" : "%1$s kieltäytyi etäjaosta %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s jakoi kohteen %1$s kanssasi",
"You shared %1$s via link" : "Jaoit kohteen %1$s linkin kautta",
"Shares" : "Jaot",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta, katso %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta",
"This share is password-protected" : "Tämä jako on suojattu salasanalla",
"The password is wrong. Try again." : "Väärä salasana. Yritä uudelleen.",
"Password" : "Salasana",
@@ -58,6 +61,11 @@
"Open documentation" : "Avaa dokumentaatio",
"Allow users on this server to send shares to other servers" : "Salli tämän palvelimen käyttäjien lähettää jakoja muille palvelimille",
"Allow users on this server to receive shares from other servers" : "Salli tämän palvelimen käyttäjien vastaanottaa jakoja muilta palvelimilta",
- "Federated Cloud" : "Federoitu pilvi"
+ "Federated Cloud" : "Federoitu pilvi",
+ "Your Federated Cloud ID:" : "Federoidun pilvesi tunniste:",
+ "Share it:" : "Jaa se:",
+ "Add it to your website:" : "Lisää verkkosivustollesi:",
+ "Share with me via ownCloud" : "Jaa kanssani ownCloudin kautta",
+ "HTML Code:" : "HTML-koodi:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index f6ead6dfd56..ca10ca211d1 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"files_sharing",
{
"Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur",
- "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.",
+ "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères non valides.",
"Invalid or untrusted SSL certificate" : "Certificat SSL non valable ou non fiable",
"Could not authenticate to remote share, password might be wrong" : "Impossible de s'authentifier au partage distant : le mot de passe en probablement incorrect",
"Storage not valid" : "Support de stockage non valide",
@@ -15,7 +15,7 @@ OC.L10N.register(
"Nothing shared yet" : "Rien n'est partagé pour l'instant",
"Files and folders you share will show up here" : "Les fichiers et dossiers que vous partagez apparaîtront ici",
"No shared links" : "Aucun partage par lien",
- "Files and folders you share by link will show up here" : "Les fichiers et dossiers que vous partagerez par lien apparaîtront ici",
+ "Files and folders you share by link will show up here" : "Les fichiers et dossiers que vous partagez par lien apparaîtront ici",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Voulez-vous ajouter le partage distant {name} de {owner}@{remote} ?",
"Remote share" : "Partage distant",
"Remote share password" : "Mot de passe du partage distant",
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Un fichier ou un répertoire partagé publiquement a été <strong>téléchargé</strong>",
+ "You received a new remote share %2$s from %1$s" : "L'utilisateur %1$s a partagé la ressource %2$s avec vous.",
"You received a new remote share from %s" : "Vous avez reçu un partage distant de %s",
"%1$s accepted remote share %2$s" : "%1$s a accepté le partage distant %2$s",
"%1$s declined remote share %2$s" : "%1$s a refusé le partage distant %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous",
"You shared %1$s via link" : "Vous avez partagé %1$s par lien public",
"Shares" : "Partages",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud",
"This share is password-protected" : "Ce partage est protégé par un mot de passe",
"The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.",
"Password" : "Mot de passe",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Voir la documentation",
"Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs",
"Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :",
+ "Share it:" : "Partager :",
+ "Add it to your website:" : "Ajouter à votre site web :",
+ "Share with me via ownCloud" : "Partagez avec moi via ownCloud",
+ "HTML Code:" : "Code HTML :"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index bf116fb52dd..ed8b166729a 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -1,6 +1,6 @@
{ "translations": {
"Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur",
- "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.",
+ "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères non valides.",
"Invalid or untrusted SSL certificate" : "Certificat SSL non valable ou non fiable",
"Could not authenticate to remote share, password might be wrong" : "Impossible de s'authentifier au partage distant : le mot de passe en probablement incorrect",
"Storage not valid" : "Support de stockage non valide",
@@ -13,7 +13,7 @@
"Nothing shared yet" : "Rien n'est partagé pour l'instant",
"Files and folders you share will show up here" : "Les fichiers et dossiers que vous partagez apparaîtront ici",
"No shared links" : "Aucun partage par lien",
- "Files and folders you share by link will show up here" : "Les fichiers et dossiers que vous partagerez par lien apparaîtront ici",
+ "Files and folders you share by link will show up here" : "Les fichiers et dossiers que vous partagez par lien apparaîtront ici",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Voulez-vous ajouter le partage distant {name} de {owner}@{remote} ?",
"Remote share" : "Partage distant",
"Remote share password" : "Mot de passe du partage distant",
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Un fichier ou un répertoire partagé publiquement a été <strong>téléchargé</strong>",
+ "You received a new remote share %2$s from %1$s" : "L'utilisateur %1$s a partagé la ressource %2$s avec vous.",
"You received a new remote share from %s" : "Vous avez reçu un partage distant de %s",
"%1$s accepted remote share %2$s" : "%1$s a accepté le partage distant %2$s",
"%1$s declined remote share %2$s" : "%1$s a refusé le partage distant %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous",
"You shared %1$s via link" : "Vous avez partagé %1$s par lien public",
"Shares" : "Partages",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud",
"This share is password-protected" : "Ce partage est protégé par un mot de passe",
"The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.",
"Password" : "Mot de passe",
@@ -58,6 +61,11 @@
"Open documentation" : "Voir la documentation",
"Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs",
"Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs",
- "Federated Cloud" : "Federated Cloud"
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :",
+ "Share it:" : "Partager :",
+ "Add it to your website:" : "Ajouter à votre site web :",
+ "Share with me via ownCloud" : "Partagez avec moi via ownCloud",
+ "HTML Code:" : "Code HTML :"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js
index a3a04710b32..390befe6ffe 100644
--- a/apps/files_sharing/l10n/gl.js
+++ b/apps/files_sharing/l10n/gl.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "<strong>Compartiuse</strong> un ficheiro ou cartafol",
"A file or folder was shared from <strong>another server</strong>" : "Compartiuse un ficheiro ou cartafol desde <strong>outro servidor</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Foi <strong>descargado</strong> un ficheiro ou cartafol público",
+ "You received a new remote share %2$s from %1$s" : "Recibiu unha compartición remota %2$s de %1$s",
"You received a new remote share from %s" : "Recibiu unha compartición remota de %s",
"%1$s accepted remote share %2$s" : "%1$s comparticións remotas aceptadas %2$s",
"%1$s declined remote share %2$s" : "%1$s comparticións remotas declinadas %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s compartiu %1$s con vostede",
"You shared %1$s via link" : "Vostede compartiu %1$s mediante ligazón",
"Shares" : "Comparticións",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartido comigo a través do meu ID da nube federada do #ownCloud , vexa %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Compartido comigo a través do meu ID da nube federada do #ownCloud",
"This share is password-protected" : "Esta compartición está protexida con contrasinal",
"The password is wrong. Try again." : "O contrasinal é incorrecto. Ténteo de novo.",
"Password" : "Contrasinal",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Abrir a documentación",
"Allow users on this server to send shares to other servers" : "Permitir aos usuarios deste servidor enviar comparticións a outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir aos usuarios deste servidor recibir comparticións de outros servidores",
- "Federated Cloud" : "Nube federada"
+ "Federated Cloud" : "Nube federada",
+ "Your Federated Cloud ID:" : "ID da súa nube federada:",
+ "Share it:" : "Compártao:",
+ "Add it to your website:" : "Engádao o seu sitio web:",
+ "Share with me via ownCloud" : "Compartido comigo a través do ownCloud",
+ "HTML Code:" : "Código HTML:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json
index 31315c47b9c..b00e3d621b0 100644
--- a/apps/files_sharing/l10n/gl.json
+++ b/apps/files_sharing/l10n/gl.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "<strong>Compartiuse</strong> un ficheiro ou cartafol",
"A file or folder was shared from <strong>another server</strong>" : "Compartiuse un ficheiro ou cartafol desde <strong>outro servidor</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Foi <strong>descargado</strong> un ficheiro ou cartafol público",
+ "You received a new remote share %2$s from %1$s" : "Recibiu unha compartición remota %2$s de %1$s",
"You received a new remote share from %s" : "Recibiu unha compartición remota de %s",
"%1$s accepted remote share %2$s" : "%1$s comparticións remotas aceptadas %2$s",
"%1$s declined remote share %2$s" : "%1$s comparticións remotas declinadas %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s compartiu %1$s con vostede",
"You shared %1$s via link" : "Vostede compartiu %1$s mediante ligazón",
"Shares" : "Comparticións",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartido comigo a través do meu ID da nube federada do #ownCloud , vexa %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Compartido comigo a través do meu ID da nube federada do #ownCloud",
"This share is password-protected" : "Esta compartición está protexida con contrasinal",
"The password is wrong. Try again." : "O contrasinal é incorrecto. Ténteo de novo.",
"Password" : "Contrasinal",
@@ -58,6 +61,11 @@
"Open documentation" : "Abrir a documentación",
"Allow users on this server to send shares to other servers" : "Permitir aos usuarios deste servidor enviar comparticións a outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir aos usuarios deste servidor recibir comparticións de outros servidores",
- "Federated Cloud" : "Nube federada"
+ "Federated Cloud" : "Nube federada",
+ "Your Federated Cloud ID:" : "ID da súa nube federada:",
+ "Share it:" : "Compártao:",
+ "Add it to your website:" : "Engádao o seu sitio web:",
+ "Share with me via ownCloud" : "Compartido comigo a través do ownCloud",
+ "HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/id.js b/apps/files_sharing/l10n/id.js
index fd8b3dd810e..e6055596261 100644
--- a/apps/files_sharing/l10n/id.js
+++ b/apps/files_sharing/l10n/id.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Sandi berbagi remote",
"Cancel" : "Batal",
"Add remote share" : "Tambah berbagi remote",
+ "You can upload into this folder" : "Anda dapat mengunggah kedalam folder ini",
"No ownCloud installation (7 or higher) found at {remote}" : "Tidak ditemukan instalasi ownCloud (7 atau lebih tinggi) pada {remote}",
"Invalid ownCloud url" : "URL ownCloud tidak sah",
"Share" : "Bagikan",
@@ -28,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Sebuah berkas atau folder telah <strong>dibagikan</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Sebuah berkas atau folder telah dibagikan dari <strong>server lainnya</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Sebuah berkas atau folder berbagi publik telah <strong>diunduh</strong>",
+ "You received a new remote share %2$s from %1$s" : "Anda menerima berbagi remote baru %2$s dari %1$s",
"You received a new remote share from %s" : "Anda menerima berbagi remote baru dari %s",
"%1$s accepted remote share %2$s" : "%1$s menerima berbagi remote %2$s",
"%1$s declined remote share %2$s" : "%1$s menolak berbagi remote %2$s",
@@ -39,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s membagikan %1$s dengan Anda",
"You shared %1$s via link" : "Anda membagikan %1$s via tautan",
"Shares" : "Dibagikan",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya, lihat %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya",
"This share is password-protected" : "Berbagi ini dilindungi sandi",
"The password is wrong. Try again." : "Sandi salah. Coba lagi",
"Password" : "Sandi",
@@ -58,6 +62,12 @@ OC.L10N.register(
"Federated Cloud Sharing" : "Federated Cloud Sharing",
"Open documentation" : "Buka dokumentasi",
"Allow users on this server to send shares to other servers" : "Izinkan para pengguna di server ini untuk mengirimkan berbagi ke server lainnya.",
- "Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya."
+ "Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya.",
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Federated Cloud ID Anda:",
+ "Share it:" : "Bagikan:",
+ "Add it to your website:" : "Tambahkan ke situs web Anda:",
+ "Share with me via ownCloud" : "Dibagikan pada saya via ownCloud",
+ "HTML Code:" : "Kode HTML:"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/id.json b/apps/files_sharing/l10n/id.json
index e82b6966d24..e0f19c8537f 100644
--- a/apps/files_sharing/l10n/id.json
+++ b/apps/files_sharing/l10n/id.json
@@ -19,6 +19,7 @@
"Remote share password" : "Sandi berbagi remote",
"Cancel" : "Batal",
"Add remote share" : "Tambah berbagi remote",
+ "You can upload into this folder" : "Anda dapat mengunggah kedalam folder ini",
"No ownCloud installation (7 or higher) found at {remote}" : "Tidak ditemukan instalasi ownCloud (7 atau lebih tinggi) pada {remote}",
"Invalid ownCloud url" : "URL ownCloud tidak sah",
"Share" : "Bagikan",
@@ -26,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Sebuah berkas atau folder telah <strong>dibagikan</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Sebuah berkas atau folder telah dibagikan dari <strong>server lainnya</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Sebuah berkas atau folder berbagi publik telah <strong>diunduh</strong>",
+ "You received a new remote share %2$s from %1$s" : "Anda menerima berbagi remote baru %2$s dari %1$s",
"You received a new remote share from %s" : "Anda menerima berbagi remote baru dari %s",
"%1$s accepted remote share %2$s" : "%1$s menerima berbagi remote %2$s",
"%1$s declined remote share %2$s" : "%1$s menolak berbagi remote %2$s",
@@ -37,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s membagikan %1$s dengan Anda",
"You shared %1$s via link" : "Anda membagikan %1$s via tautan",
"Shares" : "Dibagikan",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya, lihat %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya",
"This share is password-protected" : "Berbagi ini dilindungi sandi",
"The password is wrong. Try again." : "Sandi salah. Coba lagi",
"Password" : "Sandi",
@@ -56,6 +60,12 @@
"Federated Cloud Sharing" : "Federated Cloud Sharing",
"Open documentation" : "Buka dokumentasi",
"Allow users on this server to send shares to other servers" : "Izinkan para pengguna di server ini untuk mengirimkan berbagi ke server lainnya.",
- "Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya."
+ "Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya.",
+ "Federated Cloud" : "Federated Cloud",
+ "Your Federated Cloud ID:" : "Federated Cloud ID Anda:",
+ "Share it:" : "Bagikan:",
+ "Add it to your website:" : "Tambahkan ke situs web Anda:",
+ "Share with me via ownCloud" : "Dibagikan pada saya via ownCloud",
+ "HTML Code:" : "Kode HTML:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index af62d163c41..1a5e4c0bbde 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Un file o una cartella è stato <strong>condiviso</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Un file o una cartella è stato condiviso da <strong>un altro server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Un file condiviso pubblicamente o una cartella è stato <strong>scaricato</strong>",
+ "You received a new remote share %2$s from %1$s" : "Hai ricevuto una nuova condivisione remota %2$s da %1$s",
"You received a new remote share from %s" : "Hai ricevuto una nuova condivisione remota da %s",
"%1$s accepted remote share %2$s" : "%1$s ha accettato la condivisione remota %2$s",
"%1$s declined remote share %2$s" : "%1$s ha rifiutato la condivisione remota %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s ha condiviso %1$s con te",
"You shared %1$s via link" : "Hai condiviso %1$s tramite collegamento",
"Shares" : "Condivisioni",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud",
"This share is password-protected" : "Questa condivione è protetta da password",
"The password is wrong. Try again." : "La password è errata. Prova ancora.",
"Password" : "Password",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Apri la documentazione",
"Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server",
"Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server",
- "Federated Cloud" : "Cloud federata"
+ "Federated Cloud" : "Cloud federata",
+ "Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
+ "Share it:" : "Condividilo:",
+ "Add it to your website:" : "Aggiungilo al tuo sito web:",
+ "Share with me via ownCloud" : "Condividi con me tramite ownCloud",
+ "HTML Code:" : "Codice HTML:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 1d635eae59b..319a4a44c91 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Un file o una cartella è stato <strong>condiviso</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Un file o una cartella è stato condiviso da <strong>un altro server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Un file condiviso pubblicamente o una cartella è stato <strong>scaricato</strong>",
+ "You received a new remote share %2$s from %1$s" : "Hai ricevuto una nuova condivisione remota %2$s da %1$s",
"You received a new remote share from %s" : "Hai ricevuto una nuova condivisione remota da %s",
"%1$s accepted remote share %2$s" : "%1$s ha accettato la condivisione remota %2$s",
"%1$s declined remote share %2$s" : "%1$s ha rifiutato la condivisione remota %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s ha condiviso %1$s con te",
"You shared %1$s via link" : "Hai condiviso %1$s tramite collegamento",
"Shares" : "Condivisioni",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud",
"This share is password-protected" : "Questa condivione è protetta da password",
"The password is wrong. Try again." : "La password è errata. Prova ancora.",
"Password" : "Password",
@@ -58,6 +61,11 @@
"Open documentation" : "Apri la documentazione",
"Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server",
"Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server",
- "Federated Cloud" : "Cloud federata"
+ "Federated Cloud" : "Cloud federata",
+ "Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
+ "Share it:" : "Condividilo:",
+ "Add it to your website:" : "Aggiungilo al tuo sito web:",
+ "Share with me via ownCloud" : "Condividi con me tramite ownCloud",
+ "HTML Code:" : "Codice HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index dde011c8b4d..bc81dc8dbd4 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "ファイルまたはフォルダーを<strong>共有</strong>したとき",
"A file or folder was shared from <strong>another server</strong>" : "ファイルまたはフォルダーが<strong>他のサーバー</strong>から共有されたとき",
"A public shared file or folder was <strong>downloaded</strong>" : "公開共有ファイルまたはフォルダーが<strong>ダウンロードされた</strong>とき",
+ "You received a new remote share %2$s from %1$s" : "%1$s から新しいリモート共有のリクエスト %2$s を受け取りました。",
"You received a new remote share from %s" : "%sからリモート共有のリクエストは\n届きました。",
"%1$s accepted remote share %2$s" : "%1$s は %2$s のリモート共有を承認しました。",
"%1$s declined remote share %2$s" : "%1$s は %2$s のリモート共有を拒否しました。",
@@ -59,6 +60,7 @@ OC.L10N.register(
"Federated Cloud Sharing" : "統合されたクラウド共有",
"Open documentation" : "ドキュメントを開く",
"Allow users on this server to send shares to other servers" : "ユーザーがこのサーバーから他のサーバーに共有することを許可する",
- "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する"
+ "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する",
+ "HTML Code:" : "HTMLコード:"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index 76d8d8e8968..9e9018b0ca5 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "ファイルまたはフォルダーを<strong>共有</strong>したとき",
"A file or folder was shared from <strong>another server</strong>" : "ファイルまたはフォルダーが<strong>他のサーバー</strong>から共有されたとき",
"A public shared file or folder was <strong>downloaded</strong>" : "公開共有ファイルまたはフォルダーが<strong>ダウンロードされた</strong>とき",
+ "You received a new remote share %2$s from %1$s" : "%1$s から新しいリモート共有のリクエスト %2$s を受け取りました。",
"You received a new remote share from %s" : "%sからリモート共有のリクエストは\n届きました。",
"%1$s accepted remote share %2$s" : "%1$s は %2$s のリモート共有を承認しました。",
"%1$s declined remote share %2$s" : "%1$s は %2$s のリモート共有を拒否しました。",
@@ -57,6 +58,7 @@
"Federated Cloud Sharing" : "統合されたクラウド共有",
"Open documentation" : "ドキュメントを開く",
"Allow users on this server to send shares to other servers" : "ユーザーがこのサーバーから他のサーバーに共有することを許可する",
- "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する"
+ "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する",
+ "HTML Code:" : "HTMLコード:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nb_NO.js b/apps/files_sharing/l10n/nb_NO.js
index 972f0c2e638..c6c7fb0b445 100644
--- a/apps/files_sharing/l10n/nb_NO.js
+++ b/apps/files_sharing/l10n/nb_NO.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "En offentlig delt fil eller mappe ble <strong>lastet ned</strong>",
+ "You received a new remote share %2$s from %1$s" : "Du mottok en ny ekstern deling %2$s fra %1$s",
"You received a new remote share from %s" : "Du mottok en ny ekstern deling fra %s",
"%1$s accepted remote share %2$s" : "%1$s aksepterte ekstern deling %2$s",
"%1$s declined remote share %2$s" : "%1$s avviste ekstern deling %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
"You shared %1$s via link" : "Du delte %1$s via lenke",
"Shares" : "Delinger",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky, se %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky",
"This share is password-protected" : "Denne delingen er passordbeskyttet",
"The password is wrong. Try again." : "Passordet er feil. Prøv på nytt.",
"Password" : "Passord",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Åpne dokumentasjonen",
"Allow users on this server to send shares to other servers" : "Tillat at brukere på denne serveren sender delinger til andre servere",
"Allow users on this server to receive shares from other servers" : "Tillat at brukere på denne serveren mottar delinger fra andre servere",
- "Federated Cloud" : "Sammenknyttet sky"
+ "Federated Cloud" : "Sammenknyttet sky",
+ "Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:",
+ "Share it:" : "Del den:",
+ "Add it to your website:" : "Legg den på websiden din:",
+ "Share with me via ownCloud" : "Del med meg via ownCloud",
+ "HTML Code:" : "HTML-kode:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/nb_NO.json b/apps/files_sharing/l10n/nb_NO.json
index 9e3e93a6802..43435faa5ac 100644
--- a/apps/files_sharing/l10n/nb_NO.json
+++ b/apps/files_sharing/l10n/nb_NO.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>",
"A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "En offentlig delt fil eller mappe ble <strong>lastet ned</strong>",
+ "You received a new remote share %2$s from %1$s" : "Du mottok en ny ekstern deling %2$s fra %1$s",
"You received a new remote share from %s" : "Du mottok en ny ekstern deling fra %s",
"%1$s accepted remote share %2$s" : "%1$s aksepterte ekstern deling %2$s",
"%1$s declined remote share %2$s" : "%1$s avviste ekstern deling %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
"You shared %1$s via link" : "Du delte %1$s via lenke",
"Shares" : "Delinger",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky, se %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky",
"This share is password-protected" : "Denne delingen er passordbeskyttet",
"The password is wrong. Try again." : "Passordet er feil. Prøv på nytt.",
"Password" : "Passord",
@@ -58,6 +61,11 @@
"Open documentation" : "Åpne dokumentasjonen",
"Allow users on this server to send shares to other servers" : "Tillat at brukere på denne serveren sender delinger til andre servere",
"Allow users on this server to receive shares from other servers" : "Tillat at brukere på denne serveren mottar delinger fra andre servere",
- "Federated Cloud" : "Sammenknyttet sky"
+ "Federated Cloud" : "Sammenknyttet sky",
+ "Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:",
+ "Share it:" : "Del den:",
+ "Add it to your website:" : "Legg den på websiden din:",
+ "Share with me via ownCloud" : "Del med meg via ownCloud",
+ "HTML Code:" : "HTML-kode:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index c15aa5f8d9b..b2dc1f1deab 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Een bestand of map is <strong>gedeeld</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Een bestand of map werd gedeeld vanaf <strong>een andere server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Een openbaar gedeeld bestand of map werd <strong>gedownloaded</strong>",
+ "You received a new remote share %2$s from %1$s" : "U ontving een nieuwe externe share %2$s van %1$s",
"You received a new remote share from %s" : "U ontving een nieuwe externe share van %s",
"%1$s accepted remote share %2$s" : "%1$s accepteerde externe share %2$s",
"%1$s declined remote share %2$s" : "%1$s weigerde externe share %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s deelde %1$s met u",
"You shared %1$s via link" : "U deelde %1$s via link",
"Shares" : "Gedeeld",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Deel met mij via mijn #ownCloud federated Cloud ID, zie %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Deel met mij via mijn #ownCloud federated Cloud ID",
"This share is password-protected" : "Deze share is met een wachtwoord beveiligd",
"The password is wrong. Try again." : "Wachtwoord ongeldig. Probeer het nogmaals.",
"Password" : "Wachtwoord",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Open documentatie",
"Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers",
"Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers",
- "Federated Cloud" : "Gefedereerde Cloud"
+ "Federated Cloud" : "Gefedereerde Cloud",
+ "Your Federated Cloud ID:" : "Uw Federated Cloud ID:",
+ "Share it:" : "Deel het:",
+ "Add it to your website:" : "Voeg het toe aan uw website:",
+ "Share with me via ownCloud" : "Deel met mij via ownCloud",
+ "HTML Code:" : "HTML Code:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index e4fd81d659a..e4cf032aad2 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Een bestand of map is <strong>gedeeld</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Een bestand of map werd gedeeld vanaf <strong>een andere server</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Een openbaar gedeeld bestand of map werd <strong>gedownloaded</strong>",
+ "You received a new remote share %2$s from %1$s" : "U ontving een nieuwe externe share %2$s van %1$s",
"You received a new remote share from %s" : "U ontving een nieuwe externe share van %s",
"%1$s accepted remote share %2$s" : "%1$s accepteerde externe share %2$s",
"%1$s declined remote share %2$s" : "%1$s weigerde externe share %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s deelde %1$s met u",
"You shared %1$s via link" : "U deelde %1$s via link",
"Shares" : "Gedeeld",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Deel met mij via mijn #ownCloud federated Cloud ID, zie %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Deel met mij via mijn #ownCloud federated Cloud ID",
"This share is password-protected" : "Deze share is met een wachtwoord beveiligd",
"The password is wrong. Try again." : "Wachtwoord ongeldig. Probeer het nogmaals.",
"Password" : "Wachtwoord",
@@ -58,6 +61,11 @@
"Open documentation" : "Open documentatie",
"Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers",
"Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers",
- "Federated Cloud" : "Gefedereerde Cloud"
+ "Federated Cloud" : "Gefedereerde Cloud",
+ "Your Federated Cloud ID:" : "Uw Federated Cloud ID:",
+ "Share it:" : "Deel het:",
+ "Add it to your website:" : "Voeg het toe aan uw website:",
+ "Share with me via ownCloud" : "Deel met mij via ownCloud",
+ "HTML Code:" : "HTML Code:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index 774c4760ed8..06ab247fc34 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ",
"A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhada a partir de <strong>outro servidor</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhada publicamente foi <strong>baixado</strong>",
+ "You received a new remote share %2$s from %1$s" : "Você recebeu um novo conpartilhamento remoto %2$s de %1$s",
"You received a new remote share from %s" : "Você recebeu um novo compartilhamento remoto de %s",
"%1$s accepted remote share %2$s" : "%1$s aceitou o compartilhamento remoto %2$s",
"%1$s declined remote share %2$s" : "%1$s declinou o compartilhamento remoto %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s compartilhou %1$s com você",
"You shared %1$s via link" : "Você compartilhou %1$s via link",
"Shares" : "Compartilhamentos",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID, veja %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID",
"This share is password-protected" : "Este compartilhamento esta protegido por senha",
"The password is wrong. Try again." : "Senha incorreta. Tente novamente.",
"Password" : "Senha",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores",
- "Federated Cloud" : "Nuvem Conglomerada"
+ "Federated Cloud" : "Nuvem Conglomerada",
+ "Your Federated Cloud ID:" : "Seu Federados Nuvem ID:",
+ "Share it:" : "Compartilhe:",
+ "Add it to your website:" : "Adicione ao seu site:",
+ "Share with me via ownCloud" : "Compartilhe comigo via ownCloud",
+ "HTML Code:" : "Código HTML:"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index 92ba9768473..76865b34188 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ",
"A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhada a partir de <strong>outro servidor</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhada publicamente foi <strong>baixado</strong>",
+ "You received a new remote share %2$s from %1$s" : "Você recebeu um novo conpartilhamento remoto %2$s de %1$s",
"You received a new remote share from %s" : "Você recebeu um novo compartilhamento remoto de %s",
"%1$s accepted remote share %2$s" : "%1$s aceitou o compartilhamento remoto %2$s",
"%1$s declined remote share %2$s" : "%1$s declinou o compartilhamento remoto %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s compartilhou %1$s com você",
"You shared %1$s via link" : "Você compartilhou %1$s via link",
"Shares" : "Compartilhamentos",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID, veja %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID",
"This share is password-protected" : "Este compartilhamento esta protegido por senha",
"The password is wrong. Try again." : "Senha incorreta. Tente novamente.",
"Password" : "Senha",
@@ -58,6 +61,11 @@
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores",
- "Federated Cloud" : "Nuvem Conglomerada"
+ "Federated Cloud" : "Nuvem Conglomerada",
+ "Your Federated Cloud ID:" : "Seu Federados Nuvem ID:",
+ "Share it:" : "Compartilhe:",
+ "Add it to your website:" : "Adicione ao seu site:",
+ "Share with me via ownCloud" : "Compartilhe comigo via ownCloud",
+ "HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js
index 6015d359684..f58cc27c19e 100644
--- a/apps/files_sharing/l10n/pt_PT.js
+++ b/apps/files_sharing/l10n/pt_PT.js
@@ -58,6 +58,8 @@ OC.L10N.register(
"Federated Cloud Sharing" : "Partilha de Cloud Federada",
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir utilizadores neste servidor para enviar as partilhas para outros servidores",
- "Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores"
+ "Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores",
+ "Share with me via ownCloud" : "Partilhe comigo via ownCloud",
+ "HTML Code:" : "Código HTML:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json
index e3f95d18117..cac69a145bb 100644
--- a/apps/files_sharing/l10n/pt_PT.json
+++ b/apps/files_sharing/l10n/pt_PT.json
@@ -56,6 +56,8 @@
"Federated Cloud Sharing" : "Partilha de Cloud Federada",
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir utilizadores neste servidor para enviar as partilhas para outros servidores",
- "Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores"
+ "Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores",
+ "Share with me via ownCloud" : "Partilhe comigo via ownCloud",
+ "HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index c4c347b33da..17790058fe1 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
"A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Общий файл или каталог был <strong>скачан</strong>",
+ "You received a new remote share %2$s from %1$s" : "Вы получили новый удаленный общий ресурс %2$s от %1$s",
"You received a new remote share from %s" : "%s поделился с вами удаленным общим ресурсом",
"%1$s accepted remote share %2$s" : "%1$s принял удаленный общий ресурс %2$s",
"%1$s declined remote share %2$s" : "%1$s отклонил удаленный общий ресурс %2$s",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s поделился с вами %1$s",
"You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
"Shares" : "События обмена файлами",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ, смотрите %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ",
"This share is password-protected" : "Общий ресурс защищен паролем",
"The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.",
"Password" : "Пароль",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Открыть документацию",
"Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов",
"Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов",
- "Federated Cloud" : "Объединение облачных хранилищ"
+ "Federated Cloud" : "Объединение облачных хранилищ",
+ "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
+ "Share it:" : "Поделись этим:",
+ "Add it to your website:" : "Добавь это на свой сайт:",
+ "Share with me via ownCloud" : "Поделитесь мной через ownCloud",
+ "HTML Code:" : "HTML код:"
},
"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_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index c1b3a97d074..a3fdafbed83 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог",
"A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "Общий файл или каталог был <strong>скачан</strong>",
+ "You received a new remote share %2$s from %1$s" : "Вы получили новый удаленный общий ресурс %2$s от %1$s",
"You received a new remote share from %s" : "%s поделился с вами удаленным общим ресурсом",
"%1$s accepted remote share %2$s" : "%1$s принял удаленный общий ресурс %2$s",
"%1$s declined remote share %2$s" : "%1$s отклонил удаленный общий ресурс %2$s",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s поделился с вами %1$s",
"You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
"Shares" : "События обмена файлами",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ, смотрите %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ",
"This share is password-protected" : "Общий ресурс защищен паролем",
"The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.",
"Password" : "Пароль",
@@ -58,6 +61,11 @@
"Open documentation" : "Открыть документацию",
"Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов",
"Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов",
- "Federated Cloud" : "Объединение облачных хранилищ"
+ "Federated Cloud" : "Объединение облачных хранилищ",
+ "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
+ "Share it:" : "Поделись этим:",
+ "Add it to your website:" : "Добавь это на свой сайт:",
+ "Share with me via ownCloud" : "Поделитесь мной через ownCloud",
+ "HTML Code:" : "HTML код:"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sk_SK.js b/apps/files_sharing/l10n/sk_SK.js
index 6e72a0b009b..c7e199cf4b5 100644
--- a/apps/files_sharing/l10n/sk_SK.js
+++ b/apps/files_sharing/l10n/sk_SK.js
@@ -57,6 +57,8 @@ OC.L10N.register(
"Direct link" : "Priama linka",
"Federated Cloud Sharing" : "Združené cloudové zdieľanie",
"Allow users on this server to send shares to other servers" : "Povoliť používateľom z tohoto servera posielať zdieľania na iné servery",
- "Allow users on this server to receive shares from other servers" : "Povoliť používateľom z tohoto servera prijímať zdieľania z iných serverov"
+ "Allow users on this server to receive shares from other servers" : "Povoliť používateľom z tohoto servera prijímať zdieľania z iných serverov",
+ "Your Federated Cloud ID:" : "Vaše združené Cloud ID",
+ "HTML Code:" : "HTML kód:"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/sk_SK.json b/apps/files_sharing/l10n/sk_SK.json
index 3fcef6b6cc7..d8bbbf6a57d 100644
--- a/apps/files_sharing/l10n/sk_SK.json
+++ b/apps/files_sharing/l10n/sk_SK.json
@@ -55,6 +55,8 @@
"Direct link" : "Priama linka",
"Federated Cloud Sharing" : "Združené cloudové zdieľanie",
"Allow users on this server to send shares to other servers" : "Povoliť používateľom z tohoto servera posielať zdieľania na iné servery",
- "Allow users on this server to receive shares from other servers" : "Povoliť používateľom z tohoto servera prijímať zdieľania z iných serverov"
+ "Allow users on this server to receive shares from other servers" : "Povoliť používateľom z tohoto servera prijímať zdieľania z iných serverov",
+ "Your Federated Cloud ID:" : "Vaše združené Cloud ID",
+ "HTML Code:" : "HTML kód:"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index 2666c8e3eaa..be6c0bd93fe 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -56,8 +56,9 @@ OC.L10N.register(
"Download %s" : "Prejmi %s",
"Direct link" : "Neposredna povezava",
"Federated Cloud Sharing" : "Upravljana souporaba oblaka",
- "Open documentation" : "Odprta dokumentacija",
+ "Open documentation" : "Odpri dokumentacijo",
"Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
- "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov."
+ "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov.",
+ "HTML Code:" : "Koda HTML:"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index a301a495cf1..e4ec892d764 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -54,8 +54,9 @@
"Download %s" : "Prejmi %s",
"Direct link" : "Neposredna povezava",
"Federated Cloud Sharing" : "Upravljana souporaba oblaka",
- "Open documentation" : "Odprta dokumentacija",
+ "Open documentation" : "Odpri dokumentacijo",
"Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
- "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov."
+ "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov.",
+ "HTML Code:" : "Koda HTML:"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/th_TH.js b/apps/files_sharing/l10n/th_TH.js
index f2068c21368..3314dcdb9fc 100644
--- a/apps/files_sharing/l10n/th_TH.js
+++ b/apps/files_sharing/l10n/th_TH.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "ไฟล์หรือโฟลเดอร์ได้ถูก <strong>แชร์</strong>",
"A file or folder was shared from <strong>another server</strong>" : "ไฟล์หรือโฟลเดอร์จะถูกแชร์จาก <strong>เซิร์ฟเวอร์อื่นๆ</ strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "แชร์ไฟล์หรือโฟลเดอร์สาธารณะถูก <strong>ดาวน์โหลด</strong>",
+ "You received a new remote share %2$s from %1$s" : "คุณได้รับการแชร์ระยะไกลใหม่ %2$s จาก %1$s",
"You received a new remote share from %s" : "คุณได้รับการแชร์ระยะไกลใหม่จาก %s",
"%1$s accepted remote share %2$s" : "%1$s ยอมรับการแชร์ %2$s จากระยะไกล",
"%1$s declined remote share %2$s" : "%1$s ปฏิเสธการแชร์ %2$s จากระยะไกล",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s ถูกแชร์ %1$s กับคุณ",
"You shared %1$s via link" : "คุณแชร์ %1$s ผ่านลิงค์",
"Shares" : "แชร์",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ สามารถดูได้ที่ %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ",
"This share is password-protected" : "นี้แชร์การป้องกันด้วยรหัสผ่าน",
"The password is wrong. Try again." : "รหัสผ่านที่ไม่ถูกต้อง กรุณาลองอีกครั้ง",
"Password" : "รหัสผ่าน",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "เปิดเอกสาร",
"Allow users on this server to send shares to other servers" : "อนุญาตให้ผู้ใช้บนเซิร์ฟเวอร์นี้ส่งแชร์ไปยังเซิร์ฟเวอร์อื่นๆ",
"Allow users on this server to receive shares from other servers" : "อนุญาตให้ผู้ใช้บนเซิร์ฟเวอร์นี้ได้รับการแชร์จากเซิร์ฟเวอร์อื่นๆ",
- "Federated Cloud" : "สหพันธ์คลาวด์"
+ "Federated Cloud" : "สหพันธ์คลาวด์",
+ "Your Federated Cloud ID:" : "ไอดีคลาวด์ของคุณ:",
+ "Share it:" : "แชร์มัน:",
+ "Add it to your website:" : "เพิ่มไปยังเว็บไซต์ของคุณ:",
+ "Share with me via ownCloud" : "แชร์ร่วมกับฉันผ่าน ownCloud",
+ "HTML Code:" : "โค้ด HTML:"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/th_TH.json b/apps/files_sharing/l10n/th_TH.json
index d5988c16ed7..fc9189e1c7d 100644
--- a/apps/files_sharing/l10n/th_TH.json
+++ b/apps/files_sharing/l10n/th_TH.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "ไฟล์หรือโฟลเดอร์ได้ถูก <strong>แชร์</strong>",
"A file or folder was shared from <strong>another server</strong>" : "ไฟล์หรือโฟลเดอร์จะถูกแชร์จาก <strong>เซิร์ฟเวอร์อื่นๆ</ strong>",
"A public shared file or folder was <strong>downloaded</strong>" : "แชร์ไฟล์หรือโฟลเดอร์สาธารณะถูก <strong>ดาวน์โหลด</strong>",
+ "You received a new remote share %2$s from %1$s" : "คุณได้รับการแชร์ระยะไกลใหม่ %2$s จาก %1$s",
"You received a new remote share from %s" : "คุณได้รับการแชร์ระยะไกลใหม่จาก %s",
"%1$s accepted remote share %2$s" : "%1$s ยอมรับการแชร์ %2$s จากระยะไกล",
"%1$s declined remote share %2$s" : "%1$s ปฏิเสธการแชร์ %2$s จากระยะไกล",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s ถูกแชร์ %1$s กับคุณ",
"You shared %1$s via link" : "คุณแชร์ %1$s ผ่านลิงค์",
"Shares" : "แชร์",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ สามารถดูได้ที่ %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ",
"This share is password-protected" : "นี้แชร์การป้องกันด้วยรหัสผ่าน",
"The password is wrong. Try again." : "รหัสผ่านที่ไม่ถูกต้อง กรุณาลองอีกครั้ง",
"Password" : "รหัสผ่าน",
@@ -58,6 +61,11 @@
"Open documentation" : "เปิดเอกสาร",
"Allow users on this server to send shares to other servers" : "อนุญาตให้ผู้ใช้บนเซิร์ฟเวอร์นี้ส่งแชร์ไปยังเซิร์ฟเวอร์อื่นๆ",
"Allow users on this server to receive shares from other servers" : "อนุญาตให้ผู้ใช้บนเซิร์ฟเวอร์นี้ได้รับการแชร์จากเซิร์ฟเวอร์อื่นๆ",
- "Federated Cloud" : "สหพันธ์คลาวด์"
+ "Federated Cloud" : "สหพันธ์คลาวด์",
+ "Your Federated Cloud ID:" : "ไอดีคลาวด์ของคุณ:",
+ "Share it:" : "แชร์มัน:",
+ "Add it to your website:" : "เพิ่มไปยังเว็บไซต์ของคุณ:",
+ "Share with me via ownCloud" : "แชร์ร่วมกับฉันผ่าน ownCloud",
+ "HTML Code:" : "โค้ด HTML:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index b12da13d9df..12a85f732b2 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"A file or folder has been <strong>shared</strong>" : "Bir dosya veya klasör <strong>paylaşıldı</strong>",
"A file or folder was shared from <strong>another server</strong>" : "<strong>Başka sunucudan</strong> bir dosya veya klasör paylaşıldı",
"A public shared file or folder was <strong>downloaded</strong>" : "Herkese açık paylaşılan bir dosya veya klasör <strong>indirildi</strong>",
+ "You received a new remote share %2$s from %1$s" : "%1$s kişisinden, %2$s uzak paylaşımını aldınız",
"You received a new remote share from %s" : "%s kişisinden yeni bir uzak paylaşım aldınız",
"%1$s accepted remote share %2$s" : "%1$s, %2$s uzak paylaşımını kabul etti",
"%1$s declined remote share %2$s" : "%1$s, %2$s uzak paylaşımını reddetti",
@@ -40,6 +41,8 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s sizinle %1$s dosyasını paylaştı",
"You shared %1$s via link" : "Bağlantı ile %1$s paylaşımını yaptınız",
"Shares" : "Paylaşımlar",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaşıldı, bkz %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaşıldı",
"This share is password-protected" : "Bu paylaşım parola korumalı",
"The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.",
"Password" : "Parola",
@@ -60,6 +63,11 @@ OC.L10N.register(
"Open documentation" : "Belgelendirmeyi aç",
"Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcıların diğer sunuculara paylaşım göndermelerine izin ver",
"Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcıların diğer sunuculardan paylaşım almalarına izin ver",
- "Federated Cloud" : "Birleşmiş Bulut"
+ "Federated Cloud" : "Birleşmiş Bulut",
+ "Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:",
+ "Share it:" : "Paylaşın:",
+ "Add it to your website:" : "Web sitenize ekleyin:",
+ "Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşıldı",
+ "HTML Code:" : "HTML Kodu:"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index faeb6e12abb..c6f23ef0772 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -27,6 +27,7 @@
"A file or folder has been <strong>shared</strong>" : "Bir dosya veya klasör <strong>paylaşıldı</strong>",
"A file or folder was shared from <strong>another server</strong>" : "<strong>Başka sunucudan</strong> bir dosya veya klasör paylaşıldı",
"A public shared file or folder was <strong>downloaded</strong>" : "Herkese açık paylaşılan bir dosya veya klasör <strong>indirildi</strong>",
+ "You received a new remote share %2$s from %1$s" : "%1$s kişisinden, %2$s uzak paylaşımını aldınız",
"You received a new remote share from %s" : "%s kişisinden yeni bir uzak paylaşım aldınız",
"%1$s accepted remote share %2$s" : "%1$s, %2$s uzak paylaşımını kabul etti",
"%1$s declined remote share %2$s" : "%1$s, %2$s uzak paylaşımını reddetti",
@@ -38,6 +39,8 @@
"%2$s shared %1$s with you" : "%2$s sizinle %1$s dosyasını paylaştı",
"You shared %1$s via link" : "Bağlantı ile %1$s paylaşımını yaptınız",
"Shares" : "Paylaşımlar",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaşıldı, bkz %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaşıldı",
"This share is password-protected" : "Bu paylaşım parola korumalı",
"The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.",
"Password" : "Parola",
@@ -58,6 +61,11 @@
"Open documentation" : "Belgelendirmeyi aç",
"Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcıların diğer sunuculara paylaşım göndermelerine izin ver",
"Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcıların diğer sunuculardan paylaşım almalarına izin ver",
- "Federated Cloud" : "Birleşmiş Bulut"
+ "Federated Cloud" : "Birleşmiş Bulut",
+ "Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:",
+ "Share it:" : "Paylaşın:",
+ "Add it to your website:" : "Web sitenize ekleyin:",
+ "Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşıldı",
+ "HTML Code:" : "HTML Kodu:"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js
index 18a6dde9e3a..76e9b885257 100644
--- a/apps/files_sharing/l10n/uk.js
+++ b/apps/files_sharing/l10n/uk.js
@@ -59,6 +59,9 @@ OC.L10N.register(
"Federated Cloud Sharing" : "Об’єднання хмарних сховищ",
"Open documentation" : "Відкрити документацію",
"Allow users on this server to send shares to other servers" : "Дозволити користувачам цього сервера публікувати на інших серверах",
- "Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів"
+ "Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів",
+ "Share it:" : "Поділитися цим:",
+ "Add it to your website:" : "Додати до вашого сайту:",
+ "HTML Code:" : "HTML код:"
},
"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_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json
index de200a1fe8f..74cccc1901c 100644
--- a/apps/files_sharing/l10n/uk.json
+++ b/apps/files_sharing/l10n/uk.json
@@ -57,6 +57,9 @@
"Federated Cloud Sharing" : "Об’єднання хмарних сховищ",
"Open documentation" : "Відкрити документацію",
"Allow users on this server to send shares to other servers" : "Дозволити користувачам цього сервера публікувати на інших серверах",
- "Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів"
+ "Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів",
+ "Share it:" : "Поділитися цим:",
+ "Add it to your website:" : "Додати до вашого сайту:",
+ "HTML Code:" : "HTML код:"
},"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_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index 11e71ab4819..f3bbbbcfcb9 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"This share is password-protected" : "这是一个密码保护的共享",
"The password is wrong. Try again." : "用户名或密码错误!请重试",
"Password" : "密码",
+ "No entries found in this folder" : "此文件夹中无项目",
"Name" : "名称",
"Share time" : "分享时间",
"Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
@@ -34,6 +35,8 @@ OC.L10N.register(
"Add to your ownCloud" : "添加到您的 ownCloud",
"Download" : "下载",
"Download %s" : "下载 %s",
- "Direct link" : "直接链接"
+ "Direct link" : "直接链接",
+ "Federated Cloud Sharing" : "联合云共享",
+ "Open documentation" : "打开文档"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index bc26e501a06..a8b4d45a62d 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -21,6 +21,7 @@
"This share is password-protected" : "这是一个密码保护的共享",
"The password is wrong. Try again." : "用户名或密码错误!请重试",
"Password" : "密码",
+ "No entries found in this folder" : "此文件夹中无项目",
"Name" : "名称",
"Share time" : "分享时间",
"Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
@@ -32,6 +33,8 @@
"Add to your ownCloud" : "添加到您的 ownCloud",
"Download" : "下载",
"Download %s" : "下载 %s",
- "Direct link" : "直接链接"
+ "Direct link" : "直接链接",
+ "Federated Cloud Sharing" : "联合云共享",
+ "Open documentation" : "打开文档"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/lib/activity.php b/apps/files_sharing/lib/activity.php
index a21f57235c9..e531674ddc2 100644
--- a/apps/files_sharing/lib/activity.php
+++ b/apps/files_sharing/lib/activity.php
@@ -150,6 +150,10 @@ class Activity implements IExtension {
if ($app === self::FILES_SHARING_APP) {
switch ($text) {
case self::SUBJECT_REMOTE_SHARE_RECEIVED:
+ if (sizeof($params) === 2) {
+ // New activity ownCloud 8.2+
+ return (string) $l->t('You received a new remote share %2$s from %1$s', $params);
+ }
return (string) $l->t('You received a new remote share from %s', $params);
case self::SUBJECT_REMOTE_SHARE_ACCEPTED:
return (string) $l->t('%1$s accepted remote share %2$s', $params);
@@ -190,14 +194,15 @@ class Activity implements IExtension {
if ($app === self::FILES_SHARING_APP) {
switch ($text) {
case self::SUBJECT_REMOTE_SHARE_RECEIVED:
+ case self::SUBJECT_REMOTE_SHARE_UNSHARED:
return array(
- 0 => '',// We can not use 'username' since the user is in a different ownCloud
+ 0 => 'federated_cloud_id',
+ //1 => 'file', in theory its a file, but it does not exist yet/anymore
);
case self::SUBJECT_REMOTE_SHARE_ACCEPTED:
case self::SUBJECT_REMOTE_SHARE_DECLINED:
- case self::SUBJECT_REMOTE_SHARE_UNSHARED:
return array(
- 0 => '',// We can not use 'username' since the user is in a different ownCloud
+ 0 => 'federated_cloud_id',
1 => 'file',
);
case self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED:
@@ -214,7 +219,7 @@ class Activity implements IExtension {
case self::SUBJECT_SHARED_GROUP_SELF:
return [
0 => 'file',
- //1 => 'group', Group does not exist yet
+ 1 => 'group',
];
}
}
@@ -230,7 +235,7 @@ class Activity implements IExtension {
* @return integer|false
*/
public function getGroupParameter($activity) {
- if ($activity['app'] === 'files') {
+ if ($activity['app'] === self::FILES_SHARING_APP) {
switch ($activity['subject']) {
case self::SUBJECT_SHARED_LINK_SELF:
case self::SUBJECT_SHARED_WITH_BY:
diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
index 49f5a4e8e7c..bb62e8078ad 100644
--- a/apps/files_sharing/lib/cache.php
+++ b/apps/files_sharing/lib/cache.php
@@ -120,7 +120,7 @@ class Shared_Cache extends Cache {
if (!is_int($sourceId) || $sourceId === 0) {
$sourceId = $this->storage->getSourceId();
}
- $query = \OC_DB::prepare(
+ $query = \OCP\DB::prepare(
'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`,'
. ' `size`, `mtime`, `encrypted`, `storage_mtime`, `etag`, `permissions`'
. ' FROM `*PREFIX*filecache` WHERE `fileid` = ?');
@@ -499,7 +499,7 @@ class Shared_Cache extends Cache {
*/
private function getParentInfo($id) {
$sql = 'SELECT `parent`, `name` FROM `*PREFIX*filecache` WHERE `fileid` = ?';
- $query = \OC_DB::prepare($sql);
+ $query = \OCP\DB::prepare($sql);
$result = $query->execute(array($id));
if ($row = $result->fetchRow()) {
return array((int)$row['parent'], $row['name']);
diff --git a/apps/files_sharing/lib/controllers/externalsharescontroller.php b/apps/files_sharing/lib/controllers/externalsharescontroller.php
index da0951d8e7c..494a544b2b8 100644
--- a/apps/files_sharing/lib/controllers/externalsharescontroller.php
+++ b/apps/files_sharing/lib/controllers/externalsharescontroller.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_sharing/lib/external/manager.php b/apps/files_sharing/lib/external/manager.php
index 0246e2d9c80..67a26c096c2 100644
--- a/apps/files_sharing/lib/external/manager.php
+++ b/apps/files_sharing/lib/external/manager.php
@@ -186,6 +186,7 @@ class Manager {
* accept server-to-server share
*
* @param int $id
+ * @return bool True if the share could be accepted, false otherwise
*/
public function acceptShare($id) {
@@ -204,13 +205,18 @@ class Manager {
WHERE `id` = ? AND `user` = ?');
$acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid));
$this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept');
+
+ return true;
}
+
+ return false;
}
/**
* decline server-to-server share
*
* @param int $id
+ * @return bool True if the share could be declined, false otherwise
*/
public function declineShare($id) {
@@ -221,7 +227,11 @@ class Manager {
DELETE FROM `*PREFIX*share_external` WHERE `id` = ? AND `user` = ?');
$removeShare->execute(array($id, $this->uid));
$this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline');
+
+ return true;
}
+
+ return false;
}
/**
diff --git a/apps/files_sharing/lib/external/scanner.php b/apps/files_sharing/lib/external/scanner.php
index 653d4b7dd47..60eb7c8dacd 100644
--- a/apps/files_sharing/lib/external/scanner.php
+++ b/apps/files_sharing/lib/external/scanner.php
@@ -34,7 +34,7 @@ class Scanner extends \OC\Files\Cache\Scanner {
protected $storage;
/** {@inheritDoc} */
- public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1) {
+ public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1, $lock = true) {
$this->scanAll();
}
@@ -48,9 +48,10 @@ class Scanner extends \OC\Files\Cache\Scanner {
* @param int $reuseExisting
* @param int $parentId
* @param array | null $cacheData existing data in the cache for the file to be scanned
+ * @param bool $lock set to false to disable getting an additional read lock during scanning
* @return array an array of metadata of the scanned file
*/
- public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null) {
+ public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true) {
try {
return parent::scanFile($file, $reuseExisting);
} catch (ForbiddenException $e) {
diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php
index 39e182feb60..dc8d1738b05 100644
--- a/apps/files_sharing/lib/external/storage.php
+++ b/apps/files_sharing/lib/external/storage.php
@@ -191,7 +191,7 @@ class Storage extends DAV implements ISharedStorage {
throw new StorageInvalidException();
} else {
// ownCloud instance is gone, likely to be a temporary server configuration error
- throw $e;
+ throw new StorageNotAvailableException();
}
} catch (ForbiddenException $e) {
// auth error, remove share for now (provide a dialog in the future)
@@ -201,10 +201,7 @@ class Storage extends DAV implements ISharedStorage {
} catch (\GuzzleHttp\Exception\ConnectException $e) {
throw new StorageNotAvailableException();
} catch (\GuzzleHttp\Exception\RequestException $e) {
- if ($e->getCode() === 503) {
- throw new StorageNotAvailableException();
- }
- throw $e;
+ throw new StorageNotAvailableException();
} catch (\Exception $e) {
throw $e;
}
@@ -250,16 +247,13 @@ class Storage extends DAV implements ISharedStorage {
try {
$response = $client->post($url, ['body' => ['password' => $password]]);
} catch (\GuzzleHttp\Exception\RequestException $e) {
- switch ($e->getCode()) {
- case 401:
- case 403:
+ if ($e->getCode() === 401 || $e->getCode() === 403) {
throw new ForbiddenException();
- case 404:
- throw new NotFoundException();
- case 500:
- throw new \Exception();
}
- throw $e;
+ // throw this to be on the safe side: the share will still be visible
+ // in the UI in case the failure is intermittent, and the user will
+ // be able to decide whether to remove it if it's really gone
+ throw new StorageNotAvailableException();
}
return json_decode($response->getBody(), true);
diff --git a/apps/files_sharing/lib/helper.php b/apps/files_sharing/lib/helper.php
index c76704802b1..38cb73be29c 100644
--- a/apps/files_sharing/lib/helper.php
+++ b/apps/files_sharing/lib/helper.php
@@ -55,13 +55,13 @@ class Helper {
$linkItem = \OCP\Share::getShareByToken($token, !$password);
if($linkItem === false || ($linkItem['item_type'] !== 'file' && $linkItem['item_type'] !== 'folder')) {
\OC_Response::setStatus(404);
- \OC_Log::write('core-preview', 'Passed token parameter is not valid', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core-preview', 'Passed token parameter is not valid', \OCP\Util::DEBUG);
exit;
}
if(!isset($linkItem['uid_owner']) || !isset($linkItem['file_source'])) {
\OC_Response::setStatus(500);
- \OC_Log::write('core-preview', 'Passed token seems to be valid, but it does not contain all necessary information . ("' . $token . '")', \OC_Log::WARN);
+ \OCP\Util::writeLog('core-preview', 'Passed token seems to be valid, but it does not contain all necessary information . ("' . $token . '")', \OCP\Util::WARN);
exit;
}
diff --git a/apps/files_sharing/lib/hooks.php b/apps/files_sharing/lib/hooks.php
index c3588ecdfe5..7dd04f2f4a0 100644
--- a/apps/files_sharing/lib/hooks.php
+++ b/apps/files_sharing/lib/hooks.php
@@ -2,6 +2,7 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files_sharing/lib/mountprovider.php b/apps/files_sharing/lib/mountprovider.php
index 94fb473883d..3f59fd131d0 100644
--- a/apps/files_sharing/lib/mountprovider.php
+++ b/apps/files_sharing/lib/mountprovider.php
@@ -1,14 +1,29 @@
<?php
/**
- * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
namespace OCA\Files_Sharing;
use OC\Files\Filesystem;
+use OC\User\NoUserException;
use OCA\Files_Sharing\Propagation\PropagationManager;
use OCP\Files\Config\IMountProvider;
use OCP\Files\Storage\IStorageFactory;
@@ -50,8 +65,13 @@ class MountProvider implements IMountProvider {
$shares = array_filter($shares, function ($share) {
return $share['permissions'] > 0;
});
- return array_map(function ($share) use ($user, $storageFactory) {
- Filesystem::initMountPoints($share['uid_owner']);
+ $shares = array_map(function ($share) use ($user, $storageFactory) {
+ try {
+ Filesystem::initMountPoints($share['uid_owner']);
+ } catch(NoUserException $e) {
+ \OC::$server->getLogger()->warning('The user \'' . $share['uid_owner'] . '\' of share with ID \'' . $share['id'] . '\' can\'t be retrieved.', array('app' => 'files_sharing'));
+ return null;
+ }
// for updating etags for the share owner when we make changes to this share.
$ownerPropagator = $this->propagationManager->getChangePropagator($share['uid_owner']);
@@ -68,5 +88,7 @@ class MountProvider implements IMountProvider {
$storageFactory
);
}, $shares);
+ // array_filter removes the null values from the array
+ return array_filter($shares);
}
}
diff --git a/apps/files_sharing/lib/propagation/changewatcher.php b/apps/files_sharing/lib/propagation/changewatcher.php
index 483f436e289..9f23c19be88 100644
--- a/apps/files_sharing/lib/propagation/changewatcher.php
+++ b/apps/files_sharing/lib/propagation/changewatcher.php
@@ -1,9 +1,23 @@
<?php
/**
- * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
namespace OCA\Files_Sharing\Propagation;
@@ -25,10 +39,17 @@ class ChangeWatcher {
private $baseView;
/**
+ * @var RecipientPropagator
+ */
+ private $recipientPropagator;
+
+ /**
* @param \OC\Files\View $baseView the view for the logged in user
+ * @param RecipientPropagator $recipientPropagator
*/
- public function __construct(View $baseView) {
+ public function __construct(View $baseView, RecipientPropagator $recipientPropagator) {
$this->baseView = $baseView;
+ $this->recipientPropagator = $recipientPropagator;
}
@@ -39,6 +60,12 @@ class ChangeWatcher {
if ($mount instanceof SharedMount) {
$this->propagateForOwner($mount->getShare(), $mount->getInternalPath($fullPath), $mount->getOwnerPropagator());
}
+ $info = $this->baseView->getFileInfo($path);
+ if ($info) {
+ // trigger propagation if the subject of the write hook is shared.
+ // if a parent folder of $path is shared the propagation will be triggered from the change propagator hooks
+ $this->recipientPropagator->propagateById($info->getId());
+ }
}
public function renameHook($params) {
diff --git a/apps/files_sharing/lib/propagation/propagationmanager.php b/apps/files_sharing/lib/propagation/propagationmanager.php
index fa073be7f60..7929c2aa5bb 100644
--- a/apps/files_sharing/lib/propagation/propagationmanager.php
+++ b/apps/files_sharing/lib/propagation/propagationmanager.php
@@ -1,9 +1,23 @@
<?php
/**
- * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
namespace OCA\Files_Sharing\Propagation;
@@ -75,7 +89,7 @@ class PropagationManager {
if (isset($this->sharePropagators[$user])) {
return $this->sharePropagators[$user];
}
- $this->sharePropagators[$user] = new RecipientPropagator($user, $this->getChangePropagator($user), $this->config);
+ $this->sharePropagators[$user] = new RecipientPropagator($user, $this->getChangePropagator($user), $this->config, $this);
return $this->sharePropagators[$user];
}
@@ -101,7 +115,8 @@ class PropagationManager {
if (!$user) {
return;
}
- $watcher = new ChangeWatcher(Filesystem::getView());
+ $recipientPropagator = $this->getSharePropagator($user->getUID());
+ $watcher = new ChangeWatcher(Filesystem::getView(), $recipientPropagator);
// for marking shares owned by the active user as dirty when a file inside them changes
$this->listenToOwnerChanges($user->getUID(), $user->getUID());
diff --git a/apps/files_sharing/lib/propagation/recipientpropagator.php b/apps/files_sharing/lib/propagation/recipientpropagator.php
index 5b7651f2ce7..97ea452aa6c 100644
--- a/apps/files_sharing/lib/propagation/recipientpropagator.php
+++ b/apps/files_sharing/lib/propagation/recipientpropagator.php
@@ -1,9 +1,23 @@
<?php
/**
- * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
namespace OCA\Files_Sharing\Propagation;
@@ -32,16 +46,23 @@ class RecipientPropagator {
protected $config;
/**
+ * @var PropagationManager
+ */
+ private $manager;
+
+ /**
* @param string $userId current user, must match the propagator's
* user
* @param \OC\Files\Cache\ChangePropagator $changePropagator change propagator
* initialized with a view for $user
* @param \OCP\IConfig $config
+ * @param PropagationManager $manager
*/
- public function __construct($userId, $changePropagator, $config) {
+ public function __construct($userId, $changePropagator, $config, PropagationManager $manager) {
$this->userId = $userId;
$this->changePropagator = $changePropagator;
$this->config = $config;
+ $this->manager = $manager;
}
/**
@@ -101,18 +122,24 @@ class RecipientPropagator {
*/
public function attachToPropagator(ChangePropagator $propagator, $owner) {
$propagator->listen('\OC\Files', 'propagate', function ($path, $entry) use ($owner) {
- $shares = Share::getAllSharesForFileId($entry['fileid']);
- foreach ($shares as $share) {
- // propagate down the share tree
- $this->markDirty($share, microtime(true));
+ $this->propagateById($entry['fileid']);
+ });
+ }
- // propagate up the share tree
- $user = $share['uid_owner'];
+ public function propagateById($id) {
+ $shares = Share::getAllSharesForFileId($id);
+ foreach ($shares as $share) {
+ // propagate down the share tree
+ $this->markDirty($share, microtime(true));
+
+ // propagate up the share tree
+ $user = $share['uid_owner'];
+ if($user !== $this->userId) {
$view = new View('/' . $user . '/files');
$path = $view->getPath($share['file_source']);
- $watcher = new ChangeWatcher($view);
+ $watcher = new ChangeWatcher($view, $this->manager->getSharePropagator($user));
$watcher->writeHook(['path' => $path]);
}
- });
+ }
}
}
diff --git a/apps/files_sharing/lib/readonlywrapper.php b/apps/files_sharing/lib/readonlywrapper.php
deleted file mode 100644
index a5d84f7f5a2..00000000000
--- a/apps/files_sharing/lib/readonlywrapper.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/**
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <icewind@owncloud.com>
- *
- * @copyright Copyright (c) 2015, ownCloud, Inc.
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OCA\Files_Sharing;
-
-use OC\Files\Cache\Wrapper\CachePermissionsMask;
-use OC\Files\Storage\Wrapper\Wrapper;
-use OCP\Constants;
-
-class ReadOnlyWrapper extends Wrapper {
- public function isUpdatable($path) {
- return false;
- }
-
- public function isCreatable($path) {
- return false;
- }
-
- public function isDeletable($path) {
- return false;
- }
-
- public function getPermissions($path) {
- return $this->storage->getPermissions($path) & (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE);
- }
-
- public function rename($path1, $path2) {
- return false;
- }
-
- public function touch($path, $mtime = null) {
- return false;
- }
-
- public function mkdir($path) {
- return false;
- }
-
- public function rmdir($path) {
- return false;
- }
-
- public function unlink($path) {
- return false;
- }
-
- public function getCache($path = '', $storage = null) {
- if (!$storage) {
- $storage = $this;
- }
- $sourceCache = $this->storage->getCache($path, $storage);
- return new CachePermissionsMask($sourceCache, Constants::PERMISSION_READ | Constants::PERMISSION_SHARE);
- }
-}
diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php
index 1822c2468f1..9c09e05408b 100644
--- a/apps/files_sharing/lib/share/file.php
+++ b/apps/files_sharing/lib/share/file.php
@@ -183,7 +183,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
if (isset($source['parent'])) {
$parent = $source['parent'];
while (isset($parent)) {
- $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1);
+ $query = \OCP\DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1);
$item = $query->execute(array($parent))->fetchRow();
if (isset($item['parent'])) {
$parent = $item['parent'];
diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/share/folder.php
index d7b7c0c8f30..e18839b577d 100644
--- a/apps/files_sharing/lib/share/folder.php
+++ b/apps/files_sharing/lib/share/folder.php
@@ -64,7 +64,7 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
* @return mixed parent ID or null
*/
private function getParentId($child) {
- $query = \OC_DB::prepare('SELECT `parent` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
+ $query = \OCP\DB::prepare('SELECT `parent` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
$result = $query->execute(array($child));
$row = $result->fetchRow();
$parent = ($row) ? $row['parent'] : null;
@@ -75,7 +75,7 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
public function getChildren($itemSource) {
$children = array();
$parents = array($itemSource);
- $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
+ $query = \OCP\DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
$result = $query->execute(array('httpd/unix-directory'));
if ($row = $result->fetchRow()) {
$mimetype = $row['id'];
@@ -84,7 +84,7 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
}
while (!empty($parents)) {
$parents = "'".implode("','", $parents)."'";
- $query = OC_DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache`'
+ $query = \OCP\DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache`'
.' WHERE `parent` IN ('.$parents.')');
$result = $query->execute();
$parents = array();
diff --git a/apps/files_sharing/lib/sharedmount.php b/apps/files_sharing/lib/sharedmount.php
index 15aea0aa52a..fd672d0500c 100644
--- a/apps/files_sharing/lib/sharedmount.php
+++ b/apps/files_sharing/lib/sharedmount.php
@@ -41,34 +41,40 @@ class SharedMount extends MountPoint implements MoveableMount {
*/
protected $ownerPropagator;
+ /**
+ * @var \OC\Files\View
+ */
+ private $recipientView;
+
public function __construct($storage, $mountpoint, $arguments = null, $loader = null) {
// first update the mount point before creating the parent
$this->ownerPropagator = $arguments['propagator'];
- $newMountPoint = $this->verifyMountPoint($arguments['share'], $arguments['user']);
+ $this->recipientView = new View('/' . $arguments['user'] . '/files');
+ $newMountPoint = $this->verifyMountPoint($arguments['share']);
$absMountPoint = '/' . $arguments['user'] . '/files' . $newMountPoint;
+ $arguments['ownerView'] = new View('/' . $arguments['share']['uid_owner'] . '/files');
parent::__construct($storage, $absMountPoint, $arguments, $loader);
}
/**
* check if the parent folder exists otherwise move the mount point up
*/
- private function verifyMountPoint(&$share, $user) {
+ private function verifyMountPoint(&$share) {
$mountPoint = basename($share['file_target']);
$parent = dirname($share['file_target']);
- $view = new View('/' . $user . '/files');
- if (!$view->is_dir($parent)) {
+ if (!$this->recipientView->is_dir($parent)) {
$parent = Helper::getShareFolder();
}
$newMountPoint = \OCA\Files_Sharing\Helper::generateUniqueTarget(
- \OC\Files\Filesystem::normalizePath($parent . '/' . $mountPoint),
- array(),
- new \OC\Files\View('/' . $user . '/files')
- );
+ \OC\Files\Filesystem::normalizePath($parent . '/' . $mountPoint),
+ [],
+ $this->recipientView
+ );
- if($newMountPoint !== $share['file_target']) {
+ if ($newMountPoint !== $share['file_target']) {
self::updateFileTarget($newMountPoint, $share);
$share['file_target'] = $newMountPoint;
$share['unique_name'] = true;
@@ -79,6 +85,7 @@ class SharedMount extends MountPoint implements MoveableMount {
/**
* update fileTarget in the database if the mount point changed
+ *
* @param string $newPath
* @param array $share reference to the share which should be modified
* @return bool
@@ -87,7 +94,7 @@ class SharedMount extends MountPoint implements MoveableMount {
// if the user renames a mount point from a group share we need to create a new db entry
// for the unique name
if ($share['share_type'] === \OCP\Share::SHARE_TYPE_GROUP && empty($share['unique_name'])) {
- $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`,'
+ $query = \OCP\DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`,'
.' `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`,'
.' `file_target`, `token`, `parent`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)');
$arguments = array($share['item_type'], $share['item_source'], $share['item_target'],
@@ -95,11 +102,11 @@ class SharedMount extends MountPoint implements MoveableMount {
$newPath, $share['token'], $share['id']);
} else {
// rename mount point
- $query = \OC_DB::prepare(
+ $query = \OCP\DB::prepare(
'Update `*PREFIX*share`
SET `file_target` = ?
WHERE `id` = ?'
- );
+ );
$arguments = array($newPath, $share['id']);
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index bf61dda3718..ff01489d77b 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -7,6 +7,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <rmccorkell@karoshi.org.uk>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author scambra <sergio@entrecables.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
@@ -44,8 +45,14 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
private $files = array();
private static $isInitialized = array();
+ /**
+ * @var \OC\Files\View
+ */
+ private $ownerView;
+
public function __construct($arguments) {
$this->share = $arguments['share'];
+ $this->ownerView = $arguments['ownerView'];
}
/**
@@ -622,6 +629,11 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/** @var \OCP\Files\Storage $targetStorage */
list($targetStorage, $targetInternalPath) = $this->resolvePath($path);
$targetStorage->acquireLock($targetInternalPath, $type, $provider);
+ // lock the parent folders of the owner when locking the share as recipient
+ if ($path === '') {
+ $sourcePath = $this->ownerView->getPath($this->share['file_source']);
+ $this->ownerView->lockFile(dirname($sourcePath), ILockingProvider::LOCK_SHARED, true);
+ }
}
/**
@@ -633,6 +645,11 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/** @var \OCP\Files\Storage $targetStorage */
list($targetStorage, $targetInternalPath) = $this->resolvePath($path);
$targetStorage->releaseLock($targetInternalPath, $type, $provider);
+ // unlock the parent folders of the owner when unlocking the share as recipient
+ if ($path === '') {
+ $sourcePath = $this->ownerView->getPath($this->share['file_source']);
+ $this->ownerView->unlockFile(dirname($sourcePath), ILockingProvider::LOCK_SHARED, true);
+ }
}
/**
diff --git a/apps/files_sharing/lib/updater.php b/apps/files_sharing/lib/updater.php
index 88bb68aa36e..9dd106a548c 100644
--- a/apps/files_sharing/lib/updater.php
+++ b/apps/files_sharing/lib/updater.php
@@ -77,10 +77,10 @@ class Shared_Updater {
$shareType = $params['shareType'];
if ($shareType === \OCP\Share::SHARE_TYPE_USER) {
- self::correctUsersFolder($shareWith, '/');
+ self::correctUsersFolder($shareWith, $params['fileTarget']);
} elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
foreach (\OC_Group::usersInGroup($shareWith) as $user) {
- self::correctUsersFolder($user, '/');
+ self::correctUsersFolder($user, $params['fileTarget']);
}
}
}
@@ -138,7 +138,7 @@ class Shared_Updater {
*/
static public function fixBrokenSharesOnAppUpdate() {
// delete all shares where the original file no longer exists
- $findAndRemoveShares = \OC_DB::prepare('DELETE FROM `*PREFIX*share` ' .
+ $findAndRemoveShares = \OCP\DB::prepare('DELETE FROM `*PREFIX*share` ' .
'WHERE `item_type` IN (\'file\', \'folder\') ' .
'AND `file_source` NOT IN (SELECT `fileid` FROM `*PREFIX*filecache`)'
);
diff --git a/apps/files_sharing/list.php b/apps/files_sharing/list.php
index da640fd08d3..2577ed91006 100644
--- a/apps/files_sharing/list.php
+++ b/apps/files_sharing/list.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_sharing/publicwebdav.php b/apps/files_sharing/publicwebdav.php
index b70274e6bc0..5bde908109d 100644
--- a/apps/files_sharing/publicwebdav.php
+++ b/apps/files_sharing/publicwebdav.php
@@ -1,7 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -46,8 +45,8 @@ $defaults = new OC_Defaults();
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, $defaults->getName()));
// FIXME: The following line is a workaround for legacy components relying on being able to send a GET to /
$server->addPlugin(new \OC\Connector\Sabre\DummyGetResponsePlugin());
-$server->addPlugin(new \OC\Connector\Sabre\FilesPlugin($objectTree));
-$server->addPlugin(new \OC\Connector\Sabre\MaintenancePlugin());
+$server->addPlugin(new \OC\Connector\Sabre\FilesPlugin($objectTree, true));
+$server->addPlugin(new \OC\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig()));
$server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('webdav', \OC::$server->getLogger()));
// wait with registering these until auth is handled and the filesystem is setup
@@ -65,7 +64,7 @@ $server->on('beforeMethod', function () use ($server, $objectTree, $authBackend)
if (!$isWritable) {
\OC\Files\Filesystem::addStorageWrapper('readonly', function ($mountPoint, $storage) {
- return new \OCA\Files_Sharing\ReadOnlyWrapper(array('storage' => $storage));
+ return new \OC\Files\Storage\Wrapper\PermissionsMask(array('storage' => $storage, 'mask' => \OCP\Constants::PERMISSION_READ + \OCP\Constants::PERMISSION_SHARE));
});
}
diff --git a/apps/files_sharing/settings-personal.php b/apps/files_sharing/settings-personal.php
index fdf641e1d2c..9ff94eb16c8 100644
--- a/apps/files_sharing/settings-personal.php
+++ b/apps/files_sharing/settings-personal.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index dd0b2eebe21..ffe0472b2b1 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -100,7 +100,7 @@ $thumbSize = 1024;
<div id="imgframe"></div>
<?php endif; ?>
<div class="directDownload">
- <a href="<?php p($_['downloadURL']); ?>" id="download" class="button">
+ <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button">
<img class="svg" alt="" src="<?php print_unescaped(OCP\image_path("core", "actions/download.svg")); ?>"/>
<?php p($l->t('Download %s', array($_['filename'])))?> (<?php p($_['fileSize']) ?>)
</a>
diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php
index 44c6b1dc4b9..af441b38ff2 100644
--- a/apps/files_sharing/tests/api.php
+++ b/apps/files_sharing/tests/api.php
@@ -311,6 +311,51 @@ class Test_Files_Sharing_Api extends TestCase {
* @medium
* @depends testCreateShare
*/
+ function testPublicLinkUrl() {
+ // simulate a post request
+ $_POST['path'] = $this->folder;
+ $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
+
+ $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $this->assertTrue($result->succeeded());
+ $data = $result->getData();
+
+ // check if we have a token
+ $this->assertTrue(is_string($data['token']));
+ $id = $data['id'];
+
+ // check for correct link
+ $url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
+ $this->assertEquals($url, $data['url']);
+
+ // check for link in getall shares
+ $result = \OCA\Files_Sharing\API\Local::getAllShares([]);
+ $this->assertTrue($result->succeeded());
+ $data = $result->getData();
+ $this->assertEquals($url, current($data)['url']);
+
+ // check for path
+ $_GET['path'] = $this->folder;
+ $result = \OCA\Files_Sharing\API\Local::getAllShares([]);
+ $this->assertTrue($result->succeeded());
+ $data = $result->getData();
+ $this->assertEquals($url, current($data)['url']);
+
+ // check in share id
+ $result = \OCA\Files_Sharing\API\Local::getShare(['id' => $id]);
+ $this->assertTrue($result->succeeded());
+ $data = $result->getData();
+ $this->assertEquals($url, current($data)['url']);
+
+ //Clean up share
+ $fileinfo = $this->view->getFileInfo($this->folder);
+ \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ }
+
+ /**
+ * @medium
+ * @depends testCreateShare
+ */
function testGetShareFromSource() {
$fileInfo = $this->view->getFileInfo($this->filename);
@@ -888,7 +933,6 @@ class Test_Files_Sharing_Api extends TestCase {
$this->assertEquals('1', $newUserShare['permissions']);
// update password for link share
-
$this->assertTrue(empty($linkShare['share_with']));
$params = array();
@@ -913,6 +957,29 @@ class Test_Files_Sharing_Api extends TestCase {
$this->assertTrue(is_array($newLinkShare));
$this->assertTrue(!empty($newLinkShare['share_with']));
+ // Remove password for link share
+ $params = array();
+ $params['id'] = $linkShare['id'];
+ $params['_put'] = array();
+ $params['_put']['password'] = '';
+
+ $result = \OCA\Files_Sharing\API\Local::updateShare($params);
+
+ $this->assertTrue($result->succeeded());
+
+ $items = \OCP\Share::getItemShared('file', $linkShare['file_source']);
+
+ $newLinkShare = null;
+ foreach ($items as $item) {
+ if ($item['share_type'] === \OCP\Share::SHARE_TYPE_LINK) {
+ $newLinkShare = $item;
+ break;
+ }
+ }
+
+ $this->assertTrue(is_array($newLinkShare));
+ $this->assertTrue(empty($newLinkShare['share_with']));
+
\OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
diff --git a/apps/files_sharing/tests/controller/sharecontroller.php b/apps/files_sharing/tests/controller/sharecontroller.php
index 8a075eeab9f..0b56aafc8a9 100644
--- a/apps/files_sharing/tests/controller/sharecontroller.php
+++ b/apps/files_sharing/tests/controller/sharecontroller.php
@@ -4,6 +4,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Cloutier <vincent1cloutier@gmail.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_sharing/tests/deleteorphanedsharesjobtest.php b/apps/files_sharing/tests/deleteorphanedsharesjobtest.php
index 8b5afcb9149..124cb83e6f0 100644
--- a/apps/files_sharing/tests/deleteorphanedsharesjobtest.php
+++ b/apps/files_sharing/tests/deleteorphanedsharesjobtest.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_sharing/tests/etagpropagation.php b/apps/files_sharing/tests/etagpropagation.php
index 60b7c525e35..d978daf200c 100644
--- a/apps/files_sharing/tests/etagpropagation.php
+++ b/apps/files_sharing/tests/etagpropagation.php
@@ -1,5 +1,7 @@
<?php
/**
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
@@ -69,9 +71,12 @@ class EtagPropagation extends TestCase {
$view1->mkdir('/directReshare');
$view1->mkdir('/sub1/sub2/folder/other');
$view1->mkdir('/sub1/sub2/folder/other');
+ $view1->file_put_contents('/foo.txt', 'foobar');
$view1->file_put_contents('/sub1/sub2/folder/file.txt', 'foobar');
$view1->file_put_contents('/sub1/sub2/folder/inside/file.txt', 'foobar');
$folderInfo = $view1->getFileInfo('/sub1/sub2/folder');
+ $fileInfo = $view1->getFileInfo('/foo.txt');
+ \OCP\Share::shareItem('file', $fileInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31);
\OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31);
\OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER3, 31);
$folderInfo = $view1->getFileInfo('/directReshare');
@@ -179,6 +184,15 @@ class EtagPropagation extends TestCase {
$this->assertAllUnchaged();
}
+ public function testOwnerWritesToSingleFileShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::file_put_contents('/foo.txt', 'bar');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER4, self::TEST_FILES_SHARING_API_USER3]);
+ $this->assertEtagsChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2]);
+
+ $this->assertAllUnchaged();
+ }
+
public function testOwnerWritesToShareWithReshare() {
$this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
Filesystem::file_put_contents('/sub1/sub2/folder/inside/bar.txt', 'bar');
diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js
index 1b1e363b792..aa409285ca4 100644
--- a/apps/files_sharing/tests/js/shareSpec.js
+++ b/apps/files_sharing/tests/js/shareSpec.js
@@ -90,7 +90,7 @@ describe('OCA.Sharing.Util tests', function() {
type: 'dir',
name: 'One',
path: '/subdir',
- mimetype: 'text/plain',
+ mimetype: 'httpd/unix-directory',
size: 12,
permissions: OC.PERMISSION_ALL,
etag: 'abc'
@@ -206,6 +206,23 @@ describe('OCA.Sharing.Util tests', function() {
expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-shared.svg');
expect($action.find('img').length).toEqual(1);
});
+ it('do not show static share text when share exists but neither permission nor owner is available', function() {
+ var $action, $tr;
+ fileList.setFiles([{
+ id: 1,
+ type: 'dir',
+ name: 'One',
+ path: '/subdir',
+ mimetype: 'text/plain',
+ size: 12,
+ permissions: OC.PERMISSION_CREATE,
+ etag: 'abc'
+ }]);
+ $tr = fileList.$el.find('tbody tr:first');
+ expect($tr.find('.action-share').length).toEqual(0);
+ $action = $tr.find('.action-share-notification');
+ expect($action.length).toEqual(0);
+ });
});
describe('Share action', function() {
var showDropDownStub;
diff --git a/apps/files_sharing/tests/locking.php b/apps/files_sharing/tests/locking.php
new file mode 100644
index 00000000000..6d13fc1cda5
--- /dev/null
+++ b/apps/files_sharing/tests/locking.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files_sharing\Tests;
+
+use OC\Files\Filesystem;
+use OC\Files\View;
+use OC\Lock\MemcacheLockingProvider;
+use OCP\Lock\ILockingProvider;
+
+class Locking extends TestCase {
+ /**
+ * @var \OC_User_Dummy
+ */
+ private $userBackend;
+
+ private $ownerUid;
+ private $recipientUid;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->userBackend = new \OC_User_Dummy();
+ \OC::$server->getUserManager()->registerBackend($this->userBackend);
+
+ $this->ownerUid = $this->getUniqueID('owner_');
+ $this->recipientUid = $this->getUniqueID('recipient_');
+ $this->userBackend->createUser($this->ownerUid, '');
+ $this->userBackend->createUser($this->recipientUid, '');
+
+ $this->loginAsUser($this->ownerUid);
+ Filesystem::mkdir('/foo');
+ Filesystem::file_put_contents('/foo/bar.txt', 'asd');
+ $fileId = Filesystem::getFileInfo('/foo/bar.txt')->getId();
+
+ \OCP\Share::shareItem('file', $fileId, \OCP\Share::SHARE_TYPE_USER, $this->recipientUid, 31);
+
+ $this->loginAsUser($this->recipientUid);
+ $this->assertTrue(Filesystem::file_exists('bar.txt'));
+ }
+
+ public function tearDown() {
+ \OC::$server->getUserManager()->removeBackend($this->userBackend);
+ parent::tearDown();
+ }
+
+ /**
+ * @expectedException \OCP\Lock\LockedException
+ */
+ public function testLockAsRecipient() {
+ $this->loginAsUser($this->ownerUid);
+
+ Filesystem::initMountPoints($this->recipientUid);
+ $recipientView = new View('/' . $this->recipientUid . '/files');
+ $recipientView->lockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+
+ Filesystem::rename('/foo', '/asd');
+ }
+
+ public function testUnLockAsRecipient() {
+ $this->loginAsUser($this->ownerUid);
+
+ Filesystem::initMountPoints($this->recipientUid);
+ $recipientView = new View('/' . $this->recipientUid . '/files');
+ $recipientView->lockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+ $recipientView->unlockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+
+ $this->assertTrue(Filesystem::rename('/foo', '/asd'));
+ }
+
+ public function testChangeLock() {
+
+ Filesystem::initMountPoints($this->recipientUid);
+ $recipientView = new View('/' . $this->recipientUid . '/files');
+ $recipientView->lockFile('bar.txt', ILockingProvider::LOCK_SHARED);
+ $recipientView->changeLock('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+ $recipientView->unlockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+
+ $this->assertTrue(true);
+ }
+}
diff --git a/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php b/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php
index c52036e6f5b..0db8a1ed5bc 100644
--- a/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php
+++ b/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/apps/files_sharing/tests/permissions.php b/apps/files_sharing/tests/permissions.php
index 91f0347163a..c10333defaa 100644
--- a/apps/files_sharing/tests/permissions.php
+++ b/apps/files_sharing/tests/permissions.php
@@ -3,6 +3,7 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/apps/files_sharing/tests/share.php b/apps/files_sharing/tests/share.php
index 0759d0015bd..ed21e20f751 100644
--- a/apps/files_sharing/tests/share.php
+++ b/apps/files_sharing/tests/share.php
@@ -65,7 +65,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
parent::tearDown();
}
- function testUnshareFromSelf() {
+ public function testUnshareFromSelf() {
\OC_Group::createGroup('testGroup');
\OC_Group::addToGroup(self::TEST_FILES_SHARING_API_USER2, 'testGroup');
@@ -103,7 +103,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
/**
* if a file was shared as group share and as individual share they should be grouped
*/
- function testGroupingOfShares() {
+ public function testGroupingOfShares() {
$fileinfo = $this->view->getFileInfo($this->filename);
@@ -171,7 +171,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
* single user share to user2. If he re-shares the file to user2 the same target
* then the group share should be used to group the item
*/
- function testShareAndUnshareFromSelf() {
+ public function testShareAndUnshareFromSelf() {
$fileinfo = $this->view->getFileInfo($this->filename);
// share the file to group1 (user2 is a member of this group) and explicitely to user2
@@ -217,7 +217,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
}
- function verifyDirContent($content, $expected) {
+ public function verifyDirContent($content, $expected) {
foreach ($content as $c) {
if (!in_array($c['name'], $expected)) {
$this->assertTrue(false, "folder should only contain '" . implode(',', $expected) . "', found: " .$c['name']);
@@ -225,7 +225,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
}
}
- function testShareWithDifferentShareFolder() {
+ public function testShareWithDifferentShareFolder() {
$fileinfo = $this->view->getFileInfo($this->filename);
$folderinfo = $this->view->getFileInfo($this->folder);
@@ -249,7 +249,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
\OC::$server->getConfig()->deleteSystemValue('share_folder');
}
- function testShareWithGroupUniqueName() {
+ public function testShareWithGroupUniqueName() {
$this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
\OC\Files\Filesystem::file_put_contents('test.txt', 'test');
@@ -283,9 +283,9 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
/**
* shared files should never have delete permissions
- * @dataProvider DataProviderTestFileSharePermissions
+ * @dataProvider dataProviderTestFileSharePermissions
*/
- function testFileSharePermissions($permission, $expectedPermissions) {
+ public function testFileSharePermissions($permission, $expectedPermissions) {
$fileinfo = $this->view->getFileInfo($this->filename);
@@ -305,7 +305,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
$this->assertSame($expectedPermissions, $share['permissions']);
}
- function DataProviderTestFileSharePermissions() {
+ public function dataProviderTestFileSharePermissions() {
$permission1 = \OCP\Constants::PERMISSION_ALL;
$permission3 = \OCP\Constants::PERMISSION_READ;
$permission4 = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE;
@@ -321,4 +321,134 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
);
}
+ /**
+ * @dataProvider dataProviderGetUsersSharingFile
+ *
+ * @param string $groupName name of group to share with
+ * @param bool $includeOwner whether to include the owner in the result
+ * @param bool $includePaths whether to include paths in the result
+ * @param array $expectedResult expected result of the API call
+ */
+ public function testGetUsersSharingFile($groupName, $includeOwner, $includePaths, $expectedResult) {
+
+ $fileinfo = $this->view->getFileInfo($this->folder);
+
+ $result = \OCP\Share::shareItem('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP,
+ $groupName, \OCP\Constants::PERMISSION_READ);
+ $this->assertTrue($result);
+
+ // public share
+ $result = \OCP\Share::shareItem('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK,
+ null, \OCP\Constants::PERMISSION_READ);
+ $this->assertNotNull($result); // returns the token!
+
+ // owner renames after sharing
+ $this->view->rename($this->folder, $this->folder . '_owner_renamed');
+
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
+
+ $user2View = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
+ $user2View->rename($this->folder, $this->folder . '_renamed');
+
+ $ownerPath = $this->folder . '_owner_renamed';
+ $owner = self::TEST_FILES_SHARING_API_USER1;
+
+ $result = \OCP\Share::getUsersSharingFile($ownerPath, $owner, $includeOwner, $includePaths);
+
+ // sort users to make sure it matches
+ if ($includePaths) {
+ ksort($result);
+ } else {
+ sort($result['users']);
+ }
+
+ $this->assertEquals(
+ $expectedResult,
+ $result
+ );
+ }
+
+ public function dataProviderGetUsersSharingFile() {
+ // note: "group" contains user1 (the owner), user2 and user3
+ // and self::TEST_FILES_SHARING_API_GROUP1 contains only user2
+ return [
+ // share with group that contains owner
+ [
+ 'group',
+ false,
+ false,
+ [
+ 'users' =>
+ [
+ // because user1 was in group
+ self::TEST_FILES_SHARING_API_USER1,
+ self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3,
+ ],
+ 'public' => true,
+ 'remote' => false,
+ ],
+ ],
+ // share with group that does not contain owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ false,
+ false,
+ [
+ 'users' =>
+ [
+ self::TEST_FILES_SHARING_API_USER2,
+ ],
+ 'public' => true,
+ 'remote' => false,
+ ],
+ ],
+ // share with group that does not contain owner, include owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ true,
+ false,
+ [
+ 'users' =>
+ [
+ self::TEST_FILES_SHARING_API_USER1,
+ self::TEST_FILES_SHARING_API_USER2,
+ ],
+ 'public' => true,
+ 'remote' => false,
+ ],
+ ],
+ // include paths, with owner
+ [
+ 'group',
+ true,
+ true,
+ [
+ self::TEST_FILES_SHARING_API_USER1 => self::TEST_FOLDER_NAME . '_owner_renamed',
+ self::TEST_FILES_SHARING_API_USER2 => self::TEST_FOLDER_NAME . '_renamed',
+ self::TEST_FILES_SHARING_API_USER3 => self::TEST_FOLDER_NAME,
+ ],
+ ],
+ // include paths, group without owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ false,
+ true,
+ [
+ self::TEST_FILES_SHARING_API_USER2 => self::TEST_FOLDER_NAME. '_renamed',
+ ],
+ ],
+ // include paths, include owner, group without owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ true,
+ true,
+ [
+ self::TEST_FILES_SHARING_API_USER1 => self::TEST_FOLDER_NAME . '_owner_renamed',
+ self::TEST_FILES_SHARING_API_USER2 => self::TEST_FOLDER_NAME . '_renamed',
+ ],
+ ],
+ ];
+ }
+
}
diff --git a/apps/files_sharing/tests/sharedmount.php b/apps/files_sharing/tests/sharedmount.php
index ff4cb4c0e49..d1db6a644f0 100644
--- a/apps/files_sharing/tests/sharedmount.php
+++ b/apps/files_sharing/tests/sharedmount.php
@@ -5,6 +5,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
@@ -61,11 +62,11 @@ class Test_Files_Sharing_Mount extends OCA\Files_sharing\Tests\TestCase {
self::TEST_FILES_SHARING_API_USER2, 31);
$statement = "UPDATE `*PREFIX*share` SET `file_target` = ? where `share_with` = ?";
- $query = \OC_DB::prepare($statement);
+ $query = \OCP\DB::prepare($statement);
$arguments = array('/foo/bar' . $this->folder, self::TEST_FILES_SHARING_API_USER2);
$query->execute($arguments);
- $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share`');
+ $query = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`');
$result = $query->execute();
$shares = $result->fetchAll();
@@ -79,7 +80,7 @@ class Test_Files_Sharing_Mount extends OCA\Files_sharing\Tests\TestCase {
// share should have moved up
- $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share`');
+ $query = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`');
$result = $query->execute();
$shares = $result->fetchAll();
diff --git a/apps/files_sharing/tests/sizepropagation.php b/apps/files_sharing/tests/sizepropagation.php
index 4ab3475ccfc..dbaa316f603 100644
--- a/apps/files_sharing/tests/sizepropagation.php
+++ b/apps/files_sharing/tests/sizepropagation.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Vincent Petry <pvince81@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files_sharing/tests/unsharechildren.php b/apps/files_sharing/tests/unsharechildren.php
index b49180fdc83..c57070ba641 100644
--- a/apps/files_sharing/tests/unsharechildren.php
+++ b/apps/files_sharing/tests/unsharechildren.php
@@ -3,7 +3,7 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Robin Appelman <icewind@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
@@ -40,7 +40,7 @@ class UnshareChildren extends TestCase {
\OCP\Util::connectHook('OC_Filesystem', 'post_delete', '\OCA\Files_Sharing\Hooks', 'unshareChildren');
$this->folder = self::TEST_FOLDER_NAME;
- $this->subfolder = '/subfolder_share_api_test';
+ $this->subfolder = '/subfolder_share_api_test';
$this->subsubfolder = '/subsubfolder_share_api_test';
$this->filename = '/share-api-test';
@@ -49,12 +49,14 @@ class UnshareChildren extends TestCase {
$this->view->mkdir($this->folder);
$this->view->mkdir($this->folder . $this->subfolder);
$this->view->mkdir($this->folder . $this->subfolder . $this->subsubfolder);
- $this->view->file_put_contents($this->folder.$this->filename, $this->data);
+ $this->view->file_put_contents($this->folder . $this->filename, $this->data);
$this->view->file_put_contents($this->folder . $this->subfolder . $this->filename, $this->data);
}
protected function tearDown() {
- $this->view->deleteAll($this->folder);
+ if ($this->view) {
+ $this->view->deleteAll($this->folder);
+ }
self::$tempStorage = null;
diff --git a/apps/files_sharing/tests/updater.php b/apps/files_sharing/tests/updater.php
index 294388bfe26..63ab452a5e1 100644
--- a/apps/files_sharing/tests/updater.php
+++ b/apps/files_sharing/tests/updater.php
@@ -3,7 +3,6 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
@@ -117,14 +116,34 @@ class Test_Files_Sharing_Updater extends OCA\Files_Sharing\Tests\TestCase {
\OC\Files\Filesystem::getLoader()->removeStorageWrapper('oc_trashbin');
}
+ public function shareFolderProvider() {
+ return [
+ ['/'],
+ ['/my_shares'],
+ ];
+ }
+
/**
* if a file gets shared the etag for the recipients root should change
+ *
+ * @dataProvider shareFolderProvider
+ *
+ * @param string $shareFolder share folder to use
*/
- function testShareFile() {
+ public function testShareFile($shareFolder) {
+ $config = \OC::$server->getConfig();
+ $oldShareFolder = $config->getSystemValue('share_folder');
+ $config->setSystemValue('share_folder', $shareFolder);
+
$this->loginHelper(self::TEST_FILES_SHARING_API_USER2);
- $beforeShare = \OC\Files\Filesystem::getFileInfo('');
- $etagBeforeShare = $beforeShare->getEtag();
+ $beforeShareRoot = \OC\Files\Filesystem::getFileInfo('');
+ $etagBeforeShareRoot = $beforeShareRoot->getEtag();
+
+ \OC\Files\Filesystem::mkdir($shareFolder);
+
+ $beforeShareDir = \OC\Files\Filesystem::getFileInfo($shareFolder);
+ $etagBeforeShareDir = $beforeShareDir->getEtag();
$this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
$fileinfo = \OC\Files\Filesystem::getFileInfo($this->folder);
@@ -133,17 +152,25 @@ class Test_Files_Sharing_Updater extends OCA\Files_Sharing\Tests\TestCase {
$this->loginHelper(self::TEST_FILES_SHARING_API_USER2);
- $afterShare = \OC\Files\Filesystem::getFileInfo('');
- $etagAfterShare = $afterShare->getEtag();
+ $afterShareRoot = \OC\Files\Filesystem::getFileInfo('');
+ $etagAfterShareRoot = $afterShareRoot->getEtag();
+
+ $afterShareDir = \OC\Files\Filesystem::getFileInfo($shareFolder);
+ $etagAfterShareDir = $afterShareDir->getEtag();
- $this->assertTrue(is_string($etagBeforeShare));
- $this->assertTrue(is_string($etagAfterShare));
- $this->assertTrue($etagBeforeShare !== $etagAfterShare);
+ $this->assertTrue(is_string($etagBeforeShareRoot));
+ $this->assertTrue(is_string($etagBeforeShareDir));
+ $this->assertTrue(is_string($etagAfterShareRoot));
+ $this->assertTrue(is_string($etagAfterShareDir));
+ $this->assertTrue($etagBeforeShareRoot !== $etagAfterShareRoot);
+ $this->assertTrue($etagBeforeShareDir !== $etagAfterShareDir);
// cleanup
$this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
$result = \OCP\Share::unshare('folder', $fileinfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2);
$this->assertTrue($result);
+
+ $config->setSystemValue('share_folder', $oldShareFolder);
}
/**
diff --git a/apps/files_sharing/tests/watcher.php b/apps/files_sharing/tests/watcher.php
index 4af5de6aaae..488792db4ef 100644
--- a/apps/files_sharing/tests/watcher.php
+++ b/apps/files_sharing/tests/watcher.php
@@ -4,6 +4,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/apps/files_trashbin/ajax/delete.php b/apps/files_trashbin/ajax/delete.php
index 944e353b1eb..63002671bfa 100644
--- a/apps/files_trashbin/ajax/delete.php
+++ b/apps/files_trashbin/ajax/delete.php
@@ -3,7 +3,6 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <schiessle@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
@@ -65,7 +64,7 @@ foreach ($list as $file) {
OCA\Files_Trashbin\Trashbin::delete($filename, \OCP\User::getUser(), $timestamp);
if (OCA\Files_Trashbin\Trashbin::file_exists($filename, $timestamp)) {
$error[] = $filename;
- OC_Log::write('trashbin','can\'t delete ' . $filename . ' permanently.', OC_Log::ERROR);
+ \OCP\Util::writeLog('trashbin','can\'t delete ' . $filename . ' permanently.', \OCP\Util::ERROR);
}
// only list deleted files if not deleting everything
else if (!$deleteAll) {
diff --git a/apps/files_trashbin/ajax/list.php b/apps/files_trashbin/ajax/list.php
index a777bdcf124..46168f7865e 100644
--- a/apps/files_trashbin/ajax/list.php
+++ b/apps/files_trashbin/ajax/list.php
@@ -2,7 +2,6 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_trashbin/ajax/preview.php b/apps/files_trashbin/ajax/preview.php
index af86dafa496..c8bae2c5ce9 100644
--- a/apps/files_trashbin/ajax/preview.php
+++ b/apps/files_trashbin/ajax/preview.php
@@ -3,7 +3,6 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Georg Ehrke <georg@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
@@ -36,13 +35,13 @@ $scalingUp = array_key_exists('scalingup', $_GET) ? (bool) $_GET['scalingup'] :
if($file === '') {
\OC_Response::setStatus(400); //400 Bad Request
- \OC_Log::write('core-preview', 'No file parameter was passed', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core-preview', 'No file parameter was passed', \OCP\Util::DEBUG);
exit;
}
if($maxX === 0 || $maxY === 0) {
\OC_Response::setStatus(400); //400 Bad Request
- \OC_Log::write('core-preview', 'x and/or y set to 0', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core-preview', 'x and/or y set to 0', \OCP\Util::DEBUG);
exit;
}
@@ -72,5 +71,5 @@ try{
$preview->showPreview();
}catch(\Exception $e) {
\OC_Response::setStatus(500);
- \OC_Log::write('core', $e->getmessage(), \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::DEBUG);
}
diff --git a/apps/files_trashbin/ajax/undelete.php b/apps/files_trashbin/ajax/undelete.php
index e7d8562f57d..8eda7a8d640 100644
--- a/apps/files_trashbin/ajax/undelete.php
+++ b/apps/files_trashbin/ajax/undelete.php
@@ -3,7 +3,6 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <schiessle@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -71,7 +70,7 @@ foreach ($list as $file) {
if ( !OCA\Files_Trashbin\Trashbin::restore($path, $filename, $timestamp) ) {
$error[] = $filename;
- OC_Log::write('trashbin', 'can\'t restore ' . $filename, OC_Log::ERROR);
+ \OCP\Util::writeLog('trashbin', 'can\'t restore ' . $filename, \OCP\Util::ERROR);
} else {
$success[$i]['filename'] = $file;
$success[$i]['timestamp'] = $timestamp;
diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml
index 8735b61e2db..f8bc5e7d3d2 100644
--- a/apps/files_trashbin/appinfo/info.xml
+++ b/apps/files_trashbin/appinfo/info.xml
@@ -18,5 +18,4 @@ To prevent a user from running out of disk space, the ownCloud Deleted files app
<documentation>
<user>user-trashbin</user>
</documentation>
- <ocsid>166052</ocsid>
</info>
diff --git a/apps/files_trashbin/appinfo/register_command.php b/apps/files_trashbin/appinfo/register_command.php
new file mode 100644
index 00000000000..ae4196dd506
--- /dev/null
+++ b/apps/files_trashbin/appinfo/register_command.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+
+use OCA\Files_Trashbin\Command\CleanUp;
+
+$userManager = OC::$server->getUserManager();
+$rootFolder = \OC::$server->getRootFolder();
+$dbConnection = \OC::$server->getDatabaseConnection();
+/** @var Symfony\Component\Console\Application $application */
+$application->add(new CleanUp($rootFolder, $userManager, $dbConnection));
diff --git a/apps/files_trashbin/appinfo/routes.php b/apps/files_trashbin/appinfo/routes.php
index 526ad1d4e35..99a03d6b969 100644
--- a/apps/files_trashbin/appinfo/routes.php
+++ b/apps/files_trashbin/appinfo/routes.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Georg Ehrke <georg@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files_trashbin/appinfo/update.php b/apps/files_trashbin/appinfo/update.php
index 94bd353eccc..e1a0cf95576 100644
--- a/apps/files_trashbin/appinfo/update.php
+++ b/apps/files_trashbin/appinfo/update.php
@@ -2,7 +2,6 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Christopher Schäpers <kondou@ts.unde.re>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_trashbin/appinfo/version b/apps/files_trashbin/appinfo/version
index b6160487433..844f6a91acb 100644
--- a/apps/files_trashbin/appinfo/version
+++ b/apps/files_trashbin/appinfo/version
@@ -1 +1 @@
-0.6.2
+0.6.3
diff --git a/apps/files_trashbin/command/cleanup.php b/apps/files_trashbin/command/cleanup.php
new file mode 100644
index 00000000000..961f72763ea
--- /dev/null
+++ b/apps/files_trashbin/command/cleanup.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files_Trashbin\Command;
+
+use OCP\Files\IRootFolder;
+use OCP\IDBConnection;
+use OCP\IUserBackend;
+use OCP\IUserManager;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class CleanUp extends Command {
+
+ /** @var IUserManager */
+ protected $userManager;
+
+ /** @var IRootFolder */
+ protected $rootFolder;
+
+ /** @var \OC\DB\Connection */
+ protected $dbConnection;
+
+ /**
+ * @param IRootFolder $rootFolder
+ * @param IUserManager $userManager
+ * @param IDBConnection $dbConnection
+ */
+ function __construct(IRootFolder $rootFolder, IUserManager $userManager, IDBConnection $dbConnection) {
+ parent::__construct();
+ $this->userManager = $userManager;
+ $this->rootFolder = $rootFolder;
+ $this->dbConnection = $dbConnection;
+ }
+
+ protected function configure() {
+ $this
+ ->setName('trashbin:cleanup')
+ ->setDescription('Remove deleted files')
+ ->addArgument(
+ 'user_id',
+ InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
+ 'remove deleted files of the given user(s), if no user is given all deleted files will be removed'
+ );
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $users = $input->getArgument('user_id');
+ if (!empty($users)) {
+ foreach ($users as $user) {
+ if ($this->userManager->userExists($user)) {
+ $output->writeln("Remove deleted files of <info>$user</info>");
+ $this->removeDeletedFiles($user);
+ } else {
+ $output->writeln("<error>Unknown user $user</error>");
+ }
+ }
+ } else {
+ $output->writeln('Remove all deleted files');
+ foreach ($this->userManager->getBackends() as $backend) {
+ $name = get_class($backend);
+ if ($backend instanceof IUserBackend) {
+ $name = $backend->getBackendName();
+ }
+ $output->writeln("Remove deleted files for users on backend <info>$name</info>");
+ $limit = 500;
+ $offset = 0;
+ do {
+ $users = $backend->getUsers('', $limit, $offset);
+ foreach ($users as $user) {
+ $output->writeln(" <info>$user</info>");
+ $this->removeDeletedFiles($user);
+ }
+ $offset += $limit;
+ } while (count($users) >= $limit);
+ }
+ }
+ }
+
+ /**
+ * remove deleted files for the given user
+ *
+ * @param string $uid
+ */
+ protected function removeDeletedFiles($uid) {
+ \OC_Util::tearDownFS();
+ \OC_Util::setupFS($uid);
+ if ($this->rootFolder->nodeExists('/' . $uid . '/files_trashbin')) {
+ $this->rootFolder->get('/' . $uid . '/files_trashbin')->delete();
+ $query = $this->dbConnection->createQueryBuilder();
+ $query->delete('`*PREFIX*files_trash`')
+ ->where($query->expr()->eq('`user`', ':uid'))
+ ->setParameter('uid', $uid);
+ $query->execute();
+ }
+ }
+
+}
diff --git a/apps/files_trashbin/command/expire.php b/apps/files_trashbin/command/expire.php
index e7dd5c573c2..89b949bbcdf 100644
--- a/apps/files_trashbin/command/expire.php
+++ b/apps/files_trashbin/command/expire.php
@@ -1,7 +1,10 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files_trashbin/l10n/be.js b/apps/files_trashbin/l10n/be.js
index 3ed1bc6464a..c72c72bbe91 100644
--- a/apps/files_trashbin/l10n/be.js
+++ b/apps/files_trashbin/l10n/be.js
@@ -3,4 +3,4 @@ OC.L10N.register(
{
"Error" : "Памылка"
},
-"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"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_trashbin/l10n/be.json b/apps/files_trashbin/l10n/be.json
index 501bc5f7dfb..a2514254e13 100644
--- a/apps/files_trashbin/l10n/be.json
+++ b/apps/files_trashbin/l10n/be.json
@@ -1,4 +1,4 @@
{ "translations": {
"Error" : "Памылка"
-},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/et_EE.js b/apps/files_trashbin/l10n/et_EE.js
index 4e74390edb1..9298fdd5b18 100644
--- a/apps/files_trashbin/l10n/et_EE.js
+++ b/apps/files_trashbin/l10n/et_EE.js
@@ -9,6 +9,7 @@ OC.L10N.register(
"Error" : "Viga",
"restored" : "taastatud",
"No deleted files" : "Kustutatud faile pole",
+ "You will be able to recover deleted files from here" : "Sa saad siit kustutatud faile taastada",
"No entries found in this folder" : "Selles kaustas ei leitud kirjeid",
"Select all" : "Vali kõik",
"Name" : "Nimi",
diff --git a/apps/files_trashbin/l10n/et_EE.json b/apps/files_trashbin/l10n/et_EE.json
index fa3aab09ba1..734c8f6f2ec 100644
--- a/apps/files_trashbin/l10n/et_EE.json
+++ b/apps/files_trashbin/l10n/et_EE.json
@@ -7,6 +7,7 @@
"Error" : "Viga",
"restored" : "taastatud",
"No deleted files" : "Kustutatud faile pole",
+ "You will be able to recover deleted files from here" : "Sa saad siit kustutatud faile taastada",
"No entries found in this folder" : "Selles kaustas ei leitud kirjeid",
"Select all" : "Vali kõik",
"Name" : "Nimi",
diff --git a/apps/files_trashbin/l10n/zh_CN.js b/apps/files_trashbin/l10n/zh_CN.js
index 8c9512b1d66..0ef17e35d62 100644
--- a/apps/files_trashbin/l10n/zh_CN.js
+++ b/apps/files_trashbin/l10n/zh_CN.js
@@ -8,6 +8,9 @@ OC.L10N.register(
"Delete permanently" : "永久删除",
"Error" : "错误",
"restored" : "已恢复",
+ "No deleted files" : "无已删除文件",
+ "You will be able to recover deleted files from here" : "你可以在此处恢复已删除的文件",
+ "No entries found in this folder" : "此文件夹中无项目",
"Select all" : "全部选择",
"Name" : "名称",
"Deleted" : "已删除",
diff --git a/apps/files_trashbin/l10n/zh_CN.json b/apps/files_trashbin/l10n/zh_CN.json
index 895d235aadb..0349f643555 100644
--- a/apps/files_trashbin/l10n/zh_CN.json
+++ b/apps/files_trashbin/l10n/zh_CN.json
@@ -6,6 +6,9 @@
"Delete permanently" : "永久删除",
"Error" : "错误",
"restored" : "已恢复",
+ "No deleted files" : "无已删除文件",
+ "You will be able to recover deleted files from here" : "你可以在此处恢复已删除的文件",
+ "No entries found in this folder" : "此文件夹中无项目",
"Select all" : "全部选择",
"Name" : "名称",
"Deleted" : "已删除",
diff --git a/apps/files_trashbin/lib/helper.php b/apps/files_trashbin/lib/helper.php
index 320ad2eeb8e..42412d5d4c9 100644
--- a/apps/files_trashbin/lib/helper.php
+++ b/apps/files_trashbin/lib/helper.php
@@ -3,7 +3,6 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <rmccorkell@karoshi.org.uk>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php
index b30ea7c69f8..8b666c56c66 100644
--- a/apps/files_trashbin/lib/trashbin.php
+++ b/apps/files_trashbin/lib/trashbin.php
@@ -5,13 +5,13 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Florin Peter <github@florin-peter.de>
* @author Georg Ehrke <georg@owncloud.com>
- * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Qingping Hou <dave2008713@gmail.com>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <rmccorkell@karoshi.org.uk>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Sjors van der Pluijm <sjors@desjors.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Victor Dubiniuk <dubiniuk@owncloud.com>
@@ -160,7 +160,7 @@ class Trashbin {
$query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`user`) VALUES (?,?,?,?)");
$result = $query->execute(array($ownerFilename, $timestamp, $ownerLocation, $owner));
if (!$result) {
- \OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated for the files owner', \OC_log::ERROR);
+ \OCP\Util::writeLog('files_trashbin', 'trash bin database couldn\'t be updated for the files owner', \OCP\Util::ERROR);
}
}
}
@@ -216,7 +216,7 @@ class Trashbin {
if ($trashStorage->file_exists($trashInternalPath)) {
$trashStorage->unlink($trashInternalPath);
}
- \OC_Log::write('files_trashbin', 'Couldn\'t move ' . $file_path . ' to the trash bin', \OC_log::ERROR);
+ \OCP\Util::writeLog('files_trashbin', 'Couldn\'t move ' . $file_path . ' to the trash bin', \OCP\Util::ERROR);
}
if ($sourceStorage->file_exists($sourceInternalPath)) { // failed to delete the original file, abort
@@ -231,7 +231,7 @@ class Trashbin {
$query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`user`) VALUES (?,?,?,?)");
$result = $query->execute(array($filename, $timestamp, $location, $user));
if (!$result) {
- \OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR);
+ \OCP\Util::writeLog('files_trashbin', 'trash bin database couldn\'t be updated', \OCP\Util::ERROR);
}
\OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_moveToTrash', array('filePath' => \OC\Files\Filesystem::normalizePath($file_path),
'trashPath' => \OC\Files\Filesystem::normalizePath($filename . '.d' . $timestamp)));
@@ -358,7 +358,7 @@ class Trashbin {
if ($timestamp) {
$location = self::getLocation($user, $filename, $timestamp);
if ($location === false) {
- \OC_Log::write('files_trashbin', 'trash bin database inconsistent!', \OC_Log::ERROR);
+ \OCP\Util::writeLog('files_trashbin', 'trash bin database inconsistent!', \OCP\Util::ERROR);
} else {
// if location no longer exists, restore file in the root directory
if ($location !== '/' &&
@@ -675,7 +675,7 @@ class Trashbin {
foreach ($files as $file) {
if ($availableSpace < 0) {
$tmp = self::delete($file['name'], $user, $file['mtime']);
- \OC_Log::write('files_trashbin', 'remove "' . $file['name'] . '" (' . $tmp . 'B) to meet the limit of trash bin size (50% of available quota)', \OC_log::INFO);
+ \OCP\Util::writeLog('files_trashbin', 'remove "' . $file['name'] . '" (' . $tmp . 'B) to meet the limit of trash bin size (50% of available quota)', \OCP\Util::INFO);
$availableSpace += $tmp;
$size += $tmp;
} else {
@@ -704,7 +704,7 @@ class Trashbin {
if ($timestamp <= $limit) {
$count++;
$size += self::delete($filename, $user, $timestamp);
- \OC_Log::write('files_trashbin', 'remove "' . $filename . '" from trash bin because it is older than ' . $retention_obligation, \OC_log::INFO);
+ \OCP\Util::writeLog('files_trashbin', 'remove "' . $filename . '" from trash bin because it is older than ' . $retention_obligation, \OCP\Util::INFO);
} else {
break;
}
diff --git a/apps/files_trashbin/list.php b/apps/files_trashbin/list.php
index 68602ef8d8a..890f03aa09a 100644
--- a/apps/files_trashbin/list.php
+++ b/apps/files_trashbin/list.php
@@ -2,7 +2,6 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <schiessle@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_trashbin/tests/command/cleanuptest.php b/apps/files_trashbin/tests/command/cleanuptest.php
new file mode 100644
index 00000000000..6e2f78093e0
--- /dev/null
+++ b/apps/files_trashbin/tests/command/cleanuptest.php
@@ -0,0 +1,192 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+
+namespace OCA\Files_Trashbin\Tests\Command;
+
+
+use OCA\Files_Trashbin\Command\CleanUp;
+use Test\TestCase;
+use OC\User\Manager;
+use OCP\Files\IRootFolder;
+
+class CleanUpTest extends TestCase {
+
+ /** @var CleanUp */
+ protected $cleanup;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject | Manager */
+ protected $userManager;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject | IRootFolder */
+ protected $rootFolder;
+
+ /** @var \OC\DB\Connection */
+ protected $dbConnection;
+
+ /** @var string */
+ protected $trashTable = '`*PREFIX*files_trash`';
+
+ /** @var string */
+ protected $user0 = 'user0';
+
+ public function setUp() {
+ parent::setUp();
+ $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')
+ ->disableOriginalConstructor()->getMock();
+ $this->userManager = $this->getMockBuilder('OC\User\Manager')
+ ->disableOriginalConstructor()->getMock();
+
+ $this->dbConnection = \OC::$server->getDatabaseConnection();
+
+ $this->cleanup = new CleanUp($this->rootFolder, $this->userManager, $this->dbConnection);
+ }
+
+ /**
+ * populate files_trash table with 10 dummy values
+ */
+ public function initTable() {
+ $query = $this->dbConnection->createQueryBuilder();
+ $query->delete($this->trashTable)->execute();
+ for ($i = 0; $i < 10; $i++) {
+ $query->insert($this->trashTable)
+ ->values(array(
+ '`id`' => $query->expr()->literal('file'.$i),
+ '`timestamp`' => $query->expr()->literal($i),
+ '`location`' => $query->expr()->literal('.'),
+ '`user`' => $query->expr()->literal('user'.$i%2)
+ ))->execute();
+ }
+ $getAllQuery = $this->dbConnection->createQueryBuilder();
+ $result = $getAllQuery->select('`id`')->from($this->trashTable)->execute()->fetchAll();
+ $this->assertSame(10, count($result));
+ }
+
+ /**
+ * @dataProvider dataTestRemoveDeletedFiles
+ * @param boolean $nodeExists
+ */
+ public function testRemoveDeletedFiles($nodeExists) {
+ $this->initTable();
+ $this->rootFolder->expects($this->once())
+ ->method('nodeExists')
+ ->with('/' . $this->user0 . '/files_trashbin')
+ ->willReturn($nodeExists);
+ if($nodeExists) {
+ $this->rootFolder->expects($this->once())
+ ->method('get')
+ ->with('/' . $this->user0 . '/files_trashbin')
+ ->willReturn($this->rootFolder);
+ $this->rootFolder->expects($this->once())
+ ->method('delete');
+ } else {
+ $this->rootFolder->expects($this->never())->method('get');
+ $this->rootFolder->expects($this->never())->method('delete');
+ }
+ $this->invokePrivate($this->cleanup, 'removeDeletedFiles', [$this->user0]);
+
+ if ($nodeExists) {
+ // if the delete operation was execute only files from user1
+ // should be left.
+ $query = $this->dbConnection->createQueryBuilder();
+ $result = $query->select('`user`')
+ ->from($this->trashTable)
+ ->execute()->fetchAll();
+ $this->assertSame(5, count($result));
+ foreach ($result as $r) {
+ $this->assertSame('user1', $r['user']);
+ }
+ } else {
+ // if no delete operation was execute we should still have all 10
+ // database entries
+ $getAllQuery = $this->dbConnection->createQueryBuilder();
+ $result = $getAllQuery->select('`id`')->from($this->trashTable)->execute()->fetchAll();
+ $this->assertSame(10, count($result));
+ }
+
+ }
+ public function dataTestRemoveDeletedFiles() {
+ return array(
+ array(true),
+ array(false)
+ );
+ }
+
+ /**
+ * test remove deleted files from users given as parameter
+ */
+ public function testExecuteDeleteListOfUsers() {
+ $userIds = ['user1', 'user2', 'user3'];
+ $instance = $this->getMockBuilder('OCA\Files_Trashbin\Command\CleanUp')
+ ->setMethods(['removeDeletedFiles'])
+ ->setConstructorArgs([$this->rootFolder, $this->userManager, $this->dbConnection])
+ ->getMock();
+ $instance->expects($this->exactly(count($userIds)))
+ ->method('removeDeletedFiles')
+ ->willReturnCallback(function ($user) use ($userIds) {
+ $this->assertTrue(in_array($user, $userIds));
+ });
+ $this->userManager->expects($this->exactly(count($userIds)))
+ ->method('userExists')->willReturn(true);
+ $inputInterface = $this->getMockBuilder('\Symfony\Component\Console\Input\InputInterface')
+ ->disableOriginalConstructor()->getMock();
+ $inputInterface->expects($this->once())->method('getArgument')
+ ->with('user_id')
+ ->willReturn($userIds);
+ $outputInterface = $this->getMockBuilder('\Symfony\Component\Console\Output\OutputInterface')
+ ->disableOriginalConstructor()->getMock();
+ $this->invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
+ }
+
+ /**
+ * test remove deleted files of all users
+ */
+ public function testExecuteAllUsers() {
+ $userIds = [];
+ $backendUsers = ['user1', 'user2'];
+ $instance = $this->getMockBuilder('OCA\Files_Trashbin\Command\CleanUp')
+ ->setMethods(['removeDeletedFiles'])
+ ->setConstructorArgs([$this->rootFolder, $this->userManager, $this->dbConnection])
+ ->getMock();
+ $backend = $this->getMockBuilder('OC_User_Interface')
+ ->disableOriginalConstructor()->getMock();
+ $backend->expects($this->once())->method('getUsers')
+ ->with('', 500, 0)
+ ->willReturn($backendUsers);
+ $instance->expects($this->exactly(count($backendUsers)))
+ ->method('removeDeletedFiles')
+ ->willReturnCallback(function ($user) use ($backendUsers) {
+ $this->assertTrue(in_array($user, $backendUsers));
+ });
+ $inputInterface = $this->getMockBuilder('\Symfony\Component\Console\Input\InputInterface')
+ ->disableOriginalConstructor()->getMock();
+ $inputInterface->expects($this->once())->method('getArgument')
+ ->with('user_id')
+ ->willReturn($userIds);
+ $outputInterface = $this->getMockBuilder('\Symfony\Component\Console\Output\OutputInterface')
+ ->disableOriginalConstructor()->getMock();
+ $this->userManager->expects($this->once())
+ ->method('getBackends')
+ ->willReturn([$backend]);
+ $this->invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
+ }
+
+}
diff --git a/apps/files_trashbin/tests/trashbin.php b/apps/files_trashbin/tests/trashbin.php
index 5535b3315bc..299c45b19a7 100644
--- a/apps/files_trashbin/tests/trashbin.php
+++ b/apps/files_trashbin/tests/trashbin.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Clark Tomlinson <fallen013@gmail.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/apps/files_versions/ajax/preview.php b/apps/files_versions/ajax/preview.php
index fab46abdc48..8a9a5fba14c 100644
--- a/apps/files_versions/ajax/preview.php
+++ b/apps/files_versions/ajax/preview.php
@@ -1,7 +1,6 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
@@ -34,13 +33,13 @@ $scalingUp = array_key_exists('scalingup', $_GET) ? (bool) $_GET['scalingup'] :
if($file === '' && $version === '') {
\OC_Response::setStatus(400); //400 Bad Request
- \OC_Log::write('versions-preview', 'No file parameter was passed', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('versions-preview', 'No file parameter was passed', \OCP\Util::DEBUG);
exit;
}
if($maxX === 0 || $maxY === 0) {
\OC_Response::setStatus(400); //400 Bad Request
- \OC_Log::write('versions-preview', 'x and/or y set to 0', \OC_Log::DEBUG);
+ \OCP\Util::writeLog('versions-preview', 'x and/or y set to 0', \OCP\Util::DEBUG);
exit;
}
@@ -56,5 +55,5 @@ try {
$preview->showPreview();
}catch(\Exception $e) {
\OC_Response::setStatus(500);
- \OC_Log::write('core', $e->getmessage(), \OC_Log::DEBUG);
+ \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::DEBUG);
}
diff --git a/apps/files_versions/ajax/rollbackVersion.php b/apps/files_versions/ajax/rollbackVersion.php
index 3f4d78af82b..e75df28dbcd 100644
--- a/apps/files_versions/ajax/rollbackVersion.php
+++ b/apps/files_versions/ajax/rollbackVersion.php
@@ -4,7 +4,6 @@
* @author Björn Schießle <schiessle@owncloud.com>
* @author Frank Karlitschek <frank@owncloud.org>
* @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Sam Tuke <mail@samtuke.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php
index 0705371b8f4..3bad0d8a94d 100644
--- a/apps/files_versions/appinfo/app.php
+++ b/apps/files_versions/appinfo/app.php
@@ -2,7 +2,6 @@
/**
* @author Björn Schießle <schiessle@owncloud.com>
* @author Frank Karlitschek <frank@owncloud.org>
- * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml
index 9aed8069b9b..8eab29b0ec6 100644
--- a/apps/files_versions/appinfo/info.xml
+++ b/apps/files_versions/appinfo/info.xml
@@ -18,5 +18,4 @@ In addition to the expiry of versions, ownCloud’s versions app makes certain n
<user>user-versions</user>
</documentation>
<default_enable/>
- <ocsid>166053</ocsid>
</info>
diff --git a/apps/files/ajax/mimeicon.php b/apps/files_versions/appinfo/register_command.php
index 008ad41953e..49efdbe6190 100644
--- a/apps/files/ajax/mimeicon.php
+++ b/apps/files_versions/appinfo/register_command.php
@@ -1,8 +1,6 @@
<?php
/**
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author Robin Appelman <icewind@owncloud.com>
+ * @author Björn Schießle <schiessle@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
@@ -20,8 +18,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
-\OC::$server->getSession()->close();
-$mime = isset($_GET['mime']) ? (string)$_GET['mime'] : '';
-print OC_Helper::mimetypeIcon($mime);
+use OCA\Files_Versions\Command\CleanUp;
+
+$userManager = OC::$server->getUserManager();
+$rootFolder = \OC::$server->getRootFolder();
+/** @var Symfony\Component\Console\Application $application */
+$application->add(new CleanUp($rootFolder, $userManager));
diff --git a/apps/files_versions/appinfo/routes.php b/apps/files_versions/appinfo/routes.php
index 0ea37d3b1b1..5dbed1f93eb 100644
--- a/apps/files_versions/appinfo/routes.php
+++ b/apps/files_versions/appinfo/routes.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
diff --git a/apps/files_versions/appinfo/update.php b/apps/files_versions/appinfo/update.php
index 6fa0fd6185f..524f9bd153f 100644
--- a/apps/files_versions/appinfo/update.php
+++ b/apps/files_versions/appinfo/update.php
@@ -1,7 +1,6 @@
<?php
/**
* @author Björn Schießle <schiessle@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/files_versions/appinfo/version b/apps/files_versions/appinfo/version
index 90a27f9cea6..af0b7ddbffd 100644
--- a/apps/files_versions/appinfo/version
+++ b/apps/files_versions/appinfo/version
@@ -1 +1 @@
-1.0.5
+1.0.6
diff --git a/apps/files_versions/command/cleanup.php b/apps/files_versions/command/cleanup.php
new file mode 100644
index 00000000000..bed6dd01773
--- /dev/null
+++ b/apps/files_versions/command/cleanup.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files_Versions\Command;
+
+
+use OCP\Files\IRootFolder;
+use OCP\IUserBackend;
+use OCP\IUserManager;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class CleanUp extends Command {
+
+ /** @var IUserManager */
+ protected $userManager;
+
+ /** @var IRootFolder */
+ protected $rootFolder;
+
+ /**
+ * @param IRootFolder $rootFolder
+ * @param IUserManager $userManager
+ */
+ function __construct(IRootFolder $rootFolder, IUserManager $userManager) {
+ parent::__construct();
+ $this->userManager = $userManager;
+ $this->rootFolder = $rootFolder;
+ }
+
+ protected function configure() {
+ $this
+ ->setName('versions:cleanup')
+ ->setDescription('Delete versions')
+ ->addArgument(
+ 'user_id',
+ InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
+ 'delete versions of the given user(s), if no user is given all versions will be deleted'
+ );
+ }
+
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+
+ $users = $input->getArgument('user_id');
+ if (!empty($users)) {
+ foreach ($users as $user) {
+ if ($this->userManager->userExists($user)) {
+ $output->writeln("Delete versions of <info>$user</info>");
+ $this->deleteVersions($user);
+ } else {
+ $output->writeln("<error>Unknown user $user</error>");
+ }
+ }
+ } else {
+ $output->writeln('Delete all versions');
+ foreach ($this->userManager->getBackends() as $backend) {
+ $name = get_class($backend);
+
+ if ($backend instanceof IUserBackend) {
+ $name = $backend->getBackendName();
+ }
+
+ $output->writeln("Delete versions for users on backend <info>$name</info>");
+
+ $limit = 500;
+ $offset = 0;
+ do {
+ $users = $backend->getUsers('', $limit, $offset);
+ foreach ($users as $user) {
+ $output->writeln(" <info>$user</info>");
+ $this->deleteVersions($user);
+ }
+ $offset += $limit;
+ } while (count($users) >= $limit);
+ }
+ }
+ }
+
+
+ /**
+ * delete versions for the given user
+ *
+ * @param string $user
+ */
+ protected function deleteVersions($user) {
+ \OC_Util::tearDownFS();
+ \OC_Util::setupFS($user);
+ if ($this->rootFolder->nodeExists('/' . $user . '/files_versions')) {
+ $this->rootFolder->get('/' . $user . '/files_versions')->delete();
+ }
+ }
+
+}
diff --git a/apps/files_versions/command/expire.php b/apps/files_versions/command/expire.php
index ec9aa3e80d3..4492497f851 100644
--- a/apps/files_versions/command/expire.php
+++ b/apps/files_versions/command/expire.php
@@ -1,9 +1,24 @@
<?php
/**
- * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
*/
namespace OCA\Files_Versions\Command;
diff --git a/apps/files_versions/download.php b/apps/files_versions/download.php
index 72018ca68b9..22a218f472a 100644
--- a/apps/files_versions/download.php
+++ b/apps/files_versions/download.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Andreas Fischer <bantu@owncloud.com>
* @author Björn Schießle <schiessle@owncloud.com>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -34,7 +35,7 @@ $versionName = '/'.$uid.'/files_versions/'.$filename.'.v'.$revision;
$view = new OC\Files\View('/');
-$ftype = $view->getMimeType('/'.$uid.'/files/'.$filename);
+$ftype = \OC_Helper::getSecureMimeType($view->getMimeType('/'.$uid.'/files/'.$filename));
header('Content-Type:'.$ftype);
OCP\Response::setContentDispositionHeader(basename($filename), 'attachment');
diff --git a/apps/files_versions/l10n/is.js b/apps/files_versions/l10n/is.js
index 25bf6aafbfc..bbfe2f42ab3 100644
--- a/apps/files_versions/l10n/is.js
+++ b/apps/files_versions/l10n/is.js
@@ -3,4 +3,4 @@ OC.L10N.register(
{
"Versions" : "Útgáfur"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);");
diff --git a/apps/files_versions/l10n/is.json b/apps/files_versions/l10n/is.json
index d21e4480909..11d9d3383bd 100644
--- a/apps/files_versions/l10n/is.json
+++ b/apps/files_versions/l10n/is.json
@@ -1,4 +1,4 @@
{ "translations": {
"Versions" : "Útgáfur"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/ru.js b/apps/files_versions/l10n/ru.js
index 74ad347804b..25248b9de5f 100644
--- a/apps/files_versions/l10n/ru.js
+++ b/apps/files_versions/l10n/ru.js
@@ -8,4 +8,4 @@ OC.L10N.register(
"No other versions available" : "Других версий не доступно",
"Restore" : "Откатить"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"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_versions/l10n/ru.json b/apps/files_versions/l10n/ru.json
index b21bd54331f..738bb332d23 100644
--- a/apps/files_versions/l10n/ru.json
+++ b/apps/files_versions/l10n/ru.json
@@ -5,5 +5,5 @@
"More versions..." : "Ещё версии...",
"No other versions available" : "Других версий не доступно",
"Restore" : "Откатить"
-},"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);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php
index 296cebfe058..e0034f6165f 100644
--- a/apps/files_versions/lib/storage.php
+++ b/apps/files_versions/lib/storage.php
@@ -5,6 +5,7 @@
* @author Felix Moeller <mail@felixmoeller.de>
* @author Florin Peter <github@florin-peter.de>
* @author Georg Ehrke <georg@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
diff --git a/apps/files_versions/tests/command/cleanuptest.php b/apps/files_versions/tests/command/cleanuptest.php
new file mode 100644
index 00000000000..bfde25d75ce
--- /dev/null
+++ b/apps/files_versions/tests/command/cleanuptest.php
@@ -0,0 +1,162 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+
+namespace OCA\Files_Versions\Tests\Command;
+
+
+use OCA\Files_Versions\Command\CleanUp;
+use Test\TestCase;
+use OC\User\Manager;
+use OCP\Files\IRootFolder;
+
+class CleanupTest extends TestCase {
+
+ /** @var CleanUp */
+ protected $cleanup;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject | Manager */
+ protected $userManager;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject | IRootFolder */
+ protected $rootFolder;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')
+ ->disableOriginalConstructor()->getMock();
+ $this->userManager = $this->getMockBuilder('OC\User\Manager')
+ ->disableOriginalConstructor()->getMock();
+
+
+ $this->cleanup = new CleanUp($this->rootFolder, $this->userManager);
+ }
+
+ /**
+ * @dataProvider dataTestDeleteVersions
+ * @param boolean $nodeExists
+ */
+ public function testDeleteVersions($nodeExists) {
+
+ $this->rootFolder->expects($this->once())
+ ->method('nodeExists')
+ ->with('/testUser/files_versions')
+ ->willReturn($nodeExists);
+
+
+ if($nodeExists) {
+ $this->rootFolder->expects($this->once())
+ ->method('get')
+ ->with('/testUser/files_versions')
+ ->willReturn($this->rootFolder);
+ $this->rootFolder->expects($this->once())
+ ->method('delete');
+ } else {
+ $this->rootFolder->expects($this->never())
+ ->method('get');
+ $this->rootFolder->expects($this->never())
+ ->method('delete');
+ }
+
+ $this->invokePrivate($this->cleanup, 'deleteVersions', ['testUser']);
+ }
+
+ public function dataTestDeleteVersions() {
+ return array(
+ array(true),
+ array(false)
+ );
+ }
+
+
+ /**
+ * test delete versions from users given as parameter
+ */
+ public function testExecuteDeleteListOfUsers() {
+ $userIds = ['user1', 'user2', 'user3'];
+
+ $instance = $this->getMockBuilder('OCA\Files_Versions\Command\CleanUp')
+ ->setMethods(['deleteVersions'])
+ ->setConstructorArgs([$this->rootFolder, $this->userManager])
+ ->getMock();
+ $instance->expects($this->exactly(count($userIds)))
+ ->method('deleteVersions')
+ ->willReturnCallback(function ($user) use ($userIds) {
+ $this->assertTrue(in_array($user, $userIds));
+ });
+
+ $this->userManager->expects($this->exactly(count($userIds)))
+ ->method('userExists')->willReturn(true);
+
+ $inputInterface = $this->getMockBuilder('\Symfony\Component\Console\Input\InputInterface')
+ ->disableOriginalConstructor()->getMock();
+ $inputInterface->expects($this->once())->method('getArgument')
+ ->with('user_id')
+ ->willReturn($userIds);
+
+ $outputInterface = $this->getMockBuilder('\Symfony\Component\Console\Output\OutputInterface')
+ ->disableOriginalConstructor()->getMock();
+
+ $this->invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
+ }
+
+ /**
+ * test delete versions of all users
+ */
+ public function testExecuteAllUsers() {
+ $userIds = [];
+ $backendUsers = ['user1', 'user2'];
+
+ $instance = $this->getMockBuilder('OCA\Files_Versions\Command\CleanUp')
+ ->setMethods(['deleteVersions'])
+ ->setConstructorArgs([$this->rootFolder, $this->userManager])
+ ->getMock();
+
+ $backend = $this->getMockBuilder('OC_User_Interface')
+ ->disableOriginalConstructor()->getMock();
+ $backend->expects($this->once())->method('getUsers')
+ ->with('', 500, 0)
+ ->willReturn($backendUsers);
+
+ $instance->expects($this->exactly(count($backendUsers)))
+ ->method('deleteVersions')
+ ->willReturnCallback(function ($user) use ($backendUsers) {
+ $this->assertTrue(in_array($user, $backendUsers));
+ });
+
+ $inputInterface = $this->getMockBuilder('\Symfony\Component\Console\Input\InputInterface')
+ ->disableOriginalConstructor()->getMock();
+ $inputInterface->expects($this->once())->method('getArgument')
+ ->with('user_id')
+ ->willReturn($userIds);
+
+ $outputInterface = $this->getMockBuilder('\Symfony\Component\Console\Output\OutputInterface')
+ ->disableOriginalConstructor()->getMock();
+
+ $this->userManager->expects($this->once())
+ ->method('getBackends')
+ ->willReturn([$backend]);
+
+ $this->invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
+ }
+
+}
diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php
index 0b6bfc698d7..7cca409ed6c 100644
--- a/apps/files_versions/tests/versions.php
+++ b/apps/files_versions/tests/versions.php
@@ -4,7 +4,9 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/provisioning_api/appinfo/app.php b/apps/provisioning_api/appinfo/app.php
index 33dfda9e6e9..bb5c541c4fd 100644
--- a/apps/provisioning_api/appinfo/app.php
+++ b/apps/provisioning_api/appinfo/app.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Tom Needham <tom@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php
index 87f073f82b0..323c8d609c7 100644
--- a/apps/provisioning_api/appinfo/routes.php
+++ b/apps/provisioning_api/appinfo/routes.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Tom Needham <tom@owncloud.com>
*
diff --git a/apps/provisioning_api/lib/apps.php b/apps/provisioning_api/lib/apps.php
index 2bafd06a084..22713865c1e 100644
--- a/apps/provisioning_api/lib/apps.php
+++ b/apps/provisioning_api/lib/apps.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Tom Needham <tom@owncloud.com>
*
diff --git a/apps/provisioning_api/lib/groups.php b/apps/provisioning_api/lib/groups.php
index cd156110635..81a5a6e5c30 100644
--- a/apps/provisioning_api/lib/groups.php
+++ b/apps/provisioning_api/lib/groups.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Tom Needham <tom@owncloud.com>
*
@@ -62,7 +63,7 @@ class Groups{
// Validate name
$groupid = isset($_POST['groupid']) ? $_POST['groupid'] : '';
if( preg_match( '/[^a-zA-Z0-9 _\.@\-]/', $groupid ) || empty($groupid)){
- \OC_Log::write('provisioning_api', 'Attempt made to create group using invalid characters.', \OC_Log::ERROR);
+ \OCP\Util::writeLog('provisioning_api', 'Attempt made to create group using invalid characters.', \OCP\Util::ERROR);
return new OC_OCS_Result(null, 101, 'Invalid group name');
}
// Check if it exists
diff --git a/apps/provisioning_api/lib/users.php b/apps/provisioning_api/lib/users.php
index b709e09726d..fada85b293d 100644
--- a/apps/provisioning_api/lib/users.php
+++ b/apps/provisioning_api/lib/users.php
@@ -1,6 +1,9 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tom Needham <tom@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
@@ -45,15 +48,15 @@ class Users {
$userId = isset($_POST['userid']) ? $_POST['userid'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
if(OC_User::userExists($userId)) {
- \OC_Log::write('ocs_api', 'Failed addUser attempt: User already exists.', \OC_Log::ERROR);
+ \OCP\Util::writeLog('ocs_api', 'Failed addUser attempt: User already exists.', \OCP\Util::ERROR);
return new OC_OCS_Result(null, 102, 'User already exists');
} else {
try {
OC_User::createUser($userId, $password);
- \OC_Log::write('ocs_api', 'Successful addUser call with userid: '.$_POST['userid'], \OC_Log::INFO);
+ \OCP\Util::writeLog('ocs_api', 'Successful addUser call with userid: '.$_POST['userid'], \OCP\Util::INFO);
return new OC_OCS_Result(null, 100);
} catch (\Exception $e) {
- \OC_Log::write('ocs_api', 'Failed addUser attempt with exception: '.$e->getMessage(), \OC_Log::ERROR);
+ \OCP\Util::writeLog('ocs_api', 'Failed addUser attempt with exception: '.$e->getMessage(), \OCP\Util::ERROR);
return new OC_OCS_Result(null, 101, 'Bad request');
}
}
diff --git a/apps/provisioning_api/tests/appstest.php b/apps/provisioning_api/tests/appstest.php
index 94bff8bbf5b..c4298f017fc 100644
--- a/apps/provisioning_api/tests/appstest.php
+++ b/apps/provisioning_api/tests/appstest.php
@@ -3,6 +3,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Tom Needham <tom@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/provisioning_api/tests/groupstest.php b/apps/provisioning_api/tests/groupstest.php
index cb677d9b512..b8b02790698 100644
--- a/apps/provisioning_api/tests/groupstest.php
+++ b/apps/provisioning_api/tests/groupstest.php
@@ -3,6 +3,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Tom Needham <tom@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/provisioning_api/tests/userstest.php b/apps/provisioning_api/tests/userstest.php
index 0ba76355d58..f2862565039 100644
--- a/apps/provisioning_api/tests/userstest.php
+++ b/apps/provisioning_api/tests/userstest.php
@@ -2,7 +2,10 @@
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tom Needham <tom@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/user_ldap/ajax/getNewServerConfigPrefix.php b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
index 897e4a9924f..41a061e6c50 100644
--- a/apps/user_ldap/ajax/getNewServerConfigPrefix.php
+++ b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
@@ -1,7 +1,6 @@
<?php
/**
* @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Christopher Schäpers <kondou@ts.unde.re>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index 88462902421..89c1a4ea3ff 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -17,7 +17,6 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
<documentation>
<admin>admin-ldap</admin>
</documentation>
- <ocsid>166061</ocsid>
<dependencies>
<lib>ldap</lib>
</dependencies>
diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php
index bc43466bc1a..0b3f84b8baf 100644
--- a/apps/user_ldap/appinfo/install.php
+++ b/apps/user_ldap/appinfo/install.php
@@ -2,7 +2,6 @@
/**
* @author Arthur Schiwon <blizzz@owncloud.com>
* @author Christopher Schäpers <kondou@ts.unde.re>
- * @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version
index a918a2aa18d..ee6cdce3c29 100644
--- a/apps/user_ldap/appinfo/version
+++ b/apps/user_ldap/appinfo/version
@@ -1 +1 @@
-0.6.0
+0.6.1
diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php
index 6fcdfae0790..1b83817151c 100644
--- a/apps/user_ldap/group_ldap.php
+++ b/apps/user_ldap/group_ldap.php
@@ -378,9 +378,11 @@ class GROUP_LDAP extends BackendUtility implements \OCP\GroupInterface {
&& intval($this->access->connection->useMemberOfToDetectMembership) === 1
) {
$groupDNs = $this->access->readAttribute($userDN, 'memberOf');
+
if (is_array($groupDNs)) {
+ $groupDNs = $this->access->groupsMatchFilter($groupDNs);
foreach ($groupDNs as $dn) {
- $groups[] = $this->access->dn2groupname($dn);;
+ $groups[] = $this->access->dn2groupname($dn);
}
}
if($primaryGroup !== false) {
diff --git a/apps/user_ldap/l10n/cs_CZ.js b/apps/user_ldap/l10n/cs_CZ.js
index b3896f7e9bd..20269d7c406 100644
--- a/apps/user_ldap/l10n/cs_CZ.js
+++ b/apps/user_ldap/l10n/cs_CZ.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Ověřit nastavení",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Přidá novou prázdnou konfiguraci",
+ "Add a new and blank configuration" : "Přidat novou a prázdnou konfiguraci",
"Copy current configuration into new directory binding" : "Zkopírovat současnou konfiguraci do nového adresářového propojení",
"Delete the current configuration" : "Smazat současnou konfiguraci",
"Host" : "Počítač",
diff --git a/apps/user_ldap/l10n/cs_CZ.json b/apps/user_ldap/l10n/cs_CZ.json
index aaf10d22f9c..776290918db 100644
--- a/apps/user_ldap/l10n/cs_CZ.json
+++ b/apps/user_ldap/l10n/cs_CZ.json
@@ -76,7 +76,7 @@
"Verify settings" : "Ověřit nastavení",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Přidá novou prázdnou konfiguraci",
+ "Add a new and blank configuration" : "Přidat novou a prázdnou konfiguraci",
"Copy current configuration into new directory binding" : "Zkopírovat současnou konfiguraci do nového adresářového propojení",
"Delete the current configuration" : "Smazat současnou konfiguraci",
"Host" : "Počítač",
diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js
index 8b619bf4803..a4fb384b2f1 100644
--- a/apps/user_ldap/l10n/da.js
+++ b/apps/user_ldap/l10n/da.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Verificér indstillinger",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
- "Adds a new and blank configuration" : "Tilføjer en ny og blank konfiguration",
+ "Add a new and blank configuration" : "Tilføj en ny og tom konfiguration",
"Copy current configuration into new directory binding" : "Kopiér nuværende konfiguration ind i en ny mappetildeling",
"Delete the current configuration" : "Slet den aktuelle konfiguration",
"Host" : "Vært",
diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json
index 1311710c5c6..48611afbcec 100644
--- a/apps/user_ldap/l10n/da.json
+++ b/apps/user_ldap/l10n/da.json
@@ -76,7 +76,7 @@
"Verify settings" : "Verificér indstillinger",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
- "Adds a new and blank configuration" : "Tilføjer en ny og blank konfiguration",
+ "Add a new and blank configuration" : "Tilføj en ny og tom konfiguration",
"Copy current configuration into new directory binding" : "Kopiér nuværende konfiguration ind i en ny mappetildeling",
"Delete the current configuration" : "Slet den aktuelle konfiguration",
"Host" : "Vært",
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index 1a2d1de62d4..e25b3cb10a8 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -78,7 +78,6 @@ OC.L10N.register(
"Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Fügt eine neue und leere Konfiguration hinzu",
"Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren",
"Delete the current configuration" : "Aktuelle Konfiguration löschen",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index 7a4843900c8..845d382af36 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -76,7 +76,6 @@
"Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Fügt eine neue und leere Konfiguration hinzu",
"Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren",
"Delete the current configuration" : "Aktuelle Konfiguration löschen",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index b2dc48efca6..6880c5f1b70 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -78,7 +78,6 @@ OC.L10N.register(
"Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Fügt eine neue und leere Konfiguration hinzu",
"Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren ",
"Delete the current configuration" : "Aktuelle Konfiguration löschen",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index e58f29a0b60..61644710a34 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -76,7 +76,6 @@
"Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Fügt eine neue und leere Konfiguration hinzu",
"Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren ",
"Delete the current configuration" : "Aktuelle Konfiguration löschen",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js
index c8207dbabfe..610fcc5af03 100644
--- a/apps/user_ldap/l10n/el.js
+++ b/apps/user_ldap/l10n/el.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Επιβεβαίωση ρυθμίσεων",
"1. Server" : "1. Διακομιστής",
"%s. Server:" : "%s. Διακομιστής:",
- "Adds a new and blank configuration" : "Προσθέτει μια νέα και κενή διαμόρφωση",
+ "Add a new and blank configuration" : "Προσθέτει μια νέα και κενή διαμόρφωση",
"Copy current configuration into new directory binding" : "Αντιγραφή της τρέχουσας διαμόρφωσης σε νέο κατάλογο",
"Delete the current configuration" : "Διαγραφή τρέχουσας διαμόρφωσης",
"Host" : "Διακομιστής",
diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json
index 1e861ba8f82..03dbf973b55 100644
--- a/apps/user_ldap/l10n/el.json
+++ b/apps/user_ldap/l10n/el.json
@@ -76,7 +76,7 @@
"Verify settings" : "Επιβεβαίωση ρυθμίσεων",
"1. Server" : "1. Διακομιστής",
"%s. Server:" : "%s. Διακομιστής:",
- "Adds a new and blank configuration" : "Προσθέτει μια νέα και κενή διαμόρφωση",
+ "Add a new and blank configuration" : "Προσθέτει μια νέα και κενή διαμόρφωση",
"Copy current configuration into new directory binding" : "Αντιγραφή της τρέχουσας διαμόρφωσης σε νέο κατάλογο",
"Delete the current configuration" : "Διαγραφή τρέχουσας διαμόρφωσης",
"Host" : "Διακομιστής",
diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js
index baeed9a85ea..6bd17dcba4d 100644
--- a/apps/user_ldap/l10n/en_GB.js
+++ b/apps/user_ldap/l10n/en_GB.js
@@ -78,7 +78,6 @@ OC.L10N.register(
"Verify settings" : "Verify settings",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Adds a new and blank configuration",
"Copy current configuration into new directory binding" : "Copy current configuration into new directory binding",
"Delete the current configuration" : "Delete the current configuration",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json
index 743ae2cd47f..8c19e37154b 100644
--- a/apps/user_ldap/l10n/en_GB.json
+++ b/apps/user_ldap/l10n/en_GB.json
@@ -76,7 +76,6 @@
"Verify settings" : "Verify settings",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Adds a new and blank configuration",
"Copy current configuration into new directory binding" : "Copy current configuration into new directory binding",
"Delete the current configuration" : "Delete the current configuration",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js
index 373c173f6db..02a45f1b444 100644
--- a/apps/user_ldap/l10n/es.js
+++ b/apps/user_ldap/l10n/es.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Verificar configuración",
"1. Server" : "1. Servidor",
"%s. Server:" : "%s. Servidor:",
- "Adds a new and blank configuration" : "Añade una configuración nueva y vacía",
+ "Add a new and blank configuration" : "Agregar una configuración nueva y en blanco",
"Copy current configuration into new directory binding" : "Copiar la actual configuración en un nuevo directorio de enlace",
"Delete the current configuration" : "Elimina la actual configuración",
"Host" : "Servidor",
diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json
index 10f8e38c131..f836e54c067 100644
--- a/apps/user_ldap/l10n/es.json
+++ b/apps/user_ldap/l10n/es.json
@@ -76,7 +76,7 @@
"Verify settings" : "Verificar configuración",
"1. Server" : "1. Servidor",
"%s. Server:" : "%s. Servidor:",
- "Adds a new and blank configuration" : "Añade una configuración nueva y vacía",
+ "Add a new and blank configuration" : "Agregar una configuración nueva y en blanco",
"Copy current configuration into new directory binding" : "Copiar la actual configuración en un nuevo directorio de enlace",
"Delete the current configuration" : "Elimina la actual configuración",
"Host" : "Servidor",
diff --git a/apps/user_ldap/l10n/et_EE.js b/apps/user_ldap/l10n/et_EE.js
index cfe06cf0d6e..1e0057c2f44 100644
--- a/apps/user_ldap/l10n/et_EE.js
+++ b/apps/user_ldap/l10n/et_EE.js
@@ -10,15 +10,21 @@ OC.L10N.register(
"No configuration specified" : "Seadistust pole määratletud",
"No data specified" : "Andmeid pole määratletud",
" Could not set configuration %s" : "Ei suutnud seadistada %s",
+ "Action does not exist" : "Toimingut pole olemas",
+ "The Base DN appears to be wrong" : "Näib, et Base DN on vale",
"Configuration incorrect" : "Seadistus on vigane",
"Configuration incomplete" : "Seadistus on puudulik",
"Configuration OK" : "Seadistus on korras",
"Select groups" : "Vali grupid",
"Select object classes" : "Vali objekti klassid",
+ "Please check the credentials, they seem to be wrong." : "Palu nkontrolli kasutajaandmeid, need näivad olevat valed.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "More than 1.000 directory entries available." : "Saadaval on rohkem kui 1000 kataloogi sissekannet.",
"Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?",
"Confirm Deletion" : "Kinnita kustutamine",
+ "Mode switch" : "Režiimi lüliti",
"Select attributes" : "Vali atribuudid",
+ "User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.",
"_%s group found_::_%s groups found_" : ["%s grupp leitud","%s gruppi leitud"],
"_%s user found_::_%s users found_" : ["%s kasutaja leitud","%s kasutajat leitud"],
"Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust",
@@ -29,20 +35,35 @@ OC.L10N.register(
"Test Configuration" : "Testi seadistust",
"Help" : "Abiinfo",
"Groups meeting these criteria are available in %s:" : "Kriteeriumiga sobivad grupid on saadaval %s:",
+ "Only these object classes:" : "Ainult neid objektide klasse:",
+ "Only from these groups:" : "Ainult neist gruppidest:",
+ "Search groups" : "Otsi gruppe",
+ "Available groups" : "Saadaolevad grupid",
+ "Selected groups" : "Validut grupid",
+ "Edit LDAP Query" : "Muuda LDAP päringut",
+ "LDAP Filter:" : "LDAP filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter määrab millised LDAP grupid saavad ligipääsu sellele %s instantsile.",
+ "Verify settings and count groups" : "Kontrolli seadeid ja loe grupid üle",
"Other Attributes:" : "Muud atribuudid:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime. Näide: \"uid=%%uid\"",
+ "Test Loginname" : "Testi kasutajanime",
+ "Verify settings" : "Kontrolli seadeid",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
+ "Add a new and blank configuration" : "Lisa uus ja tühi seadistus",
+ "Delete the current configuration" : "Kustuta praegune seadistus",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Sa ei saa protokolli ära jätta, välja arvatud siis, kui sa nõuad SSL-ühendust. Sel juhul alusta eesliitega ldaps://",
"Port" : "Port",
+ "Detect Port" : "Tuvasta port",
"User DN" : "Kasutaja DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
"Password" : "Parool",
"For anonymous access, leave DN and Password empty." : "Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
"One Base DN per line" : "Üks baas-DN rea kohta",
"You can specify Base DN for users and groups in the Advanced tab" : "Sa saad kasutajate ja gruppide baas DN-i määrata lisavalikute vahekaardilt",
+ "Detect Base DN" : "Tuvasta Baas DN",
+ "Test Base DN" : "Testi Baas DN-i",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Väldib automaatseid LDAP päringuid, Parem suurematele saitidele, aga nõuab mõningaid teadmisi LDAP kohta.",
"Manually enter LDAP filters (recommended for large directories)" : "Sisesta LDAP filtrid automaatselt (sooitatav suurtele kataloogidele)",
"Limit %s access to users meeting these criteria:" : "Piira %s liigpääs kriteeriumiga sobivatele kasutajatele:",
diff --git a/apps/user_ldap/l10n/et_EE.json b/apps/user_ldap/l10n/et_EE.json
index b592f01087d..ea93ccb0efd 100644
--- a/apps/user_ldap/l10n/et_EE.json
+++ b/apps/user_ldap/l10n/et_EE.json
@@ -8,15 +8,21 @@
"No configuration specified" : "Seadistust pole määratletud",
"No data specified" : "Andmeid pole määratletud",
" Could not set configuration %s" : "Ei suutnud seadistada %s",
+ "Action does not exist" : "Toimingut pole olemas",
+ "The Base DN appears to be wrong" : "Näib, et Base DN on vale",
"Configuration incorrect" : "Seadistus on vigane",
"Configuration incomplete" : "Seadistus on puudulik",
"Configuration OK" : "Seadistus on korras",
"Select groups" : "Vali grupid",
"Select object classes" : "Vali objekti klassid",
+ "Please check the credentials, they seem to be wrong." : "Palu nkontrolli kasutajaandmeid, need näivad olevat valed.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "More than 1.000 directory entries available." : "Saadaval on rohkem kui 1000 kataloogi sissekannet.",
"Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?",
"Confirm Deletion" : "Kinnita kustutamine",
+ "Mode switch" : "Režiimi lüliti",
"Select attributes" : "Vali atribuudid",
+ "User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.",
"_%s group found_::_%s groups found_" : ["%s grupp leitud","%s gruppi leitud"],
"_%s user found_::_%s users found_" : ["%s kasutaja leitud","%s kasutajat leitud"],
"Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust",
@@ -27,20 +33,35 @@
"Test Configuration" : "Testi seadistust",
"Help" : "Abiinfo",
"Groups meeting these criteria are available in %s:" : "Kriteeriumiga sobivad grupid on saadaval %s:",
+ "Only these object classes:" : "Ainult neid objektide klasse:",
+ "Only from these groups:" : "Ainult neist gruppidest:",
+ "Search groups" : "Otsi gruppe",
+ "Available groups" : "Saadaolevad grupid",
+ "Selected groups" : "Validut grupid",
+ "Edit LDAP Query" : "Muuda LDAP päringut",
+ "LDAP Filter:" : "LDAP filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter määrab millised LDAP grupid saavad ligipääsu sellele %s instantsile.",
+ "Verify settings and count groups" : "Kontrolli seadeid ja loe grupid üle",
"Other Attributes:" : "Muud atribuudid:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime. Näide: \"uid=%%uid\"",
+ "Test Loginname" : "Testi kasutajanime",
+ "Verify settings" : "Kontrolli seadeid",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
+ "Add a new and blank configuration" : "Lisa uus ja tühi seadistus",
+ "Delete the current configuration" : "Kustuta praegune seadistus",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Sa ei saa protokolli ära jätta, välja arvatud siis, kui sa nõuad SSL-ühendust. Sel juhul alusta eesliitega ldaps://",
"Port" : "Port",
+ "Detect Port" : "Tuvasta port",
"User DN" : "Kasutaja DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
"Password" : "Parool",
"For anonymous access, leave DN and Password empty." : "Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
"One Base DN per line" : "Üks baas-DN rea kohta",
"You can specify Base DN for users and groups in the Advanced tab" : "Sa saad kasutajate ja gruppide baas DN-i määrata lisavalikute vahekaardilt",
+ "Detect Base DN" : "Tuvasta Baas DN",
+ "Test Base DN" : "Testi Baas DN-i",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Väldib automaatseid LDAP päringuid, Parem suurematele saitidele, aga nõuab mõningaid teadmisi LDAP kohta.",
"Manually enter LDAP filters (recommended for large directories)" : "Sisesta LDAP filtrid automaatselt (sooitatav suurtele kataloogidele)",
"Limit %s access to users meeting these criteria:" : "Piira %s liigpääs kriteeriumiga sobivatele kasutajatele:",
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index 9da30a9dcd9..6613c7c5bd8 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -27,7 +27,7 @@ OC.L10N.register(
"More than 1.000 directory entries available." : "Il y a plus de 1000 entrées de répertoire disponibles.",
" entries available within the provided Base DN" : "entrées disponibles dans le DN de base spécifié",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Une erreur est survenue. Veuillez vérifier le DN de base, ainsi que les paramètres de connexion et les informations d'identification",
- "Do you really want to delete the current Server Configuration?" : "Êtes-vous vraiment sûr de vouloir effacer la configuration actuelle du serveur ?",
+ "Do you really want to delete the current Server Configuration?" : "Êtes-vous sûr de vouloir effacer la configuration serveur actuelle ?",
"Confirm Deletion" : "Confirmer la suppression",
"Mappings cleared successfully!" : "Associations supprimées avec succès !",
"Error while clearing the mappings." : "Erreur lors de la suppression des associations.",
@@ -39,10 +39,10 @@ OC.L10N.register(
"Select attributes" : "Sélectionner les attributs",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
"User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais seul le premier utilisateur pourra se connecter. Considérez utiliser un filtre plus restrictif.",
- "An unspecified error occurred. Please check the settings and the log." : "Une erreur non spécifiée s'est produite. Veuillez vérifier les paramètres et le log.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais seul le premier utilisateur pourra se connecter. Considérez utiliser un filtre moins restrictif.",
+ "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite à la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne %uid est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.",
"Please provide a login name to test against" : "Veuillez indiquer un identifiant de connexion avec lequel tester.",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP / AD ne prend pas en charge memberOf.",
@@ -61,7 +61,7 @@ OC.L10N.register(
"Only these object classes:" : "Seulement ces classes d'objets :",
"Only from these groups:" : "Seulement dans ces groupes :",
"Search groups" : "Chercher dans les groupes",
- "Available groups" : "Chercher dans les utilisateurs",
+ "Available groups" : "Groupes disponibles",
"Selected groups" : "Groupes sélectionnés",
"Edit LDAP Query" : "Modifier la requête LDAP",
"LDAP Filter:" : "Filtre LDAP :",
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Tester les paramètres",
"1. Server" : "1. Serveur",
"%s. Server:" : "%s. Serveur :",
- "Adds a new and blank configuration" : "Ajouter une nouvelle configuration vierge",
+ "Add a new and blank configuration" : "Ajouter une nouvelle configuration vierge",
"Copy current configuration into new directory binding" : "Copier la configuration actuelle vers une nouvelle",
"Delete the current configuration" : "Supprimer la configuration actuelle",
"Host" : "Hôte",
@@ -94,10 +94,10 @@ OC.L10N.register(
"Detect Base DN" : "Détecter le DN de base",
"Test Base DN" : "Tester le DN de base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Évite les requêtes LDAP automatiques. Mieux pour les installations de grande ampleur, mais demande des connaissances en LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Entrée manuelle des filtres LDAP (recommandé pour les annuaires de grande ampleur)",
+ "Manually enter LDAP filters (recommended for large directories)" : "Saisir les filtres LDAP manuellement (recommandé pour les annuaires de grande ampleur)",
"Limit %s access to users meeting these criteria:" : "Limiter l'accès à %s aux utilisateurs respectant ces critères :",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Les classes d'objets fréquentes pour les utilisateurs sont : organizationalPerson, person, user et inetOrgPerson. Si vous n'êtes pas sûr de la classe à utiliser, demandez à l'administrateur de l'annuaire.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "Le filtre spécifie quels utilisateurs LDAP doivent avoir accès à l'instance %s.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "Le filtre spécifie quels utilisateurs LDAP auront accès à l'instance %s.",
"Verify settings and count users" : "Vérifier les paramètres et compter les utilisateurs",
"Saving" : "Enregistrement...",
"Back" : "Retour",
@@ -115,7 +115,7 @@ OC.L10N.register(
"Backup (Replica) Port" : "Port du serveur de backup (réplique)",
"Disable Main Server" : "Désactiver le serveur principal",
"Only connect to the replica server." : "Se connecter uniquement à la réplique",
- "Case insensitive LDAP server (Windows)" : "Serveur LDAP insensible à la casse (Windows)",
+ "Case insensitive LDAP server (Windows)" : "Serveur LDAP non sensible à la casse (Windows)",
"Turn off SSL certificate validation." : "Désactiver la validation des certificats SSL.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Non recommandé, à utiliser à des fins de tests uniquement. Si la connexion ne fonctionne qu'avec cette option, importez le certificat SSL du serveur LDAP dans le serveur %s.",
"Cache Time-To-Live" : "Durée de vie du cache (TTL)",
@@ -129,7 +129,7 @@ OC.L10N.register(
"Optional; one attribute per line" : "Optionnel, un attribut par ligne",
"Group Display Name Field" : "Champ \"nom d'affichage\" du groupe",
"The LDAP attribute to use to generate the groups's display name." : "L'attribut LDAP utilisé pour générer le nom d'affichage du groupe.",
- "Base Group Tree" : "Base Group Tree",
+ "Base Group Tree" : "DN racine de l'arbre groupes",
"One Group Base DN per line" : "Un DN de base groupe par ligne",
"Group Search Attributes" : "Attributs de recherche des groupes",
"Group-Member association" : "Association groupe-membre",
@@ -145,9 +145,9 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "Règle de nommage du répertoire utilisateur",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide pour user name (défaut). Vous pouvez aussi spécifier un attribut LDAP / AD.",
"Internal Username" : "Nom d'utilisateur interne",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Ceci permet d'assurer que le nom d'utilisateur est unique et que les caractères ne nécessitent pas de conversion. Le nom d'utilisateur interne doit contenir uniquement les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leur correspondance ASCII ou simplement omis. En cas de collision, un nombre est ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier l'utilisateur au sein du système. C'est aussi le nom par défaut du répertoire utilisateur dans ownCloud. Il fait aussi partie de certains URL de services, par exemple pour tous les services *DAV. Le comportement par défaut peut être modifié à l'aide de ce paramètre. Pour obtenir un comportement similaire aux versions précédentes à ownCloud 5, saisir le nom d'utilisateur à afficher dans le champ suivant. Laissez à blanc pour le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux (ajoutés) utilisateurs LDAP.",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Ceci permet d'assurer que le nom d'utilisateur est unique et que les caractères ne nécessitent pas de conversion. Le nom d'utilisateur interne doit contenir uniquement les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leur correspondance ASCII ou simplement omis. En cas de collision, un nombre est ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier l'utilisateur au sein du système. C'est aussi le nom par défaut du répertoire utilisateur dans ownCloud. Il fait aussi partie de certains URL de services, par exemple pour tous les services *DAV. Le comportement par défaut peut être modifié à l'aide de ce paramètre. Pour obtenir un comportement similaire aux versions précédentes à ownCloud 5, saisir le nom d'utilisateur à afficher dans le champ suivant. Laisser à blanc pour le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux (ajoutés) utilisateurs LDAP.",
"Internal Username Attribute:" : "Nom d'utilisateur interne :",
- "Override UUID detection" : "Passer outre la détection d'UUID",
+ "Override UUID detection" : "Passer outre la détection des UUID",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Par défaut, l'attribut UUID est automatiquement détecté. Cet attribut est utilisé pour identifier les utilisateurs et groupes de façon fiable. Un nom d'utilisateur interne basé sur l'UUID sera automatiquement créé, sauf s'il est spécifié autrement ci-dessus. Vous pouvez modifier ce comportement et définir l'attribut de votre choix. Vous devez alors vous assurer que l'attribut de votre choix peut être récupéré pour les utilisateurs ainsi que pour les groupes et qu'il soit unique. Laisser à blanc pour le comportement par défaut. Les modifications seront effectives uniquement pour les nouveaux (ajoutés) utilisateurs et groupes LDAP.",
"UUID Attribute for Users:" : "Attribut UUID pour les Utilisateurs :",
"UUID Attribute for Groups:" : "Attribut UUID pour les Groupes :",
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index 0cb2cd489a4..7eb868483eb 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -25,7 +25,7 @@
"More than 1.000 directory entries available." : "Il y a plus de 1000 entrées de répertoire disponibles.",
" entries available within the provided Base DN" : "entrées disponibles dans le DN de base spécifié",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Une erreur est survenue. Veuillez vérifier le DN de base, ainsi que les paramètres de connexion et les informations d'identification",
- "Do you really want to delete the current Server Configuration?" : "Êtes-vous vraiment sûr de vouloir effacer la configuration actuelle du serveur ?",
+ "Do you really want to delete the current Server Configuration?" : "Êtes-vous sûr de vouloir effacer la configuration serveur actuelle ?",
"Confirm Deletion" : "Confirmer la suppression",
"Mappings cleared successfully!" : "Associations supprimées avec succès !",
"Error while clearing the mappings." : "Erreur lors de la suppression des associations.",
@@ -37,10 +37,10 @@
"Select attributes" : "Sélectionner les attributs",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):<br/>",
"User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais seul le premier utilisateur pourra se connecter. Considérez utiliser un filtre plus restrictif.",
- "An unspecified error occurred. Please check the settings and the log." : "Une erreur non spécifiée s'est produite. Veuillez vérifier les paramètres et le log.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais seul le premier utilisateur pourra se connecter. Considérez utiliser un filtre moins restrictif.",
+ "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite à la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne %uid est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.",
"Please provide a login name to test against" : "Veuillez indiquer un identifiant de connexion avec lequel tester.",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP / AD ne prend pas en charge memberOf.",
@@ -59,7 +59,7 @@
"Only these object classes:" : "Seulement ces classes d'objets :",
"Only from these groups:" : "Seulement dans ces groupes :",
"Search groups" : "Chercher dans les groupes",
- "Available groups" : "Chercher dans les utilisateurs",
+ "Available groups" : "Groupes disponibles",
"Selected groups" : "Groupes sélectionnés",
"Edit LDAP Query" : "Modifier la requête LDAP",
"LDAP Filter:" : "Filtre LDAP :",
@@ -76,7 +76,7 @@
"Verify settings" : "Tester les paramètres",
"1. Server" : "1. Serveur",
"%s. Server:" : "%s. Serveur :",
- "Adds a new and blank configuration" : "Ajouter une nouvelle configuration vierge",
+ "Add a new and blank configuration" : "Ajouter une nouvelle configuration vierge",
"Copy current configuration into new directory binding" : "Copier la configuration actuelle vers une nouvelle",
"Delete the current configuration" : "Supprimer la configuration actuelle",
"Host" : "Hôte",
@@ -92,10 +92,10 @@
"Detect Base DN" : "Détecter le DN de base",
"Test Base DN" : "Tester le DN de base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Évite les requêtes LDAP automatiques. Mieux pour les installations de grande ampleur, mais demande des connaissances en LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Entrée manuelle des filtres LDAP (recommandé pour les annuaires de grande ampleur)",
+ "Manually enter LDAP filters (recommended for large directories)" : "Saisir les filtres LDAP manuellement (recommandé pour les annuaires de grande ampleur)",
"Limit %s access to users meeting these criteria:" : "Limiter l'accès à %s aux utilisateurs respectant ces critères :",
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Les classes d'objets fréquentes pour les utilisateurs sont : organizationalPerson, person, user et inetOrgPerson. Si vous n'êtes pas sûr de la classe à utiliser, demandez à l'administrateur de l'annuaire.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "Le filtre spécifie quels utilisateurs LDAP doivent avoir accès à l'instance %s.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "Le filtre spécifie quels utilisateurs LDAP auront accès à l'instance %s.",
"Verify settings and count users" : "Vérifier les paramètres et compter les utilisateurs",
"Saving" : "Enregistrement...",
"Back" : "Retour",
@@ -113,7 +113,7 @@
"Backup (Replica) Port" : "Port du serveur de backup (réplique)",
"Disable Main Server" : "Désactiver le serveur principal",
"Only connect to the replica server." : "Se connecter uniquement à la réplique",
- "Case insensitive LDAP server (Windows)" : "Serveur LDAP insensible à la casse (Windows)",
+ "Case insensitive LDAP server (Windows)" : "Serveur LDAP non sensible à la casse (Windows)",
"Turn off SSL certificate validation." : "Désactiver la validation des certificats SSL.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Non recommandé, à utiliser à des fins de tests uniquement. Si la connexion ne fonctionne qu'avec cette option, importez le certificat SSL du serveur LDAP dans le serveur %s.",
"Cache Time-To-Live" : "Durée de vie du cache (TTL)",
@@ -127,7 +127,7 @@
"Optional; one attribute per line" : "Optionnel, un attribut par ligne",
"Group Display Name Field" : "Champ \"nom d'affichage\" du groupe",
"The LDAP attribute to use to generate the groups's display name." : "L'attribut LDAP utilisé pour générer le nom d'affichage du groupe.",
- "Base Group Tree" : "Base Group Tree",
+ "Base Group Tree" : "DN racine de l'arbre groupes",
"One Group Base DN per line" : "Un DN de base groupe par ligne",
"Group Search Attributes" : "Attributs de recherche des groupes",
"Group-Member association" : "Association groupe-membre",
@@ -143,9 +143,9 @@
"User Home Folder Naming Rule" : "Règle de nommage du répertoire utilisateur",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide pour user name (défaut). Vous pouvez aussi spécifier un attribut LDAP / AD.",
"Internal Username" : "Nom d'utilisateur interne",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Ceci permet d'assurer que le nom d'utilisateur est unique et que les caractères ne nécessitent pas de conversion. Le nom d'utilisateur interne doit contenir uniquement les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leur correspondance ASCII ou simplement omis. En cas de collision, un nombre est ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier l'utilisateur au sein du système. C'est aussi le nom par défaut du répertoire utilisateur dans ownCloud. Il fait aussi partie de certains URL de services, par exemple pour tous les services *DAV. Le comportement par défaut peut être modifié à l'aide de ce paramètre. Pour obtenir un comportement similaire aux versions précédentes à ownCloud 5, saisir le nom d'utilisateur à afficher dans le champ suivant. Laissez à blanc pour le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux (ajoutés) utilisateurs LDAP.",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Ceci permet d'assurer que le nom d'utilisateur est unique et que les caractères ne nécessitent pas de conversion. Le nom d'utilisateur interne doit contenir uniquement les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leur correspondance ASCII ou simplement omis. En cas de collision, un nombre est ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier l'utilisateur au sein du système. C'est aussi le nom par défaut du répertoire utilisateur dans ownCloud. Il fait aussi partie de certains URL de services, par exemple pour tous les services *DAV. Le comportement par défaut peut être modifié à l'aide de ce paramètre. Pour obtenir un comportement similaire aux versions précédentes à ownCloud 5, saisir le nom d'utilisateur à afficher dans le champ suivant. Laisser à blanc pour le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux (ajoutés) utilisateurs LDAP.",
"Internal Username Attribute:" : "Nom d'utilisateur interne :",
- "Override UUID detection" : "Passer outre la détection d'UUID",
+ "Override UUID detection" : "Passer outre la détection des UUID",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Par défaut, l'attribut UUID est automatiquement détecté. Cet attribut est utilisé pour identifier les utilisateurs et groupes de façon fiable. Un nom d'utilisateur interne basé sur l'UUID sera automatiquement créé, sauf s'il est spécifié autrement ci-dessus. Vous pouvez modifier ce comportement et définir l'attribut de votre choix. Vous devez alors vous assurer que l'attribut de votre choix peut être récupéré pour les utilisateurs ainsi que pour les groupes et qu'il soit unique. Laisser à blanc pour le comportement par défaut. Les modifications seront effectives uniquement pour les nouveaux (ajoutés) utilisateurs et groupes LDAP.",
"UUID Attribute for Users:" : "Attribut UUID pour les Utilisateurs :",
"UUID Attribute for Groups:" : "Attribut UUID pour les Groupes :",
diff --git a/apps/user_ldap/l10n/gl.js b/apps/user_ldap/l10n/gl.js
index 466144f4123..6ab06bb4b94 100644
--- a/apps/user_ldap/l10n/gl.js
+++ b/apps/user_ldap/l10n/gl.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Verificar os axustes",
"1. Server" : "1. Servidor",
"%s. Server:" : "%s. Servidor:",
- "Adds a new and blank configuration" : "Engade unha configuración nova e en branco",
+ "Add a new and blank configuration" : "Engadir unha configuración nova e en branco",
"Copy current configuration into new directory binding" : "Copiar a configuración no novo directorio vinculado",
"Delete the current configuration" : "Eliminar a configuración actual",
"Host" : "Máquina",
diff --git a/apps/user_ldap/l10n/gl.json b/apps/user_ldap/l10n/gl.json
index f67cc44d653..b1e4ffc05ce 100644
--- a/apps/user_ldap/l10n/gl.json
+++ b/apps/user_ldap/l10n/gl.json
@@ -76,7 +76,7 @@
"Verify settings" : "Verificar os axustes",
"1. Server" : "1. Servidor",
"%s. Server:" : "%s. Servidor:",
- "Adds a new and blank configuration" : "Engade unha configuración nova e en branco",
+ "Add a new and blank configuration" : "Engadir unha configuración nova e en branco",
"Copy current configuration into new directory binding" : "Copiar a configuración no novo directorio vinculado",
"Delete the current configuration" : "Eliminar a configuración actual",
"Host" : "Máquina",
diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js
index 23170f99864..a89323bc3c2 100644
--- a/apps/user_ldap/l10n/id.js
+++ b/apps/user_ldap/l10n/id.js
@@ -3,14 +3,16 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Gagal membersihkan pemetaan.",
"Failed to delete the server configuration" : "Gagal menghapus konfigurasi server",
+ "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasi tidak sah: bind anonim tidak diizinkan",
"The configuration is valid and the connection could be established!" : "Konfigurasi valid dan koneksi dapat dilakukan!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi Bind gagal. Silakan periksa pengaturan server dan kredensial.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebh lanjut.",
+ "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebih lanjut.",
"No action specified" : "Tidak ada tindakan yang ditetapkan",
"No configuration specified" : "Tidak ada konfigurasi yang ditetapkan",
"No data specified" : "Tidak ada data yang ditetapkan",
" Could not set configuration %s" : "Tidak dapat menyetel konfigurasi %s",
"Action does not exist" : "Tidak ada tindakan",
+ "The Base DN appears to be wrong" : "Base DN tampaknya salah",
"Configuration incorrect" : "Konfigurasi salah",
"Configuration incomplete" : "Konfigurasi tidak lengkap",
"Configuration OK" : "Konfigurasi Oke",
@@ -29,16 +31,21 @@ OC.L10N.register(
"Confirm Deletion" : "Konfirmasi Penghapusan",
"Mappings cleared successfully!" : "Pemetaan berhasil dibersihkan!",
"Error while clearing the mappings." : "Kesalahan saat membersihkan pemetaan.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Bind anonim tidak diizinkan. Mohon berikan sebuah User DN dan Password.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Kesalahan Operasi LDAP. Bind anonim tidak diizinkan.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Menyimpan gagal. Mohon pastikan basis data di Operasi. Muat Ulang sebelum melanjutkan.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Beralih modus akan mengaktifkan kueri LDAP. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Beralih modus akan mengaktifkan kueri LDAP secara otomatis. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
"Mode switch" : "Beralih modus",
"Select attributes" : "Pilih atribut",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
"User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.",
"An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
- "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah diaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Placeholder %uid tidak ada. Placeholder akan digantikan dengan nama login saat melakukan kueri LDAP / AD.",
+ "Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah dinonaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
@@ -50,7 +57,7 @@ OC.L10N.register(
"Groups" : "Grup",
"Test Configuration" : "Uji Konfigurasi",
"Help" : "Bantuan",
- "Groups meeting these criteria are available in %s:" : "Grup memenuhi kriteria ini tersedia di %s:",
+ "Groups meeting these criteria are available in %s:" : "Grup yang memenuhi kriteria ini tersedia di %s:",
"Only these object classes:" : "Hanya kelas obyek berikut:",
"Only from these groups:" : "Hanya dari grup berikut:",
"Search groups" : "Pencarian grup",
@@ -58,64 +65,95 @@ OC.L10N.register(
"Selected groups" : "Grup terpilih",
"Edit LDAP Query" : "Sunting Kueri LDAP",
"LDAP Filter:" : "Penyaring LDAP:",
+ "The filter specifies which LDAP groups shall have access to the %s instance." : "Penyaring menentukan grup LDAP mana yang memiliki akses ke %s.",
+ "Verify settings and count groups" : "Verifikasi setelan dan hitung grup",
+ "When logging in, %s will find the user based on the following attributes:" : "Pada saat login, %s akan menemukan pengguna berdasarkan atribut berikut:",
"LDAP / AD Username:" : "Nama pengguna LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Izinkan login dengan nama pengguna LDAP / AD, baik berupa uid atau samaccountname, mereka akan terdeteksi.",
"LDAP / AD Email Address:" : "Alamat Email LDAP / AD:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Izinkan login dengan atribut email. Mail dan mailPrimaryAddress diperbolehkan.",
"Other Attributes:" : "Atribut Lain:",
+ "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Tetapkan penyaring yang akan diterapkan saat mencoba login. %%uid akan mengganti nama pengguna saat melakukan login. Contoh: \"uid=%%uid\"",
+ "Test Loginname" : "Test Loginname",
+ "Verify settings" : "Verifikasi setelan",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
+ "Add a new and blank configuration" : "Tambah konfigurasi kosong yang baru",
+ "Copy current configuration into new directory binding" : "Salin konfigurasi saat ini kedalam direktori baru",
+ "Delete the current configuration" : "Hapus konfigurasi saat ini",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokol dapat tidak ditulis, kecuali Anda menggunakan SSL. Lalu jalankan dengan ldaps://",
"Port" : "Port",
+ "Detect Port" : "Deteksi Port",
"User DN" : "Pengguna DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN dari klien pengguna yang dengannya tautan akan diterapkan, mis. uid=agen,dc=contoh,dc=com. Untuk akses anonim, biarkan DN dan kata sandi kosong.",
"Password" : "Sandi",
"For anonymous access, leave DN and Password empty." : "Untuk akses anonim, biarkan DN dan Kata sandi kosong.",
"One Base DN per line" : "Satu Base DN per baris",
"You can specify Base DN for users and groups in the Advanced tab" : "Anda dapat menetapkan Base DN untuk pengguna dan grup dalam tab Lanjutan",
+ "Detect Base DN" : "Deteksi Base DN",
+ "Test Base DN" : "Uji Base DN",
+ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Mencegah permintaan LDAP otomatis. Berguna untuk setelan yang lebih besar, tapi memerlukan beberapa pengetahuan LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Masukkan penyaring LDAP secara manual (direkomendasikan untuk direktori yang besar)",
"Limit %s access to users meeting these criteria:" : "Batasi akses %s untuk pengguna yang sesuai dengan kriteria berikut:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kelas obyek yang umum untuk pengguna adalah organizationalPerson, person, user, dan inetOrgPerson. Jika Anda tidak yakin kelas obyek mana yang akan dipilih, silakan konsultasi dengan admin direktori Anda.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "Penyaring menentukan pengguna LDAP mana yang memiliki akses ke %s.",
+ "Verify settings and count users" : "Verifikasi setelan dan jumlah pengguna",
"Saving" : "Menyimpan",
"Back" : "Kembali",
"Continue" : "Lanjutkan",
"LDAP" : "LDAP",
"Expert" : "Lanjutan",
"Advanced" : "Lanjutan",
+ "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Peringatan:</b> Aplikasi user_ldap dan user_webdavauth tidak kompatibel. Anda mungkin akan mengalami perilaku yang tidak terduga. Silakan minta administrator Anda untuk menonaktifkan salah satunya.",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Peringatan:</b> Modul LDAP PHP tidak terpasang, perangkat tidak akan bekerja. Silakan minta administrator sistem untuk memasangnya.",
"Connection Settings" : "Pengaturan Koneksi",
"Configuration Active" : "Konfigurasi Aktif",
- "When unchecked, this configuration will be skipped." : "Jika tidak dicentang, konfigurasi ini dilewati.",
- "Backup (Replica) Host" : "Host Cadangan (Replika)",
+ "When unchecked, this configuration will be skipped." : "Jika tidak dicentang, konfigurasi ini akan dilewati.",
+ "Backup (Replica) Host" : "Cadangkan (Replika) Host",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Berikan pilihan host cadangan. Harus merupakan replika dari server LDAP/AD utama.",
- "Backup (Replica) Port" : "Port Cadangan (Replika)",
+ "Backup (Replica) Port" : "Cadangkan (Replika) Port",
"Disable Main Server" : "Nonaktifkan Server Utama",
- "Turn off SSL certificate validation." : "matikan validasi sertivikat SSL",
- "Cache Time-To-Live" : "Gunakan Tembolok untuk Time-To-Live",
+ "Only connect to the replica server." : "Hanya terhubung ke server replika.",
+ "Case insensitive LDAP server (Windows)" : "Server LDAP tidak sensitif kata (Windows)",
+ "Turn off SSL certificate validation." : "Matikan validasi sertifikat SSL.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Tidak dianjurkan, gunakan ini hanya untuk percobaan! Jika koneksi hanya bekerja dengan opsi ini, impor sertifikat SSL milik server LDAP kedalam server %s Anda.",
+ "Cache Time-To-Live" : "Cache Time-To-Live",
"in seconds. A change empties the cache." : "dalam detik. perubahan mengosongkan cache",
"Directory Settings" : "Pengaturan Direktori",
"User Display Name Field" : "Bidang Tampilan Nama Pengguna",
"The LDAP attribute to use to generate the user's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan pengguna.",
- "Base User Tree" : "Pohon Pengguna Dasar",
+ "Base User Tree" : "Base User Tree",
"One User Base DN per line" : "Satu Pengguna Base DN per baris",
"User Search Attributes" : "Atribut Pencarian Pengguna",
"Optional; one attribute per line" : "Pilihan; satu atribut per baris",
"Group Display Name Field" : "Bidang Tampilan Nama Grup",
"The LDAP attribute to use to generate the groups's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan grup.",
- "Base Group Tree" : "Pohon Grup Dasar",
+ "Base Group Tree" : "Base Group Tree",
"One Group Base DN per line" : "Satu Grup Base DN per baris",
"Group Search Attributes" : "Atribut Pencarian Grup",
- "Group-Member association" : "asosiasi Anggota-Grup",
+ "Group-Member association" : "Asosiasi Anggota-Grup",
+ "Nested Groups" : "Grup Bersarang",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Ketika dihidupkan, grup yang berisi grup akan didukung. (Hanya bekerja jika atribut anggota grup berisi DN.)",
+ "Paging chunksize" : "Paging chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize digunakan untuk pencarian paged LDAP yang mengembalikan hasil secara massal seperti enumerasi pengguna dan grup. (Atur dengan nilai 0 untuk menonaktifkan pencarian paged LDAP dalam situasi tersebut.)",
"Special Attributes" : "Atribut Khusus",
- "Quota Field" : "Bidang Kuota",
+ "Quota Field" : "Kolom Kuota",
"Quota Default" : "Kuota Baku",
"in bytes" : "dalam bytes",
- "Email Field" : "Bidang Email",
+ "Email Field" : "Kolom Email",
"User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.",
"Internal Username" : "Nama Pengguna Internal",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Secara default, nama pengguna internal akan dibuat dari atribut UUID. Hal ini untuk memastikan bahwa nama pengguna agar unik dan karakter tidak perlu dikonversi. Nama pengguna internal memiliki batasan hanya karakter ini yang diizinkan: [ a-zA-Z0-9_.@- ]. Karakter selain itu akan diganti dengan korespondensi ASCII mereka atau akan dihilangkan. Pada nama yang bentrok, sebuah angka akan ditambahkan dan ditingkatkan. Nama pengguna internal ini digunakan untuk mengenali sebuah nama secara internal. Itu juga dipakai sebagai nama folder home default, serta sebagai bagian dari URL remote untuk semua instansi layanan *DAV. Dengan pengaturan ini, perilaku default dapat diganti. Untuk mewujudkan perilaku seperti sebelum ownCloud 5, masukkan atribut nama tampilan pengguna di bidang isian berikut. Tinggalkan kosong untuk menggunakan perilaku default. Perubahan hanya akan terlihat untuk pengguna LDAP yang baru dipetakan (ditambahkan).",
"Internal Username Attribute:" : "Atribut Nama Pengguna Internal:",
"Override UUID detection" : "Timpa deteksi UUID",
+ "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Secara default, atribut UUID akan secara otomatis terdeteksi. Atribut UUID ini digunakan untuk mengidentifikasi pengguna dan grup LDAP yang diragukan. Nama pengguna internal juga akan dibuat berdasarkan UUID jika belum ditetapkan di atas. Anda dapat mengganti pengaturan dan meluluskan atribut pilihan Anda. Anda harus memastikan bahwa atribut pilihan Anda dapat diambil untuk pengguna dan grup, serta haruslah unik. Biarkan kosong untuk perilaku default. Perubahan akan berpengaruh hanya pada pengguna dan grup LDAP yang baru dipetakan (ditambahkan).",
"UUID Attribute for Users:" : "Atribut UUID untuk Pengguna:",
- "UUID Attribute for Groups:" : "Atribut UUID untuk Grup:"
+ "UUID Attribute for Groups:" : "Atribut UUID untuk Grup:",
+ "Username-LDAP User Mapping" : "Pemetaan Pengguna LDAP-Nama pengguna",
+ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.",
+ "Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
+ "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json
index fa0a0a7be20..fc41e5d2c74 100644
--- a/apps/user_ldap/l10n/id.json
+++ b/apps/user_ldap/l10n/id.json
@@ -1,14 +1,16 @@
{ "translations": {
"Failed to clear the mappings." : "Gagal membersihkan pemetaan.",
"Failed to delete the server configuration" : "Gagal menghapus konfigurasi server",
+ "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasi tidak sah: bind anonim tidak diizinkan",
"The configuration is valid and the connection could be established!" : "Konfigurasi valid dan koneksi dapat dilakukan!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi Bind gagal. Silakan periksa pengaturan server dan kredensial.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebh lanjut.",
+ "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebih lanjut.",
"No action specified" : "Tidak ada tindakan yang ditetapkan",
"No configuration specified" : "Tidak ada konfigurasi yang ditetapkan",
"No data specified" : "Tidak ada data yang ditetapkan",
" Could not set configuration %s" : "Tidak dapat menyetel konfigurasi %s",
"Action does not exist" : "Tidak ada tindakan",
+ "The Base DN appears to be wrong" : "Base DN tampaknya salah",
"Configuration incorrect" : "Konfigurasi salah",
"Configuration incomplete" : "Konfigurasi tidak lengkap",
"Configuration OK" : "Konfigurasi Oke",
@@ -27,16 +29,21 @@
"Confirm Deletion" : "Konfirmasi Penghapusan",
"Mappings cleared successfully!" : "Pemetaan berhasil dibersihkan!",
"Error while clearing the mappings." : "Kesalahan saat membersihkan pemetaan.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Bind anonim tidak diizinkan. Mohon berikan sebuah User DN dan Password.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Kesalahan Operasi LDAP. Bind anonim tidak diizinkan.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Menyimpan gagal. Mohon pastikan basis data di Operasi. Muat Ulang sebelum melanjutkan.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Beralih modus akan mengaktifkan kueri LDAP. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Beralih modus akan mengaktifkan kueri LDAP secara otomatis. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
"Mode switch" : "Beralih modus",
"Select attributes" : "Pilih atribut",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
"User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.",
"An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
- "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah diaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Placeholder %uid tidak ada. Placeholder akan digantikan dengan nama login saat melakukan kueri LDAP / AD.",
+ "Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah dinonaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
@@ -48,7 +55,7 @@
"Groups" : "Grup",
"Test Configuration" : "Uji Konfigurasi",
"Help" : "Bantuan",
- "Groups meeting these criteria are available in %s:" : "Grup memenuhi kriteria ini tersedia di %s:",
+ "Groups meeting these criteria are available in %s:" : "Grup yang memenuhi kriteria ini tersedia di %s:",
"Only these object classes:" : "Hanya kelas obyek berikut:",
"Only from these groups:" : "Hanya dari grup berikut:",
"Search groups" : "Pencarian grup",
@@ -56,64 +63,95 @@
"Selected groups" : "Grup terpilih",
"Edit LDAP Query" : "Sunting Kueri LDAP",
"LDAP Filter:" : "Penyaring LDAP:",
+ "The filter specifies which LDAP groups shall have access to the %s instance." : "Penyaring menentukan grup LDAP mana yang memiliki akses ke %s.",
+ "Verify settings and count groups" : "Verifikasi setelan dan hitung grup",
+ "When logging in, %s will find the user based on the following attributes:" : "Pada saat login, %s akan menemukan pengguna berdasarkan atribut berikut:",
"LDAP / AD Username:" : "Nama pengguna LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Izinkan login dengan nama pengguna LDAP / AD, baik berupa uid atau samaccountname, mereka akan terdeteksi.",
"LDAP / AD Email Address:" : "Alamat Email LDAP / AD:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Izinkan login dengan atribut email. Mail dan mailPrimaryAddress diperbolehkan.",
"Other Attributes:" : "Atribut Lain:",
+ "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Tetapkan penyaring yang akan diterapkan saat mencoba login. %%uid akan mengganti nama pengguna saat melakukan login. Contoh: \"uid=%%uid\"",
+ "Test Loginname" : "Test Loginname",
+ "Verify settings" : "Verifikasi setelan",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
+ "Add a new and blank configuration" : "Tambah konfigurasi kosong yang baru",
+ "Copy current configuration into new directory binding" : "Salin konfigurasi saat ini kedalam direktori baru",
+ "Delete the current configuration" : "Hapus konfigurasi saat ini",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokol dapat tidak ditulis, kecuali Anda menggunakan SSL. Lalu jalankan dengan ldaps://",
"Port" : "Port",
+ "Detect Port" : "Deteksi Port",
"User DN" : "Pengguna DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN dari klien pengguna yang dengannya tautan akan diterapkan, mis. uid=agen,dc=contoh,dc=com. Untuk akses anonim, biarkan DN dan kata sandi kosong.",
"Password" : "Sandi",
"For anonymous access, leave DN and Password empty." : "Untuk akses anonim, biarkan DN dan Kata sandi kosong.",
"One Base DN per line" : "Satu Base DN per baris",
"You can specify Base DN for users and groups in the Advanced tab" : "Anda dapat menetapkan Base DN untuk pengguna dan grup dalam tab Lanjutan",
+ "Detect Base DN" : "Deteksi Base DN",
+ "Test Base DN" : "Uji Base DN",
+ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Mencegah permintaan LDAP otomatis. Berguna untuk setelan yang lebih besar, tapi memerlukan beberapa pengetahuan LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Masukkan penyaring LDAP secara manual (direkomendasikan untuk direktori yang besar)",
"Limit %s access to users meeting these criteria:" : "Batasi akses %s untuk pengguna yang sesuai dengan kriteria berikut:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kelas obyek yang umum untuk pengguna adalah organizationalPerson, person, user, dan inetOrgPerson. Jika Anda tidak yakin kelas obyek mana yang akan dipilih, silakan konsultasi dengan admin direktori Anda.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "Penyaring menentukan pengguna LDAP mana yang memiliki akses ke %s.",
+ "Verify settings and count users" : "Verifikasi setelan dan jumlah pengguna",
"Saving" : "Menyimpan",
"Back" : "Kembali",
"Continue" : "Lanjutkan",
"LDAP" : "LDAP",
"Expert" : "Lanjutan",
"Advanced" : "Lanjutan",
+ "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Peringatan:</b> Aplikasi user_ldap dan user_webdavauth tidak kompatibel. Anda mungkin akan mengalami perilaku yang tidak terduga. Silakan minta administrator Anda untuk menonaktifkan salah satunya.",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Peringatan:</b> Modul LDAP PHP tidak terpasang, perangkat tidak akan bekerja. Silakan minta administrator sistem untuk memasangnya.",
"Connection Settings" : "Pengaturan Koneksi",
"Configuration Active" : "Konfigurasi Aktif",
- "When unchecked, this configuration will be skipped." : "Jika tidak dicentang, konfigurasi ini dilewati.",
- "Backup (Replica) Host" : "Host Cadangan (Replika)",
+ "When unchecked, this configuration will be skipped." : "Jika tidak dicentang, konfigurasi ini akan dilewati.",
+ "Backup (Replica) Host" : "Cadangkan (Replika) Host",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Berikan pilihan host cadangan. Harus merupakan replika dari server LDAP/AD utama.",
- "Backup (Replica) Port" : "Port Cadangan (Replika)",
+ "Backup (Replica) Port" : "Cadangkan (Replika) Port",
"Disable Main Server" : "Nonaktifkan Server Utama",
- "Turn off SSL certificate validation." : "matikan validasi sertivikat SSL",
- "Cache Time-To-Live" : "Gunakan Tembolok untuk Time-To-Live",
+ "Only connect to the replica server." : "Hanya terhubung ke server replika.",
+ "Case insensitive LDAP server (Windows)" : "Server LDAP tidak sensitif kata (Windows)",
+ "Turn off SSL certificate validation." : "Matikan validasi sertifikat SSL.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Tidak dianjurkan, gunakan ini hanya untuk percobaan! Jika koneksi hanya bekerja dengan opsi ini, impor sertifikat SSL milik server LDAP kedalam server %s Anda.",
+ "Cache Time-To-Live" : "Cache Time-To-Live",
"in seconds. A change empties the cache." : "dalam detik. perubahan mengosongkan cache",
"Directory Settings" : "Pengaturan Direktori",
"User Display Name Field" : "Bidang Tampilan Nama Pengguna",
"The LDAP attribute to use to generate the user's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan pengguna.",
- "Base User Tree" : "Pohon Pengguna Dasar",
+ "Base User Tree" : "Base User Tree",
"One User Base DN per line" : "Satu Pengguna Base DN per baris",
"User Search Attributes" : "Atribut Pencarian Pengguna",
"Optional; one attribute per line" : "Pilihan; satu atribut per baris",
"Group Display Name Field" : "Bidang Tampilan Nama Grup",
"The LDAP attribute to use to generate the groups's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan grup.",
- "Base Group Tree" : "Pohon Grup Dasar",
+ "Base Group Tree" : "Base Group Tree",
"One Group Base DN per line" : "Satu Grup Base DN per baris",
"Group Search Attributes" : "Atribut Pencarian Grup",
- "Group-Member association" : "asosiasi Anggota-Grup",
+ "Group-Member association" : "Asosiasi Anggota-Grup",
+ "Nested Groups" : "Grup Bersarang",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Ketika dihidupkan, grup yang berisi grup akan didukung. (Hanya bekerja jika atribut anggota grup berisi DN.)",
+ "Paging chunksize" : "Paging chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize digunakan untuk pencarian paged LDAP yang mengembalikan hasil secara massal seperti enumerasi pengguna dan grup. (Atur dengan nilai 0 untuk menonaktifkan pencarian paged LDAP dalam situasi tersebut.)",
"Special Attributes" : "Atribut Khusus",
- "Quota Field" : "Bidang Kuota",
+ "Quota Field" : "Kolom Kuota",
"Quota Default" : "Kuota Baku",
"in bytes" : "dalam bytes",
- "Email Field" : "Bidang Email",
+ "Email Field" : "Kolom Email",
"User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.",
"Internal Username" : "Nama Pengguna Internal",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Secara default, nama pengguna internal akan dibuat dari atribut UUID. Hal ini untuk memastikan bahwa nama pengguna agar unik dan karakter tidak perlu dikonversi. Nama pengguna internal memiliki batasan hanya karakter ini yang diizinkan: [ a-zA-Z0-9_.@- ]. Karakter selain itu akan diganti dengan korespondensi ASCII mereka atau akan dihilangkan. Pada nama yang bentrok, sebuah angka akan ditambahkan dan ditingkatkan. Nama pengguna internal ini digunakan untuk mengenali sebuah nama secara internal. Itu juga dipakai sebagai nama folder home default, serta sebagai bagian dari URL remote untuk semua instansi layanan *DAV. Dengan pengaturan ini, perilaku default dapat diganti. Untuk mewujudkan perilaku seperti sebelum ownCloud 5, masukkan atribut nama tampilan pengguna di bidang isian berikut. Tinggalkan kosong untuk menggunakan perilaku default. Perubahan hanya akan terlihat untuk pengguna LDAP yang baru dipetakan (ditambahkan).",
"Internal Username Attribute:" : "Atribut Nama Pengguna Internal:",
"Override UUID detection" : "Timpa deteksi UUID",
+ "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Secara default, atribut UUID akan secara otomatis terdeteksi. Atribut UUID ini digunakan untuk mengidentifikasi pengguna dan grup LDAP yang diragukan. Nama pengguna internal juga akan dibuat berdasarkan UUID jika belum ditetapkan di atas. Anda dapat mengganti pengaturan dan meluluskan atribut pilihan Anda. Anda harus memastikan bahwa atribut pilihan Anda dapat diambil untuk pengguna dan grup, serta haruslah unik. Biarkan kosong untuk perilaku default. Perubahan akan berpengaruh hanya pada pengguna dan grup LDAP yang baru dipetakan (ditambahkan).",
"UUID Attribute for Users:" : "Atribut UUID untuk Pengguna:",
- "UUID Attribute for Groups:" : "Atribut UUID untuk Grup:"
+ "UUID Attribute for Groups:" : "Atribut UUID untuk Grup:",
+ "Username-LDAP User Mapping" : "Pemetaan Pengguna LDAP-Nama pengguna",
+ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.",
+ "Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
+ "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js
index 55c1abb333f..80bdfdc177e 100644
--- a/apps/user_ldap/l10n/it.js
+++ b/apps/user_ldap/l10n/it.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Verifica impostazioni",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
- "Adds a new and blank configuration" : "Aggiunge una nuova configurazione",
+ "Add a new and blank configuration" : "Aggiunge una nuova configurazione vuota",
"Copy current configuration into new directory binding" : "Copia la configurazione attuale nella nuova cartella associata",
"Delete the current configuration" : "Elimina la configurazione attuale",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json
index 9bf6de0e336..8eea02f2c85 100644
--- a/apps/user_ldap/l10n/it.json
+++ b/apps/user_ldap/l10n/it.json
@@ -76,7 +76,7 @@
"Verify settings" : "Verifica impostazioni",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
- "Adds a new and blank configuration" : "Aggiunge una nuova configurazione",
+ "Add a new and blank configuration" : "Aggiunge una nuova configurazione vuota",
"Copy current configuration into new directory binding" : "Copia la configurazione attuale nella nuova cartella associata",
"Delete the current configuration" : "Elimina la configurazione attuale",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index a6218138d5b..259f9facbd2 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -115,7 +115,7 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザー名を空のままにしてください(デフォルト)。もしくは、LDAPもしくはADの属性を指定してください。",
"Internal Username" : "内部ユーザー名",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザ名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
"Internal Username Attribute:" : "内部ユーザー名属性:",
"Override UUID detection" : "UUID検出を再定義する",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "デフォルトでは、UUID 属性は自動的に検出されます。UUID属性は、LDAPユーザーとLDAPグループを間違いなく識別するために利用されます。また、もしこれを指定しない場合は、内部ユーザー名はUUIDに基づいて作成されます。この設定は再定義することができ、あなたの選択した属性を用いることができます。選択した属性がユーザーとグループの両方に対して適用でき、かつユニークであることを確認してください。空であればデフォルトの振る舞いとなります。変更は、新しくマッピング(追加)されたLDAPユーザーとLDAPグループに対してのみ有効となります。",
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index 8b7d8389b9a..3dceb217eb6 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -113,7 +113,7 @@
"User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザー名を空のままにしてください(デフォルト)。もしくは、LDAPもしくはADの属性を指定してください。",
"Internal Username" : "内部ユーザー名",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザ名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。",
"Internal Username Attribute:" : "内部ユーザー名属性:",
"Override UUID detection" : "UUID検出を再定義する",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "デフォルトでは、UUID 属性は自動的に検出されます。UUID属性は、LDAPユーザーとLDAPグループを間違いなく識別するために利用されます。また、もしこれを指定しない場合は、内部ユーザー名はUUIDに基づいて作成されます。この設定は再定義することができ、あなたの選択した属性を用いることができます。選択した属性がユーザーとグループの両方に対して適用でき、かつユニークであることを確認してください。空であればデフォルトの振る舞いとなります。変更は、新しくマッピング(追加)されたLDAPユーザーとLDAPグループに対してのみ有効となります。",
diff --git a/apps/user_ldap/l10n/lb.js b/apps/user_ldap/l10n/lb.js
index 78e8ca45c38..b340887548e 100644
--- a/apps/user_ldap/l10n/lb.js
+++ b/apps/user_ldap/l10n/lb.js
@@ -5,6 +5,7 @@ OC.L10N.register(
"Groups" : "Gruppen",
"Help" : "Hëllef",
"Host" : "Host",
+ "Port" : "Port",
"Password" : "Passwuert",
"Back" : "Zeréck",
"Continue" : "Weider",
diff --git a/apps/user_ldap/l10n/lb.json b/apps/user_ldap/l10n/lb.json
index 7776bf5e76a..4b4d46427b8 100644
--- a/apps/user_ldap/l10n/lb.json
+++ b/apps/user_ldap/l10n/lb.json
@@ -3,6 +3,7 @@
"Groups" : "Gruppen",
"Help" : "Hëllef",
"Host" : "Host",
+ "Port" : "Port",
"Password" : "Passwuert",
"Back" : "Zeréck",
"Continue" : "Weider",
diff --git a/apps/user_ldap/l10n/nb_NO.js b/apps/user_ldap/l10n/nb_NO.js
index c969be1ce75..25670ce73a8 100644
--- a/apps/user_ldap/l10n/nb_NO.js
+++ b/apps/user_ldap/l10n/nb_NO.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Sjekk innstillinger",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
- "Adds a new and blank configuration" : "Legger til en ny tom konfigurasjon",
+ "Add a new and blank configuration" : "Legg til en ny tom konfigurasjon",
"Copy current configuration into new directory binding" : "Kopier gjeldende konfigurasjon til ny katalogbinding",
"Delete the current configuration" : "Slett gjeldende konfigurasjon",
"Host" : "Tjener",
diff --git a/apps/user_ldap/l10n/nb_NO.json b/apps/user_ldap/l10n/nb_NO.json
index 7a34b813ad8..588c9f6c213 100644
--- a/apps/user_ldap/l10n/nb_NO.json
+++ b/apps/user_ldap/l10n/nb_NO.json
@@ -76,7 +76,7 @@
"Verify settings" : "Sjekk innstillinger",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
- "Adds a new and blank configuration" : "Legger til en ny tom konfigurasjon",
+ "Add a new and blank configuration" : "Legg til en ny tom konfigurasjon",
"Copy current configuration into new directory binding" : "Kopier gjeldende konfigurasjon til ny katalogbinding",
"Delete the current configuration" : "Slett gjeldende konfigurasjon",
"Host" : "Tjener",
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index 7e72b002a87..b12f3a02424 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Verifiëren instellingen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Toevoegen blanco nieuwe configuratie",
+ "Add a new and blank configuration" : "Toevoegen nieuwe, blanco configuratie",
"Copy current configuration into new directory binding" : "Kopieer de huidige configuratie naar een nieuwe directory binding",
"Delete the current configuration" : "Verwijder de huidige configuratie",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index 415454da435..1b7b665781a 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -76,7 +76,7 @@
"Verify settings" : "Verifiëren instellingen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Toevoegen blanco nieuwe configuratie",
+ "Add a new and blank configuration" : "Toevoegen nieuwe, blanco configuratie",
"Copy current configuration into new directory binding" : "Kopieer de huidige configuratie naar een nieuwe directory binding",
"Delete the current configuration" : "Verwijder de huidige configuratie",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js
index f0a6af6f6b8..e6092532818 100644
--- a/apps/user_ldap/l10n/pl.js
+++ b/apps/user_ldap/l10n/pl.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Nie udało się wyczyścić mapowania.",
"Failed to delete the server configuration" : "Nie można usunąć konfiguracji serwera",
+ "The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.",
"The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.",
"The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dalszych szczegółów.",
@@ -10,11 +11,14 @@ OC.L10N.register(
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
" Could not set configuration %s" : "Nie można ustawić konfiguracji %s",
+ "Action does not exist" : "Akcja nie istnieje",
"Configuration incorrect" : "Konfiguracja niepoprawna",
"Configuration incomplete" : "Konfiguracja niekompletna",
"Configuration OK" : "Konfiguracja poprawna",
"Select groups" : "Wybierz grupy",
"Select object classes" : "Wybierz obiekty klas",
+ "Please check the credentials, they seem to be wrong." : "Sprawdź dane logowania, wydają się być nieprawidłowe.",
+ "Please specify the port, it could not be auto-detected." : "Podaj port, nie można ustalić go automatycznie.",
"{nthServer}. Server" : "{nthServer}. Serwer",
"Do you really want to delete the current Server Configuration?" : "Czy chcesz usunąć bieżącą konfigurację serwera?",
"Confirm Deletion" : "Potwierdź usunięcie",
@@ -26,18 +30,32 @@ OC.L10N.register(
"Invalid Host" : "Niepoprawny Host",
"Server" : "Serwer",
"Users" : "Użytkownicy",
+ "Login Attributes" : "Atrybuty logowania",
"Groups" : "Grupy",
"Test Configuration" : "Konfiguracja testowa",
"Help" : "Pomoc",
"Groups meeting these criteria are available in %s:" : "Przyłączenie do grupy z tymi ustawieniami dostępne jest w %s:",
+ "Search groups" : "Przeszukaj grupy",
+ "Available groups" : "Dostępne grupy",
+ "Selected groups" : "Wybrane grupy",
+ "Edit LDAP Query" : "Edytuj zapytanie LDAP",
+ "LDAP Filter:" : "Filtr LDAP",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtr określa, które grupy LDAP powinny mieć dostęp do instancji %s.",
+ "Verify settings and count groups" : "Zweryfikuj ustawienia i policz grupy",
+ "When logging in, %s will find the user based on the following attributes:" : "Podczas logowania, %s znajdzie użytkownika na podstawie następujących atrybutów:",
+ "LDAP / AD Username:" : "Nazwa użytkownika LDAP / AD:",
+ "LDAP / AD Email Address:" : "Adres email LDAP / AD:",
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Określa jakiego filtru użyć podczas próby zalogowania. %%uid zastępuje nazwę użytkownika w procesie logowania. Przykład: \"uid=%%uid\"",
+ "Verify settings" : "Weryfikuj ustawienia",
"1. Server" : "1. Serwer",
"%s. Server:" : "%s. Serwer:",
+ "Copy current configuration into new directory binding" : "Kopiuje aktualną konfigurację do nowej lokalizacji",
+ "Delete the current configuration" : "Usuwa aktualną konfigurację",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Można pominąć protokół, z wyjątkiem wymaganego protokołu SSL. Następnie uruchom z ldaps://",
"Port" : "Port",
+ "Detect Port" : "Wykryj port",
"User DN" : "Użytkownik DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN użytkownika klienta, z którym powiązanie wykonuje się, np. uid=agent,dc=example,dc=com. Dla dostępu anonimowego pozostawić DN i hasło puste",
"Password" : "Hasło",
diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json
index ed5beeefaba..feb45644090 100644
--- a/apps/user_ldap/l10n/pl.json
+++ b/apps/user_ldap/l10n/pl.json
@@ -1,6 +1,7 @@
{ "translations": {
"Failed to clear the mappings." : "Nie udało się wyczyścić mapowania.",
"Failed to delete the server configuration" : "Nie można usunąć konfiguracji serwera",
+ "The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.",
"The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.",
"The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dalszych szczegółów.",
@@ -8,11 +9,14 @@
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
" Could not set configuration %s" : "Nie można ustawić konfiguracji %s",
+ "Action does not exist" : "Akcja nie istnieje",
"Configuration incorrect" : "Konfiguracja niepoprawna",
"Configuration incomplete" : "Konfiguracja niekompletna",
"Configuration OK" : "Konfiguracja poprawna",
"Select groups" : "Wybierz grupy",
"Select object classes" : "Wybierz obiekty klas",
+ "Please check the credentials, they seem to be wrong." : "Sprawdź dane logowania, wydają się być nieprawidłowe.",
+ "Please specify the port, it could not be auto-detected." : "Podaj port, nie można ustalić go automatycznie.",
"{nthServer}. Server" : "{nthServer}. Serwer",
"Do you really want to delete the current Server Configuration?" : "Czy chcesz usunąć bieżącą konfigurację serwera?",
"Confirm Deletion" : "Potwierdź usunięcie",
@@ -24,18 +28,32 @@
"Invalid Host" : "Niepoprawny Host",
"Server" : "Serwer",
"Users" : "Użytkownicy",
+ "Login Attributes" : "Atrybuty logowania",
"Groups" : "Grupy",
"Test Configuration" : "Konfiguracja testowa",
"Help" : "Pomoc",
"Groups meeting these criteria are available in %s:" : "Przyłączenie do grupy z tymi ustawieniami dostępne jest w %s:",
+ "Search groups" : "Przeszukaj grupy",
+ "Available groups" : "Dostępne grupy",
+ "Selected groups" : "Wybrane grupy",
+ "Edit LDAP Query" : "Edytuj zapytanie LDAP",
+ "LDAP Filter:" : "Filtr LDAP",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtr określa, które grupy LDAP powinny mieć dostęp do instancji %s.",
+ "Verify settings and count groups" : "Zweryfikuj ustawienia i policz grupy",
+ "When logging in, %s will find the user based on the following attributes:" : "Podczas logowania, %s znajdzie użytkownika na podstawie następujących atrybutów:",
+ "LDAP / AD Username:" : "Nazwa użytkownika LDAP / AD:",
+ "LDAP / AD Email Address:" : "Adres email LDAP / AD:",
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Określa jakiego filtru użyć podczas próby zalogowania. %%uid zastępuje nazwę użytkownika w procesie logowania. Przykład: \"uid=%%uid\"",
+ "Verify settings" : "Weryfikuj ustawienia",
"1. Server" : "1. Serwer",
"%s. Server:" : "%s. Serwer:",
+ "Copy current configuration into new directory binding" : "Kopiuje aktualną konfigurację do nowej lokalizacji",
+ "Delete the current configuration" : "Usuwa aktualną konfigurację",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Można pominąć protokół, z wyjątkiem wymaganego protokołu SSL. Następnie uruchom z ldaps://",
"Port" : "Port",
+ "Detect Port" : "Wykryj port",
"User DN" : "Użytkownik DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN użytkownika klienta, z którym powiązanie wykonuje się, np. uid=agent,dc=example,dc=com. Dla dostępu anonimowego pozostawić DN i hasło puste",
"Password" : "Hasło",
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index 2ee1f13da76..87c78e3d2f5 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Verificar configurações",
"1. Server" : "1. Servidor",
"%s. Server:" : "%s. Servidor:",
- "Adds a new and blank configuration" : "Adiciona uma configuração nova e em branco",
+ "Add a new and blank configuration" : "Adiciona uma configuração nova e em branco",
"Copy current configuration into new directory binding" : "Copie a configuração atual em um novo diretório obrigatório",
"Delete the current configuration" : "Excluir a configuração atual",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index a0f3f79a352..169ff1db41c 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -76,7 +76,7 @@
"Verify settings" : "Verificar configurações",
"1. Server" : "1. Servidor",
"%s. Server:" : "%s. Servidor:",
- "Adds a new and blank configuration" : "Adiciona uma configuração nova e em branco",
+ "Add a new and blank configuration" : "Adiciona uma configuração nova e em branco",
"Copy current configuration into new directory binding" : "Copie a configuração atual em um novo diretório obrigatório",
"Delete the current configuration" : "Excluir a configuração atual",
"Host" : "Host",
diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index 78aa87eb99b..8ddf80841a0 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "Проверить настройки",
"1. Server" : "Сервер 1.",
"%s. Server:" : "Сервер %s:",
- "Adds a new and blank configuration" : "Добавляет новую и пустую конфигурацию",
+ "Add a new and blank configuration" : "Добавить новую и пустую конфигурацию",
"Copy current configuration into new directory binding" : "Копировать текущую конфигурацию в новую связь с каталогом",
"Delete the current configuration" : "Удалить текущую конфигурацию",
"Host" : "Сервер",
diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json
index 98a447d6f89..ede0d5357d0 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -76,7 +76,7 @@
"Verify settings" : "Проверить настройки",
"1. Server" : "Сервер 1.",
"%s. Server:" : "Сервер %s:",
- "Adds a new and blank configuration" : "Добавляет новую и пустую конфигурацию",
+ "Add a new and blank configuration" : "Добавить новую и пустую конфигурацию",
"Copy current configuration into new directory binding" : "Копировать текущую конфигурацию в новую связь с каталогом",
"Delete the current configuration" : "Удалить текущую конфигурацию",
"Host" : "Сервер",
diff --git a/apps/user_ldap/l10n/sk_SK.js b/apps/user_ldap/l10n/sk_SK.js
index 5f9c6f3893b..612296be0cc 100644
--- a/apps/user_ldap/l10n/sk_SK.js
+++ b/apps/user_ldap/l10n/sk_SK.js
@@ -21,8 +21,11 @@ OC.L10N.register(
"Please check the credentials, they seem to be wrong." : "Overte svoje oprávnenia, nie sú správne nastavené.",
"Please specify the port, it could not be auto-detected." : "Zadajte port, nemožno ho detekovať automaticky.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "More than 1.000 directory entries available." : "Viac ako 1.000 priečinkov k dispozícii.",
"Do you really want to delete the current Server Configuration?" : "Naozaj chcete zmazať súčasné nastavenie servera?",
"Confirm Deletion" : "Potvrdiť vymazanie",
+ "Mappings cleared successfully!" : "Mapovanie úspešne odstránené!",
+ "Mode switch" : "Prepínač režimov",
"Select attributes" : "Vyberte atribúty",
"User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.",
"_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"],
@@ -57,7 +60,6 @@ OC.L10N.register(
"Verify settings" : "Overiť nastavenia",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Pridať novú prázdnu konfiguráciu",
"Delete the current configuration" : "Vymazať súčasnú konfiguráciu",
"Host" : "Hostiteľ",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Môžete vynechať protokol, okrem prípadu, kedy sa vyžaduje SSL. Vtedy začnite s ldaps://",
diff --git a/apps/user_ldap/l10n/sk_SK.json b/apps/user_ldap/l10n/sk_SK.json
index 9c1e2e6e9e4..abc6b5ec248 100644
--- a/apps/user_ldap/l10n/sk_SK.json
+++ b/apps/user_ldap/l10n/sk_SK.json
@@ -19,8 +19,11 @@
"Please check the credentials, they seem to be wrong." : "Overte svoje oprávnenia, nie sú správne nastavené.",
"Please specify the port, it could not be auto-detected." : "Zadajte port, nemožno ho detekovať automaticky.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "More than 1.000 directory entries available." : "Viac ako 1.000 priečinkov k dispozícii.",
"Do you really want to delete the current Server Configuration?" : "Naozaj chcete zmazať súčasné nastavenie servera?",
"Confirm Deletion" : "Potvrdiť vymazanie",
+ "Mappings cleared successfully!" : "Mapovanie úspešne odstránené!",
+ "Mode switch" : "Prepínač režimov",
"Select attributes" : "Vyberte atribúty",
"User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.",
"_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"],
@@ -55,7 +58,6 @@
"Verify settings" : "Overiť nastavenia",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
- "Adds a new and blank configuration" : "Pridať novú prázdnu konfiguráciu",
"Delete the current configuration" : "Vymazať súčasnú konfiguráciu",
"Host" : "Hostiteľ",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Môžete vynechať protokol, okrem prípadu, kedy sa vyžaduje SSL. Vtedy začnite s ldaps://",
diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js
index 925f802f3a9..f965cf658cd 100644
--- a/apps/user_ldap/l10n/sl.js
+++ b/apps/user_ldap/l10n/sl.js
@@ -10,7 +10,7 @@ OC.L10N.register(
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
" Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s",
- "Action does not exist" : "Operacija ne obstaja",
+ "Action does not exist" : "Dejanje ne obstaja",
"Configuration incorrect" : "Nastavitev ni ustrezna",
"Configuration incomplete" : "Nastavitev je nepopolna",
"Configuration OK" : "Nastavitev je ustrezna",
@@ -30,7 +30,7 @@ OC.L10N.register(
"Invalid Host" : "Neveljaven gostitelj",
"Server" : "Strežnik",
"Users" : "Uporabniki",
- "Login Attributes" : "Parametri prijave",
+ "Login Attributes" : "Atributi prijave",
"Groups" : "Skupine",
"Test Configuration" : "Preizkusne nastavitve",
"Help" : "Pomoč",
@@ -40,7 +40,7 @@ OC.L10N.register(
"Search groups" : "Skupine za iskanje",
"Available groups" : "Razpoložljive skupine",
"Selected groups" : "Izbrane skupine",
- "LDAP Filter:" : "LDAP Filter:",
+ "LDAP Filter:" : "Filter LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter določa, katere skupine LDAP bodo imele dostop do %s.",
"Other Attributes:" : "Drugi atributi:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Določi filter, ki bo uveljavljen ob poskusu prijave. %%uid zamenja uporabniško ime pri prijavi, na primer: \"uid=%%uid\"",
diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json
index 4674f513589..efb51bad008 100644
--- a/apps/user_ldap/l10n/sl.json
+++ b/apps/user_ldap/l10n/sl.json
@@ -8,7 +8,7 @@
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
" Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s",
- "Action does not exist" : "Operacija ne obstaja",
+ "Action does not exist" : "Dejanje ne obstaja",
"Configuration incorrect" : "Nastavitev ni ustrezna",
"Configuration incomplete" : "Nastavitev je nepopolna",
"Configuration OK" : "Nastavitev je ustrezna",
@@ -28,7 +28,7 @@
"Invalid Host" : "Neveljaven gostitelj",
"Server" : "Strežnik",
"Users" : "Uporabniki",
- "Login Attributes" : "Parametri prijave",
+ "Login Attributes" : "Atributi prijave",
"Groups" : "Skupine",
"Test Configuration" : "Preizkusne nastavitve",
"Help" : "Pomoč",
@@ -38,7 +38,7 @@
"Search groups" : "Skupine za iskanje",
"Available groups" : "Razpoložljive skupine",
"Selected groups" : "Izbrane skupine",
- "LDAP Filter:" : "LDAP Filter:",
+ "LDAP Filter:" : "Filter LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter določa, katere skupine LDAP bodo imele dostop do %s.",
"Other Attributes:" : "Drugi atributi:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Določi filter, ki bo uveljavljen ob poskusu prijave. %%uid zamenja uporabniško ime pri prijavi, na primer: \"uid=%%uid\"",
diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js
index 4e52cb05bd9..dd570c70e5c 100644
--- a/apps/user_ldap/l10n/sr.js
+++ b/apps/user_ldap/l10n/sr.js
@@ -78,7 +78,6 @@ OC.L10N.register(
"Verify settings" : "Провери поставке",
"1. Server" : "1. сервер",
"%s. Server:" : "%s. Сервер:",
- "Adds a new and blank configuration" : "Додаје нову празну поставу",
"Copy current configuration into new directory binding" : "Копирај тренутну поставу у везивање новог директоријума",
"Delete the current configuration" : "Обриши тренутне поставке",
"Host" : "Домаћин",
diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json
index c5b8b256cf8..91d9520d3b6 100644
--- a/apps/user_ldap/l10n/sr.json
+++ b/apps/user_ldap/l10n/sr.json
@@ -76,7 +76,6 @@
"Verify settings" : "Провери поставке",
"1. Server" : "1. сервер",
"%s. Server:" : "%s. Сервер:",
- "Adds a new and blank configuration" : "Додаје нову празну поставу",
"Copy current configuration into new directory binding" : "Копирај тренутну поставу у везивање новог директоријума",
"Delete the current configuration" : "Обриши тренутне поставке",
"Host" : "Домаћин",
diff --git a/apps/user_ldap/l10n/th_TH.js b/apps/user_ldap/l10n/th_TH.js
index d7215c96b6d..ea55c7c4936 100644
--- a/apps/user_ldap/l10n/th_TH.js
+++ b/apps/user_ldap/l10n/th_TH.js
@@ -78,7 +78,7 @@ OC.L10N.register(
"Verify settings" : "ตรวจสอบการตั้งค่า",
"1. Server" : "1. เซิร์ฟเวอร์",
"%s. Server:" : "เซิร์ฟเวอร์%s",
- "Adds a new and blank configuration" : "เพิ่มใหม่และกำหนดค่าว่างเปล่า",
+ "Add a new and blank configuration" : "เพิ่มใหม่และการกำหนดค่าว่าง",
"Copy current configuration into new directory binding" : "คัดลอกการตั้งค่าปัจจุบันลงในไดเรกทอรีใหม่ที่ผูกกัน",
"Delete the current configuration" : "ลบการตั้งค่าปัจจุบัน",
"Host" : "โฮสต์",
diff --git a/apps/user_ldap/l10n/th_TH.json b/apps/user_ldap/l10n/th_TH.json
index 1a05c5c68ca..ace0e5517a7 100644
--- a/apps/user_ldap/l10n/th_TH.json
+++ b/apps/user_ldap/l10n/th_TH.json
@@ -76,7 +76,7 @@
"Verify settings" : "ตรวจสอบการตั้งค่า",
"1. Server" : "1. เซิร์ฟเวอร์",
"%s. Server:" : "เซิร์ฟเวอร์%s",
- "Adds a new and blank configuration" : "เพิ่มใหม่และกำหนดค่าว่างเปล่า",
+ "Add a new and blank configuration" : "เพิ่มใหม่และการกำหนดค่าว่าง",
"Copy current configuration into new directory binding" : "คัดลอกการตั้งค่าปัจจุบันลงในไดเรกทอรีใหม่ที่ผูกกัน",
"Delete the current configuration" : "ลบการตั้งค่าปัจจุบัน",
"Host" : "โฮสต์",
diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js
index e07bdad70fc..7f6945468f6 100644
--- a/apps/user_ldap/l10n/tr.js
+++ b/apps/user_ldap/l10n/tr.js
@@ -32,7 +32,11 @@ OC.L10N.register(
"Mappings cleared successfully!" : "Eşleştirmeler başarıyla temizlendi!",
"Error while clearing the mappings." : "Eşleşmeler temizlenirken hata.",
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonim atamaya izin verilmiyor. Lütfen bir Kullanıcı DN ve Parola sağlayın.",
+ "Mode switch" : "Kip değişimi",
"Select attributes" : "Nitelikleri seç",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin.",
+ "An unspecified error occurred. Please check the settings and the log." : "Belirtilmeyen bir hata oluştu. Lütfen ayarları ve günlüğü denetleyin.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama filtresi, eşleşmeyen parantez sayısı sebebiyle oluşabilen sözdizimi sorunlarından dolayı geçersiz. Lütfen gözden geçirin.",
"_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"],
"_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Görüntülenecek kullanıcı adı özelliği algılanamadı. Lütfen gelişmiş ldap ayarlarına girerek kendiniz belirleyin.",
@@ -40,28 +44,49 @@ OC.L10N.register(
"Invalid Host" : "Geçersiz Makine",
"Server" : "Sunucu",
"Users" : "Kullanıcılar",
+ "Login Attributes" : "Oturum Açma Öznitelikleri",
"Groups" : "Gruplar",
"Test Configuration" : "Yapılandırmayı Sına",
"Help" : "Yardım",
"Groups meeting these criteria are available in %s:" : "Bu kriterlerle eşleşen gruplar %s içinde mevcut:",
+ "Only these object classes:" : "Sadece bu nesne sınıflarına:",
+ "Only from these groups:" : "Sadece bu gruplardan:",
+ "Search groups" : "Grupları ara",
+ "Available groups" : "Kullanılabilir gruplar",
+ "Selected groups" : "Seçili gruplar",
+ "Edit LDAP Query" : "LDAP Sorgusunu Düzenle",
+ "LDAP Filter:" : "LDAP Filtresi:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP gruplarını belirtir.",
+ "Verify settings and count groups" : "Ayarları doğrula ve grupları say",
+ "When logging in, %s will find the user based on the following attributes:" : "Oturum açılırken, %s, aşağıdaki özniteliklere bağlı kullanıcıyı bulacak:",
+ "LDAP / AD Username:" : "LDAP / AD Kullanıcı Adı:",
"Other Attributes:" : "Diğer Nitelikler:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Oturum açma girişimi olduğunda uygulanacak filtreyi tanımlar. %%uid, oturum işleminde kullanıcı adı ile değiştirilir. Örneğin: \"uid=%%uid\"",
+ "Test Loginname" : "Oturum açma adını sına",
+ "Verify settings" : "Ayarları doğrula",
"1. Server" : "1. Sunucu",
"%s. Server:" : "%s. Sunucu:",
+ "Add a new and blank configuration" : "Yeni ve boş bir yapılandırma ekle",
+ "Copy current configuration into new directory binding" : "Geçerli yapılandırmayı yeni dizin bağlamasına kopyala",
+ "Delete the current configuration" : "Geçerli yapılandırmayı sil",
"Host" : "Sunucu",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL gerekmediği takdirde protokol belirtmeyebilirsiniz. Gerekiyorsa ldaps:// ile başlayın",
"Port" : "Port",
+ "Detect Port" : "Bağl. Noktasını Tespit Et",
"User DN" : "Kullanıcı DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "İstemci kullanıcısının yapılacağı atamanın DN'si. Örn. uid=agent,dc=örnek,dc=com. Anonim erişim için DN ve Parolayı boş bırakın.",
"Password" : "Parola",
"For anonymous access, leave DN and Password empty." : "Anonim erişim için DN ve Parola alanlarını boş bırakın.",
"One Base DN per line" : "Her satırda tek bir Base DN",
"You can specify Base DN for users and groups in the Advanced tab" : "Gelişmiş sekmesinde, kullanıcılar ve gruplar için Base DN belirtebilirsiniz",
+ "Detect Base DN" : "Base DN'i Tespit Et",
+ "Test Base DN" : "Base DN'i Sına",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Otomatik LDAP isteklerinden kaçın. Büyük kurulumlar için daha iyi ancak LDAP bilgisi gerektirir.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP filtrelerini el ile girin (büyük dizinler için önerilir)",
"Limit %s access to users meeting these criteria:" : "%s erişimini, şu kriterlerle eşleşen kullanıcılara sınırla:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kullanıcılar için en çok ortak nesne sınıfları organizationalPerson, person, user ve inetOrgPerson sınıflarıdır. Hangi nesne sınıfını seçeceğinizden emin değilseniz lütfen dizin yöneticinize danışın.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP kullanıcılarını belirtir.",
+ "Verify settings and count users" : "Ayarları doğrula ve kullanıcıları say",
"Saving" : "Kaydediliyor",
"Back" : "Geri",
"Continue" : "Devam et",
diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json
index bf4d08049be..47203b48185 100644
--- a/apps/user_ldap/l10n/tr.json
+++ b/apps/user_ldap/l10n/tr.json
@@ -30,7 +30,11 @@
"Mappings cleared successfully!" : "Eşleştirmeler başarıyla temizlendi!",
"Error while clearing the mappings." : "Eşleşmeler temizlenirken hata.",
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonim atamaya izin verilmiyor. Lütfen bir Kullanıcı DN ve Parola sağlayın.",
+ "Mode switch" : "Kip değişimi",
"Select attributes" : "Nitelikleri seç",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin.",
+ "An unspecified error occurred. Please check the settings and the log." : "Belirtilmeyen bir hata oluştu. Lütfen ayarları ve günlüğü denetleyin.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama filtresi, eşleşmeyen parantez sayısı sebebiyle oluşabilen sözdizimi sorunlarından dolayı geçersiz. Lütfen gözden geçirin.",
"_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"],
"_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Görüntülenecek kullanıcı adı özelliği algılanamadı. Lütfen gelişmiş ldap ayarlarına girerek kendiniz belirleyin.",
@@ -38,28 +42,49 @@
"Invalid Host" : "Geçersiz Makine",
"Server" : "Sunucu",
"Users" : "Kullanıcılar",
+ "Login Attributes" : "Oturum Açma Öznitelikleri",
"Groups" : "Gruplar",
"Test Configuration" : "Yapılandırmayı Sına",
"Help" : "Yardım",
"Groups meeting these criteria are available in %s:" : "Bu kriterlerle eşleşen gruplar %s içinde mevcut:",
+ "Only these object classes:" : "Sadece bu nesne sınıflarına:",
+ "Only from these groups:" : "Sadece bu gruplardan:",
+ "Search groups" : "Grupları ara",
+ "Available groups" : "Kullanılabilir gruplar",
+ "Selected groups" : "Seçili gruplar",
+ "Edit LDAP Query" : "LDAP Sorgusunu Düzenle",
+ "LDAP Filter:" : "LDAP Filtresi:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP gruplarını belirtir.",
+ "Verify settings and count groups" : "Ayarları doğrula ve grupları say",
+ "When logging in, %s will find the user based on the following attributes:" : "Oturum açılırken, %s, aşağıdaki özniteliklere bağlı kullanıcıyı bulacak:",
+ "LDAP / AD Username:" : "LDAP / AD Kullanıcı Adı:",
"Other Attributes:" : "Diğer Nitelikler:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Oturum açma girişimi olduğunda uygulanacak filtreyi tanımlar. %%uid, oturum işleminde kullanıcı adı ile değiştirilir. Örneğin: \"uid=%%uid\"",
+ "Test Loginname" : "Oturum açma adını sına",
+ "Verify settings" : "Ayarları doğrula",
"1. Server" : "1. Sunucu",
"%s. Server:" : "%s. Sunucu:",
+ "Add a new and blank configuration" : "Yeni ve boş bir yapılandırma ekle",
+ "Copy current configuration into new directory binding" : "Geçerli yapılandırmayı yeni dizin bağlamasına kopyala",
+ "Delete the current configuration" : "Geçerli yapılandırmayı sil",
"Host" : "Sunucu",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL gerekmediği takdirde protokol belirtmeyebilirsiniz. Gerekiyorsa ldaps:// ile başlayın",
"Port" : "Port",
+ "Detect Port" : "Bağl. Noktasını Tespit Et",
"User DN" : "Kullanıcı DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "İstemci kullanıcısının yapılacağı atamanın DN'si. Örn. uid=agent,dc=örnek,dc=com. Anonim erişim için DN ve Parolayı boş bırakın.",
"Password" : "Parola",
"For anonymous access, leave DN and Password empty." : "Anonim erişim için DN ve Parola alanlarını boş bırakın.",
"One Base DN per line" : "Her satırda tek bir Base DN",
"You can specify Base DN for users and groups in the Advanced tab" : "Gelişmiş sekmesinde, kullanıcılar ve gruplar için Base DN belirtebilirsiniz",
+ "Detect Base DN" : "Base DN'i Tespit Et",
+ "Test Base DN" : "Base DN'i Sına",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Otomatik LDAP isteklerinden kaçın. Büyük kurulumlar için daha iyi ancak LDAP bilgisi gerektirir.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP filtrelerini el ile girin (büyük dizinler için önerilir)",
"Limit %s access to users meeting these criteria:" : "%s erişimini, şu kriterlerle eşleşen kullanıcılara sınırla:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kullanıcılar için en çok ortak nesne sınıfları organizationalPerson, person, user ve inetOrgPerson sınıflarıdır. Hangi nesne sınıfını seçeceğinizden emin değilseniz lütfen dizin yöneticinize danışın.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP kullanıcılarını belirtir.",
+ "Verify settings and count users" : "Ayarları doğrula ve kullanıcıları say",
"Saving" : "Kaydediliyor",
"Back" : "Geri",
"Continue" : "Devam et",
diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js
index fe499d9ad67..de7bcf5faf7 100644
--- a/apps/user_ldap/l10n/uk.js
+++ b/apps/user_ldap/l10n/uk.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"No configuration specified" : "Немає конфігурації",
"No data specified" : "Немає даних",
" Could not set configuration %s" : "Не вдалося встановити конфігурацію %s",
+ "Action does not exist" : "Дія не існує",
"Configuration incorrect" : "Невірна конфігурація",
"Configuration incomplete" : "Конфігурація неповна",
"Configuration OK" : "Конфігурація OK",
@@ -19,6 +20,8 @@ OC.L10N.register(
"{nthServer}. Server" : "{nthServer}. Сервер",
"Do you really want to delete the current Server Configuration?" : "Ви дійсно бажаєте видалити поточну конфігурацію сервера ?",
"Confirm Deletion" : "Підтвердіть Видалення",
+ "Mappings cleared successfully!" : "Відображення успішно очищенні!",
+ "Error while clearing the mappings." : "Помилка при очищенні відображень.",
"Select attributes" : "Виберіть атрибути",
"User found and settings verified." : "Користувача знайдено і налаштування перевірені.",
"_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено "],
@@ -32,10 +35,13 @@ OC.L10N.register(
"Test Configuration" : "Тестове налаштування",
"Help" : "Допомога",
"Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:",
+ "Only from these groups:" : "Лише з цих груп:",
"Search groups" : "Пошук груп",
"Available groups" : "Доступні групи",
"Selected groups" : "Обрані групи",
+ "LDAP Filter:" : "LDAP фільтр:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.",
+ "LDAP / AD Email Address:" : "LDAP / AD Email адреса:",
"Other Attributes:" : "Інші Атрибути:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Визначає фільтр, який слід застосовувати при спробі входу.\n%%uid замінює ім'я користувача при вході в систему. Приклад: \"uid=%%uid\"",
"1. Server" : "1. Сервер",
diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json
index 5a04bf4b356..6590a639dfa 100644
--- a/apps/user_ldap/l10n/uk.json
+++ b/apps/user_ldap/l10n/uk.json
@@ -8,6 +8,7 @@
"No configuration specified" : "Немає конфігурації",
"No data specified" : "Немає даних",
" Could not set configuration %s" : "Не вдалося встановити конфігурацію %s",
+ "Action does not exist" : "Дія не існує",
"Configuration incorrect" : "Невірна конфігурація",
"Configuration incomplete" : "Конфігурація неповна",
"Configuration OK" : "Конфігурація OK",
@@ -17,6 +18,8 @@
"{nthServer}. Server" : "{nthServer}. Сервер",
"Do you really want to delete the current Server Configuration?" : "Ви дійсно бажаєте видалити поточну конфігурацію сервера ?",
"Confirm Deletion" : "Підтвердіть Видалення",
+ "Mappings cleared successfully!" : "Відображення успішно очищенні!",
+ "Error while clearing the mappings." : "Помилка при очищенні відображень.",
"Select attributes" : "Виберіть атрибути",
"User found and settings verified." : "Користувача знайдено і налаштування перевірені.",
"_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено "],
@@ -30,10 +33,13 @@
"Test Configuration" : "Тестове налаштування",
"Help" : "Допомога",
"Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:",
+ "Only from these groups:" : "Лише з цих груп:",
"Search groups" : "Пошук груп",
"Available groups" : "Доступні групи",
"Selected groups" : "Обрані групи",
+ "LDAP Filter:" : "LDAP фільтр:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.",
+ "LDAP / AD Email Address:" : "LDAP / AD Email адреса:",
"Other Attributes:" : "Інші Атрибути:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Визначає фільтр, який слід застосовувати при спробі входу.\n%%uid замінює ім'я користувача при вході в систему. Приклад: \"uid=%%uid\"",
"1. Server" : "1. Сервер",
diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js
index e341c393865..15d0154921b 100644
--- a/apps/user_ldap/l10n/zh_CN.js
+++ b/apps/user_ldap/l10n/zh_CN.js
@@ -9,6 +9,7 @@ OC.L10N.register(
"Do you really want to delete the current Server Configuration?" : "您真的想要删除当前服务器配置吗?",
"Confirm Deletion" : "确认删除",
"Invalid Host" : "无效的主机",
+ "Server" : "服务器",
"Users" : "用户",
"Groups" : "群组",
"Test Configuration" : "测试配置",
diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json
index 24cd71d6941..18c87aa6c6f 100644
--- a/apps/user_ldap/l10n/zh_CN.json
+++ b/apps/user_ldap/l10n/zh_CN.json
@@ -7,6 +7,7 @@
"Do you really want to delete the current Server Configuration?" : "您真的想要删除当前服务器配置吗?",
"Confirm Deletion" : "确认删除",
"Invalid Host" : "无效的主机",
+ "Server" : "服务器",
"Users" : "用户",
"Groups" : "群组",
"Test Configuration" : "测试配置",
diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index c7747abee51..89d966772ee 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -347,6 +347,33 @@ class Access extends LDAPUtility implements user\IUserTools {
}
/**
+ * accepts an array of group DNs and tests whether they match the user
+ * filter by doing read operations against the group entries. Returns an
+ * array of DNs that match the filter.
+ *
+ * @param string[] $groupDNs
+ * @return string[]
+ */
+ public function groupsMatchFilter($groupDNs) {
+ $validGroupDNs = [];
+ foreach($groupDNs as $dn) {
+ $cacheKey = 'groupsMatchFilter-'.$dn;
+ if($this->connection->isCached($cacheKey)) {
+ if($this->connection->getFromCache($cacheKey)) {
+ $validGroupDNs[] = $dn;
+ }
+ continue;
+ }
+
+ $result = $this->readAttribute($dn, 'cn', $this->connection->ldapGroupFilter);
+ if(is_array($result)) {
+ $validGroupDNs[] = $dn;
+ }
+ }
+ return $validGroupDNs;
+ }
+
+ /**
* returns the internal ownCloud name for the given LDAP DN of the user, false on DN outside of search DN or failure
* @param string $dn the dn of the user object
* @param string $ldapName optional, the display name of the object
diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php
index 0328259d78f..2bb2e1f8cb6 100644
--- a/apps/user_ldap/lib/connection.php
+++ b/apps/user_ldap/lib/connection.php
@@ -9,7 +9,6 @@
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <rmccorkell@karoshi.org.uk>
* @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/user_ldap/lib/proxy.php b/apps/user_ldap/lib/proxy.php
index 347ea9ce6a9..ef01213990c 100644
--- a/apps/user_ldap/lib/proxy.php
+++ b/apps/user_ldap/lib/proxy.php
@@ -8,7 +8,6 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <rmccorkell@karoshi.org.uk>
* @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php
index c8c89374e98..2f5ee3adfb7 100644
--- a/apps/user_ldap/lib/user/manager.php
+++ b/apps/user_ldap/lib/user/manager.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php
index d17361cdfd5..fb54276b463 100644
--- a/apps/user_ldap/settings.php
+++ b/apps/user_ldap/settings.php
@@ -1,7 +1,6 @@
<?php
/**
* @author Arthur Schiwon <blizzz@owncloud.com>
- * @author ben-denham <bend@catalyst.net.nz>
* @author Dominik Schmidt <dev@dominik-schmidt.de>
* @author Frank Karlitschek <frank@owncloud.org>
* @author Lukas Reschke <lukas@owncloud.com>
diff --git a/apps/user_ldap/templates/part.wizard-server.php b/apps/user_ldap/templates/part.wizard-server.php
index 848e699dda6..a16ac1f50dc 100644
--- a/apps/user_ldap/templates/part.wizard-server.php
+++ b/apps/user_ldap/templates/part.wizard-server.php
@@ -25,7 +25,7 @@
</select>
<button type="button" id="ldap_action_add_configuration"
name="ldap_action_add_configuration" class="icon-add"
- title="<?php p($l->t('Adds a new and blank configuration'));?>">&nbsp;</button>
+ title="<?php p($l->t('Add a new and blank configuration'));?>">&nbsp;</button>
<button type="button" id="ldap_action_copy_configuration"
name="ldap_action_copy_configuration"
class="ldapIconCopy icon-default-style"
diff --git a/apps/user_ldap/tests/.htaccess b/apps/user_ldap/tests/.htaccess
new file mode 100755
index 00000000000..5e068d28661
--- /dev/null
+++ b/apps/user_ldap/tests/.htaccess
@@ -0,0 +1,14 @@
+# Generated by ownCloud on 2015-06-18 14:16:40
+# line below if for Apache 2.4
+<ifModule mod_authz_core.c>
+Require all denied
+</ifModule>
+
+# line below if for Apache 2.2
+<ifModule !mod_authz_core.c>
+deny from all
+Satisfy All
+</ifModule>
+
+# section for Apache 2.2 and 2.4
+IndexIgnore *
diff --git a/apps/user_ldap/tests/group_ldap.php b/apps/user_ldap/tests/group_ldap.php
index aeb306174f0..f716618ce48 100644
--- a/apps/user_ldap/tests/group_ldap.php
+++ b/apps/user_ldap/tests/group_ldap.php
@@ -404,6 +404,10 @@ class Test_Group_Ldap extends \Test\TestCase {
->method('dn2groupname')
->will($this->returnArgument(0));
+ $access->expects($this->once())
+ ->method('groupsMatchFilter')
+ ->will($this->returnArgument(0));
+
$groupBackend = new GroupLDAP($access);
$groups = $groupBackend->getUserGroups('userX');
diff --git a/apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php b/apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php
new file mode 100644
index 00000000000..6560153bb63
--- /dev/null
+++ b/apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php
@@ -0,0 +1,158 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: blizzz
+ * Date: 26.06.15
+ * Time: 18:13
+ */
+
+use OCA\user_ldap\lib\LDAP;
+
+require_once __DIR__ . '/../../../../../lib/base.php';
+
+class IntegrationTestAccessGroupsMatchFilter {
+ /** @var LDAP */
+ protected $ldap;
+
+ /** @var \OCA\user_ldap\lib\Connection */
+ protected $connection;
+
+ /** @var \OCA\user_ldap\lib\Access */
+ protected $access;
+
+ /** @var string */
+ protected $base;
+
+ /** @var string[] */
+ protected $server;
+
+ public function __construct($host, $port, $bind, $pwd, $base) {
+ $this->base = $base;
+ $this->server = [
+ 'host' => $host,
+ 'port' => $port,
+ 'dn' => $bind,
+ 'pwd' => $pwd
+ ];
+ }
+
+ /**
+ * prepares the LDAP environement and sets up a test configuration for
+ * the LDAP backend.
+ */
+ public function init() {
+ require('setup-scripts/createExplicitUsers.php');
+ require('setup-scripts/createExplicitGroups.php');
+
+ $this->initLDAPWrapper();
+ $this->initConnection();
+ $this->initAccess();
+ }
+
+ /**
+ * runs the test cases while outputting progress and result information
+ *
+ * If a test failed, the script is exited with return code 1.
+ */
+ public function run() {
+ $cases = ['case1', 'case2'];
+
+ foreach ($cases as $case) {
+ print("running $case " . PHP_EOL);
+ if (!$this->$case()) {
+ print(PHP_EOL . '>>> !!! Test ' . $case . ' FAILED !!! <<<' . PHP_EOL . PHP_EOL);
+ exit(1);
+ }
+ }
+
+ print('Tests succeeded' . PHP_EOL);
+ }
+
+ /**
+ * tests whether the group filter works with one specific group, while the
+ * input is the same.
+ *
+ * @return bool
+ */
+ private function case1() {
+ $this->connection->setConfiguration(['ldapGroupFilter' => 'cn=RedGroup']);
+
+ $dns = ['cn=RedGroup,ou=Groups,' . $this->base];
+ $result = $this->access->groupsMatchFilter($dns);
+ return ($dns === $result);
+ }
+
+ /**
+ * Tests whether a filter for limited groups is effective when more existing
+ * groups were passed for validation.
+ *
+ * @return bool
+ */
+ private function case2() {
+ $this->connection->setConfiguration(['ldapGroupFilter' => '(|(cn=RedGroup)(cn=PurpleGroup))']);
+
+ $dns = [
+ 'cn=RedGroup,ou=Groups,' . $this->base,
+ 'cn=BlueGroup,ou=Groups,' . $this->base,
+ 'cn=PurpleGroup,ou=Groups,' . $this->base
+ ];
+ $result = $this->access->groupsMatchFilter($dns);
+
+ $status =
+ count($result) === 2
+ && in_array('cn=RedGroup,ou=Groups,' . $this->base, $result)
+ && in_array('cn=PurpleGroup,ou=Groups,' . $this->base, $result);
+
+ return $status;
+ }
+
+ /**
+ * initializes the Access test instance
+ */
+ private function initAccess() {
+ $this->access = new \OCA\user_ldap\lib\Access($this->connection, $this->ldap, new FakeManager());
+ }
+
+ /**
+ * initializes the test LDAP wrapper
+ */
+ private function initLDAPWrapper() {
+ $this->ldap = new LDAP();
+ }
+
+ /**
+ * sets up the LDAP configuration to be used for the test
+ */
+ private function initConnection() {
+ $this->connection = new \OCA\user_ldap\lib\Connection($this->ldap, '', null);
+ $this->connection->setConfiguration([
+ 'ldapHost' => $this->server['host'],
+ 'ldapPort' => $this->server['port'],
+ 'ldapBase' => $this->base,
+ 'ldapAgentName' => $this->server['dn'],
+ 'ldapAgentPassword' => $this->server['pwd'],
+ 'ldapUserFilter' => 'objectclass=inetOrgPerson',
+ 'ldapUserDisplayName' => 'displayName',
+ 'ldapGroupDisplayName' => 'cn',
+ 'ldapLoginFilter' => 'uid=%uid',
+ 'ldapCacheTTL' => 0,
+ 'ldapConfigurationActive' => 1,
+ ]);
+ }
+}
+
+/**
+ * Class FakeManager
+ *
+ * this is a mock of \OCA\user_ldap\lib\user\Manager which is a dependency of
+ * Access, that pulls plenty more things in. Because it is not needed in the
+ * scope of these tests, we replace it with a mock.
+ */
+class FakeManager extends \OCA\user_ldap\lib\user\Manager {
+ public function __construct() {}
+}
+
+require_once('setup-scripts/config.php');
+$test = new IntegrationTestAccessGroupsMatchFilter($host, $port, $adn, $apwd, $bdn);
+$test->init();
+$test->run();
diff --git a/apps/user_ldap/tests/integration/readme.md b/apps/user_ldap/tests/integration/readme.md
new file mode 100644
index 00000000000..e20efef8fdc
--- /dev/null
+++ b/apps/user_ldap/tests/integration/readme.md
@@ -0,0 +1,60 @@
+# Requirements #
+
+Have (as in do copy if not already done) the following files from https://github.com/owncloud/administration/tree/master/ldap-testing copied into the directory "setup-scripts":
+
+ * start.sh
+ * stop.sh
+ * config.php
+
+Configure config.php according to your needs, also have a look into the LDAP and network settings in start.sh and stop.sh.
+
+# Usage #
+
+The basic command to run a test is:
+
+```# ./run-test.sh [phpscript]```
+
+Yes, run it as root from within this directory.
+
+Example:
+
+```
+$ sudo ./run-test.sh lib/IntegrationTestAccessGroupsMatchFilter.php
+71cbe88a4993e67066714d71c1cecc5ef26a54911a208103cb6294f90459e574
+c74dc0155db4efa7a0515d419528a8727bbc7596601cf25b0df05e348bd74895
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+c74dc0155db4 osixia/phpldapadmin:0.5.1 "/sbin/my_init" 1 seconds ago Up Less than a second 80/tcp, 0.0.0.0:8443->443/tcp docker-phpldapadmin
+71cbe88a4993 nickstenning/slapd:latest "/sbin/my_init" 1 seconds ago Up Less than a second 127.0.0.1:7770->389/tcp docker-slapd
+
+LDAP server now available under 127.0.0.1:7770 (internal IP is 172.17.0.78)
+phpldapadmin now available under https://127.0.0.1:8443
+
+created user : Alice Ealic
+created group : RedGroup
+created group : BlueGroup
+created group : GreenGroup
+created group : PurpleGroup
+running case1
+running case2
+Tests succeeded
+Stopping and resetting containers
+docker-slapd
+docker-phpldapadmin
+docker-slapd
+docker-phpldapadmin
+```
+
+# How it works #
+
+1. start.sh is executed which brings up a fresh and clean OpenLDAP in Docker.
+2. The provided test script is executed. It also outputs results.
+3. stop.sh is executed to shut down OpenLDAP
+
+# Beware #
+
+This is quick solution for basically one test case. With expension this mechanism should be improved as well.
+
+It does not run automatically, unless you do it. No integration with any testing framework.
+
+exceptionOnLostConnection.php is not part of this mechanism. Read its source and run it isolated. While you're at it, port it :þ
+
diff --git a/apps/user_ldap/tests/integration/run-test.sh b/apps/user_ldap/tests/integration/run-test.sh
new file mode 100755
index 00000000000..e07e9b43408
--- /dev/null
+++ b/apps/user_ldap/tests/integration/run-test.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+if [ $1 ] ; then
+ TESTSCRIPT=$1
+else
+ echo "No test file given" exit
+fi
+
+if [ ! -e "$TESTSCRIPT" ] ; then
+ echo "Test file does not exist"
+ exit
+fi
+
+
+# sleep is necessary, otherwise the LDAP server cannot be connected to, yet.
+setup-scripts/start.sh && sleep 2 && php -f "$TESTSCRIPT"
+setup-scripts/stop.sh
diff --git a/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php b/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php
new file mode 100644
index 00000000000..68854de5571
--- /dev/null
+++ b/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php
@@ -0,0 +1,52 @@
+<?php
+
+if(php_sapi_name() !== 'cli') {
+ print('Only via CLI, please.');
+ exit(1);
+}
+
+include __DIR__ . '/config.php';
+
+$cr = ldap_connect($host, $port);
+ldap_set_option($cr, LDAP_OPT_PROTOCOL_VERSION, 3);
+$ok = ldap_bind($cr, $adn, $apwd);
+
+if (!$ok) {
+ die(ldap_error($cr));
+}
+
+$ouName = 'Groups';
+$ouDN = 'ou=' . $ouName . ',' . $bdn;
+
+//creates an OU
+if (true) {
+ $entry = [];
+ $entry['objectclass'][] = 'top';
+ $entry['objectclass'][] = 'organizationalunit';
+ $entry['ou'] = $ouName;
+ $b = ldap_add($cr, $ouDN, $entry);
+ if (!$b) {
+ die(ldap_error($cr));
+ }
+}
+
+$groups = ['RedGroup', 'BlueGroup', 'GreenGroup', 'PurpleGroup'];
+// groupOfNames requires groups to have at least one member
+// the member used is created by createExplicitUsers.php script
+$omniMember = 'uid=alice,ou=Users,' . $bdn;
+
+foreach ($groups as $cn) {
+ $newDN = 'cn=' . $cn . ',' . $ouDN;
+
+ $entry = [];
+ $entry['cn'] = $cn;
+ $entry['objectclass'][] = 'groupOfNames';
+ $entry['member'][] = $omniMember;
+
+ $ok = ldap_add($cr, $newDN, $entry);
+ if ($ok) {
+ echo('created group ' . ': ' . $entry['cn'] . PHP_EOL);
+ } else {
+ die(ldap_error($cr));
+ }
+}
diff --git a/apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php b/apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php
new file mode 100644
index 00000000000..ac21d48fd16
--- /dev/null
+++ b/apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php
@@ -0,0 +1,54 @@
+<?php
+
+if(php_sapi_name() !== 'cli') {
+ print('Only via CLI, please.');
+ exit(1);
+}
+
+include __DIR__ . '/config.php';
+
+$cr = ldap_connect($host, $port);
+ldap_set_option($cr, LDAP_OPT_PROTOCOL_VERSION, 3);
+$ok = ldap_bind($cr, $adn, $apwd);
+
+if (!$ok) {
+ die(ldap_error($cr));
+}
+
+$ouName = 'Users';
+$ouDN = 'ou=' . $ouName . ',' . $bdn;
+
+//creates on OU
+if (true) {
+ $entry = [];
+ $entry['objectclass'][] = 'top';
+ $entry['objectclass'][] = 'organizationalunit';
+ $entry['ou'] = $ouName;
+ $b = ldap_add($cr, $ouDN, $entry);
+ if (!$b) {
+ die(ldap_error($cr));
+ }
+}
+
+$users = ['alice'];
+
+foreach ($users as $uid) {
+ $newDN = 'uid=' . $uid . ',' . $ouDN;
+ $fn = ucfirst($uid);
+ $sn = ucfirst(str_shuffle($uid)); // not so explicit but it's OK.
+
+ $entry = [];
+ $entry['cn'] = $fn . ' ' . $sn;
+ $entry['objectclass'][] = 'inetOrgPerson';
+ $entry['objectclass'][] = 'person';
+ $entry['sn'] = $sn;
+ $entry['userPassword'] = $uid;
+ $entry['displayName'] = $sn . ', ' . $fn;
+
+ $ok = ldap_add($cr, $newDN, $entry);
+ if ($ok) {
+ echo('created user ' . ': ' . $entry['cn'] . PHP_EOL);
+ } else {
+ die(ldap_error($cr));
+ }
+}
diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php
index 2f15a5acc6d..2b99e1c2dc8 100644
--- a/apps/user_ldap/tests/user_ldap.php
+++ b/apps/user_ldap/tests/user_ldap.php
@@ -2,6 +2,7 @@
/**
* @author Arthur Schiwon <blizzz@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <rmccorkell@karoshi.org.uk>
diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php
index 014d60c7316..caff30a0e60 100644
--- a/apps/user_ldap/user_ldap.php
+++ b/apps/user_ldap/user_ldap.php
@@ -120,9 +120,11 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
/**
* Get a list of all users
- * @return string[] with all uids
*
- * Get a list of all users.
+ * @param string $search
+ * @param null|int $limit
+ * @param null|int $offset
+ * @return string[] an array of all uids
*/
public function getUsers($search = '', $limit = 10, $offset = 0) {
$search = $this->access->escapeFilterPart($search, true);
@@ -328,9 +330,11 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
/**
* Get a list of all display names
- * @return array with all displayNames (value) and the correspondig uids (key)
*
- * Get a list of all display names and user ids.
+ * @param string $search
+ * @param string|null $limit
+ * @param string|null $offset
+ * @return array an array of all displayNames (value) and the corresponding uids (key)
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
$cacheKey = 'getDisplayNames-'.$search.'-'.$limit.'-'.$offset;
diff --git a/apps/user_ldap/user_proxy.php b/apps/user_ldap/user_proxy.php
index 53d453e54fd..683529eb902 100644
--- a/apps/user_ldap/user_proxy.php
+++ b/apps/user_ldap/user_proxy.php
@@ -132,9 +132,11 @@ class User_Proxy extends lib\Proxy implements \OCP\IUserBackend, \OCP\UserInterf
/**
* Get a list of all users
- * @return string[] with all uids
*
- * Get a list of all users.
+ * @param string $search
+ * @param null|int $limit
+ * @param null|int $offset
+ * @return string[] an array of all uids
*/
public function getUsers($search = '', $limit = 10, $offset = 0) {
//we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
@@ -208,10 +210,11 @@ class User_Proxy extends lib\Proxy implements \OCP\IUserBackend, \OCP\UserInterf
}
/**
- * Get a list of all display names
- * @return array with all displayNames (value) and the corresponding uids (key)
- *
* Get a list of all display names and user ids.
+ * @param string $search
+ * @param string|null $limit
+ * @param string|null $offset
+ * @return array an array of all displayNames (value) and the corresponding uids (key)
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
//we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
diff --git a/apps/user_webdavauth/appinfo/app.php b/apps/user_webdavauth/appinfo/app.php
index d27e804d8ba..3f76f803efd 100644
--- a/apps/user_webdavauth/appinfo/app.php
+++ b/apps/user_webdavauth/appinfo/app.php
@@ -4,6 +4,7 @@
* @author Frank Karlitschek <frank@owncloud.org>
* @author j-ed <juergen@eisfair.org>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/apps/user_webdavauth/appinfo/info.xml b/apps/user_webdavauth/appinfo/info.xml
index abbf79131b5..b0827fb51f8 100644
--- a/apps/user_webdavauth/appinfo/info.xml
+++ b/apps/user_webdavauth/appinfo/info.xml
@@ -1,10 +1,10 @@
<?xml version="1.0"?>
<info>
<id>user_webdavauth</id>
- <name>WebDAV user backend</name>
- <description>Authenticate users by a WebDAV call. You can use any WebDAV server, ownCloud server or other webserver to authenticate. It should return http 200 for right credentials and http 401 for wrong ones.
+ <name>User backend using remote HTTP servers</name>
+ <description>Authenticate users by a WebDAV call. You can use any WebDAV server, ownCloud server or other web server to authenticate. It should return http 200 for right credentials and http 401 for wrong ones.
- Attention: This app is not compatible with the LDAP user and group backend. This app is not the webdav interface of ownCloud, if you don't understand what it does then do not enable it.</description>
+ Attention: This app is not compatible with the LDAP user and group backend. This app is not the WebDAV interface of ownCloud, if you don't understand what it does then do not enable it.</description>
<licence>AGPL</licence>
<author>Frank Karlitschek</author>
<requiremin>4.93</requiremin>
@@ -12,5 +12,4 @@
<types>
<authentication/>
</types>
- <ocsid>166062</ocsid>
</info>
diff --git a/apps/user_webdavauth/appinfo/version b/apps/user_webdavauth/appinfo/version
index 238afc2b279..a3fdef3af89 100644
--- a/apps/user_webdavauth/appinfo/version
+++ b/apps/user_webdavauth/appinfo/version
@@ -1 +1 @@
-1.1.0.1
+1.1.0.2
diff --git a/apps/user_webdavauth/l10n/is.js b/apps/user_webdavauth/l10n/is.js
index c6580e434b5..cc9515a9455 100644
--- a/apps/user_webdavauth/l10n/is.js
+++ b/apps/user_webdavauth/l10n/is.js
@@ -4,4 +4,4 @@ OC.L10N.register(
"WebDAV Authentication" : "WebDAV Auðkenni",
"Save" : "Vista"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);");
diff --git a/apps/user_webdavauth/l10n/is.json b/apps/user_webdavauth/l10n/is.json
index a9ab8d7246c..e59f0457738 100644
--- a/apps/user_webdavauth/l10n/is.json
+++ b/apps/user_webdavauth/l10n/is.json
@@ -1,5 +1,5 @@
{ "translations": {
"WebDAV Authentication" : "WebDAV Auðkenni",
"Save" : "Vista"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);"
} \ No newline at end of file
diff --git a/apps/user_webdavauth/l10n/ru.js b/apps/user_webdavauth/l10n/ru.js
index b52d1ed81be..2af520e8396 100644
--- a/apps/user_webdavauth/l10n/ru.js
+++ b/apps/user_webdavauth/l10n/ru.js
@@ -6,4 +6,4 @@ OC.L10N.register(
"Save" : "Сохранить",
"The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." : "Учётные данные пользователя будут отправлены на этот адрес. Плагин проверит ответ и будет рассматривать HTTP коды 401 и 403 как неверные учётные данные, при любом другом ответе - учётные данные пользователя верны."
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"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/user_webdavauth/l10n/ru.json b/apps/user_webdavauth/l10n/ru.json
index e265fc80ed4..88b53330acc 100644
--- a/apps/user_webdavauth/l10n/ru.json
+++ b/apps/user_webdavauth/l10n/ru.json
@@ -3,5 +3,5 @@
"Address:" : "Адрес:",
"Save" : "Сохранить",
"The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." : "Учётные данные пользователя будут отправлены на этот адрес. Плагин проверит ответ и будет рассматривать HTTP коды 401 и 403 как неверные учётные данные, при любом другом ответе - учётные данные пользователя верны."
-},"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);"
+},"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/user_webdavauth/user_webdavauth.php b/apps/user_webdavauth/user_webdavauth.php
index be61cce5088..acd7ec8507c 100644
--- a/apps/user_webdavauth/user_webdavauth.php
+++ b/apps/user_webdavauth/user_webdavauth.php
@@ -3,7 +3,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Frank Karlitschek <frank@owncloud.org>
- * @author Georg Ehrke <georg@ownCloud.com>
+ * @author Georg Ehrke <georg@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author opensaucesystems <ashley@opensaucesystems.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -34,27 +34,27 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend implements \OCP\IUserBackend {
public function deleteUser($uid) {
// Can't delete user
- OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to delete users from web frontend using WebDAV user backend', 3);
+ OCP\Util::writeLog('OC_USER_WEBDAVAUTH', 'Not possible to delete users from web frontend using WebDAV user backend', 3);
return false;
}
public function setPassword ( $uid, $password ) {
// We can't change user password
- OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to change password for users from web frontend using WebDAV user backend', 3);
+ OCP\Util::writeLog('OC_USER_WEBDAVAUTH', 'Not possible to change password for users from web frontend using WebDAV user backend', 3);
return false;
}
public function checkPassword( $uid, $password ) {
$arr = explode('://', $this->webdavauth_url, 2);
if( ! isset($arr) OR count($arr) !== 2) {
- OC_Log::write('OC_USER_WEBDAVAUTH', 'Invalid Url: "'.$this->webdavauth_url.'" ', 3);
+ OCP\Util::writeLog('OC_USER_WEBDAVAUTH', 'Invalid Url: "'.$this->webdavauth_url.'" ', 3);
return false;
}
list($webdavauth_protocol, $webdavauth_url_path) = $arr;
$url= $webdavauth_protocol.'://'.urlencode($uid).':'.urlencode($password).'@'.$webdavauth_url_path;
$headers = get_headers($url);
if($headers==false) {
- OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$webdavauth_protocol.'://'.$webdavauth_url_path.'" ', 3);
+ OCP\Util::writeLog('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$webdavauth_protocol.'://'.$webdavauth_url_path.'" ', 3);
return false;
}