Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/federation/l10n/ja.js2
-rw-r--r--apps/federation/l10n/ja.json2
-rw-r--r--apps/files/l10n/ru.js5
-rw-r--r--apps/files/l10n/ru.json5
-rw-r--r--apps/files_external/l10n/ka_GE.js18
-rw-r--r--apps/files_external/l10n/ka_GE.json18
-rw-r--r--apps/user_ldap/l10n/hu.js8
-rw-r--r--apps/user_ldap/l10n/hu.json8
-rw-r--r--apps/user_ldap/l10n/ja.js1
-rw-r--r--apps/user_ldap/l10n/ja.json1
-rw-r--r--core/l10n/lt_LT.js10
-rw-r--r--core/l10n/lt_LT.json10
-rw-r--r--lib/private/Share20/Manager.php2
-rw-r--r--lib/private/Template/CSSResourceLocator.php53
-rwxr-xr-xlib/private/Template/ResourceLocator.php90
-rw-r--r--lib/private/Updater.php7
-rw-r--r--resources/codesigning/root.crl20
-rw-r--r--settings/l10n/da.js10
-rw-r--r--settings/l10n/da.json10
-rw-r--r--tests/lib/Template/CSSResourceLocatorTest.php112
-rw-r--r--version.php1
21 files changed, 260 insertions, 133 deletions
diff --git a/apps/federation/l10n/ja.js b/apps/federation/l10n/ja.js
index 6f8a9ee096c..ebdf316e963 100644
--- a/apps/federation/l10n/ja.js
+++ b/apps/federation/l10n/ja.js
@@ -7,7 +7,7 @@ OC.L10N.register(
"Could not add server" : "サーバーを追加できませんでした",
"Trusted servers" : "信頼済サーバー",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。",
- "Add server automatically once a federated share was created successfully" : "追加するサーバは自動的に統合され、共有が追加されました",
+ "Add server automatically once a federated share was created successfully" : "追加するサーバーは自動的に統合され、共有が追加されました",
"+ Add trusted server" : "+ 信頼済サーバーに追加",
"Trusted server" : "信頼済サーバー",
"Add" : "追加",
diff --git a/apps/federation/l10n/ja.json b/apps/federation/l10n/ja.json
index 53147709788..1477edd2ac3 100644
--- a/apps/federation/l10n/ja.json
+++ b/apps/federation/l10n/ja.json
@@ -5,7 +5,7 @@
"Could not add server" : "サーバーを追加できませんでした",
"Trusted servers" : "信頼済サーバー",
"Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。",
- "Add server automatically once a federated share was created successfully" : "追加するサーバは自動的に統合され、共有が追加されました",
+ "Add server automatically once a federated share was created successfully" : "追加するサーバーは自動的に統合され、共有が追加されました",
"+ Add trusted server" : "+ 信頼済サーバーに追加",
"Trusted server" : "信頼済サーバー",
"Add" : "追加",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 09a8a4d43f4..b6222725a72 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -19,6 +19,8 @@ OC.L10N.register(
"Uploading …" : "Загрузка...",
"…" : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} из {totalSize} ({bitrate})",
+ "Target folder does not exist any more" : "Каталог больше не существует",
+ "Error when assembling chunks, status code {status}" : "Ошибка при сборке чанков, код ошибки {status}",
"Actions" : "Действия",
"Download" : "Скачать",
"Rename" : "Переименовать",
@@ -125,6 +127,7 @@ OC.L10N.register(
"Settings" : "Настройки",
"Show hidden files" : "Показывать скрытые файлы",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">доступа к вашим файлам через WebDAV</a>",
"Cancel upload" : "Отменить загрузку",
"No files in here" : "Здесь нет файлов",
"Upload some content or sync with your devices!" : "Загрузите что-нибудь или синхронизируйте со своими устройствами!",
@@ -155,7 +158,7 @@ OC.L10N.register(
"Move" : "Перенести",
"Copy local link" : "Скопировать локальную ссылку",
"Folder" : "Каталог",
- "Upload" : "Выгрузить",
+ "Upload" : "Загрузить",
"A new file or folder has been <strong>deleted</strong>" : "Новый файл или каталог был <strong>удален</strong>",
"A new file or folder has been <strong>restored</strong>" : "Новый файл или каталог был <strong>восстановлен</strong>",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Используйте этот адрес <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">для доступа по WebDAV</a>",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 8796534297e..e989cdd3183 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -17,6 +17,8 @@
"Uploading …" : "Загрузка...",
"…" : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} из {totalSize} ({bitrate})",
+ "Target folder does not exist any more" : "Каталог больше не существует",
+ "Error when assembling chunks, status code {status}" : "Ошибка при сборке чанков, код ошибки {status}",
"Actions" : "Действия",
"Download" : "Скачать",
"Rename" : "Переименовать",
@@ -123,6 +125,7 @@
"Settings" : "Настройки",
"Show hidden files" : "Показывать скрытые файлы",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">доступа к вашим файлам через WebDAV</a>",
"Cancel upload" : "Отменить загрузку",
"No files in here" : "Здесь нет файлов",
"Upload some content or sync with your devices!" : "Загрузите что-нибудь или синхронизируйте со своими устройствами!",
@@ -153,7 +156,7 @@
"Move" : "Перенести",
"Copy local link" : "Скопировать локальную ссылку",
"Folder" : "Каталог",
- "Upload" : "Выгрузить",
+ "Upload" : "Загрузить",
"A new file or folder has been <strong>deleted</strong>" : "Новый файл или каталог был <strong>удален</strong>",
"A new file or folder has been <strong>restored</strong>" : "Новый файл или каталог был <strong>восстановлен</strong>",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Используйте этот адрес <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">для доступа по WebDAV</a>",
diff --git a/apps/files_external/l10n/ka_GE.js b/apps/files_external/l10n/ka_GE.js
index 3499af1585b..ff2f4e9afab 100644
--- a/apps/files_external/l10n/ka_GE.js
+++ b/apps/files_external/l10n/ka_GE.js
@@ -10,14 +10,14 @@ OC.L10N.register(
"Error configuring OAuth2" : "OAuth2-ის კონფიგურირებისას წარმოიშვა შეცდომა",
"Generate keys" : "გასაღებების გენერირება",
"Error generating key pair" : "გასაღების წყვილის გენერირებისას წარმოიშვა შეცდომა",
- "All users. Type to select user or group." : "ყველა მომხმარებელი. მოხმარებლის ან ჯგუფის ასარჩევად დაიწყეთ ბეჭდვა .",
+ "All users. Type to select user or group." : "ყველა მომხმარებელი. მოხმარებლის ან ჯგუფის ასარჩევად დაიწყეთ ბეჭდვა.",
"(group)" : "(ჯგუფი)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)",
- "Admin defined" : "ადმინისტრატორი მითითებულია",
+ "Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ",
"Are you sure you want to delete this external storage" : "დარწმუნებული ხართ, რომ გსურთ ამ გარე საცავის გაუქმება?",
"Delete storage?" : "გავაუქმოთ საცავი?",
"Saved" : "შენახულია",
- "Saving..." : "ინახება...",
+ "Saving..." : "ინახება…",
"Save" : "შენახვა",
"Empty response from the server" : "სერვერმა დააბრუნა ცარიელი პასუხი",
"Couldn't access. Please log out and in again to activate this mount point" : "წვდომა ვერ მოხერხდა. ამ მონტაჟის წერტილის გასააქტიურებლად გთხოვთ გახვიდეთ და ახლიდან გაიაროთ ავტორიზაცია.",
@@ -28,7 +28,7 @@ OC.L10N.register(
"external-storage" : "გარე-საცავი",
"Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows-ის ქსელის დრაივის მონტაჯის წერტილების სიის მოპოვება ვერ მოხერხდა: ცარიელი პასუხი სერვერიდან",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "ზოგი კონფიგურირებული გარე მონტაჟის წერიტილი არაა დაკავშირებული. მეტი ინფორმაციისთვის გთხოვთ დააწკაპუნოთ წითელ რიგ(ებ)ს.",
- "Please enter the credentials for the {mount} mount" : "გთხოვთ მონტაჟისთვის {mount} შეიყვანოთ მონაცემები",
+ "Please enter the credentials for the {mount} mount" : "გთხოვთ {mount} მონტაჟისთვის შეიყვანოთ მონაცემები",
"Username" : "მომხმარებლის სახელი",
"Password" : "პაროლი",
"Credentials saved" : "მონაცემები შენახულია",
@@ -41,7 +41,7 @@ OC.L10N.register(
"Invalid storage backend \"%s\"" : "არასწორი საცავის ბექენდი \"%s\"",
"Not permitted to use backend \"%s\"" : "ბექენის \"%s\" გამოყენება არაა ნებადართული",
"Not permitted to use authentication mechanism \"%s\"" : "აუტენტიკაციის მექანიზმის \"%s\"-ს გამოყენება არაა ნებადართული",
- "Unsatisfied backend parameters" : "ბექენიდს პარამეტრები არადამაკმაყოფილებელია",
+ "Unsatisfied backend parameters" : "ბექენდის პარამეტრები არადამაკმაყოფილებელია",
"Unsatisfied authentication mechanism parameters" : "აუტენტიფიკაციის მექნიზმის პარამეტრები არადამაკმაყოფილებელია",
"Insufficient data: %s" : "არასაკმარისი მონაცემები: %s",
"%s" : "%s",
@@ -59,7 +59,7 @@ OC.L10N.register(
"OpenStack" : "OpenStack",
"Tenant name" : "მოიჯარის სახელი",
"Identity endpoint URL" : "იდენტობის საბოლოო-წერტილის URL",
- "Rackspace" : "Rackspace",
+ "Rackspace" : "Rackspace-ი",
"API key" : "API გასაღები",
"Global credentials" : "გლობალური მონაცემები",
"Log-in credentials, save in database" : "ლოგინის მონაცემები, შენახვა მონაცემთა ბაზაში",
@@ -68,14 +68,14 @@ OC.L10N.register(
"User entered, store in database" : "შეყვანილი მომხმარებელი, შენახვა მონაცემთა ბაზაში",
"RSA public key" : "RSA ღია გასაღები",
"Public key" : "ღია გასაღები",
- "Amazon S3" : "Amazon S3",
+ "Amazon S3" : "Amazon S3-ი",
"Bucket" : "ხაპია",
"Hostname" : "ჰოსტი",
"Port" : "პორტი",
"Region" : "რეგიონი",
"Enable SSL" : "SSL-ის ამოქმედება",
"Enable Path Style" : "ბილიკის სტილის ამოქმედება",
- "WebDAV" : "WebDAV",
+ "WebDAV" : "WebDAV-ი",
"URL" : "URL",
"Remote subfolder" : "დისტანციური ქვე-დირექტორია",
"Secure https://" : "დაცული https://",
@@ -98,7 +98,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "მოთხოვნის დროის ამოწურვა (წამები)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-ის მხარდაჭერა PHP-ში არაა მოქდენი ან დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-ს მხარდაჭერა PHP-ში არაა მოქმედი ან დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
- "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"1 %s\" არაა დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" არაა დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
"No external storage configured" : "გარე საცავი არაა კონფიგურირებული",
"You can add external storages in the personal settings" : "გარე საცავები შეგიძლიათ დაამატოთ პირად პარამეტრებში",
"Name" : "სახელი",
diff --git a/apps/files_external/l10n/ka_GE.json b/apps/files_external/l10n/ka_GE.json
index c64356f54b1..34f02298e85 100644
--- a/apps/files_external/l10n/ka_GE.json
+++ b/apps/files_external/l10n/ka_GE.json
@@ -8,14 +8,14 @@
"Error configuring OAuth2" : "OAuth2-ის კონფიგურირებისას წარმოიშვა შეცდომა",
"Generate keys" : "გასაღებების გენერირება",
"Error generating key pair" : "გასაღების წყვილის გენერირებისას წარმოიშვა შეცდომა",
- "All users. Type to select user or group." : "ყველა მომხმარებელი. მოხმარებლის ან ჯგუფის ასარჩევად დაიწყეთ ბეჭდვა .",
+ "All users. Type to select user or group." : "ყველა მომხმარებელი. მოხმარებლის ან ჯგუფის ასარჩევად დაიწყეთ ბეჭდვა.",
"(group)" : "(ჯგუფი)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)",
- "Admin defined" : "ადმინისტრატორი მითითებულია",
+ "Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ",
"Are you sure you want to delete this external storage" : "დარწმუნებული ხართ, რომ გსურთ ამ გარე საცავის გაუქმება?",
"Delete storage?" : "გავაუქმოთ საცავი?",
"Saved" : "შენახულია",
- "Saving..." : "ინახება...",
+ "Saving..." : "ინახება…",
"Save" : "შენახვა",
"Empty response from the server" : "სერვერმა დააბრუნა ცარიელი პასუხი",
"Couldn't access. Please log out and in again to activate this mount point" : "წვდომა ვერ მოხერხდა. ამ მონტაჟის წერტილის გასააქტიურებლად გთხოვთ გახვიდეთ და ახლიდან გაიაროთ ავტორიზაცია.",
@@ -26,7 +26,7 @@
"external-storage" : "გარე-საცავი",
"Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows-ის ქსელის დრაივის მონტაჯის წერტილების სიის მოპოვება ვერ მოხერხდა: ცარიელი პასუხი სერვერიდან",
"Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "ზოგი კონფიგურირებული გარე მონტაჟის წერიტილი არაა დაკავშირებული. მეტი ინფორმაციისთვის გთხოვთ დააწკაპუნოთ წითელ რიგ(ებ)ს.",
- "Please enter the credentials for the {mount} mount" : "გთხოვთ მონტაჟისთვის {mount} შეიყვანოთ მონაცემები",
+ "Please enter the credentials for the {mount} mount" : "გთხოვთ {mount} მონტაჟისთვის შეიყვანოთ მონაცემები",
"Username" : "მომხმარებლის სახელი",
"Password" : "პაროლი",
"Credentials saved" : "მონაცემები შენახულია",
@@ -39,7 +39,7 @@
"Invalid storage backend \"%s\"" : "არასწორი საცავის ბექენდი \"%s\"",
"Not permitted to use backend \"%s\"" : "ბექენის \"%s\" გამოყენება არაა ნებადართული",
"Not permitted to use authentication mechanism \"%s\"" : "აუტენტიკაციის მექანიზმის \"%s\"-ს გამოყენება არაა ნებადართული",
- "Unsatisfied backend parameters" : "ბექენიდს პარამეტრები არადამაკმაყოფილებელია",
+ "Unsatisfied backend parameters" : "ბექენდის პარამეტრები არადამაკმაყოფილებელია",
"Unsatisfied authentication mechanism parameters" : "აუტენტიფიკაციის მექნიზმის პარამეტრები არადამაკმაყოფილებელია",
"Insufficient data: %s" : "არასაკმარისი მონაცემები: %s",
"%s" : "%s",
@@ -57,7 +57,7 @@
"OpenStack" : "OpenStack",
"Tenant name" : "მოიჯარის სახელი",
"Identity endpoint URL" : "იდენტობის საბოლოო-წერტილის URL",
- "Rackspace" : "Rackspace",
+ "Rackspace" : "Rackspace-ი",
"API key" : "API გასაღები",
"Global credentials" : "გლობალური მონაცემები",
"Log-in credentials, save in database" : "ლოგინის მონაცემები, შენახვა მონაცემთა ბაზაში",
@@ -66,14 +66,14 @@
"User entered, store in database" : "შეყვანილი მომხმარებელი, შენახვა მონაცემთა ბაზაში",
"RSA public key" : "RSA ღია გასაღები",
"Public key" : "ღია გასაღები",
- "Amazon S3" : "Amazon S3",
+ "Amazon S3" : "Amazon S3-ი",
"Bucket" : "ხაპია",
"Hostname" : "ჰოსტი",
"Port" : "პორტი",
"Region" : "რეგიონი",
"Enable SSL" : "SSL-ის ამოქმედება",
"Enable Path Style" : "ბილიკის სტილის ამოქმედება",
- "WebDAV" : "WebDAV",
+ "WebDAV" : "WebDAV-ი",
"URL" : "URL",
"Remote subfolder" : "დისტანციური ქვე-დირექტორია",
"Secure https://" : "დაცული https://",
@@ -96,7 +96,7 @@
"Request timeout (seconds)" : "მოთხოვნის დროის ამოწურვა (წამები)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-ის მხარდაჭერა PHP-ში არაა მოქდენი ან დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-ს მხარდაჭერა PHP-ში არაა მოქმედი ან დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
- "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"1 %s\" არაა დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" არაა დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.",
"No external storage configured" : "გარე საცავი არაა კონფიგურირებული",
"You can add external storages in the personal settings" : "გარე საცავები შეგიძლიათ დაამატოთ პირად პარამეტრებში",
"Name" : "სახელი",
diff --git a/apps/user_ldap/l10n/hu.js b/apps/user_ldap/l10n/hu.js
index d76a5517461..82a8c910529 100644
--- a/apps/user_ldap/l10n/hu.js
+++ b/apps/user_ldap/l10n/hu.js
@@ -83,6 +83,7 @@ OC.L10N.register(
"LDAP / AD Email Address:" : "LDAP / AD e-mail cím:",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Bejelentkezés engedélyezése az email attribútum alapján. \"mail\" és \"mailPrimaryAddress\" megengedett.",
"Other Attributes:" : "Más attribútumok:",
+ "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "A belépéskor alkalmazandó filtert definiálja. \"%%uid\" lecseréli a felhasználónevez a bejelentkezésnél. Példa: \"uid=%%uid\"",
"Test Loginname" : "Teszt bejelentkezési név",
"Verify settings" : "Beállítások ellenőrzése",
"1. Server" : "1. Szerver",
@@ -106,6 +107,7 @@ OC.L10N.register(
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Kerülje az automata LDAP kéréseket. Hasznos nagy telepítéseknél, de némi LDAP ismeretet igényel.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP szűrők kézi beállitása (ajánlott a nagy könyvtáraknál)",
"Listing and searching for users is constrained by these criteria:" : "Felhasználók keresésének és listázásának szabályozása ezekkel a szabályokkal:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "A leggyakoribb objektum osztályok a felhasználóknál az organizationalPerson, person, user, és inetOrgPerson. Ha nem vagy benne biztos melyik osztályt válaszd, kérlek konzultálj a könyvtár adminnal.",
"The filter specifies which LDAP users shall have access to the %s instance." : "A szűrő meghatározza, hogy mely LDAP felhasználók lesznek jogosultak %s elérésére.",
"Verify settings and count users" : "Beállítások ellenőrzése és felhasználók megszámolása",
"Saving" : "Mentés",
@@ -144,6 +146,7 @@ OC.L10N.register(
"User Display Name Field" : "A felhasználónév mezője",
"The LDAP attribute to use to generate the user's display name." : "Ebből az LDAP attribútumból képződik a felhasználó megjelenítendő neve.",
"2nd User Display Name Field" : "Második felhasználónév mező",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcionális. Egy LDAP attribútum, melyet a felhasználónév mellé teszünk a zárójelben. Például: »John Doe (john.doe@example.org)«.",
"Base User Tree" : "A felhasználói fa gyökere",
"One User Base DN per line" : "Soronként egy felhasználói fa gyökerét adhatjuk meg",
"User Search Attributes" : "A felhasználók lekérdezett attribútumai",
@@ -155,13 +158,16 @@ OC.L10N.register(
"Group Search Attributes" : "A csoportok lekérdezett attribútumai",
"Group-Member association" : "A csoporttagság attribútuma",
"Dynamic Group Member URL" : "Dinamikus csoporttag URL",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Az LDAP attribútum ami megmutatja az LDAP kereséseknél a csoport objektumban mi tartozik a csoportba. (Üres beállítás esetén a dinamikus csoporttagság funkció kikapcsol.)",
"Nested Groups" : "Egymásba ágyazott csoportok",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Amikor be van kapcsolva, akkor azokat a csoportokat is kezelni tudjuk, melyekben a személyek mellett csoportok is vannak. (Csak akkor működik, ha a csoportok \"member\" attribútuma DN-eket tartalmaz.)",
"Paging chunksize" : "Lapozási darab méret",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "A lapméret megadásával korlátozható az egy fordulóban kapott találatok száma, akkor is, ha az LDAP-keresés nagyon sok találatot ad, ha ezt az LDAP-kiszolgáló támogatja. (Ha 0-ra állítjuk, akkor ezáltal letiltjuk ezt a lapozó funkciót.)",
"Enable LDAP password changes per user" : "LDAP jelszavak felhasználónkénti változtatásának engedélyezése",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP felhasználók jelszómódosításának engedélyezése és Super Adminisztrátorok és Csoport Adminisztrátorok felhatalmazása felhasználóik jelszavainak módosítására. Csak az LDAP megfelelő jelszópolitikai beállításai mellett működik. Mivel a jelszavakat sima szövegként küldjük az LDAP szervernek, átviteli titkosítást kell alkalmazni és a jelszó hash-eket az LDAP szerveren kell bekapcsolni.",
"(New password is sent as plain text to LDAP)" : "(Az új jelszó sima szövegként lett elküldve az LDAP-nak)",
"Default password policy DN" : "Alapértelmezett jelszó szabály DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Az alapértelmezett jelszó lejárati politika DN-je, melyet alkalmazunk. Csak akkor működik, ha a felhasználónkénti jelszómódosítás be van kapcsolva és csak OpenLDAP-al. Hagyd üresen a jelszólejárat kikapcsolásához.",
"Special Attributes" : "Különleges attribútumok",
"Quota Field" : "Kvóta mező",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Hagyd üresen az alapértelmezett felhasználói kvótáért, vagy adj meg egy LDAP/AD paramétert.",
@@ -172,12 +178,14 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "Felhasználói Home mappa elnevezési szabály",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Hagyja üresen, ha a felhasználónevet kívánja használni. Ellenkező esetben adjon meg egy LDAP/AD attribútumot!",
"Internal Username" : "Belső felhasználónév",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Alapértelmezetten egy belső felhasználónév jön létre a UUID attribútumból. Gondoskodik róla, hogy a felhasználónév egyedi legyen és ne kelljen a karaktereket konvertálni. A belső felhasználónév csak a következő karakterekből állhat: [ a-zA-Z0-9_.@- ]. Más karakterek az ASCII megfelelőikre lesznek cserélve, vagy csak simán ki lesznek hagyva. Ütközés eseté egy szám lesz hozzáadva, vagy növelve. A belső felhasználónév a felhasználó belső azonosítására szolgál. Egyben a felhasználó saját mappájának neveként is szolgál. Része a távoli URL-eknek, például az összes DAV szolgáltatásnál. Ezzel a beállítással az alapértelmezett működés felülírható. Hagyd üresen az alapértelmezett működéshez. A változások csak újonnan leképezett (hozzáadott) LDAP felhasználóknál kerül alkalmazásra.",
"Internal Username Attribute:" : "A belső felhasználónév attribútuma:",
"Override UUID detection" : "Az UUID-felismerés felülbírálása",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Az UUID attribútum alapértelmezetten felismerésre kerül. Az UUID attribútum segítségével az LDAP felhasználók és csoportok egyértelműen azonosíthatók. A belső felhasználónév is azonos lesz az UUID-vel, ha fentebb nincs másként definiálva. Ezt a beállítást felülbírálhatja és bármely attribútummal helyettesítheti. Ekkor azonban gondoskodnia kell arról, hogy a kiválasztott attribútum minden felhasználó és csoport esetén lekérdezhető legyen és egyedi értékkel bír. Ha a mezőt üresen hagyja, akkor az alapértelmezett attribútum lesz érvényes. Egy esetleges módosítás csak az újonnan hozzárendelt (ill. létrehozott) felhasználókra és csoportokra lesz érvényes.",
"UUID Attribute for Users:" : "A felhasználók UUID attribútuma:",
"UUID Attribute for Groups:" : "A csoportok UUID attribútuma:",
"Username-LDAP User Mapping" : "Felhasználó - LDAP felhasználó hozzárendelés",
+ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "A felhasználónevek adattárolásra és hozzárendelésre (meta) szolgálnak. A felhasználók pontos felismerésére és azonosítására, minden LDAP felhasználóhoz hozzárendelünk egy belső felhaszhálónevet. Ez a felhasználónév LDAP felhasználóhoz rendelését igényli. A létrehozott felhasználónév az LDAP UUID-hez kötődik. Egyben a DN tárolásra kerül az LDAP interakció csökkentésére, de nem használjuk az azonosítás során. Ha a DN változik, a változást megtaláljuk. A belső felhasználónevek újrahasznosításra kerülnek. A leképezés kitörlése mindenfelé maradványokat eredményez. A leképezések törlése nem konfiguráció érzékeny, minden LDAP konfigurációt érint! Soha ne töröld a leképezéseket éles rendszeren, csak tesztelési vagy kísérleti állapotban.",
"Clear Username-LDAP User Mapping" : "A felhasználó - LDAP felhasználó hozzárendelés törlése",
"Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "A %uid helytartó hiányzik. Ez kerül behelyettesítésre a felhasználónévvel az LDAP / AD lekérdezéskor.",
diff --git a/apps/user_ldap/l10n/hu.json b/apps/user_ldap/l10n/hu.json
index e5efb5f2ae4..25f5622fc93 100644
--- a/apps/user_ldap/l10n/hu.json
+++ b/apps/user_ldap/l10n/hu.json
@@ -81,6 +81,7 @@
"LDAP / AD Email Address:" : "LDAP / AD e-mail cím:",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Bejelentkezés engedélyezése az email attribútum alapján. \"mail\" és \"mailPrimaryAddress\" megengedett.",
"Other Attributes:" : "Más attribútumok:",
+ "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "A belépéskor alkalmazandó filtert definiálja. \"%%uid\" lecseréli a felhasználónevez a bejelentkezésnél. Példa: \"uid=%%uid\"",
"Test Loginname" : "Teszt bejelentkezési név",
"Verify settings" : "Beállítások ellenőrzése",
"1. Server" : "1. Szerver",
@@ -104,6 +105,7 @@
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Kerülje az automata LDAP kéréseket. Hasznos nagy telepítéseknél, de némi LDAP ismeretet igényel.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP szűrők kézi beállitása (ajánlott a nagy könyvtáraknál)",
"Listing and searching for users is constrained by these criteria:" : "Felhasználók keresésének és listázásának szabályozása ezekkel a szabályokkal:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "A leggyakoribb objektum osztályok a felhasználóknál az organizationalPerson, person, user, és inetOrgPerson. Ha nem vagy benne biztos melyik osztályt válaszd, kérlek konzultálj a könyvtár adminnal.",
"The filter specifies which LDAP users shall have access to the %s instance." : "A szűrő meghatározza, hogy mely LDAP felhasználók lesznek jogosultak %s elérésére.",
"Verify settings and count users" : "Beállítások ellenőrzése és felhasználók megszámolása",
"Saving" : "Mentés",
@@ -142,6 +144,7 @@
"User Display Name Field" : "A felhasználónév mezője",
"The LDAP attribute to use to generate the user's display name." : "Ebből az LDAP attribútumból képződik a felhasználó megjelenítendő neve.",
"2nd User Display Name Field" : "Második felhasználónév mező",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcionális. Egy LDAP attribútum, melyet a felhasználónév mellé teszünk a zárójelben. Például: »John Doe (john.doe@example.org)«.",
"Base User Tree" : "A felhasználói fa gyökere",
"One User Base DN per line" : "Soronként egy felhasználói fa gyökerét adhatjuk meg",
"User Search Attributes" : "A felhasználók lekérdezett attribútumai",
@@ -153,13 +156,16 @@
"Group Search Attributes" : "A csoportok lekérdezett attribútumai",
"Group-Member association" : "A csoporttagság attribútuma",
"Dynamic Group Member URL" : "Dinamikus csoporttag URL",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Az LDAP attribútum ami megmutatja az LDAP kereséseknél a csoport objektumban mi tartozik a csoportba. (Üres beállítás esetén a dinamikus csoporttagság funkció kikapcsol.)",
"Nested Groups" : "Egymásba ágyazott csoportok",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Amikor be van kapcsolva, akkor azokat a csoportokat is kezelni tudjuk, melyekben a személyek mellett csoportok is vannak. (Csak akkor működik, ha a csoportok \"member\" attribútuma DN-eket tartalmaz.)",
"Paging chunksize" : "Lapozási darab méret",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "A lapméret megadásával korlátozható az egy fordulóban kapott találatok száma, akkor is, ha az LDAP-keresés nagyon sok találatot ad, ha ezt az LDAP-kiszolgáló támogatja. (Ha 0-ra állítjuk, akkor ezáltal letiltjuk ezt a lapozó funkciót.)",
"Enable LDAP password changes per user" : "LDAP jelszavak felhasználónkénti változtatásának engedélyezése",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP felhasználók jelszómódosításának engedélyezése és Super Adminisztrátorok és Csoport Adminisztrátorok felhatalmazása felhasználóik jelszavainak módosítására. Csak az LDAP megfelelő jelszópolitikai beállításai mellett működik. Mivel a jelszavakat sima szövegként küldjük az LDAP szervernek, átviteli titkosítást kell alkalmazni és a jelszó hash-eket az LDAP szerveren kell bekapcsolni.",
"(New password is sent as plain text to LDAP)" : "(Az új jelszó sima szövegként lett elküldve az LDAP-nak)",
"Default password policy DN" : "Alapértelmezett jelszó szabály DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Az alapértelmezett jelszó lejárati politika DN-je, melyet alkalmazunk. Csak akkor működik, ha a felhasználónkénti jelszómódosítás be van kapcsolva és csak OpenLDAP-al. Hagyd üresen a jelszólejárat kikapcsolásához.",
"Special Attributes" : "Különleges attribútumok",
"Quota Field" : "Kvóta mező",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Hagyd üresen az alapértelmezett felhasználói kvótáért, vagy adj meg egy LDAP/AD paramétert.",
@@ -170,12 +176,14 @@
"User Home Folder Naming Rule" : "Felhasználói Home mappa elnevezési szabály",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Hagyja üresen, ha a felhasználónevet kívánja használni. Ellenkező esetben adjon meg egy LDAP/AD attribútumot!",
"Internal Username" : "Belső felhasználónév",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Alapértelmezetten egy belső felhasználónév jön létre a UUID attribútumból. Gondoskodik róla, hogy a felhasználónév egyedi legyen és ne kelljen a karaktereket konvertálni. A belső felhasználónév csak a következő karakterekből állhat: [ a-zA-Z0-9_.@- ]. Más karakterek az ASCII megfelelőikre lesznek cserélve, vagy csak simán ki lesznek hagyva. Ütközés eseté egy szám lesz hozzáadva, vagy növelve. A belső felhasználónév a felhasználó belső azonosítására szolgál. Egyben a felhasználó saját mappájának neveként is szolgál. Része a távoli URL-eknek, például az összes DAV szolgáltatásnál. Ezzel a beállítással az alapértelmezett működés felülírható. Hagyd üresen az alapértelmezett működéshez. A változások csak újonnan leképezett (hozzáadott) LDAP felhasználóknál kerül alkalmazásra.",
"Internal Username Attribute:" : "A belső felhasználónév attribútuma:",
"Override UUID detection" : "Az UUID-felismerés felülbírálása",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Az UUID attribútum alapértelmezetten felismerésre kerül. Az UUID attribútum segítségével az LDAP felhasználók és csoportok egyértelműen azonosíthatók. A belső felhasználónév is azonos lesz az UUID-vel, ha fentebb nincs másként definiálva. Ezt a beállítást felülbírálhatja és bármely attribútummal helyettesítheti. Ekkor azonban gondoskodnia kell arról, hogy a kiválasztott attribútum minden felhasználó és csoport esetén lekérdezhető legyen és egyedi értékkel bír. Ha a mezőt üresen hagyja, akkor az alapértelmezett attribútum lesz érvényes. Egy esetleges módosítás csak az újonnan hozzárendelt (ill. létrehozott) felhasználókra és csoportokra lesz érvényes.",
"UUID Attribute for Users:" : "A felhasználók UUID attribútuma:",
"UUID Attribute for Groups:" : "A csoportok UUID attribútuma:",
"Username-LDAP User Mapping" : "Felhasználó - LDAP felhasználó hozzárendelés",
+ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "A felhasználónevek adattárolásra és hozzárendelésre (meta) szolgálnak. A felhasználók pontos felismerésére és azonosítására, minden LDAP felhasználóhoz hozzárendelünk egy belső felhaszhálónevet. Ez a felhasználónév LDAP felhasználóhoz rendelését igényli. A létrehozott felhasználónév az LDAP UUID-hez kötődik. Egyben a DN tárolásra kerül az LDAP interakció csökkentésére, de nem használjuk az azonosítás során. Ha a DN változik, a változást megtaláljuk. A belső felhasználónevek újrahasznosításra kerülnek. A leképezés kitörlése mindenfelé maradványokat eredményez. A leképezések törlése nem konfiguráció érzékeny, minden LDAP konfigurációt érint! Soha ne töröld a leképezéseket éles rendszeren, csak tesztelési vagy kísérleti állapotban.",
"Clear Username-LDAP User Mapping" : "A felhasználó - LDAP felhasználó hozzárendelés törlése",
"Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése",
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "A %uid helytartó hiányzik. Ez kerül behelyettesítésre a felhasználónévvel az LDAP / AD lekérdezéskor.",
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index f05eecab563..07c0c12f5dc 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"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とパスワードを空のままにしてください。",
+ "Save Credentials" : "資格情報を保存",
"One Base DN per line" : "1行に1つのベースDNを記入",
"You can specify Base DN for users and groups in the Advanced tab" : "詳細設定でユーザーとグループのベースDNを指定することができます。",
"Detect Base DN" : "ベース DN を検出",
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index c07b58c0540..bcd872d9827 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -97,6 +97,7 @@
"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とパスワードを空のままにしてください。",
+ "Save Credentials" : "資格情報を保存",
"One Base DN per line" : "1行に1つのベースDNを記入",
"You can specify Base DN for users and groups in the Advanced tab" : "詳細設定でユーザーとグループのベースDNを指定することができます。",
"Detect Base DN" : "ベース DN を検出",
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index 33da59cf60d..bbef29a834c 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -83,7 +83,7 @@ OC.L10N.register(
"Reset password" : "Atstatyti slaptažodį",
"No" : "Ne",
"Yes" : "Taip",
- "No files in here" : "Duomenų nėra",
+ "No files in here" : "Čia failų nėra",
"Choose" : "Pasirinkti",
"Copy" : "Kopijuoti",
"Move" : "Perkelti",
@@ -185,7 +185,7 @@ OC.L10N.register(
"Collaborative tags" : "Žymes skirtos dalinimuisi su kitais asmenimis",
"No tags found" : "Nerasta jokių žymių",
"unknown text" : "nežinomas tekstas",
- "Hello world!" : "Sveikas pasauli!",
+ "Hello world!" : "Sveikas, pasauli!",
"sunny" : "saulėta",
"Hello {name}, the weather is {weather}" : "Sveiki {name}, šiandienos oras yra {weather}",
"Hello {name}" : "Sveiki, {name},",
@@ -227,6 +227,7 @@ OC.L10N.register(
"Trace" : "Sekti",
"Security warning" : "Saugumo įspėjimas",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų duomenų katalogas ir failai, tikriausiai, yra prieinami per internetą, nes .htaccess failas neveikia.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Išsamesnei informacijai apie tai kaip tinkamai sukonfigūruoti savo serverį, žiūrėkite <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">dokumentaciją</a>.",
"Create an <strong>admin account</strong>" : "Sukurkite <strong>administratoriaus paskyrą</strong>",
"Username" : "Naudotojo vardas",
"Storage & database" : "Saugykla ir duomenų bazė",
@@ -262,9 +263,12 @@ OC.L10N.register(
"Wrong password." : "Neteisingas slaptažodis.",
"Log in" : "Prisijungti",
"Stay logged in" : "Likti prisijungus",
+ "Forgot password?" : "Pamiršote slaptažodį?",
+ "Back to log in" : "Grįžti prie prisijungimo",
"Alternative Logins" : "Alternatyvūs prisijungimai",
"Account access" : "Paskyros prieiga",
"You are about to grant %s access to your %s account." : "Jūs ketinate suteikti %s prieigą prie savo %s paskyros.",
+ "Grant access" : "Suteikti prieigą",
"App token" : "Išorinės sistemos įskiepio kodas",
"Alternative login using app token" : "Alternatyvus prisijungimas naudojant išorinės sistemos kodą",
"Redirecting …" : "Nukreipiama...",
@@ -351,6 +355,6 @@ OC.L10N.register(
"Please use the command line updater because you have a big instance." : "Prašome atnaujinti per komandinę eilutę, nes jūsų sistema yra didelė.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Detalesnės informacijos ieškokite <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentacijoje</a>",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache yra neteisingai sukonfigūruotas. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Siekiant geresnio sistemos našumo rekomenduojame</a> įrašyti šiuos nustatymus <code>php.ini</code> byloje:",
- "You are about to grant \"%s\" access to your %s account." : "Leisite \"%s\" naudoti jūsų %s paskyrą."
+ "You are about to grant \"%s\" access to your %s account." : "Ketinate suteikti \"%s\" prieigą prie savo %s paskyros."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index 8b59920d2ea..a1433b29303 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -81,7 +81,7 @@
"Reset password" : "Atstatyti slaptažodį",
"No" : "Ne",
"Yes" : "Taip",
- "No files in here" : "Duomenų nėra",
+ "No files in here" : "Čia failų nėra",
"Choose" : "Pasirinkti",
"Copy" : "Kopijuoti",
"Move" : "Perkelti",
@@ -183,7 +183,7 @@
"Collaborative tags" : "Žymes skirtos dalinimuisi su kitais asmenimis",
"No tags found" : "Nerasta jokių žymių",
"unknown text" : "nežinomas tekstas",
- "Hello world!" : "Sveikas pasauli!",
+ "Hello world!" : "Sveikas, pasauli!",
"sunny" : "saulėta",
"Hello {name}, the weather is {weather}" : "Sveiki {name}, šiandienos oras yra {weather}",
"Hello {name}" : "Sveiki, {name},",
@@ -225,6 +225,7 @@
"Trace" : "Sekti",
"Security warning" : "Saugumo įspėjimas",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų duomenų katalogas ir failai, tikriausiai, yra prieinami per internetą, nes .htaccess failas neveikia.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Išsamesnei informacijai apie tai kaip tinkamai sukonfigūruoti savo serverį, žiūrėkite <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">dokumentaciją</a>.",
"Create an <strong>admin account</strong>" : "Sukurkite <strong>administratoriaus paskyrą</strong>",
"Username" : "Naudotojo vardas",
"Storage & database" : "Saugykla ir duomenų bazė",
@@ -260,9 +261,12 @@
"Wrong password." : "Neteisingas slaptažodis.",
"Log in" : "Prisijungti",
"Stay logged in" : "Likti prisijungus",
+ "Forgot password?" : "Pamiršote slaptažodį?",
+ "Back to log in" : "Grįžti prie prisijungimo",
"Alternative Logins" : "Alternatyvūs prisijungimai",
"Account access" : "Paskyros prieiga",
"You are about to grant %s access to your %s account." : "Jūs ketinate suteikti %s prieigą prie savo %s paskyros.",
+ "Grant access" : "Suteikti prieigą",
"App token" : "Išorinės sistemos įskiepio kodas",
"Alternative login using app token" : "Alternatyvus prisijungimas naudojant išorinės sistemos kodą",
"Redirecting …" : "Nukreipiama...",
@@ -349,6 +353,6 @@
"Please use the command line updater because you have a big instance." : "Prašome atnaujinti per komandinę eilutę, nes jūsų sistema yra didelė.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Detalesnės informacijos ieškokite <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentacijoje</a>",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache yra neteisingai sukonfigūruotas. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Siekiant geresnio sistemos našumo rekomenduojame</a> įrašyti šiuos nustatymus <code>php.ini</code> byloje:",
- "You are about to grant \"%s\" access to your %s account." : "Leisite \"%s\" naudoti jūsų %s paskyrą."
+ "You are about to grant \"%s\" access to your %s account." : "Ketinate suteikti \"%s\" prieigą prie savo %s paskyros."
},"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/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index d31a4e30dd6..be019852ff3 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -1407,7 +1407,7 @@ class Manager implements IManager {
foreach ($tmp as $k => $v) {
if (isset($al[$k])) {
if (is_array($al[$k])) {
- $al[$k] = array_merge($al[$k], $v);
+ $al[$k] += $v;
} else {
$al[$k] = $al[$k] || $v;
}
diff --git a/lib/private/Template/CSSResourceLocator.php b/lib/private/Template/CSSResourceLocator.php
index 29f3efaa8da..d5e9ce732cc 100644
--- a/lib/private/Template/CSSResourceLocator.php
+++ b/lib/private/Template/CSSResourceLocator.php
@@ -6,6 +6,7 @@
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Kyle Fazzari <kyrofa@ubuntu.com>
*
* @license AGPL-3.0
*
@@ -122,45 +123,25 @@ class CSSResourceLocator extends ResourceLocator {
parent::append($root, $file, $webRoot, $throw);
} else {
if (!$webRoot) {
- $tmpRoot = realpath($root);
- /*
- * traverse the potential web roots upwards in the path
- *
- * example:
- * - root: /srv/www/apps/myapp
- * - available mappings: ['/srv/www']
- *
- * First we check if a mapping for /srv/www/apps/myapp is available,
- * then /srv/www/apps, /srv/www/apps, /srv/www, ... until we find a
- * valid web root
- */
- do {
- if (isset($this->mapping[$tmpRoot])) {
- $webRoot = $this->mapping[$tmpRoot];
- break;
+ $webRoot = $this->findWebRoot($root);
+
+ if ($webRoot === null) {
+ $webRoot = '';
+ $this->logger->error('ResourceLocator can not find a web root (root: {root}, file: {file}, webRoot: {webRoot}, throw: {throw})', [
+ 'app' => 'lib',
+ 'root' => $root,
+ 'file' => $file,
+ 'webRoot' => $webRoot,
+ 'throw' => $throw ? 'true' : 'false'
+ ]);
+
+ if ($throw && $root === '/') {
+ throw new ResourceNotFoundException($file, $webRoot);
}
-
- if ($tmpRoot === '/') {
- $webRoot = '';
- $this->logger->error('ResourceLocator can not find a web root (root: {root}, file: {file}, webRoot: {webRoot}, throw: {throw})', [
- 'app' => 'lib',
- 'root' => $root,
- 'file' => $file,
- 'webRoot' => $webRoot,
- 'throw' => $throw ? 'true' : 'false'
- ]);
- break;
- }
- $tmpRoot = dirname($tmpRoot);
- } while(true);
-
- }
-
- if ($throw && $tmpRoot === '/') {
- throw new ResourceNotFoundException($file, $webRoot);
+ }
}
- $this->resources[] = array($tmpRoot, $webRoot, $file);
+ $this->resources[] = array($webRoot? : '/', $webRoot, $file);
}
}
}
diff --git a/lib/private/Template/ResourceLocator.php b/lib/private/Template/ResourceLocator.php
index f721906e12b..0d7767fdd0b 100755
--- a/lib/private/Template/ResourceLocator.php
+++ b/lib/private/Template/ResourceLocator.php
@@ -7,6 +7,7 @@
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Kyle Fazzari <kyrofa@ubuntu.com>
*
* @license AGPL-3.0
*
@@ -107,6 +108,50 @@ abstract class ResourceLocator {
}
/**
+ * Attempt to find the webRoot
+ *
+ * traverse the potential web roots upwards in the path
+ *
+ * example:
+ * - root: /srv/www/apps/myapp
+ * - available mappings: ['/srv/www']
+ *
+ * First we check if a mapping for /srv/www/apps/myapp is available,
+ * then /srv/www/apps, /srv/www/apps, /srv/www, ... until we find a
+ * valid web root
+ *
+ * @param string $root
+ * @return string|null The web root or null on failure
+ */
+ protected function findWebRoot($root) {
+ $webRoot = null;
+ $tmpRoot = $root;
+
+ while ($webRoot === null) {
+ if (isset($this->mapping[$tmpRoot])) {
+ $webRoot = $this->mapping[$tmpRoot];
+ break;
+ }
+
+ if ($tmpRoot === '/') {
+ break;
+ }
+
+ $tmpRoot = dirname($tmpRoot);
+ }
+
+ if ($webRoot === null) {
+ $realpath = realpath($root);
+
+ if ($realpath && ($realpath !== $root)) {
+ return $this->findWebRoot($realpath);
+ }
+ }
+
+ return $webRoot;
+ }
+
+ /**
* append the $file resource at $root
*
* @param string $root path to check
@@ -116,7 +161,6 @@ abstract class ResourceLocator {
* @throws ResourceNotFoundException Only thrown when $throw is true and the resource is missing
*/
protected function append($root, $file, $webRoot = null, $throw = true) {
-
if (!is_string($root)) {
if ($throw) {
throw new ResourceNotFoundException($file, $webRoot);
@@ -125,38 +169,18 @@ abstract class ResourceLocator {
}
if (!$webRoot) {
- $tmpRoot = realpath($root);
- /*
- * traverse the potential web roots upwards in the path
- *
- * example:
- * - root: /srv/www/apps/myapp
- * - available mappings: ['/srv/www']
- *
- * First we check if a mapping for /srv/www/apps/myapp is available,
- * then /srv/www/apps, /srv/www/apps, /srv/www, ... until we find a
- * valid web root
- */
- do {
- if (isset($this->mapping[$tmpRoot])) {
- $webRoot = $this->mapping[$tmpRoot];
- break;
- }
-
- if ($tmpRoot === '/') {
- $webRoot = '';
- $this->logger->error('ResourceLocator can not find a web root (root: {root}, file: {file}, webRoot: {webRoot}, throw: {throw})', [
- 'app' => 'lib',
- 'root' => $root,
- 'file' => $file,
- 'webRoot' => $webRoot,
- 'throw' => $throw ? 'true' : 'false'
- ]);
- break;
- }
- $tmpRoot = dirname($tmpRoot);
- } while(true);
-
+ $webRoot = $this->findWebRoot($root);
+
+ if ($webRoot === null) {
+ $webRoot = '';
+ $this->logger->error('ResourceLocator can not find a web root (root: {root}, file: {file}, webRoot: {webRoot}, throw: {throw})', [
+ 'app' => 'lib',
+ 'root' => $root,
+ 'file' => $file,
+ 'webRoot' => $webRoot,
+ 'throw' => $throw ? 'true' : 'false'
+ ]);
+ }
}
$this->resources[] = array($root, $webRoot, $file);
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index f80b3a863a5..be45e9a1301 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -188,6 +188,7 @@ class Updater extends BasicEmitter {
public function isUpgradePossible($oldVersion, $newVersion, array $allowedPreviousVersions) {
$version = explode('.', $oldVersion);
$majorMinor = $version[0] . '.' . $version[1];
+ $patch = $version[0] . '.' . $version[1] . '.' . $version[2];
$currentVendor = $this->config->getAppValue('core', 'vendor', '');
@@ -199,7 +200,8 @@ class Updater extends BasicEmitter {
'11.0.0.10',
], true)) {
$currentVendor = 'nextcloud';
- } else if (isset($allowedPreviousVersions['owncloud'][$oldVersion])) {
+ } else if (isset($allowedPreviousVersions['owncloud'][$oldVersion])
+ || isset($allowedPreviousVersions['owncloud'][$patch])) {
$currentVendor = 'owncloud';
}
}
@@ -212,7 +214,8 @@ class Updater extends BasicEmitter {
// Check if the instance can be migrated
return isset($allowedPreviousVersions[$currentVendor][$majorMinor]) ||
- isset($allowedPreviousVersions[$currentVendor][$oldVersion]);
+ isset($allowedPreviousVersions[$currentVendor][$oldVersion]) ||
+ isset($allowedPreviousVersions[$currentVendor][$patch]);
}
/**
diff --git a/resources/codesigning/root.crl b/resources/codesigning/root.crl
index 31f8055e3b1..e8eaf56c88c 100644
--- a/resources/codesigning/root.crl
+++ b/resources/codesigning/root.crl
@@ -1,14 +1,14 @@
-----BEGIN X509 CRL-----
-MIICIzCCAQsCAQEwDQYJKoZIhvcNAQELBQAwezELMAkGA1UEBhMCREUxGzAZBgNV
+MIICODCCASACAQEwDQYJKoZIhvcNAQELBQAwezELMAkGA1UEBhMCREUxGzAZBgNV
BAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzEXMBUGA1UECgwOTmV4dGNsb3VkIEdtYkgx
NjA0BgNVBAMMLU5leHRjbG91ZCBDb2RlIFNpZ25pbmcgSW50ZXJtZWRpYXRlIEF1
-dGhvcml0eRcNMTcwMjIwMTAwODU2WhcNMjYxMjMwMTAwODU2WjAqMBMCAhAQFw0x
-NjEwMTcxMjA5MTlaMBMCAhAXFw0xNzAyMjAxMDAyMzhaoDAwLjAfBgNVHSMEGDAW
-gBRt6m6qqTcsPIktFz79Ru7DnnjtdDALBgNVHRQEBAICEAQwDQYJKoZIhvcNAQEL
-BQADggEBAC94bDgg/jGNTgp+L4I4GoZtfVQI9E0NbFyb2pBdAHA9vOcwvIYaaaB5
-b2hi5Ath/2o5/1OcnTJ8B5RPIoRu/2XOXiMXEH1ilS89VPYjNUUmEWmfFLKm8rWx
-Z91cIBCeSDITDfYC+yG+QjVsl7YY60P7fduajZXdSD1ZtHravczVFXzilbafvFex
-eim9jF+lANeFoTtFcmWCyUM/ys/qKagFBmkLkuxrYerWEMrNy6QNwc5dnL0LtPag
-3aYRVY9qGqFWKFA0zg6dge4n9iZVkwczJME8AuKh2sRsqCmadx7QGqzkJWWXAAFi
-j0Ixr7s4a90qFE1dE5v/SukfWeUH1Wg=
+dGhvcml0eRcNMTcxMTIzMTY1NTA2WhcNMjcxMDAyMTY1NTA2WjA/MBMCAhAQFw0x
+NjEwMTcxMjA5MTlaMBMCAhAXFw0xNzAyMjAxMDAyMzhaMBMCAhB0Fw0xNzExMjMx
+NjU0NTlaoDAwLjAfBgNVHSMEGDAWgBRt6m6qqTcsPIktFz79Ru7DnnjtdDALBgNV
+HRQEBAICEAUwDQYJKoZIhvcNAQELBQADggEBAJd8OTir5g1ziRheLx/pPa78/X6s
+SpTdmXtbrlF5oklQP4IJMPsjXkOc573PUkGQGoZkuwDJNgnTaxcTI7bx3BkTshwF
+I53sdMzQXy5nSwmq4zmz8aJa0f8hhXgilkdNf81nghrJVEnZgf/ySVTtnsx9HyGk
+BKwZlz7bKxj5KC8RNzWJ8iR4rvkRAYCxmFRYbIxyBpUEsXj+j6txpS0um+E9h/wj
+/0g3dRQ6yoL7k2WdUQ6oIBJ9w74fMlkeZLKBc6qoR8bdsWl1CSQYhgSYczIsfyyk
+ztzk425ba0tK68BBrrZSoAwU2SXsfRYwOpo/hbEkTA9qaoB0Le0NOH5OE3s=
-----END X509 CRL-----
diff --git a/settings/l10n/da.js b/settings/l10n/da.js
index 1971b7831e6..323cf4683ee 100644
--- a/settings/l10n/da.js
+++ b/settings/l10n/da.js
@@ -101,17 +101,23 @@ OC.L10N.register(
"Enabling app …" : "Aktiverer app...",
"Error while enabling app" : "Kunne ikke aktivere app",
"Error: This app can not be enabled because it makes the server unstable" : "Fejl: Denne app kan ikke aktiveres fordi den gør serveren ustabil",
+ "Error: Could not disable broken app" : "Fejl: Kunne ikke deaktivere app",
+ "Error while disabling broken app" : "Fejl under deaktivering af ødelagt app",
+ "No app updates available" : "Ingen app opdateringer tilgængelige",
"Updating...." : "Opdaterer....",
"Error while updating app" : "Der opstod en fejl under app opgraderingen",
"Updated" : "Opdateret",
"Removing …" : "Fjerner...",
+ "Error while removing app" : "Fejl under fjernelse af app",
"Remove" : "Fjern",
"App update" : "App update",
"Approved" : "Godkendt",
"Experimental" : "Eksperimentel",
"No apps found for {query}" : "Ingen apps fundet for {query}",
"Enable all" : "Aktiver alle",
+ "Allow filesystem access" : "Tillad filsystem adgang",
"Disconnect" : "Frakobl",
+ "Revoke" : "Tilbagekald",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
@@ -122,10 +128,14 @@ OC.L10N.register(
"iPad iOS" : "iPad iOS",
"iOS Client" : "iOS Client",
"Android Client" : "Android klient",
+ "Sync client - {os}" : "Synk klient - {os}",
+ "This session" : "Sessionen",
"Copy" : "Kopier",
"Copied!" : "Kopieret",
"Not supported!" : "Ikke understøttet",
+ "Press ⌘-C to copy." : "Tryk ⌘-C for at kopiere.",
"Press Ctrl-C to copy." : "Tryk Ctrl-C for kopi.",
+ "Error while loading browser sessions and device tokens" : "Fejl mens browser sessions og enhed tokens blev loadet.",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Der opstod en fejl. Upload venligst et ASCII-indkodet PEM-certifikat.",
"Valid until {date}" : "Gyldig indtil {date}",
"Delete" : "Slet",
diff --git a/settings/l10n/da.json b/settings/l10n/da.json
index 177f07aa791..e328561a6cc 100644
--- a/settings/l10n/da.json
+++ b/settings/l10n/da.json
@@ -99,17 +99,23 @@
"Enabling app …" : "Aktiverer app...",
"Error while enabling app" : "Kunne ikke aktivere app",
"Error: This app can not be enabled because it makes the server unstable" : "Fejl: Denne app kan ikke aktiveres fordi den gør serveren ustabil",
+ "Error: Could not disable broken app" : "Fejl: Kunne ikke deaktivere app",
+ "Error while disabling broken app" : "Fejl under deaktivering af ødelagt app",
+ "No app updates available" : "Ingen app opdateringer tilgængelige",
"Updating...." : "Opdaterer....",
"Error while updating app" : "Der opstod en fejl under app opgraderingen",
"Updated" : "Opdateret",
"Removing …" : "Fjerner...",
+ "Error while removing app" : "Fejl under fjernelse af app",
"Remove" : "Fjern",
"App update" : "App update",
"Approved" : "Godkendt",
"Experimental" : "Eksperimentel",
"No apps found for {query}" : "Ingen apps fundet for {query}",
"Enable all" : "Aktiver alle",
+ "Allow filesystem access" : "Tillad filsystem adgang",
"Disconnect" : "Frakobl",
+ "Revoke" : "Tilbagekald",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
@@ -120,10 +126,14 @@
"iPad iOS" : "iPad iOS",
"iOS Client" : "iOS Client",
"Android Client" : "Android klient",
+ "Sync client - {os}" : "Synk klient - {os}",
+ "This session" : "Sessionen",
"Copy" : "Kopier",
"Copied!" : "Kopieret",
"Not supported!" : "Ikke understøttet",
+ "Press ⌘-C to copy." : "Tryk ⌘-C for at kopiere.",
"Press Ctrl-C to copy." : "Tryk Ctrl-C for kopi.",
+ "Error while loading browser sessions and device tokens" : "Fejl mens browser sessions og enhed tokens blev loadet.",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Der opstod en fejl. Upload venligst et ASCII-indkodet PEM-certifikat.",
"Valid until {date}" : "Gyldig indtil {date}",
"Delete" : "Slet",
diff --git a/tests/lib/Template/CSSResourceLocatorTest.php b/tests/lib/Template/CSSResourceLocatorTest.php
index a16cc18cb0a..ee209a599d6 100644
--- a/tests/lib/Template/CSSResourceLocatorTest.php
+++ b/tests/lib/Template/CSSResourceLocatorTest.php
@@ -24,6 +24,9 @@
namespace Test\Template;
use OC\Files\AppData\Factory;
+use OCP\Files\IAppData;
+use OCP\Files\SimpleFS\ISimpleFolder;
+use OCP\Files\SimpleFS\ISimpleFile;
use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IConfig;
@@ -45,6 +48,10 @@ class CSSResourceLocatorTest extends \Test\TestCase {
protected $depsCache;
/** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
protected $logger;
+ protected $appname;
+ protected $appdir;
+ protected $appdirLink;
+ protected $appurl;
protected function setUp() {
parent::setUp();
@@ -55,6 +62,20 @@ class CSSResourceLocatorTest extends \Test\TestCase {
$this->config = $this->createMock(IConfig::class);
$this->depsCache = $this->createMock(ICache::class);
$this->themingDefaults = $this->createMock(ThemingDefaults::class);
+
+ $this->appdir = null;
+ $this->themingDefaults
+ ->expects($this->any())
+ ->method('getScssVariables')
+ ->willReturn([]);
+ }
+
+ protected function tearDown() {
+ if (!is_null($this->appdir)) {
+ array_pop(\OC::$APPSROOTS);
+ unlink($this->appdirLink);
+ $this->rrmdir($this->appdir);
+ }
}
private function cssResourceLocator() {
@@ -95,36 +116,58 @@ class CSSResourceLocatorTest extends \Test\TestCase {
return sha1(uniqid(mt_rand(), true));
}
- public function testConstructor() {
- $locator = $this->cssResourceLocator();
- $this->assertAttributeEquals('theme', 'theme', $locator);
- $this->assertAttributeEquals('core', 'serverroot', $locator);
- $this->assertAttributeEquals(array('core'=>'map','3rd'=>'party'), 'mapping', $locator);
- $this->assertAttributeEquals('3rd', 'thirdpartyroot', $locator);
- $this->assertAttributeEquals('map', 'webroot', $locator);
- $this->assertAttributeEquals(array(), 'resources', $locator);
- }
+ private function setupAppDir() {
+ $this->appname = 'test-app-'.$this->randomString();
+ $folder = $this->createMock(ISimpleFolder::class);
+ $this->appData->method('getFolder')
+ ->with($this->appname)
+ ->willReturn($folder);
+
+ $file = $this->createMock(ISimpleFile::class);
+ $folder->method('getFile')
+ ->will($this->returnCallback(function($path) use ($file) {
+ return $file;
+ }));
+
+ $this->urlGenerator
+ ->method('linkToRoute')
+ ->willReturn(\OC::$WEBROOT . '/test-file');
- public function testFindWithAppPathSymlink() {
// First create new apps path, and a symlink to it
$apps_dirname = $this->randomString();
- $new_apps_path = sys_get_temp_dir() . '/' . $apps_dirname;
- $new_apps_path_symlink = $new_apps_path . '_link';
- mkdir($new_apps_path);
- symlink($apps_dirname, $new_apps_path_symlink);
+ $this->appdir = sys_get_temp_dir() . '/' . $apps_dirname;
+ $this->appdirLink = $this->appdir . '_link';
+ mkdir($this->appdir);
+ symlink($apps_dirname, $this->appdirLink);
// Create an app within that path
- mkdir($new_apps_path . '/' . 'test-css-app');
+ mkdir($this->appdir . '/' . $this->appname);
+
+ $this->appurl = 'css-apps-test';
// Use the symlink as the app path
\OC::$APPSROOTS[] = [
- 'path' => $new_apps_path_symlink,
- 'url' => '/css-apps-test',
+ 'path' => $this->appdirLink,
+ 'url' => '/' . $this->appurl,
'writable' => false,
];
+ }
+
+ public function testConstructor() {
+ $locator = $this->cssResourceLocator();
+ $this->assertAttributeEquals('theme', 'theme', $locator);
+ $this->assertAttributeEquals('core', 'serverroot', $locator);
+ $this->assertAttributeEquals(array('core'=>'map','3rd'=>'party'), 'mapping', $locator);
+ $this->assertAttributeEquals('3rd', 'thirdpartyroot', $locator);
+ $this->assertAttributeEquals('map', 'webroot', $locator);
+ $this->assertAttributeEquals(array(), 'resources', $locator);
+ }
+
+ public function testFindCSSWithAppPathSymlink() {
+ $this->setupAppDir();
$locator = $this->cssResourceLocator();
- $locator->find(array('test-css-app/test-file'));
+ $locator->find(array($this->appname . '/test-file'));
$resources = $locator->getResources();
$this->assertCount(1, $resources);
@@ -134,17 +177,40 @@ class CSSResourceLocatorTest extends \Test\TestCase {
$webRoot = $resource[1];
$file = $resource[2];
- $expectedRoot = $new_apps_path . '/test-css-app';
- $expectedWebRoot = \OC::$WEBROOT . '/css-apps-test/test-css-app';
+ $expectedRoot = $this->appdir . '/' . $this->appname;
+ $expectedWebRoot = \OC::$WEBROOT . '/' . $this->appurl . '/' . $this->appname;
$expectedFile = 'test-file.css';
$this->assertEquals($expectedRoot, $root,
'Ensure the app path symlink is resolved into the real path');
$this->assertEquals($expectedWebRoot, $webRoot);
$this->assertEquals($expectedFile, $file);
+ }
- array_pop(\OC::$APPSROOTS);
- unlink($new_apps_path_symlink);
- $this->rrmdir($new_apps_path);
+ public function testFindSCSSWithAppPathSymlink() {
+ $this->setupAppDir();
+
+ // Create an SCSS file there
+ touch($this->appdir . '/' . $this->appname . '/test-file.scss');
+
+ $locator = $this->cssResourceLocator();
+ $locator->find(array($this->appname . '/test-file'));
+
+ $resources = $locator->getResources();
+ $this->assertCount(1, $resources);
+ $resource = $resources[0];
+ $this->assertCount(3, $resource);
+ $root = $resource[0];
+ $webRoot = $resource[1];
+ $file = $resource[2];
+
+ $expectedRoot = '/';
+ $expectedWebRoot = '';
+ $expectedFile = 'test-file';
+
+ $this->assertEquals($expectedRoot, $root,
+ 'Ensure the app path symlink is resolved into the real path');
+ $this->assertEquals($expectedWebRoot, $webRoot);
+ $this->assertEquals($expectedFile, $file);
}
}
diff --git a/version.php b/version.php
index d12622c7e34..d556d4cb28a 100644
--- a/version.php
+++ b/version.php
@@ -41,6 +41,7 @@ $OC_VersionCanBeUpgradedFrom = [
'10.0.1.5' => true,
'10.0.2.1' => true,
'10.0.3.3' => true,
+ '10.0.4' => true, // TODO adjust to 4 digits once it is final
],
];