diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html b/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
index 79a9703c73..fdae716b39 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
+++ b/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
@@ -19,7 +19,7 @@
name="email"
id="email"
val-email
- required
+ ng-required="true"
val-server-field="Email" />
Required
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml
index 7646851cd7..7864d3baae 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/da.xml
@@ -209,7 +209,7 @@
SidetitelEgenskaberDette dokument er udgivet, men ikke synligt da den overliggende side '%0%' ikke er udgivet!
- Upd: dette dokument er udgiver, men er ikke i cachen (intern fejl)
+ Ups: dette dokument er udgivet, men er ikke i cachen (intern fejl)Kunne ikke hente url'enDette dokument er udgivet, men dets url ville kollidere med indholdet %0%Udgiv
@@ -260,6 +260,10 @@
Kan ikke uploade denne fil, den har ikke en godkendt filtypeMaks filstørrelse erMedie rod
+ Flytning af mediet fejlede
+ Kopiering af mediet fejlede
+ Oprettelse af mappen under parent med id %0% fejlede
+ Omdøbning af mappen med id %0% fejledeOpret et nyt medlem
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/fr.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/fr.xml
index 598748a4eb..73f213b8bc 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/fr.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/fr.xml
@@ -1135,7 +1135,6 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
RéinitialiserDéfinir le recadrage
- Donnez un alias au recadrage ainsi que sa largeur et sa hauteur par défautSauvegarder le recadrageAjouter un nouveau recadrage
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/nl.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/nl.xml
index 98a63a946c..d42511abdb 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/nl.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/nl.xml
@@ -8,7 +8,7 @@
Beheer domeinnamenDocumentgeschiedenisNode bekijken
- Wijzig document type
+ Wijzig documenttypeKopiërenNieuwNieuwe package
@@ -38,7 +38,7 @@
BijwerkenRechten instellenDeblokkeer
- Content sjabloon aanmaken
+ Content template aanmakenUitnodiging opnieuw versturen
@@ -60,7 +60,7 @@
zouden moeten worden vermeden. Gebruik bij voorkeur de cultuurinstelling hierboven.]]>
OverervenCultuur
- of erf de cultuur over van de ouder nodes. Zal ook van toepassing
+ of erf de cultuur over van de oudernodes. Zal ook van toepassing
zijn op de huidige node, tenzij een domein hieronder ook van toepassing is.]]>Domeinen
@@ -110,7 +110,7 @@
Documenttype gewijzigdEigenschappen toewijzenToewijzen aan eigenschap
- Nieuw sjabloon
+ Nieuwe templateNieuw typegeenInhoud
@@ -149,7 +149,7 @@
Pagina TitelEigenschappenDit document is gepubliceerd maar niet zichtbaar omdat de bovenliggende node '%0%' niet gepubliceerd is
- Dit document is gepubliceerd, maar het is niet in de cache (interne serverfout)
+ Dit document is gepubliceerd, maar het staat niet in de cache (interne serverfout)Kan de Url niet ophalenDit document is gepubliceerd, maar de Url conflicteert met %0%Publiceren
@@ -179,14 +179,14 @@
Voeg nog een tekstvak toeVerwijder dit tekstvakContent root
- Deze waarde is verborgen. Indien u toegang nodig heeft om deze waarde te bekijken, contacteer dan uw website administrator.
+ Deze waarde is verborgen. Indien u toegang nodig heeft om deze waarde te bekijken, neem dan contact op met uw websitebeheerder.Deze waarde is verborgenKlik om te uploadenOf klik hier om bestanden te kiezenDit bestand heeft niet het juiste file-type. Dit bestand kan niet geupload worden.
- Max file size is
+ Maximale bestandsgrootte isMaak nieuwe member aan
@@ -196,16 +196,16 @@
Waar wil je de nieuwe %0% aanmaken?Aanmaken onderKies een type en een titel
- "Documenttypes" strong>.]]>
- "Mediatypes".]]>
+ "Documenttypes" strong>.]]>
+ "Mediatypes".]]>Document Type zonder template
- Nieuwe folder
+ Nieuwe mapNieuw data typeOpen je website- Verbergen
- Als Umbraco niet geopend wordt dan moet je misschien popups toelaten voor deze site.
+ Als Umbraco niet geopend wordt dan moet je mogelijk popups toestaan voor deze site. is geopend in een nieuw vensterHerstartenBezoek
@@ -216,7 +216,7 @@
Negeer wijzigingenWijzigingen niet opgeslagenWeet je zeker dat deze pagina wilt verlaten? - er zijn onopgeslagen wijzigingen
- Depubliceren zal deze pagina en alle onderliggend paginas verwijderen van de site.
+ Depubliceren zal deze pagina en alle onderliggende paginas verwijderen van de site.Done
@@ -274,8 +274,8 @@
De items worden nu uit de prullenbak verwijderd. Sluit dit venster niet terwijl de actie nog niet voltooid is.De prullenbak is nu leeg.Als items worden verwijderd uit de prullenbak, zijn ze voorgoed verwijderd.
- regexlib.com ondervindt momenteel prolemen waarover we geen controle hebben. Onze excuses voor het ongemak.]]>
- Zoek naar een regular expressie om validatie aan een formulierveld toe te voegen. Voorbeeld: 'email, 'post-code' 'url'
+ regexlib.com ondervindt momenteel problemen waarover we geen controle hebben. Onze excuses voor het ongemak.]]>
+ Zoek naar een reguliere expressie om validatie aan een formulierveld toe te voegen. Voorbeeld: 'email, 'post-code' 'url'Verwijder MacroVerplicht veldSite is opnieuw geïndexeerd
@@ -284,14 +284,14 @@
Aantal kolommenAantal regelsPlaats een placeholder id door een ID op uw placeholder te zetten kunt u inhoud plaatsen in deze template vanuit onderliggende templates,
- door te referreren naar deze ID door gebruik te maken van een <asp:content /> element.]]>
+ door te verwijzen naar deze ID door gebruik te maken van een <asp:content /> element.]]>Selecteer een placeholder id uit onderstaande lijst. U kunt alleen
Id's kiezen van de master van de huidige template..]]>Klik op de afbeelding voor volledige grootteKies een itemToon cache itemRelateer aan origineel
- Descendants meenemen
+ Onderliggende nodes meenemenDe vriendelijkste communityLink naar paginaOpent het gelinkte document in een nieuw venster of tab
@@ -362,8 +362,8 @@
Breedte en hoogte
- Je data is opgeslagen, maar voordat je deze pagina kunt publiceren moet je eerst aan paar problemen herstellen:
- Het wachtwoord veranderen wordt door de huidige Membership Provider niet ondersteund (EnablePasswordRetrieval moet op true staan)
+ Je data is opgeslagen, maar voordat je deze pagina kunt publiceren moet je eerst aan paar problemen oplossen:
+ Veranderen van het wachtwoord wordt door de huidige Membership Provider niet ondersteund (EnablePasswordRetrieval moet op true staan)%0% bestaat alEr zijn fouten geconstateerd:Er zijn fouten geconstateerd:
@@ -378,8 +378,8 @@
Een error ontvangen van de serverHet opgegeven bestandstype is niet toegestaan door de beheerderOPMERKING! Ondanks dat CodeMiror is ingeschakeld, is het uitgeschakeld in Internet Explorer omdat het niet stabiel genoeg is.
- Zowel de alias als de naam van het nieuwe eigenschappen type moeten worden ingevuld!
- Er is een probleem met de lees/schrijf rechten op een bestand of map
+ Zowel de alias als de naam van het nieuwe eigenschappentype moeten worden ingevuld!
+ Er is een probleem met de lees/schrijfrechten op een bestand of mapError bij het laden van Partial View script (file: %0%)Error bij het laden van userControl '%0%'Vul een titel in
@@ -624,7 +624,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Er zal een email worden gestuurd naar het emailadres van jouw account. Hierin staat een link om je wachtwoord te resettenEen email met daarin de wachtwoord reset uitleg zal worden gestuurd als het emailadres in onze database voorkomt.Terug naar loginformulier
- Geeft alsjeblieft een nieuw wachtwoord op
+ Geef alsjeblieft een nieuw wachtwoord opJe wachtwoord is aangepastDe link die je hebt aangeklikt is niet (meer) geldig.Umbraco: Wachtwoord Reset
@@ -646,7 +646,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
De huidige node is niet toegestaan onder de geselecteerde node vanwege het node typeDe huidige node kan niet naar een van zijn subpagina’s worden verplaatst.De huidige node kan niet worden gebruikt op root-niveau
- Deze actie is niet toegestaan omdat je onvoldoende rechten hebt op 1 of meer subitems.
+ Deze actie is niet toegestaan omdat je onvoldoende rechten hebt op één of meer subitems.Relateer gekopieerde items aan het origineel
@@ -705,7 +705,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Package naamPackage bevat geen inhoud
- Je kunt dit package veilig verwijderen door 'verwijder package' te klikken.
+ Je kunt deze package veilig verwijderen door op 'verwijder package' te klikken.
]]>Geen upgrades beschikbaarPackage opties
@@ -717,7 +717,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Verwijder packageWaarschuwing: alle documenten, media etc, die afhankelijk zijn van de items die je verwijderd, zullen niet meer werken en kan leiden tot een instabiele installatie,
- wees dus voorzichtig met verwijderen. Als je niet zeker bent, neem dan contact op met de auteur van de package.
+ wees dus voorzichtig met verwijderen. Als je het niet zeker weet, neem dan contact op met de auteur van de package.
]]>Download update uit de repositoryUpgrade package
@@ -734,11 +734,11 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Aan het installeren...Aan het herstarten, een ongenblik geduld aub...Geinstalleerd! Je browser zal nu automatisch ververst worden...
- Kruk op "finish" om de installate te voltooien en de pagina te verversen.
+ Klik op "finish" om de installatie te voltooien en de pagina te verversen.Plakken met alle opmaak (Niet aanbevolen)
- De tekst die je probeert te plakken bevat speciale karakters en/of opmaak. Dit kan veroorzaakt worden doordat de tekst vanuit Microsoft Word is gekopieerd. Umbraco kan deze speciale karakters en formattering automatisch verwijderen zodat de geplakte tekst geschikt is voor het web.
+ De tekst die je probeert te plakken bevat speciale tekens en/of opmaak. Dit kan veroorzaakt worden doordat de tekst vanuit Microsoft Word is gekopieerd. Umbraco kan deze speciale tekens en formattering automatisch verwijderen zodat de geplakte tekst geschikt is voor het web.Plakken als ruwe tekst en alle opmaak verwijderenPlakken, en verwijder de opmaak (aanbevolen)
@@ -755,7 +755,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Kies de pagina met het login-formulierVerwijder beveiligingKies de pagina's die het login-formulier en de error-berichten bevatten
- Kies de roles wie toegang hebben tot deze pagina
+ Kies de roles die toegang hebben tot deze paginaGeef de gebruikersnaam en wachtwoord voor deze paginaEenvoudig: Beveilig door middel van gebruikersnaam en wachtwoordAls je eenvoudige beveiliging wilt gebruiken met behulp van een enkele gebruikersnaam en wachtwoord
@@ -795,7 +795,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
BijschriftLinkIn een nieuw venster openen
- Voer het bijschrijft in
+ Voer het bijschrift inVoer de link in
@@ -803,9 +803,9 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Huidige versie
- Rode tekst wordt niet getoond in de geselecteerde versie , groen betekent toegevoegd]]>
+ Rode tekst wordt niet getoond in de geselecteerde versie, groen betekent toegevoegd]]>Document is teruggezet
- Hiermee wordt de geselecteerde versie als html getoond, als u de verschillen tussen de 2 versies tegelijk wilt zien, gebruik dan de diff view
+ Hiermee wordt de geselecteerde versie als html getoond, als u de verschillen tussen de twee versies tegelijk wilt zien, gebruik dan de diff viewTerugzetten naarSelecteer versieBekijk
@@ -865,11 +865,11 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Wegens onvoldoende rechten kon deze handeling kon niet worden uitegevoerd GeannuleerdUitvoering is g eannuleerd door de plugin van een 3e partij
- Publicatie werd geannuleerd doordeeen plugin van een 3e partij
- Eigenschappen type bestaat al
- Eigenschappen type aangemaakt
+ Publicatie werd geannuleerd door een plugin van een 3e partij
+ Eigenschappentype bestaat al
+ Eigenschappentype aangemaakt Data type: %1%]]>
- Eigenschappen type verwijderd
+ Eigenschappentype verwijderdInhoudstype opgeslagenTab aangemaaktTab verwijderd
@@ -941,9 +941,9 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Invoegen dictionary itemInvoegen MacroInvoegen Umbraco page field
- Basis sjabloon
+ BasistemplateQuick Guide voor Umbraco template tags
- Sjabloon
+ TemplateImage
@@ -996,11 +996,11 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Sta toe op root-niveauSta editors toe om content van dit type aan te maken op root-niveauToegestane child node types
- Sta contetn van een bepaalde type toe om onder dit type aangemaakt te kunnen worden
+ Sta content van een bepaald type toe om onder dit type aangemaakt te kunnen wordenKies child node
- Overerfde tabs en properties van een bestaand document-type. Nieuwe tabs worden toegevoegd aan het huidige document-type of samengevoegd als een tab met de identieke naam al bestaat.
- Dit content-type wordt gebruikt in een compositie en kan daarom niet zelf een compositie worden.
- Er zijn geen content-typen beschikbaar om als compositie te gebruiken.
+ Overgeërfde tabs en properties van een bestaand documenttype. Nieuwe tabs worden toegevoegd aan het huidige documenttype of samengevoegd als een tab met dezelfde naam al bestaat.
+ Dit contenttype wordt gebruikt in een compositie en kan daarom niet zelf een compositie worden.
+ Er zijn geen contenttypen beschikbaar om als compositie te gebruiken.Beschikbare editorsHerbruikEditor instellingen
@@ -1011,10 +1011,10 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Selecteer de map om te verplaatsenSelecteer de map om te kopierennaar de boomstructuur onder
- Alle Document types
+ Alle DocumenttypesAlle documentenAlle media items
- die gebruik maken van dit document type zullen permanent verwijderd worden. Bevestig aub dat je deze ook wilt verwijderen.
+ die gebruik maken van dit documenttype zullen permanent verwijderd worden. Bevestig aub dat je deze ook wilt verwijderen.die gebruik maken van dit media type zullen permanent verwijderd worden. Bevestig aub dat je deze ook wilt verwijderen.die gebruik maken van dit member type zullen permanent verwijderd worden. Bevestig aub dat je deze ook wilt verwijderen.en alle documenten van dit type
@@ -1059,7 +1059,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
HoofdlettersURL-encoderenSpeciale karakters in URL's worden geëncodeerd
- Zal alleen worden gebruikt waneer de bovenstaande veld waardes leeg zijn
+ Zal alleen worden gebruikt waneer de bovenstaande veldwaardes leeg zijnDit veld zal alleen worden gebruikt als het primaire veld leeg isJa, met tijd. Scheidingsteken:
@@ -1083,7 +1083,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
De Umbraco Robot
]]>
- Geen vertaal-gebruikers gevonden. Maak eerst een vertaal-gebruiker aan voordat je pagina's voor vertaling verstuurd
+ Geen vertaal-gebruikers gevonden. Maak eerst een vertaal-gebruiker aan voordat je pagina's voor vertaling verstuurtDe pagina '%0%' is verstuurd voor vertalingStuur voor vertalingTotaal aantal woorden
@@ -1132,7 +1132,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Toegang
- Gebaseerd op de gebruikers groepen en start pagina's heeft de bruiker toegang tot de volgende pagina's
+ Gebaseerd op de gebruikersgroepen en startpagina's heeft de gebruiker toegang tot de volgende pagina'sToegang gevenBeheerdersCategorieveld
@@ -1143,7 +1143,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
is niet gedeblokkeerdHet wachtwoord is niet gewijzigdBevestig nieuw password
- Je kunt je wachtwoord veranderen door onderstaan formulier in te vullen en op de knop 'Verander wachtwoord' te klikken
+ Je kunt je wachtwoord veranderen door onderstaand formulier in te vullen en op de knop 'Verander wachtwoord' te klikken InhoudskanaalNog een gebruiker aanmakenMaak nieuwe gebruikers aan om hun toegang te geven tot Umbraco. Wanneer een nieuwe gebruiker wordt aangemaakt wordt er een wachtwoord gegenereerd dat je met hun kan delen.
@@ -1158,15 +1158,15 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Nog een gebruiker uitnodigenNodig gebruikers uit om hen toegang te geven to Umbraco. Een uitnodiging wordt via e-mail verstuurd met instructies hoe de gebruiker kan inloggen.Taal
- Stel de taal in die gebruiker zal zien in menu's en dialoog vensters
- Laatst geblokkeerd datu,
+ Stel de taal in die gebruiker zal zien in menu's en dialoogvensters
+ Laatst geblokkeerd datumLaatste keer ingelogd
- Laatste keer paswoord gewijzigd
+ Laatste keer wachtwoord gewijzigdLoginnaamStartnode in MediabibliotheekBeperk de mediabibliotheek tot een specifieke startnodeStartnodes in Mediabibliotheek
- Beperk de mediabibliotheek tot een specifieke startnodes
+ Beperk de mediabibliotheek tot een specifieke startnodeSectiesBlokkeer Umbraco toegangheeft nog niet ingelogd
@@ -1195,9 +1195,9 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Geen startnode geselecteerdGeen startnodes geselecteerdStartnode in Content
- Beperk de content toegan een specifieke start node
+ Beperk de content toegang tot een specifieke startnodeStartnodes in Content
- Beperk de content toegan een specifieke start nodes
+ Beperk de content toegang tot specifieke startnodesLaatste keer bijgewerktis aangemaaktDe gebruiker is aangemaakt. Om in te loggen in Umbraco gebruik je onderstaand wachtwoord.
@@ -1207,7 +1207,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Gebruikersgroepis uitgenodigdEen uitnodiging is gestuurd naar de nieuwe gebruiker met informatie over hoe in te loggen in Umbraco
- Hallo en welk in Umbraco! Binnen ongeveer 1 minuut kan je aan de slag. Je moet enkel je wachtwoord instellen en een foto toevoegen.
+ Hallo en welkom in Umbraco! Binnen ongeveer één minuut kan je aan de slag. Je moet enkel je wachtwoord instellen en een foto toevoegen.Wijzig je foto zodat andere gebruikers je makkelijk kunnen herkennen.AuteurWijzig
@@ -1313,7 +1313,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
UitnodigenUitnodiging opnieuw aan het versturen...Verwijder gebruiker
- Ben je zeker dat je deze gebruiker wil verwijderen?
+ Weet je zeker dat je deze gebruiker wil verwijderen?Validatie
@@ -1331,9 +1331,9 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
3: Configuration file path
-->
Waarde is insteld naar the aanbevolen waarde: '%0%'.
- Waarde was '%1%' voor XPath '%2%' in configuratie bestand '%3%'.
- De verwachtte waarde voor '%2%' is '%1%' in configuratie bestand '%3%', maar is '%0%'.
- Onverwachte waarde '%0%' gevonden voor '%2%' in configuratie bestand '%3%'.
+ Waarde was '%1%' voor XPath '%2%' in configuratiebestand '%3%'.
+ De verwachte waarde voor '%2%' is '%1%' in configuratiebestand '%3%', maar is '%0%'.
+ Onverwachte waarde '%0%' gevonden voor '%2%' in configuratiebestand '%3%'.
@@ -1402,7 +1402,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
0: Comma delimitted list of headers found
-->
%0%.]]>
- Er zijn geen headeres gevonden welke informatie over de gebruikte website technologie prijsgeven!
+ Er zijn geen headers gevonden die informatie prijsgeven over de gebruikte website technologie!In de Web.config werd system.net/mailsettings niet gevondenIn de Web.config sectie system.net/mailsettings is de host niet geconfigureerd.SMTP instellingen zijn correct ingesteld en werken zoals verwacht.
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/pl.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/pl.xml
index 779a3c2a76..918e1e31c0 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/pl.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/pl.xml
@@ -960,8 +960,6 @@ Naciśnij przycisk instaluj, aby zainstalować bazę danych Umb
Resetuj
- Zdefiniuj przycięcie
- Ustaw alias dla przycięcia, a także jego domyślną szerokość i długośćZapisz przycięcieDodaj nowe przycięcie
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/ru.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/ru.xml
index 942f77e85b..3280d99997 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/ru.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/ru.xml
@@ -788,8 +788,6 @@
Сбросить
- Задать рамку
- Задайте рамке имя (алиас), а также ширину и высоту по-умолчаниюСохранить рамкуДобавить новую рамку
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/sv.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/sv.xml
index 7a3380996c..262df44eaf 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/sv.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/sv.xml
@@ -419,7 +419,7 @@
nuvarandeInbäddningHämta
- valgt
+ valdaBakgrundsfärg
@@ -625,8 +625,6 @@
Återställ
- Definiera beskräning
- Ge beskärningen ett alias och dess standardbredd och -höjdspara beskärningLägg till ny beskärning
diff --git a/src/Umbraco.Web.UI/Umbraco/developer/Macros/editMacro.aspx b/src/Umbraco.Web.UI/Umbraco/developer/Macros/editMacro.aspx
index 9bad79d6df..ccdb593287 100644
--- a/src/Umbraco.Web.UI/Umbraco/developer/Macros/editMacro.aspx
+++ b/src/Umbraco.Web.UI/Umbraco/developer/Macros/editMacro.aspx
@@ -92,7 +92,7 @@
- Seconds
+ Seconds
@@ -137,7 +137,7 @@
Required
-
+
@@ -149,10 +149,10 @@
Required Numbers only
-
+
-
+
@@ -160,11 +160,11 @@
Required
-
+
Required
-
+
Required
@@ -178,7 +178,7 @@
<%-- The macro parameter will automatically get sort order when created. --%>
-
+
diff --git a/src/Umbraco.Web.UI/Umbraco/dialogs/ChangeDocType.aspx b/src/Umbraco.Web.UI/Umbraco/dialogs/ChangeDocType.aspx
index 058954deee..00040e6584 100644
--- a/src/Umbraco.Web.UI/Umbraco/dialogs/ChangeDocType.aspx
+++ b/src/Umbraco.Web.UI/Umbraco/dialogs/ChangeDocType.aspx
@@ -19,7 +19,7 @@
.umb-dialog .umb-control-group .umb-el-wrap { overflow: hidden; }
.umb-dialog .umb-control-group .umb-el-wrap label { float: left; width: 140px; font-weight: bold; }
.umb-dialog .umb-control-group .umb-el-wrap label:after { content:":"; }
- .umb-dialog .umb-control-group .umb-el-wrap .controls-row { float: left; width: 280px; padding-top: 8px; }
+ .umb-dialog .umb-control-group .umb-el-wrap .controls-row { float: left; width: 280px; padding-bottom: 8px; }
.umb-dialog .umb-control-group .umb-el-wrap .controls-row select { width: auto; }
diff --git a/src/Umbraco.Web/Controllers/UmbLoginController.cs b/src/Umbraco.Web/Controllers/UmbLoginController.cs
index 7edcae782e..760de76328 100644
--- a/src/Umbraco.Web/Controllers/UmbLoginController.cs
+++ b/src/Umbraco.Web/Controllers/UmbLoginController.cs
@@ -37,7 +37,6 @@ namespace Umbraco.Web.Controllers
//redirect to current page by default
return RedirectToCurrentUmbracoPage();
- //return RedirectToCurrentUmbracoUrl();
}
}
}
diff --git a/src/Umbraco.Web/Editors/ContentControllerBase.cs b/src/Umbraco.Web/Editors/ContentControllerBase.cs
index 6a77e35409..2d5a61d1f7 100644
--- a/src/Umbraco.Web/Editors/ContentControllerBase.cs
+++ b/src/Umbraco.Web/Editors/ContentControllerBase.cs
@@ -106,7 +106,7 @@ namespace Umbraco.Web.Editors
protected virtual void HandleInvalidModelState(IErrorModel display)
{
- //lasty, if it is not valid, add the modelstate to the outgoing object and throw a 403
+ //lastly, if it is not valid, add the modelstate to the outgoing object and throw a 403
if (!ModelState.IsValid)
{
display.Errors = ModelState.ToErrorDictionary();
diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs
index 9bb80cc2b3..63346f177a 100644
--- a/src/Umbraco.Web/Editors/ContentTypeController.cs
+++ b/src/Umbraco.Web/Editors/ContentTypeController.cs
@@ -196,20 +196,6 @@ namespace Umbraco.Web.Editors
public CreatedContentTypeCollectionResult PostCreateCollection(int parentId, string collectionName, bool collectionCreateTemplate, string collectionItemName, bool collectionItemCreateTemplate, string collectionIcon, string collectionItemIcon)
{
- var storeInContainer = false;
- var allowUnderDocType = -1;
- // check if it's a folder
- if (Services.ContentTypeService.Get(parentId) == null)
- {
- storeInContainer = true;
- } else
- {
- // if it's not a container, we'll change the parentid to the root,
- // and use the parent id as the doc type the collection should be allowed under
- allowUnderDocType = parentId;
- parentId = -1;
- }
-
// create item doctype
var itemDocType = new ContentType(parentId);
itemDocType.Name = collectionItemName;
@@ -247,20 +233,16 @@ namespace Umbraco.Web.Editors
// save collection doctype
Services.ContentTypeService.Save(collectionDocType);
- // test if the parent id exist and then allow the collection underneath
- if (storeInContainer == false && allowUnderDocType != -1)
+ // test if the parent exist and then allow the collection underneath
+ var parentCt = Services.ContentTypeService.GetContentType(parentId);
+ if (parentCt != null)
{
- var parentCt = Services.ContentTypeService.Get(allowUnderDocType);
- if (parentCt != null)
- {
- var allowedCts = parentCt.AllowedContentTypes.ToList();
- allowedCts.Add(new ContentTypeSort(collectionDocType.Id, allowedCts.Count()));
- parentCt.AllowedContentTypes = allowedCts;
- Services.ContentTypeService.Save(parentCt);
- }
+ var allowedCts = parentCt.AllowedContentTypes.ToList();
+ allowedCts.Add(new ContentTypeSort(collectionDocType.Id, allowedCts.Count()));
+ parentCt.AllowedContentTypes = allowedCts;
+ Services.ContentTypeService.Save(parentCt);
}
-
return new CreatedContentTypeCollectionResult
{
CollectionId = collectionDocType.Id,
diff --git a/src/Umbraco.Web/Editors/MediaController.cs b/src/Umbraco.Web/Editors/MediaController.cs
index f61cbc5952..fe15c4d33b 100644
--- a/src/Umbraco.Web/Editors/MediaController.cs
+++ b/src/Umbraco.Web/Editors/MediaController.cs
@@ -424,12 +424,25 @@ namespace Umbraco.Web.Editors
public HttpResponseMessage PostMove(MoveOrCopy move)
{
var toMove = ValidateMoveOrCopy(move);
+ var destinationParentID = move.ParentId;
+ var sourceParentID = toMove.ParentId;
+
+ var moveResult = Services.MediaService.WithResult().Move(toMove, move.ParentId);
- Services.MediaService.Move(toMove, move.ParentId);
-
- var response = Request.CreateResponse(HttpStatusCode.OK);
- response.Content = new StringContent(toMove.Path, Encoding.UTF8, "text/plain");
- return response;
+ if (sourceParentID == destinationParentID)
+ {
+ return Request.CreateValidationErrorResponse(new SimpleNotificationModel(new Notification("",Services.TextService.Localize("media/moveToSameFolderFailed"),SpeechBubbleIcon.Error)));
+ }
+ if (moveResult == false)
+ {
+ return Request.CreateValidationErrorResponse(new SimpleNotificationModel());
+ }
+ else
+ {
+ var response = Request.CreateResponse(HttpStatusCode.OK);
+ response.Content = new StringContent(toMove.Path, Encoding.UTF8, "text/plain");
+ return response;
+ }
}
///
diff --git a/src/Umbraco.Web/Editors/PasswordChanger.cs b/src/Umbraco.Web/Editors/PasswordChanger.cs
index 69cc28ccb6..ad8a2a6f60 100644
--- a/src/Umbraco.Web/Editors/PasswordChanger.cs
+++ b/src/Umbraco.Web/Editors/PasswordChanger.cs
@@ -67,8 +67,9 @@ namespace Umbraco.Web.Editors
throw new InvalidOperationException("The membership provider cannot have a password format of " + membershipPasswordHasher.MembershipProvider.PasswordFormat + " and be configured with secured hashed passwords");
}
- //Are we resetting the password?? In ASP.NET Identity APIs, this flag indicates that an admin user is changing another user's password
- //without knowing the original password.
+ //Are we resetting the password?
+ //This flag indicates that either an admin user is changing another user's password without knowing the original password
+ // or that the password needs to be reset to an auto-generated one.
if (passwordModel.Reset.HasValue && passwordModel.Reset.Value)
{
//if it's the current user, the current user cannot reset their own password
@@ -109,7 +110,6 @@ namespace Umbraco.Web.Editors
}
//we cannot arbitrarily change the password without knowing the old one and no old password was supplied - need to return an error
- //TODO: What if the current user is admin? We should allow manually changing then?
if (passwordModel.OldPassword.IsNullOrWhiteSpace())
{
//if password retrieval is not enabled but there is no old password we cannot continue
@@ -161,10 +161,43 @@ namespace Umbraco.Web.Editors
}
}
- //Are we resetting the password??
- //TODO: I don't think this is required anymore since from 7.7 we no longer display the reset password checkbox since that didn't make sense.
+ //Are we resetting the password?
+ //This flag indicates that either an admin user is changing another user's password without knowing the original password
+ // or that the password needs to be reset to an auto-generated one.
if (passwordModel.Reset.HasValue && passwordModel.Reset.Value)
{
+ //if a new password is supplied then it's an admin user trying to change another user's password without knowing the original password
+ //this is only possible when using a membership provider if the membership provider supports AllowManuallyChangingPassword
+ if (passwordModel.NewPassword.IsNullOrWhiteSpace() == false)
+ {
+ if (membershipProvider is MembershipProviderBase umbracoBaseProvider && umbracoBaseProvider.AllowManuallyChangingPassword)
+ {
+ //this provider allows manually changing the password without the old password, so we can just do it
+ try
+ {
+ var result = umbracoBaseProvider.ChangePassword(username, string.Empty, passwordModel.NewPassword);
+
+ if (result && backofficeUserManager != null && userId >= 0)
+ backofficeUserManager.RaisePasswordChangedEvent(userId);
+
+ return result == false
+ ? Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Could not change password, invalid username or password", new[] { "value" }) })
+ : Attempt.Succeed(new PasswordChangedModel());
+ }
+ catch (Exception ex)
+ {
+ _logger.WarnWithException("Could not change member password", ex);
+ return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Could not change password, error: " + ex.Message + " (see log for full details)", new[] { "value" }) });
+ }
+ }
+ else
+ {
+ return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Provider does not support manually changing passwords", new[] { "value" }) });
+ }
+ }
+
+ //we've made it here which means we need to generate a new password
+
var canReset = membershipProvider.CanResetPassword(_userService);
if (canReset == false)
{
@@ -174,12 +207,13 @@ namespace Umbraco.Web.Editors
{
return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Password reset requires a password answer", new[] { "resetPassword" }) });
}
+
//ok, we should be able to reset it
try
{
var newPass = membershipProvider.ResetPassword(
- username,
- membershipProvider.RequiresQuestionAndAnswer ? passwordModel.Answer : null);
+ username,
+ membershipProvider.RequiresQuestionAndAnswer ? passwordModel.Answer : null);
if (membershipProvider.IsUmbracoUsersProvider() && backofficeUserManager != null && userId >= 0)
backofficeUserManager.RaisePasswordResetEvent(userId);
@@ -201,25 +235,8 @@ namespace Umbraco.Web.Editors
return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Cannot set an empty password", new[] { "value" }) });
}
- //This is an edge case and is only necessary for backwards compatibility:
- if (membershipProvider is MembershipProviderBase umbracoBaseProvider && umbracoBaseProvider.AllowManuallyChangingPassword)
- {
- //this provider allows manually changing the password without the old password, so we can just do it
- try
- {
- var result = umbracoBaseProvider.ChangePassword(username, "", passwordModel.NewPassword);
- return result == false
- ? Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Could not change password, invalid username or password", new[] { "value" }) })
- : Attempt.Succeed(new PasswordChangedModel());
- }
- catch (Exception ex)
- {
- _logger.Warn(ex, "Could not change member password");
- return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Could not change password, error: " + ex.Message + " (see log for full details)", new[] { "value" }) });
- }
- }
-
- //The provider does not support manually chaning the password but no old password supplied - need to return an error
+ //without being able to retrieve the original password,
+ //we cannot arbitrarily change the password without knowing the old one and no old password was supplied - need to return an error
if (passwordModel.OldPassword.IsNullOrWhiteSpace() && membershipProvider.EnablePasswordRetrieval == false)
{
//if password retrieval is not enabled but there is no old password we cannot continue
diff --git a/src/Umbraco.Web/HttpRequestExtensions.cs b/src/Umbraco.Web/HttpRequestExtensions.cs
index 257bd823df..e5a1ef39ff 100644
--- a/src/Umbraco.Web/HttpRequestExtensions.cs
+++ b/src/Umbraco.Web/HttpRequestExtensions.cs
@@ -16,10 +16,11 @@ namespace Umbraco.Web
///
///
///
+ ///
///
- public static string CleanForXss(this HttpRequest request, string key)
+ public static string CleanForXss(this HttpRequest request, string key, string valueIfNotFound = "")
{
- var item = request.GetItemAsString(key);
+ var item = request.GetItemAsString(key, valueIfNotFound);
return item.CleanForXss();
}
diff --git a/src/Umbraco.Web/Models/TemplateQuery/QueryCondition.cs b/src/Umbraco.Web/Models/TemplateQuery/QueryCondition.cs
index 39caf15775..8ba943756f 100644
--- a/src/Umbraco.Web/Models/TemplateQuery/QueryCondition.cs
+++ b/src/Umbraco.Web/Models/TemplateQuery/QueryCondition.cs
@@ -51,7 +51,6 @@
break;
}
- // constraintValue = condition.Property.Type == "string" ? string.Format("\"{0}\"", condition.ConstraintValue) : condition.ConstraintValue;
}
switch (condition.Term.Operathor)
diff --git a/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs
index 9739b7a30b..f7d886f637 100644
--- a/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs
+++ b/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs
@@ -312,7 +312,7 @@ namespace Umbraco.Web.PropertyEditors
{
if (propValues[propKey] == null)
yield return new ValidationResult("Item " + (i + 1) + " '" + propType.Name + "' cannot be null", new[] { propKey });
- else if (propValues[propKey].ToString().IsNullOrWhiteSpace())
+ else if (propValues[propKey].ToString().IsNullOrWhiteSpace() || (propValues[propKey].Type == JTokenType.Array && !propValues[propKey].HasValues))
yield return new ValidationResult("Item " + (i + 1) + " '" + propType.Name + "' cannot be empty", new[] { propKey });
}
diff --git a/src/Umbraco.Web/Templates/TemplateRenderer.cs b/src/Umbraco.Web/Templates/TemplateRenderer.cs
index e0b5c8c301..a6ef39a82b 100644
--- a/src/Umbraco.Web/Templates/TemplateRenderer.cs
+++ b/src/Umbraco.Web/Templates/TemplateRenderer.cs
@@ -178,7 +178,7 @@ namespace Umbraco.Web.Templates
///
///
///
- /// To acheive this we temporarily change the output text writer of the current HttpResponse, then
+ /// To achieve this we temporarily change the output text writer of the current HttpResponse, then
/// execute the controller via the handler which innevitably writes the result to the text writer
/// that has been assigned to the response. Then we change the response textwriter back to the original
/// before continuing .
diff --git a/src/Umbraco.Web/Trees/ContentTreeController.cs b/src/Umbraco.Web/Trees/ContentTreeController.cs
index 04c356a4fd..d9f872ab85 100644
--- a/src/Umbraco.Web/Trees/ContentTreeController.cs
+++ b/src/Umbraco.Web/Trees/ContentTreeController.cs
@@ -202,6 +202,9 @@ namespace Umbraco.Web.Trees
return HasPathAccess(entity, queryStrings);
}
+ internal override IEnumerable GetChildrenFromEntityService(int entityId)
+ => Services.EntityService.GetChildren(entityId, UmbracoObjectType).ToList();
+
protected override IEnumerable GetChildEntities(string id, FormDataCollection queryStrings)
{
var result = base.GetChildEntities(id, queryStrings);
diff --git a/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs b/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
index 0354e62ca7..560c15b568 100644
--- a/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
+++ b/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs
@@ -14,6 +14,7 @@ using Umbraco.Web.Models.Trees;
using Umbraco.Web.WebApi.Filters;
using System.Globalization;
using Umbraco.Core.Models.Entities;
+using Umbraco.Core.Services;
using Umbraco.Web.Actions;
using Umbraco.Web.Composing;
@@ -196,8 +197,9 @@ namespace Umbraco.Web.Trees
entityId = entity.Id;
}
- IEntitySlim[] result;
+ return GetChildrenFromEntityService(entityId);
+ /*
// if a request is made for the root node but user has no access to
// root node, return start nodes instead
if (entityId == Constants.System.Root && UserStartNodes.Contains(Constants.System.Root) == false)
@@ -211,9 +213,16 @@ namespace Umbraco.Web.Trees
result = Services.EntityService.GetChildren(entityId, UmbracoObjectType).ToArray();
}
- return result;
+ return result;*/
}
+ ///
+ /// Abstract method to fetch the entities from the entity service
+ ///
+ ///
+ ///
+ internal abstract IEnumerable GetChildrenFromEntityService(int entityId);
+
///
/// Returns true or false if the current user has access to the node based on the user's allowed start node (path) access
///
diff --git a/src/Umbraco.Web/Trees/MediaTreeController.cs b/src/Umbraco.Web/Trees/MediaTreeController.cs
index 0292a907fc..68bd538748 100644
--- a/src/Umbraco.Web/Trees/MediaTreeController.cs
+++ b/src/Umbraco.Web/Trees/MediaTreeController.cs
@@ -162,5 +162,12 @@ namespace Umbraco.Web.Trees
{
return _treeSearcher.ExamineSearch(Umbraco, query, UmbracoEntityTypes.Media, pageSize, pageIndex, out totalFound, searchFrom);
}
+
+ internal override IEnumerable GetChildrenFromEntityService(int entityId)
+ // Not pretty having to cast the service, but it is the only way to get to use an internal method that we
+ // do not want to make public on the interface. Unfortunately also prevents this from being unit tested.
+ // See this issue for details on why we need this:
+ // https://github.com/umbraco/Umbraco-CMS/issues/3457
+ => ((EntityService)Services.EntityService).GetMediaChildrenWithoutPropertyData(entityId).ToList();
}
}
diff --git a/src/Umbraco.Web/_Legacy/Controls/TabView.cs b/src/Umbraco.Web/_Legacy/Controls/TabView.cs
index 4c3779076e..9d2657dad5 100644
--- a/src/Umbraco.Web/_Legacy/Controls/TabView.cs
+++ b/src/Umbraco.Web/_Legacy/Controls/TabView.cs
@@ -34,7 +34,7 @@ namespace Umbraco.Web._Legacy.Controls
base.CreateChildControls();
_tabList.TagName = "ul";
- _tabList.Attributes.Add("class", "nav nav-tabs umb-nav-tabs span12 -padding-left");
+ _tabList.Attributes.Add("class", "nav nav-tabs umb-nav-tabs -padding-left");
base.row.Controls.Add(_tabList);
_body.TagName = "div";
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx.cs
index 3b1217d808..5a2a136832 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/RelationTypes/EditRelationType.aspx.cs
@@ -1,4 +1,5 @@
//TODO: Rebuild with new tree format and apis and then remove
+using umbraco.uicontrols;
//using System;
//using System.Collections.Generic;
@@ -185,14 +186,16 @@
// protected override void CreateChildControls()
// {
// base.CreateChildControls();
+/*
+ var save = tabControl.Menu.NewButton();
+ save.Click +=saveMenuImageButton_Click;
+ save.CausesValidation = true;
+ save.Text = ui.Text("save");
+ save.ButtonType = MenuButtonType.Primary;
+ save.ID = "save";
+ save.ValidationGroup = "RelationType";*/
-// var relationTypeTabPage = this.tabControl.NewTabPage("Relation Type");
-// relationTypeTabPage.Controls.Add(this.idPane);
-// relationTypeTabPage.Controls.Add(this.nameAliasPane);
-// relationTypeTabPage.Controls.Add(this.directionPane);
-// relationTypeTabPage.Controls.Add(this.objectTypePane);
-
-// var saveMenuImageButton = tabControl.Menu.NewButton();
+// var relationsTabPage = this.tabControl.NewTabPage("Relations");
// saveMenuImageButton.ToolTip = "save relation type";
// saveMenuImageButton.Click +=saveMenuImageButton_Click;
// saveMenuImageButton.CausesValidation = true;
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs
index e3fc136bad..07d13230e5 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/protectPage.aspx.cs
@@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
+using System.Web;
using System.Web.Security;
using System.Web.UI.WebControls;
using Umbraco.Core;
@@ -417,7 +418,7 @@ namespace umbraco.presentation.umbraco.dialogs
var content = Services.ContentService.GetById(pageId);
var text = content == null ? "" : content.Name;
- feedback_text.Text = Services.TextService.Localize("publicAccess/paIsProtected", new[] { text });
+ feedback_text.Text = HttpUtility.HtmlEncode(Services.TextService.Localize("publicAccess/paIsProtected", new[] { text }));
p_setup.Visible = false;
p_feedback.Visible = true;
@@ -438,7 +439,7 @@ namespace umbraco.presentation.umbraco.dialogs
var content = Services.ContentService.GetById(pageId);
var text = content == null ? "" : content.Name;
- feedback_text.Text = Services.TextService.Localize("publicAccess/paIsRemoved", new[] { text });
+ feedback_text.Text = HttpUtility.HtmlEncode(Services.TextService.Localize("publicAccess/paIsRemoved", new[] { text }));
p_feedback.Visible = true;