diff options
Diffstat (limited to 'core')
31 files changed, 190 insertions, 176 deletions
diff --git a/core/css/apps.scss b/core/css/apps.scss index 15742786b0e..84179a94633 100644 --- a/core/css/apps.scss +++ b/core/css/apps.scss @@ -166,6 +166,7 @@ kbd { &, > a { background-color: var(--color-primary-light); + color: var(--color-primary-text); } } @@ -285,6 +286,8 @@ kbd { margin-right: 11px; width: 16px; height: 16px; + // Legacy invert if bright background + filter: var(--background-invert-if-dark); } /* counter can also be inside the link */ diff --git a/core/css/guest.css b/core/css/guest.css index d48713061ec..a6d2abf9820 100644 --- a/core/css/guest.css +++ b/core/css/guest.css @@ -15,20 +15,18 @@ a, a *, input, input *, select, .button span, label { cursor:pointer; } ul { list-style:none; } body { - background-color: #ffffff; font-weight: normal; /* bring the default font size up to 14px */ font-size: .875em; line-height: 1.6em; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; - color: #000; + color: var(--color-primary-text); text-align: center; - background-color: #0082c9; - background-image: url('../img/background.png?v=2'); - background-image: url('../img/background.png?v=2'), linear-gradient(40deg, #0082c9 0%, rgba(28,175,255,1) 100%); + background-color: var(--color-primary); + background-image: var(--image-background, var(--image-background-plain, url('../../../core/img/background.svg'), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); background-position: 50% 50%; background-repeat: repeat; - background-size: 275px, contain; + background-size: var(--image-background-size, 275px, contain); background-attachment: fixed; /* fix background gradient */ min-height: 100%; /* fix sticky footer */ height: auto; @@ -36,7 +34,7 @@ body { /* Various fonts settings */ #body-login a { - color: #fff; + color: var(--color-primary-text); font-weight: 600; } #body-login a:not(.button):hover, @@ -46,7 +44,7 @@ body { } #showAdvanced { - color: #fff; + color: var(--color-primary-text); } em { @@ -80,13 +78,12 @@ body { } #header .logo { - background-image: url('../img/logo/logo.svg?v=1'); + background-image: var(--image-logo, url('../../core/img/logo/logo.svg')); background-repeat: no-repeat; - background-size: 175px; + background-size: contain; background-position: center; - width: 256px; - min-height: 128px; - max-height: 200px; + width: 175px; + height: 130px; margin: 0 auto; position: relative; left: unset; @@ -185,7 +182,7 @@ form #datadirField legend { } .alternative-logins .button { - color: #ffffff; + color: var(--color-text-lighter); padding: 12px 20px; } @@ -263,9 +260,9 @@ select { width: auto; min-width: 25px; padding: 12px; - background-color: white; + background-color: var(--color-main-background); font-weight: bold; - color: #555; + color: var(--color-text-lighter); border: none; border-radius: 100px; /* --border-radius-pill */ cursor: pointer; @@ -280,7 +277,7 @@ input[type='password'], input[type='email'] { width: 249px; background: #fff; - color: #555; + color: var(--color-text-lighter); cursor: text; font-family: inherit; -webkit-appearance: textfield; @@ -338,9 +335,9 @@ input::-moz-focus-inner { input.primary, button.primary, a.primary { - border: 1px solid #fff; - background-color: #0082c9; - color: #fff; + border: 1px solid var(--color-primary-text); + background-color: var(--color-primary); + color: var(--color-primary-text); transition: color 100ms ease-in-out; } @@ -350,8 +347,8 @@ button.primary:not(:disabled):hover, button.primary:not(:disabled):focus, a.primary:not(:disabled):hover, a.primary:not(:disabled):focus { - color: rgba(255, 255, 255, 1); - background-image: linear-gradient(40deg, #0082c9 0%, #30b6ff 100%); + color: var(--color-primary-text); + background-image: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-light) 100%); background-position: initial; } @@ -479,13 +476,13 @@ form fieldset legend, form fieldset .warning-info, form input[type='checkbox']+label { text-align: center; - color: #fff; + color: var(--color-primary-text); } /* overrides another !important statement that sets this to unreadable black */ form .warning input[type='checkbox']:hover+label, form .warning input[type='checkbox']:focus+label, form .warning input[type='checkbox']+label { - color: #fff !important; + color: var(--color-primary-text) !important; } .body-login-container.two-factor { @@ -559,7 +556,7 @@ form .warning input[type='checkbox']+label { display: inline-block; font-weight: normal !important; padding: 12px; - color: #fff; + color: var(--color-primary-text); cursor: pointer; text-shadow: 0 0 2px rgba(0, 0, 0, .4); /* better readability on bright background */ } @@ -569,7 +566,7 @@ form .warning input[type='checkbox']+label { #forgot-password { padding: 11px; float: right; - color: #fff; + color: var(--color-primary-text); } /* Alternative Logins */ @@ -587,16 +584,16 @@ form .warning input[type='checkbox']+label { display: inline-block; text-align: center; box-sizing: border-box; - border: 2px solid #ffffff; - background-color: #0082c9; - color: #ffffff; + border: 2px solid var(--color-primary-text); + background-color: var(--color-primary); + color: var(--color-primary-text); border-radius: 100px; /* --border-radius-pill */ } .alternative-logins a.button:focus, .alternative-logins li a:focus { - border: 2px solid #000000; - background-image: linear-gradient(40deg, #0082c9 0%, #30b6ff 100%); + border: 2px solid var(--color-primary-hover); + background-image: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-light) 100%); background-position: initial; } @@ -854,6 +851,7 @@ p.info { } .loading, .loading-small, .icon-loading, .icon-loading-dark, .icon-loading-small, .icon-loading-small-dark { position: relative; + filter: var(--background-invert-if-dark) } .loading:after, .loading-small:after, .icon-loading:after, .icon-loading-dark:after, .icon-loading-small:after, .icon-loading-small-dark:after { z-index: 2; @@ -871,6 +869,9 @@ p.info { -ms-transform-origin: center; transform-origin: center; } +.primary .loading,.primary+.loading,.primary .loading-small,.primary+.loading-small,.primary .icon-loading,.primary+.icon-loading,.primary .icon-loading-dark,.primary+.icon-loading-dark,.primary .icon-loading-small,.primary+.icon-loading-small,.primary .icon-loading-small-dark,.primary+.icon-loading-small-dark { + filter: var(--primary-invert-if-bright) +} .loading:after, .loading-small:after, .icon-loading:after, .icon-loading-dark:after, .icon-loading-small:after, .icon-loading-small-dark:after { border: 2px solid rgba(150, 150, 150, 0.5); border-top-color: #646464; @@ -920,7 +921,7 @@ img.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading- /* FOOTER */ footer { - height: 70px; + min-height: 70px; margin-top: auto; } diff --git a/core/css/header.scss b/core/css/header.scss index 27a8fe289fa..4c107c0d58f 100644 --- a/core/css/header.scss +++ b/core/css/header.scss @@ -165,6 +165,7 @@ margin-right: 10px; height: 16px; width: 16px; + filter: var(--background-invert-if-dark); } } } @@ -172,7 +173,7 @@ } .logo { display: inline-flex; - background-image: var(--image-logo); + background-image: var(--image-logoheader, var(--image-logo, url('../img/logo/logo.svg'))); background-repeat: no-repeat; background-size: contain; background-position: center; @@ -449,6 +450,11 @@ nav[role='navigation'] { // Make sure most app names don’t ellipsize letter-spacing: -0.5px; font-size: 12px; + + // If the primary is too bright, invert the app icons + svg image { + filter: var(--primary-invert-if-bright); + } } /* focused app visual feedback */ @@ -653,61 +659,6 @@ nav[role='navigation'] { } } -/* SEARCHBOX --------------------------------------------------------------- */ -.searchbox { - position: relative; - display: flex; - align-items: center; - input[type='search'] { - position: relative; - font-size: 1.2em; - padding: 3px; - padding-left: 25px; - padding-right: 20px; - background-color: transparent; - color: var(--color-primary-text); - border: 0; - border-radius: var(--border-radius-pill); - height: 34px; - width: 0; - cursor: pointer; - transition: width 100ms, opacity 100ms; - opacity: .6; - &:focus, &:active, &:valid { - background-position-x: 6px; - color: var(--color-primary-text); - width: 155px; - cursor: text; - background-color: transparent !important; - border: 1px solid var(--color-primary-text) !important; - } - &:hover, &:focus, &:active { - opacity: 1; - } - & ~ .icon-close-white { - display: inline; - position: absolute; - width: 30px; - height: 100%; - right: 0; - top: 0; - margin: 0; - &, &:focus, &:active, &:hover { - border: none; - background-color: transparent; - } - } - &:not(:valid) ~ .icon-close-white { - display: none; - } - &::-webkit-search-cancel-button { - -webkit-appearance: none; - } - } - .icon-search-force-white { - @include icon-color('search', 'actions', '#fffffe', 1, true); - } -} /* Empty content messages in the header e.g. notifications, contacts menu, … */ header #emptycontent, diff --git a/core/css/icons.scss b/core/css/icons.scss index 1468c480046..78522895cf5 100644 --- a/core/css/icons.scss +++ b/core/css/icons.scss @@ -64,6 +64,14 @@ transform-origin: center; border: 2px solid var(--color-loading-light); border-top-color: var(--color-loading-dark); + // revert if background is too bright + filter: var(--background-invert-if-dark); + + .primary &, + .primary + & { + // revert if primary is too bright + filter: var(--primary-invert-if-bright); + } } } diff --git a/core/css/styles.scss b/core/css/styles.scss index 8a15cfa19d8..27e5675b53a 100644 --- a/core/css/styles.scss +++ b/core/css/styles.scss @@ -975,6 +975,7 @@ span.ui-icon { background-size: 20px 20px; padding: 14px; cursor: pointer; + filter: var(--primary-invert-if-bright); &:hover, &:focus, diff --git a/core/l10n/cs.js b/core/l10n/cs.js index 09506f34699..f3302f4ea8e 100644 --- a/core/l10n/cs.js +++ b/core/l10n/cs.js @@ -187,8 +187,10 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} uživatel zatím nezadal žádné informace", "Error opening the user status modal, try hard refreshing the page" : "Chyba při otevírání dialogu stavu uživatele, pokus o opětovné načtení stránky", "Reset search" : "Resetovat hledání", + "Start search" : "Zahájit vyhledávání", "Search for {name} only" : "Hledat pouze {name}", "No results for {query}" : "Pro {query} nic nenalezeno", + "Press enter to start searching" : "Vyhledávání zahájíte stisknutím klávesy Enter", "Start typing to search" : "Hledejte psaním", "Loading more results …" : "Načítání dalších výsledků…", "Load more results" : "Načíst další výsledky", diff --git a/core/l10n/cs.json b/core/l10n/cs.json index ae17e521f03..29fdd624e32 100644 --- a/core/l10n/cs.json +++ b/core/l10n/cs.json @@ -185,8 +185,10 @@ "{user} has not added any info yet" : "{user} uživatel zatím nezadal žádné informace", "Error opening the user status modal, try hard refreshing the page" : "Chyba při otevírání dialogu stavu uživatele, pokus o opětovné načtení stránky", "Reset search" : "Resetovat hledání", + "Start search" : "Zahájit vyhledávání", "Search for {name} only" : "Hledat pouze {name}", "No results for {query}" : "Pro {query} nic nenalezeno", + "Press enter to start searching" : "Vyhledávání zahájíte stisknutím klávesy Enter", "Start typing to search" : "Hledejte psaním", "Loading more results …" : "Načítání dalších výsledků…", "Load more results" : "Načíst další výsledky", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index 49e4308f5ec..2117098c970 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -187,8 +187,10 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} hat noch keine Infos hinzugefügt", "Error opening the user status modal, try hard refreshing the page" : "Fehler beim Modal-öffnen des Benutzerstatus, versuchen Sie die Seite zu aktualisieren", "Reset search" : "Suche zurücksetzen", + "Start search" : "Starte Suche", "Search for {name} only" : "Nur nach {name} suchen", "No results for {query}" : "Keine Suchergebnisse zu {query}", + "Press enter to start searching" : "Eingabetaste zum Starten der Suche drücken", "Start typing to search" : "Beginnen Sie mit der Eingabe, um zu suchen", "Loading more results …" : "Lade weitere Ergebnisse…", "Load more results" : "Weitere Ergebnisse laden", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index 380a7091223..803c711340e 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -185,8 +185,10 @@ "{user} has not added any info yet" : "{user} hat noch keine Infos hinzugefügt", "Error opening the user status modal, try hard refreshing the page" : "Fehler beim Modal-öffnen des Benutzerstatus, versuchen Sie die Seite zu aktualisieren", "Reset search" : "Suche zurücksetzen", + "Start search" : "Starte Suche", "Search for {name} only" : "Nur nach {name} suchen", "No results for {query}" : "Keine Suchergebnisse zu {query}", + "Press enter to start searching" : "Eingabetaste zum Starten der Suche drücken", "Start typing to search" : "Beginnen Sie mit der Eingabe, um zu suchen", "Loading more results …" : "Lade weitere Ergebnisse…", "Load more results" : "Weitere Ergebnisse laden", diff --git a/core/l10n/fi.js b/core/l10n/fi.js index 20d11b9a8a7..1d6e7d576cf 100644 --- a/core/l10n/fi.js +++ b/core/l10n/fi.js @@ -147,9 +147,12 @@ OC.L10N.register( "Login form is disabled." : "Kirjautumislomake on poistettu käytöstä.", "Edit Profile" : "Muokkaa profiilia", "You have not added any info yet" : "Et ole lisännyt tietoja vielä", + "{user} has not added any info yet" : "{user} ei ole lisännyt tietoja vielä", "Reset search" : "Tyhjennä haku", + "Start search" : "Aloita haku", "Search for {name} only" : "Etsi vain {name}", "No results for {query}" : "Ei tuloksia haulle {query}", + "Press enter to start searching" : "Paina enter aloittaaksesi haun", "Start typing to search" : "Aloita kirjoittaminen hakeaksesi", "Loading more results …" : "Ladataan lisää tuloksia…", "Load more results" : "Lataa lisää tuloksia", @@ -309,6 +312,11 @@ OC.L10N.register( "You can close this window." : "Voit sulkea tämän ikkunan.", "This share is password-protected" : "Jako on salasanasuojattu", "The password is wrong. Try again." : "Salasana on väärin. Yritä uudelleen.", + "Please type in your email address to request a temporary password" : "Kirjoita sähköpostiosoitteesi pyytääksesi väliaikaista salasanaa", + "Email address" : "Sähköpostiosoite", + "Password sent!" : "Salasana lähetetty!", + "You are not authorized to request a password for this share" : "Sinulla ei ole valtuutta pyytää salasanaa tähän jakoon", + "Request password" : "Pyydä salasanaa", "Go to %s" : "Siirry %s§", "Two-factor authentication" : "Kaksivaiheinen tunnistautuminen", "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Tilisi tietoturvatasoa on korotettu. Käytä kaksivaiheista tunnistautumista:", @@ -371,6 +379,8 @@ OC.L10N.register( "Could not fetch list of apps from the app store." : "Ei voitu hakea sovelluskaupan listaa.", "Can't install this app because it is not compatible" : "Tätä sovellusta ei voi asentaa, koska se ei ole yhteensopiva", "Can't install this app" : "Tätä sovellusta ei voi asentaa", - "To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Siirtyäksesi toiseen tietokantaan, käytä komentorivityökalua: 'occ db:convert-type', tai lue {linkstart}dokumentaatio ↗{linkend}." + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Siirtyäksesi toiseen tietokantaan, käytä komentorivityökalua: 'occ db:convert-type', tai lue {linkstart}dokumentaatio ↗{linkend}.", + "You haven't added any info yet" : "Et ole lisännyt tietoja vielä", + "{user} hasn't added any info yet" : "{user} ei ole lisännyt tietoja vielä" }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/fi.json b/core/l10n/fi.json index 8899c6e6cda..de1a880c0b5 100644 --- a/core/l10n/fi.json +++ b/core/l10n/fi.json @@ -145,9 +145,12 @@ "Login form is disabled." : "Kirjautumislomake on poistettu käytöstä.", "Edit Profile" : "Muokkaa profiilia", "You have not added any info yet" : "Et ole lisännyt tietoja vielä", + "{user} has not added any info yet" : "{user} ei ole lisännyt tietoja vielä", "Reset search" : "Tyhjennä haku", + "Start search" : "Aloita haku", "Search for {name} only" : "Etsi vain {name}", "No results for {query}" : "Ei tuloksia haulle {query}", + "Press enter to start searching" : "Paina enter aloittaaksesi haun", "Start typing to search" : "Aloita kirjoittaminen hakeaksesi", "Loading more results …" : "Ladataan lisää tuloksia…", "Load more results" : "Lataa lisää tuloksia", @@ -307,6 +310,11 @@ "You can close this window." : "Voit sulkea tämän ikkunan.", "This share is password-protected" : "Jako on salasanasuojattu", "The password is wrong. Try again." : "Salasana on väärin. Yritä uudelleen.", + "Please type in your email address to request a temporary password" : "Kirjoita sähköpostiosoitteesi pyytääksesi väliaikaista salasanaa", + "Email address" : "Sähköpostiosoite", + "Password sent!" : "Salasana lähetetty!", + "You are not authorized to request a password for this share" : "Sinulla ei ole valtuutta pyytää salasanaa tähän jakoon", + "Request password" : "Pyydä salasanaa", "Go to %s" : "Siirry %s§", "Two-factor authentication" : "Kaksivaiheinen tunnistautuminen", "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Tilisi tietoturvatasoa on korotettu. Käytä kaksivaiheista tunnistautumista:", @@ -369,6 +377,8 @@ "Could not fetch list of apps from the app store." : "Ei voitu hakea sovelluskaupan listaa.", "Can't install this app because it is not compatible" : "Tätä sovellusta ei voi asentaa, koska se ei ole yhteensopiva", "Can't install this app" : "Tätä sovellusta ei voi asentaa", - "To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Siirtyäksesi toiseen tietokantaan, käytä komentorivityökalua: 'occ db:convert-type', tai lue {linkstart}dokumentaatio ↗{linkend}." + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Siirtyäksesi toiseen tietokantaan, käytä komentorivityökalua: 'occ db:convert-type', tai lue {linkstart}dokumentaatio ↗{linkend}.", + "You haven't added any info yet" : "Et ole lisännyt tietoja vielä", + "{user} hasn't added any info yet" : "{user} ei ole lisännyt tietoja vielä" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/l10n/hu.js b/core/l10n/hu.js index 091e8788c79..05c63c0efee 100644 --- a/core/l10n/hu.js +++ b/core/l10n/hu.js @@ -77,7 +77,7 @@ OC.L10N.register( "Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"{suggestedOverwriteCliURL}\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Győződjön meg róla, hogy beállította arra az URL-re az „overwrite.cli.url” lehetőséget a config.php fájlban, amelyen a felhasználók elérik ezt a Nextcloudot. Javaslat: „{suggestedOverwriteCliURL}”. Különben problémák lehetnek a cronnal történő URL-előállítással. (Lehetséges, hogy a javasolt URL nem az, amellyel a felhasználók elsődlegesen elérik a Nextcloudot. Jobb, ha a biztonság kedvéért még egyszer ellenőrzi.)", "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "A telepítéshez nincs megadva alapértelmezett telefonrégió. Erre a telefonszámok országkód nélküli hitelesítéséhez van szükség a profilbeállításokban. Ha országkód nélküli számokat szeretne engedélyezni, vegye fel a konfigurációs fájlba az „default_phone_region” szót a régió megfelelő {linkstart}ISO 3166-1 kódjával ↗{linkend}.", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Az ütemezett feladatot nem lehetett parancssorból futtatni. A következő műszaki hiba lépett fel:", - "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "Az utolsó háttérfeladat végrehajtása {relatívTime} óta fut. Valami rossznak tűnik. {linkstart}Ellenőrizze a háttérfeladat beállításait ↗{linkend}.", + "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "Az utolsó háttérfeladat végrehajtása {relativeTime} óta fut. Valami rossznak tűnik. {linkstart}Ellenőrizze a háttérfeladat beállításait ↗{linkend}.", "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Ez a Nextcloud nem támogatott közösségi kiadása. A példány mérete miatt a teljesítménye, megbízhatósága és skálázhatósága nem garantálható. A leküldéses értesítések letiltásra kerültek, hogy ne terheljék túl az ingyenes szolgáltatásunkat. Tudjon meg többet a Nextcloud Enterprise előnyeiről a nextcloud.com/enterprise oldalon.", "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. Establish a connection from this server to the internet to enjoy all features." : "Ennek a kiszolgálónak nincs működő internetkapcsolata: több végpont nem érhető el. Ez azt jelenti, hogy néhány funkció, mint például a külső tárolók csatolása, a frissítési értesítések, vagy a harmadik féltől származó alkalmazások telepítése nem fog működni. Lehet, hogy a fájlok távoli elérése és az e-mail értesítések sem működnek. Létesítsen internetkapcsolatot a kiszolgálón, ha minden funkciót használni szeretne.", "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nincs beállítva memória gyorsítótár. A teljesítmény növelése érdekében állítson be egy memcache-t, ha van ilyen. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.", @@ -141,7 +141,7 @@ OC.L10N.register( "Please contact your administrator." : "Lépjen kapcsolatba a rendszergazdával.", "An internal error occurred." : "Belső hiba történt.", "Please try again or contact your administrator." : "Próbálja meg újra, vagy vegye fel a kapcsolatot a rendszergazdával.", - "Username or email" : "Felhasználónév vagy e-mail cím", + "Username or email" : "Felhasználónév vagy e-mail-cím", "Password" : "Jelszó", "Toggle password visibility" : "Jelszó láthatósága be/ki", "Wrong username or password." : "Hibás felhasználónév vagy jelszó.", @@ -187,8 +187,10 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} még nem adott meg semmilyen információt", "Error opening the user status modal, try hard refreshing the page" : "Hiba a felhasználói állapot párbeszédablak megnyitásakor, próbálja meg az oldal kényszerített újratöltését", "Reset search" : "Keresés visszaállítása", + "Start search" : "Keresés indítása", "Search for {name} only" : "Keresés csak a(z) {name} kifejezésre", "No results for {query}" : "Nincs találat a következőre: {query}", + "Press enter to start searching" : "A keresés indításához nyomjon Entert", "Start typing to search" : "Kezdjen el gépelni a kereséshez", "Loading more results …" : "További találatok betöltése…", "Load more results" : "További találatok betöltése", @@ -309,13 +311,13 @@ OC.L10N.register( "Configure the database" : "Adatbázis konfigurálása", "Only %s is available." : "Csak %s érhető el.", "Install and activate additional PHP modules to choose other database types." : "Telepítse és aktiválja a bővített PHP modulokat, hogy tudjon más adatbázis típust is kiválasztani.", - "For more details check out the documentation." : "További részletekért kérjük ellenőrizze a dokumentációt.", + "For more details check out the documentation." : "További részletekért nézze meg a dokumentációt.", "Database user" : "Adatbázis felhasználónév", "Database password" : "Adatbázis jelszó", "Database name" : "Az adatbázis neve", "Database tablespace" : "Az adatbázis táblázattér (tablespace)", "Database host" : "Adatbázis-kiszolgáló", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Kérlek add meg a port számát a kiszolgáló neve után (pl: localhost:5432).", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Adja meg a port számát a kiszolgáló neve után (például localhost:5432).", "Performance warning" : "Teljesítménybeli figyelmeztetés", "You chose SQLite as database." : "SQLite adatbázist választott.", "SQLite should only be used for minimal and development instances. For production we recommend a different database backend." : "Az SQLite-ot csak minimális és fejlesztési célú példányok esetén szabad használni. Éles működés esetén más adatbázis-kezelőt ajánlunk.", @@ -425,7 +427,7 @@ OC.L10N.register( "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Erősen ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippekben ↗</a>.", "Continue to Nextcloud" : "Irány a Nextcloud", "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["A frissítés sikeres volt. Átirányítás a Nextcloudra %n másodperc múlva.","A frissítés sikeres volt. Átirányítás a Nextcloudra %n másodperc múlva."], - "A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Egy jelszó visszaállítási e-mail lett küldve a fiók e-mail címére. Ha nem kapta meg, akkor ellenőrizze a levélszemét mappát, vagy kérje a helyi rendszergazda segítségét.", + "A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Egy jelszó visszaállítási e-mail lett küldve a fiók e-mail-címére. Ha nem kapta meg, akkor ellenőrizze a levélszemét mappát, vagy kérje a helyi rendszergazda segítségét.", "Password can not be changed. Please contact your administrator." : "A jelszó nem módosítható. Lépjen kapcsolatba a rendszergazdával.", "Could not fetch list of apps from the app store." : "Az alkalmazások listája nem kérhető le az alkalmazástártól.", "Can't install this app because it is not compatible" : "Az alkalmazás nem telepíthető, mert nem kompatibilis", diff --git a/core/l10n/hu.json b/core/l10n/hu.json index b5acef6d403..9374999cb46 100644 --- a/core/l10n/hu.json +++ b/core/l10n/hu.json @@ -75,7 +75,7 @@ "Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"{suggestedOverwriteCliURL}\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Győződjön meg róla, hogy beállította arra az URL-re az „overwrite.cli.url” lehetőséget a config.php fájlban, amelyen a felhasználók elérik ezt a Nextcloudot. Javaslat: „{suggestedOverwriteCliURL}”. Különben problémák lehetnek a cronnal történő URL-előállítással. (Lehetséges, hogy a javasolt URL nem az, amellyel a felhasználók elsődlegesen elérik a Nextcloudot. Jobb, ha a biztonság kedvéért még egyszer ellenőrzi.)", "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "A telepítéshez nincs megadva alapértelmezett telefonrégió. Erre a telefonszámok országkód nélküli hitelesítéséhez van szükség a profilbeállításokban. Ha országkód nélküli számokat szeretne engedélyezni, vegye fel a konfigurációs fájlba az „default_phone_region” szót a régió megfelelő {linkstart}ISO 3166-1 kódjával ↗{linkend}.", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Az ütemezett feladatot nem lehetett parancssorból futtatni. A következő műszaki hiba lépett fel:", - "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "Az utolsó háttérfeladat végrehajtása {relatívTime} óta fut. Valami rossznak tűnik. {linkstart}Ellenőrizze a háttérfeladat beállításait ↗{linkend}.", + "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "Az utolsó háttérfeladat végrehajtása {relativeTime} óta fut. Valami rossznak tűnik. {linkstart}Ellenőrizze a háttérfeladat beállításait ↗{linkend}.", "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Ez a Nextcloud nem támogatott közösségi kiadása. A példány mérete miatt a teljesítménye, megbízhatósága és skálázhatósága nem garantálható. A leküldéses értesítések letiltásra kerültek, hogy ne terheljék túl az ingyenes szolgáltatásunkat. Tudjon meg többet a Nextcloud Enterprise előnyeiről a nextcloud.com/enterprise oldalon.", "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. Establish a connection from this server to the internet to enjoy all features." : "Ennek a kiszolgálónak nincs működő internetkapcsolata: több végpont nem érhető el. Ez azt jelenti, hogy néhány funkció, mint például a külső tárolók csatolása, a frissítési értesítések, vagy a harmadik féltől származó alkalmazások telepítése nem fog működni. Lehet, hogy a fájlok távoli elérése és az e-mail értesítések sem működnek. Létesítsen internetkapcsolatot a kiszolgálón, ha minden funkciót használni szeretne.", "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nincs beállítva memória gyorsítótár. A teljesítmény növelése érdekében állítson be egy memcache-t, ha van ilyen. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.", @@ -139,7 +139,7 @@ "Please contact your administrator." : "Lépjen kapcsolatba a rendszergazdával.", "An internal error occurred." : "Belső hiba történt.", "Please try again or contact your administrator." : "Próbálja meg újra, vagy vegye fel a kapcsolatot a rendszergazdával.", - "Username or email" : "Felhasználónév vagy e-mail cím", + "Username or email" : "Felhasználónév vagy e-mail-cím", "Password" : "Jelszó", "Toggle password visibility" : "Jelszó láthatósága be/ki", "Wrong username or password." : "Hibás felhasználónév vagy jelszó.", @@ -185,8 +185,10 @@ "{user} has not added any info yet" : "{user} még nem adott meg semmilyen információt", "Error opening the user status modal, try hard refreshing the page" : "Hiba a felhasználói állapot párbeszédablak megnyitásakor, próbálja meg az oldal kényszerített újratöltését", "Reset search" : "Keresés visszaállítása", + "Start search" : "Keresés indítása", "Search for {name} only" : "Keresés csak a(z) {name} kifejezésre", "No results for {query}" : "Nincs találat a következőre: {query}", + "Press enter to start searching" : "A keresés indításához nyomjon Entert", "Start typing to search" : "Kezdjen el gépelni a kereséshez", "Loading more results …" : "További találatok betöltése…", "Load more results" : "További találatok betöltése", @@ -307,13 +309,13 @@ "Configure the database" : "Adatbázis konfigurálása", "Only %s is available." : "Csak %s érhető el.", "Install and activate additional PHP modules to choose other database types." : "Telepítse és aktiválja a bővített PHP modulokat, hogy tudjon más adatbázis típust is kiválasztani.", - "For more details check out the documentation." : "További részletekért kérjük ellenőrizze a dokumentációt.", + "For more details check out the documentation." : "További részletekért nézze meg a dokumentációt.", "Database user" : "Adatbázis felhasználónév", "Database password" : "Adatbázis jelszó", "Database name" : "Az adatbázis neve", "Database tablespace" : "Az adatbázis táblázattér (tablespace)", "Database host" : "Adatbázis-kiszolgáló", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Kérlek add meg a port számát a kiszolgáló neve után (pl: localhost:5432).", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Adja meg a port számát a kiszolgáló neve után (például localhost:5432).", "Performance warning" : "Teljesítménybeli figyelmeztetés", "You chose SQLite as database." : "SQLite adatbázist választott.", "SQLite should only be used for minimal and development instances. For production we recommend a different database backend." : "Az SQLite-ot csak minimális és fejlesztési célú példányok esetén szabad használni. Éles működés esetén más adatbázis-kezelőt ajánlunk.", @@ -423,7 +425,7 @@ "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Erősen ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippekben ↗</a>.", "Continue to Nextcloud" : "Irány a Nextcloud", "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["A frissítés sikeres volt. Átirányítás a Nextcloudra %n másodperc múlva.","A frissítés sikeres volt. Átirányítás a Nextcloudra %n másodperc múlva."], - "A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Egy jelszó visszaállítási e-mail lett küldve a fiók e-mail címére. Ha nem kapta meg, akkor ellenőrizze a levélszemét mappát, vagy kérje a helyi rendszergazda segítségét.", + "A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Egy jelszó visszaállítási e-mail lett küldve a fiók e-mail-címére. Ha nem kapta meg, akkor ellenőrizze a levélszemét mappát, vagy kérje a helyi rendszergazda segítségét.", "Password can not be changed. Please contact your administrator." : "A jelszó nem módosítható. Lépjen kapcsolatba a rendszergazdával.", "Could not fetch list of apps from the app store." : "Az alkalmazások listája nem kérhető le az alkalmazástártól.", "Can't install this app because it is not compatible" : "Az alkalmazás nem telepíthető, mert nem kompatibilis", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index b4be46eb0f2..712283f8b6f 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -187,8 +187,10 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} nie dodał jeszcze żadnych informacji", "Error opening the user status modal, try hard refreshing the page" : "Błąd podczas otwierania modalnego statusu użytkownika, spróbuj bardziej odświeżyć stronę", "Reset search" : "Zresetuj wyszukiwanie", + "Start search" : "Zacznij wyszukiwać", "Search for {name} only" : "Wyszukaj tylko {name}", "No results for {query}" : "Brak wyników dla {query}", + "Press enter to start searching" : "Naciśnij Enter, aby rozpocząć wyszukiwanie", "Start typing to search" : "Zacznij pisać, aby wyszukać", "Loading more results …" : "Wczytuję więcej wyników…", "Load more results" : "Wczytaj więcej wyników", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index 2b1a0b8b536..3fbecd2c49b 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -185,8 +185,10 @@ "{user} has not added any info yet" : "{user} nie dodał jeszcze żadnych informacji", "Error opening the user status modal, try hard refreshing the page" : "Błąd podczas otwierania modalnego statusu użytkownika, spróbuj bardziej odświeżyć stronę", "Reset search" : "Zresetuj wyszukiwanie", + "Start search" : "Zacznij wyszukiwać", "Search for {name} only" : "Wyszukaj tylko {name}", "No results for {query}" : "Brak wyników dla {query}", + "Press enter to start searching" : "Naciśnij Enter, aby rozpocząć wyszukiwanie", "Start typing to search" : "Zacznij pisać, aby wyszukać", "Loading more results …" : "Wczytuję więcej wyników…", "Load more results" : "Wczytaj więcej wyników", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 05bfc7887c3..56c8dc9c6b2 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -187,8 +187,10 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} henüz herhangi bir bilgi eklememiş", "Error opening the user status modal, try hard refreshing the page" : "Üste açılan kullanıcı durumu penceresinde sorun çıktı. Sayfası temizleyerek yenilemeyi deneyin ", "Reset search" : "Aramayı sıfırla", + "Start search" : "Aramayı başlat", "Search for {name} only" : "Yalnız {name} için aransın", "No results for {query}" : "{query} sorgusundan bir sonuç alınamadı", + "Press enter to start searching" : "Aramayı başlatmak için Enter tuşuna basın", "Start typing to search" : "Aramak için yazmaya başlayın", "Loading more results …" : "Diğer sonuçlar yükleniyor…", "Load more results" : "Diğer sonuçları yükle", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 580f67a1775..448e823c6bc 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -185,8 +185,10 @@ "{user} has not added any info yet" : "{user} henüz herhangi bir bilgi eklememiş", "Error opening the user status modal, try hard refreshing the page" : "Üste açılan kullanıcı durumu penceresinde sorun çıktı. Sayfası temizleyerek yenilemeyi deneyin ", "Reset search" : "Aramayı sıfırla", + "Start search" : "Aramayı başlat", "Search for {name} only" : "Yalnız {name} için aransın", "No results for {query}" : "{query} sorgusundan bir sonuç alınamadı", + "Press enter to start searching" : "Aramayı başlatmak için Enter tuşuna basın", "Start typing to search" : "Aramak için yazmaya başlayın", "Loading more results …" : "Diğer sonuçlar yükleniyor…", "Load more results" : "Diğer sonuçları yükle", diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js index 90ab574c051..e3eedaf434e 100644 --- a/core/l10n/zh_HK.js +++ b/core/l10n/zh_HK.js @@ -187,8 +187,10 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} 尚未新增任何資訊", "Error opening the user status modal, try hard refreshing the page" : "打開用戶狀態模式時出錯,請嘗試刷新頁面", "Reset search" : "重置搜尋", + "Start search" : "開始搜尋", "Search for {name} only" : "只搜尋 {name}", "No results for {query}" : "{query} 查詢沒有結果", + "Press enter to start searching" : "按 Enter 開始搜尋", "Start typing to search" : "輸入文字以檢索", "Loading more results …" : "正在載入更多結果...", "Load more results" : "載入更多結果", diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json index 2a5751e3918..1e7a85cdb8e 100644 --- a/core/l10n/zh_HK.json +++ b/core/l10n/zh_HK.json @@ -185,8 +185,10 @@ "{user} has not added any info yet" : "{user} 尚未新增任何資訊", "Error opening the user status modal, try hard refreshing the page" : "打開用戶狀態模式時出錯,請嘗試刷新頁面", "Reset search" : "重置搜尋", + "Start search" : "開始搜尋", "Search for {name} only" : "只搜尋 {name}", "No results for {query}" : "{query} 查詢沒有結果", + "Press enter to start searching" : "按 Enter 開始搜尋", "Start typing to search" : "輸入文字以檢索", "Loading more results …" : "正在載入更多結果...", "Load more results" : "載入更多結果", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index 3ec54f66d81..0620c75cb37 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -187,8 +187,10 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} 尚未新增任何資訊。", "Error opening the user status modal, try hard refreshing the page" : "開啟使用者狀態模式時發生問題,嘗試重新整理頁面", "Reset search" : "重置搜尋", + "Start search" : "開始搜尋", "Search for {name} only" : "僅搜尋 {name}", "No results for {query}" : "{query} 查詢沒有結果", + "Press enter to start searching" : "按 Enter 以開始搜尋", "Start typing to search" : "開始輸入以搜尋", "Loading more results …" : "正在載入更多結果…", "Load more results" : "載入更多結果", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 350b4043fc1..e2816a3fea3 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -185,8 +185,10 @@ "{user} has not added any info yet" : "{user} 尚未新增任何資訊。", "Error opening the user status modal, try hard refreshing the page" : "開啟使用者狀態模式時發生問題,嘗試重新整理頁面", "Reset search" : "重置搜尋", + "Start search" : "開始搜尋", "Search for {name} only" : "僅搜尋 {name}", "No results for {query}" : "{query} 查詢沒有結果", + "Press enter to start searching" : "按 Enter 以開始搜尋", "Start typing to search" : "開始輸入以搜尋", "Loading more results …" : "正在載入更多結果…", "Load more results" : "載入更多結果", diff --git a/core/shipped.json b/core/shipped.json index 14ee28a71d0..8a63cf20248 100644 --- a/core/shipped.json +++ b/core/shipped.json @@ -1,6 +1,5 @@ { "shippedApps": [ - "accessibility", "activity", "admin_audit", "circles", diff --git a/core/src/components/login/LoginButton.vue b/core/src/components/login/LoginButton.vue index f7d426e6c63..e99398ba09a 100644 --- a/core/src/components/login/LoginButton.vue +++ b/core/src/components/login/LoginButton.vue @@ -20,25 +20,33 @@ --> <template> - <div id="submit-wrapper" @click="$emit('click')"> - <input id="submit-form" - type="submit" - class="login primary" + <div class="submit-wrapper" @click="$emit('click')"> + <input type="submit" + class="submit-wrapper__input primary" title="" - :value="!loading ? t('core', 'Log in') : t('core', 'Logging in …')"> - <div class="submit-icon" - :class="{ - 'icon-confirm-white': !loading, - 'icon-loading-small': loading && invertedColors, - 'icon-loading-small-dark': loading && !invertedColors, - }" /> + :value="!loading ? value : valueLoading"> + <div v-if="loading" class="submit-wrapper__icon icon-loading-small-dark" /> + <ArrowRight v-else class="submit-wrapper__icon" /> </div> </template> <script> +import ArrowRight from 'vue-material-design-icons/ArrowRight.vue' + export default { name: 'LoginButton', + components: { + ArrowRight, + }, props: { + value: { + type: String, + default: t('core', 'Log in'), + }, + valueLoading: { + type: String, + default: t('core', 'Logging in …'), + }, loading: { type: Boolean, required: true, @@ -51,6 +59,36 @@ export default { } </script> -<style scoped> +<style scoped lang="scss"> +.submit-wrapper { + display: flex; + align-items: center; + justify-content: center; + padding: 10px 5px; + position: relative; + margin: 0 auto; + &__input { + width: 260px; + height: 50px; + } + + &__icon { + display: flex; + position: absolute; + right: 24px; + transition: right 100ms ease-in-out; + /* The submit icon is positioned on the submit button. + From the user point of view the icon is part of the + button, so the clicks on the icon have to be + applied to the button instead. */ + pointer-events: none; + } + + &__input:hover + &__icon:not(.icon-loading-small-dark), + &__input:focus + &__icon:not(.icon-loading-small-dark), + &__input:active + &__icon:not(.icon-loading-small-dark) { + right: 20px; + } +} </style> diff --git a/core/src/components/login/LoginForm.vue b/core/src/components/login/LoginForm.vue index e702961d50e..9114c0a728a 100644 --- a/core/src/components/login/LoginForm.vue +++ b/core/src/components/login/LoginForm.vue @@ -89,7 +89,7 @@ </a> </p> - <LoginButton :loading="loading" :inverted-colors="invertedColors" /> + <LoginButton :loading="loading" /> <p v-if="invalidPassword" class="warning wrongPasswordMsg"> @@ -158,10 +158,6 @@ export default { type: Number, default: 0, }, - invertedColors: { - type: Boolean, - default: false, - }, autoCompleteAllowed: { type: Boolean, default: true, diff --git a/core/src/components/login/PasswordLessLoginForm.vue b/core/src/components/login/PasswordLessLoginForm.vue index 94e7b35fa0e..3c0013936f0 100644 --- a/core/src/components/login/PasswordLessLoginForm.vue +++ b/core/src/components/login/PasswordLessLoginForm.vue @@ -25,7 +25,6 @@ <LoginButton v-if="validCredentials" :loading="loading" - :inverted-colors="invertedColors" @click="authenticate" /> </fieldset> </form> @@ -74,10 +73,6 @@ export default { type: [String, Boolean], default: false, }, - invertedColors: { - type: Boolean, - default: false, - }, autoCompleteAllowed: { type: Boolean, default: true, diff --git a/core/src/components/login/ResetPassword.vue b/core/src/components/login/ResetPassword.vue index 79589a96aca..7a499baa2f0 100644 --- a/core/src/components/login/ResetPassword.vue +++ b/core/src/components/login/ResetPassword.vue @@ -37,17 +37,7 @@ <label for="user" class="infield">{{ t('core', 'Username or email') }}</label> </p> <div id="reset-password-wrapper"> - <input id="reset-password-submit" - type="submit" - class="login primary" - title="" - :value="t('core', 'Reset password')"> - <div class="submit-icon" - :class="{ - 'icon-confirm-white': !loading, - 'icon-loading-small': loading && invertedColors, - 'icon-loading-small-dark': loading && !invertedColors, - }" /> + <LoginButton :value="t('core', 'Reset password')" /> </div> <p v-if="message === 'send-success'" class="update"> @@ -77,11 +67,14 @@ <script> import axios from '@nextcloud/axios' - import { generateUrl } from '@nextcloud/router' +import LoginButton from './LoginButton.vue' export default { name: 'ResetPassword', + components: { + LoginButton, + }, props: { username: { type: String, @@ -91,10 +84,6 @@ export default { type: String, required: true, }, - invertedColors: { - type: Boolean, - default: false, - }, }, data() { return { diff --git a/core/src/components/login/UpdatePassword.vue b/core/src/components/login/UpdatePassword.vue index 95778b993c8..36a63a6254a 100644 --- a/core/src/components/login/UpdatePassword.vue +++ b/core/src/components/login/UpdatePassword.vue @@ -49,18 +49,9 @@ </label> </div> - <div id="submit-wrapper"> - <input id="submit" - type="submit" - class="login primary" - title="" - :value="!loading ? t('core', 'Reset password') : t('core', 'Resetting password')"> - <div class="submit-icon" - :class="{ - 'icon-loading-small': loading && invertedColors, - 'icon-loading-small-dark': loading && !invertedColors - }" /> - </div> + <LoginButton :loading="loading" + :value="t('core', 'Reset password')" + :value-loading="t('core', 'Resetting password')" /> <p v-if="error && message" :class="{warning: error}"> {{ message }} @@ -71,9 +62,13 @@ <script> import Axios from '@nextcloud/axios' +import LoginButton from './LoginButton.vue' export default { name: 'UpdatePassword', + components: { + LoginButton, + }, props: { username: { type: String, @@ -83,10 +78,6 @@ export default { type: String, required: true, }, - invertedColors: { - type: Boolean, - default: false, - }, }, data() { return { diff --git a/core/src/views/Login.vue b/core/src/views/Login.vue index 70ac8da6f55..e2ca484126c 100644 --- a/core/src/views/Login.vue +++ b/core/src/views/Login.vue @@ -30,7 +30,6 @@ :messages="messages" :errors="errors" :throttle-delay="throttleDelay" - :inverted-colors="invertedColors" :auto-complete-allowed="autoCompleteAllowed" @submit="loading = true" /> <a v-if="canResetPassword && resetPasswordLink !== ''" @@ -68,7 +67,6 @@ class="login-additional"> <PasswordLessLoginForm :username.sync="user" :redirect-url="redirectUrl" - :inverted-colors="invertedColors" :auto-complete-allowed="autoCompleteAllowed" :is-https="isHttps" :is-localhost="isLocalhost" @@ -85,14 +83,12 @@ <ResetPassword v-if="resetPassword" :username.sync="user" :reset-password-link="resetPasswordLink" - :inverted-colors="invertedColors" @abort="resetPassword = false" /> </div> </div> <div v-else-if="resetPasswordTarget !== ''"> <UpdatePassword :username.sync="user" :reset-password-target="resetPasswordTarget" - :inverted-colors="invertedColors" @done="passwordResetFinished" /> </div> </transition> @@ -150,7 +146,6 @@ export default { messages: loadState('core', 'loginMessages', []), redirectUrl: loadState('core', 'loginRedirectUrl', false), throttleDelay: loadState('core', 'loginThrottleDelay', 0), - invertedColors: OCA.Theming && OCA.Theming.inverted, canResetPassword: loadState('core', 'loginCanResetPassword', false), resetPasswordLink: loadState('core', 'loginResetPasswordLink', ''), autoCompleteAllowed: loadState('core', 'loginAutocomplete', true), @@ -165,6 +160,7 @@ export default { hideLoginForm: loadState('core', 'hideLoginForm', false), } }, + methods: { passwordResetFinished() { this.resetPasswordTarget = '' diff --git a/core/src/views/UnifiedSearch.vue b/core/src/views/UnifiedSearch.vue index 89f5d2a0bab..2d2d2d0a254 100644 --- a/core/src/views/UnifiedSearch.vue +++ b/core/src/views/UnifiedSearch.vue @@ -30,7 +30,7 @@ <!-- Header icon --> <template #trigger> <Magnify class="unified-search__trigger" - :size="20" + :size="22/* fit better next to other 20px icons */" fill-color="var(--color-primary-text)" /> </template> @@ -81,15 +81,21 @@ <!-- Loading placeholders --> <SearchResultPlaceholders v-if="isLoading" /> - <EmptyContent v-else-if="isValidQuery" icon="icon-search"> + <EmptyContent v-else-if="isValidQuery"> <Highlight v-if="triggered" :text="t('core', 'No results for {query}', { query })" :search="query" /> <div v-else> {{ t('core', 'Press enter to start searching') }} </div> + <template #icon> + <Magnify /> + </template> </EmptyContent> - <EmptyContent v-else-if="!isLoading || isShortQuery" icon="icon-search"> + <EmptyContent v-else-if="!isLoading || isShortQuery"> {{ t('core', 'Start typing to search') }} + <template #icon> + <Magnify /> + </template> <template v-if="isShortQuery" #desc> {{ n('core', 'Please enter {minSearchLength} character or more to search', @@ -677,11 +683,6 @@ $input-height: 34px; $input-padding: 6px; .unified-search { - &__trigger { - width: 20px; - height: 20px; - } - &__input-wrapper { position: sticky; // above search results diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index b97181d9457..980d9abb7c4 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -36,10 +36,6 @@ <h1 class="hidden-visually"> <?php p($theme->getName()); ?> </h1> - <?php if (\OC::$server->getConfig()->getSystemValue('installed', false) - && \OC::$server->getConfig()->getAppValue('theming', 'logoMime', false)): ?> - <img src="<?php p($theme->getLogo()); ?>"/> - <?php endif; ?> </div> </div> </header> diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 2b84c89fca6..4efe072a5bb 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -40,7 +40,9 @@ $getUserAvatar = static function (int $size) use ($_): string { <?php emit_script_loading_tags($_); ?> <?php print_unescaped($_['headers']); ?> </head> - <body id="<?php p($_['bodyid']);?>"> + <body id="<?php p($_['bodyid']);?>" <?php foreach ($_['enabledThemes'] as $themeId) { + p("data-theme-$themeId "); + }?>> <?php include 'layout.noscript.warning.php'; ?> <?php foreach ($_['initialStates'] as $app => $initialState) { ?> @@ -64,7 +66,7 @@ $getUserAvatar = static function (int $size) use ($_): string { </div> </a> - <ul id="appmenu" <?php if ($_['themingInvertMenu']) { ?>class="inverted"<?php } ?>> + <ul id="appmenu"> <?php foreach ($_['navigation'] as $entry): ?> <li data-id="<?php p($entry['id']); ?>" class="hidden" tabindex="-1"> <a href="<?php print_unescaped($entry['href']); ?>" @@ -73,13 +75,12 @@ $getUserAvatar = static function (int $size) use ($_): string { aria-label="<?php p($entry['name']); ?>"> <svg width="24" height="20" viewBox="0 0 24 20" alt=""<?php if ($entry['unread'] !== 0) { ?> class="has-unread"<?php } ?>> <defs> - <?php if ($_['themingInvertMenu']) { ?><filter id="invertMenuMain-<?php p($entry['id']); ?>"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter><?php } ?> <mask id="hole"> <rect width="100%" height="100%" fill="white"/> <circle r="4.5" cx="21" cy="3" fill="black"/> </mask> </defs> - <image x="2" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet"<?php if ($_['themingInvertMenu']) { ?> filter="url(#invertMenuMain-<?php p($entry['id']); ?>)"<?php } ?> xlink:href="<?php print_unescaped($entry['icon'] . '?v=' . $_['versionHash']); ?>" style="<?php if ($entry['unread'] !== 0) { ?>mask: url("#hole");<?php } ?>" class="app-icon"></image> + <image x="2" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" xlink:href="<?php print_unescaped($entry['icon'] . '?v=' . $_['versionHash']); ?>" style="<?php if ($entry['unread'] !== 0) { ?>mask: url("#hole");<?php } ?>" class="app-icon"></image> <circle class="app-icon-notification" r="3" cx="21" cy="3" fill="red"/> </svg> <div class="unread-counter" aria-hidden="true"><?php p($entry['unread']); ?></div> |