From b3205b090468f4de34dd94f85f1331e5f669b5a8 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Tue, 21 Feb 2017 21:06:22 +0100 Subject: [PATCH] Upgrade to 7.5.10 --- OurUmbraco.Site/OurUmbraco.Site.csproj | 74 +- .../config/ClientDependency.config | 22 +- OurUmbraco.Site/packages.config | 6 +- OurUmbraco.Site/umbraco/config/lang/nl.xml | 646 +++++++++++++--- .../umbraco/lib/angular/angular.js | 702 +++++++++++------- OurUmbraco.Site/web.template.config | 2 +- OurUmbraco/OurUmbraco.csproj | 66 +- OurUmbraco/packages.config | 4 +- 8 files changed, 1036 insertions(+), 486 deletions(-) diff --git a/OurUmbraco.Site/OurUmbraco.Site.csproj b/OurUmbraco.Site/OurUmbraco.Site.csproj index aef4a1ac..9ff3d306 100644 --- a/OurUmbraco.Site/OurUmbraco.Site.csproj +++ b/OurUmbraco.Site/OurUmbraco.Site.csproj @@ -1,6 +1,6 @@  - + Debug @@ -59,8 +59,8 @@ ..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\businesslogic.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\businesslogic.dll True @@ -71,12 +71,12 @@ ..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\cms.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\cms.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\controls.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\controls.dll True @@ -107,8 +107,8 @@ ..\packages\ImageProcessor.Web.4.8.2\lib\net45\ImageProcessor.Web.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\interfaces.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\interfaces.dll True @@ -116,19 +116,19 @@ ..\packages\JsonFx.2.0.1209.2802\lib\net40\JsonFx.dll - ..\packages\UmbracoCms.Core.7.5.9\lib\log4net.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\log4net.dll True ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll True - - ..\packages\Markdown.1.14.4\lib\net45\MarkdownSharp.dll + + ..\packages\Markdown.1.14.7\lib\net45\MarkdownSharp.dll True - ..\packages\UmbracoCms.Core.7.5.9\lib\Microsoft.ApplicationBlocks.Data.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\Microsoft.ApplicationBlocks.Data.dll True @@ -224,8 +224,8 @@ ..\packages\semver.1.1.2\lib\net451\Semver.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\SQLCE4Umbraco.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\SQLCE4Umbraco.dll True @@ -234,11 +234,11 @@ - ..\packages\UmbracoCms.Core.7.5.9\lib\System.Data.SqlServerCe.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\System.Data.SqlServerCe.dll True - ..\packages\UmbracoCms.Core.7.5.9\lib\System.Data.SqlServerCe.Entity.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\System.Data.SqlServerCe.Entity.dll True @@ -311,51 +311,51 @@ - ..\packages\UmbracoCms.Core.7.5.9\lib\TidyNet.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\TidyNet.dll True ..\packages\TweetinviAPI.1.2.0\lib\net45\Tweetinvi.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\Umbraco.Core.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\Umbraco.Core.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.DataLayer.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.DataLayer.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.editorControls.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.editorControls.dll True ..\packages\UmbracoCms.IdentityExtensions.1.0.0\lib\net45\Umbraco.IdentityExtensions.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.MacroEngines.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.MacroEngines.dll True ..\packages\Umbraco.ModelsBuilder.3.0.5\lib\Umbraco.ModelsBuilder.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.providers.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.providers.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\Umbraco.Web.UI.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\Umbraco.Web.UI.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\UmbracoExamine.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\UmbracoExamine.dll True @@ -4406,11 +4406,11 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + - + - + - - - - + + + + - - + + @@ -45,15 +44,12 @@ NOTES: --> - + - + diff --git a/OurUmbraco.Site/packages.config b/OurUmbraco.Site/packages.config index 7bed2780..8cb20bf5 100644 --- a/OurUmbraco.Site/packages.config +++ b/OurUmbraco.Site/packages.config @@ -17,7 +17,7 @@ - + @@ -60,8 +60,8 @@ - - + + diff --git a/OurUmbraco.Site/umbraco/config/lang/nl.xml b/OurUmbraco.Site/umbraco/config/lang/nl.xml index 2955ce71..84ef529b 100644 --- a/OurUmbraco.Site/umbraco/config/lang/nl.xml +++ b/OurUmbraco.Site/umbraco/config/lang/nl.xml @@ -27,6 +27,10 @@ Depubliceren Nodes opnieuw inladen Herpubliceer de site + Stel rechten voor pagina %0% in + Waarheen verplaatsen/ + Naar de onderstaande boomstructuur + Herstellen Rechten Vorige versies Klaar voor publicatie @@ -64,10 +68,10 @@ Tonen voor + Selectie ongedaan maken Selecteren Selecteer huidige map Doe iets anders - Vet Paragraaf uitspringen Voeg formulierveld in @@ -89,11 +93,14 @@ Opslaan Opslaan en publiceren Opslaan en verzenden voor goedkeuring + Sla list view op voorbeeld bekijken Voorbeeld bekijken is uitgeschakeld omdat er geen template is geselecteerd Stijl kiezen Stijlen tonen Tabel invoegen + Genereer models + Opslaan en models genereren Om het documenttype voor de geselecteerde inhoud te wijzigen, selecteert u eerst uit de lijst van geldige types voor deze locatie. @@ -133,7 +140,8 @@ Dit item is gewijzigd na publicatie Dit item is niet gepubliceerd Laatst gepubliceerd op - Nog geen items om weer te geven. + Er zijn geen items om weer te geven + Er zijn geen items om weer te geven. Mediatype Link naar media item(s) Ledengroep @@ -143,7 +151,9 @@ Pagina Titel Eigenschappen Dit document is gepubliceerd maar niet zichtbaar omdat de bovenliggende node '%0%' niet gepubliceerd is - Oeps: dit document is gepubliceerd, maar het is niet in de cache (interne serverfout) + Dit document is gepubliceerd, maar het is niet in de cache (interne serverfout) + Kan de Url niet ophalen + Dit document is gepubliceerd, maar de Url conflicteert met %0% Publiceren Publicatiestatus Publiceren op @@ -161,23 +171,34 @@ Bestand(en) verwijderen Link naar het document Lid van groep(en) - Geen lid van groep(en) - + Geen lid van groep(en) Kinderen Doel + Dit betekend de volgende tijd op de server: + Wat houd dit in?]]> Klik om te uploaden Plaats je bestanden hier... + Link naar media + Of klik hier om bestanden te kiezen + De toegestane bestandtypen zijn + Dit bestand heeft niet het juiste file-type. Dit bestand kan niet geupload worden. + Max file size is + + + Maak nieuwe member aan + Alle Members Waar wil je de nieuwe %0% aanmaken? Aanmaken onder Kies een type en een titel - "Documenttypes".]]> - "Mediatypes".]]> + Document Type zonder template + Nieuwe folder + Nieuw data type Open je website @@ -189,38 +210,38 @@ Welkom - Stay - Discard changes - You have unsaved changes - Are you sure you want to navigate away from this page? - you have unsaved changes + Blijf op deze pagina + Negeer wijzigingen + Wijzigingen niet opgeslagen + Weet je zeker dat deze pagina wilt verlaten? - er zijn onopgeslagen wijzigingen Done - - Deleted %0% item - Deleted %0% items - Deleted %0% out of %1% item - Deleted %0% out of %1% items - - Published %0% item - Published %0% items - Published %0% out of %1% item - Published %0% out of %1% items - - Unpublished %0% item - Unpublished %0% items - Unpublished %0% out of %1% item - Unpublished %0% out of %1% items - - Moved %0% item - Moved %0% items - Moved %0% out of %1% item - Moved %0% out of %1% items - - Copied %0% item - Copied %0% items - Copied %0% out of %1% item - Copied %0% out of %1% items + + %0% item verwijderd + %0% items verwijderd + Item %0% van de %1% verwijderd + Items %0% van de %1% verwijderd + + %0% item gepubliceerd + %0% items gepubliceerd + Item %0% van de %1% gepubliceerd + Items %0% van de %1% gepubliceerd + + %0% item gedepubliceerd + %0% items gedepubliceerd + Item %0% van de %1% gedepubliceerd + Items %0% van de %1% gedepubliceerd + + %0% item verplaatst + %0% items verplaatst + item %0% van de %1% verplaatst + items %0% van de %1% verplaatst + + %0% item gekopieerd + %0% items gekopieerd + item %0% van de %1% gekopieerd + item %0% van de %1% gekopieerd Naam @@ -269,21 +290,55 @@ Klik op de afbeelding voor volledige grootte Kies een item Toon cache item + Maak folder aan... + Relateer aan origineel + Descendants meenemen + De vriendelijkste community + Link naar pagina + Opent het gelinkte document in een nieuw venster of tab + Link naar media + Selecteer media + Selecteer icoon + Selecteer item + Selecteer link + Selecteer macro + Selecteer content + Selecteer member + Selecteer member group + Er zijn geen parameters voor deze macro + Externe login providers + Error details + Stacktrace + Inner Exception + Link je + De-Link je + account + Selecteer editor Cultuurnaam + Verander de key van het dictionary item. + + + - Typ je gebruikersnaam - Typ je wachtwoord + Typ jouw gebruikersnaam + Typ jouw wachtwoord + Bevestig jouw wachtwoord Benoem de %0%... Typ een naam... + Label... + Voer een omschrijving in... Typ om te zoeken... Typ om te filteren... Typ om tags toe te voegen (druk op enter na elke tag)... + Voer jouw email in @@ -331,10 +386,17 @@ %0% is niet in het correcte formaat + Een error ontvangen van de server Het opgegeven bestandstype is niet toegestaan ​​door de beheerder OPMERKING! 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 + Error bij het laden van Partial View script (file: %0%) + Error bij het laden van userControl '%0%' + Error bij het laden van customControl (Assembly: %0%, Type: '%1%') + Error bij het laden van MacroEngine script (file: %0%) + "Error bij het parsen van XSLT file: %0% + "Error bij het laden van XSLT file: %0% Vul een titel in Selecteer een type U wilt een afbeelding groter maken dan de originele afmetingen. Weet je zeker dat je wilt doorgaan? @@ -355,102 +417,142 @@ Acties Toevoegen Alias + Alles Weet je het zeker? - Rand - of - Annuleren + Terug + Border + bij + Cancel Cel marge - Kiezen - Sluiten - Venster sluiten - Opmerking - Bevestigen - Verhouding behouden - Doorgaan - Kopiëren + Kies + Sluit + Sluit venster + Comment + Bevestig + Verhoudingen behouden + Ga verder + Copy Aanmaken - Databank + Database Datum Standaard - Verwijderen + Verwijder Verwijderd - Verwijderen... + Aan het verwijderen... Ontwerp Afmetingen - Beneden + Omlaag Download - Aanpassen - Aangepast + Bewerk + Bewerkt Elementen - E-mail + Email Fout - Zoeken - Hoogte + Vind + Hogte Help Icoon - Importeren - Binnenmarge + Import + Binnenste marge Invoegen Installeren - Uitvullen + Ongeldig + Justify + Label Taal - Lay-out - Bezig met laden - Geblokkeerd + Layout + Aan het laden + Gesloten Inloggen - Afmelden - Afmelden + Uitloggen + Uitloggen Macro - Verplaatsen - Meer + Verplicht + Verplaats + meer Naam Nieuw Volgende Nee - van - Ok - Openen + of + OK + Open of Wachtwoord Pad Placeholder ID - Een ogenblik geduld a.u.b. + Een ogenblik geduld aub... Vorige Eigenschappen - E-mail om formulier te ontvangen + Email om formulier resultaten te ontvangen Prullenbak - Overgebleven - Hernoemen + De prullenbak is leeg + Overblijvend + Hernoem Vernieuw Verplicht Opnieuw proberen Rechten - Zoek + Zoeken + We konden helaas niet vinden wat je zocht Server - Tonen - Toon pagina bij versturen - Formaat - Sorteren - Submit - Type - Type om te zoeken... + Toon + Toon pagina na verzenden + Grootte + Sorteer + Verstuur + Typen + Typ om te zoeken... Omhoog - Bijwerken + Update Upgrade Upload Url Gebruiker Gebruikersnaam Waarde - Toon + Bekijk Welkom... Breedte Ja Map - Reorder - I am done reordering - Zoekresultaten + Herschik + Ik ben klaar met herschikken + Voorvertoning + Wachtwoord veranderen + naar + Lijstweergave + Aan het opslaan... + huidig + Embed + geselecteerd + + + Zwart + Groen + Geel + Oranje + Blauw + Rood + + + Tab toevoegen + Property toevoegen + Editor toevoegen + Template toevoegen + Child node toevoegen + Child toevoegen + + Data type bewerken + + Secties navigeren + + Shortcuts + Toon shortcuts + + Toggle lijstweergave + Toggle toestaan op root-niveau Achtergrondkleur @@ -528,6 +630,57 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Bekijken Umbraco %0% voor een nieuwe installatie of een upgrade van versie 3.0.

