summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--apps/encryption/l10n/fr.js1
-rw-r--r--apps/encryption/l10n/fr.json1
-rw-r--r--apps/encryption/l10n/nb_NO.js13
-rw-r--r--apps/encryption/l10n/nb_NO.json13
-rw-r--r--apps/encryption/l10n/uk.js3
-rw-r--r--apps/encryption/l10n/uk.json3
-rw-r--r--apps/files/controller/apicontroller.php2
-rw-r--r--apps/files/l10n/fr.js4
-rw-r--r--apps/files/l10n/fr.json4
-rw-r--r--apps/files/l10n/nb_NO.js2
-rw-r--r--apps/files/l10n/nb_NO.json2
-rw-r--r--apps/files/l10n/pt_BR.js1
-rw-r--r--apps/files/l10n/pt_BR.json1
-rw-r--r--apps/files_sharing/l10n/nb_NO.js2
-rw-r--r--apps/files_sharing/l10n/nb_NO.json2
-rw-r--r--apps/user_ldap/l10n/de.js4
-rw-r--r--apps/user_ldap/l10n/de.json4
-rw-r--r--apps/user_ldap/l10n/de_DE.js4
-rw-r--r--apps/user_ldap/l10n/de_DE.json4
-rw-r--r--apps/user_ldap/l10n/el.js1
-rw-r--r--apps/user_ldap/l10n/el.json1
-rw-r--r--apps/user_ldap/l10n/fr.js4
-rw-r--r--apps/user_ldap/l10n/fr.json4
-rw-r--r--apps/user_ldap/l10n/nb_NO.js54
-rw-r--r--apps/user_ldap/l10n/nb_NO.json54
-rw-r--r--apps/user_ldap/l10n/nl.js1
-rw-r--r--apps/user_ldap/l10n/nl.json1
-rw-r--r--apps/user_ldap/l10n/uk.js4
-rw-r--r--apps/user_ldap/l10n/uk.json4
-rw-r--r--core/css/styles.css5
-rw-r--r--core/js/placeholder.js2
-rw-r--r--core/js/tests/specs/shareSpec.js80
-rw-r--r--core/l10n/fr.js2
-rw-r--r--core/l10n/fr.json2
-rw-r--r--core/l10n/nb_NO.js14
-rw-r--r--core/l10n/nb_NO.json14
-rw-r--r--core/l10n/pt_BR.js1
-rw-r--r--core/l10n/pt_BR.json1
-rw-r--r--core/l10n/zh_CN.js2
-rw-r--r--core/l10n/zh_CN.json2
-rw-r--r--lib/l10n/el.js2
-rw-r--r--lib/l10n/el.json2
-rw-r--r--lib/l10n/fr.js3
-rw-r--r--lib/l10n/fr.json3
-rw-r--r--lib/l10n/id.js6
-rw-r--r--lib/l10n/id.json6
-rw-r--r--lib/l10n/nb_NO.js7
-rw-r--r--lib/l10n/nb_NO.json7
-rw-r--r--lib/l10n/nl.js2
-rw-r--r--lib/l10n/nl.json2
-rw-r--r--lib/l10n/pt_BR.js2
-rw-r--r--lib/l10n/pt_BR.json2
-rw-r--r--lib/l10n/uk.js2
-rw-r--r--lib/l10n/uk.json2
-rw-r--r--lib/private/appframework/dependencyinjection/dicontainer.php5
-rw-r--r--lib/private/appframework/middleware/security/corsmiddleware.php49
-rw-r--r--lib/private/apphelper.php4
-rw-r--r--lib/private/encryption/keys/storage.php3
-rw-r--r--lib/private/files/stream/encryption.php39
-rw-r--r--lib/private/httphelper.php8
-rw-r--r--lib/private/util.php17
-rw-r--r--lib/public/ihelper.php2
-rw-r--r--lib/public/util.php18
-rw-r--r--settings/l10n/de.js1
-rw-r--r--settings/l10n/de.json1
-rw-r--r--settings/l10n/de_DE.js1
-rw-r--r--settings/l10n/de_DE.json1
-rw-r--r--settings/l10n/fr.js1
-rw-r--r--settings/l10n/fr.json1
-rw-r--r--settings/l10n/gl.js2
-rw-r--r--settings/l10n/gl.json2
-rw-r--r--settings/l10n/nb_NO.js31
-rw-r--r--settings/l10n/nb_NO.json31
-rw-r--r--settings/l10n/nl.js1
-rw-r--r--settings/l10n/nl.json1
-rw-r--r--settings/l10n/zh_CN.js2
-rw-r--r--settings/l10n/zh_CN.json2
-rw-r--r--settings/templates/apps.php2
-rw-r--r--tests/lib/appframework/middleware/security/CORSMiddlewareTest.php75
-rw-r--r--tests/lib/encryption/keys/storage.php4
-rw-r--r--tests/lib/encryption/utiltest.php20
-rw-r--r--tests/lib/files/stream/dummyencryptionwrapper.php37
-rw-r--r--tests/lib/files/stream/encryption.php50
-rw-r--r--tests/lib/httphelper.php75
-rw-r--r--tests/lib/public/util.php47
-rw-r--r--themes/README22
-rw-r--r--themes/example/core/css/styles.css86
-rw-r--r--themes/example/core/img/favicon-touch.pngbin0 -> 2030 bytes
-rw-r--r--themes/example/core/img/favicon-touch.svg2
-rw-r--r--themes/example/core/img/favicon.pngbin0 -> 592 bytes
-rw-r--r--themes/example/core/img/favicon.svg2
-rw-r--r--themes/example/core/img/logo-icon.pngbin0 -> 701 bytes
-rw-r--r--themes/example/core/img/logo-icon.svg2
-rw-r--r--themes/example/core/img/logo-mail.gifbin0 -> 1950 bytes
-rw-r--r--themes/example/core/img/logo.pngbin0 -> 3971 bytes
-rw-r--r--themes/example/core/img/logo.svg2
-rw-r--r--themes/example/defaults.php95
98 files changed, 1055 insertions, 63 deletions
diff --git a/.gitignore b/.gitignore
index 3395774d232..4a625fb8580 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,8 +29,9 @@
-# ignore themes except the README
+# ignore themes except the example and the README
/themes/*
+!/themes/example
!/themes/README
# just sane ignores
diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js
index a505efaaf25..6ac1d0a7a10 100644
--- a/apps/encryption/l10n/fr.js
+++ b/apps/encryption/l10n/fr.js
@@ -24,6 +24,7 @@ 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." : "Votre clef privée pour le chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de votre clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers chiffrés.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ",
"Enable recovery key" : "Activer la clé de récupération",
"Disable recovery key" : "Désactiver la clé de récupération",
"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." : "La clé de récupération est une clé supplémentaire utilisée pour chiffrer les fichiers. Elle permet de récupérer les fichiers des utilisateurs s'ils oublient leur mot de passe.",
diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json
index 257a4cb8e17..5e576d1b127 100644
--- a/apps/encryption/l10n/fr.json
+++ b/apps/encryption/l10n/fr.json
@@ -22,6 +22,7 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée pour le chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de votre clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers chiffrés.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ",
"Enable recovery key" : "Activer la clé de récupération",
"Disable recovery key" : "Désactiver la clé de récupération",
"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." : "La clé de récupération est une clé supplémentaire utilisée pour chiffrer les fichiers. Elle permet de récupérer les fichiers des utilisateurs s'ils oublient leur mot de passe.",
diff --git a/apps/encryption/l10n/nb_NO.js b/apps/encryption/l10n/nb_NO.js
index 8f5a049679f..603cf965ef7 100644
--- a/apps/encryption/l10n/nb_NO.js
+++ b/apps/encryption/l10n/nb_NO.js
@@ -8,11 +8,15 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Klarte ikke å aktivere gjenopprettingsnøkkel. Sjekk passordet for gjenopprettingsnøkkelen.",
"Recovery key successfully disabled" : "Gjenopprettingsnøkkel ble deaktivert",
"Could not disable recovery key. Please check your recovery key password!" : "Klarte ikke å deaktivere gjenopprettingsnøkkel. Sjekk passordet for gjenopprettingsnøkkelen.",
+ "Missing parameters" : "Manglende parametre",
"Please provide the old recovery password" : "Oppgi det gamle gjenopprettingspassordet",
"Please provide a new recovery password" : "Oppgi et nytt gjenopprettingspassord",
"Please repeat the new recovery password" : "Gjenta det nye gjenopprettingspassordet",
"Password successfully changed." : "Passordet ble endret.",
"Could not change the password. Maybe the old password was not correct." : "Klarte ikke å endre passordet. Kanskje gammelt passord ikke var korrekt.",
+ "Recovery Key disabled" : "Gjenopprettingsnøkkel deaktivert",
+ "Recovery Key enabled" : "Gjenopprettingsnøkkel aktivert",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Klarte ikke å aktivere gjenopprettingsnøkkelen. Prøv igjen eller kontakt administratoren.",
"Could not update the private key password." : "Klarte ikke å oppdatere privatnøkkelpassordet.",
"The old password was not correct, please try again." : "Det gamle passordet var feil. Prøv igjen.",
"The current log-in password was not correct, please try again." : "Det nåværende innloggingspassordet var feil. Prøv igjen.",
@@ -20,9 +24,18 @@ 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." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke dekryptere denne filen. Dette er sannsynligvis en delt fil. Spør eieren av filen om å dele den med deg på nytt.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke lese denne filen, som sannsynligvis er en delt fil. Be eieren av filen om å dele den med deg på nytt.",
+ "Enable recovery key" : "Aktiver gjenopprettingsnøkkel",
+ "Disable recovery key" : "Deaktiver gjenopprettingsnøkkel",
+ "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." : "Gjenopprettingsnøkkelen er en ekstra krypteringsnøkkel som brukes til å kryptere filer. Den tillater gjenoppretting av en brukers filer i tilfelle brukeren glemmer passordet sitt.",
"Recovery key password" : "Passord for gjenopprettingsnøkkel",
+ "Repeat recovery key password" : "Gjenta passord for gjenopprettingsnøkkel",
"Change recovery key password:" : "Endre passord for gjenopprettingsnøkkel:",
+ "Old recovery key password" : "Gammelt passord for gjenopprettingsnøkkel",
+ "New recovery key password" : "Nytt passord for gjenopprettingsnøkkel",
+ "Repeat new recovery key password" : "Gjenta nytt passord for gjenopprettingsnøkkel",
"Change Password" : "Endre passord",
+ "ownCloud basic encryption module" : "ownCloud grunnleggende krypteringsmodul",
"Your private key password no longer matches your log-in password." : "Passordet for din private nøkkel stemmer ikke lenger med påloggingspassordet ditt.",
"Set your old private key password to your current log-in password:" : "Sett ditt gamle passord for privat nøkkel til ditt nåværende påloggingspassord:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke husker det gamle passordet ditt kan du spørre administratoren om å gjenopprette filene dine.",
diff --git a/apps/encryption/l10n/nb_NO.json b/apps/encryption/l10n/nb_NO.json
index 8f9816fe95b..3b010aad3bd 100644
--- a/apps/encryption/l10n/nb_NO.json
+++ b/apps/encryption/l10n/nb_NO.json
@@ -6,11 +6,15 @@
"Could not enable recovery key. Please check your recovery key password!" : "Klarte ikke å aktivere gjenopprettingsnøkkel. Sjekk passordet for gjenopprettingsnøkkelen.",
"Recovery key successfully disabled" : "Gjenopprettingsnøkkel ble deaktivert",
"Could not disable recovery key. Please check your recovery key password!" : "Klarte ikke å deaktivere gjenopprettingsnøkkel. Sjekk passordet for gjenopprettingsnøkkelen.",
+ "Missing parameters" : "Manglende parametre",
"Please provide the old recovery password" : "Oppgi det gamle gjenopprettingspassordet",
"Please provide a new recovery password" : "Oppgi et nytt gjenopprettingspassord",
"Please repeat the new recovery password" : "Gjenta det nye gjenopprettingspassordet",
"Password successfully changed." : "Passordet ble endret.",
"Could not change the password. Maybe the old password was not correct." : "Klarte ikke å endre passordet. Kanskje gammelt passord ikke var korrekt.",
+ "Recovery Key disabled" : "Gjenopprettingsnøkkel deaktivert",
+ "Recovery Key enabled" : "Gjenopprettingsnøkkel aktivert",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Klarte ikke å aktivere gjenopprettingsnøkkelen. Prøv igjen eller kontakt administratoren.",
"Could not update the private key password." : "Klarte ikke å oppdatere privatnøkkelpassordet.",
"The old password was not correct, please try again." : "Det gamle passordet var feil. Prøv igjen.",
"The current log-in password was not correct, please try again." : "Det nåværende innloggingspassordet var feil. Prøv igjen.",
@@ -18,9 +22,18 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke dekryptere denne filen. Dette er sannsynligvis en delt fil. Spør eieren av filen om å dele den med deg på nytt.",
+ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke lese denne filen, som sannsynligvis er en delt fil. Be eieren av filen om å dele den med deg på nytt.",
+ "Enable recovery key" : "Aktiver gjenopprettingsnøkkel",
+ "Disable recovery key" : "Deaktiver gjenopprettingsnøkkel",
+ "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." : "Gjenopprettingsnøkkelen er en ekstra krypteringsnøkkel som brukes til å kryptere filer. Den tillater gjenoppretting av en brukers filer i tilfelle brukeren glemmer passordet sitt.",
"Recovery key password" : "Passord for gjenopprettingsnøkkel",
+ "Repeat recovery key password" : "Gjenta passord for gjenopprettingsnøkkel",
"Change recovery key password:" : "Endre passord for gjenopprettingsnøkkel:",
+ "Old recovery key password" : "Gammelt passord for gjenopprettingsnøkkel",
+ "New recovery key password" : "Nytt passord for gjenopprettingsnøkkel",
+ "Repeat new recovery key password" : "Gjenta nytt passord for gjenopprettingsnøkkel",
"Change Password" : "Endre passord",
+ "ownCloud basic encryption module" : "ownCloud grunnleggende krypteringsmodul",
"Your private key password no longer matches your log-in password." : "Passordet for din private nøkkel stemmer ikke lenger med påloggingspassordet ditt.",
"Set your old private key password to your current log-in password:" : "Sett ditt gamle passord for privat nøkkel til ditt nåværende påloggingspassord:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke husker det gamle passordet ditt kan du spørre administratoren om å gjenopprette filene dine.",
diff --git a/apps/encryption/l10n/uk.js b/apps/encryption/l10n/uk.js
index 357b2e23c76..f7b432c2747 100644
--- a/apps/encryption/l10n/uk.js
+++ b/apps/encryption/l10n/uk.js
@@ -8,12 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Не вдалося підключити ключ відновлення. Будь ласка, перевірте пароль свого ключа відновлення!",
"Recovery key successfully disabled" : "Ключ відновлення відключено",
"Could not disable recovery key. Please check your recovery key password!" : "Не вдалося відключити ключ відновлення. Будь ласка, перевірте пароль ключа відновлення!",
+ "Missing parameters" : "Відсутні параметри",
"Please provide the old recovery password" : "Будь ласка, введіть старий пароль відновлення",
"Please provide a new recovery password" : "Будь ласка, введіть новий пароль відновлення",
"Please repeat the new recovery password" : "Будь ласка, введіть новий пароль відновлення ще раз",
"Password successfully changed." : "Пароль змінено.",
"Could not change the password. Maybe the old password was not correct." : "Не вдалося змінити пароль. Можливо ви неправильно ввели старий пароль.",
- "Recovery Key enabled" : "Ключ відновлення підключено",
+ "Recovery Key enabled" : "Відновлення ключа увімкнено",
"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." : "Старий пароль введено не вірно, спробуйте ще раз.",
diff --git a/apps/encryption/l10n/uk.json b/apps/encryption/l10n/uk.json
index 52187eb47f1..f5be35d821c 100644
--- a/apps/encryption/l10n/uk.json
+++ b/apps/encryption/l10n/uk.json
@@ -6,12 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Не вдалося підключити ключ відновлення. Будь ласка, перевірте пароль свого ключа відновлення!",
"Recovery key successfully disabled" : "Ключ відновлення відключено",
"Could not disable recovery key. Please check your recovery key password!" : "Не вдалося відключити ключ відновлення. Будь ласка, перевірте пароль ключа відновлення!",
+ "Missing parameters" : "Відсутні параметри",
"Please provide the old recovery password" : "Будь ласка, введіть старий пароль відновлення",
"Please provide a new recovery password" : "Будь ласка, введіть новий пароль відновлення",
"Please repeat the new recovery password" : "Будь ласка, введіть новий пароль відновлення ще раз",
"Password successfully changed." : "Пароль змінено.",
"Could not change the password. Maybe the old password was not correct." : "Не вдалося змінити пароль. Можливо ви неправильно ввели старий пароль.",
- "Recovery Key enabled" : "Ключ відновлення підключено",
+ "Recovery Key enabled" : "Відновлення ключа увімкнено",
"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." : "Старий пароль введено не вірно, спробуйте ще раз.",
diff --git a/apps/files/controller/apicontroller.php b/apps/files/controller/apicontroller.php
index 8fc22a8aa66..0cc222d7ce9 100644
--- a/apps/files/controller/apicontroller.php
+++ b/apps/files/controller/apicontroller.php
@@ -92,7 +92,6 @@ class ApiController extends Controller {
* replace the actual tag selection.
*
* @NoAdminRequired
- * @CORS
*
* @param string $path path
* @param array|string $tags array of tags
@@ -126,7 +125,6 @@ class ApiController extends Controller {
* Returns a list of all files tagged with the given tag.
*
* @NoAdminRequired
- * @CORS
*
* @param array|string $tagName tag name to filter by
* @return DataResponse
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index b8f526af5c2..86114d7ddfb 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -16,7 +16,7 @@ OC.L10N.register(
"No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue",
"There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini :",
- "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui est spécifiée dans le formulaire HTML.",
+ "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui était spécifiée dans le formulaire HTML.",
"The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement envoyé.",
"No file was uploaded" : "Pas de fichier envoyé.",
"Missing a temporary folder" : "Absence de dossier temporaire",
@@ -101,7 +101,7 @@ OC.L10N.register(
"Folder" : "Dossier",
"Upload" : "Chargement",
"Cancel upload" : "Annuler l'envoi",
- "No files in here" : "Pas de fichier ici",
+ "No files in here" : "Aucun fichier ici",
"Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !",
"No entries found in this folder" : "Aucune entrée trouvée dans ce dossier",
"Select all" : "Tout sélectionner",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index c177a4e6840..467aa830ce2 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -14,7 +14,7 @@
"No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue",
"There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini :",
- "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui est spécifiée dans le formulaire HTML.",
+ "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui était spécifiée dans le formulaire HTML.",
"The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement envoyé.",
"No file was uploaded" : "Pas de fichier envoyé.",
"Missing a temporary folder" : "Absence de dossier temporaire",
@@ -99,7 +99,7 @@
"Folder" : "Dossier",
"Upload" : "Chargement",
"Cancel upload" : "Annuler l'envoi",
- "No files in here" : "Pas de fichier ici",
+ "No files in here" : "Aucun fichier ici",
"Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !",
"No entries found in this folder" : "Aucune entrée trouvée dans ce dossier",
"Select all" : "Tout sélectionner",
diff --git a/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js
index 56cea9ed363..7e45f374988 100644
--- a/apps/files/l10n/nb_NO.js
+++ b/apps/files/l10n/nb_NO.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Slett",
"Disconnect storage" : "Koble fra lagring",
"Unshare" : "Avslutt deling",
+ "No permission to delete" : "Ikke tillatelse til å slette",
"Download" : "Last ned",
"Select" : "Velg",
"Pending" : "Ventende",
@@ -70,6 +71,7 @@ OC.L10N.register(
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av taggene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsler om oppretting og endringer i dine <strong>favorittfiler</strong> <em>(Kun strøm)</em>",
"A file or folder has been <strong>deleted</strong>" : "En fil eller mappe ble <strong>slettet</strong>",
"A file or folder has been <strong>restored</strong>" : "En fil eller mappe ble <strong>gjenopprettet</strong>",
"You created %1$s" : "Du opprettet %1$s",
diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json
index 69db79a6695..4e6779e36c8 100644
--- a/apps/files/l10n/nb_NO.json
+++ b/apps/files/l10n/nb_NO.json
@@ -40,6 +40,7 @@
"Delete" : "Slett",
"Disconnect storage" : "Koble fra lagring",
"Unshare" : "Avslutt deling",
+ "No permission to delete" : "Ikke tillatelse til å slette",
"Download" : "Last ned",
"Select" : "Velg",
"Pending" : "Ventende",
@@ -68,6 +69,7 @@
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av taggene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsler om oppretting og endringer i dine <strong>favorittfiler</strong> <em>(Kun strøm)</em>",
"A file or folder has been <strong>deleted</strong>" : "En fil eller mappe ble <strong>slettet</strong>",
"A file or folder has been <strong>restored</strong>" : "En fil eller mappe ble <strong>gjenopprettet</strong>",
"You created %1$s" : "Du opprettet %1$s",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index a55e0e88b69..70aafce6827 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -64,6 +64,7 @@ OC.L10N.register(
"File name cannot be empty." : "O nome do arquivo não pode estar vazio.",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio, arquivos não podem mais ser atualizados ou sincronizados!",
"Your storage is almost full ({usedSpacePercent}%)" : "Seu armazenamento está quase cheio ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["coincide com '{filter}'","coincide com '{filter}'"],
"{dirs} and {files}" : "{dirs} e {files}",
"Favorited" : "Favorito",
"Favorite" : "Favorito",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 0129b544ab4..941073fe630 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -62,6 +62,7 @@
"File name cannot be empty." : "O nome do arquivo não pode estar vazio.",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio, arquivos não podem mais ser atualizados ou sincronizados!",
"Your storage is almost full ({usedSpacePercent}%)" : "Seu armazenamento está quase cheio ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["coincide com '{filter}'","coincide com '{filter}'"],
"{dirs} and {files}" : "{dirs} e {files}",
"Favorited" : "Favorito",
"Favorite" : "Favorito",
diff --git a/apps/files_sharing/l10n/nb_NO.js b/apps/files_sharing/l10n/nb_NO.js
index 6a63a856069..2a181e0af49 100644
--- a/apps/files_sharing/l10n/nb_NO.js
+++ b/apps/files_sharing/l10n/nb_NO.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Passord for ekstern deling",
"Cancel" : "Avbryt",
"Add remote share" : "Legg til ekstern deling",
+ "You can upload into this folder" : "Du kan laste opp til denne mappen",
"No ownCloud installation (7 or higher) found at {remote}" : "Ingen ownCloud-installasjon (7 eller høyere) funnet på {remote}",
"Invalid ownCloud url" : "Ugyldig ownCloud-url",
"Share" : "Del",
@@ -56,6 +57,7 @@ OC.L10N.register(
"Download %s" : "Last ned %s",
"Direct link" : "Direkte lenke",
"Federated Cloud Sharing" : "Sammenknyttet sky-deling",
+ "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"
},
diff --git a/apps/files_sharing/l10n/nb_NO.json b/apps/files_sharing/l10n/nb_NO.json
index 0710062ba49..0fb0ee46cc6 100644
--- a/apps/files_sharing/l10n/nb_NO.json
+++ b/apps/files_sharing/l10n/nb_NO.json
@@ -19,6 +19,7 @@
"Remote share password" : "Passord for ekstern deling",
"Cancel" : "Avbryt",
"Add remote share" : "Legg til ekstern deling",
+ "You can upload into this folder" : "Du kan laste opp til denne mappen",
"No ownCloud installation (7 or higher) found at {remote}" : "Ingen ownCloud-installasjon (7 eller høyere) funnet på {remote}",
"Invalid ownCloud url" : "Ugyldig ownCloud-url",
"Share" : "Del",
@@ -54,6 +55,7 @@
"Download %s" : "Last ned %s",
"Direct link" : "Direkte lenke",
"Federated Cloud Sharing" : "Sammenknyttet sky-deling",
+ "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"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index c06922818ca..a415f9e9eb2 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
+ "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: anonymes binden ist nicht erlaubt.",
"The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen.",
"The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details kannst Du in den Logdateien nachlesen.",
@@ -11,6 +12,7 @@ OC.L10N.register(
"No data specified" : "Keine Daten angegeben",
" Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
+ "The Base DN appears to be wrong" : "Die Base-DN scheint falsch zu sein",
"Configuration incorrect" : "Konfiguration nicht korrekt",
"Configuration incomplete" : "Konfiguration nicht vollständig",
"Configuration OK" : "Konfiguration OK",
@@ -29,6 +31,8 @@ OC.L10N.register(
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymes binden ist nicht erlaubt. Bitte eine Nutzer-DN und ein Passwort angeben.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymes binden ist scheinbar nicht erlaubt.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stelle sicher, dass die Datenbank in Betrieb ist. Bitte lade vor dem Fortfahren neu.",
"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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Willst Du immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index 7c6cb120559..cda8c70b9cf 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -1,6 +1,7 @@
{ "translations": {
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
+ "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: anonymes binden ist nicht erlaubt.",
"The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen.",
"The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details kannst Du in den Logdateien nachlesen.",
@@ -9,6 +10,7 @@
"No data specified" : "Keine Daten angegeben",
" Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
+ "The Base DN appears to be wrong" : "Die Base-DN scheint falsch zu sein",
"Configuration incorrect" : "Konfiguration nicht korrekt",
"Configuration incomplete" : "Konfiguration nicht vollständig",
"Configuration OK" : "Konfiguration OK",
@@ -27,6 +29,8 @@
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymes binden ist nicht erlaubt. Bitte eine Nutzer-DN und ein Passwort angeben.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymes binden ist scheinbar nicht erlaubt.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stelle sicher, dass die Datenbank in Betrieb ist. Bitte lade vor dem Fortfahren neu.",
"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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Willst Du immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index 7f36fe64be0..78ff7c4ebc8 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
+ "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: Anonymous Bind ist nicht erlaubt.",
"The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen.",
"The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können Sie in den Logdateien nachlesen.",
@@ -11,6 +12,7 @@ OC.L10N.register(
"No data specified" : "Keine Daten angegeben",
" Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
+ "The Base DN appears to be wrong" : "Die Base-DN scheint falsch zu sein",
"Configuration incorrect" : "Konfiguration nicht korrekt",
"Configuration incomplete" : "Konfiguration nicht vollständig",
"Configuration OK" : "Konfiguration OK",
@@ -29,6 +31,8 @@ OC.L10N.register(
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte geben Sie eine User-DN und ein Passwort angeben.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymous Bind ist anscheinend nicht erlaubt.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stellen Sie sicher, dass die Datenbank in Betrieb ist. Bitte laden Sie vor dem Fortfahren neu.",
"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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index 27190826a20..5a4cd5555ea 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -1,6 +1,7 @@
{ "translations": {
"Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
"Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
+ "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: Anonymous Bind ist nicht erlaubt.",
"The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen.",
"The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können Sie in den Logdateien nachlesen.",
@@ -9,6 +10,7 @@
"No data specified" : "Keine Daten angegeben",
" Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
+ "The Base DN appears to be wrong" : "Die Base-DN scheint falsch zu sein",
"Configuration incorrect" : "Konfiguration nicht korrekt",
"Configuration incomplete" : "Konfiguration nicht vollständig",
"Configuration OK" : "Konfiguration OK",
@@ -27,6 +29,8 @@
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte geben Sie eine User-DN und ein Passwort angeben.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymous Bind ist anscheinend nicht erlaubt.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stellen Sie sicher, dass die Datenbank in Betrieb ist. Bitte laden Sie vor dem Fortfahren neu.",
"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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js
index 5c22b9c7357..371d1a4e783 100644
--- a/apps/user_ldap/l10n/el.js
+++ b/apps/user_ldap/l10n/el.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"No data specified" : "Δεν προσδιορίστηκαν δεδομένα",
" Could not set configuration %s" : "Αδυναμία ρύθμισης %s",
"Action does not exist" : "Η ενέργεια δεν υπάρχει",
+ "The Base DN appears to be wrong" : "Το Base DN φαίνεται να είναι εσφαλμένο",
"Configuration incorrect" : "Η διαμόρφωση είναι λανθασμένη",
"Configuration incomplete" : "Η διαμόρφωση είναι ελλιπής",
"Configuration OK" : "Η διαμόρφωση είναι εντάξει",
diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json
index 0c7b6b8009f..7a863409b7d 100644
--- a/apps/user_ldap/l10n/el.json
+++ b/apps/user_ldap/l10n/el.json
@@ -10,6 +10,7 @@
"No data specified" : "Δεν προσδιορίστηκαν δεδομένα",
" Could not set configuration %s" : "Αδυναμία ρύθμισης %s",
"Action does not exist" : "Η ενέργεια δεν υπάρχει",
+ "The Base DN appears to be wrong" : "Το Base DN φαίνεται να είναι εσφαλμένο",
"Configuration incorrect" : "Η διαμόρφωση είναι λανθασμένη",
"Configuration incomplete" : "Η διαμόρφωση είναι ελλιπής",
"Configuration OK" : "Η διαμόρφωση είναι εντάξει",
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index eeb890c70c5..d44e8067488 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Erreur lors de la suppression des associations.",
"Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur",
+ "The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.",
"The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
"The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.",
@@ -11,6 +12,7 @@ OC.L10N.register(
"No data specified" : "Aucune donnée spécifiée",
" Could not set configuration %s" : "Impossible de spécifier la configuration %s",
"Action does not exist" : "L'action n'existe pas",
+ "The Base DN appears to be wrong" : "Le DN de base est erroné",
"Configuration incorrect" : "Configuration incorrecte",
"Configuration incomplete" : "Configuration incomplète",
"Configuration OK" : "Configuration OK",
@@ -29,6 +31,8 @@ OC.L10N.register(
"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.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Le lien anonyme n'est pas autorisé. Merci de fournir le DN d'un utilisateur et un mot de passe.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Erreur d'opérations LDAP. Les liens anonymes peuvent ne pas être acceptés.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "La sauvegarde a échoué. Veuillez vérifier que la base de données est opérationnelle. Rechargez avant de poursuivre.",
"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?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
"Mode switch" : "Changer de mode",
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index b6c1c9e9985..22580e2cd9b 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -1,6 +1,7 @@
{ "translations": {
"Failed to clear the mappings." : "Erreur lors de la suppression des associations.",
"Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur",
+ "The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.",
"The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
"The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.",
@@ -9,6 +10,7 @@
"No data specified" : "Aucune donnée spécifiée",
" Could not set configuration %s" : "Impossible de spécifier la configuration %s",
"Action does not exist" : "L'action n'existe pas",
+ "The Base DN appears to be wrong" : "Le DN de base est erroné",
"Configuration incorrect" : "Configuration incorrecte",
"Configuration incomplete" : "Configuration incomplète",
"Configuration OK" : "Configuration OK",
@@ -27,6 +29,8 @@
"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.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Le lien anonyme n'est pas autorisé. Merci de fournir le DN d'un utilisateur et un mot de passe.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Erreur d'opérations LDAP. Les liens anonymes peuvent ne pas être acceptés.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "La sauvegarde a échoué. Veuillez vérifier que la base de données est opérationnelle. Rechargez avant de poursuivre.",
"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?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
"Mode switch" : "Changer de mode",
diff --git a/apps/user_ldap/l10n/nb_NO.js b/apps/user_ldap/l10n/nb_NO.js
index 146efa56dfc..86e96ee6981 100644
--- a/apps/user_ldap/l10n/nb_NO.js
+++ b/apps/user_ldap/l10n/nb_NO.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Failed to clear the mappings." : "Klarte ikke å nullstille tilknytningene.",
"Failed to delete the server configuration" : "Klarte ikke å slette tjener-konfigurasjonen.",
+ "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasjonen er ugyldig: Anonym binding er ikke tillatt.",
"The configuration is valid and the connection could be established!" : "Konfigurasjonen er i orden og tilkoblingen skal være etablert!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasjonen er i orden, men Bind mislyktes. Vennligst sjekk tjener-konfigurasjonen og påloggingsinformasjonen.",
"The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasjonen er ikke gyldig. Sjekk loggene for flere detaljer.",
@@ -10,15 +11,41 @@ OC.L10N.register(
"No configuration specified" : "Ingen konfigurasjon spesifisert",
"No data specified" : "Ingen data spesifisert",
" Could not set configuration %s" : "Klarte ikke å sette konfigurasjon %s",
+ "Action does not exist" : "Aksjonen eksisterer ikke",
+ "The Base DN appears to be wrong" : "Basis-DN ser ut til å være feil",
"Configuration incorrect" : "Konfigurasjon feil",
"Configuration incomplete" : "Konfigurasjon ufullstendig",
"Configuration OK" : "Konfigurasjon OK",
"Select groups" : "Velg grupper",
"Select object classes" : "Velg objektklasser",
+ "Please check the credentials, they seem to be wrong." : "Sjekk påloggingsdetaljene; de ser ut til å være feil.",
+ "Please specify the port, it could not be auto-detected." : "Vennligst spesifiser porten. Den kunne ikke påvises automatisk.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Basis-DN kunne ikke påvises automatisk. Se igjennom pålogginsdetaljer, vertsnavn og portnummer.",
+ "Could not detect Base DN, please enter it manually." : "Klarte ikke å påvise basis-DN. Det må skrives inn manuelt.",
"{nthServer}. Server" : "{nthServer}. server",
+ "No object found in the given Base DN. Please revise." : "Intet objekt funnet i angitt basis-DN. Revider oppsettet.",
+ "More than 1.000 directory entries available." : "Mer enn 1000 katalogoppføringer tilgjengelig.",
+ " entries available within the provided Base DN" : "oppføringer tilgjengelig innenfor angitt basis-DN",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Det oppstod en feil. Sjekk basis-DN, tilkoblingsoppsett og påloggingsdetaljer.",
"Do you really want to delete the current Server Configuration?" : "Er du sikker på at du vil slette aktiv tjener-konfigurasjon?",
"Confirm Deletion" : "Bekreft sletting",
+ "Mappings cleared successfully!" : "Tilknytningene ble nullstilt!",
+ "Error while clearing the mappings." : "Feil ved nullstilling av tilknytningene.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonym binding er ikke tillatt. Oppgi en bruker-DN og passord.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Feil ved LDAP-operasjon. Anonym binding er kanskje ikke tillatt.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Lagring fellet. Forsikre deg om at database er i gang. Last på nytt før du fortsetter.",
+ "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?" : "Endring av modus vil aktivere automatiske LDAP-spørringer. Avhengig av din LDAP-størrelse kan de ta litt tid. Vil du likevel endre modus?",
+ "Mode switch" : "Endring av modus",
"Select attributes" : "Velg attributter",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
+ "User found and settings verified." : "Bruker funnet og innstillingene sjekket.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Vennligst sjekk.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder %uid mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.",
+ "Please provide a login name to test against" : "Vennligst oppgi et påloggingsnavn å teste mot",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP- / AD-serveren ikke støtter memberOf.",
"_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"],
"_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.",
@@ -26,28 +53,49 @@ OC.L10N.register(
"Invalid Host" : "Ugyldig tjener",
"Server" : "Server",
"Users" : "Brukere",
+ "Login Attributes" : "Påloggingsattributter",
"Groups" : "Grupper",
"Test Configuration" : "Test konfigurasjonen",
"Help" : "Hjelp",
"Groups meeting these criteria are available in %s:" : "Grupper som tilfredsstiller disse kriteriene er tilgjengelige i %s:",
+ "Only these object classes:" : "Kun disse objektklassene:",
+ "Only from these groups:" : "Kun fra disse gruppene:",
+ "Search groups" : "Søk i grupper",
+ "Available groups" : "Tilgjengelige grupper",
+ "Selected groups" : "Valgte grupper",
+ "Edit LDAP Query" : "Rediger LDAP-spørring",
+ "LDAP Filter:" : "LDAP-filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-grupper som skal ha tilgang til %s-instansen.",
+ "Verify settings and count groups" : "Sjekk innstillinger og tell grupper",
+ "When logging in, %s will find the user based on the following attributes:" : "Ved pålogging vil %s finne brukeren basert på følgende attributter:",
+ "LDAP / AD Username:" : "LDAP / AD brukernavn:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Tillater pålogging med LDAP / AD brukernavn, som er enten uid eller samaccountname og vil bli oppdaget.",
+ "LDAP / AD Email Address:" : "LDAP / AD Epost-adresse:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Log alltid på med en epost-attributt. Mail og mailPrimaryAddress vil være tillatt.",
"Other Attributes:" : "Andre attributter:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definerer filteret som skal brukes når noen prøver å logge inn. %%uid erstatter brukernavnet i innloggingen. Eksempel: \"uid=%%uid\"",
+ "Test Loginname" : "Test påloggingsnavn",
+ "Verify settings" : "Sjekk innstillinger",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
"Host" : "Tjener",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du kan utelate protokollen, men du er påkrevd å bruke SSL. Deretter starte med ldaps://",
"Port" : "Port",
+ "Detect Port" : "Påvis port",
"User DN" : "Bruker 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 nummeret til klienten som skal bindes til, f.eks. uid=agent,dc=example,dc=com. For anonym tilgang, la DN- og passord-feltet stå tomt.",
+ "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 for klientbrukeren som binding skal gjøres med, f.eks. uid=agent,dc=example,dc=com. For anonym tilgang, la DN- og passord-feltet stå tomt.",
"Password" : "Passord",
"For anonymous access, leave DN and Password empty." : "For anonym tilgang, la DN- og passord-feltet stå tomt.",
- "One Base DN per line" : "En hoved-DN pr. linje",
- "You can specify Base DN for users and groups in the Advanced tab" : "Du kan spesifisere hoved-DN for brukere og grupper under Avansert fanen",
+ "One Base DN per line" : "En basis-DN pr. linje",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Du kan spesifisere basis-DN for brukere og grupper under Avansert fanen",
+ "Detect Base DN" : "Påvis basis-DN",
+ "Test Base DN" : "Test basis-DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Unngår automatiske LDAP-forespørsler. Bedre for store oppsett men krever litt LDAP-kunnskap.",
"Manually enter LDAP filters (recommended for large directories)" : "Legg inn LDAP-filtre manuelt (anbefalt for store kataloger)",
"Limit %s access to users meeting these criteria:" : "Begrens %s-tilgang til brukere som tilfredsstiller disse kriteriene:",
+ "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." : "De mest vanlige objektklassene for brukere er organizationalPerson, person, user og inetOrgPerson. Kontakt katalogadministratoren hvis du er usikker på hvilken objektklasse du skal velge.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-brukere som skal ha tilgang til %s-instansen.",
+ "Verify settings and count users" : "Sjekk innstillinger og tell brukere",
"Saving" : "Lagrer",
"Back" : "Tilbake",
"Continue" : "Fortsett",
diff --git a/apps/user_ldap/l10n/nb_NO.json b/apps/user_ldap/l10n/nb_NO.json
index 82950c884cb..8f2e2f2046f 100644
--- a/apps/user_ldap/l10n/nb_NO.json
+++ b/apps/user_ldap/l10n/nb_NO.json
@@ -1,6 +1,7 @@
{ "translations": {
"Failed to clear the mappings." : "Klarte ikke å nullstille tilknytningene.",
"Failed to delete the server configuration" : "Klarte ikke å slette tjener-konfigurasjonen.",
+ "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasjonen er ugyldig: Anonym binding er ikke tillatt.",
"The configuration is valid and the connection could be established!" : "Konfigurasjonen er i orden og tilkoblingen skal være etablert!",
"The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasjonen er i orden, men Bind mislyktes. Vennligst sjekk tjener-konfigurasjonen og påloggingsinformasjonen.",
"The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasjonen er ikke gyldig. Sjekk loggene for flere detaljer.",
@@ -8,15 +9,41 @@
"No configuration specified" : "Ingen konfigurasjon spesifisert",
"No data specified" : "Ingen data spesifisert",
" Could not set configuration %s" : "Klarte ikke å sette konfigurasjon %s",
+ "Action does not exist" : "Aksjonen eksisterer ikke",
+ "The Base DN appears to be wrong" : "Basis-DN ser ut til å være feil",
"Configuration incorrect" : "Konfigurasjon feil",
"Configuration incomplete" : "Konfigurasjon ufullstendig",
"Configuration OK" : "Konfigurasjon OK",
"Select groups" : "Velg grupper",
"Select object classes" : "Velg objektklasser",
+ "Please check the credentials, they seem to be wrong." : "Sjekk påloggingsdetaljene; de ser ut til å være feil.",
+ "Please specify the port, it could not be auto-detected." : "Vennligst spesifiser porten. Den kunne ikke påvises automatisk.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Basis-DN kunne ikke påvises automatisk. Se igjennom pålogginsdetaljer, vertsnavn og portnummer.",
+ "Could not detect Base DN, please enter it manually." : "Klarte ikke å påvise basis-DN. Det må skrives inn manuelt.",
"{nthServer}. Server" : "{nthServer}. server",
+ "No object found in the given Base DN. Please revise." : "Intet objekt funnet i angitt basis-DN. Revider oppsettet.",
+ "More than 1.000 directory entries available." : "Mer enn 1000 katalogoppføringer tilgjengelig.",
+ " entries available within the provided Base DN" : "oppføringer tilgjengelig innenfor angitt basis-DN",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Det oppstod en feil. Sjekk basis-DN, tilkoblingsoppsett og påloggingsdetaljer.",
"Do you really want to delete the current Server Configuration?" : "Er du sikker på at du vil slette aktiv tjener-konfigurasjon?",
"Confirm Deletion" : "Bekreft sletting",
+ "Mappings cleared successfully!" : "Tilknytningene ble nullstilt!",
+ "Error while clearing the mappings." : "Feil ved nullstilling av tilknytningene.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonym binding er ikke tillatt. Oppgi en bruker-DN og passord.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "Feil ved LDAP-operasjon. Anonym binding er kanskje ikke tillatt.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Lagring fellet. Forsikre deg om at database er i gang. Last på nytt før du fortsetter.",
+ "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?" : "Endring av modus vil aktivere automatiske LDAP-spørringer. Avhengig av din LDAP-størrelse kan de ta litt tid. Vil du likevel endre modus?",
+ "Mode switch" : "Endring av modus",
"Select attributes" : "Velg attributter",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen): <br/>",
+ "User found and settings verified." : "Bruker funnet og innstillingene sjekket.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Vennligst sjekk.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder %uid mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.",
+ "Please provide a login name to test against" : "Vennligst oppgi et påloggingsnavn å teste mot",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP- / AD-serveren ikke støtter memberOf.",
"_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"],
"_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.",
@@ -24,28 +51,49 @@
"Invalid Host" : "Ugyldig tjener",
"Server" : "Server",
"Users" : "Brukere",
+ "Login Attributes" : "Påloggingsattributter",
"Groups" : "Grupper",
"Test Configuration" : "Test konfigurasjonen",
"Help" : "Hjelp",
"Groups meeting these criteria are available in %s:" : "Grupper som tilfredsstiller disse kriteriene er tilgjengelige i %s:",
+ "Only these object classes:" : "Kun disse objektklassene:",
+ "Only from these groups:" : "Kun fra disse gruppene:",
+ "Search groups" : "Søk i grupper",
+ "Available groups" : "Tilgjengelige grupper",
+ "Selected groups" : "Valgte grupper",
+ "Edit LDAP Query" : "Rediger LDAP-spørring",
+ "LDAP Filter:" : "LDAP-filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-grupper som skal ha tilgang til %s-instansen.",
+ "Verify settings and count groups" : "Sjekk innstillinger og tell grupper",
+ "When logging in, %s will find the user based on the following attributes:" : "Ved pålogging vil %s finne brukeren basert på følgende attributter:",
+ "LDAP / AD Username:" : "LDAP / AD brukernavn:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Tillater pålogging med LDAP / AD brukernavn, som er enten uid eller samaccountname og vil bli oppdaget.",
+ "LDAP / AD Email Address:" : "LDAP / AD Epost-adresse:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Log alltid på med en epost-attributt. Mail og mailPrimaryAddress vil være tillatt.",
"Other Attributes:" : "Andre attributter:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definerer filteret som skal brukes når noen prøver å logge inn. %%uid erstatter brukernavnet i innloggingen. Eksempel: \"uid=%%uid\"",
+ "Test Loginname" : "Test påloggingsnavn",
+ "Verify settings" : "Sjekk innstillinger",
"1. Server" : "1. server",
"%s. Server:" : "%s. server:",
"Host" : "Tjener",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du kan utelate protokollen, men du er påkrevd å bruke SSL. Deretter starte med ldaps://",
"Port" : "Port",
+ "Detect Port" : "Påvis port",
"User DN" : "Bruker 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 nummeret til klienten som skal bindes til, f.eks. uid=agent,dc=example,dc=com. For anonym tilgang, la DN- og passord-feltet stå tomt.",
+ "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 for klientbrukeren som binding skal gjøres med, f.eks. uid=agent,dc=example,dc=com. For anonym tilgang, la DN- og passord-feltet stå tomt.",
"Password" : "Passord",
"For anonymous access, leave DN and Password empty." : "For anonym tilgang, la DN- og passord-feltet stå tomt.",
- "One Base DN per line" : "En hoved-DN pr. linje",
- "You can specify Base DN for users and groups in the Advanced tab" : "Du kan spesifisere hoved-DN for brukere og grupper under Avansert fanen",
+ "One Base DN per line" : "En basis-DN pr. linje",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Du kan spesifisere basis-DN for brukere og grupper under Avansert fanen",
+ "Detect Base DN" : "Påvis basis-DN",
+ "Test Base DN" : "Test basis-DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Unngår automatiske LDAP-forespørsler. Bedre for store oppsett men krever litt LDAP-kunnskap.",
"Manually enter LDAP filters (recommended for large directories)" : "Legg inn LDAP-filtre manuelt (anbefalt for store kataloger)",
"Limit %s access to users meeting these criteria:" : "Begrens %s-tilgang til brukere som tilfredsstiller disse kriteriene:",
+ "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." : "De mest vanlige objektklassene for brukere er organizationalPerson, person, user og inetOrgPerson. Kontakt katalogadministratoren hvis du er usikker på hvilken objektklasse du skal velge.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-brukere som skal ha tilgang til %s-instansen.",
+ "Verify settings and count users" : "Sjekk innstillinger og tell brukere",
"Saving" : "Lagrer",
"Back" : "Tilbake",
"Continue" : "Fortsett",
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index 30c897c82b2..7d86e9d558c 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"No data specified" : "Geen gegevens verstrekt",
" Could not set configuration %s" : "Kon configuratie %s niet instellen",
"Action does not exist" : "Actie bestaat niet",
+ "The Base DN appears to be wrong" : "De Basis DN lijkt onjuist",
"Configuration incorrect" : "Configuratie onjuist",
"Configuration incomplete" : "Configuratie incompleet",
"Configuration OK" : "Configuratie OK",
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index 3b2c19e86a2..fc23b39df64 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -10,6 +10,7 @@
"No data specified" : "Geen gegevens verstrekt",
" Could not set configuration %s" : "Kon configuratie %s niet instellen",
"Action does not exist" : "Actie bestaat niet",
+ "The Base DN appears to be wrong" : "De Basis DN lijkt onjuist",
"Configuration incorrect" : "Configuratie onjuist",
"Configuration incomplete" : "Configuratie incompleet",
"Configuration OK" : "Configuratie OK",
diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js
index 038657a5065..96c4ab9a413 100644
--- a/apps/user_ldap/l10n/uk.js
+++ b/apps/user_ldap/l10n/uk.js
@@ -30,6 +30,9 @@ OC.L10N.register(
"Test Configuration" : "Тестове налаштування",
"Help" : "Допомога",
"Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:",
+ "Search groups" : "Пошук груп",
+ "Available groups" : "Доступні групи",
+ "Selected groups" : "Обрані групи",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.",
"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\"",
@@ -38,6 +41,7 @@ OC.L10N.register(
"Host" : "Хост",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Можна не вказувати протокол, якщо вам не потрібен SSL. Тоді почніть з ldaps://",
"Port" : "Порт",
+ "Detect Port" : "Визначити Порт",
"User DN" : "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 клієнтського користувача для прив'язки, наприклад: uid=agent,dc=example,dc=com. Для анонімного доступу, залиште DN і Пароль порожніми.",
"Password" : "Пароль",
diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json
index bfd877a1892..6d448e27799 100644
--- a/apps/user_ldap/l10n/uk.json
+++ b/apps/user_ldap/l10n/uk.json
@@ -28,6 +28,9 @@
"Test Configuration" : "Тестове налаштування",
"Help" : "Допомога",
"Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:",
+ "Search groups" : "Пошук груп",
+ "Available groups" : "Доступні групи",
+ "Selected groups" : "Обрані групи",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.",
"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\"",
@@ -36,6 +39,7 @@
"Host" : "Хост",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Можна не вказувати протокол, якщо вам не потрібен SSL. Тоді почніть з ldaps://",
"Port" : "Порт",
+ "Detect Port" : "Визначити Порт",
"User DN" : "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 клієнтського користувача для прив'язки, наприклад: uid=agent,dc=example,dc=com. Для анонімного доступу, залиште DN і Пароль порожніми.",
"Password" : "Пароль",
diff --git a/core/css/styles.css b/core/css/styles.css
index fe259e87d51..e019b874f61 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -40,6 +40,10 @@ body {
height: 32px;
display: none;
}
+#body-login .float-spinner {
+ margin-top: -32px;
+ padding-top: 32px;
+}
#nojavascript {
position: fixed;
@@ -1068,4 +1072,3 @@ fieldset.warning legend + p, fieldset.update legend + p {
@-ms-viewport {
width: device-width;
}
-
diff --git a/core/js/placeholder.js b/core/js/placeholder.js
index 47cff780d2f..74bb9b1881d 100644
--- a/core/js/placeholder.js
+++ b/core/js/placeholder.js
@@ -59,7 +59,7 @@
// CSS rules
this.css('color', '#fff');
- this.css('font-weight', 'bold');
+ this.css('font-weight', 'normal');
this.css('text-align', 'center');
// calculate the height
diff --git a/core/js/tests/specs/shareSpec.js b/core/js/tests/specs/shareSpec.js
index c075351b9f5..33090bbda74 100644
--- a/core/js/tests/specs/shareSpec.js
+++ b/core/js/tests/specs/shareSpec.js
@@ -110,6 +110,86 @@ describe('OC.Share tests', function() {
describe('Share with link', function() {
// TODO: test ajax calls
// TODO: test password field visibility (whenever enforced or not)
+ it('update password on focus out', function() {
+ $('#allowShareWithLink').val('yes');
+
+ OC.Share.showDropDown(
+ 'file',
+ 123,
+ $container,
+ true,
+ 31,
+ 'shared_file_name.txt'
+ );
+
+ // Toggle linkshare
+ $('#dropdown [name=linkCheckbox]').click();
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({data: {token: 'xyz'}, status: 'success'})
+ );
+
+ // Enable password, enter password and focusout
+ $('#dropdown [name=showPassword]').click();
+ $('#dropdown #linkPassText').focus();
+ $('#dropdown #linkPassText').val('foo');
+ $('#dropdown #linkPassText').focusout();
+
+ expect(fakeServer.requests[1].method).toEqual('POST');
+ var body = OC.parseQueryString(fakeServer.requests[1].requestBody);
+ expect(body['shareWith']).toEqual('foo');
+
+ // Set password response
+ fakeServer.requests[1].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({data: {token: 'xyz'}, status: 'success'})
+ );
+
+ expect($('#dropdown #linkPassText').val()).toEqual('');
+ expect($('#dropdown #linkPassText').attr('placeholder')).toEqual('Password protected');
+ });
+ it('update password on enter', function() {
+ $('#allowShareWithLink').val('yes');
+
+ OC.Share.showDropDown(
+ 'file',
+ 123,
+ $container,
+ true,
+ 31,
+ 'shared_file_name.txt'
+ );
+
+ // Toggle linkshare
+ $('#dropdown [name=linkCheckbox]').click();
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({data: {token: 'xyz'}, status: 'success'})
+ );
+
+ // Enable password and enter password
+ $('#dropdown [name=showPassword]').click();
+ $('#dropdown #linkPassText').focus();
+ $('#dropdown #linkPassText').val('foo');
+ $('#dropdown #linkPassText').trigger(new $.Event('keyup', {keyCode: 13}));
+
+ expect(fakeServer.requests[1].method).toEqual('POST');
+ var body = OC.parseQueryString(fakeServer.requests[1].requestBody);
+ expect(body['shareWith']).toEqual('foo');
+
+ // Set password response
+ fakeServer.requests[1].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({data: {token: 'xyz'}, status: 'success'})
+ );
+
+ expect($('#dropdown #linkPassText').val()).toEqual('');
+ expect($('#dropdown #linkPassText').attr('placeholder')).toEqual('Password protected');
+ });
it('shows share with link checkbox when allowed', function() {
$('#allowShareWithLink').val('yes');
OC.Share.showDropDown(
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 8f5bff70d4e..12e6ce8ea29 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -191,6 +191,8 @@ OC.L10N.register(
"Data folder" : "Répertoire des données",
"Configure the database" : "Configurer la base de données",
"Only %s is available." : "%s seulement est disponible.",
+ "Install and activate additional PHP modules to choose other database types." : "Installez et activez les modules PHP additionnels pour choisir d'autres types de base de données.",
+ "For more details check out the documentation." : "Consultez la documentation pour des détails supplémentaires.",
"Database user" : "Utilisateur de la base de données",
"Database password" : "Mot de passe de la base de données",
"Database name" : "Nom de la base de données",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 6e0e9f4aa18..7a46ccce15c 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -189,6 +189,8 @@
"Data folder" : "Répertoire des données",
"Configure the database" : "Configurer la base de données",
"Only %s is available." : "%s seulement est disponible.",
+ "Install and activate additional PHP modules to choose other database types." : "Installez et activez les modules PHP additionnels pour choisir d'autres types de base de données.",
+ "For more details check out the documentation." : "Consultez la documentation pour des détails supplémentaires.",
"Database user" : "Utilisateur de la base de données",
"Database password" : "Mot de passe de la base de données",
"Database name" : "Nom de la base de données",
diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js
index 707fd56605b..5b5465fb357 100644
--- a/core/l10n/nb_NO.js
+++ b/core/l10n/nb_NO.js
@@ -72,6 +72,7 @@ OC.L10N.register(
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web-serveren din er ikke satt opp til å tillate synkronisering av filer ennå, fordi WebDAV-grensesnittet ikke ser ut til å virke.",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Vi anbefaler sterkt at du konfigurerer web-serveren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av web-serverens dokumentrot.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i vår <a href=\"{docLink}\">documentasjon</a>.",
"Error occurred while checking server setup" : "Feil oppstod ved sjekking av server-oppsett",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-header \"{header}\" er ikke konfigurert lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"2,678,400\" seconds. This is a potential security risk and we recommend adjusting this setting." : "HTTP-header \"Strict-Transport-Security\" er ikke konfigurert til minst \"2,678,400\" sekunder. Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.",
@@ -85,6 +86,9 @@ OC.L10N.register(
"Error while changing permissions" : "Feil ved endring av tillatelser",
"Shared with you and the group {group} by {owner}" : "Delt med deg og gruppen {group} av {owner}",
"Shared with you by {owner}" : "Delt med deg av {owner}",
+ "Share with users or groups …" : "Del med brukere eller grupper ...",
+ "Share with users, groups or remote users …" : "Del med brukere, grupper eller eksterne brukere ...",
+ "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Del med personer på andre ownCloud-installasjoner med syntaksen brukernavn@example.com/owncloud",
"Share link" : "Del lenke",
"The public link will expire no later than {days} days after it is created" : "Den offentlige lenken vil utløpe senest {days} dager etter at den lages",
"Link" : "Lenke",
@@ -97,6 +101,7 @@ OC.L10N.register(
"Set expiration date" : "Sett utløpsdato",
"Expiration" : "Utløpsdato",
"Expiration date" : "Utløpsdato",
+ "An error occured. Please try again" : "Det oppstod en feil. Prøv igjen",
"Adding user..." : "Legger til bruker...",
"group" : "gruppe",
"remote" : "ekstern",
@@ -129,6 +134,7 @@ OC.L10N.register(
"Hello {name}, the weather is {weather}" : "Hallo {name}, været er {weather}",
"Hello {name}" : "Hallo {name}",
"_download %n file_::_download %n files_" : ["last ned %n fil","last ned %n filer"],
+ "{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.",
"Updating {productName} to version {version}, this may take a while." : "Oppdaterer {productName} til versjon {version}. Dette kan ta litt tid.",
"Please reload the page." : "Vennligst last siden på nytt.",
"The update was unsuccessful. " : "Oppdateringen var mislykket.",
@@ -176,6 +182,7 @@ OC.L10N.register(
"File: %s" : "Fil: %s",
"Line: %s" : "Linje: %s",
"Trace" : "Trace",
+ "Security warning" : "Sikkerhetsadvarsel",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datamappen og filene dine er sannsynligvis tilgjengelig fra Internett fordi .htaccess-filen ikke fungerer.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For informasjon om hvordan du setter opp serveren din riktig, se <a href=\"%s\" target=\"_blank\">dokumentasjonen</a>.",
"Create an <strong>admin account</strong>" : "Opprett en <strong>administrator-konto</strong>",
@@ -184,21 +191,28 @@ OC.L10N.register(
"Data folder" : "Datamappe",
"Configure the database" : "Konfigurer databasen",
"Only %s is available." : "Kun %s er tilgjengelig.",
+ "Install and activate additional PHP modules to choose other database types." : "Installer og aktiver flere PHP-moduler for å velge andre databasetyper.",
+ "For more details check out the documentation." : "Sjekk dokumentasjonen for flere detaljer.",
"Database user" : "Databasebruker",
"Database password" : "Databasepassord",
"Database name" : "Databasenavn",
"Database tablespace" : "Database tabellområde",
"Database host" : "Databasevert",
+ "Performance warning" : "Ytelsesadvarsel",
"SQLite will be used as database." : "SQLite vil bli brukt som database.",
"For larger installations we recommend to choose a different database backend." : "For større installasjoner anbefaler vi å velge en annen database.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite er spesielt frarådet om man bruker desktopklienten til filsynkronisering",
"Finish setup" : "Fullfør oppsetting",
"Finishing …" : "Ferdigstiller ...",
+ "Need help?" : "Trenger du hjelp?",
+ "See the documentation" : "Se documentasjonen",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denne applikasjonen krever JavaScript for å fungere korrekt. Vennligst {linkstart}aktiver JavaScript{linkend} og last siden på nytt.",
"Log out" : "Logg ut",
"Search" : "Søk",
"Server side authentication failed!" : "Autentisering feilet på serveren!",
"Please contact your administrator." : "Vennligst kontakt administratoren din.",
+ "An internal error occured." : "Det oppstod en intern feil.",
+ "Please try again or contact your administrator." : "Prøv igjen eller kontakt en administrator.",
"Forgot your password? Reset it!" : "Glemt passordet ditt? Tilbakestill det!",
"remember" : "husk",
"Log in" : "Logg inn",
diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json
index b53af891bbf..5bd8cf12a32 100644
--- a/core/l10n/nb_NO.json
+++ b/core/l10n/nb_NO.json
@@ -70,6 +70,7 @@
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web-serveren din er ikke satt opp til å tillate synkronisering av filer ennå, fordi WebDAV-grensesnittet ikke ser ut til å virke.",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Vi anbefaler sterkt at du konfigurerer web-serveren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av web-serverens dokumentrot.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i vår <a href=\"{docLink}\">documentasjon</a>.",
"Error occurred while checking server setup" : "Feil oppstod ved sjekking av server-oppsett",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-header \"{header}\" er ikke konfigurert lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"2,678,400\" seconds. This is a potential security risk and we recommend adjusting this setting." : "HTTP-header \"Strict-Transport-Security\" er ikke konfigurert til minst \"2,678,400\" sekunder. Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.",
@@ -83,6 +84,9 @@
"Error while changing permissions" : "Feil ved endring av tillatelser",
"Shared with you and the group {group} by {owner}" : "Delt med deg og gruppen {group} av {owner}",
"Shared with you by {owner}" : "Delt med deg av {owner}",
+ "Share with users or groups …" : "Del med brukere eller grupper ...",
+ "Share with users, groups or remote users …" : "Del med brukere, grupper eller eksterne brukere ...",
+ "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Del med personer på andre ownCloud-installasjoner med syntaksen brukernavn@example.com/owncloud",
"Share link" : "Del lenke",
"The public link will expire no later than {days} days after it is created" : "Den offentlige lenken vil utløpe senest {days} dager etter at den lages",
"Link" : "Lenke",
@@ -95,6 +99,7 @@
"Set expiration date" : "Sett utløpsdato",
"Expiration" : "Utløpsdato",
"Expiration date" : "Utløpsdato",
+ "An error occured. Please try again" : "Det oppstod en feil. Prøv igjen",
"Adding user..." : "Legger til bruker...",
"group" : "gruppe",
"remote" : "ekstern",
@@ -127,6 +132,7 @@
"Hello {name}, the weather is {weather}" : "Hallo {name}, været er {weather}",
"Hello {name}" : "Hallo {name}",
"_download %n file_::_download %n files_" : ["last ned %n fil","last ned %n filer"],
+ "{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.",
"Updating {productName} to version {version}, this may take a while." : "Oppdaterer {productName} til versjon {version}. Dette kan ta litt tid.",
"Please reload the page." : "Vennligst last siden på nytt.",
"The update was unsuccessful. " : "Oppdateringen var mislykket.",
@@ -174,6 +180,7 @@
"File: %s" : "Fil: %s",
"Line: %s" : "Linje: %s",
"Trace" : "Trace",
+ "Security warning" : "Sikkerhetsadvarsel",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datamappen og filene dine er sannsynligvis tilgjengelig fra Internett fordi .htaccess-filen ikke fungerer.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For informasjon om hvordan du setter opp serveren din riktig, se <a href=\"%s\" target=\"_blank\">dokumentasjonen</a>.",
"Create an <strong>admin account</strong>" : "Opprett en <strong>administrator-konto</strong>",
@@ -182,21 +189,28 @@
"Data folder" : "Datamappe",
"Configure the database" : "Konfigurer databasen",
"Only %s is available." : "Kun %s er tilgjengelig.",
+ "Install and activate additional PHP modules to choose other database types." : "Installer og aktiver flere PHP-moduler for å velge andre databasetyper.",
+ "For more details check out the documentation." : "Sjekk dokumentasjonen for flere detaljer.",
"Database user" : "Databasebruker",
"Database password" : "Databasepassord",
"Database name" : "Databasenavn",
"Database tablespace" : "Database tabellområde",
"Database host" : "Databasevert",
+ "Performance warning" : "Ytelsesadvarsel",
"SQLite will be used as database." : "SQLite vil bli brukt som database.",
"For larger installations we recommend to choose a different database backend." : "For større installasjoner anbefaler vi å velge en annen database.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite er spesielt frarådet om man bruker desktopklienten til filsynkronisering",
"Finish setup" : "Fullfør oppsetting",
"Finishing …" : "Ferdigstiller ...",
+ "Need help?" : "Trenger du hjelp?",
+ "See the documentation" : "Se documentasjonen",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denne applikasjonen krever JavaScript for å fungere korrekt. Vennligst {linkstart}aktiver JavaScript{linkend} og last siden på nytt.",
"Log out" : "Logg ut",
"Search" : "Søk",
"Server side authentication failed!" : "Autentisering feilet på serveren!",
"Please contact your administrator." : "Vennligst kontakt administratoren din.",
+ "An internal error occured." : "Det oppstod en intern feil.",
+ "Please try again or contact your administrator." : "Prøv igjen eller kontakt en administrator.",
"Forgot your password? Reset it!" : "Glemt passordet ditt? Tilbakestill det!",
"remember" : "husk",
"Log in" : "Logg inn",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index a2b23ab9585..b2b92bdf449 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -149,6 +149,7 @@ OC.L10N.register(
"Reset password" : "Redefinir senha",
"Searching other places" : "Pesquisando em outros lugares",
"No search result in other places" : "Nenhum resultado da pesquisa em outros lugares",
+ "_{count} search result in other places_::_{count} search results in other places_" : ["{count} resultados da pesquisa em outros lugares","{count} resultados da pesquisa em outros lugares"],
"Personal" : "Pessoal",
"Users" : "Usuários",
"Apps" : "Aplicações",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 9ac98948047..f8de63cde27 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -147,6 +147,7 @@
"Reset password" : "Redefinir senha",
"Searching other places" : "Pesquisando em outros lugares",
"No search result in other places" : "Nenhum resultado da pesquisa em outros lugares",
+ "_{count} search result in other places_::_{count} search results in other places_" : ["{count} resultados da pesquisa em outros lugares","{count} resultados da pesquisa em outros lugares"],
"Personal" : "Pessoal",
"Users" : "Usuários",
"Apps" : "Aplicações",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 6a0da0710c9..cb11b5809bb 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -218,7 +218,7 @@ OC.L10N.register(
"The theme %s has been disabled." : "%s 主题已被禁用。",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "在继续之前,请确认数据库、配置文件夹和数据文件夹已经备份。",
"Start update" : "开始更新",
- "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "为避免更大的安装演示,你能在你的安装目录下面运行这些命令:",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "为进行避免较大的安装时超时,你可以在你的安装目录下运行下面的命令:",
"This %s instance is currently in maintenance mode, which may take a while." : "该 %s 实例当前处于维护模式,这将进行一些时间。",
"This page will refresh itself when the %s instance is available again." : "当实例 %s 再次可用时这个页面将刷新。"
},
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index a6d48105721..3321f61c072 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -216,7 +216,7 @@
"The theme %s has been disabled." : "%s 主题已被禁用。",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "在继续之前,请确认数据库、配置文件夹和数据文件夹已经备份。",
"Start update" : "开始更新",
- "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "为避免更大的安装演示,你能在你的安装目录下面运行这些命令:",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "为进行避免较大的安装时超时,你可以在你的安装目录下运行下面的命令:",
"This %s instance is currently in maintenance mode, which may take a while." : "该 %s 实例当前处于维护模式,这将进行一些时间。",
"This page will refresh itself when the %s instance is available again." : "当实例 %s 再次可用时这个页面将刷新。"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
index a1e1cd4af08..9d05e40e533 100644
--- a/lib/l10n/el.js
+++ b/lib/l10n/el.js
@@ -129,7 +129,9 @@ OC.L10N.register(
"PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ",
"PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Η διόρθωση της ρύθμισης στο αρχείο php.ini θα επιτρέψει στο ownCloud να επαναλειτουργήσει",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;",
"Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.",
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
index e60cd9fea65..84d2b8f4925 100644
--- a/lib/l10n/el.json
+++ b/lib/l10n/el.json
@@ -127,7 +127,9 @@
"PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ",
"PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Η διόρθωση της ρύθμισης στο αρχείο php.ini θα επιτρέψει στο ownCloud να επαναλειτουργήσει",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;",
"Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.",
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 0dc89813635..819a4a76be2 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -43,6 +43,7 @@ OC.L10N.register(
"File name is a reserved word" : "Ce nom de fichier est un mot réservé",
"File name contains at least one invalid character" : "Le nom de fichier contient un (des) caractère(s) non valide(s)",
"File name is too long" : "Nom de fichier trop long",
+ "Can't read file" : "Impossible de lire le fichier",
"App directory already exists" : "Le dossier de l'application existe déjà",
"Can't create app folder. Please fix permissions. %s" : "Impossible de créer le dossier de l'application. Corrigez les droits d'accès. %s",
"No source specified when installing app" : "Aucune source spécifiée pour installer l'application",
@@ -130,7 +131,9 @@ OC.L10N.register(
"PHP module %s not installed." : "Le module PHP %s n’est pas installé.",
"PHP setting \"%s\" is not set to \"%s\"." : "Le paramètre PHP \"%s\" n'est pas \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Ajuster ce paramètre dans php.ini permettra à ownCloud de fonctionner à nouveau",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload est à \"%s\" alors que la valeur \"0\" est attendue",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Pour corriger ce problème mettez <code>mbstring.func_overload</code> à <code>0</code> dans votre php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs PHPdoc du code. Cela rendra plusieurs applications de base inaccessibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Les modules PHP ont été installés mais sont toujours indiqués comme manquants ?",
"Please ask your server administrator to restart the web server." : "Veuillez demander à votre administrateur serveur de redémarrer le serveur web.",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index b1757a0ca23..d0801954c1b 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -41,6 +41,7 @@
"File name is a reserved word" : "Ce nom de fichier est un mot réservé",
"File name contains at least one invalid character" : "Le nom de fichier contient un (des) caractère(s) non valide(s)",
"File name is too long" : "Nom de fichier trop long",
+ "Can't read file" : "Impossible de lire le fichier",
"App directory already exists" : "Le dossier de l'application existe déjà",
"Can't create app folder. Please fix permissions. %s" : "Impossible de créer le dossier de l'application. Corrigez les droits d'accès. %s",
"No source specified when installing app" : "Aucune source spécifiée pour installer l'application",
@@ -128,7 +129,9 @@
"PHP module %s not installed." : "Le module PHP %s n’est pas installé.",
"PHP setting \"%s\" is not set to \"%s\"." : "Le paramètre PHP \"%s\" n'est pas \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Ajuster ce paramètre dans php.ini permettra à ownCloud de fonctionner à nouveau",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload est à \"%s\" alors que la valeur \"0\" est attendue",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Pour corriger ce problème mettez <code>mbstring.func_overload</code> à <code>0</code> dans votre php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs PHPdoc du code. Cela rendra plusieurs applications de base inaccessibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Les modules PHP ont été installés mais sont toujours indiqués comme manquants ?",
"Please ask your server administrator to restart the web server." : "Veuillez demander à votre administrateur serveur de redémarrer le serveur web.",
diff --git a/lib/l10n/id.js b/lib/l10n/id.js
index 40da45a638f..afe6f97a182 100644
--- a/lib/l10n/id.js
+++ b/lib/l10n/id.js
@@ -41,8 +41,10 @@ OC.L10N.register(
"Empty filename is not allowed" : "Nama berkas kosong tidak diperbolehkan",
"Dot files are not allowed" : "Berkas titik tidak diperbolehkan",
"4-byte characters are not supported in file names" : "Karakter 4 byte tidak didukung dalam nama berkas",
+ "File name is a reserved word" : "Nama berkas merupakan kata yang disediakan",
"File name contains at least one invalid character" : "Nama berkas berisi setidaknya satu karakter yang tidak sah.",
"File name is too long" : "Nama berkas terlalu panjang",
+ "Can't read file" : "Tidak dapat membaca berkas",
"App directory already exists" : "Direktori Apl sudah ada",
"Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder apl. Silakan perbaiki perizinan. %s",
"No source specified when installing app" : "Tidak ada sumber yang ditentukan saat menginstal apl",
@@ -130,6 +132,9 @@ OC.L10N.register(
"PHP module %s not installed." : "Module PHP %s tidak terinstal.",
"PHP setting \"%s\" is not set to \"%s\"." : "Pengaturan PHP \"%s\" tidak diatur ke \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Menyesuaikan pengaturan ini dalam php.ini akan menyebabkan ownCloud berjalan kembali",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload diatur menjadi \"%s\" bukan nilai yang diharapkan \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Untuk memperbaiki masalah ini, atur <code>mbstring.func_overload</code> menjadi <code>0</code> pada berkas php.ini Anda",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Tampaknya PHP diatur untuk memotong inline doc blocks. Hal ini akan menyebabkan beberapa aplikasi inti menjadi tidak dapat diakses.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Modul PHP telah terinstal, tetapi mereka terlihat tidak ada?",
"Please ask your server administrator to restart the web server." : "Mohon minta administrator Anda untuk menjalankan ulang server web.",
@@ -139,6 +144,7 @@ OC.L10N.register(
"Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Pastikan bahwa Anda memiliki PostgreSQL >= 9 atau periksa log untuk informasi lebih lanjut tentang kesalahan",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mohon ubah perizinan menjadi 0770 sehingga direktori tersebut tidak dapat dilihat oleh pengguna lain.",
"Data directory (%s) is readable by other users" : "Direktori data (%s) dapat dibaca oleh pengguna lain",
+ "Data directory (%s) must be an absolute path" : "Direktori Data (%s) harus berupa lokasi lengkap",
"Check the value of \"datadirectory\" in your configuration" : "Periksa nilai \"datadirectory\" di konfigurasi Anda",
"Data directory (%s) is invalid" : "Direktori data (%s) tidak sah",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Mohon periksa apakah direktori data berisi sebuah berkas \".ocdata\" di direktori induknya.",
diff --git a/lib/l10n/id.json b/lib/l10n/id.json
index 90ab46561d2..e56619e28ca 100644
--- a/lib/l10n/id.json
+++ b/lib/l10n/id.json
@@ -39,8 +39,10 @@
"Empty filename is not allowed" : "Nama berkas kosong tidak diperbolehkan",
"Dot files are not allowed" : "Berkas titik tidak diperbolehkan",
"4-byte characters are not supported in file names" : "Karakter 4 byte tidak didukung dalam nama berkas",
+ "File name is a reserved word" : "Nama berkas merupakan kata yang disediakan",
"File name contains at least one invalid character" : "Nama berkas berisi setidaknya satu karakter yang tidak sah.",
"File name is too long" : "Nama berkas terlalu panjang",
+ "Can't read file" : "Tidak dapat membaca berkas",
"App directory already exists" : "Direktori Apl sudah ada",
"Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder apl. Silakan perbaiki perizinan. %s",
"No source specified when installing app" : "Tidak ada sumber yang ditentukan saat menginstal apl",
@@ -128,6 +130,9 @@
"PHP module %s not installed." : "Module PHP %s tidak terinstal.",
"PHP setting \"%s\" is not set to \"%s\"." : "Pengaturan PHP \"%s\" tidak diatur ke \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Menyesuaikan pengaturan ini dalam php.ini akan menyebabkan ownCloud berjalan kembali",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload diatur menjadi \"%s\" bukan nilai yang diharapkan \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Untuk memperbaiki masalah ini, atur <code>mbstring.func_overload</code> menjadi <code>0</code> pada berkas php.ini Anda",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Tampaknya PHP diatur untuk memotong inline doc blocks. Hal ini akan menyebabkan beberapa aplikasi inti menjadi tidak dapat diakses.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Modul PHP telah terinstal, tetapi mereka terlihat tidak ada?",
"Please ask your server administrator to restart the web server." : "Mohon minta administrator Anda untuk menjalankan ulang server web.",
@@ -137,6 +142,7 @@
"Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Pastikan bahwa Anda memiliki PostgreSQL >= 9 atau periksa log untuk informasi lebih lanjut tentang kesalahan",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mohon ubah perizinan menjadi 0770 sehingga direktori tersebut tidak dapat dilihat oleh pengguna lain.",
"Data directory (%s) is readable by other users" : "Direktori data (%s) dapat dibaca oleh pengguna lain",
+ "Data directory (%s) must be an absolute path" : "Direktori Data (%s) harus berupa lokasi lengkap",
"Check the value of \"datadirectory\" in your configuration" : "Periksa nilai \"datadirectory\" di konfigurasi Anda",
"Data directory (%s) is invalid" : "Direktori data (%s) tidak sah",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Mohon periksa apakah direktori data berisi sebuah berkas \".ocdata\" di direktori induknya.",
diff --git a/lib/l10n/nb_NO.js b/lib/l10n/nb_NO.js
index a23a53ee3ae..25503f21866 100644
--- a/lib/l10n/nb_NO.js
+++ b/lib/l10n/nb_NO.js
@@ -44,6 +44,7 @@ OC.L10N.register(
"File name is a reserved word" : "Filnavnet er et reservert ord",
"File name contains at least one invalid character" : "Filnavnet inneholder minst ett ulovlig tegn",
"File name is too long" : "Filnavnet er for langt",
+ "Can't read file" : "Kan ikke lese fil",
"App directory already exists" : "App-mappe finnes allerede",
"Can't create app folder. Please fix permissions. %s" : "Kan ikke opprette app-mappe. Vennligst ordne opp i tillatelser. %s",
"No source specified when installing app" : "Ingen kilde spesifisert ved installering av app",
@@ -84,6 +85,7 @@ OC.L10N.register(
"Set an admin password." : "Sett et admin-passord.",
"Can't create or write into the data directory %s" : "Kan ikke opprette eller skrive i datamappen %s",
"%s shared »%s« with you" : "%s delte »%s« med deg",
+ "%s via %s" : "%s via %s",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s feilet, fordi serveren ikke tillater delinger fra type %i",
"Sharing %s failed, because the file does not exist" : "Deling av %s feilet, fordi filen ikke eksisterer",
"You are not allowed to share %s" : "Du har ikke lov til å dele %s",
@@ -116,6 +118,8 @@ OC.L10N.register(
"A valid password must be provided" : "Oppgi et gyldig passord",
"The username is already being used" : "Brukernavnet er allerede i bruk",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen databasedrivere (sqlite, mysql, or postgresql) installert.",
+ "Microsoft Windows Platform is not supported" : "Microsoft Windows-plattform støttes ikke",
+ "Running ownCloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself. Find Linux packages as well as easy to deploy virtual machine images on <a href=\"%s\">%s</a>. For migrating existing installations to Linux you can find some tips and a migration script in <a href=\"%s\">our documentation</a>." : "Kjøring av ownCloud Server på Microsoft Windows-plattformen er ikke støttet. Vi foreslår at du bruker en Linux-server i en virtuell maskin hvis du ikke har mulighet til å migrere selve serveren. Du finner Linux-pakker og lett installerbare avbildninger for virtuelle maskiner på <a href=\"%s\">%s</a>. For å migrere eksisterende installasjoner til Linux finner du tips og et migrerings-script i <a href=\"%s\">dokumentasjonen vår</a>.",
"Cannot write into \"config\" directory" : "Kan ikke skrive i \"config\"-mappen",
"Cannot write into \"apps\" directory" : "Kan ikke skrive i \"apps\"-mappen",
"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Dette kan vanligvis ordnes ved %så gi web-serveren skrivetilgang til apps-mappen%s eller ved å deaktivere app-butikken i config-filen.",
@@ -128,6 +132,9 @@ OC.L10N.register(
"PHP module %s not installed." : "PHP-modul %s er ikke installert.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-innstilling \"%s\" er ikke satt til \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Endring av denne innstillingen i php.ini vil få ownCloud til å kjøre igjen.",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload er satt til \"%s\" i stedet for den forventede verdien \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Sett <code>mbstring.func_overload</code> til <code>0</code> in php.ini for å fikse dette problemet",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut for at PHP er satt opp til å fjerne innebygde doc blocks. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av en bufrer/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP-moduler har blitt installert, men de listes fortsatt som fraværende?",
"Please ask your server administrator to restart the web server." : "Be server-administratoren om å starte web-serveren på nytt.",
diff --git a/lib/l10n/nb_NO.json b/lib/l10n/nb_NO.json
index 4cdc3191b13..e495dc5ac7b 100644
--- a/lib/l10n/nb_NO.json
+++ b/lib/l10n/nb_NO.json
@@ -42,6 +42,7 @@
"File name is a reserved word" : "Filnavnet er et reservert ord",
"File name contains at least one invalid character" : "Filnavnet inneholder minst ett ulovlig tegn",
"File name is too long" : "Filnavnet er for langt",
+ "Can't read file" : "Kan ikke lese fil",
"App directory already exists" : "App-mappe finnes allerede",
"Can't create app folder. Please fix permissions. %s" : "Kan ikke opprette app-mappe. Vennligst ordne opp i tillatelser. %s",
"No source specified when installing app" : "Ingen kilde spesifisert ved installering av app",
@@ -82,6 +83,7 @@
"Set an admin password." : "Sett et admin-passord.",
"Can't create or write into the data directory %s" : "Kan ikke opprette eller skrive i datamappen %s",
"%s shared »%s« with you" : "%s delte »%s« med deg",
+ "%s via %s" : "%s via %s",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s feilet, fordi serveren ikke tillater delinger fra type %i",
"Sharing %s failed, because the file does not exist" : "Deling av %s feilet, fordi filen ikke eksisterer",
"You are not allowed to share %s" : "Du har ikke lov til å dele %s",
@@ -114,6 +116,8 @@
"A valid password must be provided" : "Oppgi et gyldig passord",
"The username is already being used" : "Brukernavnet er allerede i bruk",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen databasedrivere (sqlite, mysql, or postgresql) installert.",
+ "Microsoft Windows Platform is not supported" : "Microsoft Windows-plattform støttes ikke",
+ "Running ownCloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself. Find Linux packages as well as easy to deploy virtual machine images on <a href=\"%s\">%s</a>. For migrating existing installations to Linux you can find some tips and a migration script in <a href=\"%s\">our documentation</a>." : "Kjøring av ownCloud Server på Microsoft Windows-plattformen er ikke støttet. Vi foreslår at du bruker en Linux-server i en virtuell maskin hvis du ikke har mulighet til å migrere selve serveren. Du finner Linux-pakker og lett installerbare avbildninger for virtuelle maskiner på <a href=\"%s\">%s</a>. For å migrere eksisterende installasjoner til Linux finner du tips og et migrerings-script i <a href=\"%s\">dokumentasjonen vår</a>.",
"Cannot write into \"config\" directory" : "Kan ikke skrive i \"config\"-mappen",
"Cannot write into \"apps\" directory" : "Kan ikke skrive i \"apps\"-mappen",
"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Dette kan vanligvis ordnes ved %så gi web-serveren skrivetilgang til apps-mappen%s eller ved å deaktivere app-butikken i config-filen.",
@@ -126,6 +130,9 @@
"PHP module %s not installed." : "PHP-modul %s er ikke installert.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-innstilling \"%s\" er ikke satt til \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Endring av denne innstillingen i php.ini vil få ownCloud til å kjøre igjen.",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload er satt til \"%s\" i stedet for den forventede verdien \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Sett <code>mbstring.func_overload</code> til <code>0</code> in php.ini for å fikse dette problemet",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut for at PHP er satt opp til å fjerne innebygde doc blocks. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av en bufrer/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP-moduler har blitt installert, men de listes fortsatt som fraværende?",
"Please ask your server administrator to restart the web server." : "Be server-administratoren om å starte web-serveren på nytt.",
diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js
index dc78f0623f3..8e4c9660328 100644
--- a/lib/l10n/nl.js
+++ b/lib/l10n/nl.js
@@ -132,7 +132,9 @@ OC.L10N.register(
"PHP module %s not installed." : "PHP module %s niet geïnstalleerd.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP instelling \"%s\" staat niet op \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Het in php.ini bijstellen hiervan laat ownCloud weer werken",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload is ingesteld op \"%s\" in plaats van op de verwachte waarde \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Om dit op te lossen stel <code>mbstring.func_overload</code> in op <code>0</code> in uw php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP modules zijn geïnstalleerd, maar worden ze nog steeds als ontbrekend aangegeven?",
"Please ask your server administrator to restart the web server." : "Vraag uw beheerder de webserver opnieuw op te starten.",
diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json
index 4fd77148853..4e22238c1a9 100644
--- a/lib/l10n/nl.json
+++ b/lib/l10n/nl.json
@@ -130,7 +130,9 @@
"PHP module %s not installed." : "PHP module %s niet geïnstalleerd.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP instelling \"%s\" staat niet op \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Het in php.ini bijstellen hiervan laat ownCloud weer werken",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload is ingesteld op \"%s\" in plaats van op de verwachte waarde \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Om dit op te lossen stel <code>mbstring.func_overload</code> in op <code>0</code> in uw php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP modules zijn geïnstalleerd, maar worden ze nog steeds als ontbrekend aangegeven?",
"Please ask your server administrator to restart the web server." : "Vraag uw beheerder de webserver opnieuw op te starten.",
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index 98b1eb58814..ffdbedb9660 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -129,7 +129,9 @@ OC.L10N.register(
"PHP module %s not installed." : "Módulo PHP %s não instalado.",
"PHP setting \"%s\" is not set to \"%s\"." : "Configurações \"%s\" PHP não está configurado para \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Ajustando esta configuração no php.ini irá fazer o ownCloud rodar novamente",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está definido para \"%s\" em vez do valor esperado \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para corrigir esse problema defina <code>mbstring.func_overload</code> para <code>0</code> em seu php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está, aparentemente, configurado para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessíveis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Módulos do PHP foram instalados, mas eles ainda estão listados como desaparecidos?",
"Please ask your server administrator to restart the web server." : "Por favor, peça ao seu administrador do servidor para reiniciar o servidor web.",
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index 16558e8b7a7..50f61e2a627 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -127,7 +127,9 @@
"PHP module %s not installed." : "Módulo PHP %s não instalado.",
"PHP setting \"%s\" is not set to \"%s\"." : "Configurações \"%s\" PHP não está configurado para \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Ajustando esta configuração no php.ini irá fazer o ownCloud rodar novamente",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está definido para \"%s\" em vez do valor esperado \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para corrigir esse problema defina <code>mbstring.func_overload</code> para <code>0</code> em seu php.ini",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está, aparentemente, configurado para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessíveis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Módulos do PHP foram instalados, mas eles ainda estão listados como desaparecidos?",
"Please ask your server administrator to restart the web server." : "Por favor, peça ao seu administrador do servidor para reiniciar o servidor web.",
diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js
index 69ae90a8364..006b907f56d 100644
--- a/lib/l10n/uk.js
+++ b/lib/l10n/uk.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"File name is a reserved word" : "Ім’я файлу є зарезервованим словом",
"File name contains at least one invalid character" : "Ім’я файлу містить принаймні один некоректний символ",
"File name is too long" : "Ім’я файлу занадто довге",
+ "Can't read file" : "Не можливо прочитати файл",
"App directory already exists" : "Тека додатку вже існує",
"Can't create app folder. Please fix permissions. %s" : "Неможливо створити теку додатку. Будь ласка, виправте права доступу. %s",
"No source specified when installing app" : "Не вказано джерело при встановлені додатку",
@@ -128,6 +129,7 @@ OC.L10N.register(
"PHP module %s not installed." : "%s модуль PHP не встановлено.",
"PHP setting \"%s\" is not set to \"%s\"." : "Параметр PHP \"%s\" не встановлено в \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Установка цього параметру в php.ini дозволяє запуститися ownCloud знову.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Схоже, що PHP налаштовано на вичищення блоків вбудованої документації. Це зробить кілька основних додатків недоступними.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Це, ймовірно, обумовлено використанням кеша/прискорювача такого як Zend OPcache або eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Модулі PHP були встановлені, але вони все ще перераховані як відсутні?",
"Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.",
diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json
index e24bc37501b..1050622dd2b 100644
--- a/lib/l10n/uk.json
+++ b/lib/l10n/uk.json
@@ -39,6 +39,7 @@
"File name is a reserved word" : "Ім’я файлу є зарезервованим словом",
"File name contains at least one invalid character" : "Ім’я файлу містить принаймні один некоректний символ",
"File name is too long" : "Ім’я файлу занадто довге",
+ "Can't read file" : "Не можливо прочитати файл",
"App directory already exists" : "Тека додатку вже існує",
"Can't create app folder. Please fix permissions. %s" : "Неможливо створити теку додатку. Будь ласка, виправте права доступу. %s",
"No source specified when installing app" : "Не вказано джерело при встановлені додатку",
@@ -126,6 +127,7 @@
"PHP module %s not installed." : "%s модуль PHP не встановлено.",
"PHP setting \"%s\" is not set to \"%s\"." : "Параметр PHP \"%s\" не встановлено в \"%s\".",
"Adjusting this setting in php.ini will make ownCloud run again" : "Установка цього параметру в php.ini дозволяє запуститися ownCloud знову.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Схоже, що PHP налаштовано на вичищення блоків вбудованої документації. Це зробить кілька основних додатків недоступними.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Це, ймовірно, обумовлено використанням кеша/прискорювача такого як Zend OPcache або eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Модулі PHP були встановлені, але вони все ще перераховані як відсутні?",
"Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.",
diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php
index 8501fc69ad4..a11e4ee05b3 100644
--- a/lib/private/appframework/dependencyinjection/dicontainer.php
+++ b/lib/private/appframework/dependencyinjection/dicontainer.php
@@ -291,7 +291,8 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$this->registerService('CORSMiddleware', function($c) {
return new CORSMiddleware(
$c['Request'],
- $c['ControllerMethodReflector']
+ $c['ControllerMethodReflector'],
+ $c['OCP\IUserSession']
);
});
@@ -306,8 +307,8 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$middleWares = &$this->middleWares;
$this->registerService('MiddlewareDispatcher', function($c) use (&$middleWares) {
$dispatcher = new MiddlewareDispatcher();
- $dispatcher->registerMiddleware($c['SecurityMiddleware']);
$dispatcher->registerMiddleware($c['CORSMiddleware']);
+ $dispatcher->registerMiddleware($c['SecurityMiddleware']);
foreach($middleWares as $middleWare) {
$dispatcher->registerMiddleware($c[$middleWare]);
diff --git a/lib/private/appframework/middleware/security/corsmiddleware.php b/lib/private/appframework/middleware/security/corsmiddleware.php
index 983742858db..600eb2318cf 100644
--- a/lib/private/appframework/middleware/security/corsmiddleware.php
+++ b/lib/private/appframework/middleware/security/corsmiddleware.php
@@ -24,30 +24,69 @@ namespace OC\AppFramework\Middleware\Security;
use OC\AppFramework\Utility\ControllerMethodReflector;
use OCP\IRequest;
+use OCP\IUserSession;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
/**
- * This middleware sets the correct CORS headers on a response if the
+ * This middleware sets the correct CORS headers on a response if the
* controller has the @CORS annotation. This is needed for webapps that want
- * to access an API and dont run on the same domain, see
+ * to access an API and dont run on the same domain, see
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
*/
class CORSMiddleware extends Middleware {
+ /**
+ * @var IRequest
+ */
private $request;
+
+ /**
+ * @var ControllerMethodReflector
+ */
private $reflector;
/**
+ * @var IUserSession
+ */
+ private $session;
+
+ /**
* @param IRequest $request
* @param ControllerMethodReflector $reflector
+ * @param IUserSession $session
*/
- public function __construct(IRequest $request,
- ControllerMethodReflector $reflector) {
+ public function __construct(IRequest $request,
+ ControllerMethodReflector $reflector,
+ IUserSession $session) {
$this->request = $request;
$this->reflector = $reflector;
+ $this->session = $session;
}
+ /**
+ * This is being run in normal order before the controller is being
+ * called which allows several modifications and checks
+ *
+ * @param Controller $controller the controller that is being called
+ * @param string $methodName the name of the method that will be called on
+ * the controller
+ * @since 6.0.0
+ */
+ public function beforeController($controller, $methodName){
+ // ensure that @CORS annotated API routes are not used in conjunction
+ // with session authentication since this enables CSRF attack vectors
+ if ($this->reflector->hasAnnotation('CORS') &&
+ !$this->reflector->hasAnnotation('PublicPage')) {
+ $user = $this->request->server['PHP_AUTH_USER'];
+ $pass = $this->request->server['PHP_AUTH_PW'];
+
+ $this->session->logout();
+ if(!$this->session->login($user, $pass)) {
+ throw new SecurityException('CORS requires basic auth');
+ }
+ }
+ }
/**
* This is being run after a successful controllermethod call and allows
@@ -65,7 +104,7 @@ class CORSMiddleware extends Middleware {
if(isset($this->request->server['HTTP_ORIGIN']) &&
$this->reflector->hasAnnotation('CORS')) {
- // allow credentials headers must not be true or CSRF is possible
+ // allow credentials headers must not be true or CSRF is possible
// otherwise
foreach($response->getHeaders() as $header => $value ) {
if(strtolower($header) === 'access-control-allow-credentials' &&
diff --git a/lib/private/apphelper.php b/lib/private/apphelper.php
index 5da080ad16c..c4ddc1b077e 100644
--- a/lib/private/apphelper.php
+++ b/lib/private/apphelper.php
@@ -23,7 +23,8 @@
namespace OC;
/**
- * TODO: Description
+ * Class AppHelper
+ * @deprecated 8.1.0
*/
class AppHelper implements \OCP\IHelper {
/**
@@ -31,6 +32,7 @@ class AppHelper implements \OCP\IHelper {
* installed
* @param string $url the url that should be fetched
* @return string the content of the webpage
+ * @deprecated 8.1.0 Use \OCP\IServerContainer::getHTTPClientService
*/
public function getUrlContent($url) {
return \OC_Util::getUrlContent($url);
diff --git a/lib/private/encryption/keys/storage.php b/lib/private/encryption/keys/storage.php
index 6aa00c5b5ee..f90548fd319 100644
--- a/lib/private/encryption/keys/storage.php
+++ b/lib/private/encryption/keys/storage.php
@@ -70,7 +70,8 @@ class Storage implements IStorage {
* @inheritdoc
*/
public function getFileKey($path, $keyId, $encryptionModuleId) {
- $keyDir = $this->getFileKeyDir($encryptionModuleId, $path);
+ $realFile = $this->util->stripPartialFileExtension($path);
+ $keyDir = $this->getFileKeyDir($encryptionModuleId, $realFile);
return $this->getKey($keyDir . $keyId);
}
diff --git a/lib/private/files/stream/encryption.php b/lib/private/files/stream/encryption.php
index f2f5b9c9af7..22d230e7c86 100644
--- a/lib/private/files/stream/encryption.php
+++ b/lib/private/files/stream/encryption.php
@@ -130,6 +130,7 @@ class Encryption extends Wrapper {
* @param int $size
* @param int $unencryptedSize
* @param int $headerSize
+ * @param string $wrapper stream wrapper class
* @return resource
*
* @throws \BadMethodCallException
@@ -144,7 +145,8 @@ class Encryption extends Wrapper {
$mode,
$size,
$unencryptedSize,
- $headerSize) {
+ $headerSize,
+ $wrapper = 'OC\Files\Stream\Encryption') {
$context = stream_context_create(array(
'ocencryption' => array(
@@ -164,7 +166,7 @@ class Encryption extends Wrapper {
)
));
- return self::wrapSource($source, $mode, $context, 'ocencryption', 'OC\Files\Stream\Encryption');
+ return self::wrapSource($source, $mode, $context, 'ocencryption', $wrapper);
}
/**
@@ -271,7 +273,7 @@ class Encryption extends Wrapper {
$result = '';
-// $count = min($count, $this->unencryptedSize - $this->position);
+ $count = min($count, $this->unencryptedSize - $this->position);
while ($count > 0) {
$remainingLength = $count;
// update the cache of the current block
@@ -309,7 +311,7 @@ class Encryption extends Wrapper {
// flush will start writing there when the position moves to another block
$positionInFile = (int)floor($this->position / $this->unencryptedBlockSize) *
$this->util->getBlockSize() + $this->headerSize;
- $resultFseek = parent::stream_seek($positionInFile);
+ $resultFseek = $this->parentStreamSeek($positionInFile);
// only allow writes on seekable streams, or at the end of the encrypted stream
if (!($this->readOnly) && ($resultFseek || $positionInFile === $this->size)) {
@@ -376,10 +378,10 @@ class Encryption extends Wrapper {
* $this->util->getBlockSize() + $this->headerSize;
$oldFilePosition = parent::stream_tell();
- if (parent::stream_seek($newFilePosition)) {
- parent::stream_seek($oldFilePosition);
+ if ($this->parentStreamSeek($newFilePosition)) {
+ $this->parentStreamSeek($oldFilePosition);
$this->flush();
- parent::stream_seek($newFilePosition);
+ $this->parentStreamSeek($newFilePosition);
$this->position = $newPosition;
$return = true;
}
@@ -410,9 +412,18 @@ class Encryption extends Wrapper {
// we are handling that separately here and we don't want to
// get into an infinite loop
$encrypted = $this->encryptionModule->encrypt($this->cache);
- parent::stream_write($encrypted);
+ $bytesWritten = parent::stream_write($encrypted);
$this->writeFlag = false;
- $this->size = max($this->size, parent::stream_tell());
+ // Check whether the write concerns the last block
+ // If so then update the encrypted filesize
+ // Note that the unencrypted pointer and filesize are NOT yet updated when flush() is called
+ // We recalculate the encrypted filesize as we do not know the context of calling flush()
+ $completeBlocksInFile=(int)floor($this->unencryptedSize/$this->unencryptedBlockSize);
+ if ($completeBlocksInFile === (int)floor($this->position/$this->unencryptedBlockSize)) {
+ $this->size = $this->util->getBlockSize() * $completeBlocksInFile;
+ $this->size += $bytesWritten;
+ $this->size += $this->headerSize;
+ }
}
// always empty the cache (otherwise readCache() will not fill it with the new block)
$this->cache = '';
@@ -449,4 +460,14 @@ class Encryption extends Wrapper {
parent::stream_read($this->headerSize);
}
+ /**
+ * call stream_seek() from parent class
+ *
+ * @param integer $position
+ * @return bool
+ */
+ protected function parentStreamSeek($position) {
+ return parent::stream_seek($position);
+ }
+
}
diff --git a/lib/private/httphelper.php b/lib/private/httphelper.php
index f7984a72ebb..9d9edb6a351 100644
--- a/lib/private/httphelper.php
+++ b/lib/private/httphelper.php
@@ -102,7 +102,13 @@ class HTTPHelper {
$client = $this->clientService->newClient();
try {
- $response = $client->post($url, ['body' => $fields]);
+ $response = $client->post(
+ $url,
+ [
+ 'body' => $fields,
+ 'connect_timeout' => 10,
+ ]
+ );
} catch (\Exception $e) {
return ['success' => false, 'result' => $e->getMessage()];
}
diff --git a/lib/private/util.php b/lib/private/util.php
index 4470006b90c..c2f7d0d1a87 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -385,10 +385,23 @@ class OC_Util {
$session->set('OC_Version', $OC_Version);
/** @var $OC_VersionString string */
$session->set('OC_VersionString', $OC_VersionString);
- /** @var $OC_Channel string */
- $session->set('OC_Channel', $OC_Channel);
/** @var $OC_Build string */
$session->set('OC_Build', $OC_Build);
+
+ // Allow overriding update channel
+
+ if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
+ $channel = \OC::$server->getAppConfig()->getValue('core', 'OC_Channel');
+ } else {
+ $channel = $OC_Channel;
+ }
+
+ if (!is_null($channel)) {
+ $session->set('OC_Channel', $channel);
+ } else {
+ /** @var $OC_Channel string */
+ $session->set('OC_Channel', $OC_Channel);
+ }
}
}
diff --git a/lib/public/ihelper.php b/lib/public/ihelper.php
index a42dbf5ec61..41fe3f57c0a 100644
--- a/lib/public/ihelper.php
+++ b/lib/public/ihelper.php
@@ -33,6 +33,7 @@ namespace OCP;
/**
* Functions that don't have any specific interface to place
* @since 6.0.0
+ * @deprecated 8.1.0
*/
interface IHelper {
/**
@@ -41,6 +42,7 @@ interface IHelper {
* @param string $url the url that should be fetched
* @return string the content of the webpage
* @since 6.0.0
+ * @deprecated 8.1.0 Use \OCP\IServerContainer::getHTTPClientService
*/
public function getUrlContent($url);
}
diff --git a/lib/public/util.php b/lib/public/util.php
index 6eb5c6034c1..f032d0a5431 100644
--- a/lib/public/util.php
+++ b/lib/public/util.php
@@ -69,6 +69,24 @@ class Util {
public static function getVersion() {
return(\OC_Util::getVersion());
}
+
+ /**
+ * Set current update channel
+ * @param string $channel
+ */
+ public static function setChannel($channel) {
+ //Flush timestamp to reload version.php
+ \OC::$server->getSession()->set('OC_Version_Timestamp', 0);
+ return \OC::$server->getAppConfig()->setValue('core', 'OC_Channel', $channel);
+ }
+
+ /**
+ * Get current update channel
+ * @return string
+ */
+ public static function getChannel() {
+ return \OC_Util::getChannel();
+ }
/**
* send an email
diff --git a/settings/l10n/de.js b/settings/l10n/de.js
index 0927d5b50fe..10563cf0c3f 100644
--- a/settings/l10n/de.js
+++ b/settings/l10n/de.js
@@ -147,6 +147,7 @@ OC.L10N.register(
"Enable encryption" : "Verschlüsselung aktivieren",
"No encryption module loaded, please enable an encryption module in the app menu." : "Kein Verschlüsselungs-Modul geladen, bitte aktiviere ein Verschlüsselungs-Modul im Anwendungs-Menü.",
"Select default encryption module:" : "Bite Standard-Verschlüsselungs-Modul auswählen:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du musst Deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren. Bitte aktiviere das \"Default Encryption Module\" und rufe 'occ encryption:migrate' auf.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"This is used for sending out notifications." : "Dies wird zum Senden von Benachrichtigungen verwendet.",
diff --git a/settings/l10n/de.json b/settings/l10n/de.json
index 6d05e578bf5..6db4eabf736 100644
--- a/settings/l10n/de.json
+++ b/settings/l10n/de.json
@@ -145,6 +145,7 @@
"Enable encryption" : "Verschlüsselung aktivieren",
"No encryption module loaded, please enable an encryption module in the app menu." : "Kein Verschlüsselungs-Modul geladen, bitte aktiviere ein Verschlüsselungs-Modul im Anwendungs-Menü.",
"Select default encryption module:" : "Bite Standard-Verschlüsselungs-Modul auswählen:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du musst Deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren. Bitte aktiviere das \"Default Encryption Module\" und rufe 'occ encryption:migrate' auf.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"This is used for sending out notifications." : "Dies wird zum Senden von Benachrichtigungen verwendet.",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index 25dd505eafa..a5d05a3084e 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -147,6 +147,7 @@ OC.L10N.register(
"Enable encryption" : "Verschlüsselung aktivieren",
"No encryption module loaded, please enable an encryption module in the app menu." : "Kein Verschlüsselungs-Modul geladen, bitte aktiviere ein Verschlüsselungs-Modul im Anwendungs-Menü.",
"Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren. Bitte aktivieren Sie das \"Default Encryption Module\" und rufen Sie 'occ encryption:migrate' auf.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"This is used for sending out notifications." : "Dies wird für das Senden von Benachrichtigungen verwendet.",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index feb20f36972..42758546e93 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -145,6 +145,7 @@
"Enable encryption" : "Verschlüsselung aktivieren",
"No encryption module loaded, please enable an encryption module in the app menu." : "Kein Verschlüsselungs-Modul geladen, bitte aktiviere ein Verschlüsselungs-Modul im Anwendungs-Menü.",
"Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren. Bitte aktivieren Sie das \"Default Encryption Module\" und rufen Sie 'occ encryption:migrate' auf.",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.",
"Start migration" : "Migration beginnen",
"This is used for sending out notifications." : "Dies wird für das Senden von Benachrichtigungen verwendet.",
diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js
index fe80558e76a..25241af30d2 100644
--- a/settings/l10n/fr.js
+++ b/settings/l10n/fr.js
@@ -147,6 +147,7 @@ OC.L10N.register(
"Enable encryption" : "Activer le chiffrement",
"No encryption module loaded, please enable an encryption module in the app menu." : "Aucun module de chiffrement n'est chargé. Merci d'activer un module de chiffrement dans le menu des applications.",
"Select default encryption module:" : "Sélectionnez le module de chiffrement par défaut :",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez activer \"ownCloud Default Encryption Module\" et exécuter 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.",
"Start migration" : "Démarrer la migration",
"This is used for sending out notifications." : "Ceci est utilisé pour l'envoi des notifications.",
diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json
index 32dd9d0bde1..355c5f727f5 100644
--- a/settings/l10n/fr.json
+++ b/settings/l10n/fr.json
@@ -145,6 +145,7 @@
"Enable encryption" : "Activer le chiffrement",
"No encryption module loaded, please enable an encryption module in the app menu." : "Aucun module de chiffrement n'est chargé. Merci d'activer un module de chiffrement dans le menu des applications.",
"Select default encryption module:" : "Sélectionnez le module de chiffrement par défaut :",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez activer \"ownCloud Default Encryption Module\" et exécuter 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.",
"Start migration" : "Démarrer la migration",
"This is used for sending out notifications." : "Ceci est utilisé pour l'envoi des notifications.",
diff --git a/settings/l10n/gl.js b/settings/l10n/gl.js
index cfffdd70507..44619310294 100644
--- a/settings/l10n/gl.js
+++ b/settings/l10n/gl.js
@@ -226,7 +226,7 @@ OC.L10N.register(
"You are member of the following groups:" : "Vostede é membro dos seguintes grupos:",
"Profile picture" : "Imaxe do perfil",
"Upload new" : "Novo envío",
- "Select new from Files" : "Seleccione unha nova de ficheiros",
+ "Select new from Files" : "Seleccionar outra nova desde Ficheiros",
"Remove image" : "Retirar a imaxe",
"Either png or jpg. Ideally square but you will be able to crop it." : "Calquera png ou jpg. É preferíbel que sexa cadrada, mais poderá recortala.",
"Your avatar is provided by your original account." : "O seu avatar é fornecido pola súa conta orixinal.",
diff --git a/settings/l10n/gl.json b/settings/l10n/gl.json
index 40ec3fa453f..beb68e28559 100644
--- a/settings/l10n/gl.json
+++ b/settings/l10n/gl.json
@@ -224,7 +224,7 @@
"You are member of the following groups:" : "Vostede é membro dos seguintes grupos:",
"Profile picture" : "Imaxe do perfil",
"Upload new" : "Novo envío",
- "Select new from Files" : "Seleccione unha nova de ficheiros",
+ "Select new from Files" : "Seleccionar outra nova desde Ficheiros",
"Remove image" : "Retirar a imaxe",
"Either png or jpg. Ideally square but you will be able to crop it." : "Calquera png ou jpg. É preferíbel que sexa cadrada, mais poderá recortala.",
"Your avatar is provided by your original account." : "O seu avatar é fornecido pola súa conta orixinal.",
diff --git a/settings/l10n/nb_NO.js b/settings/l10n/nb_NO.js
index aac2edc5dde..4c85e589ad9 100644
--- a/settings/l10n/nb_NO.js
+++ b/settings/l10n/nb_NO.js
@@ -3,8 +3,10 @@ OC.L10N.register(
{
"Security & setup warnings" : "Advarsler om sikkerhet og oppsett",
"Sharing" : "Deling",
+ "Server-side encryption" : "Serverkryptering",
"External Storage" : "Ekstern lagring",
"Cron" : "Cron",
+ "Email server" : "E-postserver",
"Log" : "Logg",
"Tips & tricks" : "Tips og triks",
"Updates" : "Oppdateringer",
@@ -26,6 +28,8 @@ OC.L10N.register(
"Unable to change password" : "Kunne ikke endre passord",
"Enabled" : "Aktiv",
"Not enabled" : "Ikke aktivert",
+ "A problem occurred, please check your log files (Error: %s)" : "Det oppstod et problem. Sjekk loggfilene (Feil: %s)",
+ "Migration Completed" : "Migrering ferdig",
"Group already exists." : "Gruppe finnes allerede.",
"Unable to add group." : "Kan ikke legge til gruppe.",
"Unable to delete group." : "Kan ikke slette gruppe.",
@@ -46,8 +50,13 @@ OC.L10N.register(
"Email saved" : "Epost lagret",
"Are you really sure you want add \"{domain}\" as trusted domain?" : "Ønsker du virkelig å legge til \"{domain}\" som tiltrodd domene?",
"Add trusted domain" : "Legg til et tiltrodd domene",
+ "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til migreringen er ferdig.",
+ "Migration started …" : "Migrering startet ..",
"Sending..." : "Sender...",
"All" : "Alle",
+ "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offisielle apper utvikles av og innenfor ownCloud-fellesskapet. De tilbyr funksjonalitet som er sentral for ownCloud og er forberedt for produksjonsbruk.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Godkjente apper er utviklet av pålitelige utviklere og har gjennomgått en rask sikkerhetssjekk. De vedlikeholdes aktivt i et åpent kode-depot og utviklerne anser dem for å være stabile for tilfeldig til normal bruk.",
+ "This app is not checked for security issues and is new or known to be unstable. Install on your own risk." : "Denne appen er ikke sjekket for sikkerhetsproblemer og er ny eller ansett for å være ustabil. Installer på egen risiko.",
"Please wait...." : "Vennligst vent...",
"Error while disabling app" : "Deaktivering av app feilet",
"Disable" : "Deaktiver ",
@@ -67,6 +76,7 @@ OC.L10N.register(
"Strong password" : "Sterkt passord",
"Valid until {date}" : "Gyldig til {date}",
"Delete" : "Slett",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Det oppstod en feil. Vennligst last opp et ASCII-kodet PEM-sertifikat.",
"Groups" : "Grupper",
"Unable to delete {objName}" : "Kan ikke slette {objName}",
"Error creating group" : "Feil ved oppretting av gruppe",
@@ -97,6 +107,8 @@ OC.L10N.register(
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.",
+ "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Sjekk installasjonsdokumentasjonen for notiser om PHP-konfigurering og om konfigurering av serveren, spesielt ved bruk av php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Den skrivebeskyttede konfigurasjonen er blitt aktivert. Dette forhindrer setting av visse konfigureringer via web-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut for at PHP er satt opp til å fjerne innebygde doc blocks. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av en bufrer/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
@@ -109,6 +121,7 @@ OC.L10N.register(
"If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Hvis installasjonen din ikke er installert i roten av domenet og bruker systemets cron, kan det bli problemer med URL-genereringen. For å unngå disse problemene, sett \"overwrite.cli.url\" i filen config.php til web-roten for installasjonen din (Foreslått: \"%s\")",
"It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Det var ikke mulig å kjøre cron-jobben vi CLI. Følgende tekniske feil oppstod:",
"Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Vennligst dobbeltsjekk <a target=\"_blank\" href=\"%s\">Installasjonsveiledningene ↗</a> og se etter feil og advarsler i <a href=\"#log-section\">loggen</a>.",
+ "Open documentation" : "Åpne dokumentasjonen",
"Allow apps to use the Share API" : "Tillat apper å bruke API for Deling",
"Allow users to share via link" : "Tillat brukere å dele via lenke",
"Enforce password protection" : "Krev passordbeskyttelse",
@@ -129,6 +142,14 @@ OC.L10N.register(
"Execute one task with each page loaded" : "Utfør en oppgave med hver side som blir lastet",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php er registrert i en webcron-tjeneste for å kalle cron.php hvert 15. minutt over http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Bruk systemets cron-tjeneste til å kalle cron.php hvert 15. minutt.",
+ "Enable server-side encryption" : "Aktiver serverkryptering",
+ "Encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date. This is the final warning: Do you really want to enable encryption?" : "Kryptering er en enveisprosess. Når kryptering er aktivert, vil alle filer fra det tidspunktet av bli kryptert på serveren og det vil ikke være mulig å deaktivere kryptering senere. Dette er siste advarsel: Vil du virkelig aktivere kryptering?",
+ "Enable encryption" : "Aktiver kryptering",
+ "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul er lastet. Aktiver en krypteringsmodul i app-menyen.",
+ "Select default encryption module:" : "Velg standard krypteringsmodul:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye. Vennligst aktiver \"Standard krypteringsmodul\" og kjør 'occ encryption:migrate'",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.",
+ "Start migration" : "Start migrering",
"This is used for sending out notifications." : "Dette brukes for utsending av varsler.",
"Send mode" : "Sendemåte",
"Encryption" : "Kryptering",
@@ -160,6 +181,8 @@ OC.L10N.register(
"Hardening and security guidance" : "Herding og sikkerhetsveiledning",
"Version" : "Versjon",
"Developer documentation" : "Utviklerdokumentasjon",
+ "Experimental applications ahead" : "Eksperimentelle applikasjoner forut",
+ "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Eksperimentelle apper er ikke sjekket for sikkerhetsproblemer, nye eller anses som ustabile og under travel utvikling. Å installere slike apper kan forårsake tap av data eller sikkerhetsbrudd.",
"by" : "av",
"licensed" : "lisensiert",
"Documentation:" : "Dokumentasjon:",
@@ -171,11 +194,17 @@ OC.L10N.register(
"Update to %s" : "Oppdater til %s",
"Enable only for specific groups" : "Aktiver kun for visse grupper",
"Uninstall App" : "Avinstaller app",
+ "Enable experimental apps" : "Aktiver eksperimentelle apper",
"No apps found for your version" : "Ingen apper funnet for din versjon",
"Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Hei,<br><br>vil bare informere om at du nå har en %s-konto.<br><br>Brukernavnet ditt: %s<br>Gå dit: <a href=\"%s\">%s</a><br><br>",
"Cheers!" : "Ha det!",
"Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hei,\n\nVil bare informere om at du nå har en %s-konto.\n\nBrukernavnet ditt: %s\nGå dit: %s\n\n",
+ "User documentation" : "Brukerdokumentasjon",
+ "Administrator documentation" : "Administratordokumentasjon",
+ "Online documentation" : "Elektronisk dokumentasjon",
"Forum" : "Forum",
+ "Issue tracker" : "Problemsporing",
+ "Commercial support" : "Forretningsstøtte",
"Get the apps to sync your files" : "Hent apper som synkroniserer filene dine",
"Desktop client" : "Skrivebordsklient",
"Android app" : "Android-app",
@@ -199,7 +228,7 @@ OC.L10N.register(
"Upload new" : "Last opp nytt",
"Select new from Files" : "Velg nytt fra Filer",
"Remove image" : "Fjern bilde",
- "Either png or jpg. Ideally square but you will be able to crop it." : "Enten png eller jpg. Helst kvadratisk men du kan beskjære det.",
+ "Either png or jpg. Ideally square but you will be able to crop it." : "Enten png eller jpg. Helst kvadratisk, men du kan beskjære det.",
"Your avatar is provided by your original account." : "Avataren din kommer fra din opprinnelige konto.",
"Cancel" : "Avbryt",
"Choose as profile image" : "Velg som profilbilde",
diff --git a/settings/l10n/nb_NO.json b/settings/l10n/nb_NO.json
index 94ec9d09438..30dfcec7418 100644
--- a/settings/l10n/nb_NO.json
+++ b/settings/l10n/nb_NO.json
@@ -1,8 +1,10 @@
{ "translations": {
"Security & setup warnings" : "Advarsler om sikkerhet og oppsett",
"Sharing" : "Deling",
+ "Server-side encryption" : "Serverkryptering",
"External Storage" : "Ekstern lagring",
"Cron" : "Cron",
+ "Email server" : "E-postserver",
"Log" : "Logg",
"Tips & tricks" : "Tips og triks",
"Updates" : "Oppdateringer",
@@ -24,6 +26,8 @@
"Unable to change password" : "Kunne ikke endre passord",
"Enabled" : "Aktiv",
"Not enabled" : "Ikke aktivert",
+ "A problem occurred, please check your log files (Error: %s)" : "Det oppstod et problem. Sjekk loggfilene (Feil: %s)",
+ "Migration Completed" : "Migrering ferdig",
"Group already exists." : "Gruppe finnes allerede.",
"Unable to add group." : "Kan ikke legge til gruppe.",
"Unable to delete group." : "Kan ikke slette gruppe.",
@@ -44,8 +48,13 @@
"Email saved" : "Epost lagret",
"Are you really sure you want add \"{domain}\" as trusted domain?" : "Ønsker du virkelig å legge til \"{domain}\" som tiltrodd domene?",
"Add trusted domain" : "Legg til et tiltrodd domene",
+ "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til migreringen er ferdig.",
+ "Migration started …" : "Migrering startet ..",
"Sending..." : "Sender...",
"All" : "Alle",
+ "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offisielle apper utvikles av og innenfor ownCloud-fellesskapet. De tilbyr funksjonalitet som er sentral for ownCloud og er forberedt for produksjonsbruk.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Godkjente apper er utviklet av pålitelige utviklere og har gjennomgått en rask sikkerhetssjekk. De vedlikeholdes aktivt i et åpent kode-depot og utviklerne anser dem for å være stabile for tilfeldig til normal bruk.",
+ "This app is not checked for security issues and is new or known to be unstable. Install on your own risk." : "Denne appen er ikke sjekket for sikkerhetsproblemer og er ny eller ansett for å være ustabil. Installer på egen risiko.",
"Please wait...." : "Vennligst vent...",
"Error while disabling app" : "Deaktivering av app feilet",
"Disable" : "Deaktiver ",
@@ -65,6 +74,7 @@
"Strong password" : "Sterkt passord",
"Valid until {date}" : "Gyldig til {date}",
"Delete" : "Slett",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Det oppstod en feil. Vennligst last opp et ASCII-kodet PEM-sertifikat.",
"Groups" : "Grupper",
"Unable to delete {objName}" : "Kan ikke slette {objName}",
"Error creating group" : "Feil ved oppretting av gruppe",
@@ -95,6 +105,8 @@
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.",
+ "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Sjekk installasjonsdokumentasjonen for notiser om PHP-konfigurering og om konfigurering av serveren, spesielt ved bruk av php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Den skrivebeskyttede konfigurasjonen er blitt aktivert. Dette forhindrer setting av visse konfigureringer via web-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut for at PHP er satt opp til å fjerne innebygde doc blocks. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av en bufrer/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
@@ -107,6 +119,7 @@
"If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Hvis installasjonen din ikke er installert i roten av domenet og bruker systemets cron, kan det bli problemer med URL-genereringen. For å unngå disse problemene, sett \"overwrite.cli.url\" i filen config.php til web-roten for installasjonen din (Foreslått: \"%s\")",
"It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Det var ikke mulig å kjøre cron-jobben vi CLI. Følgende tekniske feil oppstod:",
"Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Vennligst dobbeltsjekk <a target=\"_blank\" href=\"%s\">Installasjonsveiledningene ↗</a> og se etter feil og advarsler i <a href=\"#log-section\">loggen</a>.",
+ "Open documentation" : "Åpne dokumentasjonen",
"Allow apps to use the Share API" : "Tillat apper å bruke API for Deling",
"Allow users to share via link" : "Tillat brukere å dele via lenke",
"Enforce password protection" : "Krev passordbeskyttelse",
@@ -127,6 +140,14 @@
"Execute one task with each page loaded" : "Utfør en oppgave med hver side som blir lastet",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php er registrert i en webcron-tjeneste for å kalle cron.php hvert 15. minutt over http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Bruk systemets cron-tjeneste til å kalle cron.php hvert 15. minutt.",
+ "Enable server-side encryption" : "Aktiver serverkryptering",
+ "Encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date. This is the final warning: Do you really want to enable encryption?" : "Kryptering er en enveisprosess. Når kryptering er aktivert, vil alle filer fra det tidspunktet av bli kryptert på serveren og det vil ikke være mulig å deaktivere kryptering senere. Dette er siste advarsel: Vil du virkelig aktivere kryptering?",
+ "Enable encryption" : "Aktiver kryptering",
+ "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul er lastet. Aktiver en krypteringsmodul i app-menyen.",
+ "Select default encryption module:" : "Velg standard krypteringsmodul:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye. Vennligst aktiver \"Standard krypteringsmodul\" og kjør 'occ encryption:migrate'",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.",
+ "Start migration" : "Start migrering",
"This is used for sending out notifications." : "Dette brukes for utsending av varsler.",
"Send mode" : "Sendemåte",
"Encryption" : "Kryptering",
@@ -158,6 +179,8 @@
"Hardening and security guidance" : "Herding og sikkerhetsveiledning",
"Version" : "Versjon",
"Developer documentation" : "Utviklerdokumentasjon",
+ "Experimental applications ahead" : "Eksperimentelle applikasjoner forut",
+ "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Eksperimentelle apper er ikke sjekket for sikkerhetsproblemer, nye eller anses som ustabile og under travel utvikling. Å installere slike apper kan forårsake tap av data eller sikkerhetsbrudd.",
"by" : "av",
"licensed" : "lisensiert",
"Documentation:" : "Dokumentasjon:",
@@ -169,11 +192,17 @@
"Update to %s" : "Oppdater til %s",
"Enable only for specific groups" : "Aktiver kun for visse grupper",
"Uninstall App" : "Avinstaller app",
+ "Enable experimental apps" : "Aktiver eksperimentelle apper",
"No apps found for your version" : "Ingen apper funnet for din versjon",
"Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Hei,<br><br>vil bare informere om at du nå har en %s-konto.<br><br>Brukernavnet ditt: %s<br>Gå dit: <a href=\"%s\">%s</a><br><br>",
"Cheers!" : "Ha det!",
"Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hei,\n\nVil bare informere om at du nå har en %s-konto.\n\nBrukernavnet ditt: %s\nGå dit: %s\n\n",
+ "User documentation" : "Brukerdokumentasjon",
+ "Administrator documentation" : "Administratordokumentasjon",
+ "Online documentation" : "Elektronisk dokumentasjon",
"Forum" : "Forum",
+ "Issue tracker" : "Problemsporing",
+ "Commercial support" : "Forretningsstøtte",
"Get the apps to sync your files" : "Hent apper som synkroniserer filene dine",
"Desktop client" : "Skrivebordsklient",
"Android app" : "Android-app",
@@ -197,7 +226,7 @@
"Upload new" : "Last opp nytt",
"Select new from Files" : "Velg nytt fra Filer",
"Remove image" : "Fjern bilde",
- "Either png or jpg. Ideally square but you will be able to crop it." : "Enten png eller jpg. Helst kvadratisk men du kan beskjære det.",
+ "Either png or jpg. Ideally square but you will be able to crop it." : "Enten png eller jpg. Helst kvadratisk, men du kan beskjære det.",
"Your avatar is provided by your original account." : "Avataren din kommer fra din opprinnelige konto.",
"Cancel" : "Avbryt",
"Choose as profile image" : "Velg som profilbilde",
diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js
index f621d9a07cd..2dc2722e9f4 100644
--- a/settings/l10n/nl.js
+++ b/settings/l10n/nl.js
@@ -147,6 +147,7 @@ OC.L10N.register(
"Enable encryption" : "Versleuteling inschakelen",
"No encryption module loaded, please enable an encryption module in the app menu." : "Er is geen cryptomodule geladen, activeer een cryptomodule in het appmenu",
"Select default encryption module:" : "Selecteer de standaard cryptomodule:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "U moet uw cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe. Activeer de \"Standaard cryptomodule\" en start 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "U moet uw cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.",
"Start migration" : "Start migratie",
"This is used for sending out notifications." : "Dit wordt gebruikt voor het verzenden van meldingen.",
diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json
index 931569bd57b..f6a14025985 100644
--- a/settings/l10n/nl.json
+++ b/settings/l10n/nl.json
@@ -145,6 +145,7 @@
"Enable encryption" : "Versleuteling inschakelen",
"No encryption module loaded, please enable an encryption module in the app menu." : "Er is geen cryptomodule geladen, activeer een cryptomodule in het appmenu",
"Select default encryption module:" : "Selecteer de standaard cryptomodule:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "U moet uw cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe. Activeer de \"Standaard cryptomodule\" en start 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "U moet uw cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.",
"Start migration" : "Start migratie",
"This is used for sending out notifications." : "Dit wordt gebruikt voor het verzenden van meldingen.",
diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js
index 313a118900b..c2234b882da 100644
--- a/settings/l10n/zh_CN.js
+++ b/settings/l10n/zh_CN.js
@@ -121,7 +121,7 @@ OC.L10N.register(
"User Documentation" : "用户文档",
"Admin Documentation" : "管理员文档",
"Enable only for specific groups" : "仅对特定的组开放",
- "Uninstall App" : "下载应用",
+ "Uninstall App" : "卸载应用",
"Cheers!" : "干杯!",
"Forum" : "论坛",
"Get the apps to sync your files" : "安装应用进行文件同步",
diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json
index d9ea601b66a..15517f26720 100644
--- a/settings/l10n/zh_CN.json
+++ b/settings/l10n/zh_CN.json
@@ -119,7 +119,7 @@
"User Documentation" : "用户文档",
"Admin Documentation" : "管理员文档",
"Enable only for specific groups" : "仅对特定的组开放",
- "Uninstall App" : "下载应用",
+ "Uninstall App" : "卸载应用",
"Cheers!" : "干杯!",
"Forum" : "论坛",
"Get the apps to sync your files" : "安装应用进行文件同步",
diff --git a/settings/templates/apps.php b/settings/templates/apps.php
index 6bbde71df97..0904f31df4d 100644
--- a/settings/templates/apps.php
+++ b/settings/templates/apps.php
@@ -31,7 +31,7 @@ script(
<?php if(OC_Config::getValue('appstoreenabled', true) === true): ?>
<li>
- <a class="app-external" target="_blank" href="https://owncloud.org/dev"><?php p($l->t('Developer documentation'));?> …</a>
+ <a class="app-external" target="_blank" href="https://owncloud.org/dev"><?php p($l->t('Developer documentation'));?> ↗</a>
</li>
<?php endif; ?>
</script>
diff --git a/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php b/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php
index a4f3137cb11..92ea5450ab9 100644
--- a/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php
+++ b/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php
@@ -21,10 +21,12 @@ use OCP\AppFramework\Http\Response;
class CORSMiddlewareTest extends \Test\TestCase {
private $reflector;
+ private $session;
protected function setUp() {
parent::setUp();
$this->reflector = new ControllerMethodReflector();
+ $this->session = $this->getMock('\OCP\IUserSession');
}
/**
@@ -41,7 +43,7 @@ class CORSMiddlewareTest extends \Test\TestCase {
$this->getMock('\OCP\IConfig')
);
$this->reflector->reflect($this, __FUNCTION__);
- $middleware = new CORSMiddleware($request, $this->reflector);
+ $middleware = new CORSMiddleware($request, $this->reflector, $this->session);
$response = $middleware->afterController($this, __FUNCTION__, new Response());
$headers = $response->getHeaders();
@@ -59,7 +61,7 @@ class CORSMiddlewareTest extends \Test\TestCase {
$this->getMock('\OCP\Security\ISecureRandom'),
$this->getMock('\OCP\IConfig')
);
- $middleware = new CORSMiddleware($request, $this->reflector);
+ $middleware = new CORSMiddleware($request, $this->reflector, $this->session);
$response = $middleware->afterController($this, __FUNCTION__, new Response());
$headers = $response->getHeaders();
@@ -77,7 +79,7 @@ class CORSMiddlewareTest extends \Test\TestCase {
$this->getMock('\OCP\IConfig')
);
$this->reflector->reflect($this, __FUNCTION__);
- $middleware = new CORSMiddleware($request, $this->reflector);
+ $middleware = new CORSMiddleware($request, $this->reflector, $this->session);
$response = $middleware->afterController($this, __FUNCTION__, new Response());
$headers = $response->getHeaders();
@@ -100,11 +102,76 @@ class CORSMiddlewareTest extends \Test\TestCase {
$this->getMock('\OCP\IConfig')
);
$this->reflector->reflect($this, __FUNCTION__);
- $middleware = new CORSMiddleware($request, $this->reflector);
+ $middleware = new CORSMiddleware($request, $this->reflector, $this->session);
$response = new Response();
$response->addHeader('AcCess-control-Allow-Credentials ', 'TRUE');
$middleware->afterController($this, __FUNCTION__, $response);
}
+ /**
+ * @CORS
+ * @PublicPage
+ */
+ public function testNoCORSShouldAllowCookieAuth() {
+ $request = new Request(
+ [],
+ $this->getMock('\OCP\Security\ISecureRandom'),
+ $this->getMock('\OCP\IConfig')
+ );
+ $this->reflector->reflect($this, __FUNCTION__);
+ $middleware = new CORSMiddleware($request, $this->reflector, $this->session);
+
+ $middleware->beforeController($this, __FUNCTION__, new Response());
+ }
+
+ /**
+ * @CORS
+ */
+ public function testCORSShouldRelogin() {
+ $request = new Request(
+ ['server' => [
+ 'PHP_AUTH_USER' => 'user',
+ 'PHP_AUTH_PW' => 'pass'
+ ]],
+ $this->getMock('\OCP\Security\ISecureRandom'),
+ $this->getMock('\OCP\IConfig')
+ );
+ $this->session->expects($this->once())
+ ->method('logout');
+ $this->session->expects($this->once())
+ ->method('login')
+ ->with($this->equalTo('user'), $this->equalTo('pass'))
+ ->will($this->returnValue(true));
+ $this->reflector->reflect($this, __FUNCTION__);
+ $middleware = new CORSMiddleware($request, $this->reflector, $this->session);
+
+ $middleware->beforeController($this, __FUNCTION__, new Response());
+ }
+
+ /**
+ * @CORS
+ * @expectedException \OC\AppFramework\Middleware\Security\SecurityException
+ */
+ public function testCORSShouldNotAllowCookieAuth() {
+ $request = new Request(
+ ['server' => [
+ 'PHP_AUTH_USER' => 'user',
+ 'PHP_AUTH_PW' => 'pass'
+ ]],
+ $this->getMock('\OCP\Security\ISecureRandom'),
+ $this->getMock('\OCP\IConfig')
+ );
+ $this->session->expects($this->once())
+ ->method('logout');
+ $this->session->expects($this->once())
+ ->method('login')
+ ->with($this->equalTo('user'), $this->equalTo('pass'))
+ ->will($this->returnValue(false));
+ $this->reflector->reflect($this, __FUNCTION__);
+ $middleware = new CORSMiddleware($request, $this->reflector, $this->session);
+
+ $middleware->beforeController($this, __FUNCTION__, new Response());
+ }
+
}
diff --git a/tests/lib/encryption/keys/storage.php b/tests/lib/encryption/keys/storage.php
index e67103fb6aa..fa623ac1c1b 100644
--- a/tests/lib/encryption/keys/storage.php
+++ b/tests/lib/encryption/keys/storage.php
@@ -76,7 +76,9 @@ class StorageTest extends TestCase {
$this->util->expects($this->any())
->method('getUidAndFilename')
->willReturn(array('user1', '/files/foo.txt'));
- $this->util->expects($this->any())
+ // we need to strip away the part file extension in order to reuse a
+ // existing key if it exists, otherwise versions will break
+ $this->util->expects($this->once())
->method('stripPartialFileExtension')
->willReturnArgument(0);
$this->util->expects($this->any())
diff --git a/tests/lib/encryption/utiltest.php b/tests/lib/encryption/utiltest.php
index 0154fa30f7d..d3a4e211daa 100644
--- a/tests/lib/encryption/utiltest.php
+++ b/tests/lib/encryption/utiltest.php
@@ -174,4 +174,24 @@ class UtilTest extends TestCase {
);
}
+ /**
+ * @dataProvider dataTestStripPartialFileExtension
+ *
+ * @param string $path
+ * @param string $expected
+ */
+ public function testStripPartialFileExtension($path, $expected) {
+ $this->assertSame($expected,
+ $this->util->stripPartialFileExtension($path));
+ }
+
+ public function dataTestStripPartialFileExtension() {
+ return array(
+ array('/foo/test.txt', '/foo/test.txt'),
+ array('/foo/test.txt.part', '/foo/test.txt'),
+ array('/foo/test.txt.ocTransferId7567846853.part', '/foo/test.txt'),
+ array('/foo/test.txt.ocTransferId7567.part', '/foo/test.txt'),
+ );
+ }
+
}
diff --git a/tests/lib/files/stream/dummyencryptionwrapper.php b/tests/lib/files/stream/dummyencryptionwrapper.php
new file mode 100644
index 00000000000..bb512d99c66
--- /dev/null
+++ b/tests/lib/files/stream/dummyencryptionwrapper.php
@@ -0,0 +1,37 @@
+<?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 Test\Files\Stream;
+
+class DummyEncryptionWrapper extends \OC\Files\Stream\Encryption {
+
+ /**
+ * simulate a non-seekable stream wrapper by always return false
+ *
+ * @param int $position
+ * @return bool
+ */
+ protected function parentStreamSeek($position) {
+ return false;
+ }
+
+}
diff --git a/tests/lib/files/stream/encryption.php b/tests/lib/files/stream/encryption.php
index 040be7256a6..281ec0a14a0 100644
--- a/tests/lib/files/stream/encryption.php
+++ b/tests/lib/files/stream/encryption.php
@@ -15,7 +15,7 @@ class Encryption extends \Test\TestCase {
* @param integer $unencryptedSize
* @return resource
*/
- protected function getStream($fileName, $mode, $unencryptedSize) {
+ protected function getStream($fileName, $mode, $unencryptedSize, $wrapper = '\OC\Files\Stream\Encryption') {
clearstatcache();
$size = filesize($fileName);
$source = fopen($fileName, $mode);
@@ -44,9 +44,10 @@ class Encryption extends \Test\TestCase {
->method('getUidAndFilename')
->willReturn(['user1', $internalPath]);
- return \OC\Files\Stream\Encryption::wrap($source, $internalPath,
+
+ return $wrapper::wrap($source, $internalPath,
$fullPath, $header, $uid, $this->encryptionModule, $storage, $encStorage,
- $util, $file, $mode, $size, $unencryptedSize, 8192);
+ $util, $file, $mode, $size, $unencryptedSize, 8192, $wrapper);
}
/**
@@ -256,6 +257,49 @@ class Encryption extends \Test\TestCase {
}
/**
+ * simulate a non-seekable storage
+ *
+ * @dataProvider dataFilesProvider
+ */
+ public function testWriteToNonSeekableStorage($testFile) {
+
+ $wrapper = $this->getMockBuilder('\OC\Files\Stream\Encryption')
+ ->setMethods(['parentSeekStream'])->getMock();
+ $wrapper->expects($this->any())->method('parentSeekStream')->willReturn(false);
+
+ $expectedData = file_get_contents(\OC::$SERVERROOT . '/tests/data/' . $testFile);
+ // write it
+ $fileName = tempnam("/tmp", "FOO");
+ $stream = $this->getStream($fileName, 'w+', 0, '\Test\Files\Stream\DummyEncryptionWrapper');
+ // while writing the file from the beginning to the end we should never try
+ // to read parts of the file. This should only happen for write operations
+ // in the middle of a file
+ $this->encryptionModule->expects($this->never())->method('decrypt');
+ fwrite($stream, $expectedData);
+ fclose($stream);
+
+ // read it all
+ $stream = $this->getStream($fileName, 'r', strlen($expectedData), '\Test\Files\Stream\DummyEncryptionWrapper');
+ $data = stream_get_contents($stream);
+ fclose($stream);
+
+ $this->assertEquals($expectedData, $data);
+
+ // another read test with a loop like we do in several places:
+ $stream = $this->getStream($fileName, 'r', strlen($expectedData));
+ $data = '';
+ while (!feof($stream)) {
+ $data .= fread($stream, 8192);
+ }
+ fclose($stream);
+
+ $this->assertEquals($expectedData, $data);
+
+ unlink($fileName);
+
+ }
+
+ /**
* @return \PHPUnit_Framework_MockObject_MockObject
*/
protected function buildMockModule() {
diff --git a/tests/lib/httphelper.php b/tests/lib/httphelper.php
index e8472ab553a..1d0981ba51b 100644
--- a/tests/lib/httphelper.php
+++ b/tests/lib/httphelper.php
@@ -12,15 +12,17 @@ class TestHTTPHelper extends \Test\TestCase {
private $config;
/** @var \OC\HTTPHelper */
private $httpHelperMock;
+ /** @var \OCP\Http\Client\IClientService */
+ private $clientService;
protected function setUp() {
parent::setUp();
$this->config = $this->getMockBuilder('\OCP\IConfig')
->disableOriginalConstructor()->getMock();
- $clientService = $this->getMock('\OCP\Http\Client\IClientService');
+ $this->clientService = $this->getMock('\OCP\Http\Client\IClientService');
$this->httpHelperMock = $this->getMockBuilder('\OC\HTTPHelper')
- ->setConstructorArgs(array($this->config, $clientService))
+ ->setConstructorArgs(array($this->config, $this->clientService))
->setMethods(array('getHeaders'))
->getMock();
}
@@ -44,4 +46,73 @@ class TestHTTPHelper extends \Test\TestCase {
public function testIsHTTP($url, $expected) {
$this->assertSame($expected, $this->httpHelperMock->isHTTPURL($url));
}
+
+ public function testPostSuccess() {
+ $client = $this->getMockBuilder('\OCP\Http\Client\IClient')
+ ->disableOriginalConstructor()->getMock();
+ $this->clientService
+ ->expects($this->once())
+ ->method('newClient')
+ ->will($this->returnValue($client));
+ $response = $this->getMockBuilder('\OCP\Http\Client\IResponse')
+ ->disableOriginalConstructor()->getMock();
+ $client
+ ->expects($this->once())
+ ->method('post')
+ ->with(
+ 'https://owncloud.org',
+ [
+ 'body' => [
+ 'Foo' => 'Bar',
+ ],
+ 'connect_timeout' => 10,
+
+ ]
+ )
+ ->will($this->returnValue($response));
+ $response
+ ->expects($this->once())
+ ->method('getBody')
+ ->will($this->returnValue('Body of the requested page'));
+
+
+ $response = $this->httpHelperMock->post('https://owncloud.org', ['Foo' => 'Bar']);
+ $expected = [
+ 'success' => true,
+ 'result' => 'Body of the requested page'
+ ];
+ $this->assertSame($expected, $response);
+ }
+
+ public function testPostException() {
+ $client = $this->getMockBuilder('\OCP\Http\Client\IClient')
+ ->disableOriginalConstructor()->getMock();
+ $this->clientService
+ ->expects($this->once())
+ ->method('newClient')
+ ->will($this->returnValue($client));
+ $client
+ ->expects($this->once())
+ ->method('post')
+ ->with(
+ 'https://owncloud.org',
+ [
+ 'body' => [
+ 'Foo' => 'Bar',
+ ],
+ 'connect_timeout' => 10,
+
+ ]
+ )
+ ->will($this->throwException(new \Exception('Something failed')));
+
+
+ $response = $this->httpHelperMock->post('https://owncloud.org', ['Foo' => 'Bar']);
+ $expected = [
+ 'success' => false,
+ 'result' => 'Something failed'
+ ];
+ $this->assertSame($expected, $response);
+ }
+
}
diff --git a/tests/lib/public/util.php b/tests/lib/public/util.php
new file mode 100644
index 00000000000..ebc4f70079b
--- /dev/null
+++ b/tests/lib/public/util.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Victor Dubiniuk
+ * @copyright 2015 Victor Dubiniuk victor.dubiniuk@owncloud.com
+ *
+ * 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,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+class Test_Public_Util extends \Test\TestCase {
+ protected function setUp() {
+ parent::setUp();
+ OCP\Contacts::clear();
+ }
+
+ /**
+ * @dataProvider channelProvider
+ *
+ * @param string $channel
+ */
+ public function testOverrideChannel($channel) {
+ \OCP\Util::setChannel($channel);
+ $actual = \OCP\Util::getChannel($channel);
+ $this->assertEquals($channel, $actual);
+ }
+
+ public function channelProvider() {
+ return [
+ ['daily'],
+ ['beta'],
+ ['stable'],
+ ['production']
+ ];
+ }
+}
diff --git a/themes/README b/themes/README
index 4025bc8970e..9c532b28aae 100644
--- a/themes/README
+++ b/themes/README
@@ -1,7 +1,17 @@
-This is the themes folder. Themes can be used to customize the look and feel of ownCloud without the need to patch the source code.
-Themes can be placed in this folder with the name of the theme as foldername. The theme can be activated by putting
-"theme" => 'themename', into the config.php file.
-The folder structure of a theme is exactly the same as the main ownCloud structure. You can override js files and templates with own versions. css files are loaded additionaly to the default files so you can override css properties.
-Themes should be developed here: https://github.com/owncloud/themes
-You can also find a super simple example there
+Themes can be used to customize the look and feel of ownCloud without the need to patch the source code. This makes it very easy to:
+* Use your own logo (in the top left, in log in and in emails)
+* Customize the text strings to replace »ownCloud« etc. with your name of choice
+* Change the main color (used in header and as log in background)
+* And more …
+
+
+The process is simple:
+
+1. Put a folder here with the name of the theme as foldername
+2. Activate it by putting 'theme' => 'themename', into the config.php file
+
+
+The folder structure of a theme is exactly the same as the main ownCloud structure. CSS files are loaded additionally to the default files so you can override properties. Images are replaced. You can also override JS files and PHP templates but we do not recommend that because you will need to adjust them after every update.
+
+You can also find a basic example here which you can build upon.
diff --git a/themes/example/core/css/styles.css b/themes/example/core/css/styles.css
new file mode 100644
index 00000000000..a0aba8ae07a
--- /dev/null
+++ b/themes/example/core/css/styles.css
@@ -0,0 +1,86 @@
+/**
+ * @author Jan-Christoph Borchardt, http://jancborchardt.net
+ * @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/>
+ */
+
+
+/* header color */
+/* this is the main brand color */
+#body-user #header,
+#body-settings #header,
+#body-public #header {
+ background-color: #745bca;
+}
+
+/* log in screen background color */
+/* gradient of the header color and a brighter shade */
+/* can also be a flat color or an image */
+#body-login {
+ background: #745bca; /* Old browsers */
+ background: -moz-linear-gradient(top, #947bea 0%, #745bca 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#947bea), color-stop(100%,#745bca)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #947bea 0%,#745bca 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #947bea 0%,#745bca 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #947bea 0%,#745bca 100%); /* IE10+ */
+ background: linear-gradient(top, #947bea 0%,#745bca 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#947bea', endColorstr='#745bca',GradientType=0 ); /* IE6-9 */
+}
+
+/* primary action button, use sparingly */
+/* header color as border, brighter shade again, here as background */
+.primary,
+input[type="submit"].primary,
+input[type="button"].primary,
+button.primary,
+.button.primary,
+.primary:active,
+input[type="submit"].primary:active,
+input[type="button"].primary:active,
+button.primary:active,
+.button.primary:active {
+ border-color: #745bca;
+ background-color: #947bea;
+}
+.primary:hover,
+input[type="submit"].primary:hover,
+input[type="button"].primary:hover,
+button.primary:hover,
+.button.primary:hover,
+.primary:focus,
+input[type="submit"].primary:focus,
+input[type="button"].primary:focus,
+button.primary:focus,
+.button.primary:focus {
+ background-color: #8b75e4;
+}
+.primary:active, input[type="submit"].primary:active, input[type="button"].primary:active, button.primary:active, .button.primary:active,
+.primary:disabled, input[type="submit"].primary:disabled, input[type="button"].primary:disabled, button.primary:disabled, .button.primary:disabled,
+.primary:disabled:hover, input[type="submit"].primary:disabled:hover, input[type="button"].primary:disabled:hover, button.primary:disabled:hover, .button.primary:disabled:hover,
+.primary:disabled:focus, input[type="submit"].primary:disabled:focus, input[type="button"].primary:disabled:focus, button.primary:disabled:focus, .button.primary:disabled:focus {
+ background-color: #745bca;
+}
+
+/* use logos from theme */
+#header .logo {
+ background-image: url('../img/logo.svg');
+ width: 250px;
+ height: 121px;
+}
+#header .logo-icon {
+ background-image: url('../img/logo-icon.svg');
+ width: 62px;
+ height: 34px;
+}
diff --git a/themes/example/core/img/favicon-touch.png b/themes/example/core/img/favicon-touch.png
new file mode 100644
index 00000000000..e3a61ae5871
--- /dev/null
+++ b/themes/example/core/img/favicon-touch.png
Binary files differ
diff --git a/themes/example/core/img/favicon-touch.svg b/themes/example/core/img/favicon-touch.svg
new file mode 100644
index 00000000000..efa79b4359f
--- /dev/null
+++ b/themes/example/core/img/favicon-touch.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xml:space="preserve" height="128" width="128" enable-background="new 0 0 595.275 311.111" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 128 127.99999"><rect rx="20" ry="20" height="128" width="128" y="-.0000015" x="0" fill="#745bca"/><path d="m64 24a36 36 0 0 0 -35.758 32.016 20 20 0 0 0 -0.2422 -0.0156 20 20 0 0 0 -20 20 20 20 0 0 0 20 20h36 32a24 24 0 0 0 24 -24 24 24 0 0 0 -22.07 -23.906 36 36 0 0 0 -33.93 -24.094zm0 12a24 24 0 0 1 24 24 24 24 0 0 1 -24 24 24 24 0 0 1 -24 -24 24 24 0 0 1 24 -24z" fill="#fff"/></svg>
diff --git a/themes/example/core/img/favicon.png b/themes/example/core/img/favicon.png
new file mode 100644
index 00000000000..4394e13514b
--- /dev/null
+++ b/themes/example/core/img/favicon.png
Binary files differ
diff --git a/themes/example/core/img/favicon.svg b/themes/example/core/img/favicon.svg
new file mode 100644
index 00000000000..a41137db754
--- /dev/null
+++ b/themes/example/core/img/favicon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xml:space="preserve" height="32" width="32" enable-background="new 0 0 595.275 311.111" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 32 31.999997"><rect rx="5" ry="5" height="32" width="32" y="-.0000052588" x="0" fill="#745bca"/><path d="m16 6a9 9 0 0 0 -8.9395 8.004 5 5 0 0 0 -0.0605 -0.004 5 5 0 0 0 -5 5 5 5 0 0 0 5 5h9 8a6 6 0 0 0 6 -6 6 6 0 0 0 -5.518 -5.977 9 9 0 0 0 -8.482 -6.023zm0 3a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z" transform="translate(0 -.0000019073)" fill="#fff"/></svg>
diff --git a/themes/example/core/img/logo-icon.png b/themes/example/core/img/logo-icon.png
new file mode 100644
index 00000000000..4ed70603b25
--- /dev/null
+++ b/themes/example/core/img/logo-icon.png
Binary files differ
diff --git a/themes/example/core/img/logo-icon.svg b/themes/example/core/img/logo-icon.svg
new file mode 100644
index 00000000000..925152145fe
--- /dev/null
+++ b/themes/example/core/img/logo-icon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 595.275 311.111" xml:space="preserve" height="34" width="62" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 62.001102 34"><path d="m31.001 2.9997a13.5 13.5 0 0 0 -13.409 12.006 7.5001 7.5001 0 0 0 -0.09082 -0.0058 7.5001 7.5001 0 0 0 -7.5001 7.5001 7.5001 7.5001 0 0 0 7.5001 7.5001h13.5 12a9.0002 9.0002 0 0 0 9 -9 9.0002 9.0002 0 0 0 -8.277 -8.965 13.5 13.5 0 0 0 -12.723 -9.0353zm0 4.5001a9.0002 9.0002 0 0 1 9.0002 9.0002 9.0002 9.0002 0 0 1 -9.0002 9.0002 9.0002 9.0002 0 0 1 -9.0002 -9.0002 9.0002 9.0002 0 0 1 9.0002 -9.0002z" fill="#fff"/></svg>
diff --git a/themes/example/core/img/logo-mail.gif b/themes/example/core/img/logo-mail.gif
new file mode 100644
index 00000000000..431db4e68ae
--- /dev/null
+++ b/themes/example/core/img/logo-mail.gif
Binary files differ
diff --git a/themes/example/core/img/logo.png b/themes/example/core/img/logo.png
new file mode 100644
index 00000000000..ac766e29cd8
--- /dev/null
+++ b/themes/example/core/img/logo.png
Binary files differ
diff --git a/themes/example/core/img/logo.svg b/themes/example/core/img/logo.svg
new file mode 100644
index 00000000000..349c7ea19bb
--- /dev/null
+++ b/themes/example/core/img/logo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="120" viewBox="0 0 252.00001 119.99799" width="252" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" enable-background="new 0 0 595.275 311.111"><path d="m178.27 82.457v30.393h3.24v-30.393h-3.24zm67.22 0v8.711l0.08 1.504 0.14 1.543h-0.26c-1.55-2.11-3.77-3.164-6.68-3.164-2.78 0-4.96 0.976-6.52 2.929-1.56 1.954-2.35 4.694-2.35 8.22 0 3.53 0.78 6.25 2.33 8.17 1.56 1.91 3.74 2.87 6.54 2.87 2.98 0 5.22-1.09 6.72-3.26h0.18l0.43 2.87h2.63v-30.393h-3.24zm-227.69 1.426c-2.722 0-5.098 0.599-7.129 1.797-2.0184 1.185-3.5679 2.897-4.6486 5.136-1.0807 2.227-1.6211 4.825-1.6211 7.793 0 4.711 1.1003 8.331 3.3008 10.861 2.2005 2.51 5.3779 3.77 9.5309 3.77 2.891 0 5.508-0.49 7.852-1.47v-5.07c-2.852 1-5.28 1.5-7.285 1.5-4.779 0-7.168-3.18-7.168-9.552 0-3.059 0.625-5.442 1.875-7.148 1.25-1.719 3.014-2.578 5.293-2.578 1.041 0 2.103 0.189 3.183 0.566 1.081 0.378 2.155 0.821 3.223 1.328l1.953-4.921c-2.799-1.342-5.586-2.012-8.359-2.012zm149.99 0c-2.82 0-5.26 0.599-7.35 1.797-2.07 1.198-3.66 2.903-4.76 5.117-1.1 2.213-1.64 4.792-1.64 7.734 0 4.699 1.14 8.329 3.42 10.879 2.29 2.55 5.54 3.83 9.74 3.83 2.9 0 5.35-0.37 7.33-1.12v-2.91c-2.56 0.72-4.83 1.08-6.82 1.08-3.24 0-5.74-1.02-7.5-3.05-1.75-2.04-2.62-4.93-2.62-8.67 0-3.632 0.91-6.491 2.72-8.574 1.82-2.096 4.3-3.144 7.44-3.144 2.16 0 4.32 0.507 6.48 1.523l1.41-2.852c-2.24-1.093-4.86-1.64-7.85-1.64zm-94.073 2.48l-1.719 4.61-3.281 1.992v2.519h2.851v10.526c0 2.41 0.541 4.22 1.621 5.43 1.094 1.2 2.832 1.8 5.215 1.8 2.162 0 3.985-0.33 5.469-1v-4.43c-1.458 0.45-2.708 0.68-3.75 0.68-0.781 0-1.413-0.2-1.894-0.6-0.469-0.41-0.704-1.03-0.704-1.88v-10.526h6.114v-4.472h-6.114v-4.649h-3.808zm-13.391 4.239c-2.76 0-4.896 0.533-6.406 1.601-1.497 1.055-2.246 2.552-2.246 4.492 0 1.133 0.176 2.09 0.527 2.871 0.365 0.764 0.938 1.454 1.719 2.054 0.794 0.6 2.031 1.25 3.711 1.95 1.172 0.5 2.109 0.93 2.812 1.31 0.703 0.36 1.198 0.7 1.485 1 0.286 0.28 0.429 0.66 0.429 1.13 0 1.25-1.08 1.87-3.242 1.87-1.054 0-2.278-0.17-3.672-0.52-1.38-0.36-2.623-0.79-3.73-1.31v4.92c0.976 0.42 2.025 0.73 3.144 0.94 1.12 0.22 2.474 0.33 4.063 0.33 3.099 0 5.423-0.59 6.973-1.76 1.562-1.17 2.343-2.88 2.343-5.12 0-1.08-0.188-2.01-0.566-2.79s-0.964-1.47-1.758-2.07-2.044-1.24-3.75-1.934c-1.914-0.768-3.157-1.347-3.73-1.738-0.56-0.39-0.84-0.853-0.84-1.387 0-0.95 0.879-1.425 2.637-1.425 0.989 0 1.959 0.149 2.91 0.449 0.95 0.299 1.972 0.683 3.066 1.152l1.797-4.297c-2.487-1.146-5.046-1.718-7.676-1.718zm35.258 0c-3.372 0-5.99 0.989-7.852 2.968s-2.793 4.753-2.793 8.32c0 2.29 0.43 4.3 1.29 6.02 0.859 1.71 2.089 3.04 3.691 3.96 1.601 0.91 3.45 1.37 5.547 1.37 3.346 0 5.953-1 7.833-3.01 1.87-2 2.81-4.78 2.81-8.34 0-2.291-0.43-4.29-1.29-5.995-0.86-1.706-2.09-3.015-3.69-3.926-1.601-0.912-3.45-1.367-5.546-1.367zm25.476 0c-1.43 0-2.7 0.286-3.8 0.859-1.11 0.56-1.96 1.341-2.54 2.344h-0.34l-0.8-2.793h-4.55v21.838h5.96v-10.28c0-2.56 0.35-4.403 1.04-5.523s1.79-1.68 3.32-1.68c1.13 0 1.96 0.397 2.48 1.192 0.53 0.781 0.8 1.959 0.8 3.531v12.76h5.95v-10.96c0-2.265 0.36-3.919 1.08-4.96 0.73-1.042 1.82-1.563 3.28-1.563 1.13 0 1.96 0.397 2.48 1.192 0.53 0.781 0.8 1.959 0.8 3.531v12.76h5.98v-14.241c0-2.799-0.64-4.83-1.92-6.093-1.26-1.276-3.13-1.914-5.6-1.914-1.43 0-2.72 0.28-3.87 0.839-1.13 0.56-1.99 1.348-2.58 2.364h-0.52c-1.16-2.136-3.38-3.203-6.65-3.203zm-92.503 0.41v14.238c0 2.58 0.651 4.56 1.953 5.94 1.302 1.36 3.235 2.05 5.801 2.05 1.497 0 2.832-0.28 4.003-0.82 1.172-0.56 2.077-1.35 2.715-2.37h0.313l0.801 2.8h4.57v-21.838h-5.957v10.278c0 2.57-0.371 4.42-1.113 5.54-0.743 1.11-1.947 1.66-3.614 1.66-1.224 0-2.116-0.39-2.675-1.17-0.56-0.79-0.84-1.98-0.84-3.55v-12.758h-5.957zm166.56 0.039c-3.1 0-5.53 0.976-7.27 2.929-1.75 1.941-2.62 4.655-2.62 8.14 0 2.26 0.41 4.22 1.21 5.9 0.81 1.68 1.96 2.97 3.44 3.87 1.49 0.9 3.18 1.35 5.1 1.35 3.1 0 5.53-0.98 7.28-2.93 1.76-1.97 2.64-4.7 2.64-8.19 0-3.393-0.89-6.089-2.66-8.081-1.75-1.992-4.13-2.988-7.12-2.988zm13.21 0.39v14.009c0 2.72 0.64 4.7 1.93 5.93 1.31 1.24 3.26 1.86 5.86 1.86 1.51 0 2.85-0.28 4.03-0.84s2.11-1.37 2.77-2.42h0.18l0.46 2.87h2.68v-21.409h-3.24v11.249c0 2.77-0.52 4.77-1.56 6-1.03 1.22-2.67 1.83-4.91 1.83-1.69 0-2.93-0.43-3.73-1.29-0.79-0.85-1.19-2.16-1.19-3.9v-13.889h-3.28zm30.81 2.325c2.22 0 3.82 0.651 4.83 1.953 1.01 1.289 1.52 3.45 1.52 6.481v0.69c0 2.68-0.5 4.63-1.5 5.84-0.99 1.19-2.59 1.79-4.81 1.79-1.94 0-3.41-0.69-4.41-2.09-1.01-1.39-1.51-3.45-1.51-6.19 0-2.693 0.5-4.776 1.51-6.248 1.01-1.484 2.47-2.226 4.37-2.226zm-44.12 0.039c2.15 0 3.77 0.709 4.86 2.129 1.11 1.406 1.66 3.47 1.66 6.186 0 2.75-0.55 4.84-1.66 6.27-1.09 1.42-2.7 2.13-4.82 2.13-2.13 0-3.73-0.71-4.83-2.14-1.09-1.44-1.64-3.52-1.64-6.26 0-2.755 0.54-4.832 1.62-6.225 1.08-1.394 2.69-2.09 4.81-2.09zm-99.514 1.601c1.601 0 2.754 0.541 3.457 1.621 0.703 1.081 1.057 2.702 1.057 4.863 0 2.18-0.354 3.82-1.057 4.92-0.69 1.1-1.83 1.64-3.418 1.64-1.602 0-2.76-0.55-3.477-1.66-0.703-1.1-1.054-2.74-1.054-4.9 0-2.174 0.351-3.795 1.054-4.863 0.703-1.08 1.849-1.621 3.438-1.621z" transform="translate(0 -.0010071)" fill="#fff"/><path d="m135.84 10.41a32.143 32.143 0 0 0 -31.927 28.585 17.857 17.857 0 0 0 -0.21625 -0.01393 17.857 17.857 0 0 0 -17.857 17.857 17.857 17.857 0 0 0 17.857 17.857h32.143 28.571a21.429 21.429 0 0 0 21.43 -21.428 21.429 21.429 0 0 0 -19.71 -21.344 32.143 32.143 0 0 0 -30.29 -21.513zm0 10.714a21.429 21.429 0 0 1 21.429 21.429 21.429 21.429 0 0 1 -21.429 21.429 21.429 21.429 0 0 1 -21.429 -21.429 21.429 21.429 0 0 1 21.429 -21.429z" fill="#fff"/></svg>
diff --git a/themes/example/defaults.php b/themes/example/defaults.php
new file mode 100644
index 00000000000..0dd0d46bd9c
--- /dev/null
+++ b/themes/example/defaults.php
@@ -0,0 +1,95 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Jan-Christoph Borchardt, http://jancborchardt.net
+ * @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/>
+ */
+
+class OC_Theme {
+
+ private $themeEntity;
+ private $themeName;
+ private $themeTitle;
+ private $themeBaseUrl;
+ private $themeDocBaseUrl;
+ private $themeSyncClientUrl;
+ private $themeSlogan;
+ private $themeMailHeaderColor;
+
+ /* put your custom text in these variables */
+ function __construct() {
+ $this->themeEntity = 'Custom Cloud Co.';
+ $this->themeName = 'Custom Cloud';
+ $this->themeTitle = 'Custom Cloud';
+ $this->themeBaseUrl = 'https://owncloud.org';
+ $this->themeDocBaseUrl = 'https://doc.owncloud.org';
+ $this->themeSyncClientUrl = 'https://owncloud.org/install';
+ $this->themeSlogan = 'Your custom cloud, personalized for you!';
+ $this->themeMailHeaderColor = '#745bca';
+ }
+ /* nothing after this needs to be adjusted */
+
+ public function getBaseUrl() {
+ return $this->themeBaseUrl;
+ }
+
+ public function getSyncClientUrl() {
+ return $this->themeSyncClientUrl;
+ }
+
+ public function getDocBaseUrl() {
+ return $this->themeDocBaseUrl;
+ }
+
+ public function getTitle() {
+ return $this->themeTitle;
+ }
+
+ public function getName() {
+ return $this->themeName;
+ }
+
+ public function getEntity() {
+ return $this->themeEntity;
+ }
+
+ public function getSlogan() {
+ return $this->themeSlogan;
+ }
+
+ public function getShortFooter() {
+ $footer = '© 2015 <a href="'.$this->getBaseUrl().'" target="_blank\">'.$this->getEntity().'</a>'.
+ '<br/>' . $this->getSlogan();
+
+ return $footer;
+ }
+
+ public function getLongFooter() {
+ $footer = '© 2015 <a href="'.$this->getBaseUrl().'" target="_blank\">'.$this->getEntity().'</a>'.
+ '<br/>' . $this->getSlogan();
+
+ return $footer;
+ }
+
+ public function buildDocLinkToKey($key) {
+ return $this->getDocBaseUrl() . '/server/8.0/go.php?to=' . $key;
+ }
+
+ public function getMailHeaderColor() {
+ return $this->themeMailHeaderColor;
+ }
+
+}