diff --git a/.gitignore b/.gitignore index d1126b695f..7f7fd2bf6e 100644 --- a/.gitignore +++ b/.gitignore @@ -145,3 +145,4 @@ build/msbuild.log src/packages/ src/PrecompiledWeb/* build/tools/ +src/PrecompiledWeb/* diff --git a/build/BuildDocs.ps1 b/build/BuildDocs.ps1 index dcb3a85cc1..7b13f98ca4 100644 --- a/build/BuildDocs.ps1 +++ b/build/BuildDocs.ps1 @@ -57,6 +57,20 @@ $IndexPath = "../src/umbraco.web.ui.client/docs/api/index.html" # Build the solution in debug mode $SolutionPath = Join-Path -Path $SolutionRoot -ChildPath "umbraco.sln" + +# Go get nuget.exe if we don't hae it +$NuGet = "$ToolsRoot\nuget.exe" +$FileExists = Test-Path $NuGet +If ($FileExists -eq $False) { + Write-Host "Retrieving nuget.exe..." + $SourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" + Invoke-WebRequest $SourceNugetExe -OutFile $NuGet +} + +#restore nuget packages +Write-Host "Restoring nuget packages..." +& $NuGet restore $SolutionPath + & $MSBuild "$SolutionPath" /p:Configuration=Debug /maxcpucount /t:Clean if (-not $?) { diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec index 47e10bbcef..c4aaf7344e 100644 --- a/build/NuSpecs/UmbracoCms.Core.nuspec +++ b/build/NuSpecs/UmbracoCms.Core.nuspec @@ -1,6 +1,6 @@ - + UmbracoCms.Core 7.0.0 Umbraco Cms Core Binaries diff --git a/build/NuSpecs/UmbracoCms.nuspec b/build/NuSpecs/UmbracoCms.nuspec index c9912aeb89..8d58ec43a3 100644 --- a/build/NuSpecs/UmbracoCms.nuspec +++ b/build/NuSpecs/UmbracoCms.nuspec @@ -1,6 +1,6 @@ - + UmbracoCms 7.0.0 Umbraco Cms diff --git a/build/NuSpecs/tools/Web.config.install.xdt b/build/NuSpecs/tools/Web.config.install.xdt index 35c4c4846d..e482eb5d6e 100644 --- a/build/NuSpecs/tools/Web.config.install.xdt +++ b/build/NuSpecs/tools/Web.config.install.xdt @@ -332,6 +332,7 @@ + @@ -389,6 +390,10 @@ + + + + diff --git a/src/Umbraco.Core/IO/MediaFileSystem.cs b/src/Umbraco.Core/IO/MediaFileSystem.cs index c57cf94cef..fc6490e8cd 100644 --- a/src/Umbraco.Core/IO/MediaFileSystem.cs +++ b/src/Umbraco.Core/IO/MediaFileSystem.cs @@ -159,7 +159,7 @@ namespace Umbraco.Core.IO // ReSharper disable once AssignNullToNotNullAttribute var filepath = UmbracoConfig.For.UmbracoSettings().Content.UploadAllowDirectories - ? Path.Combine(folder, filename) + ? Path.Combine(folder, filename).Replace('\\', '/') : folder + "-" + filename; return filepath; diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html index 3e40c79b7d..70a4ccb8b2 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/linkpicker/linkpicker.html @@ -6,7 +6,8 @@ placeholder="@general_url" class="umb-editor umb-textstring" ng-model="model.target.url" - ng-disabled="model.target.id"/> + ng-disabled="model.target.id" + focus-when="{{true}} "/> diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/fileupload/fileupload.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/fileupload/fileupload.controller.js index df21541f09..3c8170e54b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/fileupload/fileupload.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/fileupload/fileupload.controller.js @@ -138,15 +138,15 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag //cannot just check for !newVal because it might be an empty string which we //want to look for. if (newVal !== null && newVal !== undefined && newVal !== oldVal) { - //now we need to check if we need to re-initialize our structure which is kind of tricky - // since we only want to do that if the server has changed the value, not if this controller - // has changed the value. There's only 2 scenarios where we change the value internall so - // we know what those values can be, if they are not either of them, then we'll re-initialize. - - if (newVal.clearFiles !== true && newVal !== $scope.originalValue && !newVal.selectedFiles) { + // here we need to check if the value change needs to trigger an update in the UI. + // if the value is only changed in the controller and not in the server values, we do not + // want to trigger an update yet. + // we can however no longer rely on checking values in the controller vs. values from the server + // to determine whether to update or not, since you could potentially be uploading a file with + // the exact same name - in that case we need to reinitialize to show the newly uploaded file. + if (newVal.clearFiles !== true && !newVal.selectedFiles) { initialize($scope.rebuildInput.index + 1); } - } }); }; diff --git a/src/Umbraco.Web.UI/web.Template.config b/src/Umbraco.Web.UI/web.Template.config index 6ee7d3bfba..3a484944e6 100644 --- a/src/Umbraco.Web.UI/web.Template.config +++ b/src/Umbraco.Web.UI/web.Template.config @@ -433,6 +433,10 @@ + + + + diff --git a/src/Umbraco.Web/Editors/ContentControllerBase.cs b/src/Umbraco.Web/Editors/ContentControllerBase.cs index 6b8d570e5f..f67ce13950 100644 --- a/src/Umbraco.Web/Editors/ContentControllerBase.cs +++ b/src/Umbraco.Web/Editors/ContentControllerBase.cs @@ -57,7 +57,7 @@ namespace Umbraco.Web.Editors where TPersisted : IContentBase { //Don't update the name if it is empty - if (!contentItem.Name.IsNullOrWhiteSpace()) + if (contentItem.Name.IsNullOrWhiteSpace() == false) { contentItem.PersistedContent.Name = contentItem.Name; } diff --git a/src/Umbraco.Web/WebApi/Binders/ContentItemBinder.cs b/src/Umbraco.Web/WebApi/Binders/ContentItemBinder.cs index 5afc7cee19..a19123f35e 100644 --- a/src/Umbraco.Web/WebApi/Binders/ContentItemBinder.cs +++ b/src/Umbraco.Web/WebApi/Binders/ContentItemBinder.cs @@ -3,7 +3,6 @@ using AutoMapper; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Web.Models.ContentEditing; -using Umbraco.Web.Models.Mapping; namespace Umbraco.Web.WebApi.Binders { @@ -33,7 +32,7 @@ namespace Umbraco.Web.WebApi.Binders var contentType = ApplicationContext.Services.ContentTypeService.GetContentType(model.ContentTypeAlias); if (contentType == null) { - throw new InvalidOperationException("No content type found wth alias " + model.ContentTypeAlias); + throw new InvalidOperationException("No content type found with alias " + model.ContentTypeAlias); } return new Content(model.Name, model.ParentId, contentType); } diff --git a/src/Umbraco.Web/WebApi/Binders/MediaItemBinder.cs b/src/Umbraco.Web/WebApi/Binders/MediaItemBinder.cs index 726994d43e..0196c5c6f6 100644 --- a/src/Umbraco.Web/WebApi/Binders/MediaItemBinder.cs +++ b/src/Umbraco.Web/WebApi/Binders/MediaItemBinder.cs @@ -3,7 +3,6 @@ using AutoMapper; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Web.Models.ContentEditing; -using Umbraco.Web.Models.Mapping; namespace Umbraco.Web.WebApi.Binders { @@ -29,12 +28,12 @@ namespace Umbraco.Web.WebApi.Binders protected override IMedia CreateNew(MediaItemSave model) { - var contentType = ApplicationContext.Services.ContentTypeService.GetMediaType(model.ContentTypeAlias); - if (contentType == null) + var mediaType = ApplicationContext.Services.ContentTypeService.GetMediaType(model.ContentTypeAlias); + if (mediaType == null) { - throw new InvalidOperationException("No content type found wth alias " + model.ContentTypeAlias); + throw new InvalidOperationException("No media type found with alias " + model.ContentTypeAlias); } - return new Core.Models.Media(model.Name, model.ParentId, contentType); + return new Core.Models.Media(model.Name, model.ParentId, mediaType); } protected override ContentItemDto MapFromPersisted(MediaItemSave model)