diff --git a/README.md b/README.md index 7e1a9fbc78b5ef5a27ed4fc8d15b0fa2040e1a48..4dfa36237bbcf4467132959c025f3f50baa27a33 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Git master: [](https://scrutinizer-ci.com/g/owncloud/core/) - CodeClimate: [](https://codeclimate.com/github/owncloud/core) + - Coverity: [](https://scan.coverity.com/projects/owncloud-core) Dependencies: diff --git a/apps/dav/lib/connector/sabre/tagsplugin.php b/apps/dav/lib/connector/sabre/tagsplugin.php index 7446d97790ba2ac22d90cbfed179acfaabab1290..2f5937da25aa50e5ed70ca7b8639ff97931fb84a 100644 --- a/apps/dav/lib/connector/sabre/tagsplugin.php +++ b/apps/dav/lib/connector/sabre/tagsplugin.php @@ -108,7 +108,7 @@ class TagsPlugin extends \Sabre\DAV\ServerPlugin public function initialize(\Sabre\DAV\Server $server) { $server->xmlNamespaces[self::NS_OWNCLOUD] = 'oc'; - $server->propertyMap[self::TAGS_PROPERTYNAME] = 'OC\\Connector\\Sabre\\TagList'; + $server->propertyMap[self::TAGS_PROPERTYNAME] = 'OCA\\DAV\\Connector\\Sabre\\TagList'; $this->server = $server; $this->server->on('propFind', array($this, 'handleGetProperties')); diff --git a/apps/encryption/l10n/el.js b/apps/encryption/l10n/el.js index d27098ddb049498ca1784c8e9b80bf78cc9bd91d..509e217a806f77f3dbf11701e5737a56b69a4ac3 100644 --- a/apps/encryption/l10n/el.js +++ b/apps/encryption/l10n/el.js @@ -32,6 +32,8 @@ OC.L10N.register( "The share will expire on %s." : "Ο διαμοιÏασμός θα λήξει σε %s.", "Cheers!" : "ΧαιÏετισμοÏÏ‚!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "ΧαίÏετε,<br><br>ο διαχειÏιστής ενεÏγοποίησε την κÏυπτογÏάφηση στο διακομιστή. Τα αÏχεία σας κÏυπτογÏαφήθηκαν με τον κωδικό <strong>%s</strong>.<br><br>ΠαÏακαλοÏμε συνδεθείτε στη διεπαφή ιστοÏ, πηγαίνετε στην ενότητα \"μονάδα βασικής κÏυπτογÏάφησης ownCloud\" τωνπ Ïοσωπικών σας Ïυθμίσεων και ενημεÏώστε τον κωδικό κÏυπτογÏάφησης εισάγοντας αυτό τον κωδικό στο πεδίο \"παλιός κωδικός σÏνδεσης\" και τον τωÏινό σας κωδικό σÏνδεσης.", + "Encrypt the home storage" : "ΚÏυπτογÏάφηση του κεντÏÎ¹ÎºÎ¿Ï Ï‡ÏŽÏου αποθήκευσης", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Η ενεÏγοποίηση αυτή της επιλογής κÏυπτογÏαφεί όλα τα αÏχεία που βÏίσκονται στον κÏÏιο αποθηκευτικό χώÏο, αλλιώς μόνο τα αÏχεία σε εξωτεÏικοÏÏ‚ αποθηκευτικοÏÏ‚ χώÏους θα κÏυπτογÏαφηθοÏν.", "Enable recovery key" : "ΕνεÏγοποίηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Î½Î¬ÎºÏ„Î·ÏƒÎ·Ï‚", "Disable recovery key" : "ΑπενεÏγοποίηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Î½Î¬ÎºÏ„Î·ÏƒÎ·Ï‚", "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." : "Το κλειδί ανάκτησης είναι Îνα επιπλÎον κλειδί κÏυπτογÏάφησης που χÏησιμοποιείται για να κÏυπτογÏαφήσει αÏχεία. ΕπιτÏÎπει την ανάκτηση των αÏχείων ενός χÏήστη αν αυτός/αυτή ξεχάσει τον κωδικό Ï€Ïόσβασης.", diff --git a/apps/encryption/l10n/el.json b/apps/encryption/l10n/el.json index 3ed5e39b7c0fc48ba58fd5d1091acf5cad7ba705..954d7490ce018a4ef15ac2aa9ac18500563bb061 100644 --- a/apps/encryption/l10n/el.json +++ b/apps/encryption/l10n/el.json @@ -30,6 +30,8 @@ "The share will expire on %s." : "Ο διαμοιÏασμός θα λήξει σε %s.", "Cheers!" : "ΧαιÏετισμοÏÏ‚!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "ΧαίÏετε,<br><br>ο διαχειÏιστής ενεÏγοποίησε την κÏυπτογÏάφηση στο διακομιστή. Τα αÏχεία σας κÏυπτογÏαφήθηκαν με τον κωδικό <strong>%s</strong>.<br><br>ΠαÏακαλοÏμε συνδεθείτε στη διεπαφή ιστοÏ, πηγαίνετε στην ενότητα \"μονάδα βασικής κÏυπτογÏάφησης ownCloud\" τωνπ Ïοσωπικών σας Ïυθμίσεων και ενημεÏώστε τον κωδικό κÏυπτογÏάφησης εισάγοντας αυτό τον κωδικό στο πεδίο \"παλιός κωδικός σÏνδεσης\" και τον τωÏινό σας κωδικό σÏνδεσης.", + "Encrypt the home storage" : "ΚÏυπτογÏάφηση του κεντÏÎ¹ÎºÎ¿Ï Ï‡ÏŽÏου αποθήκευσης", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Η ενεÏγοποίηση αυτή της επιλογής κÏυπτογÏαφεί όλα τα αÏχεία που βÏίσκονται στον κÏÏιο αποθηκευτικό χώÏο, αλλιώς μόνο τα αÏχεία σε εξωτεÏικοÏÏ‚ αποθηκευτικοÏÏ‚ χώÏους θα κÏυπτογÏαφηθοÏν.", "Enable recovery key" : "ΕνεÏγοποίηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Î½Î¬ÎºÏ„Î·ÏƒÎ·Ï‚", "Disable recovery key" : "ΑπενεÏγοποίηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Î½Î¬ÎºÏ„Î·ÏƒÎ·Ï‚", "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." : "Το κλειδί ανάκτησης είναι Îνα επιπλÎον κλειδί κÏυπτογÏάφησης που χÏησιμοποιείται για να κÏυπτογÏαφήσει αÏχεία. ΕπιτÏÎπει την ανάκτηση των αÏχείων ενός χÏήστη αν αυτός/αυτή ξεχάσει τον κωδικό Ï€Ïόσβασης.", diff --git a/apps/encryption/l10n/oc.js b/apps/encryption/l10n/oc.js index 8715fd378b8a63433ed72ff193fe5cca14d8ec3e..db54a83db5edc253c13b3e146bf87eeab596f785 100644 --- a/apps/encryption/l10n/oc.js +++ b/apps/encryption/l10n/oc.js @@ -2,7 +2,7 @@ OC.L10N.register( "encryption", { "Missing recovery key password" : "Senhal de la clau de recuperacion mancant", - "Please repeat the recovery key password" : "Répétez lo senhal de la clau de recuperacion", + "Please repeat the recovery key password" : "Repetètz lo senhal de la clau de recuperacion", "Repeated recovery key password does not match the provided recovery key password" : "Lo senhal de la clau de recuperacion e sa repeticion son pas identics.", "Recovery key successfully enabled" : "Clau de recuperacion activada amb succès", "Could not enable recovery key. Please check your recovery key password!" : "Impossible d'activar la clau de recuperacion. Verificatz lo senhal de vòstra clau de recuperacion !", @@ -25,10 +25,15 @@ 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." : "Vòstra clau privada pel chiframent es pas valida ! Metètz a jorn lo senhal de vòstra clau privada dins vòstres paramètres personals per recuperar l'accès a vòstres fichièrs chifrats.", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicacion de chiframent es activada mas vòstras claus son pas inicializadas. Desconnectatz-vos e puèi reconnectatz-vos.", "Encryption App is enabled and ready" : "L'aplicacion de chiframent es activada e prèsta", + "one-time password for server-side-encryption" : "Senhal d'usatge unic pel chiframent costat servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de deschifrar aqueste fichièr : s'agÃs probablament d'un fichièr partejat. Demandatz al proprietari del fichièr de lo partejar tornamai amb vos.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de legir aqueste fichièr, s'agÃs probablament d'un fichièr partejat. Demandatz al proprietari del fichièr de lo repartejar amb vos. ", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjorn,\n\nL'administrator a activat lo chiframent sul servidor. Vòstres fichièrs son estats chifrats amb lo senhal seguent :\n\n%s\n\nSeguissètz aquelas instruccions :\n\n1. Connectatz-vos a l'interfà cia web e trobatz la seccion \"Modul de chiframent de basa d'ownCloud\" dins vòstres paramètres personals ;\n\n2. Entratz lo senhal provesit çaisús dins lo camp \"Ancian senhal de connexion\";\n\n3. Entratz lo senhal qu'utilizatz actualament per vos connectar dins lo camp \"Senhal de connexion actual\" ;\n\n4. Validatz en clicant sul boton \"Metre a jorn lo senhal de vòstra clau privada\".\n", "The share will expire on %s." : "Lo partiment expirarà lo %s.", "Cheers!" : "A lèu !", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjorn,\n<br><br>\nL'administrator a activat lo chiframent sul servidor. Vòstres fichièrs son estats chifrats amb lo senhal seguent :\n\n<p style=\"font-family: monospace;\"><b>%s</b></p>\n\n<p>\nSeguissètz aquelas instruccions :\n<ol>\n<li>Connectatz-vos a l'interfà cia web e trobatz la seccion <em>\"Modul de chiframent de basa d'ownCloud\"</em> dins vòstres paramètres personals;</li>\n<li>Entratz lo senhal provesit çaisús dins lo camp <em>\"Ancian senhal de connexion\"</em>;</li>\n<li>Entratz lo senhal qu'utilizatz actualament per vos connectar dins lo camp <em>\"Senhal de connexion actual\"</em>;</li>\n<li>Validatz en clicant sul boton <em>\"Metre a jorn lo senhal de vòstra clau privada\"</em>.</li>\n</ol>\n</p>", + "Encrypt the home storage" : "Chifrar l'espaci d'emmagazinatge principal", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activacion d'aquesta opcion chifra totes los fichièrs de l'emmagazinatge principal, siquenon sols los espacis d'emmagazinatge extèrnes serà n chifrats", "Enable recovery key" : "Activar la clau de recuperacion", "Disable recovery key" : "Desactivar la clau de recuperacion", "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 clau de recuperacion es una clau suplementà ria utilizada per chifrar los fichièrs. Permet de recuperar los fichièrs dels utilizaires se doblidan lor senhal.", diff --git a/apps/encryption/l10n/oc.json b/apps/encryption/l10n/oc.json index ec4406dd77e644e4c5e24a7fe4eab2874bd24cc3..27e9a20f63da28be48e80b5d15bfe87834ba3648 100644 --- a/apps/encryption/l10n/oc.json +++ b/apps/encryption/l10n/oc.json @@ -1,6 +1,6 @@ { "translations": { "Missing recovery key password" : "Senhal de la clau de recuperacion mancant", - "Please repeat the recovery key password" : "Répétez lo senhal de la clau de recuperacion", + "Please repeat the recovery key password" : "Repetètz lo senhal de la clau de recuperacion", "Repeated recovery key password does not match the provided recovery key password" : "Lo senhal de la clau de recuperacion e sa repeticion son pas identics.", "Recovery key successfully enabled" : "Clau de recuperacion activada amb succès", "Could not enable recovery key. Please check your recovery key password!" : "Impossible d'activar la clau de recuperacion. Verificatz lo senhal de vòstra clau de recuperacion !", @@ -23,10 +23,15 @@ "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Vòstra clau privada pel chiframent es pas valida ! Metètz a jorn lo senhal de vòstra clau privada dins vòstres paramètres personals per recuperar l'accès a vòstres fichièrs chifrats.", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicacion de chiframent es activada mas vòstras claus son pas inicializadas. Desconnectatz-vos e puèi reconnectatz-vos.", "Encryption App is enabled and ready" : "L'aplicacion de chiframent es activada e prèsta", + "one-time password for server-side-encryption" : "Senhal d'usatge unic pel chiframent costat servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de deschifrar aqueste fichièr : s'agÃs probablament d'un fichièr partejat. Demandatz al proprietari del fichièr de lo partejar tornamai amb vos.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de legir aqueste fichièr, s'agÃs probablament d'un fichièr partejat. Demandatz al proprietari del fichièr de lo repartejar amb vos. ", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjorn,\n\nL'administrator a activat lo chiframent sul servidor. Vòstres fichièrs son estats chifrats amb lo senhal seguent :\n\n%s\n\nSeguissètz aquelas instruccions :\n\n1. Connectatz-vos a l'interfà cia web e trobatz la seccion \"Modul de chiframent de basa d'ownCloud\" dins vòstres paramètres personals ;\n\n2. Entratz lo senhal provesit çaisús dins lo camp \"Ancian senhal de connexion\";\n\n3. Entratz lo senhal qu'utilizatz actualament per vos connectar dins lo camp \"Senhal de connexion actual\" ;\n\n4. Validatz en clicant sul boton \"Metre a jorn lo senhal de vòstra clau privada\".\n", "The share will expire on %s." : "Lo partiment expirarà lo %s.", "Cheers!" : "A lèu !", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjorn,\n<br><br>\nL'administrator a activat lo chiframent sul servidor. Vòstres fichièrs son estats chifrats amb lo senhal seguent :\n\n<p style=\"font-family: monospace;\"><b>%s</b></p>\n\n<p>\nSeguissètz aquelas instruccions :\n<ol>\n<li>Connectatz-vos a l'interfà cia web e trobatz la seccion <em>\"Modul de chiframent de basa d'ownCloud\"</em> dins vòstres paramètres personals;</li>\n<li>Entratz lo senhal provesit çaisús dins lo camp <em>\"Ancian senhal de connexion\"</em>;</li>\n<li>Entratz lo senhal qu'utilizatz actualament per vos connectar dins lo camp <em>\"Senhal de connexion actual\"</em>;</li>\n<li>Validatz en clicant sul boton <em>\"Metre a jorn lo senhal de vòstra clau privada\"</em>.</li>\n</ol>\n</p>", + "Encrypt the home storage" : "Chifrar l'espaci d'emmagazinatge principal", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activacion d'aquesta opcion chifra totes los fichièrs de l'emmagazinatge principal, siquenon sols los espacis d'emmagazinatge extèrnes serà n chifrats", "Enable recovery key" : "Activar la clau de recuperacion", "Disable recovery key" : "Desactivar la clau de recuperacion", "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 clau de recuperacion es una clau suplementà ria utilizada per chifrar los fichièrs. Permet de recuperar los fichièrs dels utilizaires se doblidan lor senhal.", diff --git a/apps/encryption/lib/util.php b/apps/encryption/lib/util.php index 62c9dc6dc5f0fcd3d9c5d0012e6bb85e0e1f46c1..62907f8a460e9f2be7132e9532c0da3bfb8c0d64 100644 --- a/apps/encryption/lib/util.php +++ b/apps/encryption/lib/util.php @@ -115,7 +115,7 @@ class Util { } /** - * check if the home storage should be encrypted + * set the home storage encryption on/off * * @param bool $encryptHomeStorage */ diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index 84d342e85d98edf49fa79fc041e86eccec4a18b0..4f8cd7ab497839fe475a2a9c01d8b94f24864c83 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -30,10 +30,10 @@ OC.L10N.register( "Favorites" : "Foretrukne", "Home" : "Hjemme", "Close" : "Luk", + "Upload cancelled." : "Upload afbrudt.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke upload {filename} da det er enten en mappe eller indholder 0 bytes.", "Total file size {size1} exceeds upload limit {size2}" : "Den totale filstørrelse {size1} er større end uploadgrænsen {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkeligt friplads. Du uplaoder {size1} men der er kun {size2} tilbage", - "Upload cancelled." : "Upload afbrudt.", "Could not get result from server." : "Kunne ikke hente resultat fra server.", "File upload is in progress. Leaving the page now will cancel the upload." : "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.", "Actions" : "Handlinger", @@ -75,12 +75,12 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Gjort til foretrukken", "Favorite" : "Foretrukken", - "{newname} already exists" : "{newname} eksistere allerede", - "Upload" : "Upload", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekst file.txt", "Folder" : "Mappe", "New folder" : "Ny Mappe", + "{newname} already exists" : "{newname} eksistere allerede", + "Upload" : "Upload", "An error occurred while trying to update the tags" : "Der opstod en fejl under forsøg pÃ¥ at opdatere mærkerne", "A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>", "A file or folder has been <strong>changed</strong>" : "En fil eller mappe er blevet <strong>ændret</strong>", @@ -96,6 +96,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s slettede %1$s", "You restored %1$s" : "Du gendannede %1$s", "%2$s restored %1$s" : "%2$s gendannede %1$s", + "Changed by %2$s" : "Ændret af %2$s", + "Deleted by %2$s" : "Slettet af %2$s", + "Restored by %2$s" : "Gendannet af %2$s", "%s could not be renamed as it has been deleted" : "%s kunne ikke omdøbes, da den er blevet slettet", "%s could not be renamed" : "%s kunne ikke omdøbes", "Upload (max. %s)" : "Upload (max. %s)", diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index 53de8656af272bb22a9537a9a00fcbc9e054773c..d0fe2575d3e0d8d076b2e3b7d06899ebcfb3c44c 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -28,10 +28,10 @@ "Favorites" : "Foretrukne", "Home" : "Hjemme", "Close" : "Luk", + "Upload cancelled." : "Upload afbrudt.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke upload {filename} da det er enten en mappe eller indholder 0 bytes.", "Total file size {size1} exceeds upload limit {size2}" : "Den totale filstørrelse {size1} er større end uploadgrænsen {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkeligt friplads. Du uplaoder {size1} men der er kun {size2} tilbage", - "Upload cancelled." : "Upload afbrudt.", "Could not get result from server." : "Kunne ikke hente resultat fra server.", "File upload is in progress. Leaving the page now will cancel the upload." : "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.", "Actions" : "Handlinger", @@ -73,12 +73,12 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Gjort til foretrukken", "Favorite" : "Foretrukken", - "{newname} already exists" : "{newname} eksistere allerede", - "Upload" : "Upload", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekst file.txt", "Folder" : "Mappe", "New folder" : "Ny Mappe", + "{newname} already exists" : "{newname} eksistere allerede", + "Upload" : "Upload", "An error occurred while trying to update the tags" : "Der opstod en fejl under forsøg pÃ¥ at opdatere mærkerne", "A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>", "A file or folder has been <strong>changed</strong>" : "En fil eller mappe er blevet <strong>ændret</strong>", @@ -94,6 +94,9 @@ "%2$s deleted %1$s" : "%2$s slettede %1$s", "You restored %1$s" : "Du gendannede %1$s", "%2$s restored %1$s" : "%2$s gendannede %1$s", + "Changed by %2$s" : "Ændret af %2$s", + "Deleted by %2$s" : "Slettet af %2$s", + "Restored by %2$s" : "Gendannet af %2$s", "%s could not be renamed as it has been deleted" : "%s kunne ikke omdøbes, da den er blevet slettet", "%s could not be renamed" : "%s kunne ikke omdøbes", "Upload (max. %s)" : "Upload (max. %s)", diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index 063789aae5b191720a0183629c0ed07980a43f4a..f2ea62593c1abac24bfb1767385c730b6ddcb62d 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -30,10 +30,10 @@ OC.L10N.register( "Favorites" : "MÄ—gstamiausi", "Home" : "Namų", "Close" : "Užverti", + "Upload cancelled." : "Ä®kÄ—limas atÅ¡auktas.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai katalogas arba yra 0 baitų dydžio", "Total file size {size1} exceeds upload limit {size2}" : "Visas failo dydis {size1} virÅ¡yja įkÄ—limo limitÄ… {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Keliate {size1}, bet tik {size2} yra likÄ™", - "Upload cancelled." : "Ä®kÄ—limas atÅ¡auktas.", "Could not get result from server." : "Nepavyko gauti rezultato iÅ¡ serverio.", "File upload is in progress. Leaving the page now will cancel the upload." : "Failo įkÄ—limas pradÄ—tas. Jei paliksite šį puslapį, įkÄ—limas nutrÅ«ks.", "Actions" : "Veiksmai", @@ -71,12 +71,16 @@ OC.L10N.register( "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "JÅ«sų vieta serveryje beveik visa užimta ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["atitikmuo „{filter}“","atitikmenys „{filter}“","atitikmenų „{filter}“"], + "Path" : "Kelias", + "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], "Favorited" : "PažymÄ—ta mÄ—gstamu", "Favorite" : "MÄ—giamas", - "Upload" : "Ä®kelti", "Text file" : "Teksto failas", + "New text file.txt" : "Naujas tekstas file.txt", "Folder" : "Katalogas", "New folder" : "Naujas aplankas", + "{newname} already exists" : "{newname} jau egzistuoja", + "Upload" : "Ä®kelti", "An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida", "A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>", "A file or folder has been <strong>changed</strong>" : "Failas ar aplankas buvo <strong>pakeistas</strong>", @@ -92,12 +96,16 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s iÅ¡trynÄ— %1$s", "You restored %1$s" : "JÅ«s atkÅ«rÄ—te %1$s", "%2$s restored %1$s" : "%2$s atkurta %1$s", + "Changed by %2$s" : "PakeitÄ— %2$s", + "Deleted by %2$s" : "IÅ¡trynÄ— %2$s", + "Restored by %2$s" : "AtkÅ«rÄ— %2$s", "%s could not be renamed as it has been deleted" : "%s negalÄ—jo bÅ«ti pervadintas, nes buvo iÅ¡trintas", "%s could not be renamed" : "%s negali bÅ«ti pervadintas", "Upload (max. %s)" : "Ä®kelti (maks. %s)", "File handling" : "Failų tvarkymas", "Maximum upload size" : "Maksimalus įkeliamo failo dydis", "max. possible: " : "maks. galima:", + "With PHP-FPM this value may take up to 5 minutes to take effect after saving." : "Su PHP-FPM reikÅ¡mÄ—s atnaujinimas gali užtrukti iki 5 minuÄių po pakeitimo.", "Save" : "IÅ¡saugoti", "Can not be edited from here due to insufficient permissions." : "Negali bÅ«ti redaguojamas iÅ¡ Äia dÄ—l leidimų trÅ«kumo.", "Settings" : "Nustatymai", diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json index d7aa2cc9c35af2451f62544792577cf7a9aa5eec..564558962825e58052df9dc4536a1116b0839c79 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -28,10 +28,10 @@ "Favorites" : "MÄ—gstamiausi", "Home" : "Namų", "Close" : "Užverti", + "Upload cancelled." : "Ä®kÄ—limas atÅ¡auktas.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai katalogas arba yra 0 baitų dydžio", "Total file size {size1} exceeds upload limit {size2}" : "Visas failo dydis {size1} virÅ¡yja įkÄ—limo limitÄ… {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Keliate {size1}, bet tik {size2} yra likÄ™", - "Upload cancelled." : "Ä®kÄ—limas atÅ¡auktas.", "Could not get result from server." : "Nepavyko gauti rezultato iÅ¡ serverio.", "File upload is in progress. Leaving the page now will cancel the upload." : "Failo įkÄ—limas pradÄ—tas. Jei paliksite šį puslapį, įkÄ—limas nutrÅ«ks.", "Actions" : "Veiksmai", @@ -69,12 +69,16 @@ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "JÅ«sų vieta serveryje beveik visa užimta ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["atitikmuo „{filter}“","atitikmenys „{filter}“","atitikmenų „{filter}“"], + "Path" : "Kelias", + "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], "Favorited" : "PažymÄ—ta mÄ—gstamu", "Favorite" : "MÄ—giamas", - "Upload" : "Ä®kelti", "Text file" : "Teksto failas", + "New text file.txt" : "Naujas tekstas file.txt", "Folder" : "Katalogas", "New folder" : "Naujas aplankas", + "{newname} already exists" : "{newname} jau egzistuoja", + "Upload" : "Ä®kelti", "An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida", "A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>", "A file or folder has been <strong>changed</strong>" : "Failas ar aplankas buvo <strong>pakeistas</strong>", @@ -90,12 +94,16 @@ "%2$s deleted %1$s" : "%2$s iÅ¡trynÄ— %1$s", "You restored %1$s" : "JÅ«s atkÅ«rÄ—te %1$s", "%2$s restored %1$s" : "%2$s atkurta %1$s", + "Changed by %2$s" : "PakeitÄ— %2$s", + "Deleted by %2$s" : "IÅ¡trynÄ— %2$s", + "Restored by %2$s" : "AtkÅ«rÄ— %2$s", "%s could not be renamed as it has been deleted" : "%s negalÄ—jo bÅ«ti pervadintas, nes buvo iÅ¡trintas", "%s could not be renamed" : "%s negali bÅ«ti pervadintas", "Upload (max. %s)" : "Ä®kelti (maks. %s)", "File handling" : "Failų tvarkymas", "Maximum upload size" : "Maksimalus įkeliamo failo dydis", "max. possible: " : "maks. galima:", + "With PHP-FPM this value may take up to 5 minutes to take effect after saving." : "Su PHP-FPM reikÅ¡mÄ—s atnaujinimas gali užtrukti iki 5 minuÄių po pakeitimo.", "Save" : "IÅ¡saugoti", "Can not be edited from here due to insufficient permissions." : "Negali bÅ«ti redaguojamas iÅ¡ Äia dÄ—l leidimų trÅ«kumo.", "Settings" : "Nustatymai", diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js index 1c655bfc990109d1fc1be20c106e261aa6f0a760..5ede97f70dba267ad9f095ea97800c900f4df716 100644 --- a/apps/files_external/l10n/cs_CZ.js +++ b/apps/files_external/l10n/cs_CZ.js @@ -100,7 +100,7 @@ OC.L10N.register( "Advanced settings" : "PokroÄilá nastavenÃ", "Delete" : "Smazat", "Add storage" : "PÅ™idat úložiÅ¡tÄ›", - "Allow users to mount external storages" : "Povolit uživatelům pÅ™ipojenà externÃch úložiÅ¡Å¥", + "Allow users to mount external storage" : "Povolit uživatelům pÅ™ipojenà externÃho úložiÅ¡tÄ›", "Allow users to mount the following external storage" : "Povolit uživatelů pÅ™ipojit následujÃcà externà úložiÅ¡tÄ›" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json index 50d12af8052bdcaeee1f0a8fd8791bc52bc43ee6..d15e2424bc708d5f4a1e7ae11ab17e6f2bc2d163 100644 --- a/apps/files_external/l10n/cs_CZ.json +++ b/apps/files_external/l10n/cs_CZ.json @@ -98,7 +98,7 @@ "Advanced settings" : "PokroÄilá nastavenÃ", "Delete" : "Smazat", "Add storage" : "PÅ™idat úložiÅ¡tÄ›", - "Allow users to mount external storages" : "Povolit uživatelům pÅ™ipojenà externÃch úložiÅ¡Å¥", + "Allow users to mount external storage" : "Povolit uživatelům pÅ™ipojenà externÃho úložiÅ¡tÄ›", "Allow users to mount the following external storage" : "Povolit uživatelů pÅ™ipojit následujÃcà externà úložiÅ¡tÄ›" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" } \ No newline at end of file diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js index 8b4d089a964e5e796e253dd0de21877dd38cd292..df3bdcedcfd7e21bb6ea2d1468d2014f5ef5e91f 100644 --- a/apps/files_external/l10n/el.js +++ b/apps/files_external/l10n/el.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Μη επιτÏεπόμενος μηχανισμός πιστοποίησης \"%s\"", "Unsatisfied backend parameters" : "Ελλιπείς παÏάμετÏοι συστήματος", "Unsatisfied authentication mechanism parameters" : "Ελλιπείς παÏάμετÏοι Î¼Î·Ï‡Î±Î½Î¹ÏƒÎ¼Î¿Ï Ï€Î¹ÏƒÏ„Î¿Ï€Î¿Î¯Î·ÏƒÎ·Ï‚", + "Insufficient data: %s" : "Μη επαÏκή δεδομÎνα: %s", "Personal" : "Î Ïοσωπικά", "System" : "ΣÏστημα", "Grant access" : "ΠαÏοχή Ï€Ïόσβασης", diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json index 74a9aa298ef5807e0ae7f59d2d5c5e6012fbab1f..ee5131b9f642e9fe9b07157b0f7dabfd523ffd25 100644 --- a/apps/files_external/l10n/el.json +++ b/apps/files_external/l10n/el.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "Μη επιτÏεπόμενος μηχανισμός πιστοποίησης \"%s\"", "Unsatisfied backend parameters" : "Ελλιπείς παÏάμετÏοι συστήματος", "Unsatisfied authentication mechanism parameters" : "Ελλιπείς παÏάμετÏοι Î¼Î·Ï‡Î±Î½Î¹ÏƒÎ¼Î¿Ï Ï€Î¹ÏƒÏ„Î¿Ï€Î¿Î¯Î·ÏƒÎ·Ï‚", + "Insufficient data: %s" : "Μη επαÏκή δεδομÎνα: %s", "Personal" : "Î Ïοσωπικά", "System" : "ΣÏστημα", "Grant access" : "ΠαÏοχή Ï€Ïόσβασης", diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index cb31cd7c53f8d0a46a6d0b1fb5f0fd05c81bb7f5..5415e8963cd77ea596a9d7f02de910ce4001b443 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -88,7 +88,6 @@ OC.L10N.register( "Advanced settings" : "Configuración avanzada", "Delete" : "Eliminar", "Add storage" : "Añadir almacenamiento", - "Allow users to mount external storages" : "Permitir a los usuarios montar almacenamientos externos", "Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index d71effbd84a86ff4a5dd06eaf54457488383ff14..10cbf0c974a900de96c1d091f12a9cee9a20976d 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -86,7 +86,6 @@ "Advanced settings" : "Configuración avanzada", "Delete" : "Eliminar", "Add storage" : "Añadir almacenamiento", - "Allow users to mount external storages" : "Permitir a los usuarios montar almacenamientos externos", "Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/fi_FI.js b/apps/files_external/l10n/fi_FI.js index 18e4db069de9f679fdf41f6ae59f8ad7a5a26667..f91dec933108d52da63a378b2b5b69d1289b16fc 100644 --- a/apps/files_external/l10n/fi_FI.js +++ b/apps/files_external/l10n/fi_FI.js @@ -62,6 +62,7 @@ OC.L10N.register( "Username as share" : "Käyttäjänimi jakona", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Palvelun nimi", + "Request timeout (seconds)" : "Pyynnön aikakatkaisu (sekunneissa)", "<b>Note:</b> " : "<b>Huomio:</b> ", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n cURL-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan cURL-tuki käyttöön.", "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n FTP-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan FTP-tuki käyttöön.", @@ -78,7 +79,7 @@ OC.L10N.register( "Advanced settings" : "Lisäasetukset", "Delete" : "Poista", "Add storage" : "Lisää tallennustila", - "Allow users to mount external storages" : "Salli käyttäjien liittää erillisiä tallennustiloja", + "Allow users to mount external storage" : "Salli käyttäjien liittää erillisiä tallennustiloja", "Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/fi_FI.json b/apps/files_external/l10n/fi_FI.json index d879826f90167447f61c424a950f54972d4cd590..a2033b4c578a5e73b0cf0eab7311744357c455d7 100644 --- a/apps/files_external/l10n/fi_FI.json +++ b/apps/files_external/l10n/fi_FI.json @@ -60,6 +60,7 @@ "Username as share" : "Käyttäjänimi jakona", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Palvelun nimi", + "Request timeout (seconds)" : "Pyynnön aikakatkaisu (sekunneissa)", "<b>Note:</b> " : "<b>Huomio:</b> ", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n cURL-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan cURL-tuki käyttöön.", "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Huomio:</b> PHP:n FTP-tuki ei ole käytössä tai sitä ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan FTP-tuki käyttöön.", @@ -76,7 +77,7 @@ "Advanced settings" : "Lisäasetukset", "Delete" : "Poista", "Add storage" : "Lisää tallennustila", - "Allow users to mount external storages" : "Salli käyttäjien liittää erillisiä tallennustiloja", + "Allow users to mount external storage" : "Salli käyttäjien liittää erillisiä tallennustiloja", "Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index b62896fae571cdbfc84257afba79c528497f2502..3358b36cf8e44cffc38e4935c195b5bc8a9cac9e 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -102,7 +102,7 @@ OC.L10N.register( "Advanced settings" : "Paramètres avancés", "Delete" : "Supprimer", "Add storage" : "Ajouter un support de stockage", - "Allow users to mount external storages" : "Autoriser les utilisateurs à monter des espaces de stockage externes", + "Allow users to mount external storage" : "Autoriser les utilisateurs à monter l'espace de stockage externe", "Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index ceb38a2ace695e5e1f3dc69764c2fc6a8299b91a..684f2b5197075aa32501137c0f29e450ed1cfd11 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -100,7 +100,7 @@ "Advanced settings" : "Paramètres avancés", "Delete" : "Supprimer", "Add storage" : "Ajouter un support de stockage", - "Allow users to mount external storages" : "Autoriser les utilisateurs à monter des espaces de stockage externes", + "Allow users to mount external storage" : "Autoriser les utilisateurs à monter l'espace de stockage externe", "Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants" },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js index 29c08c0cbdf23d6d6bb2db71739c2a4794f18c7f..b01e13e6085707556f32f3fea6fa3acedb143fbd 100644 --- a/apps/files_external/l10n/id.js +++ b/apps/files_external/l10n/id.js @@ -101,7 +101,6 @@ OC.L10N.register( "Advanced settings" : "Pengaturan Lanjutan", "Delete" : "Hapus", "Add storage" : "Tambahkan penyimpanan", - "Allow users to mount external storages" : "Izinkan pengguna untuk me-mount penyimpanan eksternal", "Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json index 81491e0f84eedcfb1f4d1e1e0792ce1230043a7b..383850199ac2fd4ff5d10f13adacf78203805a86 100644 --- a/apps/files_external/l10n/id.json +++ b/apps/files_external/l10n/id.json @@ -99,7 +99,6 @@ "Advanced settings" : "Pengaturan Lanjutan", "Delete" : "Hapus", "Add storage" : "Tambahkan penyimpanan", - "Allow users to mount external storages" : "Izinkan pengguna untuk me-mount penyimpanan eksternal", "Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js index 1727924f18eb1686b662368a9330ac2bafc42239..8e126abe93b8e5222808193b84ecf90f6d52ff46 100644 --- a/apps/files_external/l10n/it.js +++ b/apps/files_external/l10n/it.js @@ -102,7 +102,7 @@ OC.L10N.register( "Advanced settings" : "Impostazioni avanzate", "Delete" : "Elimina", "Add storage" : "Aggiungi archiviazione", - "Allow users to mount external storages" : "Consenti agli utenti di montare archiviazioni esterne", + "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne", "Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json index 19d86a6196ade6227b8ef63c2c13594c4462ba39..e21cf5973d26f6f22c8b752f4394d905deec6f96 100644 --- a/apps/files_external/l10n/it.json +++ b/apps/files_external/l10n/it.json @@ -100,7 +100,7 @@ "Advanced settings" : "Impostazioni avanzate", "Delete" : "Elimina", "Add storage" : "Aggiungi archiviazione", - "Allow users to mount external storages" : "Consenti agli utenti di montare archiviazioni esterne", + "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne", "Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index b766f3010e64b5f509ac48ce1a62d4a50207f34c..c9f489928cba13973d1006559465a6629e3d2215 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -102,7 +102,6 @@ OC.L10N.register( "Advanced settings" : "詳細è¨å®š", "Delete" : "削除", "Add storage" : "ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚’è¿½åŠ ", - "Allow users to mount external storages" : "ユーザーã«å¤–部ストレージã®ãƒžã‚¦ãƒ³ãƒˆã‚’許å¯ã™ã‚‹", "Allow users to mount the following external storage" : "ユーザーã«ä»¥ä¸‹ã®å¤–部ストレージã®ãƒžã‚¦ãƒ³ãƒˆã‚’許å¯ã™ã‚‹" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index b9a3eda0566b68ca31d2b6250ef3b27711329147..1e52d429a2cf5f4bff5bb44c3e721d85abf543bc 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -100,7 +100,6 @@ "Advanced settings" : "詳細è¨å®š", "Delete" : "削除", "Add storage" : "ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚’è¿½åŠ ", - "Allow users to mount external storages" : "ユーザーã«å¤–部ストレージã®ãƒžã‚¦ãƒ³ãƒˆã‚’許å¯ã™ã‚‹", "Allow users to mount the following external storage" : "ユーザーã«ä»¥ä¸‹ã®å¤–部ストレージã®ãƒžã‚¦ãƒ³ãƒˆã‚’許å¯ã™ã‚‹" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files_external/l10n/nb_NO.js b/apps/files_external/l10n/nb_NO.js index 1859d5a72678366ed5d4e3915cf47cdae98d560e..ecafac048c0fd8661a021bb153a4ff49b8313ff5 100644 --- a/apps/files_external/l10n/nb_NO.js +++ b/apps/files_external/l10n/nb_NO.js @@ -101,7 +101,6 @@ OC.L10N.register( "Advanced settings" : "Avanserte innstillinger", "Delete" : "Slett", "Add storage" : "Legg til lagringsplass", - "Allow users to mount external storages" : "Tillat at brukere kobler opp eksterne lagre", "Allow users to mount the following external storage" : "Tillat brukere Ã¥ koble opp følgende eksterne lagring" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nb_NO.json b/apps/files_external/l10n/nb_NO.json index 669751aa00f818a96dd8b3b02dcaab9652e5888b..9a7a2ae6287c52ea373fcf3ad8c00b6fb9008974 100644 --- a/apps/files_external/l10n/nb_NO.json +++ b/apps/files_external/l10n/nb_NO.json @@ -99,7 +99,6 @@ "Advanced settings" : "Avanserte innstillinger", "Delete" : "Slett", "Add storage" : "Legg til lagringsplass", - "Allow users to mount external storages" : "Tillat at brukere kobler opp eksterne lagre", "Allow users to mount the following external storage" : "Tillat brukere Ã¥ koble opp følgende eksterne lagring" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js index d26f5595f1f15f13e21426ea83e95a5f7616b9e9..92f01018a617b2801f98333e13125ca74aa92050 100644 --- a/apps/files_external/l10n/nl.js +++ b/apps/files_external/l10n/nl.js @@ -102,7 +102,6 @@ OC.L10N.register( "Advanced settings" : "Geavanceerde instellingen", "Delete" : "Verwijder", "Add storage" : "Toevoegen opslag", - "Allow users to mount external storages" : "Sta gebruikers toe om een externe opslag aan te koppelen.", "Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json index cb1db40e3c9e6def6512b7307bdc7f96db1a2101..9d56dd127c305d3ab82469cdb53c10663ec716c0 100644 --- a/apps/files_external/l10n/nl.json +++ b/apps/files_external/l10n/nl.json @@ -100,7 +100,6 @@ "Advanced settings" : "Geavanceerde instellingen", "Delete" : "Verwijder", "Add storage" : "Toevoegen opslag", - "Allow users to mount external storages" : "Sta gebruikers toe om een externe opslag aan te koppelen.", "Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/oc.js b/apps/files_external/l10n/oc.js index 4771b564edb66f5f6c4239fd3a3c2e5fa5a11506..4809cf923526f2931dee3a0837d47eb3b3b7328b 100644 --- a/apps/files_external/l10n/oc.js +++ b/apps/files_external/l10n/oc.js @@ -101,7 +101,6 @@ OC.L10N.register( "Advanced settings" : "Paramètres avançats", "Delete" : "Suprimir", "Add storage" : "Apondre un supòrt d'emmagazinatge", - "Allow users to mount external storages" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes", "Allow users to mount the following external storage" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes seguents" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_external/l10n/oc.json b/apps/files_external/l10n/oc.json index f89691dddde9b977f34019c45668deff8b24db10..30163f958fccf2ec19299d761164bc12d6e1e16d 100644 --- a/apps/files_external/l10n/oc.json +++ b/apps/files_external/l10n/oc.json @@ -99,7 +99,6 @@ "Advanced settings" : "Paramètres avançats", "Delete" : "Suprimir", "Add storage" : "Apondre un supòrt d'emmagazinatge", - "Allow users to mount external storages" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes", "Allow users to mount the following external storage" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes seguents" },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 1830ab1f993af313f548703770d078e216031454..92bc16355d31f6f81a536a7bae25d0b82687be1d 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -102,7 +102,7 @@ OC.L10N.register( "Advanced settings" : "Configurações avançadas", "Delete" : "Excluir", "Add storage" : "Adicionar Armazenamento", - "Allow users to mount external storages" : "Permitir que usuários possam realizar armazenamentos externos", + "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo", "Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index d33e4eba927c1f08ef78833d6e6a11a0ec065720..bb6e0a96cff9a68c0577d3f7e74a648de674a9b6 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -100,7 +100,7 @@ "Advanced settings" : "Configurações avançadas", "Delete" : "Excluir", "Add storage" : "Adicionar Armazenamento", - "Allow users to mount external storages" : "Permitir que usuários possam realizar armazenamentos externos", + "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo", "Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo" },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js index ce816fa01d284f0db37aee44dd0dfd68860c1c19..4e8b3245e660760901641b201a450d7d50bd4461 100644 --- a/apps/files_external/l10n/pt_PT.js +++ b/apps/files_external/l10n/pt_PT.js @@ -95,7 +95,6 @@ OC.L10N.register( "Advanced settings" : "Definições avançadas", "Delete" : "Apagar", "Add storage" : "Adicionar armazenamento", - "Allow users to mount external storages" : "Permitir que os utilizadores montem armazenamentos externos", "Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json index 89926c0fe27e3d43b755a5e2be4771590aa7266d..51333429106dc07ba5c64360085caacb2c3f9815 100644 --- a/apps/files_external/l10n/pt_PT.json +++ b/apps/files_external/l10n/pt_PT.json @@ -93,7 +93,6 @@ "Advanced settings" : "Definições avançadas", "Delete" : "Apagar", "Add storage" : "Adicionar armazenamento", - "Allow users to mount external storages" : "Permitir que os utilizadores montem armazenamentos externos", "Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index dd8f5c9bdf5737467a5a858c65b27f600b81f745..5550ea780ab8bcf85c793d72b4afa5b8cbe15aa7 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -101,7 +101,6 @@ OC.L10N.register( "Advanced settings" : "РаÑширенные наÑтройки", "Delete" : "Удалить", "Add storage" : "Добавить хранилище", - "Allow users to mount external storages" : "Разрешить пользователÑм подключать внешние хранилища", "Allow users to mount the following external storage" : "Разрешить пользователÑм монтировать Ñледующие ÑервиÑÑ‹ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index 040442743792156ebc72fdfd95e3f9801a353d4a..52792a3f09a5673df96c36b9890adf8263030064 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -99,7 +99,6 @@ "Advanced settings" : "РаÑширенные наÑтройки", "Delete" : "Удалить", "Add storage" : "Добавить хранилище", - "Allow users to mount external storages" : "Разрешить пользователÑм подключать внешние хранилища", "Allow users to mount the following external storage" : "Разрешить пользователÑм монтировать Ñледующие ÑервиÑÑ‹ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" } \ No newline at end of file diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js index 85d8c251c890177a09002e0e9cd8825e655c19fc..f8e5c5a27dce65cd5ceb69a83ebbb6f9e1f876bc 100644 --- a/apps/files_external/l10n/sq.js +++ b/apps/files_external/l10n/sq.js @@ -100,7 +100,7 @@ OC.L10N.register( "Advanced settings" : "Rregullime të mëtejshme", "Delete" : "Fshije", "Add storage" : "Shtoni depozitë", - "Allow users to mount external storages" : "Lejoju përdoruesve të montojnë depozita të jashtme", + "Allow users to mount external storage" : "Lejoju përdoruesve të montojnë depozita të jashtme", "Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json index c200be40d0315bc58dfc97a81e01c7a1edd4cc24..0da8e9406bb2dbb2c0dbf842a45baf1a9c505b2b 100644 --- a/apps/files_external/l10n/sq.json +++ b/apps/files_external/l10n/sq.json @@ -98,7 +98,7 @@ "Advanced settings" : "Rregullime të mëtejshme", "Delete" : "Fshije", "Add storage" : "Shtoni depozitë", - "Allow users to mount external storages" : "Lejoju përdoruesve të montojnë depozita të jashtme", + "Allow users to mount external storage" : "Lejoju përdoruesve të montojnë depozita të jashtme", "Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files_external/l10n/th_TH.js b/apps/files_external/l10n/th_TH.js index 374725548abccc322efbdce2d65b63980f0bf8d2..4f5eaa534ebc1dc779c9bf6b768a55c4f7e7da38 100644 --- a/apps/files_external/l10n/th_TH.js +++ b/apps/files_external/l10n/th_TH.js @@ -102,7 +102,6 @@ OC.L10N.register( "Advanced settings" : "ตั้งค่าขั้นสูง", "Delete" : "ลบ", "Add storage" : "เพิ่มพื้นที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥", - "Allow users to mount external storages" : "à¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸•à¸´à¸”ตั้งพื้นที่จัดเà¸à¹‡à¸šà¸ ายนà¸à¸", "Allow users to mount the following external storage" : "à¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸•à¸´à¸”ตั้งจัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥à¸ ายนà¸à¸à¸•à¹ˆà¸à¹„ปนี้" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/th_TH.json b/apps/files_external/l10n/th_TH.json index bf8dc67f1aacde0a9b80386d20372f6127b84c92..bd070071705f1beeb2be738cfad1a44f558e764c 100644 --- a/apps/files_external/l10n/th_TH.json +++ b/apps/files_external/l10n/th_TH.json @@ -100,7 +100,6 @@ "Advanced settings" : "ตั้งค่าขั้นสูง", "Delete" : "ลบ", "Add storage" : "เพิ่มพื้นที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥", - "Allow users to mount external storages" : "à¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸•à¸´à¸”ตั้งพื้นที่จัดเà¸à¹‡à¸šà¸ ายนà¸à¸", "Allow users to mount the following external storage" : "à¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸•à¸´à¸”ตั้งจัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥à¸ ายนà¸à¸à¸•à¹ˆà¸à¹„ปนี้" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js index db7bf9750177d21f30435ceaa2e53aff7cc9856c..61f224e4ffe7a135eb99af74e05ac22a4b3a4472 100644 --- a/apps/files_external/l10n/zh_TW.js +++ b/apps/files_external/l10n/zh_TW.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "ä¸è¢«å…許使用驗è‰æ©Ÿåˆ¶ \"%s\"", "Unsatisfied backend parameters" : "無法滿足後端所需的åƒæ•¸æ¢ä»¶", "Unsatisfied authentication mechanism parameters" : "無法滿足驗è‰æ©Ÿåˆ¶æ‰€éœ€çš„åƒæ•¸æ¢ä»¶", + "Insufficient data: %s" : "資料ä¸è¶³: %s", "Personal" : "個人", "System" : "系統", "Grant access" : "å…許å˜å–", @@ -95,7 +96,7 @@ OC.L10N.register( "Advanced settings" : "進階è¨å®š", "Delete" : "刪除", "Add storage" : "å¢žåŠ å„²å˜å€", - "Allow users to mount external storages" : "å…許使用者能自行掛載外部儲å˜", + "Allow users to mount external storage" : "å…許使用者能自行掛載外部儲å˜", "Allow users to mount the following external storage" : "å…許使用者自行掛載以下的外部儲å˜" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json index 760ff7f5841679039ebf7bd21207f95ff04e6786..b9aa234e89e475fef7774d76222c4b208fe5f0ce 100644 --- a/apps/files_external/l10n/zh_TW.json +++ b/apps/files_external/l10n/zh_TW.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "ä¸è¢«å…許使用驗è‰æ©Ÿåˆ¶ \"%s\"", "Unsatisfied backend parameters" : "無法滿足後端所需的åƒæ•¸æ¢ä»¶", "Unsatisfied authentication mechanism parameters" : "無法滿足驗è‰æ©Ÿåˆ¶æ‰€éœ€çš„åƒæ•¸æ¢ä»¶", + "Insufficient data: %s" : "資料ä¸è¶³: %s", "Personal" : "個人", "System" : "系統", "Grant access" : "å…許å˜å–", @@ -93,7 +94,7 @@ "Advanced settings" : "進階è¨å®š", "Delete" : "刪除", "Add storage" : "å¢žåŠ å„²å˜å€", - "Allow users to mount external storages" : "å…許使用者能自行掛載外部儲å˜", + "Allow users to mount external storage" : "å…許使用者能自行掛載外部儲å˜", "Allow users to mount the following external storage" : "å…許使用者自行掛載以下的外部儲å˜" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files_external/service/backendservice.php b/apps/files_external/service/backendservice.php index 1e90247b3e4d40420dbe0391bff3d07c2a8e4e8d..b325517e58aaecfded1e99dbcbfd5bc4cf5a1675 100644 --- a/apps/files_external/service/backendservice.php +++ b/apps/files_external/service/backendservice.php @@ -72,6 +72,11 @@ class BackendService { $this->userMountingBackends = explode(',', $this->config->getAppValue('files_external', 'user_mounting_backends', '') ); + + // if no backend is in the list an empty string is in the array and user mounting is disabled + if ($this->userMountingBackends === ['']) { + $this->userMountingAllowed = false; + } } /** diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js index d31acc37760ec33c0bd9c48c0990b1bf6ded761e..212e281b0d259d2de7bfcc91fde720ebfeda15d6 100644 --- a/apps/files_sharing/l10n/da.js +++ b/apps/files_sharing/l10n/da.js @@ -43,6 +43,14 @@ OC.L10N.register( "%2$s shared %1$s via link" : "%2$s delt %1$s via link", "%2$s shared %1$s with you" : "%2$s delt %1$s med dig", "You shared %1$s via link" : "Du delte %1$s via link", + "Downloaded via public link" : "Downloaded via et offentligt link", + "Shared with %2$s" : "Delt med %2$s", + "Shared with group %2$s" : "Delt med gruppen %2$s", + "Shared with %3$s by %2$s" : "Delt med %3$s af %2$s", + "Shared with group %3$s by %2$s" : "Delt med gruppen %3$s af %2$s", + "Shared via link by %2$s" : "Delt via link af %2$s", + "Shared by %2$s" : "Delt af %2$s", + "Shared via public link" : "Delt via offentligt link", "Shares" : "Delt", "You received %2$s as a remote share from %1$s" : "Du modtog %2$s som en ekstern deling fra %1$s", "Accept" : "Acceptér", diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json index fe702de52e843e000e81211089f5792d0d294aa3..e13c671a0056f3e2a78774e208cb381e0adf757c 100644 --- a/apps/files_sharing/l10n/da.json +++ b/apps/files_sharing/l10n/da.json @@ -41,6 +41,14 @@ "%2$s shared %1$s via link" : "%2$s delt %1$s via link", "%2$s shared %1$s with you" : "%2$s delt %1$s med dig", "You shared %1$s via link" : "Du delte %1$s via link", + "Downloaded via public link" : "Downloaded via et offentligt link", + "Shared with %2$s" : "Delt med %2$s", + "Shared with group %2$s" : "Delt med gruppen %2$s", + "Shared with %3$s by %2$s" : "Delt med %3$s af %2$s", + "Shared with group %3$s by %2$s" : "Delt med gruppen %3$s af %2$s", + "Shared via link by %2$s" : "Delt via link af %2$s", + "Shared by %2$s" : "Delt af %2$s", + "Shared via public link" : "Delt via offentligt link", "Shares" : "Delt", "You received %2$s as a remote share from %1$s" : "Du modtog %2$s som en ekstern deling fra %1$s", "Accept" : "Acceptér", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index e4024492b653c44413c87d9d623b167b052c144a..62150bcc9421ce10ffe01fc6b611f6fc6785c353 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -7,9 +7,9 @@ OC.L10N.register( "Could not authenticate to remote share, password might be wrong" : "Δεν ήταν δυνατή η πιστοποίηση στο απομακÏυσμÎνο διαμοιÏασμÎνο στοιχείο, μποÏεί να είναι λάθος ο κωδικός Ï€Ïόσβασης", "Storage not valid" : "Μη ÎγκυÏος αποθηκευτικός χώÏος", "Couldn't add remote share" : "Αδυναμία Ï€Ïοσθήκης απομακÏυσμÎνου κοινόχÏηστου φακÎλου", - "Shared with you" : "ΔιαμοιÏασμÎνο με εσάς", - "Shared with others" : "ΔιαμοιÏασμÎνο με άλλους", - "Shared by link" : "ΔιαμοιÏασμÎνο μÎσω συνδÎσμου", + "Shared with you" : "ΔιαμοιÏασμÎνα με εσάς", + "Shared with others" : "ΔιαμοιÏασμÎνα με άλλους", + "Shared by link" : "ΔιαμοιÏασμÎνα μÎσω συνδÎσμου", "Nothing shared with you yet" : "ΚανÎνα αÏχείο δεν Îχει διαμοιÏαστεί ακόμα με εσάς.", "Files and folders others share with you will show up here" : "Τα αÏχεία και οι φάκελοι που άλλοι διαμοιÏάζονται με εσάς θα εμφανιστοÏν εδώ", "Nothing shared yet" : "Δεν Îχει διαμοιÏαστεί τίποτα μÎχÏι στιγμής", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index 7bf5c00841ebd29303996b403e93e6d3c8a6ac70..5b23eaeedb54e385c65189c314cbc187c6c54429 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -5,9 +5,9 @@ "Could not authenticate to remote share, password might be wrong" : "Δεν ήταν δυνατή η πιστοποίηση στο απομακÏυσμÎνο διαμοιÏασμÎνο στοιχείο, μποÏεί να είναι λάθος ο κωδικός Ï€Ïόσβασης", "Storage not valid" : "Μη ÎγκυÏος αποθηκευτικός χώÏος", "Couldn't add remote share" : "Αδυναμία Ï€Ïοσθήκης απομακÏυσμÎνου κοινόχÏηστου φακÎλου", - "Shared with you" : "ΔιαμοιÏασμÎνο με εσάς", - "Shared with others" : "ΔιαμοιÏασμÎνο με άλλους", - "Shared by link" : "ΔιαμοιÏασμÎνο μÎσω συνδÎσμου", + "Shared with you" : "ΔιαμοιÏασμÎνα με εσάς", + "Shared with others" : "ΔιαμοιÏασμÎνα με άλλους", + "Shared by link" : "ΔιαμοιÏασμÎνα μÎσω συνδÎσμου", "Nothing shared with you yet" : "ΚανÎνα αÏχείο δεν Îχει διαμοιÏαστεί ακόμα με εσάς.", "Files and folders others share with you will show up here" : "Τα αÏχεία και οι φάκελοι που άλλοι διαμοιÏάζονται με εσάς θα εμφανιστοÏν εδώ", "Nothing shared yet" : "Δεν Îχει διαμοιÏαστεί τίποτα μÎχÏι στιγμής", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index 897bfe457d10e1518776cefb2616559f270d204e..938483266051d6283c23823ffb3ae75156bd687a 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -1,27 +1,87 @@ OC.L10N.register( "files_sharing", { + "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas Å¡iame serveryje", + "The mountpoint name contains invalid characters." : "Prijungimo taÅ¡kas su neleistinais simboliais.", + "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas", + "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis", + "Storage not valid" : "Talpykla negalioja", + "Couldn't add remote share" : "Nepavyko pridÄ—ti nutolusio dalijimosi", + "Shared with you" : "Pasidalinta su tavimi", + "Shared with others" : "Pasidalinta su kitais", + "Shared by link" : "Pasidalinta su nuoroda", + "Nothing shared with you yet" : "Kol kas niekas su tavimi nesidalijama", + "Files and folders others share with you will show up here" : "Failai ir aplankai kurie dalinami ir tau, bus rodomi Äia", + "Nothing shared yet" : "Niekas nepasidalinta", + "Files and folders you share will show up here" : "Failai ir aplankai kuriais daliniesi bus rodomi Äia", + "No shared links" : "NÄ—ra pasidalinimų nuoroda", + "Files and folders you share by link will show up here" : "Failai ir aplankai kuriais daliniesi su nuoroda bus rodomi Äia", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar nori pridÄ—ti nutolusį dalijimÄ…si {name} nuo {owner}@{remote}?", + "Remote share" : "NutolÄ™s dalinimasis", + "Remote share password" : "Nutolusio dalijimosi slaptažodis", "Cancel" : "AtÅ¡aukti", + "Add remote share" : "PridÄ—ti nutolusi dalijimÄ…si", + "You can upload into this folder" : "Gali įkelti į šį aplankÄ…", + "No ownCloud installation (7 or higher) found at {remote}" : "Nerastas ownCloud (7 ar aukÅ¡tesnÄ— versijÄ…) {remote} serveryje.", + "Invalid ownCloud url" : "Neteisinga ownCloud nuoroda", "Shared by" : "Dalinasi", "Sharing" : "Dalijimasis", "A file or folder has been <strong>shared</strong>" : "Failas ar aplankas buvo <strong>pasidalintas</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Failas ar aplankas buvo pasidalintas iÅ¡ <strong>kito serverio</strong>", + "A public shared file or folder was <strong>downloaded</strong>" : "VieÅ¡ai pasidalintas failas ar aplankas <strong>parsiųstas</strong>", + "You received a new remote share %2$s from %1$s" : "Gavote naujÄ… nutolusį dalijimÄ…si %2$s nuo %1$s", + "You received a new remote share from %s" : "Gavote naujÄ… nutolusį dalijimÄ…si nuo %s", + "%1$s accepted remote share %2$s" : "%1$s priÄ—mÄ— nutolusį dalijimÄ…si %2$s", + "%1$s declined remote share %2$s" : "%1$s atmetÄ— nutolusį dalijimÄ…si %2$s", + "%1$s unshared %2$s from you" : "%1$s nebesidalina %2$s su tavimi", + "Public shared folder %1$s was downloaded" : "VieÅ¡as dalijimosi aplankas %1$s parsiųstas", + "Public shared file %1$s was downloaded" : "VieÅ¡ai dalinamas failas %1$s parsiųstas", "You shared %1$s with %2$s" : "JÅ«s pasidalinote %1$s su %2$s", "You shared %1$s with group %2$s" : "JÅ«s pasidalinote %1$s su grupe %2$s", + "%2$s shared %1$s with %3$s" : "%2$s pasidalino %1$s su %3$s", + "%2$s shared %1$s with group %3$s" : "%2$s pasidalino %1$s su grupe %3$s", + "%2$s shared %1$s via link" : "%2$s pasidalino %1$s nuoroda", "%2$s shared %1$s with you" : "%2$s pasidalino %1$s su jumis", "You shared %1$s via link" : "Pasidalinote %1$s per nuorodÄ…", + "Downloaded via public link" : "Atsiųsti per vieÅ¡Ä… nuorodÄ…", + "Shared with %2$s" : "Pasidalinta su %2$s", + "Shared with group %2$s" : "Pasidalinta su grupe %2$s", + "Shared with %3$s by %2$s" : "%2$s pasidalino %3$s", + "Shared with group %3$s by %2$s" : "%2$s pasidalino su grupe %3$s", + "Shared via link by %2$s" : "%2$s pasidalino nuoroda", + "Shared by %2$s" : "Pasidalino %2$s", + "Shared via public link" : "Pasidalinta vieÅ¡a nuoroda", "Shares" : "Dalijimaisi", + "You received %2$s as a remote share from %1$s" : "Gavai dalijimÄ…si %2$s nuo %1$s", + "Accept" : "Priimti", + "Decline" : "Atmesti", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Pasidalink su manimi per #ownCloud padebesius, plaÄiau %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Pasidalink su manimi per #ownCloud padebesius", "This share is password-protected" : "Turinys apsaugotas slaptažodžiu", "The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartÄ….", "Password" : "Slaptažodis", "No entries found in this folder" : "Nerasta įrašų Å¡iame aplanke", "Name" : "Pavadinimas", + "Share time" : "Dalijimosi laikas", "Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panaÅ¡u, kad nuoroda yra neveiksni.", "Reasons might be:" : "Galimos priežastys:", "the item was removed" : "elementas buvo paÅ¡alintas", "the link expired" : "baigÄ—si nuorodos galiojimo laikas", "sharing is disabled" : "dalinimasis yra iÅ¡jungtas", "For more info, please ask the person who sent this link." : "DÄ—l tikslesnÄ—s informacijos susisiekite su asmeniu atsiuntusiu nuorodÄ….", + "Add to your ownCloud" : "PridÄ—ti prie tavo ownCloud", "Download" : "Atsisiųsti", - "Direct link" : "TiesioginÄ— nuoroda" + "Download %s" : "Atsiųsti %s", + "Direct link" : "TiesioginÄ— nuoroda", + "Federated Cloud Sharing" : "VieÅ¡as dalijimasis padebesiu", + "Open documentation" : "Atidaryti dokumentÄ…", + "Allow users on this server to send shares to other servers" : "Leisti vartotojams Å¡iame serveryje dalintis su kitais serveriais", + "Allow users on this server to receive shares from other servers" : "Leisti vartotojams Å¡iame serveryje priimti dalijimusis iÅ¡ kitų serverių", + "Federated Cloud" : "VieÅ¡as debesis", + "Your Federated Cloud ID:" : "Tavo debesies ID:", + "Share it:" : "Pasidalink:", + "Add to your website" : "PridÄ—ti tavo puslapį", + "Share with me via ownCloud" : "Pasidalink su manimi per ownCloud", + "HTML Code:" : "HTML kodas:" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index c27668b24c7c8ec6ff523f6fbc1b5cc3858fa68e..6d777024052c4f36f2aa3ca274f0999eff30401e 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -1,25 +1,85 @@ { "translations": { + "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas Å¡iame serveryje", + "The mountpoint name contains invalid characters." : "Prijungimo taÅ¡kas su neleistinais simboliais.", + "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas", + "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis", + "Storage not valid" : "Talpykla negalioja", + "Couldn't add remote share" : "Nepavyko pridÄ—ti nutolusio dalijimosi", + "Shared with you" : "Pasidalinta su tavimi", + "Shared with others" : "Pasidalinta su kitais", + "Shared by link" : "Pasidalinta su nuoroda", + "Nothing shared with you yet" : "Kol kas niekas su tavimi nesidalijama", + "Files and folders others share with you will show up here" : "Failai ir aplankai kurie dalinami ir tau, bus rodomi Äia", + "Nothing shared yet" : "Niekas nepasidalinta", + "Files and folders you share will show up here" : "Failai ir aplankai kuriais daliniesi bus rodomi Äia", + "No shared links" : "NÄ—ra pasidalinimų nuoroda", + "Files and folders you share by link will show up here" : "Failai ir aplankai kuriais daliniesi su nuoroda bus rodomi Äia", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar nori pridÄ—ti nutolusį dalijimÄ…si {name} nuo {owner}@{remote}?", + "Remote share" : "NutolÄ™s dalinimasis", + "Remote share password" : "Nutolusio dalijimosi slaptažodis", "Cancel" : "AtÅ¡aukti", + "Add remote share" : "PridÄ—ti nutolusi dalijimÄ…si", + "You can upload into this folder" : "Gali įkelti į šį aplankÄ…", + "No ownCloud installation (7 or higher) found at {remote}" : "Nerastas ownCloud (7 ar aukÅ¡tesnÄ— versijÄ…) {remote} serveryje.", + "Invalid ownCloud url" : "Neteisinga ownCloud nuoroda", "Shared by" : "Dalinasi", "Sharing" : "Dalijimasis", "A file or folder has been <strong>shared</strong>" : "Failas ar aplankas buvo <strong>pasidalintas</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Failas ar aplankas buvo pasidalintas iÅ¡ <strong>kito serverio</strong>", + "A public shared file or folder was <strong>downloaded</strong>" : "VieÅ¡ai pasidalintas failas ar aplankas <strong>parsiųstas</strong>", + "You received a new remote share %2$s from %1$s" : "Gavote naujÄ… nutolusį dalijimÄ…si %2$s nuo %1$s", + "You received a new remote share from %s" : "Gavote naujÄ… nutolusį dalijimÄ…si nuo %s", + "%1$s accepted remote share %2$s" : "%1$s priÄ—mÄ— nutolusį dalijimÄ…si %2$s", + "%1$s declined remote share %2$s" : "%1$s atmetÄ— nutolusį dalijimÄ…si %2$s", + "%1$s unshared %2$s from you" : "%1$s nebesidalina %2$s su tavimi", + "Public shared folder %1$s was downloaded" : "VieÅ¡as dalijimosi aplankas %1$s parsiųstas", + "Public shared file %1$s was downloaded" : "VieÅ¡ai dalinamas failas %1$s parsiųstas", "You shared %1$s with %2$s" : "JÅ«s pasidalinote %1$s su %2$s", "You shared %1$s with group %2$s" : "JÅ«s pasidalinote %1$s su grupe %2$s", + "%2$s shared %1$s with %3$s" : "%2$s pasidalino %1$s su %3$s", + "%2$s shared %1$s with group %3$s" : "%2$s pasidalino %1$s su grupe %3$s", + "%2$s shared %1$s via link" : "%2$s pasidalino %1$s nuoroda", "%2$s shared %1$s with you" : "%2$s pasidalino %1$s su jumis", "You shared %1$s via link" : "Pasidalinote %1$s per nuorodÄ…", + "Downloaded via public link" : "Atsiųsti per vieÅ¡Ä… nuorodÄ…", + "Shared with %2$s" : "Pasidalinta su %2$s", + "Shared with group %2$s" : "Pasidalinta su grupe %2$s", + "Shared with %3$s by %2$s" : "%2$s pasidalino %3$s", + "Shared with group %3$s by %2$s" : "%2$s pasidalino su grupe %3$s", + "Shared via link by %2$s" : "%2$s pasidalino nuoroda", + "Shared by %2$s" : "Pasidalino %2$s", + "Shared via public link" : "Pasidalinta vieÅ¡a nuoroda", "Shares" : "Dalijimaisi", + "You received %2$s as a remote share from %1$s" : "Gavai dalijimÄ…si %2$s nuo %1$s", + "Accept" : "Priimti", + "Decline" : "Atmesti", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Pasidalink su manimi per #ownCloud padebesius, plaÄiau %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Pasidalink su manimi per #ownCloud padebesius", "This share is password-protected" : "Turinys apsaugotas slaptažodžiu", "The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartÄ….", "Password" : "Slaptažodis", "No entries found in this folder" : "Nerasta įrašų Å¡iame aplanke", "Name" : "Pavadinimas", + "Share time" : "Dalijimosi laikas", "Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panaÅ¡u, kad nuoroda yra neveiksni.", "Reasons might be:" : "Galimos priežastys:", "the item was removed" : "elementas buvo paÅ¡alintas", "the link expired" : "baigÄ—si nuorodos galiojimo laikas", "sharing is disabled" : "dalinimasis yra iÅ¡jungtas", "For more info, please ask the person who sent this link." : "DÄ—l tikslesnÄ—s informacijos susisiekite su asmeniu atsiuntusiu nuorodÄ….", + "Add to your ownCloud" : "PridÄ—ti prie tavo ownCloud", "Download" : "Atsisiųsti", - "Direct link" : "TiesioginÄ— nuoroda" + "Download %s" : "Atsiųsti %s", + "Direct link" : "TiesioginÄ— nuoroda", + "Federated Cloud Sharing" : "VieÅ¡as dalijimasis padebesiu", + "Open documentation" : "Atidaryti dokumentÄ…", + "Allow users on this server to send shares to other servers" : "Leisti vartotojams Å¡iame serveryje dalintis su kitais serveriais", + "Allow users on this server to receive shares from other servers" : "Leisti vartotojams Å¡iame serveryje priimti dalijimusis iÅ¡ kitų serverių", + "Federated Cloud" : "VieÅ¡as debesis", + "Your Federated Cloud ID:" : "Tavo debesies ID:", + "Share it:" : "Pasidalink:", + "Add to your website" : "PridÄ—ti tavo puslapį", + "Share with me via ownCloud" : "Pasidalink su manimi per ownCloud", + "HTML Code:" : "HTML kodas:" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/apps/files_sharing/l10n/oc.js b/apps/files_sharing/l10n/oc.js index 54924e1112186e06c39fcf02c7d3a872d0c898a9..6a1329bf5bd183724763c3c8b9f7d8a1871eb0a5 100644 --- a/apps/files_sharing/l10n/oc.js +++ b/apps/files_sharing/l10n/oc.js @@ -43,6 +43,14 @@ OC.L10N.register( "%2$s shared %1$s via link" : "%2$s a partejat %1$s per ligam public", "%2$s shared %1$s with you" : "%2$s a partejat %1$s amb vos", "You shared %1$s via link" : "Avètz partejat %1$s per ligam public", + "Downloaded via public link" : "Telecargat per ligam public", + "Shared with %2$s" : "Partejat amb %2$s", + "Shared with group %2$s" : "Partejat amb lo grop %2$s", + "Shared with %3$s by %2$s" : "Partejat amb %3$s per %2$s", + "Shared with group %3$s by %2$s" : "Partejat amb lo grop %3$s per %2$s", + "Shared via link by %2$s" : "Partejat via ligam per %2$s", + "Shared by %2$s" : "Partejat per %2$s", + "Shared via public link" : "Partejat per ligam public", "Shares" : "Partiments", "You received %2$s as a remote share from %1$s" : "Avètz recebut %2$s en tant que partiment distant per %1$s", "Accept" : "Acceptar", diff --git a/apps/files_sharing/l10n/oc.json b/apps/files_sharing/l10n/oc.json index 2194f0aa1d2fad1a01db003b471420a6f1949081..591090742c6344bb865e6c485ecbaa74202e2208 100644 --- a/apps/files_sharing/l10n/oc.json +++ b/apps/files_sharing/l10n/oc.json @@ -41,6 +41,14 @@ "%2$s shared %1$s via link" : "%2$s a partejat %1$s per ligam public", "%2$s shared %1$s with you" : "%2$s a partejat %1$s amb vos", "You shared %1$s via link" : "Avètz partejat %1$s per ligam public", + "Downloaded via public link" : "Telecargat per ligam public", + "Shared with %2$s" : "Partejat amb %2$s", + "Shared with group %2$s" : "Partejat amb lo grop %2$s", + "Shared with %3$s by %2$s" : "Partejat amb %3$s per %2$s", + "Shared with group %3$s by %2$s" : "Partejat amb lo grop %3$s per %2$s", + "Shared via link by %2$s" : "Partejat via ligam per %2$s", + "Shared by %2$s" : "Partejat per %2$s", + "Shared via public link" : "Partejat per ligam public", "Shares" : "Partiments", "You received %2$s as a remote share from %1$s" : "Avètz recebut %2$s en tant que partiment distant per %1$s", "Accept" : "Acceptar", diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index eecbbf1f92e64ea9d5a510b771c819a3b404a23d..58d0398a1d5d727efc127335aa0b5c5f3724e654 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Server to server sharing is not enabled on this server" : "伺æœå™¨å°ä¼ºæœå™¨å…±äº«åœ¨é€™å°ä¼ºæœå™¨ä¸Šé¢ä¸¦æœªå•Ÿç”¨", + "The mountpoint name contains invalid characters." : "掛載的å稱å«æœ‰ä¸åˆæ³•çš„å—å…ƒ", "Invalid or untrusted SSL certificate" : "無效或是ä¸ä¿¡ä»»çš„SSL憑è‰", "Could not authenticate to remote share, password might be wrong" : "無法驗è‰é 端分享,å¯èƒ½æ˜¯å¯†ç¢¼éŒ¯èª¤", "Storage not valid" : "儲å˜ç©ºé–“無法使用", @@ -32,6 +33,7 @@ OC.L10N.register( "You received a new remote share from %s" : "您收到了一個é 端分享來自於 %s", "%1$s accepted remote share %2$s" : "%1$s 接å—了é 端分享 %2$s", "%1$s declined remote share %2$s" : "%1$s 拒絕了é 端分享 %2$s", + "%1$s unshared %2$s from you" : "%1$s å–æ¶ˆèˆ‡ä½ åˆ†äº« %2$s", "Public shared folder %1$s was downloaded" : "共享資料夾 %1$s 已被下載", "Public shared file %1$s was downloaded" : "共享檔案 %1$s 已被下載", "You shared %1$s with %2$s" : "您與 %2$s 分享了 %1$s", @@ -50,6 +52,7 @@ OC.L10N.register( "Shared by %2$s" : "ç”± %2$s 分享", "Shared via public link" : "é€éŽå…¬ç”¨é€£çµåˆ†äº«", "Shares" : "分享", + "You received %2$s as a remote share from %1$s" : "您收到了來自%1$s的一個é 端分享 %2$s ", "Accept" : "接å—", "Decline" : "拒絕", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "å¯é€éŽæˆ‘çš„ #ownCloud è¯åˆ ID,與我分享,請看 %s", diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index 14be4c11d556887cb5f3ce0eebda8174d6db7002..e73bbfa6574c1253c79430e55ee827da4f0517b1 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -1,5 +1,6 @@ { "translations": { "Server to server sharing is not enabled on this server" : "伺æœå™¨å°ä¼ºæœå™¨å…±äº«åœ¨é€™å°ä¼ºæœå™¨ä¸Šé¢ä¸¦æœªå•Ÿç”¨", + "The mountpoint name contains invalid characters." : "掛載的å稱å«æœ‰ä¸åˆæ³•çš„å—å…ƒ", "Invalid or untrusted SSL certificate" : "無效或是ä¸ä¿¡ä»»çš„SSL憑è‰", "Could not authenticate to remote share, password might be wrong" : "無法驗è‰é 端分享,å¯èƒ½æ˜¯å¯†ç¢¼éŒ¯èª¤", "Storage not valid" : "儲å˜ç©ºé–“無法使用", @@ -30,6 +31,7 @@ "You received a new remote share from %s" : "您收到了一個é 端分享來自於 %s", "%1$s accepted remote share %2$s" : "%1$s 接å—了é 端分享 %2$s", "%1$s declined remote share %2$s" : "%1$s 拒絕了é 端分享 %2$s", + "%1$s unshared %2$s from you" : "%1$s å–æ¶ˆèˆ‡ä½ åˆ†äº« %2$s", "Public shared folder %1$s was downloaded" : "共享資料夾 %1$s 已被下載", "Public shared file %1$s was downloaded" : "共享檔案 %1$s 已被下載", "You shared %1$s with %2$s" : "您與 %2$s 分享了 %1$s", @@ -48,6 +50,7 @@ "Shared by %2$s" : "ç”± %2$s 分享", "Shared via public link" : "é€éŽå…¬ç”¨é€£çµåˆ†äº«", "Shares" : "分享", + "You received %2$s as a remote share from %1$s" : "您收到了來自%1$s的一個é 端分享 %2$s ", "Accept" : "接å—", "Decline" : "拒絕", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "å¯é€éŽæˆ‘çš„ #ownCloud è¯åˆ ID,與我分享,請看 %s", diff --git a/apps/files_sharing/lib/watcher.php b/apps/files_sharing/lib/watcher.php index dc95dde480ed162ea557d4c3989d1f0b8f0f9b73..3af6f733b517bf19eb58e65c3e1bb9d40033fc48 100644 --- a/apps/files_sharing/lib/watcher.php +++ b/apps/files_sharing/lib/watcher.php @@ -29,41 +29,41 @@ namespace OC\Files\Cache; * check the storage backends for updates and change the cache accordingly */ class Shared_Watcher extends Watcher { + /** + * @var \OC\Files\Storage\Shared $storage + */ + protected $storage; /** - * check $path for updates + * Update the cache for changes to $path * * @param string $path - * @param array $cachedEntry - * @return boolean true if path was updated + * @param array $cachedData */ - public function checkUpdate($path, $cachedEntry = null) { - if (parent::checkUpdate($path, $cachedEntry) === true) { - // since checkUpdate() has already updated the size of the subdirs, - // only apply the update to the owner's parent dirs - - // find last parent before reaching the shared storage root, - // which is the actual shared dir from the owner - $sepPos = strpos($path, '/'); - if ($sepPos > 0) { - $baseDir = substr($path, 0, $sepPos); - } else { - $baseDir = $path; - } + public function update($path, $cachedData) { + parent::update($path, $cachedData); + // since parent::update() has already updated the size of the subdirs, + // only apply the update to the owner's parent dirs - // find the path relative to the data dir - $file = $this->storage->getFile($baseDir); - $view = new \OC\Files\View('/' . $file['fileOwner']); + // find last parent before reaching the shared storage root, + // which is the actual shared dir from the owner + $sepPos = strpos($path, '/'); + if ($sepPos > 0) { + $baseDir = substr($path, 0, $sepPos); + } else { + $baseDir = $path; + } - // find the owner's storage and path - list($storage, $internalPath) = $view->resolvePath($file['path']); + // find the path relative to the data dir + $file = $this->storage->getFile($baseDir); + $view = new \OC\Files\View('/' . $file['fileOwner']); - // update the parent dirs' sizes in the owner's cache - $storage->getCache()->correctFolderSize(dirname($internalPath)); + // find the owner's storage and path + /** @var \OC\Files\Storage\Storage $storage */ + list($storage, $internalPath) = $view->resolvePath($file['path']); - return true; - } - return false; + // update the parent dirs' sizes in the owner's cache + $storage->getCache()->correctFolderSize(dirname($internalPath)); } /** diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index 375b78b4526eacb9d76bc3333ba0eb40d5abfd38..8a944590c6d2a451f071c2f87584e4d88a6d2df7 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -110,9 +110,9 @@ OC.L10N.register( "Connection Settings" : "Verbindungseinstellungen", "Configuration Active" : "Konfiguration aktiv", "When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen wenn deaktiviert", - "Backup (Replica) Host" : "Backup von Host (Kopie) anlegen", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Gib einen optionalen Backup Host an. Es muss sich um eine Kopie des Haupt LDAP/AD Servers handeln.", - "Backup (Replica) Port" : "Backup Port", + "Backup (Replica) Host" : "Backup-Host (Kopie)", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Gib einen optionalen Backup-Host an. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.", + "Backup (Replica) Port" : "Port des Backup-Hosts (Kopie)", "Disable Main Server" : "Hauptserver deaktivieren", "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.", diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index 17c0bf02c2de1518b3aeeadf2f800fa05034d74b..99fa4b39151be90bd1bc574c25db504ecce11418 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -108,9 +108,9 @@ "Connection Settings" : "Verbindungseinstellungen", "Configuration Active" : "Konfiguration aktiv", "When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen wenn deaktiviert", - "Backup (Replica) Host" : "Backup von Host (Kopie) anlegen", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Gib einen optionalen Backup Host an. Es muss sich um eine Kopie des Haupt LDAP/AD Servers handeln.", - "Backup (Replica) Port" : "Backup Port", + "Backup (Replica) Host" : "Backup-Host (Kopie)", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Gib einen optionalen Backup-Host an. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.", + "Backup (Replica) Port" : "Port des Backup-Hosts (Kopie)", "Disable Main Server" : "Hauptserver deaktivieren", "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.", diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js index 49fcd8c8c69435b6e571536b5b7bc827f6a47a3e..5a8903d574a4bde8ef2ea9d20dd867e1835e22ae 100644 --- a/apps/user_ldap/l10n/de_DE.js +++ b/apps/user_ldap/l10n/de_DE.js @@ -110,9 +110,9 @@ OC.L10N.register( "Connection Settings" : "Verbindungseinstellungen", "Configuration Active" : "Konfiguration aktiv", "When unchecked, this configuration will be skipped." : "Wenn nicht angehakt, wird diese Konfiguration übersprungen.", - "Backup (Replica) Host" : "Backup von Host (Kopie) anlegen", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Geben Sie einen optionalen Backup Host an. Es muss sich um eine Kopie des Haupt LDAP/AD Servers handeln.", - "Backup (Replica) Port" : "Backup Port", + "Backup (Replica) Host" : "Backup-Host (Kopie)", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Geben Sie einen optionalen Backup-Host an. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.", + "Backup (Replica) Port" : "Port des Backup-Hosts (Kopie)", "Disable Main Server" : "Hauptserver deaktivieren", "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalten Sie die SSL-Zertifikatsprüfung aus.", diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json index 61792d3704e48ebbb863ab858c11967b6ae8ad5b..0485094c345fdf36667802d250f9f34728efac18 100644 --- a/apps/user_ldap/l10n/de_DE.json +++ b/apps/user_ldap/l10n/de_DE.json @@ -108,9 +108,9 @@ "Connection Settings" : "Verbindungseinstellungen", "Configuration Active" : "Konfiguration aktiv", "When unchecked, this configuration will be skipped." : "Wenn nicht angehakt, wird diese Konfiguration übersprungen.", - "Backup (Replica) Host" : "Backup von Host (Kopie) anlegen", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Geben Sie einen optionalen Backup Host an. Es muss sich um eine Kopie des Haupt LDAP/AD Servers handeln.", - "Backup (Replica) Port" : "Backup Port", + "Backup (Replica) Host" : "Backup-Host (Kopie)", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Geben Sie einen optionalen Backup-Host an. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.", + "Backup (Replica) Port" : "Port des Backup-Hosts (Kopie)", "Disable Main Server" : "Hauptserver deaktivieren", "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalten Sie die SSL-Zertifikatsprüfung aus.", diff --git a/apps/user_ldap/l10n/zh_TW.js b/apps/user_ldap/l10n/zh_TW.js index 0ad20f3eae32d918ae8447046556c528543f3cb7..569cbf24128df100aba0e5338e2bf4f3c0399c4a 100644 --- a/apps/user_ldap/l10n/zh_TW.js +++ b/apps/user_ldap/l10n/zh_TW.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" : "è¨å®šå®Œæˆ", @@ -19,17 +20,28 @@ OC.L10N.register( "Select object classes" : "é¸æ“‡ç‰©ä»¶", "Please check the credentials, they seem to be wrong." : "請檢查您的憑è‰ï¼Œä¼¼ä¹Žå‡ºäº†é»žå•é¡Œ", "Please specify the port, it could not be auto-detected." : "請您指定您的連接阜,無法自動åµæ¸¬", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN 無法被自動åµæ¸¬ï¼Œè«‹é‡æ–°è¨å®šä¸»æ©Ÿï¼Œé€£æŽ¥é˜œä»¥åŠèªè‰", + "Could not detect Base DN, please enter it manually." : "無法åµæ¸¬åˆ°Base DN,請手動輸入", "{nthServer}. Server" : "{nthServer}. 伺æœå™¨", + "No object found in the given Base DN. Please revise." : "在Base DNä¸æ‰¾ä¸åˆ°ç‰©ä»¶ï¼Œè«‹é‡æ–°ä¿®æ”¹", "More than 1.000 directory entries available." : "ç›®å‰æœ‰è¶…éŽ 1.000 å€‹è³‡æ–™å¤¾é …ç›®æ˜¯å¯ä»¥ä½¿ç”¨çš„", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "產生錯誤,請檢查Base DN,以åŠé€£ç·šè¨å®šå’Œé©—è‰", "Do you really want to delete the current Server Configuration?" : "您真的è¦åˆªé™¤ç¾åœ¨çš„伺æœå™¨è¨å®šå—Žï¼Ÿ", "Confirm Deletion" : "確èªåˆªé™¤", + "Mappings cleared successfully!" : "Mappings清除æˆåŠŸ", + "Error while clearing the mappings." : "清除Mappings發生錯誤", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "匿å是ä¸å…許的,請æ供使用者DN和密碼", + "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP 錯誤,ä¸å…許匿å榜定", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "å˜æª”失敗,請確èªè³‡æ–™åº«é‹ä½œä¸ï¼Œè«‹é‡æ–°è®€å–一次然後å†è©¦ä¸€æ¬¡", "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?" : "切æ›æ¨¡å¼æœƒä½¿LDAP自動抓å–資訊,抓å–資訊的時間ä¾æ‚¨çš„LDAP大å°è€Œå®šï¼Œå¯èƒ½æœƒèŠ±ä¸€é»žæ™‚間,您確定è¦åˆ‡æ›æ¨¡å¼?", + "Mode switch" : "模å¼åˆ‡æ›", "Select attributes" : "é¸æ“‡å±¬æ€§", "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "找ä¸åˆ°ä½¿ç”¨è€…,請檢查您的登入資料以åŠä½¿ç”¨è€…å稱。驗è‰(複製貼上到命令æ示ä½å…ƒåšèªè‰):<br/>", "User found and settings verified." : "使用者å˜åœ¨ï¼Œè¨å®šå€¼æ£ç¢º", "An unspecified error occurred. Please check the settings and the log." : "發生é 期之外的錯誤,請檢查è¨å®šå’Œè¨˜éŒ„檔", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "連線到 LDAP/AD出ç¾éŒ¯èª¤ï¼Œè«‹æª¢æŸ¥ä¸»æ©Ÿï¼Œé€£æŽ¥é˜œå’Œé©—è‰è³‡è¨Š", "Please provide a login name to test against" : "è«‹æ供登入姓å以便å†æ¬¡æ¸¬è©¦", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "群組盒已經åœç”¨ï¼ŒLDAP/AD 伺æœå™¨ä¸¦ä¸æ”¯æ´", "_%s group found_::_%s groups found_" : ["找到 %s 群組"], "_%s user found_::_%s users found_" : ["找到 %s 使用者"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "無法åµæ¸¬ä½¿ç”¨è€…的顯示å稱,請您自行在ldapè¨å®šä¸æŒ‡å®š", @@ -45,19 +57,43 @@ OC.L10N.register( "Search groups" : "æœå°‹ç¾¤çµ„", "Available groups" : "å¯ç”¨çš„群組", "Selected groups" : "å·²é¸æ“‡çš„群組", + "Edit LDAP Query" : "編輯LDAP Query", "LDAP Filter:" : "LDAP éŽæ…®å™¨:", + "Verify settings and count groups" : "é©—è‰è¨å®šä¸¦è¨ˆç®—群組數", + "When logging in, %s will find the user based on the following attributes:" : "當登入%sæ™‚ï¼Œå°‡æœƒæ ¹æ“šä»¥ä¸‹å±¬æ€§æ‰¾åˆ°ä½¿ç”¨è€… :", + "LDAP / AD Username:" : "LDAP / AD 使用者å稱:", + "LDAP / AD Email Address:" : "LDAP / AD é›»å郵件:", + "Other Attributes:" : "其他屬性:", + "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "試圖登入時會定義è¦å¥—用的篩é¸å™¨ã€‚登入éŽç¨‹ä¸%%uid會å–代使用者å稱。例如:\"uid=%%uid\"", + "Test Loginname" : "測試登入姓å", + "Verify settings" : "é©—è‰è¨å®š", + "1. Server" : "1. 伺æœå™¨", + "%s. Server:" : "%s. 伺æœå™¨:", + "Add a new and blank configuration" : "新增一個空白的è¨å®šæª”", + "Copy current configuration into new directory binding" : "複製目å‰çš„è¨å®šæª”到新目錄", + "Delete the current configuration" : "刪除目å‰çš„è¨å®šæª”", "Host" : "主機", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "若您ä¸éœ€è¦ SSL åŠ å¯†é€£ç·šå‰‡ä¸éœ€è¼¸å…¥é€šè¨Šå”定,å之請輸入 ldaps://", "Port" : "é€£æŽ¥åŸ ", + "Detect Port" : "åµæ¸¬é€£æŽ¥é˜œ", "User DN" : "User 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" : "密碼", "For anonymous access, leave DN and Password empty." : "匿å連接時請將 DN 與密碼欄ä½ç•™ç™½", "One Base DN per line" : "一行一個 Base DN", "You can specify Base DN for users and groups in the Advanced tab" : "您å¯ä»¥åœ¨é€²éšŽæ¨™ç±¤é 裡é¢æŒ‡å®šä½¿ç”¨è€…åŠç¾¤çµ„çš„ Base DN", + "Detect Base DN" : "åµæ¸¬ Base DN", + "Test Base DN" : "測試 Base DN", + "Manually enter LDAP filters (recommended for large directories)" : "手動輸入 LDAP篩é¸å™¨ (建è°åœ¨å¤§åž‹çš„資料環境)", + "Limit %s access to users meeting these criteria:" : "當é‡åˆ°ä»¥ä¸‹æ¨™æº–時,é™åˆ¶%så˜å–使用者:", + "The filter specifies which LDAP users shall have access to the %s instance." : "篩é¸èµ·æŒ‡å®šå“ªäº›LDAP的使用者應該æ“有å˜å–%s的權é™", + "Verify settings and count users" : "é©—è‰è¨å®šä¸¦è¨ˆç®—使用者數", + "Saving" : "儲å˜", "Back" : "返回", "Continue" : "繼續", + "LDAP" : "LDAP", "Advanced" : "進階", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>è¦å‘Š:</b> 應用程å¼user_ldapå’Œuser_webdavauth互ä¸ç›¸å®¹ã€‚å¯èƒ½æœƒé€ æˆç„¡æ³•é 期的çµæžœã€‚è«‹è¦æ±‚您的系統管ç†å“¡å°‡å…©è€…å…¶ä¸ä¹‹ä¸€åœç”¨ã€‚", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>è¦å‘Šï¼š</b>æ²’æœ‰å®‰è£ PHP LDAP 模組,後端系統將無法é‹ä½œï¼Œè«‹è¦æ±‚您的系統管ç†å“¡å®‰è£æ¨¡çµ„。", "Connection Settings" : "連線è¨å®š", "Configuration Active" : "è¨å®šä½¿ç”¨ä¸", @@ -67,6 +103,7 @@ OC.L10N.register( "Backup (Replica) Port" : "å‚™ç”¨ï¼ˆè¤‡æœ¬ï¼‰é€£æŽ¥åŸ ", "Disable Main Server" : "åœç”¨ä¸»ä¼ºæœå™¨", "Turn off SSL certificate validation." : "關閉 SSL 憑è‰æª¢æŸ¥", + "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "ä¸å»ºè°ï¼Œè«‹åƒ…在測試時使用ï¼å¦‚果連線åªèƒ½åœ¨æ¤è¨å®šä¸‹å·¥ä½œï¼Œè«‹åŒ¯å…¥LDAP伺æœå™¨çš„SSLèªè‰åˆ°æ‚¨çš„伺æœå™¨%s上", "Cache Time-To-Live" : "å¿«å–çš„å˜æ´»æ™‚é–“", "in seconds. A change empties the cache." : "以秒為單ä½ã€‚變更後會清空快å–。", "Directory Settings" : "目錄è¨å®š", @@ -87,6 +124,9 @@ OC.L10N.register( "Email Field" : "電郵欄ä½", "User Home Folder Naming Rule" : "使用者家目錄的命åè¦å‰‡", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "使用者å稱請留白(é è¨)。若ä¸ç•™ç™½è«‹æŒ‡å®šä¸€å€‹LDAP/AD屬性。", - "Internal Username" : "內部使用者å稱" + "Internal Username" : "內部使用者å稱", + "Internal Username Attribute:" : "內部使用者å稱屬性:", + "UUID Attribute for Users:" : "使用者的UUID值:", + "UUID Attribute for Groups:" : "群組的UUID值:" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/zh_TW.json b/apps/user_ldap/l10n/zh_TW.json index a9b62f37b5267348534678fd060cb04b19358287..e012c3003ac84673b75fe03aa86ba21fe935e3ee 100644 --- a/apps/user_ldap/l10n/zh_TW.json +++ b/apps/user_ldap/l10n/zh_TW.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" : "è¨å®šå®Œæˆ", @@ -17,17 +18,28 @@ "Select object classes" : "é¸æ“‡ç‰©ä»¶", "Please check the credentials, they seem to be wrong." : "請檢查您的憑è‰ï¼Œä¼¼ä¹Žå‡ºäº†é»žå•é¡Œ", "Please specify the port, it could not be auto-detected." : "請您指定您的連接阜,無法自動åµæ¸¬", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN 無法被自動åµæ¸¬ï¼Œè«‹é‡æ–°è¨å®šä¸»æ©Ÿï¼Œé€£æŽ¥é˜œä»¥åŠèªè‰", + "Could not detect Base DN, please enter it manually." : "無法åµæ¸¬åˆ°Base DN,請手動輸入", "{nthServer}. Server" : "{nthServer}. 伺æœå™¨", + "No object found in the given Base DN. Please revise." : "在Base DNä¸æ‰¾ä¸åˆ°ç‰©ä»¶ï¼Œè«‹é‡æ–°ä¿®æ”¹", "More than 1.000 directory entries available." : "ç›®å‰æœ‰è¶…éŽ 1.000 å€‹è³‡æ–™å¤¾é …ç›®æ˜¯å¯ä»¥ä½¿ç”¨çš„", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "產生錯誤,請檢查Base DN,以åŠé€£ç·šè¨å®šå’Œé©—è‰", "Do you really want to delete the current Server Configuration?" : "您真的è¦åˆªé™¤ç¾åœ¨çš„伺æœå™¨è¨å®šå—Žï¼Ÿ", "Confirm Deletion" : "確èªåˆªé™¤", + "Mappings cleared successfully!" : "Mappings清除æˆåŠŸ", + "Error while clearing the mappings." : "清除Mappings發生錯誤", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "匿å是ä¸å…許的,請æ供使用者DN和密碼", + "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP 錯誤,ä¸å…許匿å榜定", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "å˜æª”失敗,請確èªè³‡æ–™åº«é‹ä½œä¸ï¼Œè«‹é‡æ–°è®€å–一次然後å†è©¦ä¸€æ¬¡", "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?" : "切æ›æ¨¡å¼æœƒä½¿LDAP自動抓å–資訊,抓å–資訊的時間ä¾æ‚¨çš„LDAP大å°è€Œå®šï¼Œå¯èƒ½æœƒèŠ±ä¸€é»žæ™‚間,您確定è¦åˆ‡æ›æ¨¡å¼?", + "Mode switch" : "模å¼åˆ‡æ›", "Select attributes" : "é¸æ“‡å±¬æ€§", "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "找ä¸åˆ°ä½¿ç”¨è€…,請檢查您的登入資料以åŠä½¿ç”¨è€…å稱。驗è‰(複製貼上到命令æ示ä½å…ƒåšèªè‰):<br/>", "User found and settings verified." : "使用者å˜åœ¨ï¼Œè¨å®šå€¼æ£ç¢º", "An unspecified error occurred. Please check the settings and the log." : "發生é 期之外的錯誤,請檢查è¨å®šå’Œè¨˜éŒ„檔", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "連線到 LDAP/AD出ç¾éŒ¯èª¤ï¼Œè«‹æª¢æŸ¥ä¸»æ©Ÿï¼Œé€£æŽ¥é˜œå’Œé©—è‰è³‡è¨Š", "Please provide a login name to test against" : "è«‹æ供登入姓å以便å†æ¬¡æ¸¬è©¦", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "群組盒已經åœç”¨ï¼ŒLDAP/AD 伺æœå™¨ä¸¦ä¸æ”¯æ´", "_%s group found_::_%s groups found_" : ["找到 %s 群組"], "_%s user found_::_%s users found_" : ["找到 %s 使用者"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "無法åµæ¸¬ä½¿ç”¨è€…的顯示å稱,請您自行在ldapè¨å®šä¸æŒ‡å®š", @@ -43,19 +55,43 @@ "Search groups" : "æœå°‹ç¾¤çµ„", "Available groups" : "å¯ç”¨çš„群組", "Selected groups" : "å·²é¸æ“‡çš„群組", + "Edit LDAP Query" : "編輯LDAP Query", "LDAP Filter:" : "LDAP éŽæ…®å™¨:", + "Verify settings and count groups" : "é©—è‰è¨å®šä¸¦è¨ˆç®—群組數", + "When logging in, %s will find the user based on the following attributes:" : "當登入%sæ™‚ï¼Œå°‡æœƒæ ¹æ“šä»¥ä¸‹å±¬æ€§æ‰¾åˆ°ä½¿ç”¨è€… :", + "LDAP / AD Username:" : "LDAP / AD 使用者å稱:", + "LDAP / AD Email Address:" : "LDAP / AD é›»å郵件:", + "Other Attributes:" : "其他屬性:", + "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "試圖登入時會定義è¦å¥—用的篩é¸å™¨ã€‚登入éŽç¨‹ä¸%%uid會å–代使用者å稱。例如:\"uid=%%uid\"", + "Test Loginname" : "測試登入姓å", + "Verify settings" : "é©—è‰è¨å®š", + "1. Server" : "1. 伺æœå™¨", + "%s. Server:" : "%s. 伺æœå™¨:", + "Add a new and blank configuration" : "新增一個空白的è¨å®šæª”", + "Copy current configuration into new directory binding" : "複製目å‰çš„è¨å®šæª”到新目錄", + "Delete the current configuration" : "刪除目å‰çš„è¨å®šæª”", "Host" : "主機", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "若您ä¸éœ€è¦ SSL åŠ å¯†é€£ç·šå‰‡ä¸éœ€è¼¸å…¥é€šè¨Šå”定,å之請輸入 ldaps://", "Port" : "é€£æŽ¥åŸ ", + "Detect Port" : "åµæ¸¬é€£æŽ¥é˜œ", "User DN" : "User 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" : "密碼", "For anonymous access, leave DN and Password empty." : "匿å連接時請將 DN 與密碼欄ä½ç•™ç™½", "One Base DN per line" : "一行一個 Base DN", "You can specify Base DN for users and groups in the Advanced tab" : "您å¯ä»¥åœ¨é€²éšŽæ¨™ç±¤é 裡é¢æŒ‡å®šä½¿ç”¨è€…åŠç¾¤çµ„çš„ Base DN", + "Detect Base DN" : "åµæ¸¬ Base DN", + "Test Base DN" : "測試 Base DN", + "Manually enter LDAP filters (recommended for large directories)" : "手動輸入 LDAP篩é¸å™¨ (建è°åœ¨å¤§åž‹çš„資料環境)", + "Limit %s access to users meeting these criteria:" : "當é‡åˆ°ä»¥ä¸‹æ¨™æº–時,é™åˆ¶%så˜å–使用者:", + "The filter specifies which LDAP users shall have access to the %s instance." : "篩é¸èµ·æŒ‡å®šå“ªäº›LDAP的使用者應該æ“有å˜å–%s的權é™", + "Verify settings and count users" : "é©—è‰è¨å®šä¸¦è¨ˆç®—使用者數", + "Saving" : "儲å˜", "Back" : "返回", "Continue" : "繼續", + "LDAP" : "LDAP", "Advanced" : "進階", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>è¦å‘Š:</b> 應用程å¼user_ldapå’Œuser_webdavauth互ä¸ç›¸å®¹ã€‚å¯èƒ½æœƒé€ æˆç„¡æ³•é 期的çµæžœã€‚è«‹è¦æ±‚您的系統管ç†å“¡å°‡å…©è€…å…¶ä¸ä¹‹ä¸€åœç”¨ã€‚", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>è¦å‘Šï¼š</b>æ²’æœ‰å®‰è£ PHP LDAP 模組,後端系統將無法é‹ä½œï¼Œè«‹è¦æ±‚您的系統管ç†å“¡å®‰è£æ¨¡çµ„。", "Connection Settings" : "連線è¨å®š", "Configuration Active" : "è¨å®šä½¿ç”¨ä¸", @@ -65,6 +101,7 @@ "Backup (Replica) Port" : "å‚™ç”¨ï¼ˆè¤‡æœ¬ï¼‰é€£æŽ¥åŸ ", "Disable Main Server" : "åœç”¨ä¸»ä¼ºæœå™¨", "Turn off SSL certificate validation." : "關閉 SSL 憑è‰æª¢æŸ¥", + "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "ä¸å»ºè°ï¼Œè«‹åƒ…在測試時使用ï¼å¦‚果連線åªèƒ½åœ¨æ¤è¨å®šä¸‹å·¥ä½œï¼Œè«‹åŒ¯å…¥LDAP伺æœå™¨çš„SSLèªè‰åˆ°æ‚¨çš„伺æœå™¨%s上", "Cache Time-To-Live" : "å¿«å–çš„å˜æ´»æ™‚é–“", "in seconds. A change empties the cache." : "以秒為單ä½ã€‚變更後會清空快å–。", "Directory Settings" : "目錄è¨å®š", @@ -85,6 +122,9 @@ "Email Field" : "電郵欄ä½", "User Home Folder Naming Rule" : "使用者家目錄的命åè¦å‰‡", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "使用者å稱請留白(é è¨)。若ä¸ç•™ç™½è«‹æŒ‡å®šä¸€å€‹LDAP/AD屬性。", - "Internal Username" : "內部使用者å稱" + "Internal Username" : "內部使用者å稱", + "Internal Username Attribute:" : "內部使用者å稱屬性:", + "UUID Attribute for Users:" : "使用者的UUID值:", + "UUID Attribute for Groups:" : "群組的UUID值:" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/user_ldap/lib/wizard.php b/apps/user_ldap/lib/wizard.php index 0c7fecfdb6419612d60098b84ad01089fb8a418e..e53ff35cfd6bcd6c466dac8c400b047589ef6841 100644 --- a/apps/user_ldap/lib/wizard.php +++ b/apps/user_ldap/lib/wizard.php @@ -1290,9 +1290,13 @@ class Wizard extends LDAPUtility { if(!is_null($this->cr)) { return $this->cr; } - $cr = $this->ldap->connect( - $this->configuration->ldapHost.':'.$this->configuration->ldapPort, - $this->configuration->ldapPort); + + $host = $this->configuration->ldapHost; + if(strpos($host, '://') !== false) { + //ldap_connect ignores port parameter when URLs are passed + $host .= ':' . $this->configuration->ldapPort; + } + $cr = $this->ldap->connect($host, $this->configuration->ldapPort); $this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3); $this->ldap->setOption($cr, LDAP_OPT_REFERRALS, 0); diff --git a/core/css/global.css b/core/css/global.css new file mode 100644 index 0000000000000000000000000000000000000000..9511d4324fa4d5c65d92524066acec932aded8cc --- /dev/null +++ b/core/css/global.css @@ -0,0 +1,50 @@ +/* Copyright (c) 2015, Raghu Nayyar, http://raghunayyar.com + This file is licensed under the Affero General Public License version 3 or later. + See the COPYING-README file. */ + +/* Global Components */ + +.pull-left { + float: left; +} + +.pull-right { + float: right; +} + +.clear-left { + clear: left; +} + +.clear-right { + clear: right; +} + +.clear-both { + clear: both; +} + +.hidden { + display: none; +} + +.hidden-visually { + position: absolute; + left:-10000px; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; +} + +.bold { + font-weight:600; +} + +.center { + text-align:center; +} + +.inlineblock { + display: inline-block; +} \ No newline at end of file diff --git a/core/css/styles.css b/core/css/styles.css index ddf72a34db5be6ba51a7cf153fc9030920498f0a..15325eada3396d66d09458bb2805f3b3eb02f6c0 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -860,26 +860,6 @@ html.ie8 #body-login form input[type="checkbox"] { height: 70px; } - - - -/* VARIOUS REUSABLE SELECTORS */ -.hidden { - display: none; -} -.hidden-visually { - position: absolute; - left:-10000px; - top: auto; - width: 1px; - height: 1px; - overflow: hidden; -} - -.bold { font-weight:600; } -.center { text-align:center; } -.inlineblock { display: inline-block; } - /* round profile photos */ .avatar, .avatar img, diff --git a/core/l10n/da.js b/core/l10n/da.js index cce52f15b0512d97c7039310b3afb2f204bb02f1..795dc5cb7b98501a0c502df3167257f97fc14e6c 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -6,14 +6,20 @@ OC.L10N.register( "Turned on maintenance mode" : "Startede vedligeholdelsestilstand", "Turned off maintenance mode" : "standsede vedligeholdelsestilstand", "Maintenance mode is kept active" : "Vedligeholdelsestilstanden holdes kørende", + "Updating database schema" : "Opdaterer database schema", "Updated database" : "Opdaterede database", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Tjekker om database schema'et kan opdateres (dette kan tage lang tid afhængig af databasens størrelse)", "Checked database schema update" : "Tjekket database schema opdatering", + "Checking updates of apps" : "Tjekker opdatering af apps", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tjekker om database schema'et for %s kan opdateres (dette kan tage lang tid afhængig af databasens størrelse)", "Checked database schema update for apps" : "Tjekkede databaseskemaets opdatering for apps", "Updated \"%s\" to %s" : "Opdaterede \"%s\" til %s", "Repair warning: " : "Reparationsadvarsel:", "Repair error: " : "Reparationsfejl:", "Set log level to debug - current level: \"%s\"" : "Sæt log niveau til fejlfinding - nuværende niveau: \"%s\"", "Reset log level to \"%s\"" : "Nulstil log niveau til \"%s\"", + "%s (3rdparty)" : "%s (3rdparty)", + "%s (incompatible)" : "%s (inkombatible)", "Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s", "Already up to date" : "Allerede opdateret", "File is too big" : "Filen er for stor", @@ -21,6 +27,7 @@ OC.L10N.register( "No image or file provided" : "Ingen fil eller billede givet", "Unknown filetype" : "Ukendt filtype", "Invalid image" : "Ugyldigt billede", + "An error occurred. Please contact your admin." : "Der opstod et problem. Kontakt venligst administratoren.", "No temporary profile picture available, try again" : "Intet midlertidigt profilbillede tilgængeligt, prøv igen", "No crop data provided" : "Ingen beskæringsdata give", "No valid crop data provided" : "Der er ikke angivet gyldige data om beskæring", @@ -169,7 +176,9 @@ OC.L10N.register( "Hello {name}" : "Hej {name}", "_download %n file_::_download %n files_" : ["hent %n fil","hent %n filer"], "{version} is available. Get more information on how to update." : "{version} er tilgængelig. FÃ¥ mere information om hvordan du opdaterer.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Opgraderingen er i gang, forlader du denne side kan det afbryde processen.", "Updating {productName} to version {version}, this may take a while." : "Opdaterer {productName} til version {version}, det kan tage et stykke tid.", + "An error occurred." : "Der opstod en fejl.", "Please reload the page." : "Genindlæs venligst siden", "The update was unsuccessful. " : "Opdateringen blev ikke gennemført.", "The update was successful. There were warnings." : "Opdateringen blev gennemført. Der fremkom advarsler.", @@ -242,6 +251,7 @@ OC.L10N.register( "Finishing …" : "Færdigbehandler ...", "Need help?" : "Brug for hjælp?", "See the documentation" : "Se dokumentationen", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej med dig,<br><br>Dette er blot for at informere dig om, at %s har delt <strong>%s</strong> med dig.<br><a href=\"%s\">Se det her!</a><br><br>", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denne applikation kræver JavaScript for at fungere korrekt. {linkstart}SlÃ¥ venligst JavaScript til{linkend} og genindlæs siden. ", "Log out" : "Log ud", "Search" : "Søg", @@ -251,8 +261,8 @@ OC.L10N.register( "Please try again or contact your administrator." : "Kontakt venligst din administrator.", "Log in" : "Log ind", "Wrong password. Reset it?" : "Forkert kodeord. Skal det nulstilles?", + "Stay logged in" : "Forbliv logget ind", "Alternative Logins" : "Alternative logins", - "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej med dig,<br><br>Dette er blot for at informere dig om, at %s har delt <strong>%s</strong> med dig.<br><a href=\"%s\">Se det her!</a><br><br>", "This ownCloud instance is currently in single user mode." : "Denne ownCloud instans er lige nu i enkeltbruger tilstand.", "This means only administrators can use the instance." : "Det betyder at det kun er administrator, som kan benytte ownCloud.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren, hvis denne meddelelse fortsætter eller optrÃ¥dte uventet.", diff --git a/core/l10n/da.json b/core/l10n/da.json index 962743e0abfee64a6f99fd78f624fb05256e92bf..f4f156a69be1270e219eefe766af358bad364d45 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -4,14 +4,20 @@ "Turned on maintenance mode" : "Startede vedligeholdelsestilstand", "Turned off maintenance mode" : "standsede vedligeholdelsestilstand", "Maintenance mode is kept active" : "Vedligeholdelsestilstanden holdes kørende", + "Updating database schema" : "Opdaterer database schema", "Updated database" : "Opdaterede database", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Tjekker om database schema'et kan opdateres (dette kan tage lang tid afhængig af databasens størrelse)", "Checked database schema update" : "Tjekket database schema opdatering", + "Checking updates of apps" : "Tjekker opdatering af apps", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tjekker om database schema'et for %s kan opdateres (dette kan tage lang tid afhængig af databasens størrelse)", "Checked database schema update for apps" : "Tjekkede databaseskemaets opdatering for apps", "Updated \"%s\" to %s" : "Opdaterede \"%s\" til %s", "Repair warning: " : "Reparationsadvarsel:", "Repair error: " : "Reparationsfejl:", "Set log level to debug - current level: \"%s\"" : "Sæt log niveau til fejlfinding - nuværende niveau: \"%s\"", "Reset log level to \"%s\"" : "Nulstil log niveau til \"%s\"", + "%s (3rdparty)" : "%s (3rdparty)", + "%s (incompatible)" : "%s (inkombatible)", "Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s", "Already up to date" : "Allerede opdateret", "File is too big" : "Filen er for stor", @@ -19,6 +25,7 @@ "No image or file provided" : "Ingen fil eller billede givet", "Unknown filetype" : "Ukendt filtype", "Invalid image" : "Ugyldigt billede", + "An error occurred. Please contact your admin." : "Der opstod et problem. Kontakt venligst administratoren.", "No temporary profile picture available, try again" : "Intet midlertidigt profilbillede tilgængeligt, prøv igen", "No crop data provided" : "Ingen beskæringsdata give", "No valid crop data provided" : "Der er ikke angivet gyldige data om beskæring", @@ -167,7 +174,9 @@ "Hello {name}" : "Hej {name}", "_download %n file_::_download %n files_" : ["hent %n fil","hent %n filer"], "{version} is available. Get more information on how to update." : "{version} er tilgængelig. FÃ¥ mere information om hvordan du opdaterer.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Opgraderingen er i gang, forlader du denne side kan det afbryde processen.", "Updating {productName} to version {version}, this may take a while." : "Opdaterer {productName} til version {version}, det kan tage et stykke tid.", + "An error occurred." : "Der opstod en fejl.", "Please reload the page." : "Genindlæs venligst siden", "The update was unsuccessful. " : "Opdateringen blev ikke gennemført.", "The update was successful. There were warnings." : "Opdateringen blev gennemført. Der fremkom advarsler.", @@ -240,6 +249,7 @@ "Finishing …" : "Færdigbehandler ...", "Need help?" : "Brug for hjælp?", "See the documentation" : "Se dokumentationen", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej med dig,<br><br>Dette er blot for at informere dig om, at %s har delt <strong>%s</strong> med dig.<br><a href=\"%s\">Se det her!</a><br><br>", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denne applikation kræver JavaScript for at fungere korrekt. {linkstart}SlÃ¥ venligst JavaScript til{linkend} og genindlæs siden. ", "Log out" : "Log ud", "Search" : "Søg", @@ -249,8 +259,8 @@ "Please try again or contact your administrator." : "Kontakt venligst din administrator.", "Log in" : "Log ind", "Wrong password. Reset it?" : "Forkert kodeord. Skal det nulstilles?", + "Stay logged in" : "Forbliv logget ind", "Alternative Logins" : "Alternative logins", - "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej med dig,<br><br>Dette er blot for at informere dig om, at %s har delt <strong>%s</strong> med dig.<br><a href=\"%s\">Se det her!</a><br><br>", "This ownCloud instance is currently in single user mode." : "Denne ownCloud instans er lige nu i enkeltbruger tilstand.", "This means only administrators can use the instance." : "Det betyder at det kun er administrator, som kan benytte ownCloud.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren, hvis denne meddelelse fortsætter eller optrÃ¥dte uventet.", diff --git a/core/l10n/el.js b/core/l10n/el.js index 10cbaf032ce84e75d9f2be4789c9458768943df3..b0a8230e65087ae230b25e517ebcb44a96f72756 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -6,14 +6,20 @@ OC.L10N.register( "Turned on maintenance mode" : "Η κατάσταση συντήÏησης ενεÏγοποιήθηκε", "Turned off maintenance mode" : "Η κατάσταση συντήÏησης απενεÏγοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουÏγία συντήÏησης διατηÏήθηκε ενεÏγή", + "Updating database schema" : "ΈνημÎÏωση σχήματος βάσης δεδομÎνων", "Updated database" : "ΕνημεÏωμÎνη βάση δεδομÎνων", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν το σχήμα της βάσης δεδομÎνων μποÏεί να ενημεÏωθεί (αυτό μποÏεί να πάÏει πολλή ÏŽÏα ανάλογα με το μÎγεθος της βάσης δεδομÎνων)", "Checked database schema update" : "Έλεγχος ενημÎÏωσης σχήματος βάσης δεδομÎνων", + "Checking updates of apps" : "Έλεγχος ενημεÏώσεων εφαÏμογών", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν το σχήμα της βάσης δεδομÎνων για %s μποÏεί να ενημεÏωθεί (αυτό μποÏεί να πάÏει πολλή ÏŽÏα ανάλογα με το μÎγεθος της βάσης δεδομÎνων)", "Checked database schema update for apps" : "Έλεγχος ενημÎÏωσης σχήματος βάσης δεδομÎνων για εφαÏμογÎÏ‚", "Updated \"%s\" to %s" : "Αναβαθμίστηκε \"%s\" σε %s", "Repair warning: " : "Î Ïοειδοποίηση διόÏθωσης:", "Repair error: " : "Σφάλμα διόÏθωσης:", "Set log level to debug - current level: \"%s\"" : "ΚαθοÏισμός του επιπÎδου καταγÏαφής σε αποσφαλμάτωση - Ï„ÏÎχον επίπεδο: \"%s\"", "Reset log level to \"%s\"" : "ΕπαναφοÏά επιπÎδου καταγÏαφής σε \"%s\"", + "%s (3rdparty)" : "%s (3ου μÎÏους)", + "%s (incompatible)" : "%s (ασÏμβατη)", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαÏμογÎÏ‚ Îχουν απενεÏγοποιηθεί: %s", "Already up to date" : "Ήδη ενημεÏωμÎνο", "File is too big" : "Το αÏχείο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿", @@ -171,6 +177,7 @@ OC.L10N.register( "Hello {name}" : "Γεια σου {name}", "_download %n file_::_download %n files_" : ["λήψη %n αÏχείου","λήψη %n αÏχείων"], "{version} is available. Get more information on how to update." : "Η Îκδοση {version} είναι διαθÎσιμη. Δείτε πεÏισσότεÏες πληÏοφοÏίες για το πως να κάνετε την ενημÎÏωση.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Η αναβάθμιση είναι σε εξÎλιξη, αν φÏγετε από αυτή τη σελίδα μποÏεί να διακοπεί η διαδικασία σε οÏισμÎνα πεÏιβάλλοντα χÏήσης.", "Updating {productName} to version {version}, this may take a while." : "ΕνημÎÏωση του {productName} στην Îκδοση {version}, αυτό μποÏεί να διαÏκÎσει λίγη ÏŽÏα.", "An error occurred." : "ΠαÏουσιάστηκε σφάλμα", "Please reload the page." : "ΠαÏακαλώ επαναφοÏτώστε τη σελίδα.", @@ -255,6 +262,7 @@ OC.L10N.register( "Please try again or contact your administrator." : "ΠαÏακαλώ δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειÏιστή σας.", "Log in" : "Είσοδος", "Wrong password. Reset it?" : "Λάθος Κωδικός. ΕπαναφοÏά;", + "Stay logged in" : "Μείνετε συνδεδεμÎνος", "Alternative Logins" : "ΕναλλακτικÎÏ‚ ΣυνδÎσεις", "This ownCloud instance is currently in single user mode." : "Αυτή η εγκατάσταση ownCloud είναι Ï„ÏŽÏα σε κατάσταση ενός χÏήστη.", "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο διαχειÏιστÎÏ‚ μποÏοÏν να χÏησιμοποιήσουν την εγκατάσταση.", diff --git a/core/l10n/el.json b/core/l10n/el.json index d2d7e7c4676cbe899ed08da4453b5779b1888352..f2e4430f2db85e46148cc8340f3618149ff83116 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -4,14 +4,20 @@ "Turned on maintenance mode" : "Η κατάσταση συντήÏησης ενεÏγοποιήθηκε", "Turned off maintenance mode" : "Η κατάσταση συντήÏησης απενεÏγοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουÏγία συντήÏησης διατηÏήθηκε ενεÏγή", + "Updating database schema" : "ΈνημÎÏωση σχήματος βάσης δεδομÎνων", "Updated database" : "ΕνημεÏωμÎνη βάση δεδομÎνων", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν το σχήμα της βάσης δεδομÎνων μποÏεί να ενημεÏωθεί (αυτό μποÏεί να πάÏει πολλή ÏŽÏα ανάλογα με το μÎγεθος της βάσης δεδομÎνων)", "Checked database schema update" : "Έλεγχος ενημÎÏωσης σχήματος βάσης δεδομÎνων", + "Checking updates of apps" : "Έλεγχος ενημεÏώσεων εφαÏμογών", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν το σχήμα της βάσης δεδομÎνων για %s μποÏεί να ενημεÏωθεί (αυτό μποÏεί να πάÏει πολλή ÏŽÏα ανάλογα με το μÎγεθος της βάσης δεδομÎνων)", "Checked database schema update for apps" : "Έλεγχος ενημÎÏωσης σχήματος βάσης δεδομÎνων για εφαÏμογÎÏ‚", "Updated \"%s\" to %s" : "Αναβαθμίστηκε \"%s\" σε %s", "Repair warning: " : "Î Ïοειδοποίηση διόÏθωσης:", "Repair error: " : "Σφάλμα διόÏθωσης:", "Set log level to debug - current level: \"%s\"" : "ΚαθοÏισμός του επιπÎδου καταγÏαφής σε αποσφαλμάτωση - Ï„ÏÎχον επίπεδο: \"%s\"", "Reset log level to \"%s\"" : "ΕπαναφοÏά επιπÎδου καταγÏαφής σε \"%s\"", + "%s (3rdparty)" : "%s (3ου μÎÏους)", + "%s (incompatible)" : "%s (ασÏμβατη)", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαÏμογÎÏ‚ Îχουν απενεÏγοποιηθεί: %s", "Already up to date" : "Ήδη ενημεÏωμÎνο", "File is too big" : "Το αÏχείο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿", @@ -169,6 +175,7 @@ "Hello {name}" : "Γεια σου {name}", "_download %n file_::_download %n files_" : ["λήψη %n αÏχείου","λήψη %n αÏχείων"], "{version} is available. Get more information on how to update." : "Η Îκδοση {version} είναι διαθÎσιμη. Δείτε πεÏισσότεÏες πληÏοφοÏίες για το πως να κάνετε την ενημÎÏωση.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Η αναβάθμιση είναι σε εξÎλιξη, αν φÏγετε από αυτή τη σελίδα μποÏεί να διακοπεί η διαδικασία σε οÏισμÎνα πεÏιβάλλοντα χÏήσης.", "Updating {productName} to version {version}, this may take a while." : "ΕνημÎÏωση του {productName} στην Îκδοση {version}, αυτό μποÏεί να διαÏκÎσει λίγη ÏŽÏα.", "An error occurred." : "ΠαÏουσιάστηκε σφάλμα", "Please reload the page." : "ΠαÏακαλώ επαναφοÏτώστε τη σελίδα.", @@ -253,6 +260,7 @@ "Please try again or contact your administrator." : "ΠαÏακαλώ δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειÏιστή σας.", "Log in" : "Είσοδος", "Wrong password. Reset it?" : "Λάθος Κωδικός. ΕπαναφοÏά;", + "Stay logged in" : "Μείνετε συνδεδεμÎνος", "Alternative Logins" : "ΕναλλακτικÎÏ‚ ΣυνδÎσεις", "This ownCloud instance is currently in single user mode." : "Αυτή η εγκατάσταση ownCloud είναι Ï„ÏŽÏα σε κατάσταση ενός χÏήστη.", "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο διαχειÏιστÎÏ‚ μποÏοÏν να χÏησιμοποιήσουν την εγκατάσταση.", diff --git a/db_structure.xml b/db_structure.xml index 6efcf497cf75a41685899908dd664cce1b4370da..8135746233ec0d3f5a115c92d977523282f9e976 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -127,67 +127,6 @@ </table> - <table> - - <name>*dbprefix*file_map</name> - - <declaration> - - <field> - <name>logic_path</name> - <type>text</type> - <default></default> - <notnull>true</notnull> - <length>512</length> - </field> - - <field> - <name>logic_path_hash</name> - <type>text</type> - <default></default> - <notnull>true</notnull> - <length>32</length> - </field> - - <field> - <name>physic_path</name> - <type>text</type> - <default></default> - <notnull>true</notnull> - <length>512</length> - </field> - - <field> - <name>physic_path_hash</name> - <type>text</type> - <default></default> - <notnull>true</notnull> - <length>32</length> - </field> - - <index> - <name>file_map_lp_index</name> - <primary>true</primary> - <unique>true</unique> - <field> - <name>logic_path_hash</name> - <sorting>ascending</sorting> - </field> - </index> - - <index> - <name>file_map_pp_index</name> - <unique>true</unique> - <field> - <name>physic_path_hash</name> - <sorting>ascending</sorting> - </field> - </index> - - </declaration> - - </table> - <table> <!-- diff --git a/lib/l10n/da.js b/lib/l10n/da.js index db939815143f388bdbeb559c7e05db0c982d5311..928d2f11adbda05e966dd54cd0af48adfd6470c5 100644 --- a/lib/l10n/da.js +++ b/lib/l10n/da.js @@ -87,6 +87,7 @@ OC.L10N.register( "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling af %s mislykkedes, fordi backenden ikke tillader delinger fra typen %i", "Sharing %s failed, because the file does not exist" : "Deling af %s mislykkedes, fordi filen ikke eksisterer", "You are not allowed to share %s" : "Du har ikke tilladelse til at dele %s", + "Sharing %s failed, because you can not share with yourself" : "Deling af %s mislykkedes, fordi du ikke kan dele med dig selv", "Sharing %s failed, because the user %s does not exist" : "Der skete en fejl ved deling af %s, brugeren %s eksistere ikke", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Der skete en fejl ved deling af %s, brugeren %s er ikke medlem af nogle grupper som %s er medlem af", "Sharing %s failed, because this item is already shared with %s" : "Der skete en fejl ved deling af %s, objektet er allerede delt med %s", @@ -105,6 +106,7 @@ OC.L10N.register( "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delingsbackend'en %s skal implementere grænsefladen OCP\\Share_Backend", "Sharing backend %s not found" : "Delingsbackend'en %s blev ikke fundet", "Sharing backend for %s not found" : "Delingsbackend'en for %s blev ikke fundet", + "Sharing failed, because the user %s is the original sharer" : "Deling mislykkedes, fordi brugeren %s er den som delte oprindeligt", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling af %s mislykkedes, fordi tilladelserne overskred de tillaldelser som %s var tildelt", "Sharing %s failed, because resharing is not allowed" : "Deling af %s mislykkedes, fordi videredeling ikke er tilladt", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling af %s mislykkedes, fordi back-enden ikke kunne finde kilden til %s", diff --git a/lib/l10n/da.json b/lib/l10n/da.json index e06ef9fcfc672e2bdf578d8d0216a25eab826588..a157f4a21e13ee1e2f52bcc2b5b7a87b093acde3 100644 --- a/lib/l10n/da.json +++ b/lib/l10n/da.json @@ -85,6 +85,7 @@ "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling af %s mislykkedes, fordi backenden ikke tillader delinger fra typen %i", "Sharing %s failed, because the file does not exist" : "Deling af %s mislykkedes, fordi filen ikke eksisterer", "You are not allowed to share %s" : "Du har ikke tilladelse til at dele %s", + "Sharing %s failed, because you can not share with yourself" : "Deling af %s mislykkedes, fordi du ikke kan dele med dig selv", "Sharing %s failed, because the user %s does not exist" : "Der skete en fejl ved deling af %s, brugeren %s eksistere ikke", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Der skete en fejl ved deling af %s, brugeren %s er ikke medlem af nogle grupper som %s er medlem af", "Sharing %s failed, because this item is already shared with %s" : "Der skete en fejl ved deling af %s, objektet er allerede delt med %s", @@ -103,6 +104,7 @@ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delingsbackend'en %s skal implementere grænsefladen OCP\\Share_Backend", "Sharing backend %s not found" : "Delingsbackend'en %s blev ikke fundet", "Sharing backend for %s not found" : "Delingsbackend'en for %s blev ikke fundet", + "Sharing failed, because the user %s is the original sharer" : "Deling mislykkedes, fordi brugeren %s er den som delte oprindeligt", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling af %s mislykkedes, fordi tilladelserne overskred de tillaldelser som %s var tildelt", "Sharing %s failed, because resharing is not allowed" : "Deling af %s mislykkedes, fordi videredeling ikke er tilladt", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling af %s mislykkedes, fordi back-enden ikke kunne finde kilden til %s", diff --git a/lib/l10n/el.js b/lib/l10n/el.js index 7b0dffa8bfb5bc19a0a86f3a15b38ee720702c48..841661842a48ab4dee77253813f46a5024543888 100644 --- a/lib/l10n/el.js +++ b/lib/l10n/el.js @@ -84,6 +84,7 @@ OC.L10N.register( "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιÏÎ±ÏƒÎ¼Î¿Ï %s, γιατί το σÏστημα υποστήÏιξης δεν επιτÏÎπει κοινόχÏηστα Ï„Ïπου %i", "Sharing %s failed, because the file does not exist" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί το αÏχείο δεν υπάÏχει", "You are not allowed to share %s" : "Δεν επιτÏÎπεται να διαμοιÏάσετε τον πόÏο %s", + "Sharing %s failed, because you can not share with yourself" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί δεν μποÏείτε να διαμοιÏαστείτε με τον εαυτό σας.", "Sharing %s failed, because the user %s does not exist" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί ο χÏήστης %s δεν υπάÏχει", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί ο χÏήστης %s δεν είναι μÎλος καμίας ομάδας στην οποία ο χÏήστης %s είναι μÎλος", "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί το αντικείμενο είναι διαμοιÏασμÎνο ήδη με τον χÏήστη %s", @@ -102,6 +103,7 @@ OC.L10N.register( "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï %s Ï€ÏÎπει να υλοποιεί την διεπαφή OCP\\Share_Backend", "Sharing backend %s not found" : "Το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï %s δεν βÏÎθηκε", "Sharing backend for %s not found" : "Το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï Î³Î¹Î± το %s δεν βÏÎθηκε", + "Sharing failed, because the user %s is the original sharer" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί το αντικείμενο είναι διαμοιÏασμÎνο αÏχικά από τον ίδιο χÏήστη.", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί τα δικαιώματα υπεÏτεÏοÏν αυτά που είναι οÏισμÎνα για το %s", "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί δεν επιτÏÎπεται ο επαναδιαμοιÏασμός", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï Î³Î¹Î± το %s ", diff --git a/lib/l10n/el.json b/lib/l10n/el.json index 65524a490f32ec7566ff09614018320ea6b2bbf2..9cc179382b74c877b346d82e6e3db710bb6f5ce0 100644 --- a/lib/l10n/el.json +++ b/lib/l10n/el.json @@ -82,6 +82,7 @@ "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιÏÎ±ÏƒÎ¼Î¿Ï %s, γιατί το σÏστημα υποστήÏιξης δεν επιτÏÎπει κοινόχÏηστα Ï„Ïπου %i", "Sharing %s failed, because the file does not exist" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί το αÏχείο δεν υπάÏχει", "You are not allowed to share %s" : "Δεν επιτÏÎπεται να διαμοιÏάσετε τον πόÏο %s", + "Sharing %s failed, because you can not share with yourself" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί δεν μποÏείτε να διαμοιÏαστείτε με τον εαυτό σας.", "Sharing %s failed, because the user %s does not exist" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί ο χÏήστης %s δεν υπάÏχει", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί ο χÏήστης %s δεν είναι μÎλος καμίας ομάδας στην οποία ο χÏήστης %s είναι μÎλος", "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί το αντικείμενο είναι διαμοιÏασμÎνο ήδη με τον χÏήστη %s", @@ -100,6 +101,7 @@ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï %s Ï€ÏÎπει να υλοποιεί την διεπαφή OCP\\Share_Backend", "Sharing backend %s not found" : "Το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï %s δεν βÏÎθηκε", "Sharing backend for %s not found" : "Το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï Î³Î¹Î± το %s δεν βÏÎθηκε", + "Sharing failed, because the user %s is the original sharer" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί το αντικείμενο είναι διαμοιÏασμÎνο αÏχικά από τον ίδιο χÏήστη.", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί τα δικαιώματα υπεÏτεÏοÏν αυτά που είναι οÏισμÎνα για το %s", "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί δεν επιτÏÎπεται ο επαναδιαμοιÏασμός", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ο διαμοιÏασμός του %s απÎτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σÏστημα διαμοιÏÎ±ÏƒÎ¼Î¿Ï Î³Î¹Î± το %s ", diff --git a/lib/private/encryption/file.php b/lib/private/encryption/file.php index 5a7357b9e28b4081afd09de05a2e97b9da3f39ef..6d261f46d0f271f3dfec25cb33924c6d4d54061e 100644 --- a/lib/private/encryption/file.php +++ b/lib/private/encryption/file.php @@ -27,6 +27,13 @@ class File implements \OCP\Encryption\IFile { /** @var Util */ protected $util; + /** + * cache results of already checked folders + * + * @var array + */ + protected $cache; + public function __construct(Util $util) { $this->util = $util; } @@ -53,10 +60,24 @@ class File implements \OCP\Encryption\IFile { $ownerPath = substr($ownerPath, strlen('/files')); $ownerPath = $this->util->stripPartialFileExtension($ownerPath); + + // first get the shares for the parent and cache the result so that we don't + // need to check all parents for every file + $parent = dirname($ownerPath); + if (isset($this->cache[$parent])) { + $resultForParents = $this->cache[$parent]; + } else { + $resultForParents = \OCP\Share::getUsersSharingFile($parent, $owner); + $this->cache[$parent] = $resultForParents; + } + $userIds = \array_merge($userIds, $resultForParents['users']); + $public = $resultForParents['public'] || $resultForParents['remote']; + + // Find out who, if anyone, is sharing the file - $result = \OCP\Share::getUsersSharingFile($ownerPath, $owner); - $userIds = \array_merge($userIds, $result['users']); - $public = $result['public'] || $result['remote']; + $resultForFile = \OCP\Share::getUsersSharingFile($ownerPath, $owner, false, false, false); + $userIds = \array_merge($userIds, $resultForFile['users']); + $public = $resultForFile['public'] || $resultForFile['remote'] || $public; // check if it is a group mount if (\OCP\App::isEnabled("files_external")) { diff --git a/lib/private/files/cache/watcher.php b/lib/private/files/cache/watcher.php index ff97a1f9c015c83d244d107019099f1553e6ab02..e660e56bfeebd6f5e00f596ce8e97ee6d9d77429 100644 --- a/lib/private/files/cache/watcher.php +++ b/lib/private/files/cache/watcher.php @@ -74,36 +74,57 @@ class Watcher { } /** - * check $path for updates + * check $path for updates and update if needed * * @param string $path * @param array $cachedEntry * @return boolean true if path was updated */ public function checkUpdate($path, $cachedEntry = null) { - if ($this->watchPolicy === self::CHECK_ALWAYS or ($this->watchPolicy === self::CHECK_ONCE and array_search($path, $this->checkedPaths) === false)) { - if (is_null($cachedEntry)) { - $cachedEntry = $this->cache->get($path); - } - $this->checkedPaths[] = $path; - if ($this->storage->hasUpdated($path, $cachedEntry['storage_mtime'])) { - if ($this->storage->is_dir($path)) { - $this->scanner->scan($path, Scanner::SCAN_SHALLOW); - } else { - $this->scanner->scanFile($path); - } - if ($cachedEntry['mimetype'] === 'httpd/unix-directory') { - $this->cleanFolder($path); - } - $this->cache->correctFolderSize($path); - return true; - } - return false; + if (is_null($cachedEntry)) { + $cachedEntry = $this->cache->get($path); + } + if ($this->needsUpdate($path, $cachedEntry)) { + $this->update($path, $cachedEntry); + return true; } else { return false; } } + /** + * Update the cache for changes to $path + * + * @param string $path + * @param array $cachedData + */ + public function update($path, $cachedData) { + if ($this->storage->is_dir($path)) { + $this->scanner->scan($path, Scanner::SCAN_SHALLOW); + } else { + $this->scanner->scanFile($path); + } + if ($cachedData['mimetype'] === 'httpd/unix-directory') { + $this->cleanFolder($path); + } + $this->cache->correctFolderSize($path); + } + + /** + * Check if the cache for $path needs to be updated + * + * @param string $path + * @param array $cachedData + * @return bool + */ + public function needsUpdate($path, $cachedData) { + if ($this->watchPolicy === self::CHECK_ALWAYS or ($this->watchPolicy === self::CHECK_ONCE and array_search($path, $this->checkedPaths) === false)) { + $this->checkedPaths[] = $path; + return $this->storage->hasUpdated($path, $cachedData['storage_mtime']); + } + return false; + } + /** * remove deleted files in $path from the cache * diff --git a/lib/private/files/view.php b/lib/private/files/view.php index a11df53705c1631511058d95d8d67362be21545d..887b18530d7304d12256b5d6d2844ec38c1cde29 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -1191,13 +1191,13 @@ class View { if ($storage) { $cache = $storage->getCache($internalPath); - try { - $this->lockFile($relativePath, ILockingProvider::LOCK_SHARED); - $data = $cache->get($internalPath); - $watcher = $storage->getWatcher($internalPath); + $data = $cache->get($internalPath); + $watcher = $storage->getWatcher($internalPath); + try { // if the file is not in the cache or needs to be updated, trigger the scanner and reload the data if (!$data) { + $this->lockFile($relativePath, ILockingProvider::LOCK_SHARED); if (!$storage->file_exists($internalPath)) { $this->unlockFile($relativePath, ILockingProvider::LOCK_SHARED); return false; @@ -1205,14 +1205,16 @@ class View { $scanner = $storage->getScanner($internalPath); $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); $data = $cache->get($internalPath); - } else if (!Cache\Scanner::isPartialFile($internalPath) && $watcher->checkUpdate($internalPath, $data)) { + $this->unlockFile($relativePath, ILockingProvider::LOCK_SHARED); + } else if (!Cache\Scanner::isPartialFile($internalPath) && $watcher->needsUpdate($internalPath, $data)) { + $this->lockFile($relativePath, ILockingProvider::LOCK_SHARED); + $watcher->update($internalPath, $data); $this->updater->propagate($path); $data = $cache->get($internalPath); + $this->unlockFile($relativePath, ILockingProvider::LOCK_SHARED); } - $this->unlockFile($relativePath, ILockingProvider::LOCK_SHARED); } catch (LockedException $e) { - // dont try to update the cache when the file is locked - $data = $cache->get($internalPath); + // if the file is locked we just use the old cache info } if ($data and isset($data['fileid'])) { @@ -1278,12 +1280,11 @@ class View { */ $files = array(); + $data = $cache->get($internalPath); + $watcher = $storage->getWatcher($internalPath); try { - $this->lockFile($directory, ILockingProvider::LOCK_SHARED); - - $data = $cache->get($internalPath); - $watcher = $storage->getWatcher($internalPath); if (!$data or $data['size'] === -1) { + $this->lockFile($directory, ILockingProvider::LOCK_SHARED); if (!$storage->file_exists($internalPath)) { $this->unlockFile($directory, ILockingProvider::LOCK_SHARED); return array(); @@ -1291,20 +1292,21 @@ class View { $scanner = $storage->getScanner($internalPath); $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); $data = $cache->get($internalPath); - } else if ($watcher->checkUpdate($internalPath, $data)) { + $this->unlockFile($directory, ILockingProvider::LOCK_SHARED); + } else if ($watcher->needsUpdate($internalPath, $data)) { + $this->lockFile($directory, ILockingProvider::LOCK_SHARED); + $watcher->update($internalPath, $data); $this->updater->propagate($path); $data = $cache->get($internalPath); + $this->unlockFile($directory, ILockingProvider::LOCK_SHARED); } - - $folderId = $data['fileid']; - $contents = $cache->getFolderContentsById($folderId); //TODO: mimetype_filter - - $this->unlockFile($directory, ILockingProvider::LOCK_SHARED); } catch (LockedException $e) { - // dont try to update the cache when the file is locked - $contents = $cache->getFolderContents($internalPath); + // if the file is locked we just use the old cache info } + $folderId = $data['fileid']; + $contents = $cache->getFolderContentsById($folderId); //TODO: mimetype_filter + foreach ($contents as $content) { if ($content['permissions'] === 0) { $content['permissions'] = $storage->getPermissions($content['path']); diff --git a/lib/private/ocs/corecapabilities.php b/lib/private/ocs/corecapabilities.php index 0fba7bfd7d7ec2bfff52fb8857a433e1b41049a4..f2d530a841981f35ec9ca7b828c633af49203152 100644 --- a/lib/private/ocs/corecapabilities.php +++ b/lib/private/ocs/corecapabilities.php @@ -49,7 +49,8 @@ class CoreCapabilities implements ICapability { public function getCapabilities() { return [ 'core' => [ - 'pollinterval' => $this->config->getSystemValue('pollinterval', 60) + 'pollinterval' => $this->config->getSystemValue('pollinterval', 60), + 'webdav-root' => $this->config->getSystemValue('webdav-root', 'remote.php/webdav'), ] ]; } diff --git a/lib/private/share/share.php b/lib/private/share/share.php index e79b2204a6f57539f700e7e22a66c104d006a072..0693a9c08fb2dab79cc56a0e5d0de4997cf7da3b 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -122,11 +122,12 @@ class Share extends Constants { * @param string $ownerUser owner of the file * @param boolean $includeOwner include owner to the list of users with access to the file * @param boolean $returnUserPaths Return an array with the user => path map + * @param boolean $recursive take all parent folders into account (default true) * @return array * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' */ - public static function getUsersSharingFile($path, $ownerUser, $includeOwner = false, $returnUserPaths = false) { + public static function getUsersSharingFile($path, $ownerUser, $includeOwner = false, $returnUserPaths = false, $recursive = true) { Filesystem::initMountPoints($ownerUser); $shares = $sharePaths = $fileTargets = array(); @@ -252,7 +253,7 @@ class Share extends Constants { // let's get the parent for the next round $meta = $cache->get((int)$source); - if($meta !== false) { + if ($recursive === true && $meta !== false) { $source = (int)$meta['parent']; } else { $source = -1; diff --git a/lib/private/template.php b/lib/private/template.php index 5a08e15d95b041807412e85421ed8bb63bcfac0a..38527cdc461bf4c723da3a96f83e3792d011c428 100644 --- a/lib/private/template.php +++ b/lib/private/template.php @@ -108,6 +108,7 @@ class OC_Template extends \OC\Template\Base { OC_Util::addVendorStyle('jquery-ui/themes/base/jquery-ui',null,true); OC_Util::addStyle("multiselect",null,true); OC_Util::addStyle("fixes",null,true); + OC_Util::addStyle("global",null,true); OC_Util::addStyle("apps",null,true); OC_Util::addStyle("fonts",null,true); OC_Util::addStyle("icons",null,true); diff --git a/lib/public/share.php b/lib/public/share.php index 68f278005ed72c4bb021ec3de5b94fae9025586e..86d1ffc9be217767ef72d0e47385a9ac6a1ea382 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -80,13 +80,14 @@ class Share extends \OC\Share\Constants { * @param string $ownerUser owner of the file * @param bool $includeOwner include owner to the list of users with access to the file * @param bool $returnUserPaths Return an array with the user => path map + * @param bool $recursive take parent folders into account * @return array * @note $path needs to be relative to user data dir, e.g. 'file.txt' - * not '/admin/data/file.txt' - * @since 5.0.0 + * not '/admin/files/file.txt' + * @since 5.0.0 - $recursive was added in 9.0.0 */ - public static function getUsersSharingFile($path, $ownerUser, $includeOwner = false, $returnUserPaths = false) { - return \OC\Share\Share::getUsersSharingFile($path, $ownerUser, $includeOwner, $returnUserPaths); + public static function getUsersSharingFile($path, $ownerUser, $includeOwner = false, $returnUserPaths = false, $recursive = true) { + return \OC\Share\Share::getUsersSharingFile($path, $ownerUser, $includeOwner, $returnUserPaths, $recursive); } /** diff --git a/lib/repair/dropoldtables.php b/lib/repair/dropoldtables.php index cfe0df6cb5bd5dc908b278317289984f01b68976..e8b0eba61d4cf72717772d3c9640fc601682b5c8 100644 --- a/lib/repair/dropoldtables.php +++ b/lib/repair/dropoldtables.php @@ -74,6 +74,7 @@ class DropOldTables extends BasicEmitter implements RepairStep { 'calendar_objects', 'calendar_share_calendar', 'calendar_share_event', + 'file_map', 'foldersize', 'fscache', 'locks', @@ -85,6 +86,8 @@ class DropOldTables extends BasicEmitter implements RepairStep { 'media_users', 'permissions', 'pictures_images_cache', + 'principalgroups', + 'principals', 'queuedtasks', 'sharing', ]; diff --git a/settings/ajax/geteveryonecount.php b/settings/ajax/geteveryonecount.php deleted file mode 100644 index 002c849fd393c64f121783614031aa75d1302de3..0000000000000000000000000000000000000000 --- a/settings/ajax/geteveryonecount.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php -/** - * @author Clark Tomlinson <fallen013@gmail.com> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -OC_JSON::callCheck(); -OC_JSON::checkSubAdminUser(); - -$userCount = 0; - -$currentUser = \OC::$server->getUserSession()->getUser()->getUID(); - -if (!OC_User::isAdminUser($currentUser)) { - $groups = \OC::$server->getGroupManager()->getSubAdmin()->getSubAdminsGroups(\OC::$server->getUserSession()->getUser()); - // New class returns IGroup[] so convert back - foreach ($groups as $key => $group) { - $groups[$key] = $group->getGID(); - } - - - foreach ($groups as $group) { - $userCount += count(OC_Group::usersInGroup($group)); - - } -} else { - - $userCountArray = \OC::$server->getUserManager()->countUsers(); - - if (!empty($userCountArray)) { - foreach ($userCountArray as $classname => $usercount) { - $userCount += $usercount; - } - } -} - - -OC_JSON::success(array('count' => $userCount)); diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php index 8183bc4739bc0bbbe48e7916202b05987112a6df..82483a76245a1f840a4aa841ab5dedf6d3330e5a 100644 --- a/settings/controller/userscontroller.php +++ b/settings/controller/userscontroller.php @@ -548,4 +548,41 @@ class UsersController extends Controller { ); } + /** + * Count all unique users visible for the current admin/subadmin. + * + * @NoAdminRequired + * + * @return DataResponse + */ + public function stats() { + $userCount = 0; + if ($this->isAdmin) { + $countByBackend = $this->userManager->countUsers(); + + if (!empty($countByBackend)) { + foreach ($countByBackend as $count) { + $userCount += $count; + } + } + } else { + $groups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($this->userSession->getUser()); + + $uniqueUsers = []; + foreach ($groups as $group) { + foreach($group->getUsers() as $uid => $displayName) { + $uniqueUsers[$uid] = true; + } + } + + $userCount = count($uniqueUsers); + } + + return new DataResponse( + [ + 'totalUsers' => $userCount + ] + ); + } + } diff --git a/settings/js/users/groups.js b/settings/js/users/groups.js index c8d2ef7c5b1436584166c2cda9237d9aae721abf..2639191d9186fb02367783c92db780600f337562 100644 --- a/settings/js/users/groups.js +++ b/settings/js/users/groups.js @@ -304,10 +304,10 @@ GroupList = { $.ajax({ type: "GET", dataType: "json", - url: OC.generateUrl('/settings/ajax/geteveryonecount') + url: OC.generateUrl('/settings/users/stats') }).success(function (data) { - $('#everyonegroup').data('usercount', data.count); - $('#everyonecount').text(data.count); + $('#everyonegroup').data('usercount', data.totalUsers); + $('#everyonecount').text(data.totalUsers); }); } }; diff --git a/settings/l10n/el.js b/settings/l10n/el.js index e5b03bde3471dcb18d352f4b8be5e8815851a4fe..ab9b47b366c63f91e1c0ac2f6d2a02557b862cca 100644 --- a/settings/l10n/el.js +++ b/settings/l10n/el.js @@ -80,6 +80,7 @@ OC.L10N.register( "Uninstall" : "Απεγκατάσταση", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Η εφαÏμογή Îχει ενεÏγοποιηθεί αλλά χÏειάζεται ενημÎÏωση. Θα μεταφεÏθείτε στη σελίδα ενημÎÏωσης σε 5 δευτεÏόλεπτα.", "App update" : "ΕνημÎÏωση εφαÏμογής", + "No apps found for \"{query}\"" : "Δεν βÏÎθηκαν εφαÏμογÎÏ‚ για \"{query\"}", "An error occurred: {message}" : "ΠαÏουσιάστηκε σφάλμα: {message}", "Select a profile picture" : "Επιλογή εικόνας Ï€Ïοφίλ", "Very weak password" : "Î Î¿Î»Ï Î±Î´Ïναμο συνθηματικό", diff --git a/settings/l10n/el.json b/settings/l10n/el.json index 70d23d3da19605867a481aef0704e0e5f0f6e5cb..c355f70dd82bf573f018ab8e4068ba1510a987ba 100644 --- a/settings/l10n/el.json +++ b/settings/l10n/el.json @@ -78,6 +78,7 @@ "Uninstall" : "Απεγκατάσταση", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Η εφαÏμογή Îχει ενεÏγοποιηθεί αλλά χÏειάζεται ενημÎÏωση. Θα μεταφεÏθείτε στη σελίδα ενημÎÏωσης σε 5 δευτεÏόλεπτα.", "App update" : "ΕνημÎÏωση εφαÏμογής", + "No apps found for \"{query}\"" : "Δεν βÏÎθηκαν εφαÏμογÎÏ‚ για \"{query\"}", "An error occurred: {message}" : "ΠαÏουσιάστηκε σφάλμα: {message}", "Select a profile picture" : "Επιλογή εικόνας Ï€Ïοφίλ", "Very weak password" : "Î Î¿Î»Ï Î±Î´Ïναμο συνθηματικό", diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js index 75a9eab3986bbe5fc0454ef9a646d3503a1a7b89..2b739db71c96d6769ca096cef3b78412c6f26475 100644 --- a/settings/l10n/lt_LT.js +++ b/settings/l10n/lt_LT.js @@ -19,6 +19,7 @@ OC.L10N.register( "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriau atkÅ«rimo slaptažodis. PraÅ¡ome pasitikrinti ir bandyti vÄ—l.", "Unable to change password" : "Nepavyksta pakeisti slaptažodžio", "Enabled" : "Ä®jungta", + "Federated Cloud Sharing" : "VieÅ¡as dalijimasis padebesiu", "Saved" : "IÅ¡saugoti", "Email sent" : "LaiÅ¡kas iÅ¡siųstas", "Email saved" : "El. paÅ¡tas iÅ¡saugotas", @@ -51,6 +52,7 @@ OC.L10N.register( "None" : "Nieko", "Login" : "Prisijungti", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "TrÅ«ksta PHP modulio „fileinfo“. Labai rekomenduojame įjungti šį modulį, kad gauti geriausius rezultatus nustatant mime-tipÄ….", + "Open documentation" : "Atidaryti dokumentÄ…", "Allow apps to use the Share API" : "Leidžia programoms naudoti Share API", "Allow public uploads" : "Leisti vieÅ¡us įkÄ—limus", "days" : "dienos", diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json index ee3c7ff074722f2068b9141325de304b8648cef3..a8cd70f7dd63748e29b907f08e1ac1c3ce5c9339 100644 --- a/settings/l10n/lt_LT.json +++ b/settings/l10n/lt_LT.json @@ -17,6 +17,7 @@ "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriau atkÅ«rimo slaptažodis. PraÅ¡ome pasitikrinti ir bandyti vÄ—l.", "Unable to change password" : "Nepavyksta pakeisti slaptažodžio", "Enabled" : "Ä®jungta", + "Federated Cloud Sharing" : "VieÅ¡as dalijimasis padebesiu", "Saved" : "IÅ¡saugoti", "Email sent" : "LaiÅ¡kas iÅ¡siųstas", "Email saved" : "El. paÅ¡tas iÅ¡saugotas", @@ -49,6 +50,7 @@ "None" : "Nieko", "Login" : "Prisijungti", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "TrÅ«ksta PHP modulio „fileinfo“. Labai rekomenduojame įjungti šį modulį, kad gauti geriausius rezultatus nustatant mime-tipÄ….", + "Open documentation" : "Atidaryti dokumentÄ…", "Allow apps to use the Share API" : "Leidžia programoms naudoti Share API", "Allow public uploads" : "Leisti vieÅ¡us įkÄ—limus", "days" : "dienos", diff --git a/settings/routes.php b/settings/routes.php index 10c3117c183a79ae27e73517f2993d01fcee2c70..6ba38388d3af0e6d7d2e66fc15627e9fa69d9310 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -47,6 +47,7 @@ $application->registerRoutes($this, [ ['name' => 'AppSettings#changeExperimentalConfigState', 'url' => '/settings/apps/experimental', 'verb' => 'POST'], ['name' => 'SecuritySettings#trustedDomains', 'url' => '/settings/admin/security/trustedDomains', 'verb' => 'POST'], ['name' => 'Users#setMailAddress', 'url' => '/settings/users/{id}/mailAddress', 'verb' => 'PUT'], + ['name' => 'Users#stats', 'url' => '/settings/users/stats', 'verb' => 'GET'], ['name' => 'LogSettings#setLogLevel', 'url' => '/settings/admin/log/level', 'verb' => 'POST'], ['name' => 'LogSettings#getEntries', 'url' => '/settings/admin/log/entries', 'verb' => 'GET'], ['name' => 'LogSettings#download', 'url' => '/settings/admin/log/download', 'verb' => 'GET'], @@ -69,8 +70,6 @@ $this->create('settings_admin', '/settings/admin') ->actionInclude('settings/admin.php'); // Settings ajax actions // users -$this->create('settings_ajax_everyonecount', '/settings/ajax/geteveryonecount') - ->actionInclude('settings/ajax/geteveryonecount.php'); $this->create('settings_ajax_setquota', '/settings/ajax/setquota.php') ->actionInclude('settings/ajax/setquota.php'); $this->create('settings_ajax_togglegroups', '/settings/ajax/togglegroups.php') diff --git a/settings/users.php b/settings/users.php index dac649aa828e2b50c5b575a5a6b3c5f58f15a7b9..2795032a1615939b09e2f52b3bb685ad941b6ae7 100644 --- a/settings/users.php +++ b/settings/users.php @@ -70,7 +70,7 @@ $recoveryAdminEnabled = OC_App::isEnabled('encryption') && $config->getAppValue( 'encryption', 'recoveryAdminEnabled', null ); if($isAdmin) { - $subadmins = \OC::$server->getGroupManager()->getSubAdmin()->getAllSubAdmins(); + $subAdmins = \OC::$server->getGroupManager()->getSubAdmin()->getAllSubAdmins(); // New class returns IUser[] so convert back $result = []; foreach ($subAdmins as $subAdmin) { @@ -79,7 +79,7 @@ if($isAdmin) { 'uid' => $subAdmin['user']->getUID(), ]; } - $subadmins = $result; + $subAdmins = $result; }else{ /* Retrieve group IDs from $groups array, so we can pass that information into OC_Group::displayNamesInGroups() */ $gids = array(); @@ -88,7 +88,7 @@ if($isAdmin) { $gids[] = $group['id']; } } - $subadmins = false; + $subAdmins = false; } // load preset quotas @@ -108,7 +108,7 @@ $tmpl->assign('groups', $groups); $tmpl->assign('sortGroups', $sortGroupsBy); $tmpl->assign('adminGroup', $adminGroup); $tmpl->assign('isAdmin', (int)$isAdmin); -$tmpl->assign('subadmins', $subadmins); +$tmpl->assign('subadmins', $subAdmins); $tmpl->assign('numofgroups', count($groups) + count($adminGroup)); $tmpl->assign('quota_preset', $quotaPreset); $tmpl->assign('default_quota', $defaultQuota); diff --git a/tests/settings/controller/userscontrollertest.php b/tests/settings/controller/userscontrollertest.php index e30a98447aebe054976243a20a6bfef034413d59..f4b05671ce846ecd1ba34b040d49c721d8723e38 100644 --- a/tests/settings/controller/userscontrollertest.php +++ b/tests/settings/controller/userscontrollertest.php @@ -1677,4 +1677,73 @@ class UsersControllerTest extends \Test\TestCase { $this->assertSame($responseCode, $response->getStatus()); } + public function testStatsAdmin() { + $this->container['IsAdmin'] = true; + + $this->container['UserManager'] + ->expects($this->at(0)) + ->method('countUsers') + ->will($this->returnValue([128, 44])); + + $expectedResponse = new DataResponse( + [ + 'totalUsers' => 172 + ] + ); + $response = $this->container['UsersController']->stats(); + $this->assertEquals($expectedResponse, $response); + } + + /** + * Tests that the subadmin stats return unique users, even + * when a user appears in several groups. + */ + public function testStatsSubAdmin() { + $this->container['IsAdmin'] = false; + + $user = $this->getMockBuilder('\OC\User\User') + ->disableOriginalConstructor()->getMock(); + + $this->container['UserSession'] + ->expects($this->once()) + ->method('getUser') + ->will($this->returnValue($user)); + + $group1 = $this->getMockBuilder('\OC\Group\Group') + ->disableOriginalConstructor()->getMock(); + $group1 + ->expects($this->once()) + ->method('getUsers') + ->will($this->returnValue(['foo' => 'M. Foo', 'admin' => 'S. Admin'])); + + $group2 = $this->getMockBuilder('\OC\Group\Group') + ->disableOriginalConstructor()->getMock(); + $group2 + ->expects($this->once()) + ->method('getUsers') + ->will($this->returnValue(['bar' => 'B. Ar'])); + + $subadmin = $this->getMockBuilder('\OC\SubAdmin') + ->disableOriginalConstructor() + ->getMock(); + $subadmin + ->expects($this->at(0)) + ->method('getSubAdminsGroups') + ->will($this->returnValue([$group1, $group2])); + + $this->container['GroupManager'] + ->expects($this->any()) + ->method('getSubAdmin') + ->will($this->returnValue($subadmin)); + + $expectedResponse = new DataResponse( + [ + 'totalUsers' => 3 + ] + ); + + $response = $this->container['UsersController']->stats(); + $this->assertEquals($expectedResponse, $response); + } + } diff --git a/version.php b/version.php index dd499a8d1d8320ce32f7af6d1959ff679a706c5f..7f45f5899e1266b7c7b1a7771e69bf9358ba4afe 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ // We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades // between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel // when updating major/minor version number. -$OC_Version = array(9, 0, 0, 1); +$OC_Version = array(9, 0, 0, 2); // The human readable string $OC_VersionString = '9.0 pre alpha';