Druk op "volgende" om de wizard te starten.]]>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cultuurcode Cultuurnaam @@ -543,12 +696,22 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Fijne woensdag Fijne donderdag Fijne vrijdag - Fijne zaterdag - + Fijne zaterdag log hieronder in + Inloggen met Sessie is verlopen - © 2001 - %0%
umbraco.com

]]>
+ Wachtwoord vergeten? + Er zal een email worden gestuurd naar het emailadres van jouw account. Hierin staat een link om je wachtwoord te resetten + Een 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 + Je wachtwoord is aangepast + De link die je hebt aangeklikt is niet (meer) geldig. + Umbraco: Wachtwoord Reset + + De gebruikersnaam om in te loggen bij jouw Umbraco omgeving is: %0%

Klik hier om je wachtwoord te resetten of knip/plak deze URL in je browser:

%1%

]]> +
Dashboard @@ -646,6 +809,15 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Package versie Package versiehistorie Bekijk de package website + Package reeds geinstalleerd + Deze package kan niet worden geinstalleerd omdat minimaal Umbraco versie %0% benodigd is. + Aan het deinstalleren... + Aan het downloaden... + Aan het importeren... + 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. Plakken met alle opmaak (Niet aanbevolen) @@ -677,13 +849,18 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je %0% kan niet worden gepubliceerd omdat het item is gepland voor release. ]]> + + Inclusief ongepubliceerde kinderen Publicatie in uitvoering - even geduld... %0% van %1% pagina’s zijn gepubliceerd... @@ -698,16 +875,13 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Je hebt geen goedgekeurde kleuren geconfigureerd - Externe link toevoegen - Interne link toevoegen - Toevoegen - Bijschrift - Interne pagina - URL - Verplaats omlaag - Verplaats omhoog - Open in nieuw venster - Verwijder link + Externe link toevoegen + Interne link toevoegen + Bijschrift + Link + In een nieuw venster openen + Voer het bijschrijft in + Voer de link in Reset @@ -736,13 +910,17 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Instellingen Statistieken Vertaling - Gebruikers - Umbraco Contour - + Gebruikers Help Formulieren Analytics + + ga naar + Help onderwerpen voor + Video's voor + De beste Umbraco video tutorials + Standaard template Woordenboek sleutel @@ -762,6 +940,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Geen eigenschappen gedefinieerd op dit tabblad. Klik op de link "voeg een nieuwe eigenschap" aan de bovenkant om een ​​nieuwe eigenschap te creëren. Master Document Type Maak een bijbehorend template + Icon toevoegen Sort order @@ -771,7 +950,13 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
Sluit dit venster niet tijdens het sorteren]]>
- Publicatie werd geannuleerd door een 3rd party plug-in + Validatie + Validatiefouten moeten worden opgelost voor dit item kan worden opgeslagen + Mislukt + Wegens onvoldoende rechten kon deze handeling kon niet worden uitegevoerd + Geannuleerd + Uitvoering 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 Data type: %1%]]> @@ -806,6 +991,8 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Bestand opgeslagen Bestand opgeslagen zonder fouten Taal opgeslagen + Media Type opgeslagen + Member Type opgeslagen Python script niet opgeslagen Python script kon niet worden opgeslagen door een fout Python script opeslagen! @@ -824,6 +1011,11 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Partial view opgeslagen zonder fouten! Partial view niet opgeslagen Er is een fout opgetreden bij het opslaan van het bestand. + Script view opgeslagen + Script view opgeslagen zonder fouten! + Script view niet opgeslagen + Er is een fout opgetreden bij het opslaan van dit bestand. + Er is een fout opgetreden bij het opslaan van dit bestand. Gebruik CSS syntax bijv: h1, .redHeader, .blueTex @@ -846,15 +1038,15 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Item toevoegen - Choose a layout - Een rij aan de lay-out toevoegen - teken onderaan en voeg je eerste item toe]]> + Kies de indeling + Kies een indeling voor deze pagina om content toe te kunnen voegen + Plaats een (extra) content blok]]> Drop content - Settings applied - - This content is not allowed here - This content is allowed here + Instellingen toegepast + Deze content is hier niet toegestaan + Deze content is hier toegestaan + Klik om een item te embedden Klik om een afbeelding in te voegen Afbeelding ondertitel... @@ -883,7 +1075,79 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Alle editors toelaten Alle rijconfiguraties toelaten + Instellen als standaard + Kies extra + Kies standaard + zijn toegevoegd + + + Composities + Er zijn nog geen tabs toegevoegd + Voeg een nieuwe tab toe + Voeg nog een tab toe + Inherited van + Voeg property toe + Verplicht label + + Zet list view aan + Laat de child nodes van het content item zien als een sorteer- en doorzoekbare lijstweergave zien. Deze child nodes worden dan niet in de boomstructuur getoond. + + Toegestane Templates + Kies welke templates toegestaan zijn om door de editors op dit content-type gebruikt te worden + Sta toe op root-niveau + Sta editors toe om content van dit type aan te maken op root-niveau + Ja - sta content van dit type toe op root-niveau + + Toegestane child node types + Sta contetn van een bepaalde type toe om onder dit type aangemaakt te kunnen worden + + Kies 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. + + Beschikbare editors + Herbruik + Editor instellingen + + Configuratie + + Ja, verwijder + + is naar onder geplaatst + is naar onder gecopierd + Selecteer de map om te verplaatsen + Selecteer de map om te kopieren + naar de boomstructuur onder + + Alle Document types + Alle documenten + Alle 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 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 + en alle media items van dit type + en alle leden van dit type + + die gebruik maken van deze editor zullen geupdate worden met deze nieuwe instellingen + + Lid kan bewerken + Toon in het profiel van leden + tab heeft geen sorteervolgorde + + + + Models aan het gereneren + dit kan enige tijd duren, geduld aub + Models gegenereerd + Models konden niet gegenereerd worden + Models generatie is mislukt, kijk in de Umbraco log voor details + + Alternatief veld Alternatieve tekst @@ -916,7 +1180,8 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Taken aan jou toegewezen - Sluit taak @@ -932,18 +1197,24 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de Dit is een geautomatiseerde mail om u op de hoogte te brengen dat document '%1%' is aangevraagd voor vertaling naar '%5%' door %2%. - Ga naar http://%3%/Umbraco/translation/default.aspx?id=%4% om te bewerken. + Ga naar http://%3%/translation/details.aspx?id=%4% om te bewerken. + Of log in bij Umbraco om een overzicht te krijgen van al jouw vertalingen. - Een prettige dag! + + Met vriendelijke groet! - Dit is een bericht van uw Content Management Systeem. - + + De Umbraco Robot ]]> [%0%] Vertaalopdracht voor %1% Geen vertaal-gebruikers gevonden. Maak eerst een vertaal-gebruiker aan voordat je pagina's voor vertaling verstuurd Taken aangemaakt door jou - die je aanmaakte. Om een detailweergave met opmerkingen te zien, klik op "Detail" of op de paginanaam. Je kan ook de pagina in XML-formaat downloaden door op de "Download XML"-link te klikken. Om een vertalingstaak te sluiten, klik je op de "Sluiten"-knop in detailweergave.]]> + die je aanmaakte. + Om een detailweergave met opmerkingen te zien, klik op "Detail" of op de paginanaam. + Je kan ook de pagina in XML-formaat downloaden door op de "Download XML"-link te klikken. + Om een vertalingstaak te sluiten, klik je op de "Sluiten"-knop in detailweergave.]]> De pagina '%0%' is verstuurd voor vertaling + Kies de taal waarin deze contetn vertaald moet worden Stuur voor vertaling Toegewezen door Taak geopend @@ -973,7 +1244,8 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de Ledengroepen Rollen Ledentypes - Documenttypes + Documenttypen + RelatieTypen Packages Packages Python-bestanden @@ -985,6 +1257,7 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de Stylesheets Sjablonen XSLT Bestanden + Analytics Nieuwe update beschikbaar @@ -1010,6 +1283,7 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de Startnode in Mediabibliotheek Secties Blokkeer Umbraco toegang + Oude wachtwoord Wachtwoord Reset wachtwoord Je wachtwoord is veranderd! @@ -1030,10 +1304,138 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de Gebruikerstype Gebruikerstypes Auteur + Vertaler Wijzig - Je profiel Je recente historie Sessie verloopt over + + + Validatie + Valideer als email + Valideer als nummer + Valideer als Url + ...of gebruik custom validatie + Veld is verplicht + + + + 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%'. + + + Custom foutmeldingen zijn ingesteld op '%0%'. + Custom foutmeldingen zijn momenteel '%0%'. Wij raden aan deze aan te passen naar '%1%' voor livegang. + Custom foutmeldingen aangepast naar '%0%'. + + Macro foutmeldingen zijn ingesteld op'%0%'. + Macro foutmeldingen zijn ingesteld op '%0%'. Dit zal er voor zorgen dat bepaalde, of alle, pagina's van de website niet geladen kunnen worden als er errors in een Macro zitten. Corrigeren zal deze waarde aanpassen naar '%1%'. + Macro foutmeldingen zijn aangepast naar '%0%'. + + + Try Skip IIS Custom foutmeldingen is ingesteld op '%0%'. IIS versie '%1%' wordt gebruikt. + Try Skip IIS Custom foutmeldingen is ingesteld op '%0%'. Het wordt voor de gebruikte IIS versie (%2%) aangeraden deze in te stellen op '%1%'. + Try Skip IIS Custom foutmeldingen ingesteld op '%0%'. + + + Het volgende bestand bestaat niet: '%0%'. + '%0%' kon niet gevonden worden in configuratie bestand '%1%'.]]> + Er is een fout opgetreden. Bekijk de log file voor de volledige fout: %0%. + + Members - Totaal XML: %0%, Totaal: %1%, Total incorrect: %2% + Media - Totaal XML: %0%, Totaal: %1%, Total incorrect: %2% + Content - Totaal XML: %0%, Totaal gepubliceerd: %1%, Total incorrect: %2% + + Het cerficaat van de website is ongeldig. + Cerficaat validatie foutmelding: '%0%' + Fout bij pingen van URL %0% - '%1%' + De site wordt momenteel %0% bekeken via HTTPS. + De appSetting 'umbracoUseSSL' in web.config staat op 'false'. Indien HTTPS gebruikt wordt moet deze op 'true' staan. + De appSetting 'umbracoUseSSL' in web.config is ingesteld op '%0%'. Cookies zijn %1% ingesteld als secure. + De 'umbracoUseSSL' waarde in web.config kon niet aangepast worden. Foutmelding: %0% + + + HTTPS inschakelen + Zet in de appSettings van de web.config de umbracoSSL instelling op 'true'. + De appSetting 'umbracoUseSSL' is nu ingesteld op 'true', cookies zullen als 'secure' worden aangemerkt. + + Fix + Cannot fix a check with a value comparison type of 'ShouldNotEqual'. + Cannot fix a check with a value comparison type of 'ShouldEqual' with a provided value. + Value to fix check not provided. + + Debug compiliate mode staat uit. + Debug compiliate mode staat momenteel aan. Wij raden aan deze instelling uit te zetten voor livegang. + Debug compiliate mode uitgezet. + + Trace mode staat uit. + Trace mode staat momenteel aan. Wij raden aan deze instelling uit te zetten voor livegang. + Trace mode uitgezet. + + Alle mappen hebben de juiste permissie-instellingen!. + + %0%.]]> + %0%. Als deze niet in gebruik zijn voor deze omgeving hoeft er geen actie te worden ondernomen.]]> + + All files have the correct permissions set. + + %0%.]]> + %0%. Als deze niet in gebruik zijn voor deze omgeving hoeft er geen actie te worden ondernomen.]]> + + X-Frame-Options header of meta-tag om IFRAMEing door andere websites te voorkomen is aanwezig!]]> + X-Frame-Options header of meta-tag om IFRAMEing door andere websites te voorkomen is NIET aanwezig.]]> + Voorkom IFRAMEing via web.config + Voegt de instelling toe aan de httpProtocol/customHeaders section in web.config om IFRAMEing door andere websites te voorkomen. + De instelling om IFRAMEing door andere websites te voorkomen is toegevoegd aan de web.config! + Web.config kon niet aangepast worden door error: %0% + + + %0%.]]> + Er zijn geen headeres gevonden welke informatie over de gebruikte website technologie prijsgeven! + + In de Web.config werd system.net/mailsettings niet gevonden + In de Web.config sectie system.net/mailsettings is de host niet geconfigureerd. + SMTP instellingen zijn correct ingesteld en werken zoals verwacht. + De SMTP server geconfigureerd met host '%0%' en poort '%1%' kon niet gevonden worden. Controleer of de SMTP instellingen in Web.config file system.net/mailsettings correct zijn. + + %0%.]]> + %0%.]]> + + + URL tracker uitzetten + URL tracker aanzetten + Originele URL + Doorgestuurd naar + Er zijn geen redirects + Er wordt automatisch een redirect aangemaakt als een gepubliceerde pagina hernoemd of verplaatst wordt. + Verwijder + Weet je zeker dat je de redirect van '%0%' naar '%1%' wilt verwijderen? + Redirect URL verwijderd. + Fout bij verwijderen redirect URL. + Weet je zeker dat je de URL tracker wilt uitzetten? + URL tracker staat nu uit. + Fout bij het uitzetten van de URL Tracker. Meer informatie kan gevonden worden in de log file. + URL tracker staat nu aan. + Fout bij het aanzetten van de URL tracker. Meer informatie kan gevonden worden in de log file. diff --git a/OurUmbraco.Site/umbraco/lib/angular/angular.js b/OurUmbraco.Site/umbraco/lib/angular/angular.js index 0f3f3858..c6e9577c 100644 --- a/OurUmbraco.Site/umbraco/lib/angular/angular.js +++ b/OurUmbraco.Site/umbraco/lib/angular/angular.js @@ -1,6 +1,6 @@ /** - * @license AngularJS v1.6.1 - * (c) 2010-2016 Google, Inc. http://angularjs.org + * @license AngularJS v1.6.2 + * (c) 2010-2017 Google, Inc. http://angularjs.org * License: MIT */ (function(window) {'use strict'; @@ -57,7 +57,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message += '\nhttp://errors.angularjs.org/1.6.1/' + + message += '\nhttp://errors.angularjs.org/1.6.2/' + (module ? module + '/' : '') + code; for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') { @@ -1548,12 +1548,16 @@ function getNgAttribute(element, ngAttr) { } function allowAutoBootstrap(document) { - if (!document.currentScript) { + var script = document.currentScript; + var src = script && script.getAttribute('src'); + + if (!src) { return true; } - var src = document.currentScript.getAttribute('src'); + var link = document.createElement('a'); link.href = src; + if (document.location.origin === link.origin) { // Same-origin resources are always allowed, even for non-whitelisted schemes. return true; @@ -1935,7 +1939,7 @@ function bindJQuery() { extend(jQuery.fn, { scope: JQLitePrototype.scope, isolateScope: JQLitePrototype.isolateScope, - controller: JQLitePrototype.controller, + controller: /** @type {?} */ (JQLitePrototype).controller, injector: JQLitePrototype.injector, inheritedData: JQLitePrototype.inheritedData }); @@ -2577,7 +2581,6 @@ function toDebugString(obj) { $$ForceReflowProvider, $InterpolateProvider, $IntervalProvider, - $$HashMapProvider, $HttpProvider, $HttpParamSerializerProvider, $HttpParamSerializerJQLikeProvider, @@ -2586,6 +2589,7 @@ function toDebugString(obj) { $jsonpCallbacksProvider, $LocationProvider, $LogProvider, + $$MapProvider, $ParseProvider, $RootScopeProvider, $QProvider, @@ -2623,11 +2627,11 @@ function toDebugString(obj) { var version = { // These placeholder strings will be replaced by grunt's `build` task. // They need to be double- or single-quoted. - full: '1.6.1', + full: '1.6.2', major: 1, minor: 6, - dot: 1, - codeName: 'promise-rectification' + dot: 2, + codeName: 'llamacorn-lovehug' }; @@ -2767,7 +2771,7 @@ function publishExternalAPI(angular) { $window: $WindowProvider, $$rAF: $$RAFProvider, $$jqLite: $$jqLiteProvider, - $$HashMap: $$HashMapProvider, + $$Map: $$MapProvider, $$cookieReader: $$CookieReaderProvider }); } @@ -3915,50 +3919,70 @@ function hashKey(obj, nextUidFn) { return key; } -/** - * HashMap which can use objects as keys - */ -function HashMap(array, isolatedUid) { - if (isolatedUid) { - var uid = 0; - this.nextUid = function() { - return ++uid; - }; - } - forEach(array, this.put, this); +// A minimal ES2015 Map implementation. +// Should be bug/feature equivalent to the native implementations of supported browsers +// (for the features required in Angular). +// See https://kangax.github.io/compat-table/es6/#test-Map +var nanKey = Object.create(null); +function NgMapShim() { + this._keys = []; + this._values = []; + this._lastKey = NaN; + this._lastIndex = -1; } -HashMap.prototype = { - /** - * Store key value pair - * @param key key to store can be any type - * @param value value to store can be any type - */ - put: function(key, value) { - this[hashKey(key, this.nextUid)] = value; +NgMapShim.prototype = { + _idx: function(key) { + if (key === this._lastKey) { + return this._lastIndex; + } + this._lastKey = key; + this._lastIndex = this._keys.indexOf(key); + return this._lastIndex; + }, + _transformKey: function(key) { + return isNumberNaN(key) ? nanKey : key; }, - - /** - * @param key - * @returns {Object} the value for the key - */ get: function(key) { - return this[hashKey(key, this.nextUid)]; + key = this._transformKey(key); + var idx = this._idx(key); + if (idx !== -1) { + return this._values[idx]; + } }, + set: function(key, value) { + key = this._transformKey(key); + var idx = this._idx(key); + if (idx === -1) { + idx = this._lastIndex = this._keys.length; + } + this._keys[idx] = key; + this._values[idx] = value; - /** - * Remove the key/value pair - * @param key - */ - remove: function(key) { - var value = this[key = hashKey(key, this.nextUid)]; - delete this[key]; - return value; + // Support: IE11 + // Do not `return this` to simulate the partial IE11 implementation + }, + delete: function(key) { + key = this._transformKey(key); + var idx = this._idx(key); + if (idx === -1) { + return false; + } + this._keys.splice(idx, 1); + this._values.splice(idx, 1); + this._lastKey = NaN; + this._lastIndex = -1; + return true; } }; -var $$HashMapProvider = [/** @this */function() { +// For now, always use `NgMapShim`, even if `window.Map` is available. Some native implementations +// are still buggy (often in subtle ways) and can cause hard-to-debug failures. When native `Map` +// implementations get more stable, we can reconsider switching to `window.Map` (when available). +var NgMap = NgMapShim; + +var $$MapProvider = [/** @this */function() { this.$get = [function() { - return HashMap; + return NgMap; }]; }]; @@ -4033,11 +4057,7 @@ var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; var $injectorMinErr = minErr('$injector'); function stringifyFn(fn) { - // Support: Chrome 50-51 only - // Creating a new string by adding `' '` at the end, to hack around some bug in Chrome v50/51 - // (See https://github.com/angular/angular.js/issues/14487.) - // TODO (gkalpak): Remove workaround when Chrome v52 is released - return Function.prototype.toString.call(fn) + ' '; + return Function.prototype.toString.call(fn); } function extractArgs(fn) { @@ -4611,7 +4631,7 @@ function createInjector(modulesToLoad, strictDi) { var INSTANTIATING = {}, providerSuffix = 'Provider', path = [], - loadedModules = new HashMap([], true), + loadedModules = new NgMap(), providerCache = { $provide: { provider: supportObject(provider), @@ -4719,7 +4739,7 @@ function createInjector(modulesToLoad, strictDi) { var runBlocks = [], moduleFn; forEach(modulesToLoad, function(module) { if (loadedModules.get(module)) return; - loadedModules.put(module, true); + loadedModules.set(module, true); function runInvokeQueue(queue) { var i, ii; @@ -5205,7 +5225,7 @@ var $$CoreAnimateJsProvider = /** @this */ function() { // this is prefixed with Core since it conflicts with // the animateQueueProvider defined in ngAnimate/animateQueue.js var $$CoreAnimateQueueProvider = /** @this */ function() { - var postDigestQueue = new HashMap(); + var postDigestQueue = new NgMap(); var postDigestElements = []; this.$get = ['$$AnimateRunner', '$rootScope', @@ -5284,7 +5304,7 @@ var $$CoreAnimateQueueProvider = /** @this */ function() { jqLiteRemoveClass(elm, toRemove); } }); - postDigestQueue.remove(element); + postDigestQueue.delete(element); } }); postDigestElements.length = 0; @@ -5299,7 +5319,7 @@ var $$CoreAnimateQueueProvider = /** @this */ function() { if (classesAdded || classesRemoved) { - postDigestQueue.put(element, data); + postDigestQueue.set(element, data); postDigestElements.push(element); if (postDigestElements.length === 1) { @@ -6159,7 +6179,6 @@ function Browser(window, document, $log, $sniffer) { }; cacheState(); - lastHistoryState = cachedState; /** * @name $browser#url @@ -6213,8 +6232,6 @@ function Browser(window, document, $log, $sniffer) { if ($sniffer.history && (!sameBase || !sameState)) { history[replace ? 'replaceState' : 'pushState'](state, '', url); cacheState(); - // Do the assignment again so that those two variables are referentially identical. - lastHistoryState = cachedState; } else { if (!sameBase) { pendingLocation = url; @@ -6263,8 +6280,7 @@ function Browser(window, document, $log, $sniffer) { function cacheStateAndFireUrlChange() { pendingLocation = null; - cacheState(); - fireUrlChange(); + fireStateOrUrlChange(); } // This variable should be used *only* inside the cacheState function. @@ -6278,11 +6294,16 @@ function Browser(window, document, $log, $sniffer) { if (equals(cachedState, lastCachedState)) { cachedState = lastCachedState; } + lastCachedState = cachedState; + lastHistoryState = cachedState; } - function fireUrlChange() { - if (lastBrowserUrl === self.url() && lastHistoryState === cachedState) { + function fireStateOrUrlChange() { + var prevLastHistoryState = lastHistoryState; + cacheState(); + + if (lastBrowserUrl === self.url() && prevLastHistoryState === cachedState) { return; } @@ -6348,7 +6369,7 @@ function Browser(window, document, $log, $sniffer) { * Needs to be exported to be able to check for changes that have been done in sync, * as hashchange/popstate events fire in async. */ - self.$$checkUrlChange = fireUrlChange; + self.$$checkUrlChange = fireStateOrUrlChange; ////////////////////////////////////////////////////////////// // Misc API @@ -6958,7 +6979,8 @@ function $TemplateCacheProvider() { * * `$onChanges(changesObj)` - Called whenever one-way (`<`) or interpolation (`@`) bindings are updated. The * `changesObj` is a hash whose keys are the names of the bound properties that have changed, and the values are an * object of the form `{ currentValue, previousValue, isFirstChange() }`. Use this hook to trigger updates within a - * component such as cloning the bound value to prevent accidental mutation of the outer value. + * component such as cloning the bound value to prevent accidental mutation of the outer value. Note that this will + * also be called when your bindings are initialized. * * `$doCheck()` - Called on each turn of the digest cycle. Provides an opportunity to detect and act on * changes. Any actions that you wish to take in response to the changes that you detect must be * invoked from this hook; implementing this has no effect on when `$onChanges` is called. For example, this hook @@ -7813,7 +7835,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var bindingCache = createMap(); function parseIsolateBindings(scope, directiveName, isController) { - var LOCAL_REGEXP = /^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/; + var LOCAL_REGEXP = /^\s*([@&<]|=(\*?))(\??)\s*([\w$]*)\s*$/; var bindings = createMap(); @@ -9985,7 +10007,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (error instanceof Error) { $exceptionHandler(error); } - }).catch(noop); + }); return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) { var childBoundTranscludeFn = boundTranscludeFn; @@ -12117,7 +12139,8 @@ function $HttpProvider() { if ((config.cache || defaults.cache) && config.cache !== false && (config.method === 'GET' || config.method === 'JSONP')) { cache = isObject(config.cache) ? config.cache - : isObject(defaults.cache) ? defaults.cache + : isObject(/** @type {?} */ (defaults).cache) + ? /** @type {?} */ (defaults).cache : defaultCache; } @@ -13295,6 +13318,8 @@ function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) { this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash; this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/' + + this.$$urlUpdatedByLocation = true; }; this.$$parseLinkUrl = function(url, relHref) { @@ -13372,7 +13397,7 @@ function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) { withoutHashUrl = ''; if (isUndefined(withoutBaseUrl)) { appBase = url; - this.replace(); + /** @type {?} */ (this).replace(); } } } @@ -13428,6 +13453,8 @@ function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) { this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash; this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : ''); + + this.$$urlUpdatedByLocation = true; }; this.$$parseLinkUrl = function(url, relHref) { @@ -13485,6 +13512,8 @@ function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) { this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash; // include hashPrefix in $$absUrl when $$url is empty so IE9 does not reload page because of removal of '#' this.$$absUrl = appBase + hashPrefix + this.$$url; + + this.$$urlUpdatedByLocation = true; }; } @@ -13814,6 +13843,7 @@ forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], fun // but we're changing the $$state reference to $browser.state() during the $digest // so the modification window is narrow. this.$$state = isUndefined(state) ? null : state; + this.$$urlUpdatedByLocation = true; return this; }; @@ -14126,36 +14156,40 @@ function $LocationProvider() { // update browser $rootScope.$watch(function $locationWatch() { - var oldUrl = trimEmptyHash($browser.url()); - var newUrl = trimEmptyHash($location.absUrl()); - var oldState = $browser.state(); - var currentReplace = $location.$$replace; - var urlOrStateChanged = oldUrl !== newUrl || - ($location.$$html5 && $sniffer.history && oldState !== $location.$$state); + if (initializing || $location.$$urlUpdatedByLocation) { + $location.$$urlUpdatedByLocation = false; - if (initializing || urlOrStateChanged) { - initializing = false; + var oldUrl = trimEmptyHash($browser.url()); + var newUrl = trimEmptyHash($location.absUrl()); + var oldState = $browser.state(); + var currentReplace = $location.$$replace; + var urlOrStateChanged = oldUrl !== newUrl || + ($location.$$html5 && $sniffer.history && oldState !== $location.$$state); - $rootScope.$evalAsync(function() { - var newUrl = $location.absUrl(); - var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, - $location.$$state, oldState).defaultPrevented; + if (initializing || urlOrStateChanged) { + initializing = false; - // if the location was changed by a `$locationChangeStart` handler then stop - // processing this location change - if ($location.absUrl() !== newUrl) return; + $rootScope.$evalAsync(function() { + var newUrl = $location.absUrl(); + var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, + $location.$$state, oldState).defaultPrevented; - if (defaultPrevented) { - $location.$$parse(oldUrl); - $location.$$state = oldState; - } else { - if (urlOrStateChanged) { - setBrowserUrlWithFallback(newUrl, currentReplace, - oldState === $location.$$state ? null : $location.$$state); + // if the location was changed by a `$locationChangeStart` handler then stop + // processing this location change + if ($location.absUrl() !== newUrl) return; + + if (defaultPrevented) { + $location.$$parse(oldUrl); + $location.$$state = oldState; + } else { + if (urlOrStateChanged) { + setBrowserUrlWithFallback(newUrl, currentReplace, + oldState === $location.$$state ? null : $location.$$state); + } + afterLocationChange(oldUrl, oldState); } - afterLocationChange(oldUrl, oldState); - } - }); + }); + } } $location.$$replace = false; @@ -14233,7 +14267,7 @@ function $LogProvider() { this.debugEnabled = function(flag) { if (isDefined(flag)) { debug = flag; - return this; + return this; } else { return debug; } @@ -15055,6 +15089,13 @@ function findConstantAndWatchExpressions(ast, $filter) { if (!property.value.constant) { argsToWatch.push.apply(argsToWatch, property.value.toWatch); } + if (property.computed) { + findConstantAndWatchExpressions(property.key, $filter); + if (!property.key.constant) { + argsToWatch.push.apply(argsToWatch, property.key.toWatch); + } + } + }); ast.constant = allConstants; ast.toWatch = argsToWatch; @@ -16120,13 +16161,13 @@ function $ParseProvider() { } } - function expressionInputDirtyCheck(newValue, oldValueOfValue) { + function expressionInputDirtyCheck(newValue, oldValueOfValue, compareObjectIdentity) { if (newValue == null || oldValueOfValue == null) { // null/undefined return newValue === oldValueOfValue; } - if (typeof newValue === 'object') { + if (typeof newValue === 'object' && !compareObjectIdentity) { // attempt to convert the value to a primitive type // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can @@ -16155,7 +16196,7 @@ function $ParseProvider() { inputExpressions = inputExpressions[0]; return scope.$watch(function expressionInputWatch(scope) { var newInputValue = inputExpressions(scope); - if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) { + if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf, parsedExpression.literal)) { lastResult = parsedExpression(scope, undefined, undefined, [newInputValue]); oldInputValueOf = newInputValue && getValueOf(newInputValue); } @@ -16175,7 +16216,7 @@ function $ParseProvider() { for (var i = 0, ii = inputExpressions.length; i < ii; i++) { var newInputValue = inputExpressions[i](scope); - if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) { + if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i], parsedExpression.literal))) { oldInputValues[i] = newInputValue; oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue); } @@ -17868,6 +17909,10 @@ function $RootScopeProvider() { } } postDigestQueue.length = postDigestQueuePosition = 0; + + // Check for changes to browser url that happened during the $digest + // (for which no event is fired; e.g. via `history.pushState()`) + $browser.$$checkUrlChange(); }, @@ -19573,7 +19618,10 @@ function $SnifferProvider() { // (see https://developer.chrome.com/apps/api_index). If sandboxed, they can be detected by // the presence of an extension runtime ID and the absence of other Chrome runtime APIs // (see https://developer.chrome.com/apps/manifest/sandbox). + // (NW.js apps have access to Chrome APIs, but do support `history`.) + isNw = $window.nw && $window.nw.process, isChromePackagedApp = + !isNw && $window.chrome && ($window.chrome.app && $window.chrome.app.runtime || !$window.chrome.app && $window.chrome.runtime && $window.chrome.runtime.id), @@ -22334,7 +22382,8 @@ var htmlAnchorDirective = valueFn({ * * @description * - * This directive sets the `disabled` attribute on the element if the + * This directive sets the `disabled` attribute on the element (typically a form control, + * e.g. `input`, `button`, `select` etc.) if the * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy. * * A special directive is necessary because we cannot use interpolation inside the `disabled` @@ -24840,15 +24889,27 @@ function isValidForStep(viewValue, stepBase, step) { // and `viewValue` is expected to be a valid stringified number. var value = Number(viewValue); + var isNonIntegerValue = !isNumberInteger(value); + var isNonIntegerStepBase = !isNumberInteger(stepBase); + var isNonIntegerStep = !isNumberInteger(step); + // Due to limitations in Floating Point Arithmetic (e.g. `0.3 - 0.2 !== 0.1` or // `0.5 % 0.1 !== 0`), we need to convert all numbers to integers. - if (!isNumberInteger(value) || !isNumberInteger(stepBase) || !isNumberInteger(step)) { - var decimalCount = Math.max(countDecimals(value), countDecimals(stepBase), countDecimals(step)); + if (isNonIntegerValue || isNonIntegerStepBase || isNonIntegerStep) { + var valueDecimals = isNonIntegerValue ? countDecimals(value) : 0; + var stepBaseDecimals = isNonIntegerStepBase ? countDecimals(stepBase) : 0; + var stepDecimals = isNonIntegerStep ? countDecimals(step) : 0; + + var decimalCount = Math.max(valueDecimals, stepBaseDecimals, stepDecimals); var multiplier = Math.pow(10, decimalCount); value = value * multiplier; stepBase = stepBase * multiplier; step = step * multiplier; + + if (isNonIntegerValue) value = Math.round(value); + if (isNonIntegerStepBase) stepBase = Math.round(stepBase); + if (isNonIntegerStep) step = Math.round(step); } return (value - stepBase) % step === 0; @@ -25405,7 +25466,10 @@ var ngValueDirective = function() { * makes it possible to use ngValue as a sort of one-way bind. */ function updateElementValue(element, attr, value) { - element.prop('value', value); + // Support: IE9 only + // In IE9 values are converted to string (e.g. `input.value = null` results in `input.value === 'null'`). + var propValue = isDefined(value) ? value : (msie === 9) ? '' : null; + element.prop('value', propValue); attr.$set('value', value); } @@ -26733,15 +26797,15 @@ forEach( return { restrict: 'A', compile: function($element, attr) { - // We expose the powerful $event object on the scope that provides access to the Window, - // etc. that isn't protected by the fast paths in $parse. We explicitly request better - // checks at the cost of speed since event handler expressions are not executed as - // frequently as regular change detection. - var fn = $parse(attr[directiveName], /* interceptorFn */ null, /* expensiveChecks */ true); + // NOTE: + // We expose the powerful `$event` object on the scope that provides access to the Window, + // etc. This is OK, because expressions are not sandboxed any more (and the expression + // sandbox was never meant to be a security feature anyway). + var fn = $parse(attr[directiveName]); return function ngEventHandler(scope, element) { element.on(eventName, function(event) { var callback = function() { - fn(scope, {$event:event}); + fn(scope, {$event: event}); }; if (forceAsyncEvents[eventName] && $rootScope.$$phase) { scope.$evalAsync(callback); @@ -28620,6 +28684,29 @@ NgModelController.prototype = { that.$commitViewValue(); }); } + }, + + /** + * @ngdoc method + * + * @name ngModel.NgModelController#$overrideModelOptions + * + * @description + * + * Override the current model options settings programmatically. + * + * The previous `ModelOptions` value will not be modified. Instead, a + * new `ModelOptions` object will inherit from the previous one overriding + * or inheriting settings that are defined in the given parameter. + * + * See {@link ngModelOptions} for information about what options can be specified + * and how model option inheritance works. + * + * @param {Object} options a hash of settings to override the previous options + * + */ + $overrideModelOptions: function(options) { + this.$options = this.$options.createChild(options); } }; @@ -30883,11 +30970,13 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; * @multiElement * * @description - * The `ngShow` directive shows or hides the given HTML element based on the expression - * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding - * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined - * in AngularJS and sets the display style to none (using an !important flag). - * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}). + * The `ngShow` directive shows or hides the given HTML element based on the expression provided to + * the `ngShow` attribute. + * + * The element is shown or hidden by removing or adding the `.ng-hide` CSS class onto the element. + * The `.ng-hide` CSS class is predefined in AngularJS and sets the display style to none (using an + * `!important` flag). For CSP mode please add `angular-csp.css` to your HTML file (see + * {@link ng.directive:ngCsp ngCsp}). * * ```html * @@ -30897,31 +30986,32 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; *
* ``` * - * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added to the class - * attribute on the element causing it to become hidden. When truthy, the `.ng-hide` CSS class is removed - * from the element causing the element not to appear hidden. + * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added + * to the class attribute on the element causing it to become hidden. When truthy, the `.ng-hide` + * CSS class is removed from the element causing the element not to appear hidden. * - * ## Why is !important used? + * ## Why is `!important` used? * - * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector - * can be easily overridden by heavier selectors. For example, something as simple - * as changing the display style on a HTML list item would make hidden elements appear visible. - * This also becomes a bigger issue when dealing with CSS frameworks. + * You may be wondering why `!important` is used for the `.ng-hide` CSS class. This is because the + * `.ng-hide` selector can be easily overridden by heavier selectors. For example, something as + * simple as changing the display style on a HTML list item would make hidden elements appear + * visible. This also becomes a bigger issue when dealing with CSS frameworks. * - * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector - * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the - * styling to change how to hide an element then it is just a matter of using !important in their own CSS code. + * By using `!important`, the show and hide behavior will work as expected despite any clash between + * CSS selector specificity (when `!important` isn't used with any conflicting styles). If a + * developer chooses to override the styling to change how to hide an element then it is just a + * matter of using `!important` in their own CSS code. * * ### Overriding `.ng-hide` * - * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change - * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide` - * class CSS. Note that the selector that needs to be used is actually `.ng-hide:not(.ng-hide-animate)` to cope - * with extra animation classes that can be added. + * By default, the `.ng-hide` class will style the element with `display: none !important`. If you + * wish to change the hide behavior with `ngShow`/`ngHide`, you can simply overwrite the styles for + * the `.ng-hide` CSS class. Note that the selector that needs to be used is actually + * `.ng-hide:not(.ng-hide-animate)` to cope with extra animation classes that can be added. * * ```css * .ng-hide:not(.ng-hide-animate) { - * /* this is just another form of hiding an element */ + * /* These are just alternative ways of hiding an element */ * display: block!important; * position: absolute; * top: -9999px; @@ -30929,29 +31019,20 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; * } * ``` * - * By default you don't need to override in CSS anything and the animations will work around the display style. + * By default you don't need to override anything in CSS and the animations will work around the + * display style. * * ## A note about animations with `ngShow` * - * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression - * is true and false. This system works like the animation system present with ngClass except that - * you must also include the !important flag to override the display property - * so that you can perform an animation when the element is hidden during the time of the animation. + * Animations in `ngShow`/`ngHide` work with the show and hide events that are triggered when the + * directive expression is true and false. This system works like the animation system present with + * `ngClass` except that you must also include the `!important` flag to override the display + * property so that the elements are not actually hidden during the animation. * * ```css - * // - * //a working example can be found at the bottom of this page - * // + * /* A working example can be found at the bottom of this page. */ * .my-element.ng-hide-add, .my-element.ng-hide-remove { - * /* this is required as of 1.3x to properly - * apply all styling in a show/hide animation */ - * transition: 0s linear all; - * } - * - * .my-element.ng-hide-add-active, - * .my-element.ng-hide-remove-active { - * /* the transition is defined in the active class */ - * transition: 1s linear all; + * transition: all 0.5s linear; * } * * .my-element.ng-hide-add { ... } @@ -30960,76 +31041,108 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; * .my-element.ng-hide-remove.ng-hide-remove-active { ... } * ``` * - * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display - * property to block during animation states--ngAnimate will handle the style toggling automatically for you. + * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display property + * to block during animation states - ngAnimate will automatically handle the style toggling for you. * * @animations - * | Animation | Occurs | - * |----------------------------------|-------------------------------------| - * | {@link $animate#addClass addClass} `.ng-hide` | after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden | - * | {@link $animate#removeClass removeClass} `.ng-hide` | after the `ngShow` expression evaluates to a truthy value and just before contents are set to visible | + * | Animation | Occurs | + * |-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------| + * | {@link $animate#addClass addClass} `.ng-hide` | After the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden. | + * | {@link $animate#removeClass removeClass} `.ng-hide` | After the `ngShow` expression evaluates to a truthy value and just before contents are set to visible. | * * @element ANY - * @param {expression} ngShow If the {@link guide/expression expression} is truthy - * then the element is shown or hidden respectively. + * @param {expression} ngShow If the {@link guide/expression expression} is truthy/falsy then the + * element is shown/hidden respectively. * * @example - + * A simple example, animating the element's opacity: + * + - Click me:
-
- Show: -
- I show up when your checkbox is checked. -
+ Show:
+
+ I show up when your checkbox is checked.
-
- Hide: -
- I hide when your checkbox is checked. -
-
- - - @import url(../../components/bootstrap-3.1.1/css/bootstrap.css); - .animate-show { - line-height: 20px; - opacity: 1; - padding: 10px; - border: 1px solid black; - background: white; + .animate-show-hide.ng-hide { + opacity: 0; } - .animate-show.ng-hide-add, .animate-show.ng-hide-remove { + .animate-show-hide.ng-hide-add, + .animate-show-hide.ng-hide-remove { transition: all linear 0.5s; } - .animate-show.ng-hide { - line-height: 0; - opacity: 0; - padding: 0 10px; - } - .check-element { - padding: 10px; border: 1px solid black; - background: white; + opacity: 1; + padding: 10px; } - var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); - var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + it('should check ngShow', function() { + var checkbox = element(by.model('checked')); + var checkElem = element(by.css('.check-element')); - it('should check ng-show / ng-hide', function() { - expect(thumbsUp.isDisplayed()).toBeFalsy(); - expect(thumbsDown.isDisplayed()).toBeTruthy(); + expect(checkElem.isDisplayed()).toBe(false); + checkbox.click(); + expect(checkElem.isDisplayed()).toBe(true); + }); + + + * + *
+ * @example + * A more complex example, featuring different show/hide animations: + * + + + Show:
+
+ I show up when your checkbox is checked. +
+
+ + body { + overflow: hidden; + perspective: 1000px; + } - element(by.model('checked')).click(); + .funky-show-hide.ng-hide-add { + transform: rotateZ(0); + transform-origin: right; + transition: all 0.5s ease-in-out; + } - expect(thumbsUp.isDisplayed()).toBeTruthy(); - expect(thumbsDown.isDisplayed()).toBeFalsy(); + .funky-show-hide.ng-hide-add.ng-hide-add-active { + transform: rotateZ(-135deg); + } + + .funky-show-hide.ng-hide-remove { + transform: rotateY(90deg); + transform-origin: left; + transition: all 0.5s ease; + } + + .funky-show-hide.ng-hide-remove.ng-hide-remove-active { + transform: rotateY(0); + } + + .check-element { + border: 1px solid black; + opacity: 1; + padding: 10px; + } + + + it('should check ngShow', function() { + var checkbox = element(by.model('checked')); + var checkElem = element(by.css('.check-element')); + + expect(checkElem.isDisplayed()).toBe(false); + checkbox.click(); + expect(checkElem.isDisplayed()).toBe(true); });
@@ -31059,11 +31172,13 @@ var ngShowDirective = ['$animate', function($animate) { * @multiElement * * @description - * The `ngHide` directive shows or hides the given HTML element based on the expression - * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding - * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined - * in AngularJS and sets the display style to none (using an !important flag). - * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}). + * The `ngHide` directive shows or hides the given HTML element based on the expression provided to + * the `ngHide` attribute. + * + * The element is shown or hidden by removing or adding the `.ng-hide` CSS class onto the element. + * The `.ng-hide` CSS class is predefined in AngularJS and sets the display style to none (using an + * `!important` flag). For CSP mode please add `angular-csp.css` to your HTML file (see + * {@link ng.directive:ngCsp ngCsp}). * * ```html * @@ -31073,30 +31188,32 @@ var ngShowDirective = ['$animate', function($animate) { *
* ``` * - * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added to the class - * attribute on the element causing it to become hidden. When falsy, the `.ng-hide` CSS class is removed - * from the element causing the element not to appear hidden. + * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added + * to the class attribute on the element causing it to become hidden. When falsy, the `.ng-hide` + * CSS class is removed from the element causing the element not to appear hidden. * - * ## Why is !important used? + * ## Why is `!important` used? * - * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector - * can be easily overridden by heavier selectors. For example, something as simple - * as changing the display style on a HTML list item would make hidden elements appear visible. - * This also becomes a bigger issue when dealing with CSS frameworks. + * You may be wondering why `!important` is used for the `.ng-hide` CSS class. This is because the + * `.ng-hide` selector can be easily overridden by heavier selectors. For example, something as + * simple as changing the display style on a HTML list item would make hidden elements appear + * visible. This also becomes a bigger issue when dealing with CSS frameworks. * - * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector - * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the - * styling to change how to hide an element then it is just a matter of using !important in their own CSS code. + * By using `!important`, the show and hide behavior will work as expected despite any clash between + * CSS selector specificity (when `!important` isn't used with any conflicting styles). If a + * developer chooses to override the styling to change how to hide an element then it is just a + * matter of using `!important` in their own CSS code. * * ### Overriding `.ng-hide` * - * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change - * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide` - * class in CSS: + * By default, the `.ng-hide` class will style the element with `display: none !important`. If you + * wish to change the hide behavior with `ngShow`/`ngHide`, you can simply overwrite the styles for + * the `.ng-hide` CSS class. Note that the selector that needs to be used is actually + * `.ng-hide:not(.ng-hide-animate)` to cope with extra animation classes that can be added. * * ```css - * .ng-hide { - * /* this is just another form of hiding an element */ + * .ng-hide:not(.ng-hide-animate) { + * /* These are just alternative ways of hiding an element */ * display: block!important; * position: absolute; * top: -9999px; @@ -31104,20 +31221,20 @@ var ngShowDirective = ['$animate', function($animate) { * } * ``` * - * By default you don't need to override in CSS anything and the animations will work around the display style. + * By default you don't need to override in CSS anything and the animations will work around the + * display style. * * ## A note about animations with `ngHide` * - * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression - * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide` - * CSS class is added and removed for you instead of your own CSS class. + * Animations in `ngShow`/`ngHide` work with the show and hide events that are triggered when the + * directive expression is true and false. This system works like the animation system present with + * `ngClass` except that you must also include the `!important` flag to override the display + * property so that the elements are not actually hidden during the animation. * * ```css - * // - * //a working example can be found at the bottom of this page - * // + * /* A working example can be found at the bottom of this page. */ * .my-element.ng-hide-add, .my-element.ng-hide-remove { - * transition: 0.5s linear all; + * transition: all 0.5s linear; * } * * .my-element.ng-hide-add { ... } @@ -31126,74 +31243,109 @@ var ngShowDirective = ['$animate', function($animate) { * .my-element.ng-hide-remove.ng-hide-remove-active { ... } * ``` * - * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display - * property to block during animation states--ngAnimate will handle the style toggling automatically for you. + * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display property + * to block during animation states - ngAnimate will automatically handle the style toggling for you. * * @animations - * | Animation | Occurs | - * |----------------------------------|-------------------------------------| - * | {@link $animate#addClass addClass} `.ng-hide` | after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden | - * | {@link $animate#removeClass removeClass} `.ng-hide` | after the `ngHide` expression evaluates to a non truthy value and just before contents are set to visible | + * | Animation | Occurs | + * |-----------------------------------------------------|------------------------------------------------------------------------------------------------------------| + * | {@link $animate#addClass addClass} `.ng-hide` | After the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden. | + * | {@link $animate#removeClass removeClass} `.ng-hide` | After the `ngHide` expression evaluates to a non truthy value and just before contents are set to visible. | * * * @element ANY - * @param {expression} ngHide If the {@link guide/expression expression} is truthy then - * the element is shown or hidden respectively. + * @param {expression} ngHide If the {@link guide/expression expression} is truthy/falsy then the + * element is hidden/shown respectively. * * @example - + * A simple example, animating the element's opacity: + * + - Click me:
-
- Show: -
- I show up when your checkbox is checked. -
+ Hide:
+
+ I hide when your checkbox is checked.
-
- Hide: -
- I hide when your checkbox is checked. -
-
- - - @import url(../../components/bootstrap-3.1.1/css/bootstrap.css); - .animate-hide { - transition: all linear 0.5s; - line-height: 20px; - opacity: 1; - padding: 10px; - border: 1px solid black; - background: white; + .animate-show-hide.ng-hide { + opacity: 0; } - .animate-hide.ng-hide { - line-height: 0; - opacity: 0; - padding: 0 10px; + .animate-show-hide.ng-hide-add, + .animate-show-hide.ng-hide-remove { + transition: all linear 0.5s; } .check-element { - padding: 10px; border: 1px solid black; - background: white; + opacity: 1; + padding: 10px; } - var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); - var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + it('should check ngHide', function() { + var checkbox = element(by.model('checked')); + var checkElem = element(by.css('.check-element')); - it('should check ng-show / ng-hide', function() { - expect(thumbsUp.isDisplayed()).toBeFalsy(); - expect(thumbsDown.isDisplayed()).toBeTruthy(); + expect(checkElem.isDisplayed()).toBe(true); + checkbox.click(); + expect(checkElem.isDisplayed()).toBe(false); + }); + + + * + *
+ * @example + * A more complex example, featuring different show/hide animations: + * + + + Hide:
+
+ I hide when your checkbox is checked. +
+
+ + body { + overflow: hidden; + perspective: 1000px; + } - element(by.model('checked')).click(); + .funky-show-hide.ng-hide-add { + transform: rotateZ(0); + transform-origin: right; + transition: all 0.5s ease-in-out; + } - expect(thumbsUp.isDisplayed()).toBeTruthy(); - expect(thumbsDown.isDisplayed()).toBeFalsy(); + .funky-show-hide.ng-hide-add.ng-hide-add-active { + transform: rotateZ(-135deg); + } + + .funky-show-hide.ng-hide-remove { + transform: rotateY(90deg); + transform-origin: left; + transition: all 0.5s ease; + } + + .funky-show-hide.ng-hide-remove.ng-hide-remove-active { + transform: rotateY(0); + } + + .check-element { + border: 1px solid black; + opacity: 1; + padding: 10px; + } + + + it('should check ngHide', function() { + var checkbox = element(by.model('checked')); + var checkElem = element(by.css('.check-element')); + + expect(checkElem.isDisplayed()).toBe(true); + checkbox.click(); + expect(checkElem.isDisplayed()).toBe(false); });
@@ -31788,7 +31940,7 @@ var SelectController = ['$element', '$scope', /** @this */ function($element, $scope) { var self = this, - optionsMap = new HashMap(); + optionsMap = new NgMap(); self.selectValueMap = {}; // Keys are the hashed values, values the original values @@ -31909,7 +32061,7 @@ var SelectController = self.emptyOption = element; } var count = optionsMap.get(value) || 0; - optionsMap.put(value, count + 1); + optionsMap.set(value, count + 1); // Only render at the end of a digest. This improves render performance when many options // are added during a digest and ensures all relevant options are correctly marked as selected scheduleRender(); @@ -31920,13 +32072,13 @@ var SelectController = var count = optionsMap.get(value); if (count) { if (count === 1) { - optionsMap.remove(value); + optionsMap.delete(value); if (value === '') { self.hasEmptyOption = false; self.emptyOption = undefined; } } else { - optionsMap.put(value, count - 1); + optionsMap.set(value, count - 1); } } }; @@ -32053,7 +32205,7 @@ var SelectController = var removeValue = optionAttrs.value; self.removeOption(removeValue); - self.ngModelCtrl.$render(); + scheduleRender(); if (self.multiple && currentValue && currentValue.indexOf(removeValue) !== -1 || currentValue === removeValue @@ -32378,9 +32530,9 @@ var selectDirective = function() { // Write value now needs to set the selected property of each matching option selectCtrl.writeValue = function writeMultipleValue(value) { - var items = new HashMap(value); forEach(element.find('option'), function(option) { - option.selected = isDefined(items.get(option.value)) || isDefined(items.get(selectCtrl.selectValueMap[option.value])); + option.selected = !!value && (includes(value, option.value) || + includes(value, selectCtrl.selectValueMap[option.value])); }); }; diff --git a/OurUmbraco.Site/web.template.config b/OurUmbraco.Site/web.template.config index 09e15fe0..44f322e5 100644 --- a/OurUmbraco.Site/web.template.config +++ b/OurUmbraco.Site/web.template.config @@ -49,7 +49,7 @@ Umbraco web.config configuration documentation can be found here: http://our.umbraco.org/documentation/using-umbraco/config-files/#webconfig --> - + diff --git a/OurUmbraco/OurUmbraco.csproj b/OurUmbraco/OurUmbraco.csproj index 8c653c57..667fa536 100644 --- a/OurUmbraco/OurUmbraco.csproj +++ b/OurUmbraco/OurUmbraco.csproj @@ -45,8 +45,8 @@ ..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\businesslogic.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\businesslogic.dll True @@ -57,12 +57,12 @@ ..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\cms.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\cms.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\controls.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\controls.dll True @@ -101,8 +101,8 @@ ..\packages\ImageProcessor.Web.4.8.2\lib\net45\ImageProcessor.Web.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\interfaces.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\interfaces.dll True @@ -110,7 +110,7 @@ True - ..\packages\UmbracoCms.Core.7.5.9\lib\log4net.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\log4net.dll True @@ -121,12 +121,12 @@ ..\packages\MarkdownDeep.NET.1.5\lib\.NetFramework 3.5\MarkdownDeep.dll True - - ..\packages\Markdown.1.14.4\lib\net45\MarkdownSharp.dll + + ..\packages\Markdown.1.14.7\lib\net45\MarkdownSharp.dll True - ..\packages\UmbracoCms.Core.7.5.9\lib\Microsoft.ApplicationBlocks.Data.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\Microsoft.ApplicationBlocks.Data.dll True @@ -241,8 +241,8 @@ ..\packages\semver.1.1.2\lib\net451\Semver.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\SQLCE4Umbraco.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\SQLCE4Umbraco.dll True @@ -252,11 +252,11 @@ - ..\packages\UmbracoCms.Core.7.5.9\lib\System.Data.SqlServerCe.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\System.Data.SqlServerCe.dll True - ..\packages\UmbracoCms.Core.7.5.9\lib\System.Data.SqlServerCe.Entity.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\System.Data.SqlServerCe.Entity.dll True @@ -337,47 +337,47 @@ - ..\packages\UmbracoCms.Core.7.5.9\lib\TidyNet.dll + ..\packages\UmbracoCms.Core.7.5.10\lib\TidyNet.dll True ..\packages\TweetinviAPI.1.2.0\lib\net45\Tweetinvi.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\Umbraco.Core.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\Umbraco.Core.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.DataLayer.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.DataLayer.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.editorControls.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.editorControls.dll True ..\packages\UmbracoCms.IdentityExtensions.1.0.0\lib\net45\Umbraco.IdentityExtensions.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.MacroEngines.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.MacroEngines.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\umbraco.providers.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\umbraco.providers.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\Umbraco.Web.UI.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\Umbraco.Web.UI.dll True - - ..\packages\UmbracoCms.Core.7.5.9\lib\UmbracoExamine.dll + + ..\packages\UmbracoCms.Core.7.5.10\lib\UmbracoExamine.dll True diff --git a/OurUmbraco/packages.config b/OurUmbraco/packages.config index 1fc4e27a..36f0e3a1 100644 --- a/OurUmbraco/packages.config +++ b/OurUmbraco/packages.config @@ -14,7 +14,7 @@ - + @@ -87,7 +87,7 @@ - +