diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec index e502271115..f3f8f47b57 100644 --- a/build/NuSpecs/UmbracoCms.Core.nuspec +++ b/build/NuSpecs/UmbracoCms.Core.nuspec @@ -39,6 +39,8 @@ + + diff --git a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs index 0f99b6b884..fc9e0e6166 100644 --- a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs +++ b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs @@ -29,6 +29,7 @@ using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing.Objects.Accessors; using Umbraco.Web; using Umbraco.Web.Cache; +using Umbraco.Web.Macros; using Umbraco.Web.PublishedCache; using Umbraco.Web.Routing; using Umbraco.Web.Runtime; @@ -81,7 +82,7 @@ namespace Umbraco.Tests.Runtimes var composerTypes = typeLoader.GetTypes() // all of them .Where(x => !x.FullName.StartsWith("Umbraco.Tests.")) // exclude test components - .Where(x => x != typeof(WebInitialComposer)); // exclude web runtime + .Where(x => x != typeof(WebInitialComposer) && x != typeof(WebFinalComposer)); // exclude web runtime var composers = new Composers(composition, composerTypes, profilingLogger); composers.Compose(); @@ -101,6 +102,8 @@ namespace Umbraco.Tests.Runtimes composition.RegisterUnique(); composition.RegisterUnique(f => ExamineManager.Instance); composition.RegisterUnique(); + composition.RegisterUnique(); + composition.RegisterUnique(_ => new MediaUrlProviderCollection(Enumerable.Empty())); // initialize some components only/individually composition.WithCollectionBuilder() @@ -124,14 +127,15 @@ namespace Umbraco.Tests.Runtimes if (true || runtimeState.Level == RuntimeLevel.Install) { var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - var file = Path.Combine(path, "Umbraco.sdf"); + var file = databaseFactory.Configured ? Path.Combine(path, "UmbracoNPocoTests.sdf") : Path.Combine(path, "Umbraco.sdf"); if (File.Exists(file)) File.Delete(file); // create the database file // databaseBuilder.ConfigureEmbeddedDatabaseConnection() can do it too, // but then it wants to write the connection string to web.config = bad - using (var engine = new SqlCeEngine("Data Source=|DataDirectory|\\Umbraco.sdf;Flush Interval=1;")) + var connectionString = databaseFactory.Configured ? databaseFactory.ConnectionString : "Data Source=|DataDirectory|\\Umbraco.sdf;Flush Interval=1;"; + using (var engine = new SqlCeEngine(connectionString)) { engine.CreateDatabase(); } @@ -140,7 +144,8 @@ namespace Umbraco.Tests.Runtimes //databaseFactory.Configure(DatabaseBuilder.EmbeddedDatabaseConnectionString, Constants.DbProviderNames.SqlCe); //databaseBuilder.CreateDatabaseSchemaAndData(); - databaseFactory.Configure(DatabaseBuilder.EmbeddedDatabaseConnectionString, Constants.DbProviderNames.SqlCe); + if (!databaseFactory.Configured) + databaseFactory.Configure(DatabaseBuilder.EmbeddedDatabaseConnectionString, Constants.DbProviderNames.SqlCe); var scopeProvider = factory.GetInstance(); using (var scope = scopeProvider.CreateScope()) @@ -154,6 +159,8 @@ namespace Umbraco.Tests.Runtimes // done installing runtimeState.Level = RuntimeLevel.Run; + components.Initialize(); + // instantiate to register events // should be done by Initialize? // should we invoke Initialize? diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js index 9390d64cdb..0ea5006c4a 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js @@ -66,7 +66,7 @@ (function () { 'use strict'; - function ToggleDirective(localizationService, eventsService) { + function ToggleDirective(localizationService, eventsService, $timeout) { function link(scope, el, attr, ctrl) { @@ -75,7 +75,11 @@ function onInit() { setLabelText(); - eventsService.emit("toggleValue", { value: scope.checked }); + // must wait until the current digest cycle is finished before we emit this event on init, + // otherwise other property editors might not yet be ready to receive the event + $timeout(function () { + eventsService.emit("toggleValue", { value: scope.checked }); + }, 100); } function setLabelText() { diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js index e65a3d238c..8c32d93c01 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js @@ -286,11 +286,11 @@ Opens an overlay to show a custom YSOD.
$(document).on("keydown.overlay-" + overlayNumber, function(event) { - if (event.which === 27) { + if (event.which === 27) { numberOfOverlays = overlayHelper.getNumberOfOverlays(); - if (numberOfOverlays === overlayNumber) { + if (numberOfOverlays === overlayNumber && !scope.model.disableEscKey) { scope.$apply(function () { scope.closeOverLay(); }); diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbaceeditor.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbaceeditor.directive.js index a215bca645..cd1b1d8181 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbaceeditor.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbaceeditor.directive.js @@ -281,6 +281,10 @@ opts.callbacks.unshift(options.onLoad); } + if (opts.autoFocus === true) { + acee.focus(); + } + // EVENTS // unbind old change listener diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/validation/valformmanager.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/validation/valformmanager.directive.js index 29920ebf00..a53fb75d93 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/validation/valformmanager.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/validation/valformmanager.directive.js @@ -165,6 +165,7 @@ function valFormManager(serverValidationManager, $rootScope, $timeout, $location "title": labels.unsavedChangesTitle, "content": labels.unsavedChangesContent, "disableBackdropClick": true, + "disableEscKey": true, "submitButtonLabel": labels.stayButton, "closeButtonLabel": labels.discardChangesButton, submit: function() { diff --git a/src/Umbraco.Web.UI.Client/src/less/components/overlays.less b/src/Umbraco.Web.UI.Client/src/less/components/overlays.less index f5050fad85..c8f0195ea5 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/overlays.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/overlays.less @@ -12,6 +12,7 @@ display: flex; flex-wrap: nowrap; flex-direction: column; + height: 100%; } .umb-overlay .umb-overlay-header { @@ -23,8 +24,6 @@ padding: 20px 30px 0; } - - .umb-overlay__section-header { width: 100%; margin-top:30px; @@ -113,10 +112,6 @@ padding: 30px 30px 0; } -.umb-overlay.umb-overlay-center .umb-overlay__form { - -} - .umb-overlay.umb-overlay-center .umb-overlay-drawer { border: none; background: transparent; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-cards.less b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-cards.less index 3bc431e01f..7c327bfb88 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-cards.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-cards.less @@ -63,12 +63,14 @@ .umb-user-card__goToUser { &:hover, &:focus { text-decoration: none; + .umb-user-card__name { text-decoration: underline; color: @ui-option-type-hover; } + .umb-avatar { - border: 1px solid @ui-option-type-hover; + box-shadow: 0px 1px 3px rgba(0, 0, 0, .5); } } } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-table.less b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-table.less index 0c61a5d113..31b126e77c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-table.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-user-table.less @@ -3,16 +3,21 @@ .umb-user-table-col-avatar { flex: 0 0 32px; padding: 15px 0; - + + > a { + overflow: visible; + } + .umb-checkmark { margin-left:5px; } } - + .umb-table-cell a { + &:hover, &:focus { .umb-avatar { - border: 1px solid @ui-option-type-hover; + box-shadow: 0px 1px 3px rgba(0, 0, 0, .5); } } } diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/codeeditor.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/codeeditor.controller.js index f455e99fe7..841134fa5a 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/codeeditor.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/codeeditor.controller.js @@ -12,11 +12,13 @@ mode: "razor", theme: "chrome", showPrintMargin: false, + autoFocus: true, advanced: { fontSize: "14px", enableSnippets: false, //The Razor mode snippets are awful (Need a way to override these) enableBasicAutocompletion: true, - enableLiveAutocompletion: false + enableLiveAutocompletion: false, + wrap: true }, onLoad: function(aceEditor) { vm.aceEditor = aceEditor;