diff options
32 files changed, 328 insertions, 26 deletions
diff --git a/apps/comments/l10n/bg.js b/apps/comments/l10n/bg.js index ee323661bf0..9e668885d02 100644 --- a/apps/comments/l10n/bg.js +++ b/apps/comments/l10n/bg.js @@ -25,6 +25,8 @@ OC.L10N.register( "%1$s commented on %2$s" : "%1$s коментиран за %2$s", "{author} commented on {file}" : "{author} коментира за {file}", "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове", + "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Бяхте споменат/а на “%s”, в коментар от потребител, който вече е изтрит", + "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит", "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”", "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”", "Unknown user" : "Непознат потребител", diff --git a/apps/comments/l10n/bg.json b/apps/comments/l10n/bg.json index 21d84ad2b00..0f4ae28a007 100644 --- a/apps/comments/l10n/bg.json +++ b/apps/comments/l10n/bg.json @@ -23,6 +23,8 @@ "%1$s commented on %2$s" : "%1$s коментиран за %2$s", "{author} commented on {file}" : "{author} коментира за {file}", "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове", + "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Бяхте споменат/а на “%s”, в коментар от потребител, който вече е изтрит", + "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит", "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”", "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”", "Unknown user" : "Непознат потребител", diff --git a/apps/comments/l10n/sv.js b/apps/comments/l10n/sv.js index 94b78efb128..582b1827542 100644 --- a/apps/comments/l10n/sv.js +++ b/apps/comments/l10n/sv.js @@ -25,6 +25,8 @@ OC.L10N.register( "%1$s commented on %2$s" : "%1$s kommenterade på %2$s", "{author} commented on {file}" : "{author} kommenterade på {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer", + "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du nämndes på “%s” i en kommentar av en användare som nu har tagits bort", + "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du nämndes på “{file}” i en kommentar av en användare som nu har tagits bort", "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”", "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"", "Unknown user" : "Okänd användare", diff --git a/apps/comments/l10n/sv.json b/apps/comments/l10n/sv.json index ae50ff98d29..e2a3e0646c8 100644 --- a/apps/comments/l10n/sv.json +++ b/apps/comments/l10n/sv.json @@ -23,6 +23,8 @@ "%1$s commented on %2$s" : "%1$s kommenterade på %2$s", "{author} commented on {file}" : "{author} kommenterade på {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer", + "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du nämndes på “%s” i en kommentar av en användare som nu har tagits bort", + "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du nämndes på “{file}” i en kommentar av en användare som nu har tagits bort", "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”", "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"", "Unknown user" : "Okänd användare", diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js index 31df68f7d34..8ae6fde335a 100644 --- a/apps/encryption/l10n/lt_LT.js +++ b/apps/encryption/l10n/lt_LT.js @@ -21,7 +21,7 @@ OC.L10N.register( "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.", "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.", "Private key password successfully updated." : "Privataus rakto slaptažodis sėkmingai atnaujintas.", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti šifravimo raktų migraciją iš senojo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti savo šifravimo raktų perkėlimą iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Šifravimo įskiepis neatpažįsta privataus rakto. Atnaujinkite slaptažodį skirtą privačiam raktui naudoti, kurį rasite asmeninių nustatymų skiltyje, skirtoje atstatyti prieigą prie šifruotų failų.", "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo.", "Please enable server side encryption in the admin settings in order to use the encryption module." : "Administratoriaus nustatymuose įgalinkite šifravimą, jei norite naudoti šifravimo modulį.", diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json index 6b72ad0ab1c..0af867d3d55 100644 --- a/apps/encryption/l10n/lt_LT.json +++ b/apps/encryption/l10n/lt_LT.json @@ -19,7 +19,7 @@ "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.", "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.", "Private key password successfully updated." : "Privataus rakto slaptažodis sėkmingai atnaujintas.", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti šifravimo raktų migraciją iš senojo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti savo šifravimo raktų perkėlimą iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Šifravimo įskiepis neatpažįsta privataus rakto. Atnaujinkite slaptažodį skirtą privačiam raktui naudoti, kurį rasite asmeninių nustatymų skiltyje, skirtoje atstatyti prieigą prie šifruotų failų.", "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo.", "Please enable server side encryption in the admin settings in order to use the encryption module." : "Administratoriaus nustatymuose įgalinkite šifravimą, jei norite naudoti šifravimo modulį.", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 3a135ba66b4..8bfc3c23027 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -20,6 +20,7 @@ OC.L10N.register( "…" : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})", "Target folder does not exist any more" : "Målmapp existerar inte längre", + "Error when assembling chunks, status code {status}" : "Fel vid ihopsättning av bitarna: statuskod: {status}", "Actions" : "Åtgärder", "Download" : "Ladda ned", "Rename" : "Byt namn", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 9ee140d1194..a33455084d9 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -18,6 +18,7 @@ "…" : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})", "Target folder does not exist any more" : "Målmapp existerar inte längre", + "Error when assembling chunks, status code {status}" : "Fel vid ihopsättning av bitarna: statuskod: {status}", "Actions" : "Åtgärder", "Download" : "Ladda ned", "Rename" : "Byt namn", diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index ca7068fe9e1..1cf83abda61 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -109,6 +109,7 @@ OC.L10N.register( "Upload files to %s" : "Nahrať súbory do %s", "Select or drop files" : "Vyberte alebo položte súbory", "Uploading files…" : "Nahrávanie súborov...", - "Uploaded files:" : "Nahrané súbory..." + "Uploaded files:" : "Nahrané súbory...", + "%s is publicly shared" : "%s je verejne zdieľaný" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index 58fcc11861a..51dcf325bc8 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -107,6 +107,7 @@ "Upload files to %s" : "Nahrať súbory do %s", "Select or drop files" : "Vyberte alebo položte súbory", "Uploading files…" : "Nahrávanie súborov...", - "Uploaded files:" : "Nahrané súbory..." + "Uploaded files:" : "Nahrané súbory...", + "%s is publicly shared" : "%s je verejne zdieľaný" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/theming/css/theming.scss b/apps/theming/css/theming.scss index 3cb8ee2584d..623aad063f1 100644 --- a/apps/theming/css/theming.scss +++ b/apps/theming/css/theming.scss @@ -91,14 +91,17 @@ } /* override styles for login screen in guest.css */ -@if variable_exists('theming-logo-mime') { +@if variable_exists('theming-logo-mime') and $theming-logo-mime != '' { #header .logo { background-image: url(#{$image-logo}); background-size: contain; } + #body-login #header .logo { + margin-bottom: 22px; + } } -@if variable_exists('theming-background-mime') { +@if variable_exists('theming-background-mime') and $theming-background-mime != '' { #body-login, #firstrunwizard .firstrunwizard-header, #theming-preview { diff --git a/core/css/jquery-ui-fixes.scss b/core/css/jquery-ui-fixes.scss index 9dc75fc3274..0500e1b08c8 100644 --- a/core/css/jquery-ui-fixes.scss +++ b/core/css/jquery-ui-fixes.scss @@ -11,6 +11,7 @@ .ui-widget-header { border: none; color: $color-main-text; + background-image: none; } .ui-widget-header a { color: $color-main-text; diff --git a/core/l10n/nl.js b/core/l10n/nl.js index 78b38973eb0..db164b9112f 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -56,6 +56,7 @@ OC.L10N.register( "Search contacts …" : "Zoek contacten ...", "No contacts found" : "Geen contacten gevonden", "Show all contacts …" : "Alle contacten weergeven", + "Could not load your contacts" : "Kon uw contacten niet laden", "Loading your contacts …" : "Je contacten wordt geladen ...", "Looking for {term} …" : "Kijken voor {term} …", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Er traden problemen op tijdens de code betrouwbaarheidscontrole. Meer informatie…</a>", @@ -314,6 +315,18 @@ OC.L10N.register( "This %s instance is currently in maintenance mode, which may take a while." : "Deze %s staat momenteel in de onderhoudsstand, dat kan enige tijd duren.", "This page will refresh itself when the %s instance is available again." : "Deze pagina wordt ververst als de %s-installatie weer beschikbaar is.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Neem contact op met je systeembeheerder als deze melding aanhoudt of onverwacht verscheen.", - "Thank you for your patience." : "Bedankt voor je geduld." + "Thank you for your patience." : "Bedankt voor je geduld.", + "There was an error loading your contacts" : "Er is een fout opgetreden tijdens het laden van uw contacten", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Uw webserver is nog niet juist ingesteld voor het synchroniseren van bestanden omdat de WebDAV-interface niet naar behoren werkt.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Deze server heeft geen werkende internetverbinding: Meerdere (eind)punten konden niet bereikt worden. Dit betekent dat sommige onderdelen, zoals het koppelen van externe opslag, het ontvangen van notificaties over updates of de installatie van third-party apps, niet zullen werken. Ook het benaderen van bestanden op afstand en het verzenden van notificatie via e-mail werkt mogelijk niet. Als je alle onderdelen wil gebruiken, moet je de internetverbinding van deze server aanzetten.", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "De PHP functie \"set_time_limit\" is niet beschikbaar. Dit kan er voor zorgen dat scripts gestopt worden tijdens de uitvoeren ervan, wat resulteert in een defecte installatie. We raden sterk aan deze functie aan te zetten.", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "De datafolder en bestanden zijn waarschijnlijk te benaderen via het internet. Het .htaccess bestand werkt niet. Het is sterk aangeraden om de webserver in te stellen dat de datafolder niet meer te benaderen is, of dat je de datafolder verplaatst naar een locatie buiten de hoofdmap voor documenten van de webserver.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "De \"{header}\" HTTP header is niet ingesteld om gelijk te zijn aan \"{expected}\". Dit is een mogelijk beveiligings- of privacyrisico en we raden je aan deze instellingen aan te passen.", + "Shared with {recipients}" : "Delen met {recipients}", + "The server encountered an internal error and was unable to complete your request." : "Er is een interne fout opgetreden op de server en kon daarom je verzoek niet verwerken.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Neem alstublieft contact op met de serverbeheerder als deze foutmelding meerdere keren terugkomt, en neem onderstaande technische details hierin op. ", + "This action requires you to confirm your password:" : "Deze actie moet je met je wachtwoord bevestigen:", + "Wrong password. Reset it?" : "Onjuist wachtwoord. Wachtwoord resetten?", + "You are accessing the server from an untrusted domain." : "Je benadert de server van een niet-vertrouwd domein." }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/nl.json b/core/l10n/nl.json index a8e8317bf69..d73b2106fc0 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -54,6 +54,7 @@ "Search contacts …" : "Zoek contacten ...", "No contacts found" : "Geen contacten gevonden", "Show all contacts …" : "Alle contacten weergeven", + "Could not load your contacts" : "Kon uw contacten niet laden", "Loading your contacts …" : "Je contacten wordt geladen ...", "Looking for {term} …" : "Kijken voor {term} …", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Er traden problemen op tijdens de code betrouwbaarheidscontrole. Meer informatie…</a>", @@ -312,6 +313,18 @@ "This %s instance is currently in maintenance mode, which may take a while." : "Deze %s staat momenteel in de onderhoudsstand, dat kan enige tijd duren.", "This page will refresh itself when the %s instance is available again." : "Deze pagina wordt ververst als de %s-installatie weer beschikbaar is.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Neem contact op met je systeembeheerder als deze melding aanhoudt of onverwacht verscheen.", - "Thank you for your patience." : "Bedankt voor je geduld." + "Thank you for your patience." : "Bedankt voor je geduld.", + "There was an error loading your contacts" : "Er is een fout opgetreden tijdens het laden van uw contacten", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Uw webserver is nog niet juist ingesteld voor het synchroniseren van bestanden omdat de WebDAV-interface niet naar behoren werkt.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Deze server heeft geen werkende internetverbinding: Meerdere (eind)punten konden niet bereikt worden. Dit betekent dat sommige onderdelen, zoals het koppelen van externe opslag, het ontvangen van notificaties over updates of de installatie van third-party apps, niet zullen werken. Ook het benaderen van bestanden op afstand en het verzenden van notificatie via e-mail werkt mogelijk niet. Als je alle onderdelen wil gebruiken, moet je de internetverbinding van deze server aanzetten.", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "De PHP functie \"set_time_limit\" is niet beschikbaar. Dit kan er voor zorgen dat scripts gestopt worden tijdens de uitvoeren ervan, wat resulteert in een defecte installatie. We raden sterk aan deze functie aan te zetten.", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "De datafolder en bestanden zijn waarschijnlijk te benaderen via het internet. Het .htaccess bestand werkt niet. Het is sterk aangeraden om de webserver in te stellen dat de datafolder niet meer te benaderen is, of dat je de datafolder verplaatst naar een locatie buiten de hoofdmap voor documenten van de webserver.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "De \"{header}\" HTTP header is niet ingesteld om gelijk te zijn aan \"{expected}\". Dit is een mogelijk beveiligings- of privacyrisico en we raden je aan deze instellingen aan te passen.", + "Shared with {recipients}" : "Delen met {recipients}", + "The server encountered an internal error and was unable to complete your request." : "Er is een interne fout opgetreden op de server en kon daarom je verzoek niet verwerken.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Neem alstublieft contact op met de serverbeheerder als deze foutmelding meerdere keren terugkomt, en neem onderstaande technische details hierin op. ", + "This action requires you to confirm your password:" : "Deze actie moet je met je wachtwoord bevestigen:", + "Wrong password. Reset it?" : "Onjuist wachtwoord. Wachtwoord resetten?", + "You are accessing the server from an untrusted domain." : "Je benadert de server van een niet-vertrouwd domein." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 28004d50cf5..3eb532be0c6 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -802,6 +802,7 @@ return array( 'OC\\Repair' => $baseDir . '/lib/private/Repair.php', 'OC\\RepairException' => $baseDir . '/lib/private/RepairException.php', 'OC\\Repair\\CleanTags' => $baseDir . '/lib/private/Repair/CleanTags.php', + 'OC\\Repair\\ClearFrontendCaches' => $baseDir . '/lib/private/Repair/ClearFrontendCaches.php', 'OC\\Repair\\Collation' => $baseDir . '/lib/private/Repair/Collation.php', 'OC\\Repair\\MoveUpdaterStepFile' => $baseDir . '/lib/private/Repair/MoveUpdaterStepFile.php', 'OC\\Repair\\NC11\\FixMountStorages' => $baseDir . '/lib/private/Repair/NC11/FixMountStorages.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index f23933fe983..2483b5689b3 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -832,6 +832,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Repair' => __DIR__ . '/../../..' . '/lib/private/Repair.php', 'OC\\RepairException' => __DIR__ . '/../../..' . '/lib/private/RepairException.php', 'OC\\Repair\\CleanTags' => __DIR__ . '/../../..' . '/lib/private/Repair/CleanTags.php', + 'OC\\Repair\\ClearFrontendCaches' => __DIR__ . '/../../..' . '/lib/private/Repair/ClearFrontendCaches.php', 'OC\\Repair\\Collation' => __DIR__ . '/../../..' . '/lib/private/Repair/Collation.php', 'OC\\Repair\\MoveUpdaterStepFile' => __DIR__ . '/../../..' . '/lib/private/Repair/MoveUpdaterStepFile.php', 'OC\\Repair\\NC11\\FixMountStorages' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/FixMountStorages.php', diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php index 357851bedd5..1ad00ba44c5 100644 --- a/lib/private/Files/Cache/Wrapper/CacheJail.php +++ b/lib/private/Files/Cache/Wrapper/CacheJail.php @@ -312,6 +312,10 @@ class CacheJail extends CacheWrapper { */ public function getPathById($id) { $path = $this->getCache()->getPathById($id); + if ($path === null) { + return null; + } + return $this->getJailedPath($path); } diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 2b671662f99..d787a1c802b 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -33,6 +33,7 @@ namespace OC; use OC\App\AppStore\Bundles\BundleFetcher; use OC\Files\AppData\Factory; use OC\Repair\CleanTags; +use OC\Repair\ClearFrontendCaches; use OC\Repair\Collation; use OC\Repair\MoveUpdaterStepFile; use OC\Repair\NC11\FixMountStorages; @@ -45,6 +46,8 @@ use OC\Repair\NC13\RepairInvalidPaths; use OC\Repair\SqliteAutoincrement; use OC\Repair\RepairMimeTypes; use OC\Repair\RepairInvalidShares; +use OC\Template\JSCombiner; +use OC\Template\SCSSCacher; use OCP\AppFramework\QueryException; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; @@ -131,6 +134,7 @@ class Repair implements IOutput{ new FixMountStorages(\OC::$server->getDatabaseConnection()), new RepairInvalidPaths(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()), new AddLogRotateJob(\OC::$server->getJobList()), + new ClearFrontendCaches(\OC::$server->getMemCacheFactory(), \OC::$server->query(SCSSCacher::class), \OC::$server->query(JSCombiner::class)) ]; } diff --git a/lib/private/Repair/ClearFrontendCaches.php b/lib/private/Repair/ClearFrontendCaches.php new file mode 100644 index 00000000000..0a92aa8d201 --- /dev/null +++ b/lib/private/Repair/ClearFrontendCaches.php @@ -0,0 +1,70 @@ +<?php +/** + * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\Repair; + +use OC\Template\JSCombiner; +use OC\Template\SCSSCacher; +use OCP\ICacheFactory; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; + +class ClearFrontendCaches implements IRepairStep { + + /** @var ICacheFactory */ + protected $cacheFactory; + + /** @var SCSSCacher */ + protected $scssCacher; + + /** @var JSCombiner */ + protected $jsCombiner; + + public function __construct(ICacheFactory $cacheFactory, + SCSSCacher $SCSSCacher, + JSCombiner $JSCombiner) { + $this->cacheFactory = $cacheFactory; + $this->scssCacher = $SCSSCacher; + $this->jsCombiner = $JSCombiner; + } + + public function getName() { + return 'Clear frontend caches'; + } + + public function run(IOutput $output) { + try { + $c = $this->cacheFactory->createDistributed('imagePath'); + $c->clear(); + $output->info('Image cache cleared'); + + $this->scssCacher->resetCache(); + $output->info('SCSS cache cleared'); + + $this->jsCombiner->resetCache(); + $output->info('JS cache cleared'); + } catch (\Exception $e) { + $output->warning('Unable to clear the frontend cache'); + } + } +} diff --git a/lib/private/Server.php b/lib/private/Server.php index b12b92272f2..228f0ab5f97 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -112,6 +112,7 @@ use OC\Share20\ProviderFactory; use OC\Share20\ShareHelper; use OC\SystemTag\ManagerFactory as SystemTagManagerFactory; use OC\Tagging\TagMapper; +use OC\Template\JSCombiner; use OC\Template\SCSSCacher; use OCA\Theming\ThemingDefaults; @@ -967,6 +968,17 @@ class Server extends ServerContainer implements IServerContainer { $cacheFactory->createDistributed('SCSS') ); }); + $this->registerService(JSCombiner::class, function (Server $c) { + /** @var Factory $cacheFactory */ + $cacheFactory = $c->query(Factory::class); + return new JSCombiner( + $c->getAppDataDir('js'), + $c->getURLGenerator(), + $cacheFactory->createDistributed('JS'), + $c->getSystemConfig(), + $c->getLogger() + ); + }); $this->registerService(EventDispatcher::class, function () { return new EventDispatcher(); }); diff --git a/lib/private/Template/JSCombiner.php b/lib/private/Template/JSCombiner.php index 6a67dd0dede..c5adcee6854 100644 --- a/lib/private/Template/JSCombiner.php +++ b/lib/private/Template/JSCombiner.php @@ -184,9 +184,10 @@ class JSCombiner { $depFile->putContent($deps); $this->depsCache->set($folder->getName() . '-' . $depFileName, $deps); $gzipFile->putContent(gzencode($res, 9)); - + $this->logger->debug('JSCombiner: successfully cached: ' . $fileName); return true; } catch (NotPermittedException $e) { + $this->logger->error('JSCombiner: unable to cache: ' . $fileName); return false; } } @@ -227,4 +228,20 @@ class JSCombiner { return $result; } + + + /** + * Clear cache with combined javascript files + * + * @throws NotFoundException + */ + public function resetCache() { + $this->depsCache->clear(); + $appDirectory = $this->appData->getDirectoryListing(); + foreach ($appDirectory as $folder) { + foreach ($folder->getDirectoryListing() as $file) { + $file->delete(); + } + } + } } diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index 8830a651f36..433d5e5d0bf 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -249,9 +249,10 @@ class SCSSCacher { $depFile->putContent($deps); $this->depsCache->set($folder->getName() . '-' . $depFileName, $deps); $gzipFile->putContent(gzencode($data, 9)); - $this->logger->debug($webDir.'/'.$fileNameSCSS.' compiled and successfully cached', ['app' => 'core']); + $this->logger->debug('SCSSCacher: '.$webDir.'/'.$fileNameSCSS.' compiled and successfully cached', ['app' => 'core']); return true; } catch(NotPermittedException $e) { + $this->logger->error('SCSSCacher: unable to cache: ' . $fileNameSCSS); return false; } } @@ -260,17 +261,13 @@ class SCSSCacher { * Reset scss cache by deleting all generated css files * We need to regenerate all files when variables change */ - private function resetCache() { + public function resetCache() { $this->injectedVariables = null; + $this->depsCache->clear(); $appDirectory = $this->appData->getDirectoryListing(); - if(empty($appDirectory)){ - return; - } foreach ($appDirectory as $folder) { foreach ($folder->getDirectoryListing() as $file) { - if (substr($file->getName(), -3) === 'css' || substr($file->getName(), -4) === 'deps') { - $file->delete(); - } + $file->delete(); } } } diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 5e6d432c805..3acdae0e395 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -178,7 +178,9 @@ class TemplateLayout extends \OC_Template { if(\OC::$server->getSystemConfig()->getValue('installed', false) && !\OCP\Util::needUpgrade() && $pathInfo !== '' - && !preg_match('/^\/login/', $pathInfo)) { + && !preg_match('/^\/login/', $pathInfo) + && $renderAs !== 'error' && $renderAs !== 'guest' + ) { $cssFiles = self::findStylesheetFiles(\OC_Util::$styles); } else { // If we ignore the scss compiler, diff --git a/settings/css/settings.scss b/settings/css/settings.scss index d2dd973e887..59f32cc7131 100644 --- a/settings/css/settings.scss +++ b/settings/css/settings.scss @@ -137,7 +137,7 @@ input { } .personal-settings-setting-box input { - &[type="text"], &[type="email"], &[type="tel"] { + &[type="text"], &[type="email"], &[type="tel"], &[type="url"] { width: 100%; } } diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index 4d9365938d2..44bab6c62f1 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -394,10 +394,17 @@ OC.L10N.register( "Verifying" : "Vérification en cours", "Personal info" : "Informations personnelles", "Sync clients" : "Clients de synchronisation", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Il est important pour la sécurité et la performance de votre instance que celle-ci soit correctement configurée. Afin de vous aider, votre instance effectue quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces, ainsi que la documentation, pour de plus amples informations.", + "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Veuillez consulter <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">la documentation d'installation ↗</a> pour savoir comment configurer php sur votre serveur, en particulier en cas d'utilisation de php-fpm.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs de documentation internes. Cela rendra plusieurs applications de base inaccessibles.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.", + "This means that there might be problems with certain characters in file names." : "Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichier.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si votre installation n'a pas été effectuée à la racine du domaine et qu'elle utilise le cron du système, il peut y avoir des problèmes avec la génération d'URL. Pour les éviter, veuillez configurer l'option \"overwrite.cli.url\" de votre fichier config.php avec le chemin de la racine de votre installation (suggéré : \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "La tâche cron n'a pu s'exécuter via CLI. Ces erreurs techniques sont apparues :", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Merci de consulter les <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">guides d'installation ↗</a> et de vérifier les erreurs ou avertissements dans les <a href=\"%s\">journaux</a>.", "To run this you need the PHP posix extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP posix. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Pour migrer vers un autre type de base de données, utilisez la ligne de commande : 'occ db:convert-type' ou consultez la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>.", "Desktop client" : "Client de bureau", "Android app" : "Application Android", "iOS app" : "Application iOS", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index 0d0d2eb2704..c863c43b29a 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -392,10 +392,17 @@ "Verifying" : "Vérification en cours", "Personal info" : "Informations personnelles", "Sync clients" : "Clients de synchronisation", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Il est important pour la sécurité et la performance de votre instance que celle-ci soit correctement configurée. Afin de vous aider, votre instance effectue quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces, ainsi que la documentation, pour de plus amples informations.", + "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Veuillez consulter <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">la documentation d'installation ↗</a> pour savoir comment configurer php sur votre serveur, en particulier en cas d'utilisation de php-fpm.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs de documentation internes. Cela rendra plusieurs applications de base inaccessibles.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.", + "This means that there might be problems with certain characters in file names." : "Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichier.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si votre installation n'a pas été effectuée à la racine du domaine et qu'elle utilise le cron du système, il peut y avoir des problèmes avec la génération d'URL. Pour les éviter, veuillez configurer l'option \"overwrite.cli.url\" de votre fichier config.php avec le chemin de la racine de votre installation (suggéré : \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "La tâche cron n'a pu s'exécuter via CLI. Ces erreurs techniques sont apparues :", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Merci de consulter les <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">guides d'installation ↗</a> et de vérifier les erreurs ou avertissements dans les <a href=\"%s\">journaux</a>.", "To run this you need the PHP posix extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP posix. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Pour migrer vers un autre type de base de données, utilisez la ligne de commande : 'occ db:convert-type' ou consultez la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>.", "Desktop client" : "Client de bureau", "Android app" : "Application Android", "iOS app" : "Application iOS", diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js index 6bac9d1cb2a..3c7d6dbf093 100644 --- a/settings/l10n/lt_LT.js +++ b/settings/l10n/lt_LT.js @@ -12,8 +12,10 @@ OC.L10N.register( "A login attempt using two-factor authentication failed (%1$s)" : "Nepavyko prisijungti, naudojant dviejų faktorių tapatybės nustatymą (%1$s)", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Jūsų <strong>slaptažodis</strong> ar <strong>el. paštas</strong> buvo pakeisti", "Your apps" : "Jūsų programėlės", + "Updates" : "Atnaujinimai", "Enabled apps" : "Įjungtos programėlės", "Disabled apps" : "Išjungtos programėlės", + "App bundles" : "Programėlių rinkiniai", "Wrong password" : "Neteisingas slaptažodis", "Saved" : "Įrašyta", "No user supplied" : "Nepateiktas naudotojas", @@ -21,7 +23,7 @@ OC.L10N.register( "Authentication error" : "Tapatybės nustatymo klaida", "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriaus atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.", "A problem occurred, please check your log files (Error: %s)" : "Atsirado problema, prašome patikrinti savo žurnalo failus (Klaida: %s)", - "Migration Completed" : "Migracija baigta", + "Migration Completed" : "Perkėlimas baigtas", "Group already exists." : "Grupė jau yra.", "Unable to add group." : "Nepavyko pridėti grupės.", "Unable to delete group." : "Nepavyko ištrinti grupės.", @@ -54,6 +56,8 @@ OC.L10N.register( "Couldn't remove app." : "Nepavyko pašalinti programėlės.", "Couldn't update app." : "Nepavyko atnaujinti programėlės.", "Add trusted domain" : "Pridėti patikimą domeną", + "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", + "Migration started …" : "Perkėlimas pradėtas …", "Not saved" : "Neįrašyta", "Sending…" : "Siunčiama…", "Email sent" : "El. paštas išsiųstas", @@ -138,8 +142,9 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Tai yra paskutinis įspėjimas: Ar tikrai norite įjungti šifravimą?", "Enable encryption" : "Įjungti šifravimą", "Select default encryption module:" : "Pasirinkite numatytąjį šifravimo modulį:", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome įjungti \"Numatytąjį šifravimo modulį\" ir vykdyti \"occ encryption:migrate\"", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome įjungti \"Numatytąjį šifravimo modulį\" ir įvykdyti \"occ encryption:migrate\"", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį.", + "Start migration" : "Pradėti perkėlimą", "Security & setup warnings" : "Saugos ir diegimo perspėjimai", "Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu", "Version" : "Versija", @@ -149,6 +154,7 @@ OC.L10N.register( "days" : "dienos", "Allow resharing" : "Leisti dalintis", "Tips & tricks" : "Patarimai ir gudrybės", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Norėdami persikelti į kitą duomenų bazę, naudokite komandų eilutės įrankį: \"occ db:convert-type\" arba žiūrėkite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaciją ↗</a>.", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong> iš <strong>%s</strong>", "Profile picture" : "Profilio paveikslas", "Upload new" : "Įkelti naują", @@ -188,6 +194,7 @@ OC.L10N.register( "Quota" : "Limitas", "change full name" : "keisti pilną vardą", "set new password" : "nustatyti naują slaptažodį", - "Default" : "Numatytasis" + "Default" : "Numatytasis", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Norėdami persikelti į kitą duomenų bazę, naudokite komandų eilutės įrankį: \"occ db:convert-type\" arba žiūrėkite <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentaciją ↗</a>." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json index cfb7006a089..e070ff944a9 100644 --- a/settings/l10n/lt_LT.json +++ b/settings/l10n/lt_LT.json @@ -10,8 +10,10 @@ "A login attempt using two-factor authentication failed (%1$s)" : "Nepavyko prisijungti, naudojant dviejų faktorių tapatybės nustatymą (%1$s)", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Jūsų <strong>slaptažodis</strong> ar <strong>el. paštas</strong> buvo pakeisti", "Your apps" : "Jūsų programėlės", + "Updates" : "Atnaujinimai", "Enabled apps" : "Įjungtos programėlės", "Disabled apps" : "Išjungtos programėlės", + "App bundles" : "Programėlių rinkiniai", "Wrong password" : "Neteisingas slaptažodis", "Saved" : "Įrašyta", "No user supplied" : "Nepateiktas naudotojas", @@ -19,7 +21,7 @@ "Authentication error" : "Tapatybės nustatymo klaida", "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriaus atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.", "A problem occurred, please check your log files (Error: %s)" : "Atsirado problema, prašome patikrinti savo žurnalo failus (Klaida: %s)", - "Migration Completed" : "Migracija baigta", + "Migration Completed" : "Perkėlimas baigtas", "Group already exists." : "Grupė jau yra.", "Unable to add group." : "Nepavyko pridėti grupės.", "Unable to delete group." : "Nepavyko ištrinti grupės.", @@ -52,6 +54,8 @@ "Couldn't remove app." : "Nepavyko pašalinti programėlės.", "Couldn't update app." : "Nepavyko atnaujinti programėlės.", "Add trusted domain" : "Pridėti patikimą domeną", + "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", + "Migration started …" : "Perkėlimas pradėtas …", "Not saved" : "Neįrašyta", "Sending…" : "Siunčiama…", "Email sent" : "El. paštas išsiųstas", @@ -136,8 +140,9 @@ "This is the final warning: Do you really want to enable encryption?" : "Tai yra paskutinis įspėjimas: Ar tikrai norite įjungti šifravimą?", "Enable encryption" : "Įjungti šifravimą", "Select default encryption module:" : "Pasirinkite numatytąjį šifravimo modulį:", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome įjungti \"Numatytąjį šifravimo modulį\" ir vykdyti \"occ encryption:migrate\"", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome įjungti \"Numatytąjį šifravimo modulį\" ir įvykdyti \"occ encryption:migrate\"", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį.", + "Start migration" : "Pradėti perkėlimą", "Security & setup warnings" : "Saugos ir diegimo perspėjimai", "Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu", "Version" : "Versija", @@ -147,6 +152,7 @@ "days" : "dienos", "Allow resharing" : "Leisti dalintis", "Tips & tricks" : "Patarimai ir gudrybės", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Norėdami persikelti į kitą duomenų bazę, naudokite komandų eilutės įrankį: \"occ db:convert-type\" arba žiūrėkite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaciją ↗</a>.", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong> iš <strong>%s</strong>", "Profile picture" : "Profilio paveikslas", "Upload new" : "Įkelti naują", @@ -186,6 +192,7 @@ "Quota" : "Limitas", "change full name" : "keisti pilną vardą", "set new password" : "nustatyti naują slaptažodį", - "Default" : "Numatytasis" + "Default" : "Numatytasis", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Norėdami persikelti į kitą duomenų bazę, naudokite komandų eilutės įrankį: \"occ db:convert-type\" arba žiūrėkite <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentaciją ↗</a>." },"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/settings/templates/settings/personal/personal.info.php b/settings/templates/settings/personal/personal.info.php index c2dd0b64644..9f1f83621d2 100644 --- a/settings/templates/settings/personal/personal.info.php +++ b/settings/templates/settings/personal/personal.info.php @@ -240,7 +240,7 @@ vendor_style('jcrop/css/jquery.Jcrop'); </div> </div> <?php } ?> - <input type="text" name="website" id="website" value="<?php p($_['website']); ?>" + <input type="url" name="website" id="website" value="<?php p($_['website']); ?>" placeholder="<?php p($l->t('Link https://…')); ?>" autocomplete="on" autocapitalize="none" autocorrect="off" <?php if(!$_['lookupServerUploadEnabled']) print_unescaped('disabled="1"'); ?> diff --git a/tests/lib/Repair/ClearFrontendCachesTest.php b/tests/lib/Repair/ClearFrontendCachesTest.php new file mode 100644 index 00000000000..7c3a54cf1db --- /dev/null +++ b/tests/lib/Repair/ClearFrontendCachesTest.php @@ -0,0 +1,78 @@ +<?php +/** + * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace Test\Repair; +use OC\Template\JSCombiner; +use OC\Template\SCSSCacher; +use OCP\ICache; +use OCP\ICacheFactory; +use OCP\Migration\IOutput; + +class ClearFrontendCachesTest extends \Test\TestCase { + + /** @var ICacheFactory */ + private $cacheFactory; + + /** @var SCSSCacher */ + private $scssCacher; + + /** @var JSCombiner */ + private $jsCombiner; + + /** @var \OC\Repair\ClearFrontendCaches */ + protected $repair; + + /** @var IOutput */ + private $outputMock; + + protected function setUp() { + parent::setUp(); + + $this->outputMock = $this->createMock(IOutput::class); + + $this->cacheFactory = $this->createMock(ICacheFactory::class); + $this->scssCacher = $this->createMock(SCSSCacher::class); + $this->jsCombiner = $this->createMock(JSCombiner::class); + + $this->repair = new \OC\Repair\ClearFrontendCaches($this->cacheFactory, $this->scssCacher, $this->jsCombiner); + } + + + public function testRun() { + $imagePathCache = $this->createMock(ICache::class); + $imagePathCache->expects($this->once()) + ->method('clear') + ->with(''); + $this->jsCombiner->expects($this->once()) + ->method('resetCache'); + $this->scssCacher->expects($this->once()) + ->method('resetCache'); + $this->cacheFactory->expects($this->at(0)) + ->method('createDistributed') + ->with('imagePath') + ->willReturn($imagePathCache); + + $this->repair->run($this->outputMock); + $this->assertTrue(true); + } +} diff --git a/tests/lib/Template/JSCombinerTest.php b/tests/lib/Template/JSCombinerTest.php index d6583d4a450..d5f7000e0a5 100644 --- a/tests/lib/Template/JSCombinerTest.php +++ b/tests/lib/Template/JSCombinerTest.php @@ -511,4 +511,25 @@ var b = \'world\'; $expected = []; $this->assertEquals($expected, $this->jsCombiner->getContent($pathInfo['dirname'], $pathInfo['basename'])); } + + public function testResetCache() { + $file = $this->createMock(ISimpleFile::class); + $file->expects($this->once()) + ->method('delete'); + + $folder = $this->createMock(ISimpleFolder::class); + $folder->expects($this->once()) + ->method('getDirectoryListing') + ->willReturn([$file]); + + $this->depsCache->expects($this->once()) + ->method('clear') + ->with(''); + $this->appData->expects($this->once()) + ->method('getDirectoryListing') + ->willReturn([$folder]); + + $this->jsCombiner->resetCache(); + } + } diff --git a/tests/lib/Template/SCSSCacherTest.php b/tests/lib/Template/SCSSCacherTest.php index 7b5300b99a9..dfaeb803578 100644 --- a/tests/lib/Template/SCSSCacherTest.php +++ b/tests/lib/Template/SCSSCacherTest.php @@ -85,6 +85,7 @@ class SCSSCacherTest extends \Test\TestCase { $this->appData->expects($this->once())->method('getFolder')->with('core')->willThrowException(new NotFoundException()); $this->appData->expects($this->once())->method('newFolder')->with('core')->willReturn($folder); + $this->appData->method('getDirectoryListing')->willReturn([]); $fileDeps = $this->createMock(ISimpleFile::class); $gzfile = $this->createMock(ISimpleFile::class); @@ -118,6 +119,7 @@ class SCSSCacherTest extends \Test\TestCase { public function testProcessUncachedFile() { $folder = $this->createMock(ISimpleFolder::class); $this->appData->expects($this->once())->method('getFolder')->with('core')->willReturn($folder); + $this->appData->method('getDirectoryListing')->willReturn([]); $file = $this->createMock(ISimpleFile::class); $file->expects($this->any())->method('getSize')->willReturn(1); $fileDeps = $this->createMock(ISimpleFile::class); @@ -148,6 +150,7 @@ class SCSSCacherTest extends \Test\TestCase { public function testProcessCachedFile() { $folder = $this->createMock(ISimpleFolder::class); $this->appData->expects($this->once())->method('getFolder')->with('core')->willReturn($folder); + $this->appData->method('getDirectoryListing')->willReturn([]); $file = $this->createMock(ISimpleFile::class); $fileDeps = $this->createMock(ISimpleFile::class); $fileDeps->expects($this->any())->method('getSize')->willReturn(1); @@ -178,6 +181,7 @@ class SCSSCacherTest extends \Test\TestCase { ->willReturn($folder); $folder->method('getName') ->willReturn('core'); + $this->appData->method('getDirectoryListing')->willReturn([]); $file = $this->createMock(ISimpleFile::class); @@ -445,4 +449,25 @@ class SCSSCacherTest extends \Test\TestCase { $this->rrmdir($tmpDir.$path); } + public function testResetCache() { + $file = $this->createMock(ISimpleFile::class); + $file->expects($this->once()) + ->method('delete'); + + $folder = $this->createMock(ISimpleFolder::class); + $folder->expects($this->once()) + ->method('getDirectoryListing') + ->willReturn([$file]); + + $this->depsCache->expects($this->once()) + ->method('clear') + ->with(''); + $this->appData->expects($this->once()) + ->method('getDirectoryListing') + ->willReturn([$folder]); + + $this->scssCacher->resetCache(); + } + + } |