From 472c9d3a88180b474c98a015914154110cb054b1 Mon Sep 17 00:00:00 2001 From: Tom Fulton Date: Tue, 29 Apr 2014 01:00:36 -0600 Subject: [PATCH 01/94] Fix U4-4779: Media Picker not working as single picker --- .../propertyeditors/mediapicker/mediapicker.controller.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js index 05951232f3..e17a03473c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js @@ -4,7 +4,7 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl function($rootScope, $scope, dialogService, mediaResource, mediaHelper, $timeout) { //check the pre-values for multi-picker - var multiPicker = $scope.model.config.multiPicker !== '0' ? true : false; + var multiPicker = $scope.model.config.multiPicker && $scope.model.config.multiPicker !== '0' ? true : false; if (!$scope.model.config.startNodeId) $scope.model.config.startNodeId = -1; @@ -110,4 +110,4 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl setupViewModel(); }; - }); \ No newline at end of file + }); From aec862a9de5ab25b88287117a26ae6817684c920 Mon Sep 17 00:00:00 2001 From: Mads Krohn Date: Tue, 6 May 2014 13:02:47 +0200 Subject: [PATCH 02/94] Fix for issue U4-4826 When editing an existing link in tinymce the following error is thrown: Could not find the tree content, activeTree has not been set This is caused by passing a wrong value as parameter to the doLoad method in the loadActiveTree function. --- .../src/common/directives/umbtree.directive.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js index c3dc6ddb9c..091b18da83 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js @@ -204,7 +204,7 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat } else { scope.eventhandler.one("treeLoaded", function(e, args) { - doLoad(args.tree); + doLoad(args.tree.root); }); } } @@ -376,4 +376,4 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat }; } -angular.module("umbraco.directives").directive('umbTree', umbTreeDirective); \ No newline at end of file +angular.module("umbraco.directives").directive('umbTree', umbTreeDirective); From 62c3bf6afe0a151c8c0759a01ac7807c580c573a Mon Sep 17 00:00:00 2001 From: Mads Krohn Date: Tue, 6 May 2014 13:39:11 +0200 Subject: [PATCH 03/94] Fix for issue U4-4827 I simply placed the container a little higher up, just above the Save and Publish buttons. --- src/Umbraco.Web.UI.Client/src/less/grid.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/grid.less b/src/Umbraco.Web.UI.Client/src/less/grid.less index 8a0022a558..f900228c41 100644 --- a/src/Umbraco.Web.UI.Client/src/less/grid.less +++ b/src/Umbraco.Web.UI.Client/src/less/grid.less @@ -156,7 +156,7 @@ body { #speechbubble { z-index: 1000; position: absolute; - bottom: 40px; + bottom: 100px; left: 0; right: 0; border-bottom: none; From 5fa128697bc1764b3fb9a2b6579753b7a6848cba Mon Sep 17 00:00:00 2001 From: Rusty Swayne Date: Tue, 6 May 2014 10:04:14 -0700 Subject: [PATCH 04/94] Makes HasCurrent property protected on ResolverBase. #U4-4829 --- src/Umbraco.Core/ObjectResolution/ResolverBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Core/ObjectResolution/ResolverBase.cs b/src/Umbraco.Core/ObjectResolution/ResolverBase.cs index d6bf59351d..b1509d2b40 100644 --- a/src/Umbraco.Core/ObjectResolution/ResolverBase.cs +++ b/src/Umbraco.Core/ObjectResolution/ResolverBase.cs @@ -88,7 +88,7 @@ namespace Umbraco.Core.ObjectResolution /// Gets a value indicating whether a the singleton nstance has been set. /// /// To be used in unit tests. - internal static bool HasCurrent + protected static bool HasCurrent { get { From c38c2ede11158686edd30d5a422da15ba21ec99b Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 7 May 2014 23:55:20 +1000 Subject: [PATCH 05/94] Fixes: U4-4211 User without media section permission will be logged out immediately when accessing a document type using a media picker datatype (u7.0.3) - this is done by using the entityResource in the mediaPicker but to do this we need to return a cut down version of the media properties in the additionalData which is tricky because the cropper stores json which is ntext and the existing sql didn't cater for this. This also cleans up the entity service and we no longer have this internal collection of properties, everything is just added to additionalData, then had to add mediaHelper method to deal with getting urls from a media 'entity' not just a media object. --- src/Umbraco.Core/Models/UmbracoEntity.cs | 34 ++- .../Factories/UmbracoEntityFactory.cs | 15 +- .../Repositories/EntityRepository.cs | 211 ++++++++++++------ src/Umbraco.Core/StringExtensions.cs | 23 ++ .../Models/UmbracoEntityTests.cs | 15 +- .../Services/EntityServiceTests.cs | 22 +- .../common/services/mediahelper.service.js | 79 +++++-- .../fileupload/fileupload.controller.js | 6 +- .../imagecropper/imagecropper.controller.js | 6 +- .../mediapicker/mediapicker.controller.js | 28 ++- src/Umbraco.Web/Editors/EntityController.cs | 3 +- src/Umbraco.Web/Editors/ImagesController.cs | 2 + .../WebServices/FolderBrowserService.cs | 11 +- .../umbraco/Trees/BaseMediaTree.cs | 115 +++++----- 14 files changed, 378 insertions(+), 192 deletions(-) diff --git a/src/Umbraco.Core/Models/UmbracoEntity.cs b/src/Umbraco.Core/Models/UmbracoEntity.cs index 92bdf3c790..23a6bcfe5b 100644 --- a/src/Umbraco.Core/Models/UmbracoEntity.cs +++ b/src/Umbraco.Core/Models/UmbracoEntity.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Reflection; +using System.Runtime.CompilerServices; using Umbraco.Core.Models.EntityBase; namespace Umbraco.Core.Models @@ -47,13 +48,11 @@ namespace Umbraco.Core.Models public UmbracoEntity() { AdditionalData = new Dictionary(); - UmbracoProperties = new List(); } public UmbracoEntity(bool trashed) { AdditionalData = new Dictionary(); - UmbracoProperties = new List(); Trashed = trashed; } @@ -61,7 +60,6 @@ namespace Umbraco.Core.Models public UmbracoEntity(UInt64 trashed) { AdditionalData = new Dictionary(); - UmbracoProperties = new List(); Trashed = trashed == 1; } @@ -287,15 +285,31 @@ namespace Umbraco.Core.Models } } + public override object DeepClone() + { + var clone = (UmbracoEntity) base.DeepClone(); + + //This ensures that any value in the dictionary that is deep cloneable is cloned too + foreach (var key in clone.AdditionalData.Keys.ToArray()) + { + var deepCloneable = clone.AdditionalData[key] as IDeepCloneable; + if (deepCloneable != null) + { + clone.AdditionalData[key] = deepCloneable.DeepClone(); + } + } + + return clone; + } + /// - /// Some entities may expose additional data that other's might not, this custom data will be available in this collection + /// A struction that can be contained in the additional data of an UmbracoEntity representing + /// a user defined property /// - public IList UmbracoProperties { get; set; } - - internal class UmbracoProperty : IDeepCloneable + public class EntityProperty : IDeepCloneable { public string PropertyEditorAlias { get; set; } - public string Value { get; set; } + public object Value { get; set; } public object DeepClone() { //Memberwise clone on Entity will work since it doesn't have any deep elements @@ -304,7 +318,7 @@ namespace Umbraco.Core.Models return clone; } - protected bool Equals(UmbracoProperty other) + protected bool Equals(EntityProperty other) { return PropertyEditorAlias.Equals(other.PropertyEditorAlias) && string.Equals(Value, other.Value); } @@ -314,7 +328,7 @@ namespace Umbraco.Core.Models if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != this.GetType()) return false; - return Equals((UmbracoProperty) obj); + return Equals((EntityProperty) obj); } public override int GetHashCode() diff --git a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs index db1a99bc45..f33ae1af2f 100644 --- a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs @@ -44,7 +44,6 @@ namespace Umbraco.Core.Persistence.Factories ContentTypeAlias = asDictionary.ContainsKey("alias") ? (d.alias ?? string.Empty) : string.Empty, ContentTypeIcon = asDictionary.ContainsKey("icon") ? (d.icon ?? string.Empty) : string.Empty, ContentTypeThumbnail = asDictionary.ContainsKey("thumbnail") ? (d.thumbnail ?? string.Empty) : string.Empty, - UmbracoProperties = new List() }; var publishedVersion = default(Guid); @@ -87,7 +86,6 @@ namespace Umbraco.Core.Persistence.Factories ContentTypeAlias = dto.Alias ?? string.Empty, ContentTypeIcon = dto.Icon ?? string.Empty, ContentTypeThumbnail = dto.Thumbnail ?? string.Empty, - UmbracoProperties = new List() }; entity.IsPublished = dto.PublishedVersion != default(Guid) || (dto.NewestVersion != default(Guid) && dto.PublishedVersion == dto.NewestVersion); @@ -98,12 +96,13 @@ namespace Umbraco.Core.Persistence.Factories { foreach (var propertyDto in dto.UmbracoPropertyDtos) { - entity.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty - { - PropertyEditorAlias = - propertyDto.PropertyEditorAlias, - Value = propertyDto.UmbracoFile - }); + entity.AdditionalData[propertyDto.PropertyAlias] = new UmbracoEntity.EntityProperty + { + PropertyEditorAlias = propertyDto.PropertyEditorAlias, + Value = propertyDto.NTextValue.IsNullOrWhiteSpace() + ? propertyDto.NVarcharValue + : propertyDto.NTextValue.ConvertToJsonIfPossible() + }; } } diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs index 7336e36ab7..5f721f7141 100644 --- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs @@ -66,15 +66,31 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); - var sql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, key).Append(GetGroupBy(isContent, isMedia)); - var nodeDto = _work.Database.FirstOrDefault(sql); - if (nodeDto == null) - return null; - var factory = new UmbracoEntityFactory(); - var entity = factory.BuildEntityFromDynamic(nodeDto); + var sql = GetFullSqlForEntityType(key, isContent, isMedia, objectTypeId); + + if (isMedia) + { + //for now treat media differently + //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields + var entities = _work.Database.Fetch( + new UmbracoEntityRelator().Map, sql); - return entity; + return entities.FirstOrDefault(); + } + else + { + var nodeDto = _work.Database.FirstOrDefault(sql); + if (nodeDto == null) + return null; + + var factory = new UmbracoEntityFactory(); + var entity = factory.BuildEntityFromDynamic(nodeDto); + + return entity; + } + + } public virtual IUmbracoEntity Get(int id) @@ -94,16 +110,31 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); - var sql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, id).Append(GetGroupBy(isContent, isMedia)); - var nodeDto = _work.Database.FirstOrDefault(sql); - if (nodeDto == null) - return null; + var sql = GetFullSqlForEntityType(id, isContent, isMedia, objectTypeId); + + if (isMedia) + { + //for now treat media differently + //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields + var entities = _work.Database.Fetch( + new UmbracoEntityRelator().Map, sql); - var factory = new UmbracoEntityFactory(); - var entity = factory.BuildEntityFromDynamic(nodeDto); + return entities.FirstOrDefault(); + } + else + { + var nodeDto = _work.Database.FirstOrDefault(sql); + if (nodeDto == null) + return null; - return entity; + var factory = new UmbracoEntityFactory(); + var entity = factory.BuildEntityFromDynamic(nodeDto); + + return entity; + } + + } public virtual IEnumerable GetAll(Guid objectTypeId, params int[] ids) @@ -119,8 +150,8 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); - var sql = GetBaseWhere(GetBase, isContent, isMedia, string.Empty, objectTypeId).Append(GetGroupBy(isContent, isMedia)); - + var sql = GetFullSqlForEntityType(isContent, isMedia, objectTypeId, string.Empty); + var factory = new UmbracoEntityFactory(); if (isMedia) @@ -166,24 +197,28 @@ namespace Umbraco.Core.Persistence.Repositories bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); var wheres = string.Concat(" AND ", string.Join(" AND ", ((Query)query).WhereClauses())); + var sqlClause = GetBaseWhere(GetBase, isContent, isMedia, wheres, objectTypeId); + var translator = new SqlTranslator(sqlClause, query); - var sql = translator.Translate().Append(GetGroupBy(isContent, isMedia)); + var entitySql = translator.Translate(); var factory = new UmbracoEntityFactory(); if (isMedia) { + var mediaSql = GetFullSqlForMedia(entitySql, wheres); + //treat media differently for now //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields var entities = _work.Database.Fetch( - new UmbracoEntityRelator().Map, sql); + new UmbracoEntityRelator().Map, mediaSql); return entities; } else { //use dynamic so that we can get ALL properties from the SQL so we can chuck that data into our AdditionalData - var dtos = _work.Database.Fetch(sql); + var dtos = _work.Database.Fetch(entitySql.Append(GetGroupBy(isContent, false))); return dtos.Select(factory.BuildEntityFromDynamic).Cast().ToList(); } } @@ -193,6 +228,62 @@ namespace Umbraco.Core.Persistence.Repositories #region Sql Statements + protected Sql GetFullSqlForEntityType(Guid key, bool isContent, bool isMedia, Guid objectTypeId) + { + var entitySql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, key); + + if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); + + return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); + } + + protected Sql GetFullSqlForEntityType(int id, bool isContent, bool isMedia, Guid objectTypeId) + { + var entitySql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, id); + + if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); + + return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); + } + + protected Sql GetFullSqlForEntityType(bool isContent, bool isMedia, Guid objectTypeId, string additionalWhereClause) + { + var entitySql = GetBaseWhere(GetBase, isContent, isMedia, additionalWhereClause, objectTypeId); + + if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); + + return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); + } + + private Sql GetFullSqlForMedia(Sql entitySql, string additionWhereStatement = "") + { + //this will add any dataNvarchar property to the output which can be added to the additional properties + + var joinSql = new Sql() + .Select("contentNodeId, versionId, dataNvarchar, dataNtext, propertyEditorAlias, alias as propertyTypeAlias") + .From() + .InnerJoin() + .On(dto => dto.NodeId, dto => dto.NodeId) + .InnerJoin() + .On(dto => dto.Id, dto => dto.PropertyTypeId) + .InnerJoin() + .On(dto => dto.DataTypeId, dto => dto.DataTypeId) + .Where("umbracoNode.nodeObjectType = @nodeObjectType" + additionWhereStatement, new {nodeObjectType = Constants.ObjectTypes.Media}); + + //We're going to create a query to query against the entity SQL + // because we cannot group by nText columns and we have a COUNT in the entitySql we cannot simply left join + // the entitySql query, we have to join the wrapped query to get the ntext in the result + + var wrappedSql = new Sql("SELECT * FROM (") + .Append(entitySql) + .Append(new Sql(") tmpTbl LEFT JOIN (")) + .Append(joinSql) + .Append(new Sql(") as property ON id = property.contentNodeId")) + .OrderBy("sortOrder"); + + return wrappedSql; + } + protected virtual Sql GetBase(bool isContent, bool isMedia, string additionWhereStatement = "") { var columns = new List @@ -221,13 +312,9 @@ namespace Umbraco.Core.Persistence.Repositories columns.Add("contenttype.isContainer"); } - if (isMedia) - { - columns.Add("property.dataNvarchar as umbracoFile"); - columns.Add("property.propertyEditorAlias"); - } + //Creates an SQL query to return a single row for the entity - var sql = new Sql() + var entitySql = new Sql() .Select(columns.ToArray()) .From("umbracoNode umbracoNode") .LeftJoin("umbracoNode parent").On("parent.parentID = umbracoNode.id"); @@ -235,7 +322,7 @@ namespace Umbraco.Core.Persistence.Repositories if (isContent || isMedia) { - sql.InnerJoin("cmsContent content").On("content.nodeId = umbracoNode.id") + entitySql.InnerJoin("cmsContent content").On("content.nodeId = umbracoNode.id") .LeftJoin("cmsContentType contenttype").On("contenttype.nodeId = content.contentType") .LeftJoin( "(SELECT nodeId, versionId FROM cmsDocument WHERE published = 1 GROUP BY nodeId, versionId) as published") @@ -245,18 +332,7 @@ namespace Umbraco.Core.Persistence.Repositories .On("umbracoNode.id = latest.nodeId"); } - if (isMedia) - { - sql.LeftJoin( - "(SELECT contentNodeId, versionId, dataNvarchar, propertyEditorAlias FROM cmsPropertyData " + - "INNER JOIN umbracoNode ON cmsPropertyData.contentNodeId = umbracoNode.id " + - "INNER JOIN cmsPropertyType ON cmsPropertyType.id = cmsPropertyData.propertytypeid " + - "INNER JOIN cmsDataType ON cmsPropertyType.dataTypeId = cmsDataType.nodeId "+ - "WHERE umbracoNode.nodeObjectType = '" + Constants.ObjectTypes.Media + "'" + additionWhereStatement + ") as property") - .On("umbracoNode.id = property.contentNodeId"); - } - - return sql; + return entitySql; } protected virtual Sql GetBaseWhere(Func baseQuery, bool isContent, bool isMedia, string additionWhereStatement, Guid nodeObjectType) @@ -298,7 +374,7 @@ namespace Umbraco.Core.Persistence.Repositories return sql; } - protected virtual Sql GetGroupBy(bool isContent, bool isMedia) + protected virtual Sql GetGroupBy(bool isContent, bool isMedia, bool includeSort = true) { var columns = new List { @@ -324,19 +400,18 @@ namespace Umbraco.Core.Persistence.Repositories columns.Add("contenttype.thumbnail"); columns.Add("contenttype.isContainer"); } + + var sql = new Sql() + .GroupBy(columns.ToArray()); - if (isMedia) + if (includeSort) { - columns.Add("property.dataNvarchar"); - columns.Add("property.propertyEditorAlias"); + sql = sql.OrderBy("umbracoNode.sortOrder"); } - var sql = new Sql() - .GroupBy(columns.ToArray()) - .OrderBy("umbracoNode.sortOrder"); return sql; } - + #endregion /// @@ -377,15 +452,21 @@ namespace Umbraco.Core.Persistence.Repositories [ResultColumn] public List UmbracoPropertyDtos { get; set; } } - + [ExplicitColumns] internal class UmbracoPropertyDto { [Column("propertyEditorAlias")] public string PropertyEditorAlias { get; set; } - [Column("umbracoFile")] - public string UmbracoFile { get; set; } + [Column("propertyTypeAlias")] + public string PropertyAlias { get; set; } + + [Column("dataNvarchar")] + public string NVarcharValue { get; set; } + + [Column("dataNtext")] + public string NTextValue { get; set; } } /// @@ -412,16 +493,15 @@ namespace Umbraco.Core.Persistence.Repositories // Is this the same UmbracoEntity as the current one we're processing if (Current != null && Current.Key == a.uniqueID) { - // Yes, just add this UmbracoProperty to the current UmbracoEntity's collection - if (Current.UmbracoProperties == null) + // Add this UmbracoProperty to the current additional data + Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty { - Current.UmbracoProperties = new List(); - } - Current.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty - { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.UmbracoFile - }); + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.NTextValue.IsNullOrWhiteSpace() + ? p.NVarcharValue + : p.NTextValue.ConvertToJsonIfPossible() + }; + // Return null to indicate we're not done with this UmbracoEntity yet return null; } @@ -437,14 +517,13 @@ namespace Umbraco.Core.Persistence.Repositories Current = _factory.BuildEntityFromDynamic(a); //add the property/create the prop list if null - Current.UmbracoProperties = new List - { - new UmbracoEntity.UmbracoProperty - { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.UmbracoFile - } - }; + Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty + { + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.NTextValue.IsNullOrWhiteSpace() + ? p.NVarcharValue + : p.NTextValue.ConvertToJsonIfPossible() + }; // Return the now populated previous UmbracoEntity (or null if first time through) return prev; diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index 395f9cea0c..d1b20cce30 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -10,6 +10,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Xml; +using Newtonsoft.Json; using Umbraco.Core.Configuration; using System.Web.Security; using Umbraco.Core.Strings; @@ -52,6 +53,28 @@ namespace Umbraco.Core || (input.StartsWith("[") && input.EndsWith("]")); } + /// + /// Returns a JObject/JArray instance if the string can be converted to json, otherwise returns the string + /// + /// + /// + internal static object ConvertToJsonIfPossible(this string input) + { + if (input.DetectIsJson() == false) + { + return input; + } + try + { + var obj = JsonConvert.DeserializeObject(input); + return obj; + } + catch (Exception ex) + { + return input; + } + } + internal static string ReplaceNonAlphanumericChars(this string input, char replacement) { //any character that is not alphanumeric, convert to a hyphen diff --git a/src/Umbraco.Tests/Models/UmbracoEntityTests.cs b/src/Umbraco.Tests/Models/UmbracoEntityTests.cs index ac70364e67..52513d551d 100644 --- a/src/Umbraco.Tests/Models/UmbracoEntityTests.cs +++ b/src/Umbraco.Tests/Models/UmbracoEntityTests.cs @@ -47,12 +47,13 @@ namespace Umbraco.Tests.Models }; item.AdditionalData.Add("test1", 3); item.AdditionalData.Add("test2", "valuie"); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + + item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty() { Value = "test", PropertyEditorAlias = "TestPropertyEditor" }); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty() { Value = "test2", PropertyEditorAlias = "TestPropertyEditor2" @@ -82,12 +83,6 @@ namespace Umbraco.Tests.Models Assert.AreEqual(clone.UpdateDate, item.UpdateDate); Assert.AreEqual(clone.AdditionalData.Count, item.AdditionalData.Count); Assert.AreEqual(clone.AdditionalData, item.AdditionalData); - Assert.AreEqual(clone.UmbracoProperties.Count, item.UmbracoProperties.Count); - for (var i = 0; i < clone.UmbracoProperties.Count; i++) - { - Assert.AreNotSame(clone.UmbracoProperties[i], item.UmbracoProperties[i]); - Assert.AreEqual(clone.UmbracoProperties[i], item.UmbracoProperties[i]); - } //This double verifies by reflection var allProps = clone.GetType().GetProperties(); @@ -125,12 +120,12 @@ namespace Umbraco.Tests.Models }; item.AdditionalData.Add("test1", 3); item.AdditionalData.Add("test2", "valuie"); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty() { Value = "test", PropertyEditorAlias = "TestPropertyEditor" }); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty() { Value = "test2", PropertyEditorAlias = "TestPropertyEditor2" diff --git a/src/Umbraco.Tests/Services/EntityServiceTests.cs b/src/Umbraco.Tests/Services/EntityServiceTests.cs index 82cc2c7560..9826e9fc3f 100644 --- a/src/Umbraco.Tests/Services/EntityServiceTests.cs +++ b/src/Umbraco.Tests/Services/EntityServiceTests.cs @@ -32,7 +32,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.Document); + var entities = service.GetAll(UmbracoObjectTypes.Document).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -45,7 +45,7 @@ namespace Umbraco.Tests.Services var service = ServiceContext.EntityService; var objectTypeId = new Guid(Constants.ObjectTypes.Document); - var entities = service.GetAll(objectTypeId); + var entities = service.GetAll(objectTypeId).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -57,7 +57,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(); + var entities = service.GetAll().ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -69,7 +69,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetChildren(-1, UmbracoObjectTypes.Document); + var entities = service.GetChildren(-1, UmbracoObjectTypes.Document).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -92,7 +92,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.DocumentType); + var entities = service.GetAll(UmbracoObjectTypes.DocumentType).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -104,7 +104,7 @@ namespace Umbraco.Tests.Services var service = ServiceContext.EntityService; var objectTypeId = new Guid(Constants.ObjectTypes.DocumentType); - var entities = service.GetAll(objectTypeId); + var entities = service.GetAll(objectTypeId).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -115,7 +115,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(); + var entities = service.GetAll().ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -126,16 +126,16 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.Media); + var entities = service.GetAll(UmbracoObjectTypes.Media).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(3)); - //Assert.That(entities.Any(x => ((UmbracoEntity)x).UmbracoFile != string.Empty), Is.True); + Assert.That( entities.Any( x => - ((UmbracoEntity) x).UmbracoProperties.Any( - y => y.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias)), Is.True); + x.AdditionalData.Any(y => y.Value is UmbracoEntity.EntityProperty + && ((UmbracoEntity.EntityProperty)y.Value).PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias)), Is.True); } private static bool _isSetup = false; diff --git a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js index 2e06bc1656..67dbcecc54 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js @@ -129,30 +129,79 @@ function mediaHelper(umbRequestHelper) { _mediaFileResolvers[propertyEditorAlias] = func; }, + /** + * @ngdoc function + * @name umbraco.services.mediaHelper#resolveFileFromEntity + * @methodOf umbraco.services.mediaHelper + * @function + * + * @description + * Gets the media file url for a media entity returned with the entityResource + * + * @param {object} mediaEntity A media Entity returned from the entityResource + * @param {boolean} thumbnail Whether to return the thumbnail url or normal url + */ + resolveFileFromEntity : function(mediaEntity, thumbnail) { + + if (!angular.isObject(mediaEntity.metaData)) { + throw "Cannot resolve the file url from the mediaEntity, it does not contain the required metaData"; + } + + var values = _.values(mediaEntity.metaData); + for (var i = 0; i < values.length; i++) { + var val = values[i]; + if (angular.isObject(val) && val.PropertyEditorAlias) { + for (var resolver in _mediaFileResolvers) { + if (val.PropertyEditorAlias === resolver) { + //we need to format a property variable that coincides with how the property would be structured + // if it came from the mediaResource just to keep things slightly easier for the file resolvers. + var property = { value: val.Value }; + + return _mediaFileResolvers[resolver](property, mediaEntity, thumbnail); + } + } + } + } + + return ""; + }, + + /** + * @ngdoc function + * @name umbraco.services.mediaHelper#resolveFile + * @methodOf umbraco.services.mediaHelper + * @function + * + * @description + * Gets the media file url for a media object returned with the mediaResource + * + * @param {object} mediaEntity A media Entity returned from the entityResource + * @param {boolean} thumbnail Whether to return the thumbnail url or normal url + */ /*jshint loopfunc: true */ resolveFile : function(mediaItem, thumbnail){ - var _props = []; - function _iterateProps(props){ - var result = null; + + function iterateProps(props){ + var res = null; for(var resolver in _mediaFileResolvers) { - var property = _.find(props, function(property){ return property.editor === resolver; }); + var property = _.find(props, function(prop){ return prop.editor === resolver; }); if(property){ - result = _mediaFileResolvers[resolver](property, mediaItem, thumbnail); + res = _mediaFileResolvers[resolver](property, mediaItem, thumbnail); break; } } - return result; + return res; } //we either have properties raw on the object, or spread out on tabs var result = ""; if(mediaItem.properties){ - result = _iterateProps(mediaItem.properties); + result = iterateProps(mediaItem.properties); }else if(mediaItem.tabs){ for(var tab in mediaItem.tabs) { if(mediaItem.tabs[tab].properties){ - result = _iterateProps(mediaItem.tabs[tab].properties); + result = iterateProps(mediaItem.tabs[tab].properties); if(result){ break; } @@ -164,26 +213,26 @@ function mediaHelper(umbRequestHelper) { /*jshint loopfunc: true */ hasFilePropertyType : function(mediaItem){ - function _iterateProps(props){ - var result = false; + function iterateProps(props){ + var res = false; for(var resolver in _mediaFileResolvers) { - var property = _.find(props, function(property){ return property.editor === resolver; }); + var property = _.find(props, function(prop){ return prop.editor === resolver; }); if(property){ - result = true; + res = true; break; } } - return result; + return res; } //we either have properties raw on the object, or spread out on tabs var result = false; if(mediaItem.properties){ - result = _iterateProps(mediaItem.properties); + result = iterateProps(mediaItem.properties); }else if(mediaItem.tabs){ for(var tab in mediaItem.tabs) { if(mediaItem.tabs[tab].properties){ - result = _iterateProps(mediaItem.tabs[tab].properties); + result = iterateProps(mediaItem.tabs[tab].properties); if(result){ break; } 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 0224853e7b..7aa65473a6 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 @@ -125,11 +125,15 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag angular.module("umbraco") .controller('Umbraco.PropertyEditors.FileUploadController', fileUploadController) .run(function(mediaHelper, umbRequestHelper){ - if(mediaHelper && mediaHelper.registerFileResolver){ + if (mediaHelper && mediaHelper.registerFileResolver) { + + //NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource + // they contain different data structures so if we need to query against it we need to be aware of this. mediaHelper.registerFileResolver("Umbraco.UploadField", function(property, entity, thumbnail){ if (thumbnail) { if (mediaHelper.detectIfImageByExtension(property.value)) { + var thumbnailUrl = umbRequestHelper.getApiUrl( "imagesApiBaseUrl", "GetBigThumbnail", diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js index abcdb0852f..7189ca504a 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js @@ -98,11 +98,14 @@ angular.module('umbraco') }) .run(function (mediaHelper, umbRequestHelper) { if (mediaHelper && mediaHelper.registerFileResolver) { + + //NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource + // they contain different data structures so if we need to query against it we need to be aware of this. mediaHelper.registerFileResolver("Umbraco.ImageCropper", function (property, entity, thumbnail) { if (property.value.src) { if (thumbnail === true) { - return property.value.src + "?width=600&mode=max"; + return property.value.src + "?width=500&mode=max"; } else { return property.value.src; @@ -114,6 +117,7 @@ angular.module('umbraco') if (thumbnail) { if (mediaHelper.detectIfImageByExtension(property.value)) { + var thumbnailUrl = umbRequestHelper.getApiUrl( "imagesApiBaseUrl", "GetBigThumbnail", diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js index 05951232f3..13e8103d09 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js @@ -1,7 +1,7 @@ //this controller simply tells the dialogs service to open a mediaPicker window //with a specified callback, this callback will receive an object with a selection on it angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerController", - function($rootScope, $scope, dialogService, mediaResource, mediaHelper, $timeout) { + function ($rootScope, $scope, dialogService, entityResource, mediaResource, mediaHelper, $timeout) { //check the pre-values for multi-picker var multiPicker = $scope.model.config.multiPicker !== '0' ? true : false; @@ -17,18 +17,24 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl if ($scope.model.value) { var ids = $scope.model.value.split(','); - mediaResource.getByIds(ids).then(function (medias) { - //img.media = media; + //NOTE: We need to use the entityResource NOT the mediaResource here because + // the mediaResource has server side auth configured for which the user must have + // access to the media section, if they don't they'll get auth errors. The entityResource + // acts differently in that it allows access if the user has access to any of the apps that + // might require it's use. Therefore we need to use the metatData property to get at the thumbnail + // value. + + entityResource.getByIds(ids, "Media").then(function (medias) { + _.each(medias, function (media, i) { //only show non-trashed items - if(media.parentId >= -1){ - if(!media.thumbnail){ - media.thumbnail = mediaHelper.resolveFile(media, true); + if (media.parentId >= -1) { + + if (!media.thumbnail) { + media.thumbnail = mediaHelper.resolveFileFromEntity(media, true); } - //media.src = mediaHelper.getImagePropertyValue({ imageModel: media }); - //media.thumbnail = mediaHelper.getThumbnailFromPath(media.src); $scope.images.push(media); $scope.ids.push(media.id); } @@ -60,10 +66,10 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl _.each(data, function(media, i) { - if(!media.thumbnail){ - media.thumbnail = mediaHelper.resolveFile(media, true); + if (!media.thumbnail) { + media.thumbnail = mediaHelper.resolveFileFromEntity(media, true); } - + $scope.images.push(media); $scope.ids.push(media.id); }); diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs index 52d60e566f..507c229122 100644 --- a/src/Umbraco.Web/Editors/EntityController.cs +++ b/src/Umbraco.Web/Editors/EntityController.cs @@ -531,8 +531,9 @@ namespace Umbraco.Web.Editors var objectType = ConvertToObjectType(entityType); if (objectType.HasValue) { - return ids.Select(id => Mapper.Map(Services.EntityService.Get(id, objectType.Value))) + var result = ids.Select(id => Mapper.Map(Services.EntityService.Get(id, objectType.Value))) .WhereNotNull(); + return result; } //now we need to convert the unknown ones switch (entityType) diff --git a/src/Umbraco.Web/Editors/ImagesController.cs b/src/Umbraco.Web/Editors/ImagesController.cs index 39b872af6d..54938be76d 100644 --- a/src/Umbraco.Web/Editors/ImagesController.cs +++ b/src/Umbraco.Web/Editors/ImagesController.cs @@ -104,6 +104,8 @@ namespace Umbraco.Web.Editors return GetResized(imagePath, width, Convert.ToString(width)); } + //TODO: We should delegate this to ImageProcessing + /// /// Gets a resized image - if the requested max width is greater than the original image, only the original image will be returned. /// diff --git a/src/Umbraco.Web/WebServices/FolderBrowserService.cs b/src/Umbraco.Web/WebServices/FolderBrowserService.cs index 2c8cff527d..bf5a3f1bd5 100644 --- a/src/Umbraco.Web/WebServices/FolderBrowserService.cs +++ b/src/Umbraco.Web/WebServices/FolderBrowserService.cs @@ -32,9 +32,14 @@ namespace Umbraco.Web.WebServices var entities = service.GetChildren(parentId, UmbracoObjectTypes.Media); foreach (UmbracoEntity entity in entities) { - var uploadFieldProperty = entity.UmbracoProperties.FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); - - var thumbnailUrl = uploadFieldProperty == null ? "" : ThumbnailProvidersResolver.Current.GetThumbnailUrl(uploadFieldProperty.Value); + var uploadFieldProperty = entity.AdditionalData + .Select(x => x.Value as UmbracoEntity.EntityProperty) + .Where(x => x != null) + .FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); + + //var uploadFieldProperty = entity.UmbracoProperties.FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); + + var thumbnailUrl = uploadFieldProperty == null ? "" : ThumbnailProvidersResolver.Current.GetThumbnailUrl((string)uploadFieldProperty.Value); var item = new { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs index 0b48f7a2e1..f72457d867 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs @@ -21,28 +21,28 @@ namespace umbraco.cms.presentation.Trees { [Obsolete("This is no longer used and will be removed from the codebase in the future")] - public abstract class BaseMediaTree : BaseTree - { + public abstract class BaseMediaTree : BaseTree + { private User _user; - public BaseMediaTree(string application) - : base(application) - { - - } + public BaseMediaTree(string application) + : base(application) + { + + } + + /// + /// Returns the current User. This ensures that we don't instantiate a new User object + /// each time. + /// + protected User CurrentUser + { + get + { + return (_user == null ? (_user = UmbracoEnsuredPage.CurrentUser) : _user); + } + } - /// - /// Returns the current User. This ensures that we don't instantiate a new User object - /// each time. - /// - protected User CurrentUser - { - get - { - return (_user == null ? (_user = UmbracoEnsuredPage.CurrentUser) : _user); - } - } - public override void RenderJS(ref StringBuilder Javascript) { if (!string.IsNullOrEmpty(this.FunctionToCall)) @@ -54,7 +54,7 @@ namespace umbraco.cms.presentation.Trees else if (!this.IsDialog) { Javascript.Append( - @" + @" function openMedia(id) { " + ClientTools.Scripts.GetContentFrame() + ".location.href = 'editMedia.aspx?id=' + id;" + @" } @@ -98,12 +98,12 @@ function openMedia(id) { // to call so that is fine. var entities = Services.EntityService.GetChildren(m_id, UmbracoObjectTypes.Media).ToArray(); - + foreach (UmbracoEntity entity in entities) { var e = entity; var xNode = PerformNodeRender(e.Id, entity.Name, e.HasChildren, e.ContentTypeIcon, e.ContentTypeAlias, () => GetLinkValue(e)); - + OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty); if (xNode != null) { @@ -111,7 +111,7 @@ function openMedia(id) { OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty); } } - } + } } private XmlTreeNode PerformNodeRender(int nodeId, string nodeName, bool hasChildren, string icon, string contentTypeAlias, Func getLinkValue) @@ -164,28 +164,28 @@ function openMedia(id) { return xNode; } - + /// - /// Returns the value for a link in WYSIWYG mode, by default only media items that have a - /// DataTypeUploadField are linkable, however, a custom tree can be created which overrides - /// this method, or another GUID for a custom data type can be added to the LinkableMediaDataTypes - /// list on application startup. - /// - /// - /// - /// + /// Returns the value for a link in WYSIWYG mode, by default only media items that have a + /// DataTypeUploadField are linkable, however, a custom tree can be created which overrides + /// this method, or another GUID for a custom data type can be added to the LinkableMediaDataTypes + /// list on application startup. + /// + /// + /// + /// public virtual string GetLinkValue(Media dd, string nodeLink) { var props = dd.GenericProperties; - foreach (Property p in props) - { - Guid currId = p.PropertyType.DataTypeDefinition.DataType.Id; - if (LinkableMediaDataTypes.Contains(currId) && string.IsNullOrEmpty(p.Value.ToString()) == false) - { - return p.Value.ToString(); - } - } + foreach (Property p in props) + { + Guid currId = p.PropertyType.DataTypeDefinition.DataType.Id; + if (LinkableMediaDataTypes.Contains(currId) && string.IsNullOrEmpty(p.Value.ToString()) == false) + { + return p.Value.ToString(); + } + } return ""; } @@ -200,29 +200,34 @@ function openMedia(id) { /// internal virtual string GetLinkValue(UmbracoEntity entity) { - foreach (var property in entity.UmbracoProperties) + foreach (var property in entity.AdditionalData + .Select(x => x.Value as UmbracoEntity.EntityProperty) + .Where(x => x != null)) { + + //required for backwards compatibility with v7 with changing the GUID -> alias var controlId = LegacyPropertyEditorIdToAliasConverter.GetLegacyIdFromAlias(property.PropertyEditorAlias, LegacyPropertyEditorIdToAliasConverter.NotFoundLegacyIdResponseBehavior.ReturnNull); if (controlId != null) { - if (LinkableMediaDataTypes.Contains(controlId.Value) && - string.IsNullOrEmpty(property.Value) == false) - return property.Value; - } + if (LinkableMediaDataTypes.Contains(controlId.Value) + && string.IsNullOrEmpty((string)property.Value) == false) + + return property.Value.ToString(); + } } return ""; } - /// - /// By default, any media type that is to be "linkable" in the WYSIWYG editor must contain - /// a DataTypeUploadField data type which will ouput the value for the link, however, if - /// a developer wants the WYSIWYG editor to link to a custom media type, they will either have - /// to create their own media tree and inherit from this one and override the GetLinkValue - /// or add another GUID to the LinkableMediaDataType list on application startup that matches - /// the GUID of a custom data type. The order of property types on the media item definition will determine the output value. - /// - public static List LinkableMediaDataTypes { get; protected set; } + /// + /// By default, any media type that is to be "linkable" in the WYSIWYG editor must contain + /// a DataTypeUploadField data type which will ouput the value for the link, however, if + /// a developer wants the WYSIWYG editor to link to a custom media type, they will either have + /// to create their own media tree and inherit from this one and override the GetLinkValue + /// or add another GUID to the LinkableMediaDataType list on application startup that matches + /// the GUID of a custom data type. The order of property types on the media item definition will determine the output value. + /// + public static List LinkableMediaDataTypes { get; protected set; } /// /// Returns true if we can use the EntityService to render the tree or revert to the original way @@ -245,5 +250,5 @@ function openMedia(id) { } } - } + } } From 8c7adf80b2547a2c581f59057f0bad4bdc2619de Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 00:45:54 +1000 Subject: [PATCH 06/94] Fixes: U4-4573 7.0.4 Save and Send For Approval button not sending notification email --- src/Umbraco.Web/Strategies/NotificationsHandler.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Umbraco.Web/Strategies/NotificationsHandler.cs b/src/Umbraco.Web/Strategies/NotificationsHandler.cs index dc77a7b745..3eb750c1fd 100644 --- a/src/Umbraco.Web/Strategies/NotificationsHandler.cs +++ b/src/Umbraco.Web/Strategies/NotificationsHandler.cs @@ -22,6 +22,10 @@ namespace Umbraco.Web.Strategies { base.ApplicationStarted(umbracoApplication, applicationContext); + ContentService.SentToPublish += (sender, args) => + applicationContext.Services.NotificationService.SendNotification( + args.Entity, ActionToPublish.Instance, applicationContext); + //Send notifications for the published action ContentService.Published += (sender, args) => args.PublishedEntities.ForEach( From 6e2493854af6eee1d52e796ec8fe3282a8f6c1ad Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 11:22:44 +1000 Subject: [PATCH 07/94] makes Reset protected internal on ResolverBase --- src/Umbraco.Core/ObjectResolution/ResolverBase.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Core/ObjectResolution/ResolverBase.cs b/src/Umbraco.Core/ObjectResolution/ResolverBase.cs index b1509d2b40..4b3b21082c 100644 --- a/src/Umbraco.Core/ObjectResolution/ResolverBase.cs +++ b/src/Umbraco.Core/ObjectResolution/ResolverBase.cs @@ -85,10 +85,9 @@ namespace Umbraco.Core.ObjectResolution } /// - /// Gets a value indicating whether a the singleton nstance has been set. + /// Gets a value indicating whether a the singleton instance has been set. /// - /// To be used in unit tests. - protected static bool HasCurrent + public static bool HasCurrent { get { @@ -102,9 +101,13 @@ namespace Umbraco.Core.ObjectResolution /// /// Resets the resolver singleton instance to null. /// - /// To be used in unit tests. - /// By default this is true because we always need to reset resolution before we reset a resolver, however in some insanely rare cases like unit testing you might not want to do this. - internal static void Reset(bool resetResolution = true) + /// + /// To be used in unit tests. DO NOT USE THIS DURING PRODUCTION. + /// + /// + /// By default this is true because we always need to reset resolution before we reset a resolver, however in some insanely rare cases like unit testing you might not want to do this. + /// + protected internal static void Reset(bool resetResolution = true) { //In order to reset a resolver, we always must reset the resolution From 7c30f26505141bdfbd8aa55c0bc36053fa561f25 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 11:38:05 +1000 Subject: [PATCH 08/94] Fixes: U4-4845 Publicize INotificationService --- src/Umbraco.Core/Models/Notification.cs | 2 +- src/Umbraco.Core/Services/INotificationService.cs | 2 +- src/Umbraco.Core/Services/NotificationService.cs | 2 +- src/Umbraco.Core/Services/ServiceContext.cs | 10 ++++++++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/Models/Notification.cs b/src/Umbraco.Core/Models/Notification.cs index e5d3236b5e..351b60039e 100644 --- a/src/Umbraco.Core/Models/Notification.cs +++ b/src/Umbraco.Core/Models/Notification.cs @@ -5,7 +5,7 @@ using System.Text; namespace Umbraco.Core.Models { - internal class Notification + public class Notification { public Notification(int entityId, int userId, string action, Guid entityType) { diff --git a/src/Umbraco.Core/Services/INotificationService.cs b/src/Umbraco.Core/Services/INotificationService.cs index 4be6d17f0d..c067b2d615 100644 --- a/src/Umbraco.Core/Services/INotificationService.cs +++ b/src/Umbraco.Core/Services/INotificationService.cs @@ -13,7 +13,7 @@ using umbraco.interfaces; namespace Umbraco.Core.Services { - internal interface INotificationService : IService + public interface INotificationService : IService { /// /// Sends the notifications for the specified user regarding the specified node and action. diff --git a/src/Umbraco.Core/Services/NotificationService.cs b/src/Umbraco.Core/Services/NotificationService.cs index b59f672590..6dd9017924 100644 --- a/src/Umbraco.Core/Services/NotificationService.cs +++ b/src/Umbraco.Core/Services/NotificationService.cs @@ -19,7 +19,7 @@ using umbraco.interfaces; namespace Umbraco.Core.Services { - internal class NotificationService : INotificationService + public class NotificationService : INotificationService { private readonly IDatabaseUnitOfWorkProvider _uowProvider; private readonly IUserService _userService; diff --git a/src/Umbraco.Core/Services/ServiceContext.cs b/src/Umbraco.Core/Services/ServiceContext.cs index 7a9add5c2e..f358e41bf3 100644 --- a/src/Umbraco.Core/Services/ServiceContext.cs +++ b/src/Umbraco.Core/Services/ServiceContext.cs @@ -48,6 +48,10 @@ namespace Umbraco.Core.Services /// /// /// + /// + /// + /// + /// public ServiceContext( IContentService contentService, IMediaService mediaService, @@ -64,7 +68,8 @@ namespace Umbraco.Core.Services IUserService userService, ISectionService sectionService, IApplicationTreeService treeService, - ITagService tagService) + ITagService tagService, + INotificationService notificationService) { _tagService = new Lazy(() => tagService); _contentService = new Lazy(() => contentService); @@ -82,6 +87,7 @@ namespace Umbraco.Core.Services _treeService = new Lazy(() => treeService); _memberService = new Lazy(() => memberService); _userService = new Lazy(() => userService); + _notificationService = new Lazy(() => notificationService); } @@ -174,7 +180,7 @@ namespace Umbraco.Core.Services /// /// Gets the /// - internal INotificationService NotificationService + public INotificationService NotificationService { get { return _notificationService.Value; } } From 22b506e2fb44f20330c35bcd8440794f4825ebbf Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 12:26:59 +1000 Subject: [PATCH 09/94] Fixes: U4-4827 The new speechbubble container is placed over the save and publish buttons --- .../views/directives/umb-notifications.html | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html b/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html index 6ee35ae342..300bd4cda6 100644 --- a/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html +++ b/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html @@ -1,18 +1,18 @@ From c47f9ae26de6a7eb91603fae9d7ef998339c5b0f Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 16:57:29 +1000 Subject: [PATCH 10/94] Fixes: U4-4835 If you've changed data on a content item and then attempt to logout, the 'discard changes' dialog pops up however the logout continues but the URL and view remains --- .../validation/valformmanager.directive.js | 46 +- .../src/common/services/events.service.js | 3 +- .../src/common/services/user.service.js | 430 +++++++++--------- .../src/less/alerts.less | 2 +- src/Umbraco.Web.UI.Client/src/routes.js | 31 +- .../views/common/dialogs/user.controller.js | 14 +- .../confirmroutechange.controller.js | 13 +- .../views/directives/umb-notifications.html | 4 +- src/umbraco.businesslogic/UmbracoSettings.cs | 2 +- 9 files changed, 294 insertions(+), 251 deletions(-) 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 97415c2838..2e5aa52e80 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 @@ -12,7 +12,7 @@ * Another thing this directive does is to ensure that any .control-group that contains form elements that are invalid will * be marked with the 'error' css class. This ensures that labels included in that control group are styled correctly. **/ -function valFormManager(serverValidationManager, $rootScope, $log, $timeout, notificationsService) { +function valFormManager(serverValidationManager, $rootScope, $log, $timeout, notificationsService, eventsService) { return { require: "form", restrict: "A", @@ -57,29 +57,33 @@ function valFormManager(serverValidationManager, $rootScope, $log, $timeout, not formCtrl.$setPristine(); }); - //if we wish to turn of the unsaved changes confirmation msg - //this is the place to do it - var locationEvent = $rootScope.$on('$locationChangeStart', function (event, nextLocation, currentLocation) { - if (!formCtrl.$dirty) { - return; - } - - var path = nextLocation.split("#")[1]; - if (path) { - if (path.indexOf("%253") || path.indexOf("%252")) { - path = decodeURIComponent(path); - } + //This handles the 'unsaved changes' dialog which is triggered when a route is attempting to be changed but + // the form has pending changes + var locationEvent = $rootScope.$on('$locationChangeStart', function(event, nextLocation, currentLocation) { + if (!formCtrl.$dirty) { + return; + } - if(!notificationsService.hasView()){ - var msg = { view: "confirmroutechange", args: { path: path, listener: locationEvent } }; - notificationsService.add(msg); - } - - event.preventDefault(); + var path = nextLocation.split("#")[1]; + if (path) { + if (path.indexOf("%253") || path.indexOf("%252")) { + path = decodeURIComponent(path); } - + + if (!notificationsService.hasView()) { + var msg = { view: "confirmroutechange", args: { path: path, listener: locationEvent } }; + notificationsService.add(msg); + } + + //prevent the route! + event.preventDefault(); + + //raise an event + eventsService.emit("valFormManager.pendingChanges", true); + } + }); - + //Ensure to remove the event handler when this instance is destroyted scope.$on('$destroy', function() { if(locationEvent){ locationEvent(); diff --git a/src/Umbraco.Web.UI.Client/src/common/services/events.service.js b/src/Umbraco.Web.UI.Client/src/common/services/events.service.js index d050b62961..5c1f606614 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/events.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/events.service.js @@ -18,7 +18,8 @@ function eventsService($q, $rootScope) { //there are no listeners if (!$rootScope.$$listeners[name]) { - return []; + return; + //return []; } //send the event diff --git a/src/Umbraco.Web.UI.Client/src/common/services/user.service.js b/src/Umbraco.Web.UI.Client/src/common/services/user.service.js index 3398ad1cb3..0094aec8ad 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/user.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/user.service.js @@ -1,256 +1,250 @@ angular.module('umbraco.services') -.factory('userService', function ($rootScope, eventsService, $q, $location, $log, securityRetryQueue, authResource, dialogService, $timeout, angularHelper) { + .factory('userService', function ($rootScope, eventsService, $q, $location, $log, securityRetryQueue, authResource, dialogService, $timeout, angularHelper) { - var currentUser = null; - var lastUserId = null; - var loginDialog = null; - //this tracks the last date/time that the user's remainingAuthSeconds was updated from the server - // this is used so that we know when to go and get the user's remaining seconds directly. - var lastServerTimeoutSet = null; + var currentUser = null; + var lastUserId = null; + var loginDialog = null; + //this tracks the last date/time that the user's remainingAuthSeconds was updated from the server + // this is used so that we know when to go and get the user's remaining seconds directly. + var lastServerTimeoutSet = null; - // Redirect to the given url (defaults to '/') - function redirect(url) { - url = url || '/'; - $location.path(url); - } - - function openLoginDialog(isTimedOut) { - if (!loginDialog) { - loginDialog = dialogService.open({ - template: 'views/common/dialogs/login.html', - modalClass: "login-overlay", - animation: "slide", - show: true, - callback: onLoginDialogClose, - dialogData: { - isTimedOut: isTimedOut - } - }); - } - } - - function onLoginDialogClose(success) { - loginDialog = null; - - if (success) { - securityRetryQueue.retryAll(); - } else { - securityRetryQueue.cancelAll(); - redirect(); - } - } - - /** - This methods will set the current user when it is resolved and - will then start the counter to count in-memory how many seconds they have - remaining on the auth session - */ - function setCurrentUser(usr) { - if (!usr.remainingAuthSeconds) { - throw "The user object is invalid, the remainingAuthSeconds is required."; - } - currentUser = usr; - lastServerTimeoutSet = new Date(); - //start the timer - countdownUserTimeout(); - } - - /** - Method to count down the current user's timeout seconds, - this will continually count down their current remaining seconds every 2 seconds until - there are no more seconds remaining. - */ - function countdownUserTimeout() { - - $timeout(function () { - - if (currentUser) { - //countdown by 2 seconds since that is how long our timer is for. - currentUser.remainingAuthSeconds -= 2; - - //if there are more than 30 remaining seconds, recurse! - if (currentUser.remainingAuthSeconds > 30) { - - //we need to check when the last time the timeout was set from the server, if - // it has been more than 30 seconds then we'll manually go and retrieve it from the - // server - this helps to keep our local countdown in check with the true timeout. - if (lastServerTimeoutSet != null) { - var now = new Date(); - var seconds = (now.getTime() - lastServerTimeoutSet.getTime()) / 1000; - - if (seconds > 30) { - - //first we'll set the lastServerTimeoutSet to null - this is so we don't get back in to this loop while we - // wait for a response from the server otherwise we'll be making double/triple/etc... calls while we wait. - lastServerTimeoutSet = null; - - //now go get it from the server - //NOTE: the safeApply because our timeout is set to not run digests (performance reasons) - angularHelper.safeApply($rootScope, function() { - authResource.getRemainingTimeoutSeconds().then(function (result) { - setUserTimeoutInternal(result); - }); - }); - } + function openLoginDialog(isTimedOut) { + if (!loginDialog) { + loginDialog = dialogService.open({ + template: 'views/common/dialogs/login.html', + modalClass: "login-overlay", + animation: "slide", + show: true, + callback: onLoginDialogClose, + dialogData: { + isTimedOut: isTimedOut } + }); + } + } - //recurse the countdown! - countdownUserTimeout(); - } - else { + function onLoginDialogClose(success) { + loginDialog = null; - //we are either timed out or very close to timing out so we need to show the login dialog. - if (Umbraco.Sys.ServerVariables.umbracoSettings.keepUserLoggedIn !== true) { - //NOTE: the safeApply because our timeout is set to not run digests (performance reasons) - angularHelper.safeApply($rootScope, function () { - userAuthExpired(); - }); - } - else { - //we've got less than 30 seconds remaining so let's check the server + if (success) { + securityRetryQueue.retryAll(); + } + else { + securityRetryQueue.cancelAll(); + $location.path('/'); + } + } + /** + This methods will set the current user when it is resolved and + will then start the counter to count in-memory how many seconds they have + remaining on the auth session + */ + function setCurrentUser(usr) { + if (!usr.remainingAuthSeconds) { + throw "The user object is invalid, the remainingAuthSeconds is required."; + } + currentUser = usr; + lastServerTimeoutSet = new Date(); + //start the timer + countdownUserTimeout(); + } + + /** + Method to count down the current user's timeout seconds, + this will continually count down their current remaining seconds every 2 seconds until + there are no more seconds remaining. + */ + function countdownUserTimeout() { + + $timeout(function () { + + if (currentUser) { + //countdown by 2 seconds since that is how long our timer is for. + currentUser.remainingAuthSeconds -= 2; + + //if there are more than 30 remaining seconds, recurse! + if (currentUser.remainingAuthSeconds > 30) { + + //we need to check when the last time the timeout was set from the server, if + // it has been more than 30 seconds then we'll manually go and retrieve it from the + // server - this helps to keep our local countdown in check with the true timeout. if (lastServerTimeoutSet != null) { - //first we'll set the lastServerTimeoutSet to null - this is so we don't get back in to this loop while we - // wait for a response from the server otherwise we'll be making double/triple/etc... calls while we wait. - lastServerTimeoutSet = null; + var now = new Date(); + var seconds = (now.getTime() - lastServerTimeoutSet.getTime()) / 1000; - //now go get it from the server - //NOTE: the safeApply because our timeout is set to not run digests (performance reasons) - angularHelper.safeApply($rootScope, function() { - authResource.getRemainingTimeoutSeconds().then(function (result) { - setUserTimeoutInternal(result); + if (seconds > 30) { + + //first we'll set the lastServerTimeoutSet to null - this is so we don't get back in to this loop while we + // wait for a response from the server otherwise we'll be making double/triple/etc... calls while we wait. + lastServerTimeoutSet = null; + + //now go get it from the server + //NOTE: the safeApply because our timeout is set to not run digests (performance reasons) + angularHelper.safeApply($rootScope, function () { + authResource.getRemainingTimeoutSeconds().then(function (result) { + setUserTimeoutInternal(result); + }); }); - }); + } } - + //recurse the countdown! countdownUserTimeout(); + } + else { + //we are either timed out or very close to timing out so we need to show the login dialog. + if (Umbraco.Sys.ServerVariables.umbracoSettings.keepUserLoggedIn !== true) { + //NOTE: the safeApply because our timeout is set to not run digests (performance reasons) + angularHelper.safeApply($rootScope, function () { + userAuthExpired(); + }); + } + else { + //we've got less than 30 seconds remaining so let's check the server + + if (lastServerTimeoutSet != null) { + //first we'll set the lastServerTimeoutSet to null - this is so we don't get back in to this loop while we + // wait for a response from the server otherwise we'll be making double/triple/etc... calls while we wait. + lastServerTimeoutSet = null; + + //now go get it from the server + //NOTE: the safeApply because our timeout is set to not run digests (performance reasons) + angularHelper.safeApply($rootScope, function () { + authResource.getRemainingTimeoutSeconds().then(function (result) { + setUserTimeoutInternal(result); + }); + }); + } + + //recurse the countdown! + countdownUserTimeout(); + + } } } + }, 2000, //every 2 seconds + false); //false = do NOT execute a digest for every iteration + } + + /** Called to update the current user's timeout */ + function setUserTimeoutInternal(newTimeout) { + + + var asNumber = parseFloat(newTimeout); + if (!isNaN(asNumber) && currentUser && angular.isNumber(asNumber)) { + currentUser.remainingAuthSeconds = newTimeout; + lastServerTimeoutSet = new Date(); } - }, 2000, //every 2 seconds - false); //false = do NOT execute a digest for every iteration - } - - /** Called to update the current user's timeout */ - function setUserTimeoutInternal(newTimeout) { - - - var asNumber = parseFloat(newTimeout); - if (!isNaN(asNumber) && currentUser && angular.isNumber(asNumber)) { - currentUser.remainingAuthSeconds = newTimeout; - lastServerTimeoutSet = new Date(); - } - } - - /** resets all user data, broadcasts the notAuthenticated event and shows the login dialog */ - function userAuthExpired(isLogout) { - //store the last user id and clear the user - if (currentUser && currentUser.id !== undefined) { - lastUserId = currentUser.id; } - if(currentUser){ - currentUser.remainingAuthSeconds = 0; - } - - lastServerTimeoutSet = null; - currentUser = null; - - //broadcast a global event that the user is no longer logged in - eventsService.emit("app.notAuthenticated"); + /** resets all user data, broadcasts the notAuthenticated event and shows the login dialog */ + function userAuthExpired(isLogout) { + //store the last user id and clear the user + if (currentUser && currentUser.id !== undefined) { + lastUserId = currentUser.id; + } - openLoginDialog(isLogout === undefined ? true : !isLogout); - } - - // Register a handler for when an item is added to the retry queue - securityRetryQueue.onItemAddedCallbacks.push(function (retryItem) { - if (securityRetryQueue.hasMore()) { - userAuthExpired(); - } - }); - - return { - - /** Internal method to display the login dialog */ - _showLoginDialog: function () { - openLoginDialog(); - }, - - /** Returns a promise, sends a request to the server to check if the current cookie is authorized */ - isAuthenticated: function () { - //if we've got a current user then just return true if (currentUser) { - var deferred = $q.defer(); - deferred.resolve(true); - return deferred.promise; + currentUser.remainingAuthSeconds = 0; } - return authResource.isAuthenticated(); - }, - /** Returns a promise, sends a request to the server to validate the credentials */ - authenticate: function (login, password) { + lastServerTimeoutSet = null; + currentUser = null; - return authResource.performLogin(login, password) - .then(function (data) { + //broadcast a global event that the user is no longer logged in + eventsService.emit("app.notAuthenticated"); - //when it's successful, return the user data - setCurrentUser(data); + openLoginDialog(isLogout === undefined ? true : !isLogout); + } - var result = { user: data, authenticated: true, lastUserId: lastUserId }; + // Register a handler for when an item is added to the retry queue + securityRetryQueue.onItemAddedCallbacks.push(function (retryItem) { + if (securityRetryQueue.hasMore()) { + userAuthExpired(); + } + }); - //broadcast a global event - eventsService.emit("app.authenticated", result); - return result; - }); - }, + return { - /** Logs the user out and redirects to the login page */ - logout: function () { - return authResource.performLogout() - .then(function (data) { + /** Internal method to display the login dialog */ + _showLoginDialog: function () { + openLoginDialog(); + }, - userAuthExpired(); + /** Returns a promise, sends a request to the server to check if the current cookie is authorized */ + isAuthenticated: function () { + //if we've got a current user then just return true + if (currentUser) { + var deferred = $q.defer(); + deferred.resolve(true); + return deferred.promise; + } + return authResource.isAuthenticated(); + }, - $location.path("/login").search({check: false}); + /** Returns a promise, sends a request to the server to validate the credentials */ + authenticate: function (login, password) { - return null; - }); - }, + return authResource.performLogin(login, password) + .then(function (data) { - /** Returns the current user object in a promise */ - getCurrentUser: function (args) { - var deferred = $q.defer(); - - if (!currentUser) { - authResource.getCurrentUser() - .then(function(data) { + //when it's successful, return the user data + setCurrentUser(data); var result = { user: data, authenticated: true, lastUserId: lastUserId }; - if (args && args.broadcastEvent) { - //broadcast a global event, will inform listening controllers to load in the user specific data - eventsService.emit("app.authenticated", result); - } - - setCurrentUser(data); - currentUser.avatar = 'http://www.gravatar.com/avatar/' + data.emailHash + '?s=40&d=404'; - deferred.resolve(currentUser); + //broadcast a global event + eventsService.emit("app.authenticated", result); + return result; }); + }, - } - else { - deferred.resolve(currentUser); - } - - return deferred.promise; - }, - - /** Called whenever a server request is made that contains a x-umb-user-seconds response header for which we can update the user's remaining timeout seconds */ - setUserTimeout: function(newTimeout) { - setUserTimeoutInternal(newTimeout); - } - }; + /** Logs the user out + */ + logout: function () { -}); + return authResource.performLogout() + .then(function(data) { + userAuthExpired(); + //done! + return null; + }); + }, + + /** Returns the current user object in a promise */ + getCurrentUser: function (args) { + var deferred = $q.defer(); + + if (!currentUser) { + authResource.getCurrentUser() + .then(function (data) { + + var result = { user: data, authenticated: true, lastUserId: lastUserId }; + + if (args && args.broadcastEvent) { + //broadcast a global event, will inform listening controllers to load in the user specific data + eventsService.emit("app.authenticated", result); + } + + setCurrentUser(data); + currentUser.avatar = 'http://www.gravatar.com/avatar/' + data.emailHash + '?s=40&d=404'; + deferred.resolve(currentUser); + }); + + } + else { + deferred.resolve(currentUser); + } + + return deferred.promise; + }, + + /** Called whenever a server request is made that contains a x-umb-user-seconds response header for which we can update the user's remaining timeout seconds */ + setUserTimeout: function (newTimeout) { + setUserTimeoutInternal(newTimeout); + } + }; + + }); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/less/alerts.less b/src/Umbraco.Web.UI.Client/src/less/alerts.less index 98fb3842a4..1f725946d2 100644 --- a/src/Umbraco.Web.UI.Client/src/less/alerts.less +++ b/src/Umbraco.Web.UI.Client/src/less/alerts.less @@ -64,7 +64,7 @@ .alert-form { background-color: @grayLighter; - border: 1px solid @gray; + border: 1px solid @gray !important; color: @gray; } diff --git a/src/Umbraco.Web.UI.Client/src/routes.js b/src/Umbraco.Web.UI.Client/src/routes.js index e709600809..8c3cea2749 100644 --- a/src/Umbraco.Web.UI.Client/src/routes.js +++ b/src/Umbraco.Web.UI.Client/src/routes.js @@ -12,7 +12,8 @@ app.config(function ($routeProvider) { var deferred = $q.defer(); //don't need to check if we've redirected to login and we've already checked auth - if (!$route.current.params.section && $route.current.params.check === false) { + if (!$route.current.params.section + && ($route.current.params.check === false || $route.current.params.check === "false")) { deferred.resolve(true); return deferred.promise; } @@ -55,7 +56,7 @@ app.config(function ($routeProvider) { if (isRequired) { //the check=false is checked above so that we don't have to make another http call to check //if they are logged in since we already know they are not. - deferred.reject({ path: "/login", search: { check: false } }); + deferred.reject({ path: "/login/false" }); } else { //this will resolve successfully so the route will continue @@ -67,12 +68,38 @@ app.config(function ($routeProvider) { }; }; + /** When this is used to resolve it will attempt to log the current user out */ + var doLogout = function() { + return { + isLoggedOut: function ($q, userService) { + var deferred = $q.defer(); + userService.logout().then(function () { + //success so continue + deferred.resolve(true); + }, function() { + //logout failed somehow ? we'll reject with the login page i suppose + deferred.reject({ path: "/login/false" }); + }); + return deferred.promise; + } + } + } + $routeProvider .when('/login', { templateUrl: 'views/common/login.html', //ensure auth is *not* required so it will redirect to / resolve: canRoute(false) }) + .when('/login/:check', { + templateUrl: 'views/common/login.html', + //ensure auth is *not* required so it will redirect to / + resolve: canRoute(false) + }) + .when('/logout', { + redirectTo: '/login/false', + resolve: doLogout() + }) .when('/:section', { templateUrl: function (rp) { if (rp.section.toLowerCase() === "default" || rp.section.toLowerCase() === "umbraco" || rp.section === "") diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js index cad419bbfd..0ab78896ad 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js @@ -1,5 +1,5 @@ angular.module("umbraco") - .controller("Umbraco.Dialogs.UserController", function ($scope, $location, $timeout, userService, historyService) { + .controller("Umbraco.Dialogs.UserController", function ($scope, $location, $timeout, userService, historyService, eventsService) { $scope.user = userService.getCurrentUser(); $scope.history = historyService.current; @@ -7,10 +7,16 @@ angular.module("umbraco") $scope.logout = function () { - userService.logout().then(function () { - $scope.remainingAuthSeconds = 0; - $scope.hide(); + + //Add event listener for when there are pending changes on an editor which means our route was not successful + var pendingChangeEvent = eventsService.on("valFormManager.pendingChanges", function (e, args) { + //one time listener, remove the event + pendingChangeEvent(); + $scope.hide(); }); + + //perform the path change, if it is successful then the promise will resolve otherwise it will fail + $location.path("/logout"); }; $scope.gotoHistory = function (link) { diff --git a/src/Umbraco.Web.UI.Client/src/views/common/notifications/confirmroutechange.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/notifications/confirmroutechange.controller.js index a0dc3efaa7..da7540d717 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/notifications/confirmroutechange.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/notifications/confirmroutechange.controller.js @@ -6,7 +6,18 @@ angular.module("umbraco").controller("Umbraco.Notifications.ConfirmRouteChangeCo not.args.listener(); $location.search(""); - $location.path(not.args.path); + + //we need to break the path up into path and query + var parts = not.args.path.split("?"); + var query = {}; + if (parts.length > 1) { + _.each(parts[1].split("&"), function(q) { + var keyVal = q.split("="); + query[keyVal[0]] = keyVal[1]; + }); + } + + $location.path(parts[0]).search(query); notificationsService.remove(not); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html b/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html index 300bd4cda6..cd611d85e6 100644 --- a/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html +++ b/src/Umbraco.Web.UI.Client/src/views/directives/umb-notifications.html @@ -1,7 +1,7 @@
    -
  • - × +
  • + ×
    diff --git a/src/umbraco.businesslogic/UmbracoSettings.cs b/src/umbraco.businesslogic/UmbracoSettings.cs index 497226300d..ec68aa588d 100644 --- a/src/umbraco.businesslogic/UmbracoSettings.cs +++ b/src/umbraco.businesslogic/UmbracoSettings.cs @@ -15,7 +15,7 @@ namespace umbraco /// /// The UmbracoSettings Class contains general settings information for the entire Umbraco instance based on information from the /config/umbracoSettings.config file /// - [Obsolete("Use UmbracoConfiguration.Current.UmbracoSettings instead, it offers all settings in strongly typed formats. This class will be removed in future versions.")] + [Obsolete("Use UmbracoConfig.For.UmbracoSettings() instead, it offers all settings in strongly typed formats. This class will be removed in future versions.")] public class UmbracoSettings { [Obsolete("This hasn't been used since 4.1!")] From c3ecc9e942fc530a62ca3bed6563dbed8c5b03ee Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 17:25:06 +1000 Subject: [PATCH 11/94] Fixes: U4-4505 Add obsolete messages to /base restextentions methods ( i think i got them all ) --- src/Umbraco.Web/BaseRest/BaseRestHandler.cs | 1 + src/Umbraco.Web/BaseRest/MemberRest.cs | 1 + src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs | 1 + src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs | 1 + src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs | 1 + 5 files changed, 5 insertions(+) diff --git a/src/Umbraco.Web/BaseRest/BaseRestHandler.cs b/src/Umbraco.Web/BaseRest/BaseRestHandler.cs index 147f45da70..55349a788b 100644 --- a/src/Umbraco.Web/BaseRest/BaseRestHandler.cs +++ b/src/Umbraco.Web/BaseRest/BaseRestHandler.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Configuration.BaseRest; namespace Umbraco.Web.BaseRest { + [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] internal class BaseRestHandler : IHttpHandler, IRequiresSessionState { static readonly string BaseUrl; diff --git a/src/Umbraco.Web/BaseRest/MemberRest.cs b/src/Umbraco.Web/BaseRest/MemberRest.cs index e305eb5bd2..cdbff48543 100644 --- a/src/Umbraco.Web/BaseRest/MemberRest.cs +++ b/src/Umbraco.Web/BaseRest/MemberRest.cs @@ -12,6 +12,7 @@ using umbraco.cms.businesslogic.property; namespace Umbraco.Web.BaseRest { + [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] public static class MemberRest { public static int GetCurrentMemberId() diff --git a/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs b/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs index 172ac120a0..ee6c37f9cb 100644 --- a/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs +++ b/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs @@ -5,6 +5,7 @@ using System.Text; namespace Umbraco.Web.BaseRest { + [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public sealed class RestExtensionAttribute : Attribute { diff --git a/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs b/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs index 14101959ab..c286c47732 100644 --- a/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs +++ b/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs @@ -5,6 +5,7 @@ using System.Text; namespace Umbraco.Web.BaseRest { + [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class RestExtensionMethodAttribute : Attribute { diff --git a/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs b/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs index 7227091262..761bd8aaea 100644 --- a/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs +++ b/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs @@ -14,6 +14,7 @@ using umbraco.cms.businesslogic.member; namespace Umbraco.Web.BaseRest { + [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] class RestExtensionMethodInfo { #region Utilities From 392b18f4ddbc17c1442c7d003755a5b6faf84399 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 18:08:06 +1000 Subject: [PATCH 12/94] Adds GetCurrent() to MembershipHelper --- src/Umbraco.Web/Security/MembershipHelper.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Umbraco.Web/Security/MembershipHelper.cs b/src/Umbraco.Web/Security/MembershipHelper.cs index 459e736e06..14a49a6901 100644 --- a/src/Umbraco.Web/Security/MembershipHelper.cs +++ b/src/Umbraco.Web/Security/MembershipHelper.cs @@ -255,6 +255,21 @@ namespace Umbraco.Web.Security var result = _applicationContext.Services.MemberService.GetByEmail(email); return result == null ? null : new MemberPublishedContent(result, provider.GetUser(result.Username, false)); } + + /// + /// Returns the currently logged in member as IPublishedContent + /// + /// + public IPublishedContent GetCurrent() + { + if (IsLoggedIn() == false) + { + return null; + } + var result = GetCurrentMember(); + var provider = MPE.GetMembersMembershipProvider(); + return result == null ? null : new MemberPublishedContent(result, provider.GetUser(result.Username, true)); + } #endregion From 9e0d10d0a31101e2ad38ea7c43d0c5fb60055d82 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 18:10:01 +1000 Subject: [PATCH 13/94] Adds Logout as a wrapper to formsauth in membershiphelper --- src/Umbraco.Web/Security/MembershipHelper.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Umbraco.Web/Security/MembershipHelper.cs b/src/Umbraco.Web/Security/MembershipHelper.cs index 14a49a6901..91c45b965d 100644 --- a/src/Umbraco.Web/Security/MembershipHelper.cs +++ b/src/Umbraco.Web/Security/MembershipHelper.cs @@ -206,6 +206,14 @@ namespace Umbraco.Web.Security return true; } + /// + /// Logs out the current member + /// + public void Logout() + { + FormsAuthentication.SignOut(); + } + #region Querying for front-end public IPublishedContent GetByProviderKey(object key) From 6506768f10985996db134708eb7c51bce1319081 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 18:12:28 +1000 Subject: [PATCH 14/94] Adds GetCurrentMemberId as a method to MembershipHelper --- src/Umbraco.Web/Security/MembershipHelper.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Umbraco.Web/Security/MembershipHelper.cs b/src/Umbraco.Web/Security/MembershipHelper.cs index 91c45b965d..edc2fa14de 100644 --- a/src/Umbraco.Web/Security/MembershipHelper.cs +++ b/src/Umbraco.Web/Security/MembershipHelper.cs @@ -278,6 +278,20 @@ namespace Umbraco.Web.Security var provider = MPE.GetMembersMembershipProvider(); return result == null ? null : new MemberPublishedContent(result, provider.GetUser(result.Username, true)); } + + /// + /// Returns the currently logged in member id, -1 if they are not logged in + /// + /// + public int GetCurrentMemberId() + { + if (IsLoggedIn() == false) + { + return -1; + } + var result = GetCurrentMember(); + return result == null ? -1 : result.Id; + } #endregion From 94732cff00b60a5416308fb5ba1985139bc94a86 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 18:13:59 +1000 Subject: [PATCH 15/94] Renames GetCurrent to GetCurrentMember to be inline with GetCurrentMemberId --- src/Umbraco.Web/Security/MembershipHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web/Security/MembershipHelper.cs b/src/Umbraco.Web/Security/MembershipHelper.cs index edc2fa14de..5d6cfd4453 100644 --- a/src/Umbraco.Web/Security/MembershipHelper.cs +++ b/src/Umbraco.Web/Security/MembershipHelper.cs @@ -268,7 +268,7 @@ namespace Umbraco.Web.Security /// Returns the currently logged in member as IPublishedContent ///
/// - public IPublishedContent GetCurrent() + public IPublishedContent GetCurrentMember() { if (IsLoggedIn() == false) { From ed292d34db33784493b7e33beb25dc6872d29d69 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 8 May 2014 19:03:40 +1000 Subject: [PATCH 16/94] oops fixed build --- src/Umbraco.Web/Security/MembershipHelper.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web/Security/MembershipHelper.cs b/src/Umbraco.Web/Security/MembershipHelper.cs index 5d6cfd4453..5e64f33a16 100644 --- a/src/Umbraco.Web/Security/MembershipHelper.cs +++ b/src/Umbraco.Web/Security/MembershipHelper.cs @@ -86,8 +86,8 @@ namespace Umbraco.Web.Security //This will occur if an email already exists! return Attempt.Fail(ex); } - - var member = GetCurrentMember(); + + var member = GetCurrentPersistedMember(); //NOTE: If changing the username is a requirement, than that needs to be done via the IMember directly since MembershipProvider's natively do // not support changing a username! @@ -274,7 +274,7 @@ namespace Umbraco.Web.Security { return null; } - var result = GetCurrentMember(); + var result = GetCurrentPersistedMember(); var provider = MPE.GetMembersMembershipProvider(); return result == null ? null : new MemberPublishedContent(result, provider.GetUser(result.Username, true)); } @@ -313,7 +313,7 @@ namespace Umbraco.Web.Security if (provider.IsUmbracoMembershipProvider()) { var membershipUser = provider.GetCurrentUser(); - var member = GetCurrentMember(); + var member = GetCurrentPersistedMember(); //this shouldn't happen but will if the member is deleted in the back office while the member is trying // to use the front-end! if (member == null) @@ -460,7 +460,7 @@ namespace Umbraco.Web.Security if (provider.IsUmbracoMembershipProvider()) { - var member = GetCurrentMember(); + var member = GetCurrentPersistedMember(); //this shouldn't happen but will if the member is deleted in the back office while the member is trying // to use the front-end! if (member == null) @@ -543,7 +543,7 @@ namespace Umbraco.Web.Security string username; if (provider.IsUmbracoMembershipProvider()) { - var member = GetCurrentMember(); + var member = GetCurrentPersistedMember(); username = member.Username; // If types defined, check member is of one of those types var allowTypesList = allowTypes as IList ?? allowTypes.ToList(); @@ -793,7 +793,7 @@ namespace Umbraco.Web.Security /// Returns the currently logged in IMember object - this should never be exposed to the front-end since it's returning a business logic entity! ///
/// - private IMember GetCurrentMember() + private IMember GetCurrentPersistedMember() { var provider = MPE.GetMembersMembershipProvider(); From bc59ff2e8c56c5f02e33499af7ad3c2e7ba79daa Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Thu, 8 May 2014 11:14:00 +0200 Subject: [PATCH 17/94] Clarified /base obsoletion to point out UmbracoApiController --- src/Umbraco.Web/BaseRest/BaseRestHandler.cs | 2 +- src/Umbraco.Web/BaseRest/MemberRest.cs | 2 +- src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs | 2 +- src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs | 2 +- src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web/BaseRest/BaseRestHandler.cs b/src/Umbraco.Web/BaseRest/BaseRestHandler.cs index 55349a788b..f57b75e089 100644 --- a/src/Umbraco.Web/BaseRest/BaseRestHandler.cs +++ b/src/Umbraco.Web/BaseRest/BaseRestHandler.cs @@ -7,7 +7,7 @@ using Umbraco.Core.Configuration.BaseRest; namespace Umbraco.Web.BaseRest { - [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] + [Obsolete("Umbraco /base is obsoleted, use WebApi (UmbracoApiController) instead for all REST based logic")] internal class BaseRestHandler : IHttpHandler, IRequiresSessionState { static readonly string BaseUrl; diff --git a/src/Umbraco.Web/BaseRest/MemberRest.cs b/src/Umbraco.Web/BaseRest/MemberRest.cs index cdbff48543..eca49d0fd2 100644 --- a/src/Umbraco.Web/BaseRest/MemberRest.cs +++ b/src/Umbraco.Web/BaseRest/MemberRest.cs @@ -12,7 +12,7 @@ using umbraco.cms.businesslogic.property; namespace Umbraco.Web.BaseRest { - [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] + [Obsolete("Umbraco /base is obsoleted, use WebApi (UmbracoApiController) instead for all REST based logic")] public static class MemberRest { public static int GetCurrentMemberId() diff --git a/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs b/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs index ee6c37f9cb..821fc40129 100644 --- a/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs +++ b/src/Umbraco.Web/BaseRest/RestExtensionAttribute.cs @@ -5,7 +5,7 @@ using System.Text; namespace Umbraco.Web.BaseRest { - [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] + [Obsolete("Umbraco /base is obsoleted, use WebApi (UmbracoApiController) instead for all REST based logic")] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public sealed class RestExtensionAttribute : Attribute { diff --git a/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs b/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs index c286c47732..bd994439dd 100644 --- a/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs +++ b/src/Umbraco.Web/BaseRest/RestExtensionMethodAttribute.cs @@ -5,7 +5,7 @@ using System.Text; namespace Umbraco.Web.BaseRest { - [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] + [Obsolete("Umbraco /base is obsoleted, use WebApi (UmbracoApiController) instead for all REST based logic")] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class RestExtensionMethodAttribute : Attribute { diff --git a/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs b/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs index 761bd8aaea..2ee974a0fe 100644 --- a/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs +++ b/src/Umbraco.Web/BaseRest/RestExtensionMethodInfo.cs @@ -14,7 +14,7 @@ using umbraco.cms.businesslogic.member; namespace Umbraco.Web.BaseRest { - [Obsolete("Umbraco /base is obsoleted, use WebApi instead for all REST based logic")] + [Obsolete("Umbraco /base is obsoleted, use WebApi (UmbracoApiController) instead for all REST based logic")] class RestExtensionMethodInfo { #region Utilities From 28550e3bb786aca9b538c9e1cd28d39c98d579ca Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Thu, 8 May 2014 13:28:32 +0200 Subject: [PATCH 18/94] Require a recent version of NuGet in order to install Umbraco. --- build/NuSpecs/UmbracoCms.nuspec | 2 +- src/.nuget/NuGet.exe | Bin 1611264 -> 1659904 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/build/NuSpecs/UmbracoCms.nuspec b/build/NuSpecs/UmbracoCms.nuspec index 85431799e8..40e7c1b4da 100644 --- a/build/NuSpecs/UmbracoCms.nuspec +++ b/build/NuSpecs/UmbracoCms.nuspec @@ -1,6 +1,6 @@ - + UmbracoCms 7.0.0 Umbraco Cms diff --git a/src/.nuget/NuGet.exe b/src/.nuget/NuGet.exe index 8f613402956f9802681f150b1cb51f8400eb628e..3ffdd33c6106bb292523c979289efb2b30220df5 100644 GIT binary patch literal 1659904 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%0DUM827xxU9P%WYnzkYEv&Q7ib|J&WA5|Z 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 v){veq_9Y58 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

dRfRo6H&-O6G_NG6G6y86FJC06EVm@6Di0* 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

S>iHS|@46sMM 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%0Dbb%>LJ;tb|o`Kp8Evufeht>W*BXmS?4^&TB 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%0A{4Qko^d0b`ex!LBAWYhRF*1EWi7u)hrY#_Gf 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 z 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

Q#DE^h+og#6qzgBXJRF3#s$tjY1{%a+tNVkRI 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

_vEU-9brq$&;EsL5F>D_ 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

#7`>6~`0&Cpsiw48uW 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 z%0D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

L{ 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 Date: Thu, 8 May 2014 13:28:46 +0200 Subject: [PATCH 19/94] Update ImageProcessor dependency to latest version --- build/NuSpecs/UmbracoCms.Core.nuspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec index e70d12525d..bb0746e8bc 100644 --- a/build/NuSpecs/UmbracoCms.Core.nuspec +++ b/build/NuSpecs/UmbracoCms.Core.nuspec @@ -30,8 +30,8 @@ - - + + From 215ebb78ca5ce731366d37eb8947cda55434bf03 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Thu, 8 May 2014 13:56:19 +0200 Subject: [PATCH 20/94] Oops, this really needs to be Release mode --- build/Build.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Build.proj b/build/Build.proj index 98f10aaf9c..2b9040dab3 100644 --- a/build/Build.proj +++ b/build/Build.proj @@ -71,7 +71,7 @@ - Debug + Release _BuildOutput\ UmbracoCms$(DECIMAL_BUILD_NUMBER).zip UmbracoCms.AllBinaries$(DECIMAL_BUILD_NUMBER).zip From 59cb1ad31e6bbf7c5b8da7f5d206cd735d5f3bdb Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Thu, 8 May 2014 16:08:16 +0200 Subject: [PATCH 21/94] Revert "Fixes: U4-4211 User without media section permission will be logged out immediately when accessing a document type using a media picker datatype (u7.0.3) - this is done by using the entityResource in the mediaPicker but to do this we need to return a cut down version of the media properties in the additionalData which is tricky because the cropper stores json which is ntext and the existing sql didn't cater for this. This also cleans up the entity service and we no longer have this internal collection of properties, everything is just added to additionalData, then had to add mediaHelper method to deal with getting urls from a media 'entity' not just a media object." This reverts commit c38c2ede11158686edd30d5a422da15ba21ec99b. --- src/Umbraco.Core/Models/UmbracoEntity.cs | 34 +-- .../Factories/UmbracoEntityFactory.cs | 15 +- .../Repositories/EntityRepository.cs | 211 ++++++------------ src/Umbraco.Core/StringExtensions.cs | 23 -- .../Models/UmbracoEntityTests.cs | 15 +- .../Services/EntityServiceTests.cs | 22 +- .../common/services/mediahelper.service.js | 79 ++----- .../fileupload/fileupload.controller.js | 6 +- .../imagecropper/imagecropper.controller.js | 6 +- .../mediapicker/mediapicker.controller.js | 28 +-- src/Umbraco.Web/Editors/EntityController.cs | 3 +- src/Umbraco.Web/Editors/ImagesController.cs | 2 - .../WebServices/FolderBrowserService.cs | 11 +- .../umbraco/Trees/BaseMediaTree.cs | 115 +++++----- 14 files changed, 192 insertions(+), 378 deletions(-) diff --git a/src/Umbraco.Core/Models/UmbracoEntity.cs b/src/Umbraco.Core/Models/UmbracoEntity.cs index 23a6bcfe5b..92bdf3c790 100644 --- a/src/Umbraco.Core/Models/UmbracoEntity.cs +++ b/src/Umbraco.Core/Models/UmbracoEntity.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Reflection; -using System.Runtime.CompilerServices; using Umbraco.Core.Models.EntityBase; namespace Umbraco.Core.Models @@ -48,11 +47,13 @@ namespace Umbraco.Core.Models public UmbracoEntity() { AdditionalData = new Dictionary(); + UmbracoProperties = new List(); } public UmbracoEntity(bool trashed) { AdditionalData = new Dictionary(); + UmbracoProperties = new List(); Trashed = trashed; } @@ -60,6 +61,7 @@ namespace Umbraco.Core.Models public UmbracoEntity(UInt64 trashed) { AdditionalData = new Dictionary(); + UmbracoProperties = new List(); Trashed = trashed == 1; } @@ -285,31 +287,15 @@ namespace Umbraco.Core.Models } } - public override object DeepClone() - { - var clone = (UmbracoEntity) base.DeepClone(); - - //This ensures that any value in the dictionary that is deep cloneable is cloned too - foreach (var key in clone.AdditionalData.Keys.ToArray()) - { - var deepCloneable = clone.AdditionalData[key] as IDeepCloneable; - if (deepCloneable != null) - { - clone.AdditionalData[key] = deepCloneable.DeepClone(); - } - } - - return clone; - } - ///

- /// A struction that can be contained in the additional data of an UmbracoEntity representing - /// a user defined property + /// Some entities may expose additional data that other's might not, this custom data will be available in this collection /// - public class EntityProperty : IDeepCloneable + public IList UmbracoProperties { get; set; } + + internal class UmbracoProperty : IDeepCloneable { public string PropertyEditorAlias { get; set; } - public object Value { get; set; } + public string Value { get; set; } public object DeepClone() { //Memberwise clone on Entity will work since it doesn't have any deep elements @@ -318,7 +304,7 @@ namespace Umbraco.Core.Models return clone; } - protected bool Equals(EntityProperty other) + protected bool Equals(UmbracoProperty other) { return PropertyEditorAlias.Equals(other.PropertyEditorAlias) && string.Equals(Value, other.Value); } @@ -328,7 +314,7 @@ namespace Umbraco.Core.Models if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != this.GetType()) return false; - return Equals((EntityProperty) obj); + return Equals((UmbracoProperty) obj); } public override int GetHashCode() diff --git a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs index f33ae1af2f..db1a99bc45 100644 --- a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs @@ -44,6 +44,7 @@ namespace Umbraco.Core.Persistence.Factories ContentTypeAlias = asDictionary.ContainsKey("alias") ? (d.alias ?? string.Empty) : string.Empty, ContentTypeIcon = asDictionary.ContainsKey("icon") ? (d.icon ?? string.Empty) : string.Empty, ContentTypeThumbnail = asDictionary.ContainsKey("thumbnail") ? (d.thumbnail ?? string.Empty) : string.Empty, + UmbracoProperties = new List() }; var publishedVersion = default(Guid); @@ -86,6 +87,7 @@ namespace Umbraco.Core.Persistence.Factories ContentTypeAlias = dto.Alias ?? string.Empty, ContentTypeIcon = dto.Icon ?? string.Empty, ContentTypeThumbnail = dto.Thumbnail ?? string.Empty, + UmbracoProperties = new List() }; entity.IsPublished = dto.PublishedVersion != default(Guid) || (dto.NewestVersion != default(Guid) && dto.PublishedVersion == dto.NewestVersion); @@ -96,13 +98,12 @@ namespace Umbraco.Core.Persistence.Factories { foreach (var propertyDto in dto.UmbracoPropertyDtos) { - entity.AdditionalData[propertyDto.PropertyAlias] = new UmbracoEntity.EntityProperty - { - PropertyEditorAlias = propertyDto.PropertyEditorAlias, - Value = propertyDto.NTextValue.IsNullOrWhiteSpace() - ? propertyDto.NVarcharValue - : propertyDto.NTextValue.ConvertToJsonIfPossible() - }; + entity.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty + { + PropertyEditorAlias = + propertyDto.PropertyEditorAlias, + Value = propertyDto.UmbracoFile + }); } } diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs index 5f721f7141..7336e36ab7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs @@ -66,31 +66,15 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); + var sql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, key).Append(GetGroupBy(isContent, isMedia)); + var nodeDto = _work.Database.FirstOrDefault(sql); + if (nodeDto == null) + return null; - var sql = GetFullSqlForEntityType(key, isContent, isMedia, objectTypeId); - - if (isMedia) - { - //for now treat media differently - //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields - var entities = _work.Database.Fetch( - new UmbracoEntityRelator().Map, sql); + var factory = new UmbracoEntityFactory(); + var entity = factory.BuildEntityFromDynamic(nodeDto); - return entities.FirstOrDefault(); - } - else - { - var nodeDto = _work.Database.FirstOrDefault(sql); - if (nodeDto == null) - return null; - - var factory = new UmbracoEntityFactory(); - var entity = factory.BuildEntityFromDynamic(nodeDto); - - return entity; - } - - + return entity; } public virtual IUmbracoEntity Get(int id) @@ -110,31 +94,16 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); + var sql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, id).Append(GetGroupBy(isContent, isMedia)); - var sql = GetFullSqlForEntityType(id, isContent, isMedia, objectTypeId); - - if (isMedia) - { - //for now treat media differently - //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields - var entities = _work.Database.Fetch( - new UmbracoEntityRelator().Map, sql); + var nodeDto = _work.Database.FirstOrDefault(sql); + if (nodeDto == null) + return null; - return entities.FirstOrDefault(); - } - else - { - var nodeDto = _work.Database.FirstOrDefault(sql); - if (nodeDto == null) - return null; + var factory = new UmbracoEntityFactory(); + var entity = factory.BuildEntityFromDynamic(nodeDto); - var factory = new UmbracoEntityFactory(); - var entity = factory.BuildEntityFromDynamic(nodeDto); - - return entity; - } - - + return entity; } public virtual IEnumerable GetAll(Guid objectTypeId, params int[] ids) @@ -150,8 +119,8 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); - var sql = GetFullSqlForEntityType(isContent, isMedia, objectTypeId, string.Empty); - + var sql = GetBaseWhere(GetBase, isContent, isMedia, string.Empty, objectTypeId).Append(GetGroupBy(isContent, isMedia)); + var factory = new UmbracoEntityFactory(); if (isMedia) @@ -197,28 +166,24 @@ namespace Umbraco.Core.Persistence.Repositories bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); var wheres = string.Concat(" AND ", string.Join(" AND ", ((Query)query).WhereClauses())); - var sqlClause = GetBaseWhere(GetBase, isContent, isMedia, wheres, objectTypeId); - var translator = new SqlTranslator(sqlClause, query); - var entitySql = translator.Translate(); + var sql = translator.Translate().Append(GetGroupBy(isContent, isMedia)); var factory = new UmbracoEntityFactory(); if (isMedia) { - var mediaSql = GetFullSqlForMedia(entitySql, wheres); - //treat media differently for now //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields var entities = _work.Database.Fetch( - new UmbracoEntityRelator().Map, mediaSql); + new UmbracoEntityRelator().Map, sql); return entities; } else { //use dynamic so that we can get ALL properties from the SQL so we can chuck that data into our AdditionalData - var dtos = _work.Database.Fetch(entitySql.Append(GetGroupBy(isContent, false))); + var dtos = _work.Database.Fetch(sql); return dtos.Select(factory.BuildEntityFromDynamic).Cast().ToList(); } } @@ -228,62 +193,6 @@ namespace Umbraco.Core.Persistence.Repositories #region Sql Statements - protected Sql GetFullSqlForEntityType(Guid key, bool isContent, bool isMedia, Guid objectTypeId) - { - var entitySql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, key); - - if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); - - return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); - } - - protected Sql GetFullSqlForEntityType(int id, bool isContent, bool isMedia, Guid objectTypeId) - { - var entitySql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, id); - - if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); - - return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); - } - - protected Sql GetFullSqlForEntityType(bool isContent, bool isMedia, Guid objectTypeId, string additionalWhereClause) - { - var entitySql = GetBaseWhere(GetBase, isContent, isMedia, additionalWhereClause, objectTypeId); - - if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); - - return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); - } - - private Sql GetFullSqlForMedia(Sql entitySql, string additionWhereStatement = "") - { - //this will add any dataNvarchar property to the output which can be added to the additional properties - - var joinSql = new Sql() - .Select("contentNodeId, versionId, dataNvarchar, dataNtext, propertyEditorAlias, alias as propertyTypeAlias") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .InnerJoin() - .On(dto => dto.Id, dto => dto.PropertyTypeId) - .InnerJoin() - .On(dto => dto.DataTypeId, dto => dto.DataTypeId) - .Where("umbracoNode.nodeObjectType = @nodeObjectType" + additionWhereStatement, new {nodeObjectType = Constants.ObjectTypes.Media}); - - //We're going to create a query to query against the entity SQL - // because we cannot group by nText columns and we have a COUNT in the entitySql we cannot simply left join - // the entitySql query, we have to join the wrapped query to get the ntext in the result - - var wrappedSql = new Sql("SELECT * FROM (") - .Append(entitySql) - .Append(new Sql(") tmpTbl LEFT JOIN (")) - .Append(joinSql) - .Append(new Sql(") as property ON id = property.contentNodeId")) - .OrderBy("sortOrder"); - - return wrappedSql; - } - protected virtual Sql GetBase(bool isContent, bool isMedia, string additionWhereStatement = "") { var columns = new List @@ -312,9 +221,13 @@ namespace Umbraco.Core.Persistence.Repositories columns.Add("contenttype.isContainer"); } - //Creates an SQL query to return a single row for the entity + if (isMedia) + { + columns.Add("property.dataNvarchar as umbracoFile"); + columns.Add("property.propertyEditorAlias"); + } - var entitySql = new Sql() + var sql = new Sql() .Select(columns.ToArray()) .From("umbracoNode umbracoNode") .LeftJoin("umbracoNode parent").On("parent.parentID = umbracoNode.id"); @@ -322,7 +235,7 @@ namespace Umbraco.Core.Persistence.Repositories if (isContent || isMedia) { - entitySql.InnerJoin("cmsContent content").On("content.nodeId = umbracoNode.id") + sql.InnerJoin("cmsContent content").On("content.nodeId = umbracoNode.id") .LeftJoin("cmsContentType contenttype").On("contenttype.nodeId = content.contentType") .LeftJoin( "(SELECT nodeId, versionId FROM cmsDocument WHERE published = 1 GROUP BY nodeId, versionId) as published") @@ -332,7 +245,18 @@ namespace Umbraco.Core.Persistence.Repositories .On("umbracoNode.id = latest.nodeId"); } - return entitySql; + if (isMedia) + { + sql.LeftJoin( + "(SELECT contentNodeId, versionId, dataNvarchar, propertyEditorAlias FROM cmsPropertyData " + + "INNER JOIN umbracoNode ON cmsPropertyData.contentNodeId = umbracoNode.id " + + "INNER JOIN cmsPropertyType ON cmsPropertyType.id = cmsPropertyData.propertytypeid " + + "INNER JOIN cmsDataType ON cmsPropertyType.dataTypeId = cmsDataType.nodeId "+ + "WHERE umbracoNode.nodeObjectType = '" + Constants.ObjectTypes.Media + "'" + additionWhereStatement + ") as property") + .On("umbracoNode.id = property.contentNodeId"); + } + + return sql; } protected virtual Sql GetBaseWhere(Func baseQuery, bool isContent, bool isMedia, string additionWhereStatement, Guid nodeObjectType) @@ -374,7 +298,7 @@ namespace Umbraco.Core.Persistence.Repositories return sql; } - protected virtual Sql GetGroupBy(bool isContent, bool isMedia, bool includeSort = true) + protected virtual Sql GetGroupBy(bool isContent, bool isMedia) { var columns = new List { @@ -400,18 +324,19 @@ namespace Umbraco.Core.Persistence.Repositories columns.Add("contenttype.thumbnail"); columns.Add("contenttype.isContainer"); } - - var sql = new Sql() - .GroupBy(columns.ToArray()); - if (includeSort) + if (isMedia) { - sql = sql.OrderBy("umbracoNode.sortOrder"); + columns.Add("property.dataNvarchar"); + columns.Add("property.propertyEditorAlias"); } + var sql = new Sql() + .GroupBy(columns.ToArray()) + .OrderBy("umbracoNode.sortOrder"); return sql; } - + #endregion /// @@ -452,21 +377,15 @@ namespace Umbraco.Core.Persistence.Repositories [ResultColumn] public List UmbracoPropertyDtos { get; set; } } - + [ExplicitColumns] internal class UmbracoPropertyDto { [Column("propertyEditorAlias")] public string PropertyEditorAlias { get; set; } - [Column("propertyTypeAlias")] - public string PropertyAlias { get; set; } - - [Column("dataNvarchar")] - public string NVarcharValue { get; set; } - - [Column("dataNtext")] - public string NTextValue { get; set; } + [Column("umbracoFile")] + public string UmbracoFile { get; set; } } /// @@ -493,15 +412,16 @@ namespace Umbraco.Core.Persistence.Repositories // Is this the same UmbracoEntity as the current one we're processing if (Current != null && Current.Key == a.uniqueID) { - // Add this UmbracoProperty to the current additional data - Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty + // Yes, just add this UmbracoProperty to the current UmbracoEntity's collection + if (Current.UmbracoProperties == null) { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.NTextValue.IsNullOrWhiteSpace() - ? p.NVarcharValue - : p.NTextValue.ConvertToJsonIfPossible() - }; - + Current.UmbracoProperties = new List(); + } + Current.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty + { + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.UmbracoFile + }); // Return null to indicate we're not done with this UmbracoEntity yet return null; } @@ -517,13 +437,14 @@ namespace Umbraco.Core.Persistence.Repositories Current = _factory.BuildEntityFromDynamic(a); //add the property/create the prop list if null - Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty - { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.NTextValue.IsNullOrWhiteSpace() - ? p.NVarcharValue - : p.NTextValue.ConvertToJsonIfPossible() - }; + Current.UmbracoProperties = new List + { + new UmbracoEntity.UmbracoProperty + { + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.UmbracoFile + } + }; // Return the now populated previous UmbracoEntity (or null if first time through) return prev; diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index d1b20cce30..395f9cea0c 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -10,7 +10,6 @@ using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Xml; -using Newtonsoft.Json; using Umbraco.Core.Configuration; using System.Web.Security; using Umbraco.Core.Strings; @@ -53,28 +52,6 @@ namespace Umbraco.Core || (input.StartsWith("[") && input.EndsWith("]")); } - /// - /// Returns a JObject/JArray instance if the string can be converted to json, otherwise returns the string - /// - /// - /// - internal static object ConvertToJsonIfPossible(this string input) - { - if (input.DetectIsJson() == false) - { - return input; - } - try - { - var obj = JsonConvert.DeserializeObject(input); - return obj; - } - catch (Exception ex) - { - return input; - } - } - internal static string ReplaceNonAlphanumericChars(this string input, char replacement) { //any character that is not alphanumeric, convert to a hyphen diff --git a/src/Umbraco.Tests/Models/UmbracoEntityTests.cs b/src/Umbraco.Tests/Models/UmbracoEntityTests.cs index 52513d551d..ac70364e67 100644 --- a/src/Umbraco.Tests/Models/UmbracoEntityTests.cs +++ b/src/Umbraco.Tests/Models/UmbracoEntityTests.cs @@ -47,13 +47,12 @@ namespace Umbraco.Tests.Models }; item.AdditionalData.Add("test1", 3); item.AdditionalData.Add("test2", "valuie"); - - item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty() + item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() { Value = "test", PropertyEditorAlias = "TestPropertyEditor" }); - item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty() + item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() { Value = "test2", PropertyEditorAlias = "TestPropertyEditor2" @@ -83,6 +82,12 @@ namespace Umbraco.Tests.Models Assert.AreEqual(clone.UpdateDate, item.UpdateDate); Assert.AreEqual(clone.AdditionalData.Count, item.AdditionalData.Count); Assert.AreEqual(clone.AdditionalData, item.AdditionalData); + Assert.AreEqual(clone.UmbracoProperties.Count, item.UmbracoProperties.Count); + for (var i = 0; i < clone.UmbracoProperties.Count; i++) + { + Assert.AreNotSame(clone.UmbracoProperties[i], item.UmbracoProperties[i]); + Assert.AreEqual(clone.UmbracoProperties[i], item.UmbracoProperties[i]); + } //This double verifies by reflection var allProps = clone.GetType().GetProperties(); @@ -120,12 +125,12 @@ namespace Umbraco.Tests.Models }; item.AdditionalData.Add("test1", 3); item.AdditionalData.Add("test2", "valuie"); - item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty() + item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() { Value = "test", PropertyEditorAlias = "TestPropertyEditor" }); - item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty() + item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() { Value = "test2", PropertyEditorAlias = "TestPropertyEditor2" diff --git a/src/Umbraco.Tests/Services/EntityServiceTests.cs b/src/Umbraco.Tests/Services/EntityServiceTests.cs index 9826e9fc3f..82cc2c7560 100644 --- a/src/Umbraco.Tests/Services/EntityServiceTests.cs +++ b/src/Umbraco.Tests/Services/EntityServiceTests.cs @@ -32,7 +32,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.Document).ToArray(); + var entities = service.GetAll(UmbracoObjectTypes.Document); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -45,7 +45,7 @@ namespace Umbraco.Tests.Services var service = ServiceContext.EntityService; var objectTypeId = new Guid(Constants.ObjectTypes.Document); - var entities = service.GetAll(objectTypeId).ToArray(); + var entities = service.GetAll(objectTypeId); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -57,7 +57,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll().ToArray(); + var entities = service.GetAll(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -69,7 +69,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetChildren(-1, UmbracoObjectTypes.Document).ToArray(); + var entities = service.GetChildren(-1, UmbracoObjectTypes.Document); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -92,7 +92,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.DocumentType).ToArray(); + var entities = service.GetAll(UmbracoObjectTypes.DocumentType); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -104,7 +104,7 @@ namespace Umbraco.Tests.Services var service = ServiceContext.EntityService; var objectTypeId = new Guid(Constants.ObjectTypes.DocumentType); - var entities = service.GetAll(objectTypeId).ToArray(); + var entities = service.GetAll(objectTypeId); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -115,7 +115,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll().ToArray(); + var entities = service.GetAll(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -126,16 +126,16 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.Media).ToArray(); + var entities = service.GetAll(UmbracoObjectTypes.Media); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(3)); - + //Assert.That(entities.Any(x => ((UmbracoEntity)x).UmbracoFile != string.Empty), Is.True); Assert.That( entities.Any( x => - x.AdditionalData.Any(y => y.Value is UmbracoEntity.EntityProperty - && ((UmbracoEntity.EntityProperty)y.Value).PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias)), Is.True); + ((UmbracoEntity) x).UmbracoProperties.Any( + y => y.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias)), Is.True); } private static bool _isSetup = false; diff --git a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js index 67dbcecc54..2e06bc1656 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js @@ -129,79 +129,30 @@ function mediaHelper(umbRequestHelper) { _mediaFileResolvers[propertyEditorAlias] = func; }, - /** - * @ngdoc function - * @name umbraco.services.mediaHelper#resolveFileFromEntity - * @methodOf umbraco.services.mediaHelper - * @function - * - * @description - * Gets the media file url for a media entity returned with the entityResource - * - * @param {object} mediaEntity A media Entity returned from the entityResource - * @param {boolean} thumbnail Whether to return the thumbnail url or normal url - */ - resolveFileFromEntity : function(mediaEntity, thumbnail) { - - if (!angular.isObject(mediaEntity.metaData)) { - throw "Cannot resolve the file url from the mediaEntity, it does not contain the required metaData"; - } - - var values = _.values(mediaEntity.metaData); - for (var i = 0; i < values.length; i++) { - var val = values[i]; - if (angular.isObject(val) && val.PropertyEditorAlias) { - for (var resolver in _mediaFileResolvers) { - if (val.PropertyEditorAlias === resolver) { - //we need to format a property variable that coincides with how the property would be structured - // if it came from the mediaResource just to keep things slightly easier for the file resolvers. - var property = { value: val.Value }; - - return _mediaFileResolvers[resolver](property, mediaEntity, thumbnail); - } - } - } - } - - return ""; - }, - - /** - * @ngdoc function - * @name umbraco.services.mediaHelper#resolveFile - * @methodOf umbraco.services.mediaHelper - * @function - * - * @description - * Gets the media file url for a media object returned with the mediaResource - * - * @param {object} mediaEntity A media Entity returned from the entityResource - * @param {boolean} thumbnail Whether to return the thumbnail url or normal url - */ /*jshint loopfunc: true */ resolveFile : function(mediaItem, thumbnail){ - - function iterateProps(props){ - var res = null; + var _props = []; + function _iterateProps(props){ + var result = null; for(var resolver in _mediaFileResolvers) { - var property = _.find(props, function(prop){ return prop.editor === resolver; }); + var property = _.find(props, function(property){ return property.editor === resolver; }); if(property){ - res = _mediaFileResolvers[resolver](property, mediaItem, thumbnail); + result = _mediaFileResolvers[resolver](property, mediaItem, thumbnail); break; } } - return res; + return result; } //we either have properties raw on the object, or spread out on tabs var result = ""; if(mediaItem.properties){ - result = iterateProps(mediaItem.properties); + result = _iterateProps(mediaItem.properties); }else if(mediaItem.tabs){ for(var tab in mediaItem.tabs) { if(mediaItem.tabs[tab].properties){ - result = iterateProps(mediaItem.tabs[tab].properties); + result = _iterateProps(mediaItem.tabs[tab].properties); if(result){ break; } @@ -213,26 +164,26 @@ function mediaHelper(umbRequestHelper) { /*jshint loopfunc: true */ hasFilePropertyType : function(mediaItem){ - function iterateProps(props){ - var res = false; + function _iterateProps(props){ + var result = false; for(var resolver in _mediaFileResolvers) { - var property = _.find(props, function(prop){ return prop.editor === resolver; }); + var property = _.find(props, function(property){ return property.editor === resolver; }); if(property){ - res = true; + result = true; break; } } - return res; + return result; } //we either have properties raw on the object, or spread out on tabs var result = false; if(mediaItem.properties){ - result = iterateProps(mediaItem.properties); + result = _iterateProps(mediaItem.properties); }else if(mediaItem.tabs){ for(var tab in mediaItem.tabs) { if(mediaItem.tabs[tab].properties){ - result = iterateProps(mediaItem.tabs[tab].properties); + result = _iterateProps(mediaItem.tabs[tab].properties); if(result){ break; } 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 7aa65473a6..0224853e7b 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 @@ -125,15 +125,11 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag angular.module("umbraco") .controller('Umbraco.PropertyEditors.FileUploadController', fileUploadController) .run(function(mediaHelper, umbRequestHelper){ - if (mediaHelper && mediaHelper.registerFileResolver) { - - //NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource - // they contain different data structures so if we need to query against it we need to be aware of this. + if(mediaHelper && mediaHelper.registerFileResolver){ mediaHelper.registerFileResolver("Umbraco.UploadField", function(property, entity, thumbnail){ if (thumbnail) { if (mediaHelper.detectIfImageByExtension(property.value)) { - var thumbnailUrl = umbRequestHelper.getApiUrl( "imagesApiBaseUrl", "GetBigThumbnail", diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js index 7189ca504a..abcdb0852f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js @@ -98,14 +98,11 @@ angular.module('umbraco') }) .run(function (mediaHelper, umbRequestHelper) { if (mediaHelper && mediaHelper.registerFileResolver) { - - //NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource - // they contain different data structures so if we need to query against it we need to be aware of this. mediaHelper.registerFileResolver("Umbraco.ImageCropper", function (property, entity, thumbnail) { if (property.value.src) { if (thumbnail === true) { - return property.value.src + "?width=500&mode=max"; + return property.value.src + "?width=600&mode=max"; } else { return property.value.src; @@ -117,7 +114,6 @@ angular.module('umbraco') if (thumbnail) { if (mediaHelper.detectIfImageByExtension(property.value)) { - var thumbnailUrl = umbRequestHelper.getApiUrl( "imagesApiBaseUrl", "GetBigThumbnail", diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js index 0a1066cda3..e17a03473c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js @@ -1,7 +1,7 @@ //this controller simply tells the dialogs service to open a mediaPicker window //with a specified callback, this callback will receive an object with a selection on it angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerController", - function ($rootScope, $scope, dialogService, entityResource, mediaResource, mediaHelper, $timeout) { + function($rootScope, $scope, dialogService, mediaResource, mediaHelper, $timeout) { //check the pre-values for multi-picker var multiPicker = $scope.model.config.multiPicker && $scope.model.config.multiPicker !== '0' ? true : false; @@ -17,24 +17,18 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl if ($scope.model.value) { var ids = $scope.model.value.split(','); - //NOTE: We need to use the entityResource NOT the mediaResource here because - // the mediaResource has server side auth configured for which the user must have - // access to the media section, if they don't they'll get auth errors. The entityResource - // acts differently in that it allows access if the user has access to any of the apps that - // might require it's use. Therefore we need to use the metatData property to get at the thumbnail - // value. - - entityResource.getByIds(ids, "Media").then(function (medias) { - + mediaResource.getByIds(ids).then(function (medias) { + //img.media = media; _.each(medias, function (media, i) { //only show non-trashed items - if (media.parentId >= -1) { - - if (!media.thumbnail) { - media.thumbnail = mediaHelper.resolveFileFromEntity(media, true); + if(media.parentId >= -1){ + if(!media.thumbnail){ + media.thumbnail = mediaHelper.resolveFile(media, true); } + //media.src = mediaHelper.getImagePropertyValue({ imageModel: media }); + //media.thumbnail = mediaHelper.getThumbnailFromPath(media.src); $scope.images.push(media); $scope.ids.push(media.id); } @@ -66,10 +60,10 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl _.each(data, function(media, i) { - if (!media.thumbnail) { - media.thumbnail = mediaHelper.resolveFileFromEntity(media, true); + if(!media.thumbnail){ + media.thumbnail = mediaHelper.resolveFile(media, true); } - + $scope.images.push(media); $scope.ids.push(media.id); }); diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs index 507c229122..52d60e566f 100644 --- a/src/Umbraco.Web/Editors/EntityController.cs +++ b/src/Umbraco.Web/Editors/EntityController.cs @@ -531,9 +531,8 @@ namespace Umbraco.Web.Editors var objectType = ConvertToObjectType(entityType); if (objectType.HasValue) { - var result = ids.Select(id => Mapper.Map(Services.EntityService.Get(id, objectType.Value))) + return ids.Select(id => Mapper.Map(Services.EntityService.Get(id, objectType.Value))) .WhereNotNull(); - return result; } //now we need to convert the unknown ones switch (entityType) diff --git a/src/Umbraco.Web/Editors/ImagesController.cs b/src/Umbraco.Web/Editors/ImagesController.cs index 54938be76d..39b872af6d 100644 --- a/src/Umbraco.Web/Editors/ImagesController.cs +++ b/src/Umbraco.Web/Editors/ImagesController.cs @@ -104,8 +104,6 @@ namespace Umbraco.Web.Editors return GetResized(imagePath, width, Convert.ToString(width)); } - //TODO: We should delegate this to ImageProcessing - /// /// Gets a resized image - if the requested max width is greater than the original image, only the original image will be returned. /// diff --git a/src/Umbraco.Web/WebServices/FolderBrowserService.cs b/src/Umbraco.Web/WebServices/FolderBrowserService.cs index bf5a3f1bd5..2c8cff527d 100644 --- a/src/Umbraco.Web/WebServices/FolderBrowserService.cs +++ b/src/Umbraco.Web/WebServices/FolderBrowserService.cs @@ -32,14 +32,9 @@ namespace Umbraco.Web.WebServices var entities = service.GetChildren(parentId, UmbracoObjectTypes.Media); foreach (UmbracoEntity entity in entities) { - var uploadFieldProperty = entity.AdditionalData - .Select(x => x.Value as UmbracoEntity.EntityProperty) - .Where(x => x != null) - .FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); - - //var uploadFieldProperty = entity.UmbracoProperties.FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); - - var thumbnailUrl = uploadFieldProperty == null ? "" : ThumbnailProvidersResolver.Current.GetThumbnailUrl((string)uploadFieldProperty.Value); + var uploadFieldProperty = entity.UmbracoProperties.FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); + + var thumbnailUrl = uploadFieldProperty == null ? "" : ThumbnailProvidersResolver.Current.GetThumbnailUrl(uploadFieldProperty.Value); var item = new { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs index f72457d867..0b48f7a2e1 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs @@ -21,28 +21,28 @@ namespace umbraco.cms.presentation.Trees { [Obsolete("This is no longer used and will be removed from the codebase in the future")] - public abstract class BaseMediaTree : BaseTree - { + public abstract class BaseMediaTree : BaseTree + { private User _user; - public BaseMediaTree(string application) - : base(application) - { - - } - - /// - /// Returns the current User. This ensures that we don't instantiate a new User object - /// each time. - /// - protected User CurrentUser - { - get - { - return (_user == null ? (_user = UmbracoEnsuredPage.CurrentUser) : _user); - } - } + public BaseMediaTree(string application) + : base(application) + { + + } + /// + /// Returns the current User. This ensures that we don't instantiate a new User object + /// each time. + /// + protected User CurrentUser + { + get + { + return (_user == null ? (_user = UmbracoEnsuredPage.CurrentUser) : _user); + } + } + public override void RenderJS(ref StringBuilder Javascript) { if (!string.IsNullOrEmpty(this.FunctionToCall)) @@ -54,7 +54,7 @@ namespace umbraco.cms.presentation.Trees else if (!this.IsDialog) { Javascript.Append( - @" + @" function openMedia(id) { " + ClientTools.Scripts.GetContentFrame() + ".location.href = 'editMedia.aspx?id=' + id;" + @" } @@ -98,12 +98,12 @@ function openMedia(id) { // to call so that is fine. var entities = Services.EntityService.GetChildren(m_id, UmbracoObjectTypes.Media).ToArray(); - + foreach (UmbracoEntity entity in entities) { var e = entity; var xNode = PerformNodeRender(e.Id, entity.Name, e.HasChildren, e.ContentTypeIcon, e.ContentTypeAlias, () => GetLinkValue(e)); - + OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty); if (xNode != null) { @@ -111,7 +111,7 @@ function openMedia(id) { OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty); } } - } + } } private XmlTreeNode PerformNodeRender(int nodeId, string nodeName, bool hasChildren, string icon, string contentTypeAlias, Func getLinkValue) @@ -164,28 +164,28 @@ function openMedia(id) { return xNode; } - + /// - /// Returns the value for a link in WYSIWYG mode, by default only media items that have a - /// DataTypeUploadField are linkable, however, a custom tree can be created which overrides - /// this method, or another GUID for a custom data type can be added to the LinkableMediaDataTypes - /// list on application startup. - /// - /// - /// - /// + /// Returns the value for a link in WYSIWYG mode, by default only media items that have a + /// DataTypeUploadField are linkable, however, a custom tree can be created which overrides + /// this method, or another GUID for a custom data type can be added to the LinkableMediaDataTypes + /// list on application startup. + /// + /// + /// + /// public virtual string GetLinkValue(Media dd, string nodeLink) { var props = dd.GenericProperties; - foreach (Property p in props) - { - Guid currId = p.PropertyType.DataTypeDefinition.DataType.Id; - if (LinkableMediaDataTypes.Contains(currId) && string.IsNullOrEmpty(p.Value.ToString()) == false) - { - return p.Value.ToString(); - } - } + foreach (Property p in props) + { + Guid currId = p.PropertyType.DataTypeDefinition.DataType.Id; + if (LinkableMediaDataTypes.Contains(currId) && string.IsNullOrEmpty(p.Value.ToString()) == false) + { + return p.Value.ToString(); + } + } return ""; } @@ -200,34 +200,29 @@ function openMedia(id) { /// internal virtual string GetLinkValue(UmbracoEntity entity) { - foreach (var property in entity.AdditionalData - .Select(x => x.Value as UmbracoEntity.EntityProperty) - .Where(x => x != null)) + foreach (var property in entity.UmbracoProperties) { - - //required for backwards compatibility with v7 with changing the GUID -> alias var controlId = LegacyPropertyEditorIdToAliasConverter.GetLegacyIdFromAlias(property.PropertyEditorAlias, LegacyPropertyEditorIdToAliasConverter.NotFoundLegacyIdResponseBehavior.ReturnNull); if (controlId != null) { - if (LinkableMediaDataTypes.Contains(controlId.Value) - && string.IsNullOrEmpty((string)property.Value) == false) - - return property.Value.ToString(); - } + if (LinkableMediaDataTypes.Contains(controlId.Value) && + string.IsNullOrEmpty(property.Value) == false) + return property.Value; + } } return ""; } - /// - /// By default, any media type that is to be "linkable" in the WYSIWYG editor must contain - /// a DataTypeUploadField data type which will ouput the value for the link, however, if - /// a developer wants the WYSIWYG editor to link to a custom media type, they will either have - /// to create their own media tree and inherit from this one and override the GetLinkValue - /// or add another GUID to the LinkableMediaDataType list on application startup that matches - /// the GUID of a custom data type. The order of property types on the media item definition will determine the output value. - /// - public static List LinkableMediaDataTypes { get; protected set; } + /// + /// By default, any media type that is to be "linkable" in the WYSIWYG editor must contain + /// a DataTypeUploadField data type which will ouput the value for the link, however, if + /// a developer wants the WYSIWYG editor to link to a custom media type, they will either have + /// to create their own media tree and inherit from this one and override the GetLinkValue + /// or add another GUID to the LinkableMediaDataType list on application startup that matches + /// the GUID of a custom data type. The order of property types on the media item definition will determine the output value. + /// + public static List LinkableMediaDataTypes { get; protected set; } /// /// Returns true if we can use the EntityService to render the tree or revert to the original way @@ -250,5 +245,5 @@ function openMedia(id) { } } - } + } } From b1603a21a2ae6fda7a02442204a12fe4429a3a41 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 10:46:15 +1000 Subject: [PATCH 22/94] Fixes up strange culture issue with thread switching with the update to the AngularJsonMediaTypeFormatter. --- .../propertyeditors/rte/rte.controller.js | 15 +++- .../WebApi/AngularJsonMediaTypeFormatter.cs | 69 ++++++++++++------- .../WebApi/HttpControllerContextExtensions.cs | 2 +- 3 files changed, 59 insertions(+), 27 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js index 9fb365034b..a37906eb9f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js @@ -113,10 +113,23 @@ angular.module("umbraco") //timer might end up using unwanted cpu and we'd still have to listen to our saving event in case they clicked //save before the timeout elapsed. - //this doesnt actually work... + //TODO: We need to re-enable something like this to ensure the track changes is working with tinymce + // so we can detect if the form is dirty or not, Per has some better events to use as this one triggers + // even if you just enter/exit with mouse cursuor which doesn't really mean it's changed. + // see: http://issues.umbraco.org/issue/U4-4485 + //var alreadyDirty = false; //editor.on('change', function (e) { // angularHelper.safeApply($scope, function () { // $scope.model.value = editor.getContent(); + + // if (!alreadyDirty) { + // //make the form dirty manually so that the track changes works, setting our model doesn't trigger + // // the angular bits because tinymce replaces the textarea. + // var currForm = angularHelper.getCurrentForm($scope); + // currForm.$setDirty(); + // alreadyDirty = true; + // } + // }); //}); diff --git a/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs b/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs index b867ae2f81..4f16c32c33 100644 --- a/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs +++ b/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs @@ -32,39 +32,58 @@ namespace Umbraco.Web.WebApi /// public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext) { - //Before we were calling the base method to do this however it was causing problems: - // http://issues.umbraco.org/issue/U4-4546 - // though I can't seem to figure out why the null ref exception was being thrown, it is very strange. - // This code is basically what the base class does and at least we can track/test exactly what is going on. if (type == null) throw new ArgumentNullException("type"); if (writeStream == null) throw new ArgumentNullException("writeStream"); + + //Before we were calling the base method to do this however it was causing problems: + // http://issues.umbraco.org/issue/U4-4546 + // though I can't seem to figure out why the null ref exception was being thrown, it is very strange. - var task = Task.Factory.StartNew(() => + var effectiveEncoding = SelectCharacterEncoding(content == null ? null : content.Headers); + + using (var streamWriter = new StreamWriter(writeStream, effectiveEncoding)) { - var effectiveEncoding = SelectCharacterEncoding(content == null ? null : content.Headers); + //write the special encoding for angular json to the start + // (see: http://docs.angularjs.org/api/ng.$http) + streamWriter.Write(")]}',\n"); + streamWriter.Flush(); - using (var streamWriter = new StreamWriter(writeStream, effectiveEncoding)) - using (var jsonTextWriter = new JsonTextWriter(streamWriter) - { - CloseOutput = false - }) - { - //write the special encoding for angular json to the start - // (see: http://docs.angularjs.org/api/ng.$http) - streamWriter.Write(")]}',\n"); + return base.WriteToStreamAsync(type, value, writeStream, content, transportContext); + } - if (Indent) - { - jsonTextWriter.Formatting = Formatting.Indented; - } - var jsonSerializer = JsonSerializer.Create(SerializerSettings); - jsonSerializer.Serialize(jsonTextWriter, value); + //This is what the base method is doing for json, EXCEPT they have a handy TaskHelpers.RunSynchronously method + // that ensures that the code doesn't run async which avoids all sorts of thread sync issues like http context + // cultures, etc... but that is not public so we cannot use it. Instead I've modified our original version to be + // much simpler and we no longer create a separate memory stream so hopefully this solves the issue above, if it doesn't + // then we're kind of back to the drawing board. + + //var task = Task.Factory.StartNew(() => + //{ + // var effectiveEncoding = SelectCharacterEncoding(content == null ? null : content.Headers); + + // using (var streamWriter = new StreamWriter(writeStream, effectiveEncoding)) + // using (var jsonTextWriter = new JsonTextWriter(streamWriter) + // { + // CloseOutput = false + // }) + // { + // //write the special encoding for angular json to the start + // // (see: http://docs.angularjs.org/api/ng.$http) + // streamWriter.Write(")]}',\n"); + + // if (Indent) + // { + // jsonTextWriter.Formatting = Formatting.Indented; + // } + // var jsonSerializer = JsonSerializer.Create(SerializerSettings); + // jsonSerializer.Serialize(jsonTextWriter, value); + + // jsonTextWriter.Flush(); + // } + //}); + //return task; - jsonTextWriter.Flush(); - } - }); - return task; } } diff --git a/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs b/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs index a7e7160ae2..8cd3384915 100644 --- a/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs +++ b/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs @@ -59,7 +59,7 @@ namespace Umbraco.Web.WebApi { Func nullResponse = () => null; return (index + 1) == filters.Count - ? Task.Run(nullResponse) + ? Task.Run(nullResponse, token) : FilterContinuation(actionContext, token, filters, ++index); }); } From 8e9a9dc996847fbae8bd4358a46cdd9423bb426f Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 13:25:18 +1000 Subject: [PATCH 23/94] Fixes deep clone of User object --- src/Umbraco.Core/Models/Membership/User.cs | 40 ++++++++++++++++------ src/Umbraco.Tests/Models/UserTests.cs | 12 +++++++ 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Core/Models/Membership/User.cs b/src/Umbraco.Core/Models/Membership/User.cs index 9c710f4375..3e4daa4473 100644 --- a/src/Umbraco.Core/Models/Membership/User.cs +++ b/src/Umbraco.Core/Models/Membership/User.cs @@ -59,9 +59,9 @@ namespace Umbraco.Core.Models.Membership private IUserType _userType; private string _name; private Type _userTypeKey; - private readonly List _addedSections; - private readonly List _removedSections; - private readonly ObservableCollection _sectionCollection; + private List _addedSections; + private List _removedSections; + private ObservableCollection _sectionCollection; private int _sessionTimeout; private int _startContentId; private int _startMediaId; @@ -423,24 +423,44 @@ namespace Umbraco.Core.Models.Membership if (e.Action == NotifyCollectionChangedAction.Add) { + var item = e.NewItems.Cast().First(); + //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.RemoveAll(s => s == e.NewItems.Cast().First()); - _addedSections.RemoveAll(s => s == e.NewItems.Cast().First()); + _removedSections.Remove(item); + _addedSections.Remove(item); //add to the added sections - _addedSections.Add(e.NewItems.Cast().First()); + _addedSections.Add(item); } else if (e.Action == NotifyCollectionChangedAction.Remove) { + var item = e.OldItems.Cast().First(); + //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.RemoveAll(s => s == e.OldItems.Cast().First()); - _addedSections.RemoveAll(s => s == e.OldItems.Cast().First()); + _removedSections.Remove(item); + _addedSections.Remove(item); //add to the added sections - _removedSections.Add(e.OldItems.Cast().First()); + _removedSections.Add(item); } } - + + public override object DeepClone() + { + var clone = (User)base.DeepClone(); + + //need to create new collections otherwise they'll get copied by ref + clone._addedSections = new List(); + clone._removedSections = new List(); + clone._sectionCollection = new ObservableCollection(); + //re-create the event handler + clone._sectionCollection.CollectionChanged += clone.SectionCollectionChanged; + + clone.ResetDirtyProperties(false); + + return clone; + } + /// /// Internal class used to wrap the user in a profile /// diff --git a/src/Umbraco.Tests/Models/UserTests.cs b/src/Umbraco.Tests/Models/UserTests.cs index 84b0fe317d..94eadf7996 100644 --- a/src/Umbraco.Tests/Models/UserTests.cs +++ b/src/Umbraco.Tests/Models/UserTests.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using NUnit.Framework; using Umbraco.Core.Models.Membership; using Umbraco.Core.Serialization; @@ -53,6 +54,17 @@ namespace Umbraco.Tests.Models { Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(item, null)); } + + //ensure internal collections are differet + Assert.AreNotSame(item.AddedSections, clone.AddedSections); + Assert.AreNotSame(item.RemovedSections, clone.RemovedSections); + + //ensure event handlers are still wired on clone + clone.AddAllowedSection("blah"); + Assert.AreEqual(1, clone.AddedSections.Count()); + clone.RemoveAllowedSection("blah"); + Assert.AreEqual(1, clone.RemovedSections.Count()); + } [Test] From 9d96a4411f2d98f7ae80765b48b67f870292514d Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 13:26:16 +1000 Subject: [PATCH 24/94] Fixes deep clone of macro object --- src/Umbraco.Core/Models/Macro.cs | 22 ++++++++--- src/Umbraco.Tests/Models/MacroTests.cs | 51 ++++++++++++++++++++++++++ src/Umbraco.Tests/Umbraco.Tests.csproj | 1 + 3 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 src/Umbraco.Tests/Models/MacroTests.cs diff --git a/src/Umbraco.Core/Models/Macro.cs b/src/Umbraco.Core/Models/Macro.cs index d81f49fc4f..b892b8064e 100644 --- a/src/Umbraco.Core/Models/Macro.cs +++ b/src/Umbraco.Core/Models/Macro.cs @@ -109,9 +109,9 @@ namespace Umbraco.Core.Models private string _scriptAssembly; private string _scriptPath; private string _xslt; - private readonly MacroPropertyCollection _properties; - private readonly List _addedProperties; - private readonly List _removedProperties; + private MacroPropertyCollection _properties; + private List _addedProperties; + private List _removedProperties; private static readonly PropertyInfo AliasSelector = ExpressionHelper.GetPropertyInfo(x => x.Alias); private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo(x => x.Name); @@ -397,7 +397,19 @@ namespace Umbraco.Core.Models { get { return _properties; } } - - + + public override object DeepClone() + { + var clone = (Macro)base.DeepClone(); + + clone._addedProperties = new List(); + clone._removedProperties = new List(); + clone._properties = new MacroPropertyCollection(); + clone._properties.CollectionChanged += clone.PropertiesChanged; + + clone.ResetDirtyProperties(false); + + return clone; + } } } \ No newline at end of file diff --git a/src/Umbraco.Tests/Models/MacroTests.cs b/src/Umbraco.Tests/Models/MacroTests.cs new file mode 100644 index 0000000000..273971c93c --- /dev/null +++ b/src/Umbraco.Tests/Models/MacroTests.cs @@ -0,0 +1,51 @@ +using NUnit.Framework; +using Umbraco.Core.Models; +using Umbraco.Core.Models.EntityBase; +using Umbraco.Tests.TestHelpers; + +namespace Umbraco.Tests.Models +{ + [TestFixture] + public class MacroTests + { + [SetUp] + public void Init() + { + var config = SettingsForTests.GetDefault(); + SettingsForTests.ConfigureSettings(config); + } + + [Test] + public void Can_Deep_Clone() + { + var macro = new Macro(1, true, 3, "test", "Test", "blah", "blah", "xslt", false, true, true, "script"); + + var clone = (Macro)macro.DeepClone(); + + Assert.AreNotSame(clone, macro); + Assert.AreEqual(clone, macro); + Assert.AreEqual(clone.Id, macro.Id); + + Assert.AreNotSame(clone.Properties, macro.Properties); + Assert.AreNotSame(clone.AddedProperties, macro.AddedProperties); + Assert.AreNotSame(clone.RemovedProperties, macro.RemovedProperties); + + //This double verifies by reflection + var allProps = clone.GetType().GetProperties(); + foreach (var propertyInfo in allProps) + { + Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(macro, null)); + } + + //need to ensure the event handlers are wired + + var asDirty = (ICanBeDirty)clone; + + Assert.IsFalse(asDirty.IsPropertyDirty("Properties")); + clone.Properties.Add(new MacroProperty(3, "asdf", "SDF", 3, "asdfasdf")); + Assert.IsTrue(asDirty.IsPropertyDirty("Properties")); + + } + + } +} \ No newline at end of file diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index b36d94f3e1..fa9a84acc0 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -178,6 +178,7 @@ + From b02f7e0d3a4d29938912c29a71f232b18d626412 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 13:26:50 +1000 Subject: [PATCH 25/94] ensure properties reset on deep clone of ContentType (this is just a fail safe check) --- src/Umbraco.Core/Models/ContentType.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Umbraco.Core/Models/ContentType.cs b/src/Umbraco.Core/Models/ContentType.cs index ff61f0f9a4..1cf7fc9684 100644 --- a/src/Umbraco.Core/Models/ContentType.cs +++ b/src/Umbraco.Core/Models/ContentType.cs @@ -151,6 +151,9 @@ namespace Umbraco.Core.Models clone.PropertyTypes = PropertyTypeCollection .Where(x => x.PropertyGroupId == null) .Select(x => (PropertyType)x.DeepClone()).ToList(); + + clone.ResetDirtyProperties(false); + return clone; } From e0a0216b2dd3fb0bf99a4eedae258ce8c6a04eba Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 13:28:03 +1000 Subject: [PATCH 26/94] Fixes build in unit tests with ctor for service context --- src/Umbraco.Tests/MockTests.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Tests/MockTests.cs b/src/Umbraco.Tests/MockTests.cs index 9211321d55..f8810fe67f 100644 --- a/src/Umbraco.Tests/MockTests.cs +++ b/src/Umbraco.Tests/MockTests.cs @@ -55,7 +55,8 @@ namespace Umbraco.Tests new Mock().Object, new Mock().Object, new Mock().Object, - new Mock().Object); + new Mock().Object, + new Mock().Object); Assert.Pass(); } @@ -99,7 +100,8 @@ namespace Umbraco.Tests new Mock().Object, new Mock().Object, new Mock().Object, - new Mock().Object), + new Mock().Object, + new Mock().Object), CacheHelper.CreateDisabledCacheHelper()); Assert.Pass(); From 0382902984d55dc9138e5e2b09abbf38a2432a71 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 14:01:20 +1000 Subject: [PATCH 27/94] Fixes user cloning issues with allowed sections --- src/Umbraco.Core/Models/Membership/User.cs | 2 +- src/Umbraco.Tests/Models/UserTests.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Models/Membership/User.cs b/src/Umbraco.Core/Models/Membership/User.cs index 3e4daa4473..30214985f7 100644 --- a/src/Umbraco.Core/Models/Membership/User.cs +++ b/src/Umbraco.Core/Models/Membership/User.cs @@ -452,7 +452,7 @@ namespace Umbraco.Core.Models.Membership //need to create new collections otherwise they'll get copied by ref clone._addedSections = new List(); clone._removedSections = new List(); - clone._sectionCollection = new ObservableCollection(); + clone._sectionCollection = new ObservableCollection(_sectionCollection.ToList()); //re-create the event handler clone._sectionCollection.CollectionChanged += clone.SectionCollectionChanged; diff --git a/src/Umbraco.Tests/Models/UserTests.cs b/src/Umbraco.Tests/Models/UserTests.cs index 94eadf7996..7fa9742870 100644 --- a/src/Umbraco.Tests/Models/UserTests.cs +++ b/src/Umbraco.Tests/Models/UserTests.cs @@ -40,6 +40,8 @@ namespace Umbraco.Tests.Models Username = "username" }; + item.AddAllowedSection("test"); + var clone = (User)item.DeepClone(); Assert.AreNotSame(clone, item); @@ -47,6 +49,7 @@ namespace Umbraco.Tests.Models Assert.AreNotSame(clone.UserType, item.UserType); Assert.AreEqual(clone.UserType, item.UserType); + Assert.AreEqual(clone.AllowedSections.Count(), item.AllowedSections.Count()); //Verify normal properties with reflection var allProps = clone.GetType().GetProperties(); From 389724cba5a1576c65e447d44989b3e19eaaa690 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 14:06:15 +1000 Subject: [PATCH 28/94] Re-fixes: U4-4211 User without media section permission will be logged out immediately when accessing a document type using a media picker datatype (u7.0.3) --- src/Umbraco.Core/Models/UmbracoEntity.cs | 34 ++- .../Factories/UmbracoEntityFactory.cs | 15 +- .../Repositories/EntityRepository.cs | 211 ++++++++++++------ src/Umbraco.Core/StringExtensions.cs | 23 ++ .../Models/UmbracoEntityTests.cs | 15 +- .../Services/EntityServiceTests.cs | 22 +- .../common/services/mediahelper.service.js | 79 +++++-- .../fileupload/fileupload.controller.js | 6 +- .../imagecropper/imagecropper.controller.js | 6 +- .../mediapicker/mediapicker.controller.js | 28 ++- src/Umbraco.Web/Editors/EntityController.cs | 3 +- src/Umbraco.Web/Editors/ImagesController.cs | 2 + .../WebServices/FolderBrowserService.cs | 11 +- .../umbraco/Trees/BaseMediaTree.cs | 115 +++++----- 14 files changed, 378 insertions(+), 192 deletions(-) diff --git a/src/Umbraco.Core/Models/UmbracoEntity.cs b/src/Umbraco.Core/Models/UmbracoEntity.cs index 92bdf3c790..23a6bcfe5b 100644 --- a/src/Umbraco.Core/Models/UmbracoEntity.cs +++ b/src/Umbraco.Core/Models/UmbracoEntity.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Reflection; +using System.Runtime.CompilerServices; using Umbraco.Core.Models.EntityBase; namespace Umbraco.Core.Models @@ -47,13 +48,11 @@ namespace Umbraco.Core.Models public UmbracoEntity() { AdditionalData = new Dictionary(); - UmbracoProperties = new List(); } public UmbracoEntity(bool trashed) { AdditionalData = new Dictionary(); - UmbracoProperties = new List(); Trashed = trashed; } @@ -61,7 +60,6 @@ namespace Umbraco.Core.Models public UmbracoEntity(UInt64 trashed) { AdditionalData = new Dictionary(); - UmbracoProperties = new List(); Trashed = trashed == 1; } @@ -287,15 +285,31 @@ namespace Umbraco.Core.Models } } + public override object DeepClone() + { + var clone = (UmbracoEntity) base.DeepClone(); + + //This ensures that any value in the dictionary that is deep cloneable is cloned too + foreach (var key in clone.AdditionalData.Keys.ToArray()) + { + var deepCloneable = clone.AdditionalData[key] as IDeepCloneable; + if (deepCloneable != null) + { + clone.AdditionalData[key] = deepCloneable.DeepClone(); + } + } + + return clone; + } + /// - /// Some entities may expose additional data that other's might not, this custom data will be available in this collection + /// A struction that can be contained in the additional data of an UmbracoEntity representing + /// a user defined property /// - public IList UmbracoProperties { get; set; } - - internal class UmbracoProperty : IDeepCloneable + public class EntityProperty : IDeepCloneable { public string PropertyEditorAlias { get; set; } - public string Value { get; set; } + public object Value { get; set; } public object DeepClone() { //Memberwise clone on Entity will work since it doesn't have any deep elements @@ -304,7 +318,7 @@ namespace Umbraco.Core.Models return clone; } - protected bool Equals(UmbracoProperty other) + protected bool Equals(EntityProperty other) { return PropertyEditorAlias.Equals(other.PropertyEditorAlias) && string.Equals(Value, other.Value); } @@ -314,7 +328,7 @@ namespace Umbraco.Core.Models if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != this.GetType()) return false; - return Equals((UmbracoProperty) obj); + return Equals((EntityProperty) obj); } public override int GetHashCode() diff --git a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs index db1a99bc45..f33ae1af2f 100644 --- a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs @@ -44,7 +44,6 @@ namespace Umbraco.Core.Persistence.Factories ContentTypeAlias = asDictionary.ContainsKey("alias") ? (d.alias ?? string.Empty) : string.Empty, ContentTypeIcon = asDictionary.ContainsKey("icon") ? (d.icon ?? string.Empty) : string.Empty, ContentTypeThumbnail = asDictionary.ContainsKey("thumbnail") ? (d.thumbnail ?? string.Empty) : string.Empty, - UmbracoProperties = new List() }; var publishedVersion = default(Guid); @@ -87,7 +86,6 @@ namespace Umbraco.Core.Persistence.Factories ContentTypeAlias = dto.Alias ?? string.Empty, ContentTypeIcon = dto.Icon ?? string.Empty, ContentTypeThumbnail = dto.Thumbnail ?? string.Empty, - UmbracoProperties = new List() }; entity.IsPublished = dto.PublishedVersion != default(Guid) || (dto.NewestVersion != default(Guid) && dto.PublishedVersion == dto.NewestVersion); @@ -98,12 +96,13 @@ namespace Umbraco.Core.Persistence.Factories { foreach (var propertyDto in dto.UmbracoPropertyDtos) { - entity.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty - { - PropertyEditorAlias = - propertyDto.PropertyEditorAlias, - Value = propertyDto.UmbracoFile - }); + entity.AdditionalData[propertyDto.PropertyAlias] = new UmbracoEntity.EntityProperty + { + PropertyEditorAlias = propertyDto.PropertyEditorAlias, + Value = propertyDto.NTextValue.IsNullOrWhiteSpace() + ? propertyDto.NVarcharValue + : propertyDto.NTextValue.ConvertToJsonIfPossible() + }; } } diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs index 7336e36ab7..02f64aa0cf 100644 --- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs @@ -66,15 +66,31 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); - var sql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, key).Append(GetGroupBy(isContent, isMedia)); - var nodeDto = _work.Database.FirstOrDefault(sql); - if (nodeDto == null) - return null; - var factory = new UmbracoEntityFactory(); - var entity = factory.BuildEntityFromDynamic(nodeDto); + var sql = GetFullSqlForEntityType(key, isContent, isMedia, objectTypeId); + + if (isMedia) + { + //for now treat media differently + //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields + var entities = _work.Database.Fetch( + new UmbracoEntityRelator().Map, sql); - return entity; + return entities.FirstOrDefault(); + } + else + { + var nodeDto = _work.Database.FirstOrDefault(sql); + if (nodeDto == null) + return null; + + var factory = new UmbracoEntityFactory(); + var entity = factory.BuildEntityFromDynamic(nodeDto); + + return entity; + } + + } public virtual IUmbracoEntity Get(int id) @@ -94,16 +110,31 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); - var sql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, id).Append(GetGroupBy(isContent, isMedia)); - var nodeDto = _work.Database.FirstOrDefault(sql); - if (nodeDto == null) - return null; + var sql = GetFullSqlForEntityType(id, isContent, isMedia, objectTypeId); + + if (isMedia) + { + //for now treat media differently + //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields + var entities = _work.Database.Fetch( + new UmbracoEntityRelator().Map, sql); - var factory = new UmbracoEntityFactory(); - var entity = factory.BuildEntityFromDynamic(nodeDto); + return entities.FirstOrDefault(); + } + else + { + var nodeDto = _work.Database.FirstOrDefault(sql); + if (nodeDto == null) + return null; - return entity; + var factory = new UmbracoEntityFactory(); + var entity = factory.BuildEntityFromDynamic(nodeDto); + + return entity; + } + + } public virtual IEnumerable GetAll(Guid objectTypeId, params int[] ids) @@ -119,8 +150,8 @@ namespace Umbraco.Core.Persistence.Repositories { bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document); bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); - var sql = GetBaseWhere(GetBase, isContent, isMedia, string.Empty, objectTypeId).Append(GetGroupBy(isContent, isMedia)); - + var sql = GetFullSqlForEntityType(isContent, isMedia, objectTypeId, string.Empty); + var factory = new UmbracoEntityFactory(); if (isMedia) @@ -166,24 +197,28 @@ namespace Umbraco.Core.Persistence.Repositories bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media); var wheres = string.Concat(" AND ", string.Join(" AND ", ((Query)query).WhereClauses())); + var sqlClause = GetBaseWhere(GetBase, isContent, isMedia, wheres, objectTypeId); + var translator = new SqlTranslator(sqlClause, query); - var sql = translator.Translate().Append(GetGroupBy(isContent, isMedia)); + var entitySql = translator.Translate(); var factory = new UmbracoEntityFactory(); if (isMedia) { + var mediaSql = GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false)), wheres); + //treat media differently for now //TODO: We should really use this methodology for Content/Members too!! since it includes properties and ALL of the dynamic db fields var entities = _work.Database.Fetch( - new UmbracoEntityRelator().Map, sql); + new UmbracoEntityRelator().Map, mediaSql); return entities; } else { //use dynamic so that we can get ALL properties from the SQL so we can chuck that data into our AdditionalData - var dtos = _work.Database.Fetch(sql); + var dtos = _work.Database.Fetch(entitySql.Append(GetGroupBy(isContent, false))); return dtos.Select(factory.BuildEntityFromDynamic).Cast().ToList(); } } @@ -193,6 +228,62 @@ namespace Umbraco.Core.Persistence.Repositories #region Sql Statements + protected Sql GetFullSqlForEntityType(Guid key, bool isContent, bool isMedia, Guid objectTypeId) + { + var entitySql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, key); + + if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); + + return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); + } + + protected Sql GetFullSqlForEntityType(int id, bool isContent, bool isMedia, Guid objectTypeId) + { + var entitySql = GetBaseWhere(GetBase, isContent, isMedia, objectTypeId, id); + + if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); + + return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); + } + + protected Sql GetFullSqlForEntityType(bool isContent, bool isMedia, Guid objectTypeId, string additionalWhereClause) + { + var entitySql = GetBaseWhere(GetBase, isContent, isMedia, additionalWhereClause, objectTypeId); + + if (isMedia == false) return entitySql.Append(GetGroupBy(isContent, false)); + + return GetFullSqlForMedia(entitySql.Append(GetGroupBy(isContent, true, false))); + } + + private Sql GetFullSqlForMedia(Sql entitySql, string additionWhereStatement = "") + { + //this will add any dataNvarchar property to the output which can be added to the additional properties + + var joinSql = new Sql() + .Select("contentNodeId, versionId, dataNvarchar, dataNtext, propertyEditorAlias, alias as propertyTypeAlias") + .From() + .InnerJoin() + .On(dto => dto.NodeId, dto => dto.NodeId) + .InnerJoin() + .On(dto => dto.Id, dto => dto.PropertyTypeId) + .InnerJoin() + .On(dto => dto.DataTypeId, dto => dto.DataTypeId) + .Where("umbracoNode.nodeObjectType = @nodeObjectType" + additionWhereStatement, new {nodeObjectType = Constants.ObjectTypes.Media}); + + //We're going to create a query to query against the entity SQL + // because we cannot group by nText columns and we have a COUNT in the entitySql we cannot simply left join + // the entitySql query, we have to join the wrapped query to get the ntext in the result + + var wrappedSql = new Sql("SELECT * FROM (") + .Append(entitySql) + .Append(new Sql(") tmpTbl LEFT JOIN (")) + .Append(joinSql) + .Append(new Sql(") as property ON id = property.contentNodeId")) + .OrderBy("sortOrder"); + + return wrappedSql; + } + protected virtual Sql GetBase(bool isContent, bool isMedia, string additionWhereStatement = "") { var columns = new List @@ -221,13 +312,9 @@ namespace Umbraco.Core.Persistence.Repositories columns.Add("contenttype.isContainer"); } - if (isMedia) - { - columns.Add("property.dataNvarchar as umbracoFile"); - columns.Add("property.propertyEditorAlias"); - } + //Creates an SQL query to return a single row for the entity - var sql = new Sql() + var entitySql = new Sql() .Select(columns.ToArray()) .From("umbracoNode umbracoNode") .LeftJoin("umbracoNode parent").On("parent.parentID = umbracoNode.id"); @@ -235,7 +322,7 @@ namespace Umbraco.Core.Persistence.Repositories if (isContent || isMedia) { - sql.InnerJoin("cmsContent content").On("content.nodeId = umbracoNode.id") + entitySql.InnerJoin("cmsContent content").On("content.nodeId = umbracoNode.id") .LeftJoin("cmsContentType contenttype").On("contenttype.nodeId = content.contentType") .LeftJoin( "(SELECT nodeId, versionId FROM cmsDocument WHERE published = 1 GROUP BY nodeId, versionId) as published") @@ -245,18 +332,7 @@ namespace Umbraco.Core.Persistence.Repositories .On("umbracoNode.id = latest.nodeId"); } - if (isMedia) - { - sql.LeftJoin( - "(SELECT contentNodeId, versionId, dataNvarchar, propertyEditorAlias FROM cmsPropertyData " + - "INNER JOIN umbracoNode ON cmsPropertyData.contentNodeId = umbracoNode.id " + - "INNER JOIN cmsPropertyType ON cmsPropertyType.id = cmsPropertyData.propertytypeid " + - "INNER JOIN cmsDataType ON cmsPropertyType.dataTypeId = cmsDataType.nodeId "+ - "WHERE umbracoNode.nodeObjectType = '" + Constants.ObjectTypes.Media + "'" + additionWhereStatement + ") as property") - .On("umbracoNode.id = property.contentNodeId"); - } - - return sql; + return entitySql; } protected virtual Sql GetBaseWhere(Func baseQuery, bool isContent, bool isMedia, string additionWhereStatement, Guid nodeObjectType) @@ -298,7 +374,7 @@ namespace Umbraco.Core.Persistence.Repositories return sql; } - protected virtual Sql GetGroupBy(bool isContent, bool isMedia) + protected virtual Sql GetGroupBy(bool isContent, bool isMedia, bool includeSort = true) { var columns = new List { @@ -324,19 +400,18 @@ namespace Umbraco.Core.Persistence.Repositories columns.Add("contenttype.thumbnail"); columns.Add("contenttype.isContainer"); } + + var sql = new Sql() + .GroupBy(columns.ToArray()); - if (isMedia) + if (includeSort) { - columns.Add("property.dataNvarchar"); - columns.Add("property.propertyEditorAlias"); + sql = sql.OrderBy("umbracoNode.sortOrder"); } - var sql = new Sql() - .GroupBy(columns.ToArray()) - .OrderBy("umbracoNode.sortOrder"); return sql; } - + #endregion /// @@ -377,15 +452,21 @@ namespace Umbraco.Core.Persistence.Repositories [ResultColumn] public List UmbracoPropertyDtos { get; set; } } - + [ExplicitColumns] internal class UmbracoPropertyDto { [Column("propertyEditorAlias")] public string PropertyEditorAlias { get; set; } - [Column("umbracoFile")] - public string UmbracoFile { get; set; } + [Column("propertyTypeAlias")] + public string PropertyAlias { get; set; } + + [Column("dataNvarchar")] + public string NVarcharValue { get; set; } + + [Column("dataNtext")] + public string NTextValue { get; set; } } /// @@ -412,16 +493,15 @@ namespace Umbraco.Core.Persistence.Repositories // Is this the same UmbracoEntity as the current one we're processing if (Current != null && Current.Key == a.uniqueID) { - // Yes, just add this UmbracoProperty to the current UmbracoEntity's collection - if (Current.UmbracoProperties == null) + // Add this UmbracoProperty to the current additional data + Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty { - Current.UmbracoProperties = new List(); - } - Current.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty - { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.UmbracoFile - }); + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.NTextValue.IsNullOrWhiteSpace() + ? p.NVarcharValue + : p.NTextValue.ConvertToJsonIfPossible() + }; + // Return null to indicate we're not done with this UmbracoEntity yet return null; } @@ -437,14 +517,13 @@ namespace Umbraco.Core.Persistence.Repositories Current = _factory.BuildEntityFromDynamic(a); //add the property/create the prop list if null - Current.UmbracoProperties = new List - { - new UmbracoEntity.UmbracoProperty - { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.UmbracoFile - } - }; + Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty + { + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.NTextValue.IsNullOrWhiteSpace() + ? p.NVarcharValue + : p.NTextValue.ConvertToJsonIfPossible() + }; // Return the now populated previous UmbracoEntity (or null if first time through) return prev; diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index 395f9cea0c..d1b20cce30 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -10,6 +10,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Xml; +using Newtonsoft.Json; using Umbraco.Core.Configuration; using System.Web.Security; using Umbraco.Core.Strings; @@ -52,6 +53,28 @@ namespace Umbraco.Core || (input.StartsWith("[") && input.EndsWith("]")); } + /// + /// Returns a JObject/JArray instance if the string can be converted to json, otherwise returns the string + /// + /// + /// + internal static object ConvertToJsonIfPossible(this string input) + { + if (input.DetectIsJson() == false) + { + return input; + } + try + { + var obj = JsonConvert.DeserializeObject(input); + return obj; + } + catch (Exception ex) + { + return input; + } + } + internal static string ReplaceNonAlphanumericChars(this string input, char replacement) { //any character that is not alphanumeric, convert to a hyphen diff --git a/src/Umbraco.Tests/Models/UmbracoEntityTests.cs b/src/Umbraco.Tests/Models/UmbracoEntityTests.cs index ac70364e67..52513d551d 100644 --- a/src/Umbraco.Tests/Models/UmbracoEntityTests.cs +++ b/src/Umbraco.Tests/Models/UmbracoEntityTests.cs @@ -47,12 +47,13 @@ namespace Umbraco.Tests.Models }; item.AdditionalData.Add("test1", 3); item.AdditionalData.Add("test2", "valuie"); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + + item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty() { Value = "test", PropertyEditorAlias = "TestPropertyEditor" }); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty() { Value = "test2", PropertyEditorAlias = "TestPropertyEditor2" @@ -82,12 +83,6 @@ namespace Umbraco.Tests.Models Assert.AreEqual(clone.UpdateDate, item.UpdateDate); Assert.AreEqual(clone.AdditionalData.Count, item.AdditionalData.Count); Assert.AreEqual(clone.AdditionalData, item.AdditionalData); - Assert.AreEqual(clone.UmbracoProperties.Count, item.UmbracoProperties.Count); - for (var i = 0; i < clone.UmbracoProperties.Count; i++) - { - Assert.AreNotSame(clone.UmbracoProperties[i], item.UmbracoProperties[i]); - Assert.AreEqual(clone.UmbracoProperties[i], item.UmbracoProperties[i]); - } //This double verifies by reflection var allProps = clone.GetType().GetProperties(); @@ -125,12 +120,12 @@ namespace Umbraco.Tests.Models }; item.AdditionalData.Add("test1", 3); item.AdditionalData.Add("test2", "valuie"); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + item.AdditionalData.Add("test3", new UmbracoEntity.EntityProperty() { Value = "test", PropertyEditorAlias = "TestPropertyEditor" }); - item.UmbracoProperties.Add(new UmbracoEntity.UmbracoProperty() + item.AdditionalData.Add("test4", new UmbracoEntity.EntityProperty() { Value = "test2", PropertyEditorAlias = "TestPropertyEditor2" diff --git a/src/Umbraco.Tests/Services/EntityServiceTests.cs b/src/Umbraco.Tests/Services/EntityServiceTests.cs index 82cc2c7560..9826e9fc3f 100644 --- a/src/Umbraco.Tests/Services/EntityServiceTests.cs +++ b/src/Umbraco.Tests/Services/EntityServiceTests.cs @@ -32,7 +32,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.Document); + var entities = service.GetAll(UmbracoObjectTypes.Document).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -45,7 +45,7 @@ namespace Umbraco.Tests.Services var service = ServiceContext.EntityService; var objectTypeId = new Guid(Constants.ObjectTypes.Document); - var entities = service.GetAll(objectTypeId); + var entities = service.GetAll(objectTypeId).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -57,7 +57,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(); + var entities = service.GetAll().ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(4)); @@ -69,7 +69,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetChildren(-1, UmbracoObjectTypes.Document); + var entities = service.GetChildren(-1, UmbracoObjectTypes.Document).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -92,7 +92,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.DocumentType); + var entities = service.GetAll(UmbracoObjectTypes.DocumentType).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -104,7 +104,7 @@ namespace Umbraco.Tests.Services var service = ServiceContext.EntityService; var objectTypeId = new Guid(Constants.ObjectTypes.DocumentType); - var entities = service.GetAll(objectTypeId); + var entities = service.GetAll(objectTypeId).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -115,7 +115,7 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(); + var entities = service.GetAll().ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(1)); @@ -126,16 +126,16 @@ namespace Umbraco.Tests.Services { var service = ServiceContext.EntityService; - var entities = service.GetAll(UmbracoObjectTypes.Media); + var entities = service.GetAll(UmbracoObjectTypes.Media).ToArray(); Assert.That(entities.Any(), Is.True); Assert.That(entities.Count(), Is.EqualTo(3)); - //Assert.That(entities.Any(x => ((UmbracoEntity)x).UmbracoFile != string.Empty), Is.True); + Assert.That( entities.Any( x => - ((UmbracoEntity) x).UmbracoProperties.Any( - y => y.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias)), Is.True); + x.AdditionalData.Any(y => y.Value is UmbracoEntity.EntityProperty + && ((UmbracoEntity.EntityProperty)y.Value).PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias)), Is.True); } private static bool _isSetup = false; diff --git a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js index 2e06bc1656..67dbcecc54 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js @@ -129,30 +129,79 @@ function mediaHelper(umbRequestHelper) { _mediaFileResolvers[propertyEditorAlias] = func; }, + /** + * @ngdoc function + * @name umbraco.services.mediaHelper#resolveFileFromEntity + * @methodOf umbraco.services.mediaHelper + * @function + * + * @description + * Gets the media file url for a media entity returned with the entityResource + * + * @param {object} mediaEntity A media Entity returned from the entityResource + * @param {boolean} thumbnail Whether to return the thumbnail url or normal url + */ + resolveFileFromEntity : function(mediaEntity, thumbnail) { + + if (!angular.isObject(mediaEntity.metaData)) { + throw "Cannot resolve the file url from the mediaEntity, it does not contain the required metaData"; + } + + var values = _.values(mediaEntity.metaData); + for (var i = 0; i < values.length; i++) { + var val = values[i]; + if (angular.isObject(val) && val.PropertyEditorAlias) { + for (var resolver in _mediaFileResolvers) { + if (val.PropertyEditorAlias === resolver) { + //we need to format a property variable that coincides with how the property would be structured + // if it came from the mediaResource just to keep things slightly easier for the file resolvers. + var property = { value: val.Value }; + + return _mediaFileResolvers[resolver](property, mediaEntity, thumbnail); + } + } + } + } + + return ""; + }, + + /** + * @ngdoc function + * @name umbraco.services.mediaHelper#resolveFile + * @methodOf umbraco.services.mediaHelper + * @function + * + * @description + * Gets the media file url for a media object returned with the mediaResource + * + * @param {object} mediaEntity A media Entity returned from the entityResource + * @param {boolean} thumbnail Whether to return the thumbnail url or normal url + */ /*jshint loopfunc: true */ resolveFile : function(mediaItem, thumbnail){ - var _props = []; - function _iterateProps(props){ - var result = null; + + function iterateProps(props){ + var res = null; for(var resolver in _mediaFileResolvers) { - var property = _.find(props, function(property){ return property.editor === resolver; }); + var property = _.find(props, function(prop){ return prop.editor === resolver; }); if(property){ - result = _mediaFileResolvers[resolver](property, mediaItem, thumbnail); + res = _mediaFileResolvers[resolver](property, mediaItem, thumbnail); break; } } - return result; + return res; } //we either have properties raw on the object, or spread out on tabs var result = ""; if(mediaItem.properties){ - result = _iterateProps(mediaItem.properties); + result = iterateProps(mediaItem.properties); }else if(mediaItem.tabs){ for(var tab in mediaItem.tabs) { if(mediaItem.tabs[tab].properties){ - result = _iterateProps(mediaItem.tabs[tab].properties); + result = iterateProps(mediaItem.tabs[tab].properties); if(result){ break; } @@ -164,26 +213,26 @@ function mediaHelper(umbRequestHelper) { /*jshint loopfunc: true */ hasFilePropertyType : function(mediaItem){ - function _iterateProps(props){ - var result = false; + function iterateProps(props){ + var res = false; for(var resolver in _mediaFileResolvers) { - var property = _.find(props, function(property){ return property.editor === resolver; }); + var property = _.find(props, function(prop){ return prop.editor === resolver; }); if(property){ - result = true; + res = true; break; } } - return result; + return res; } //we either have properties raw on the object, or spread out on tabs var result = false; if(mediaItem.properties){ - result = _iterateProps(mediaItem.properties); + result = iterateProps(mediaItem.properties); }else if(mediaItem.tabs){ for(var tab in mediaItem.tabs) { if(mediaItem.tabs[tab].properties){ - result = _iterateProps(mediaItem.tabs[tab].properties); + result = iterateProps(mediaItem.tabs[tab].properties); if(result){ break; } 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 0224853e7b..7aa65473a6 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 @@ -125,11 +125,15 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag angular.module("umbraco") .controller('Umbraco.PropertyEditors.FileUploadController', fileUploadController) .run(function(mediaHelper, umbRequestHelper){ - if(mediaHelper && mediaHelper.registerFileResolver){ + if (mediaHelper && mediaHelper.registerFileResolver) { + + //NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource + // they contain different data structures so if we need to query against it we need to be aware of this. mediaHelper.registerFileResolver("Umbraco.UploadField", function(property, entity, thumbnail){ if (thumbnail) { if (mediaHelper.detectIfImageByExtension(property.value)) { + var thumbnailUrl = umbRequestHelper.getApiUrl( "imagesApiBaseUrl", "GetBigThumbnail", diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js index abcdb0852f..7189ca504a 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js @@ -98,11 +98,14 @@ angular.module('umbraco') }) .run(function (mediaHelper, umbRequestHelper) { if (mediaHelper && mediaHelper.registerFileResolver) { + + //NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource + // they contain different data structures so if we need to query against it we need to be aware of this. mediaHelper.registerFileResolver("Umbraco.ImageCropper", function (property, entity, thumbnail) { if (property.value.src) { if (thumbnail === true) { - return property.value.src + "?width=600&mode=max"; + return property.value.src + "?width=500&mode=max"; } else { return property.value.src; @@ -114,6 +117,7 @@ angular.module('umbraco') if (thumbnail) { if (mediaHelper.detectIfImageByExtension(property.value)) { + var thumbnailUrl = umbRequestHelper.getApiUrl( "imagesApiBaseUrl", "GetBigThumbnail", diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js index e17a03473c..0a1066cda3 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js @@ -1,7 +1,7 @@ //this controller simply tells the dialogs service to open a mediaPicker window //with a specified callback, this callback will receive an object with a selection on it angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerController", - function($rootScope, $scope, dialogService, mediaResource, mediaHelper, $timeout) { + function ($rootScope, $scope, dialogService, entityResource, mediaResource, mediaHelper, $timeout) { //check the pre-values for multi-picker var multiPicker = $scope.model.config.multiPicker && $scope.model.config.multiPicker !== '0' ? true : false; @@ -17,18 +17,24 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl if ($scope.model.value) { var ids = $scope.model.value.split(','); - mediaResource.getByIds(ids).then(function (medias) { - //img.media = media; + //NOTE: We need to use the entityResource NOT the mediaResource here because + // the mediaResource has server side auth configured for which the user must have + // access to the media section, if they don't they'll get auth errors. The entityResource + // acts differently in that it allows access if the user has access to any of the apps that + // might require it's use. Therefore we need to use the metatData property to get at the thumbnail + // value. + + entityResource.getByIds(ids, "Media").then(function (medias) { + _.each(medias, function (media, i) { //only show non-trashed items - if(media.parentId >= -1){ - if(!media.thumbnail){ - media.thumbnail = mediaHelper.resolveFile(media, true); + if (media.parentId >= -1) { + + if (!media.thumbnail) { + media.thumbnail = mediaHelper.resolveFileFromEntity(media, true); } - //media.src = mediaHelper.getImagePropertyValue({ imageModel: media }); - //media.thumbnail = mediaHelper.getThumbnailFromPath(media.src); $scope.images.push(media); $scope.ids.push(media.id); } @@ -60,10 +66,10 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl _.each(data, function(media, i) { - if(!media.thumbnail){ - media.thumbnail = mediaHelper.resolveFile(media, true); + if (!media.thumbnail) { + media.thumbnail = mediaHelper.resolveFileFromEntity(media, true); } - + $scope.images.push(media); $scope.ids.push(media.id); }); diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs index 52d60e566f..507c229122 100644 --- a/src/Umbraco.Web/Editors/EntityController.cs +++ b/src/Umbraco.Web/Editors/EntityController.cs @@ -531,8 +531,9 @@ namespace Umbraco.Web.Editors var objectType = ConvertToObjectType(entityType); if (objectType.HasValue) { - return ids.Select(id => Mapper.Map(Services.EntityService.Get(id, objectType.Value))) + var result = ids.Select(id => Mapper.Map(Services.EntityService.Get(id, objectType.Value))) .WhereNotNull(); + return result; } //now we need to convert the unknown ones switch (entityType) diff --git a/src/Umbraco.Web/Editors/ImagesController.cs b/src/Umbraco.Web/Editors/ImagesController.cs index 39b872af6d..54938be76d 100644 --- a/src/Umbraco.Web/Editors/ImagesController.cs +++ b/src/Umbraco.Web/Editors/ImagesController.cs @@ -104,6 +104,8 @@ namespace Umbraco.Web.Editors return GetResized(imagePath, width, Convert.ToString(width)); } + //TODO: We should delegate this to ImageProcessing + /// /// Gets a resized image - if the requested max width is greater than the original image, only the original image will be returned. /// diff --git a/src/Umbraco.Web/WebServices/FolderBrowserService.cs b/src/Umbraco.Web/WebServices/FolderBrowserService.cs index 2c8cff527d..bf5a3f1bd5 100644 --- a/src/Umbraco.Web/WebServices/FolderBrowserService.cs +++ b/src/Umbraco.Web/WebServices/FolderBrowserService.cs @@ -32,9 +32,14 @@ namespace Umbraco.Web.WebServices var entities = service.GetChildren(parentId, UmbracoObjectTypes.Media); foreach (UmbracoEntity entity in entities) { - var uploadFieldProperty = entity.UmbracoProperties.FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); - - var thumbnailUrl = uploadFieldProperty == null ? "" : ThumbnailProvidersResolver.Current.GetThumbnailUrl(uploadFieldProperty.Value); + var uploadFieldProperty = entity.AdditionalData + .Select(x => x.Value as UmbracoEntity.EntityProperty) + .Where(x => x != null) + .FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); + + //var uploadFieldProperty = entity.UmbracoProperties.FirstOrDefault(x => x.PropertyEditorAlias == Constants.PropertyEditors.UploadFieldAlias); + + var thumbnailUrl = uploadFieldProperty == null ? "" : ThumbnailProvidersResolver.Current.GetThumbnailUrl((string)uploadFieldProperty.Value); var item = new { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs index 0b48f7a2e1..f72457d867 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs @@ -21,28 +21,28 @@ namespace umbraco.cms.presentation.Trees { [Obsolete("This is no longer used and will be removed from the codebase in the future")] - public abstract class BaseMediaTree : BaseTree - { + public abstract class BaseMediaTree : BaseTree + { private User _user; - public BaseMediaTree(string application) - : base(application) - { - - } + public BaseMediaTree(string application) + : base(application) + { + + } + + /// + /// Returns the current User. This ensures that we don't instantiate a new User object + /// each time. + /// + protected User CurrentUser + { + get + { + return (_user == null ? (_user = UmbracoEnsuredPage.CurrentUser) : _user); + } + } - /// - /// Returns the current User. This ensures that we don't instantiate a new User object - /// each time. - /// - protected User CurrentUser - { - get - { - return (_user == null ? (_user = UmbracoEnsuredPage.CurrentUser) : _user); - } - } - public override void RenderJS(ref StringBuilder Javascript) { if (!string.IsNullOrEmpty(this.FunctionToCall)) @@ -54,7 +54,7 @@ namespace umbraco.cms.presentation.Trees else if (!this.IsDialog) { Javascript.Append( - @" + @" function openMedia(id) { " + ClientTools.Scripts.GetContentFrame() + ".location.href = 'editMedia.aspx?id=' + id;" + @" } @@ -98,12 +98,12 @@ function openMedia(id) { // to call so that is fine. var entities = Services.EntityService.GetChildren(m_id, UmbracoObjectTypes.Media).ToArray(); - + foreach (UmbracoEntity entity in entities) { var e = entity; var xNode = PerformNodeRender(e.Id, entity.Name, e.HasChildren, e.ContentTypeIcon, e.ContentTypeAlias, () => GetLinkValue(e)); - + OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty); if (xNode != null) { @@ -111,7 +111,7 @@ function openMedia(id) { OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty); } } - } + } } private XmlTreeNode PerformNodeRender(int nodeId, string nodeName, bool hasChildren, string icon, string contentTypeAlias, Func getLinkValue) @@ -164,28 +164,28 @@ function openMedia(id) { return xNode; } - + /// - /// Returns the value for a link in WYSIWYG mode, by default only media items that have a - /// DataTypeUploadField are linkable, however, a custom tree can be created which overrides - /// this method, or another GUID for a custom data type can be added to the LinkableMediaDataTypes - /// list on application startup. - /// - /// - /// - /// + /// Returns the value for a link in WYSIWYG mode, by default only media items that have a + /// DataTypeUploadField are linkable, however, a custom tree can be created which overrides + /// this method, or another GUID for a custom data type can be added to the LinkableMediaDataTypes + /// list on application startup. + /// + /// + /// + /// public virtual string GetLinkValue(Media dd, string nodeLink) { var props = dd.GenericProperties; - foreach (Property p in props) - { - Guid currId = p.PropertyType.DataTypeDefinition.DataType.Id; - if (LinkableMediaDataTypes.Contains(currId) && string.IsNullOrEmpty(p.Value.ToString()) == false) - { - return p.Value.ToString(); - } - } + foreach (Property p in props) + { + Guid currId = p.PropertyType.DataTypeDefinition.DataType.Id; + if (LinkableMediaDataTypes.Contains(currId) && string.IsNullOrEmpty(p.Value.ToString()) == false) + { + return p.Value.ToString(); + } + } return ""; } @@ -200,29 +200,34 @@ function openMedia(id) { /// internal virtual string GetLinkValue(UmbracoEntity entity) { - foreach (var property in entity.UmbracoProperties) + foreach (var property in entity.AdditionalData + .Select(x => x.Value as UmbracoEntity.EntityProperty) + .Where(x => x != null)) { + + //required for backwards compatibility with v7 with changing the GUID -> alias var controlId = LegacyPropertyEditorIdToAliasConverter.GetLegacyIdFromAlias(property.PropertyEditorAlias, LegacyPropertyEditorIdToAliasConverter.NotFoundLegacyIdResponseBehavior.ReturnNull); if (controlId != null) { - if (LinkableMediaDataTypes.Contains(controlId.Value) && - string.IsNullOrEmpty(property.Value) == false) - return property.Value; - } + if (LinkableMediaDataTypes.Contains(controlId.Value) + && string.IsNullOrEmpty((string)property.Value) == false) + + return property.Value.ToString(); + } } return ""; } - /// - /// By default, any media type that is to be "linkable" in the WYSIWYG editor must contain - /// a DataTypeUploadField data type which will ouput the value for the link, however, if - /// a developer wants the WYSIWYG editor to link to a custom media type, they will either have - /// to create their own media tree and inherit from this one and override the GetLinkValue - /// or add another GUID to the LinkableMediaDataType list on application startup that matches - /// the GUID of a custom data type. The order of property types on the media item definition will determine the output value. - /// - public static List LinkableMediaDataTypes { get; protected set; } + /// + /// By default, any media type that is to be "linkable" in the WYSIWYG editor must contain + /// a DataTypeUploadField data type which will ouput the value for the link, however, if + /// a developer wants the WYSIWYG editor to link to a custom media type, they will either have + /// to create their own media tree and inherit from this one and override the GetLinkValue + /// or add another GUID to the LinkableMediaDataType list on application startup that matches + /// the GUID of a custom data type. The order of property types on the media item definition will determine the output value. + /// + public static List LinkableMediaDataTypes { get; protected set; } /// /// Returns true if we can use the EntityService to render the tree or revert to the original way @@ -245,5 +250,5 @@ function openMedia(id) { } } - } + } } From 0d37a1f6e81407a014218d7cceb4a425b9ed4fda Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 15:19:00 +1000 Subject: [PATCH 29/94] Fixes: U4-4849 Cannot change a users language/sections in the back office --- .../EntityBase/TracksChangesEntityBase.cs | 10 ++++-- src/Umbraco.Core/Models/Membership/User.cs | 24 ++++++------- .../Persistence/Factories/UserFactory.cs | 2 +- .../Repositories/UserRepository.cs | 18 ++++++---- src/Umbraco.Tests/Models/ContentTests.cs | 8 +++++ src/Umbraco.Tests/Models/ContentTypeTests.cs | 20 +++++++++-- .../Services/UserServiceTests.cs | 35 +++++++++++++++++++ .../umbraco/users/EditUser.aspx.cs | 4 +-- src/umbraco.businesslogic/User.cs | 26 ++++++++++++++ 9 files changed, 119 insertions(+), 28 deletions(-) diff --git a/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs b/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs index 9a357b3b38..8e95a1a7e2 100644 --- a/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs +++ b/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs @@ -17,7 +17,7 @@ namespace Umbraco.Core.Models.EntityBase /// /// Tracks the properties that have changed /// - private readonly IDictionary _propertyChangedInfo = new Dictionary(); + private IDictionary _propertyChangedInfo = new Dictionary(); /// /// Tracks the properties that we're changed before the last commit (or last call to ResetDirtyProperties) @@ -86,7 +86,9 @@ namespace Umbraco.Core.Models.EntityBase /// public void ForgetPreviouslyDirtyProperties() { - _lastPropertyChangedInfo.Clear(); + //NOTE: We cannot .Clear() because when we memberwise clone this will be the SAME + // instance as the one on the clone, so we need to create a new instance. + _lastPropertyChangedInfo = new Dictionary(); } /// @@ -119,7 +121,9 @@ namespace Umbraco.Core.Models.EntityBase _lastPropertyChangedInfo = _propertyChangedInfo.ToDictionary(v => v.Key, v => v.Value); } - _propertyChangedInfo.Clear(); + //NOTE: We cannot .Clear() because when we memberwise clone this will be the SAME + // instance as the one on the clone, so we need to create a new instance. + _propertyChangedInfo = new Dictionary(); } /// diff --git a/src/Umbraco.Core/Models/Membership/User.cs b/src/Umbraco.Core/Models/Membership/User.cs index 30214985f7..ba9b89d779 100644 --- a/src/Umbraco.Core/Models/Membership/User.cs +++ b/src/Umbraco.Core/Models/Membership/User.cs @@ -244,7 +244,10 @@ namespace Umbraco.Core.Models.Membership public void RemoveAllowedSection(string sectionAlias) { - _sectionCollection.Remove(sectionAlias); + if (_sectionCollection.Contains(sectionAlias)) + { + _sectionCollection.Remove(sectionAlias); + } } public void AddAllowedSection(string sectionAlias) @@ -425,23 +428,20 @@ namespace Umbraco.Core.Models.Membership { var item = e.NewItems.Cast().First(); - //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.Remove(item); - _addedSections.Remove(item); - - //add to the added sections - _addedSections.Add(item); + if (_addedSections.Contains(item) == false) + { + _addedSections.Add(item); + } } else if (e.Action == NotifyCollectionChangedAction.Remove) { var item = e.OldItems.Cast().First(); - //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.Remove(item); - _addedSections.Remove(item); + if (_removedSections.Contains(item) == false) + { + _removedSections.Add(item); + } - //add to the added sections - _removedSections.Add(item); } } diff --git a/src/Umbraco.Core/Persistence/Factories/UserFactory.cs b/src/Umbraco.Core/Persistence/Factories/UserFactory.cs index 51de2b2cab..305c630a71 100644 --- a/src/Umbraco.Core/Persistence/Factories/UserFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/UserFactory.cs @@ -72,7 +72,7 @@ namespace Umbraco.Core.Persistence.Factories { AppAlias = app }; - if (entity.Id != null) + if (entity.HasIdentity) { appDto.UserId = (int) entity.Id; } diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index 34775df456..67775cca54 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -210,9 +210,19 @@ namespace Umbraco.Core.Persistence.Repositories var user = (User)entity; if (user.IsPropertyDirty("AllowedSections")) { + //now we need to delete any applications that have been removed + foreach (var section in user.RemovedSections) + { + //we need to manually delete thsi record because it has a composite key + Database.Delete("WHERE app=@Section AND " + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("user") + "=@UserId", + new { Section = section, UserId = (int)user.Id }); + } + //for any that exist on the object, we need to determine if we need to update or insert + //NOTE: the User2AppDtos collection wil always be equal to the User.AllowedSections foreach (var sectionDto in userDto.User2AppDtos) { + //if something has been added then insert it if (user.AddedSections.Contains(sectionDto.AppAlias)) { //we need to insert since this was added @@ -226,13 +236,7 @@ namespace Umbraco.Core.Persistence.Repositories } } - //now we need to delete any applications that have been removed - foreach (var section in user.RemovedSections) - { - //we need to manually delete thsi record because it has a composite key - Database.Delete("WHERE app=@Section AND " + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("user") + "=@UserId", - new { Section = section, UserId = (int)user.Id }); - } + } ((ICanBeDirty)entity).ResetDirtyProperties(); diff --git a/src/Umbraco.Tests/Models/ContentTests.cs b/src/Umbraco.Tests/Models/ContentTests.cs index 61eda9633d..1501cf09f3 100644 --- a/src/Umbraco.Tests/Models/ContentTests.cs +++ b/src/Umbraco.Tests/Models/ContentTests.cs @@ -272,6 +272,14 @@ namespace Umbraco.Tests.Models { Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(content, null)); } + + //need to ensure the event handlers are wired + + var asDirty = (ICanBeDirty)clone; + + Assert.IsFalse(asDirty.IsPropertyDirty("Properties")); + clone.Properties.Add(new Property(1, Guid.NewGuid(), new PropertyType("test", DataTypeDatabaseType.Ntext) {Alias = "blah"}, "blah")); + Assert.IsTrue(asDirty.IsPropertyDirty("Properties")); } [Test] diff --git a/src/Umbraco.Tests/Models/ContentTypeTests.cs b/src/Umbraco.Tests/Models/ContentTypeTests.cs index 8154b60ae2..0021420517 100644 --- a/src/Umbraco.Tests/Models/ContentTypeTests.cs +++ b/src/Umbraco.Tests/Models/ContentTypeTests.cs @@ -4,12 +4,13 @@ using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Serialization; +using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; namespace Umbraco.Tests.Models { [TestFixture] - public class ContentTypeTests + public class ContentTypeTests : BaseUmbracoConfigurationTest { [Test] public void Can_Deep_Clone_Content_Type_Sort() @@ -140,19 +141,21 @@ namespace Umbraco.Tests.Models Assert.AreNotSame(clone.AllowedTemplates.ElementAt(index), contentType.AllowedTemplates.ElementAt(index)); Assert.AreEqual(clone.AllowedTemplates.ElementAt(index), contentType.AllowedTemplates.ElementAt(index)); } + Assert.AreNotSame(clone.PropertyGroups, contentType.PropertyGroups); Assert.AreEqual(clone.PropertyGroups.Count, contentType.PropertyGroups.Count); for (var index = 0; index < contentType.PropertyGroups.Count; index++) { Assert.AreNotSame(clone.PropertyGroups[index], contentType.PropertyGroups[index]); Assert.AreEqual(clone.PropertyGroups[index], contentType.PropertyGroups[index]); } + Assert.AreNotSame(clone.PropertyTypes, contentType.PropertyTypes); Assert.AreEqual(clone.PropertyTypes.Count(), contentType.PropertyTypes.Count()); for (var index = 0; index < contentType.PropertyTypes.Count(); index++) { Assert.AreNotSame(clone.PropertyTypes.ElementAt(index), contentType.PropertyTypes.ElementAt(index)); Assert.AreEqual(clone.PropertyTypes.ElementAt(index), contentType.PropertyTypes.ElementAt(index)); } - + Assert.AreEqual(clone.CreateDate, contentType.CreateDate); Assert.AreEqual(clone.CreatorId, contentType.CreatorId); Assert.AreEqual(clone.Key, contentType.Key); @@ -167,13 +170,24 @@ namespace Umbraco.Tests.Models Assert.AreEqual(clone.Thumbnail, contentType.Thumbnail); Assert.AreEqual(clone.Icon, contentType.Icon); Assert.AreEqual(clone.IsContainer, contentType.IsContainer); - + //This double verifies by reflection var allProps = clone.GetType().GetProperties(); foreach (var propertyInfo in allProps) { Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(contentType, null)); } + + //need to ensure the event handlers are wired + + var asDirty = (ICanBeDirty)clone; + + Assert.IsFalse(asDirty.IsPropertyDirty("PropertyTypes")); + clone.AddPropertyType(new PropertyType("test", DataTypeDatabaseType.Nvarchar) { Alias = "blah" }); + Assert.IsTrue(asDirty.IsPropertyDirty("PropertyTypes")); + Assert.IsFalse(asDirty.IsPropertyDirty("PropertyGroups")); + clone.AddPropertyGroup("hello"); + Assert.IsTrue(asDirty.IsPropertyDirty("PropertyGroups")); } [Test] diff --git a/src/Umbraco.Tests/Services/UserServiceTests.cs b/src/Umbraco.Tests/Services/UserServiceTests.cs index b1f0895022..f8c9429e80 100644 --- a/src/Umbraco.Tests/Services/UserServiceTests.cs +++ b/src/Umbraco.Tests/Services/UserServiceTests.cs @@ -390,6 +390,41 @@ namespace Umbraco.Tests.Services Assert.That(user.DefaultPermissions, Is.EqualTo(userType.Permissions)); } + [Test] + public void Can_Add_And_Remove_Sections_From_User() + { + var userType = ServiceContext.UserService.GetUserTypeByAlias("admin"); + + var user1 = ServiceContext.UserService.CreateUserWithIdentity("test1", "test1@test.com", userType); + + //adds some allowed sections + user1.AddAllowedSection("test1"); + user1.AddAllowedSection("test2"); + user1.AddAllowedSection("test3"); + user1.AddAllowedSection("test4"); + ServiceContext.UserService.Save(user1); + + var result1 = ServiceContext.UserService.GetUserById((int)user1.Id); + Assert.AreEqual(4, result1.AllowedSections.Count()); + + //simulate clearing the sections + foreach (var s in user1.AllowedSections) + { + result1.RemoveAllowedSection(s); + } + //now just re-add a couple + result1.AddAllowedSection("test3"); + result1.AddAllowedSection("test4"); + ServiceContext.UserService.Save(result1); + + //assert + + //re-get + result1 = ServiceContext.UserService.GetUserById((int)user1.Id); + Assert.AreEqual(2, result1.AllowedSections.Count()); + + } + [Test] public void Can_Remove_Section_From_All_Assigned_Users() { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs index 9ec1c69546..2c71e529a4 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs @@ -491,10 +491,10 @@ namespace umbraco.cms.presentation.user } u.StartMediaId = mstartNode; - u.clearApplications(); + u.ClearApplications(); foreach (ListItem li in lapps.Items) { - if (li.Selected) u.addApplication(li.Value); + if (li.Selected) u.AddApplication(li.Value); } u.Save(); diff --git a/src/umbraco.businesslogic/User.cs b/src/umbraco.businesslogic/User.cs index ffa6c790e0..798e4dc46c 100644 --- a/src/umbraco.businesslogic/User.cs +++ b/src/umbraco.businesslogic/User.cs @@ -689,9 +689,22 @@ namespace umbraco.BusinessLogic get { return _user.Id; } } + /// + /// Clears the list of applications the user has access to, ensure to call Save afterwords + /// + public void ClearApplications() + { + if (_lazyId.HasValue) SetupUser(_lazyId.Value); + foreach (var s in _user.AllowedSections.ToArray()) + { + _user.RemoveAllowedSection(s); + } + } + /// /// Clears the list of applications the user has access to. /// + [Obsolete("This method will implicitly cause a database save and will reset the current user's dirty property, do not use this method, use the ClearApplications method instead and then call Save() when you are done performing all user changes to persist the chagnes in one transaction")] public void clearApplications() { if (_lazyId.HasValue) SetupUser(_lazyId.Value); @@ -701,19 +714,32 @@ namespace umbraco.BusinessLogic _user.RemoveAllowedSection(s); } + //For backwards compatibility this requires an implicit save ApplicationContext.Current.Services.UserService.Save(_user); } + /// + /// Adds a application to the list of allowed applications, ensure to call Save() afterwords + /// + /// + public void AddApplication(string appAlias) + { + if (_lazyId.HasValue) SetupUser(_lazyId.Value); + _user.AddAllowedSection(appAlias); + } + /// /// Adds a application to the list of allowed applications /// /// The app alias. + [Obsolete("This method will implicitly cause a multiple database saves and will reset the current user's dirty property, do not use this method, use the AddApplication method instead and then call Save() when you are done performing all user changes to persist the chagnes in one transaction")] public void addApplication(string AppAlias) { if (_lazyId.HasValue) SetupUser(_lazyId.Value); _user.AddAllowedSection(AppAlias); + //For backwards compatibility this requires an implicit save ApplicationContext.Current.Services.UserService.Save(_user); } From 70f65583d79f595f423275e1ed43f66eba4937f3 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 15:50:07 +1000 Subject: [PATCH 30/94] Fixes: U4-4546 Error: Failed to retreive data for media ids --- .../EntityControllerConfigurationAttribute.cs | 7 +-- src/Umbraco.Web/Editors/MemberController.cs | 13 +--- src/Umbraco.Web/Umbraco.Web.csproj | 1 + .../WebApi/AngularJsonMediaTypeFormatter.cs | 40 +------------ .../OutgoingDateTimeFormatAttribute.cs | 28 ++++----- .../OutgoingNoHyphenGuidFormatAttribute.cs | 24 ++++++++ .../WebApi/HttpControllerContextExtensions.cs | 59 ++----------------- 7 files changed, 50 insertions(+), 122 deletions(-) create mode 100644 src/Umbraco.Web/WebApi/Filters/OutgoingNoHyphenGuidFormatAttribute.cs diff --git a/src/Umbraco.Web/Editors/EntityControllerConfigurationAttribute.cs b/src/Umbraco.Web/Editors/EntityControllerConfigurationAttribute.cs index 3f6fcc5c2c..7ef4ef206a 100644 --- a/src/Umbraco.Web/Editors/EntityControllerConfigurationAttribute.cs +++ b/src/Umbraco.Web/Editors/EntityControllerConfigurationAttribute.cs @@ -1,3 +1,4 @@ +using System; using System.Web.Http.Controllers; using Umbraco.Web.WebApi; @@ -10,12 +11,10 @@ namespace Umbraco.Web.Editors /// NOTE: It is SOOOO important to remember that you cannot just assign this in the 'initialize' method of a webapi /// controller as it will assign it GLOBALLY which is what you def do not want to do. /// - internal class EntityControllerConfigurationAttribute : AngularJsonOnlyConfigurationAttribute, IControllerConfiguration + internal class EntityControllerConfigurationAttribute : Attribute, IControllerConfiguration { - public override void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor) + public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor) { - base.Initialize(controllerSettings, controllerDescriptor); - controllerSettings.Services.Replace(typeof(IHttpActionSelector), new EntityControllerActionSelector()); } } diff --git a/src/Umbraco.Web/Editors/MemberController.cs b/src/Umbraco.Web/Editors/MemberController.cs index 383f78d28e..1c9486c67d 100644 --- a/src/Umbraco.Web/Editors/MemberController.cs +++ b/src/Umbraco.Web/Editors/MemberController.cs @@ -37,6 +37,7 @@ namespace Umbraco.Web.Editors /// [PluginController("UmbracoApi")] [UmbracoApplicationAuthorizeAttribute(Constants.Applications.Members)] + [OutgoingNoHyphenGuidFormat] public class MemberController : ContentControllerBase { /// @@ -58,17 +59,7 @@ namespace Umbraco.Web.Editors _provider = Core.Security.MembershipProviderExtensions.GetMembersMembershipProvider(); } - private MembershipProvider _provider; - - /// - /// Ensure all GUIDs are formatted without hyphens - /// - /// - protected override void Initialize(System.Web.Http.Controllers.HttpControllerContext controllerContext) - { - base.Initialize(controllerContext); - controllerContext.SetOutgoingNoHyphenGuidFormat(); - } + private readonly MembershipProvider _provider; /// /// Returns the currently configured membership scenario for members in umbraco diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index c17b9f1c56..03f5c397c9 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -510,6 +510,7 @@ + diff --git a/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs b/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs index 4f16c32c33..66a79376aa 100644 --- a/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs +++ b/src/Umbraco.Web/WebApi/AngularJsonMediaTypeFormatter.cs @@ -36,54 +36,18 @@ namespace Umbraco.Web.WebApi if (type == null) throw new ArgumentNullException("type"); if (writeStream == null) throw new ArgumentNullException("writeStream"); - //Before we were calling the base method to do this however it was causing problems: - // http://issues.umbraco.org/issue/U4-4546 - // though I can't seem to figure out why the null ref exception was being thrown, it is very strange. - var effectiveEncoding = SelectCharacterEncoding(content == null ? null : content.Headers); - using (var streamWriter = new StreamWriter(writeStream, effectiveEncoding)) + using (var streamWriter = new StreamWriter(writeStream, effectiveEncoding)) { //write the special encoding for angular json to the start // (see: http://docs.angularjs.org/api/ng.$http) streamWriter.Write(")]}',\n"); streamWriter.Flush(); - return base.WriteToStreamAsync(type, value, writeStream, content, transportContext); } - //This is what the base method is doing for json, EXCEPT they have a handy TaskHelpers.RunSynchronously method - // that ensures that the code doesn't run async which avoids all sorts of thread sync issues like http context - // cultures, etc... but that is not public so we cannot use it. Instead I've modified our original version to be - // much simpler and we no longer create a separate memory stream so hopefully this solves the issue above, if it doesn't - // then we're kind of back to the drawing board. - - //var task = Task.Factory.StartNew(() => - //{ - // var effectiveEncoding = SelectCharacterEncoding(content == null ? null : content.Headers); - - // using (var streamWriter = new StreamWriter(writeStream, effectiveEncoding)) - // using (var jsonTextWriter = new JsonTextWriter(streamWriter) - // { - // CloseOutput = false - // }) - // { - // //write the special encoding for angular json to the start - // // (see: http://docs.angularjs.org/api/ng.$http) - // streamWriter.Write(")]}',\n"); - - // if (Indent) - // { - // jsonTextWriter.Formatting = Formatting.Indented; - // } - // var jsonSerializer = JsonSerializer.Create(SerializerSettings); - // jsonSerializer.Serialize(jsonTextWriter, value); - - // jsonTextWriter.Flush(); - // } - //}); - //return task; - + } } diff --git a/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs b/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs index a2f3373999..d8e185963a 100644 --- a/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs +++ b/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs @@ -1,4 +1,8 @@ -using System.Web.Http.Filters; +using System; +using System.Linq; +using System.Net.Http.Formatting; +using System.Web.Http.Controllers; +using System.Web.Http.Filters; using Umbraco.Core; namespace Umbraco.Web.WebApi.Filters @@ -6,9 +10,9 @@ namespace Umbraco.Web.WebApi.Filters /// /// Sets the json outgoing/serialized datetime format /// - internal sealed class OutgoingDateTimeFormatAttribute : ActionFilterAttribute + internal sealed class OutgoingDateTimeFormatAttribute : Attribute, IControllerConfiguration { - private readonly string _format; + private readonly string _format = "yyyy-MM-dd HH:mm:ss"; /// /// Specify a custom format @@ -23,24 +27,18 @@ namespace Umbraco.Web.WebApi.Filters /// /// Will use the standard ISO format /// - public OutgoingDateTimeFormatAttribute() - { + public OutgoingDateTimeFormatAttribute(){ } - public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) + public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor) { - base.OnActionExecuting(actionContext); - - if (_format.IsNullOrWhiteSpace()) + var jsonFormatter = controllerSettings.Formatters.OfType(); + foreach (var r in jsonFormatter) { - actionContext.ControllerContext.SetOutgoingDateTimeFormat(); + r.SerializerSettings.Converters.Add(new CustomDateTimeConvertor(_format)); } - else - { - actionContext.ControllerContext.SetOutgoingDateTimeFormat(_format); - } - } + } } \ No newline at end of file diff --git a/src/Umbraco.Web/WebApi/Filters/OutgoingNoHyphenGuidFormatAttribute.cs b/src/Umbraco.Web/WebApi/Filters/OutgoingNoHyphenGuidFormatAttribute.cs new file mode 100644 index 0000000000..897213a142 --- /dev/null +++ b/src/Umbraco.Web/WebApi/Filters/OutgoingNoHyphenGuidFormatAttribute.cs @@ -0,0 +1,24 @@ +using System; +using System.Linq; +using System.Net.Http.Formatting; +using System.Web.Http.Controllers; + +namespace Umbraco.Web.WebApi.Filters +{ + internal sealed class OutgoingNoHyphenGuidFormatAttribute : Attribute, IControllerConfiguration + { + public OutgoingNoHyphenGuidFormatAttribute() + { + } + + public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor) + { + var jsonFormatter = controllerSettings.Formatters.OfType(); + foreach (var r in jsonFormatter) + { + r.SerializerSettings.Converters.Add(new GuidNoHyphenConverter()); + } + } + + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs b/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs index 8cd3384915..a3cb3b9d22 100644 --- a/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs +++ b/src/Umbraco.Web/WebApi/HttpControllerContextExtensions.cs @@ -55,61 +55,12 @@ namespace Umbraco.Web.WebApi /// private static async Task FilterContinuation(HttpActionContext actionContext, CancellationToken token, IList filters, int index) { - return await filters[index].ExecuteAuthorizationFilterAsync(actionContext, token, () => - { - Func nullResponse = () => null; - return (index + 1) == filters.Count - ? Task.Run(nullResponse, token) - : FilterContinuation(actionContext, token, filters, ++index); - }); + return await filters[index].ExecuteAuthorizationFilterAsync(actionContext, token, + () => (index + 1) == filters.Count + ? Task.FromResult(null) + : FilterContinuation(actionContext, token, filters, ++index)); } + - /// - /// Sets the JSON GUID format to not have hyphens - /// - /// - internal static void SetOutgoingNoHyphenGuidFormat(this HttpControllerContext controllerContext) - { - var jsonFormatter = controllerContext.Configuration.Formatters.JsonFormatter; - jsonFormatter.SerializerSettings.Converters.Add(new GuidNoHyphenConverter()); - } - - - /// - /// Sets the JSON datetime format to be a custom one - /// - /// - /// - internal static void SetOutgoingDateTimeFormat(this HttpControllerContext controllerContext, string format) - { - var jsonFormatter = controllerContext.Configuration.Formatters.JsonFormatter; - jsonFormatter.SerializerSettings.Converters.Add(new CustomDateTimeConvertor(format)); - } - - /// - /// Sets the JSON datetime format to be our regular iso standard - /// - internal static void SetOutgoingDateTimeFormat(this HttpControllerContext controllerContext) - { - var jsonFormatter = controllerContext.Configuration.Formatters.JsonFormatter; - jsonFormatter.SerializerSettings.Converters.Add(new CustomDateTimeConvertor("yyyy-MM-dd HH:mm:ss")); - } - - ///// - ///// Removes the xml formatter so it only outputs angularized json (with the json vulnerability prefix added) - ///// - ///// - //internal static void EnsureJsonOutputOnly(this HttpControllerContext controllerContext) - //{ - // controllerContext.Configuration.Formatters = new MediaTypeFormatterCollection(); - - // //remove all json/xml formatters then add our custom one - // var toRemove = controllerContext.Configuration.Formatters.Where(t => (t is JsonMediaTypeFormatter) || (t is XmlMediaTypeFormatter)).ToList(); - // foreach (var r in toRemove) - // { - // controllerContext.Configuration.Formatters.Remove(r); - // } - // controllerContext.Configuration.Formatters.Add(new AngularJsonMediaTypeFormatter()); - //} } } \ No newline at end of file From b763c2ab2f598d1ba125d6e923e5493264f44790 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 15:56:45 +1000 Subject: [PATCH 31/94] Fixes deep clone of User object --- src/Umbraco.Core/Models/Membership/User.cs | 40 ++++++++++++++++------ src/Umbraco.Tests/Models/UserTests.cs | 12 +++++++ 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Core/Models/Membership/User.cs b/src/Umbraco.Core/Models/Membership/User.cs index 2e9a73ba50..2e963f5dd7 100644 --- a/src/Umbraco.Core/Models/Membership/User.cs +++ b/src/Umbraco.Core/Models/Membership/User.cs @@ -59,9 +59,9 @@ namespace Umbraco.Core.Models.Membership private IUserType _userType; private string _name; private Type _userTypeKey; - private readonly List _addedSections; - private readonly List _removedSections; - private readonly ObservableCollection _sectionCollection; + private List _addedSections; + private List _removedSections; + private ObservableCollection _sectionCollection; private int _sessionTimeout; private int _startContentId; private int _startMediaId; @@ -423,24 +423,44 @@ namespace Umbraco.Core.Models.Membership if (e.Action == NotifyCollectionChangedAction.Add) { + var item = e.NewItems.Cast().First(); + //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.RemoveAll(s => s == e.NewItems.Cast().First()); - _addedSections.RemoveAll(s => s == e.NewItems.Cast().First()); + _removedSections.Remove(item); + _addedSections.Remove(item); //add to the added sections - _addedSections.Add(e.NewItems.Cast().First()); + _addedSections.Add(item); } else if (e.Action == NotifyCollectionChangedAction.Remove) { + var item = e.OldItems.Cast().First(); + //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.RemoveAll(s => s == e.OldItems.Cast().First()); - _addedSections.RemoveAll(s => s == e.OldItems.Cast().First()); + _removedSections.Remove(item); + _addedSections.Remove(item); //add to the added sections - _removedSections.Add(e.OldItems.Cast().First()); + _removedSections.Add(item); } } - + + public override object DeepClone() + { + var clone = (User)base.DeepClone(); + + //need to create new collections otherwise they'll get copied by ref + clone._addedSections = new List(); + clone._removedSections = new List(); + clone._sectionCollection = new ObservableCollection(); + //re-create the event handler + clone._sectionCollection.CollectionChanged += clone.SectionCollectionChanged; + + clone.ResetDirtyProperties(false); + + return clone; + } + /// /// Internal class used to wrap the user in a profile /// diff --git a/src/Umbraco.Tests/Models/UserTests.cs b/src/Umbraco.Tests/Models/UserTests.cs index 84b0fe317d..94eadf7996 100644 --- a/src/Umbraco.Tests/Models/UserTests.cs +++ b/src/Umbraco.Tests/Models/UserTests.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using NUnit.Framework; using Umbraco.Core.Models.Membership; using Umbraco.Core.Serialization; @@ -53,6 +54,17 @@ namespace Umbraco.Tests.Models { Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(item, null)); } + + //ensure internal collections are differet + Assert.AreNotSame(item.AddedSections, clone.AddedSections); + Assert.AreNotSame(item.RemovedSections, clone.RemovedSections); + + //ensure event handlers are still wired on clone + clone.AddAllowedSection("blah"); + Assert.AreEqual(1, clone.AddedSections.Count()); + clone.RemoveAllowedSection("blah"); + Assert.AreEqual(1, clone.RemovedSections.Count()); + } [Test] From 3b424274ee356da6e3ac1e1b05d39a72c0c1205c Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 15:57:17 +1000 Subject: [PATCH 32/94] ensure properties reset on deep clone of ContentType (this is just a fail safe check) --- src/Umbraco.Core/Models/ContentType.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Umbraco.Core/Models/ContentType.cs b/src/Umbraco.Core/Models/ContentType.cs index ff61f0f9a4..1cf7fc9684 100644 --- a/src/Umbraco.Core/Models/ContentType.cs +++ b/src/Umbraco.Core/Models/ContentType.cs @@ -151,6 +151,9 @@ namespace Umbraco.Core.Models clone.PropertyTypes = PropertyTypeCollection .Where(x => x.PropertyGroupId == null) .Select(x => (PropertyType)x.DeepClone()).ToList(); + + clone.ResetDirtyProperties(false); + return clone; } From 2eef061c4284479afc58f7b514112fa8152c8dcd Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 15:58:09 +1000 Subject: [PATCH 33/94] attempting to add the default git path to the path variable - hopefully the server has the same one --- build/BuildBelle.bat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build/BuildBelle.bat b/build/BuildBelle.bat index e7673f054e..c9bd6e5dbb 100644 --- a/build/BuildBelle.bat +++ b/build/BuildBelle.bat @@ -10,10 +10,12 @@ ECHO Current folder: %CD% for /f "delims=" %%A in ('dir %nuGetFolder%node.js.* /b') do set "nodePath=%nuGetFolder%%%A\" for /f "delims=" %%A in ('dir %nuGetFolder%npm.js.* /b') do set "npmPath=%nuGetFolder%%%A\tools\" +set "gitPath=C:\Program Files (x86)\Git\bin\" + ECHO Temporarily adding Npm and Node to path SET oldPath=%PATH% -path=%npmPath%;%nodePath%;%PATH% +path=%npmPath%;%nodePath%;%gitPath%;%PATH% SET buildFolder=%CD% From d61fb5d94d1c734dae6afd53ef117adb071fe514 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 15:59:30 +1000 Subject: [PATCH 34/94] Fixes user cloning issues with allowed sections --- src/Umbraco.Core/Models/Membership/User.cs | 2 +- src/Umbraco.Tests/Models/UserTests.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Models/Membership/User.cs b/src/Umbraco.Core/Models/Membership/User.cs index 2e963f5dd7..88a0df14ef 100644 --- a/src/Umbraco.Core/Models/Membership/User.cs +++ b/src/Umbraco.Core/Models/Membership/User.cs @@ -452,7 +452,7 @@ namespace Umbraco.Core.Models.Membership //need to create new collections otherwise they'll get copied by ref clone._addedSections = new List(); clone._removedSections = new List(); - clone._sectionCollection = new ObservableCollection(); + clone._sectionCollection = new ObservableCollection(_sectionCollection.ToList()); //re-create the event handler clone._sectionCollection.CollectionChanged += clone.SectionCollectionChanged; diff --git a/src/Umbraco.Tests/Models/UserTests.cs b/src/Umbraco.Tests/Models/UserTests.cs index 94eadf7996..7fa9742870 100644 --- a/src/Umbraco.Tests/Models/UserTests.cs +++ b/src/Umbraco.Tests/Models/UserTests.cs @@ -40,6 +40,8 @@ namespace Umbraco.Tests.Models Username = "username" }; + item.AddAllowedSection("test"); + var clone = (User)item.DeepClone(); Assert.AreNotSame(clone, item); @@ -47,6 +49,7 @@ namespace Umbraco.Tests.Models Assert.AreNotSame(clone.UserType, item.UserType); Assert.AreEqual(clone.UserType, item.UserType); + Assert.AreEqual(clone.AllowedSections.Count(), item.AllowedSections.Count()); //Verify normal properties with reflection var allProps = clone.GetType().GetProperties(); From b91a06ab98e3a1764be7cce6776ca782073487ed Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 16:00:30 +1000 Subject: [PATCH 35/94] Fixes: U4-4849 Cannot change a users language/sections in the back office --- .../EntityBase/TracksChangesEntityBase.cs | 10 ++++-- src/Umbraco.Core/Models/Membership/User.cs | 24 ++++++------- .../Persistence/Factories/UserFactory.cs | 2 +- .../Repositories/UserRepository.cs | 18 ++++++---- src/Umbraco.Tests/Models/ContentTests.cs | 8 +++++ src/Umbraco.Tests/Models/ContentTypeTests.cs | 20 +++++++++-- .../Services/UserServiceTests.cs | 35 +++++++++++++++++++ .../umbraco/users/EditUser.aspx.cs | 4 +-- src/umbraco.businesslogic/User.cs | 26 ++++++++++++++ 9 files changed, 119 insertions(+), 28 deletions(-) diff --git a/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs b/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs index 1d23fe8385..cfc6ce8c9d 100644 --- a/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs +++ b/src/Umbraco.Core/Models/EntityBase/TracksChangesEntityBase.cs @@ -17,7 +17,7 @@ namespace Umbraco.Core.Models.EntityBase /// /// Tracks the properties that have changed /// - private readonly IDictionary _propertyChangedInfo = new Dictionary(); + private IDictionary _propertyChangedInfo = new Dictionary(); /// /// Tracks the properties that we're changed before the last commit (or last call to ResetDirtyProperties) @@ -86,7 +86,9 @@ namespace Umbraco.Core.Models.EntityBase /// public void ForgetPreviouslyDirtyProperties() { - _lastPropertyChangedInfo.Clear(); + //NOTE: We cannot .Clear() because when we memberwise clone this will be the SAME + // instance as the one on the clone, so we need to create a new instance. + _lastPropertyChangedInfo = new Dictionary(); } /// @@ -119,7 +121,9 @@ namespace Umbraco.Core.Models.EntityBase _lastPropertyChangedInfo = _propertyChangedInfo.ToDictionary(v => v.Key, v => v.Value); } - _propertyChangedInfo.Clear(); + //NOTE: We cannot .Clear() because when we memberwise clone this will be the SAME + // instance as the one on the clone, so we need to create a new instance. + _propertyChangedInfo = new Dictionary(); } /// diff --git a/src/Umbraco.Core/Models/Membership/User.cs b/src/Umbraco.Core/Models/Membership/User.cs index 88a0df14ef..45bc4aa375 100644 --- a/src/Umbraco.Core/Models/Membership/User.cs +++ b/src/Umbraco.Core/Models/Membership/User.cs @@ -244,7 +244,10 @@ namespace Umbraco.Core.Models.Membership public void RemoveAllowedSection(string sectionAlias) { - _sectionCollection.Remove(sectionAlias); + if (_sectionCollection.Contains(sectionAlias)) + { + _sectionCollection.Remove(sectionAlias); + } } public void AddAllowedSection(string sectionAlias) @@ -425,23 +428,20 @@ namespace Umbraco.Core.Models.Membership { var item = e.NewItems.Cast().First(); - //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.Remove(item); - _addedSections.Remove(item); - - //add to the added sections - _addedSections.Add(item); + if (_addedSections.Contains(item) == false) + { + _addedSections.Add(item); + } } else if (e.Action == NotifyCollectionChangedAction.Remove) { var item = e.OldItems.Cast().First(); - //remove from the removed/added sections (since people could add/remove all they want in one request) - _removedSections.Remove(item); - _addedSections.Remove(item); + if (_removedSections.Contains(item) == false) + { + _removedSections.Add(item); + } - //add to the added sections - _removedSections.Add(item); } } diff --git a/src/Umbraco.Core/Persistence/Factories/UserFactory.cs b/src/Umbraco.Core/Persistence/Factories/UserFactory.cs index 080776e7fe..0f2ce2c5e6 100644 --- a/src/Umbraco.Core/Persistence/Factories/UserFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/UserFactory.cs @@ -74,7 +74,7 @@ namespace Umbraco.Core.Persistence.Factories { AppAlias = app }; - if (entity.Id != null) + if (entity.HasIdentity) { appDto.UserId = (int) entity.Id; } diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index a2b91a8447..07714b36a7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -211,9 +211,19 @@ namespace Umbraco.Core.Persistence.Repositories var user = (User)entity; if (user.IsPropertyDirty("AllowedSections")) { + //now we need to delete any applications that have been removed + foreach (var section in user.RemovedSections) + { + //we need to manually delete thsi record because it has a composite key + Database.Delete("WHERE app=@Section AND " + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("user") + "=@UserId", + new { Section = section, UserId = (int)user.Id }); + } + //for any that exist on the object, we need to determine if we need to update or insert + //NOTE: the User2AppDtos collection wil always be equal to the User.AllowedSections foreach (var sectionDto in userDto.User2AppDtos) { + //if something has been added then insert it if (user.AddedSections.Contains(sectionDto.AppAlias)) { //we need to insert since this was added @@ -227,13 +237,7 @@ namespace Umbraco.Core.Persistence.Repositories } } - //now we need to delete any applications that have been removed - foreach (var section in user.RemovedSections) - { - //we need to manually delete thsi record because it has a composite key - Database.Delete("WHERE app=@Section AND " + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("user") + "=@UserId", - new { Section = section, UserId = (int)user.Id }); - } + } ((ICanBeDirty)entity).ResetDirtyProperties(); diff --git a/src/Umbraco.Tests/Models/ContentTests.cs b/src/Umbraco.Tests/Models/ContentTests.cs index 6f9dbc5d46..6ca360c81b 100644 --- a/src/Umbraco.Tests/Models/ContentTests.cs +++ b/src/Umbraco.Tests/Models/ContentTests.cs @@ -224,6 +224,14 @@ namespace Umbraco.Tests.Models { Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(content, null)); } + + //need to ensure the event handlers are wired + + var asDirty = (ICanBeDirty)clone; + + Assert.IsFalse(asDirty.IsPropertyDirty("Properties")); + clone.Properties.Add(new Property(1, Guid.NewGuid(), new PropertyType("test", DataTypeDatabaseType.Ntext) {Alias = "blah"}, "blah")); + Assert.IsTrue(asDirty.IsPropertyDirty("Properties")); } [Test] diff --git a/src/Umbraco.Tests/Models/ContentTypeTests.cs b/src/Umbraco.Tests/Models/ContentTypeTests.cs index 0fc1a52a28..be11337599 100644 --- a/src/Umbraco.Tests/Models/ContentTypeTests.cs +++ b/src/Umbraco.Tests/Models/ContentTypeTests.cs @@ -4,12 +4,13 @@ using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Serialization; +using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; namespace Umbraco.Tests.Models { [TestFixture] - public class ContentTypeTests + public class ContentTypeTests : BaseUmbracoConfigurationTest { [Test] public void Can_Deep_Clone_Content_Type_Sort() @@ -140,19 +141,21 @@ namespace Umbraco.Tests.Models Assert.AreNotSame(clone.AllowedTemplates.ElementAt(index), contentType.AllowedTemplates.ElementAt(index)); Assert.AreEqual(clone.AllowedTemplates.ElementAt(index), contentType.AllowedTemplates.ElementAt(index)); } + Assert.AreNotSame(clone.PropertyGroups, contentType.PropertyGroups); Assert.AreEqual(clone.PropertyGroups.Count, contentType.PropertyGroups.Count); for (var index = 0; index < contentType.PropertyGroups.Count; index++) { Assert.AreNotSame(clone.PropertyGroups[index], contentType.PropertyGroups[index]); Assert.AreEqual(clone.PropertyGroups[index], contentType.PropertyGroups[index]); } + Assert.AreNotSame(clone.PropertyTypes, contentType.PropertyTypes); Assert.AreEqual(clone.PropertyTypes.Count(), contentType.PropertyTypes.Count()); for (var index = 0; index < contentType.PropertyTypes.Count(); index++) { Assert.AreNotSame(clone.PropertyTypes.ElementAt(index), contentType.PropertyTypes.ElementAt(index)); Assert.AreEqual(clone.PropertyTypes.ElementAt(index), contentType.PropertyTypes.ElementAt(index)); } - + Assert.AreEqual(clone.CreateDate, contentType.CreateDate); Assert.AreEqual(clone.CreatorId, contentType.CreatorId); Assert.AreEqual(clone.Key, contentType.Key); @@ -167,13 +170,24 @@ namespace Umbraco.Tests.Models Assert.AreEqual(clone.Thumbnail, contentType.Thumbnail); Assert.AreEqual(clone.Icon, contentType.Icon); Assert.AreEqual(clone.IsContainer, contentType.IsContainer); - + //This double verifies by reflection var allProps = clone.GetType().GetProperties(); foreach (var propertyInfo in allProps) { Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(contentType, null)); } + + //need to ensure the event handlers are wired + + var asDirty = (ICanBeDirty)clone; + + Assert.IsFalse(asDirty.IsPropertyDirty("PropertyTypes")); + clone.AddPropertyType(new PropertyType("test", DataTypeDatabaseType.Nvarchar) { Alias = "blah" }); + Assert.IsTrue(asDirty.IsPropertyDirty("PropertyTypes")); + Assert.IsFalse(asDirty.IsPropertyDirty("PropertyGroups")); + clone.AddPropertyGroup("hello"); + Assert.IsTrue(asDirty.IsPropertyDirty("PropertyGroups")); } [Test] diff --git a/src/Umbraco.Tests/Services/UserServiceTests.cs b/src/Umbraco.Tests/Services/UserServiceTests.cs index f0fdc8a21d..5c41895037 100644 --- a/src/Umbraco.Tests/Services/UserServiceTests.cs +++ b/src/Umbraco.Tests/Services/UserServiceTests.cs @@ -387,6 +387,41 @@ namespace Umbraco.Tests.Services Assert.That(user.DefaultPermissions, Is.EqualTo(userType.Permissions)); } + [Test] + public void Can_Add_And_Remove_Sections_From_User() + { + var userType = ServiceContext.UserService.GetUserTypeByAlias("admin"); + + var user1 = ServiceContext.UserService.CreateUserWithIdentity("test1", "test1@test.com", userType); + + //adds some allowed sections + user1.AddAllowedSection("test1"); + user1.AddAllowedSection("test2"); + user1.AddAllowedSection("test3"); + user1.AddAllowedSection("test4"); + ServiceContext.UserService.Save(user1); + + var result1 = ServiceContext.UserService.GetUserById((int)user1.Id); + Assert.AreEqual(4, result1.AllowedSections.Count()); + + //simulate clearing the sections + foreach (var s in user1.AllowedSections) + { + result1.RemoveAllowedSection(s); + } + //now just re-add a couple + result1.AddAllowedSection("test3"); + result1.AddAllowedSection("test4"); + ServiceContext.UserService.Save(result1); + + //assert + + //re-get + result1 = ServiceContext.UserService.GetUserById((int)user1.Id); + Assert.AreEqual(2, result1.AllowedSections.Count()); + + } + [Test] public void Can_Remove_Section_From_All_Assigned_Users() { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs index 1f0262a1d0..b1d58bccea 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs @@ -489,10 +489,10 @@ namespace umbraco.cms.presentation.user } u.StartMediaId = mstartNode; - u.clearApplications(); + u.ClearApplications(); foreach (ListItem li in lapps.Items) { - if (li.Selected) u.addApplication(li.Value); + if (li.Selected) u.AddApplication(li.Value); } u.Save(); diff --git a/src/umbraco.businesslogic/User.cs b/src/umbraco.businesslogic/User.cs index ef1b736d73..3a135d1834 100644 --- a/src/umbraco.businesslogic/User.cs +++ b/src/umbraco.businesslogic/User.cs @@ -689,9 +689,22 @@ namespace umbraco.BusinessLogic get { return _user.Id; } } + /// + /// Clears the list of applications the user has access to, ensure to call Save afterwords + /// + public void ClearApplications() + { + if (_lazyId.HasValue) SetupUser(_lazyId.Value); + foreach (var s in _user.AllowedSections.ToArray()) + { + _user.RemoveAllowedSection(s); + } + } + /// /// Clears the list of applications the user has access to. /// + [Obsolete("This method will implicitly cause a database save and will reset the current user's dirty property, do not use this method, use the ClearApplications method instead and then call Save() when you are done performing all user changes to persist the chagnes in one transaction")] public void clearApplications() { if (_lazyId.HasValue) SetupUser(_lazyId.Value); @@ -701,19 +714,32 @@ namespace umbraco.BusinessLogic _user.RemoveAllowedSection(s); } + //For backwards compatibility this requires an implicit save ApplicationContext.Current.Services.UserService.Save(_user); } + /// + /// Adds a application to the list of allowed applications, ensure to call Save() afterwords + /// + /// + public void AddApplication(string appAlias) + { + if (_lazyId.HasValue) SetupUser(_lazyId.Value); + _user.AddAllowedSection(appAlias); + } + /// /// Adds a application to the list of allowed applications /// /// The app alias. + [Obsolete("This method will implicitly cause a multiple database saves and will reset the current user's dirty property, do not use this method, use the AddApplication method instead and then call Save() when you are done performing all user changes to persist the chagnes in one transaction")] public void addApplication(string AppAlias) { if (_lazyId.HasValue) SetupUser(_lazyId.Value); _user.AddAllowedSection(AppAlias); + //For backwards compatibility this requires an implicit save ApplicationContext.Current.Services.UserService.Save(_user); } From da0b935604f815759614f2550bd625f31a0c42d2 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 16:08:05 +1000 Subject: [PATCH 36/94] Fixes merge --- src/Umbraco.Tests/Models/ContentTests.cs | 2 +- src/Umbraco.Tests/Models/ContentTypeTests.cs | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Tests/Models/ContentTests.cs b/src/Umbraco.Tests/Models/ContentTests.cs index 6ca360c81b..a7df4ec7d5 100644 --- a/src/Umbraco.Tests/Models/ContentTests.cs +++ b/src/Umbraco.Tests/Models/ContentTests.cs @@ -230,7 +230,7 @@ namespace Umbraco.Tests.Models var asDirty = (ICanBeDirty)clone; Assert.IsFalse(asDirty.IsPropertyDirty("Properties")); - clone.Properties.Add(new Property(1, Guid.NewGuid(), new PropertyType("test", DataTypeDatabaseType.Ntext) {Alias = "blah"}, "blah")); + clone.Properties.Add(new Property(1, Guid.NewGuid(), new PropertyType(Guid.NewGuid(), DataTypeDatabaseType.Ntext) { Alias = "blah" }, "blah")); Assert.IsTrue(asDirty.IsPropertyDirty("Properties")); } diff --git a/src/Umbraco.Tests/Models/ContentTypeTests.cs b/src/Umbraco.Tests/Models/ContentTypeTests.cs index be11337599..dc2de0d6bb 100644 --- a/src/Umbraco.Tests/Models/ContentTypeTests.cs +++ b/src/Umbraco.Tests/Models/ContentTypeTests.cs @@ -10,8 +10,20 @@ using Umbraco.Tests.TestHelpers.Entities; namespace Umbraco.Tests.Models { [TestFixture] - public class ContentTypeTests : BaseUmbracoConfigurationTest + public class ContentTypeTests { + [SetUp] + public void Init() + { + TestHelper.EnsureUmbracoSettingsConfig(); + } + + [TearDown] + public void Dispose() + { + TestHelper.CleanUmbracoSettingsConfig(); + } + [Test] public void Can_Deep_Clone_Content_Type_Sort() { @@ -183,7 +195,7 @@ namespace Umbraco.Tests.Models var asDirty = (ICanBeDirty)clone; Assert.IsFalse(asDirty.IsPropertyDirty("PropertyTypes")); - clone.AddPropertyType(new PropertyType("test", DataTypeDatabaseType.Nvarchar) { Alias = "blah" }); + clone.AddPropertyType(new PropertyType(Guid.NewGuid(), DataTypeDatabaseType.Nvarchar) { Alias = "blah" }); Assert.IsTrue(asDirty.IsPropertyDirty("PropertyTypes")); Assert.IsFalse(asDirty.IsPropertyDirty("PropertyGroups")); clone.AddPropertyGroup("hello"); From 6b6ca615bac4c9019cb153664910bf1f15177095 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 May 2014 17:02:14 +1000 Subject: [PATCH 37/94] Updates build to ignore bower and commits typeahead. --- build/BuildBelle.bat | 6 +++--- src/Umbraco.Web.UI.Client/gruntFile.js | 5 +++-- .../lib/typeahead/typeahead.bundle.min.js | 7 +++++++ 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/lib/typeahead/typeahead.bundle.min.js diff --git a/build/BuildBelle.bat b/build/BuildBelle.bat index c9bd6e5dbb..99958075f9 100644 --- a/build/BuildBelle.bat +++ b/build/BuildBelle.bat @@ -10,12 +10,12 @@ ECHO Current folder: %CD% for /f "delims=" %%A in ('dir %nuGetFolder%node.js.* /b') do set "nodePath=%nuGetFolder%%%A\" for /f "delims=" %%A in ('dir %nuGetFolder%npm.js.* /b') do set "npmPath=%nuGetFolder%%%A\tools\" -set "gitPath=C:\Program Files (x86)\Git\bin\" - ECHO Temporarily adding Npm and Node to path SET oldPath=%PATH% -path=%npmPath%;%nodePath%;%gitPath%;%PATH% +path=%npmPath%;%nodePath%;%PATH% + +ECHO %path% SET buildFolder=%CD% diff --git a/src/Umbraco.Web.UI.Client/gruntFile.js b/src/Umbraco.Web.UI.Client/gruntFile.js index d37f110fdb..999eab2d31 100644 --- a/src/Umbraco.Web.UI.Client/gruntFile.js +++ b/src/Umbraco.Web.UI.Client/gruntFile.js @@ -14,7 +14,7 @@ module.exports = function (grunt) { grunt.registerTask('watch-test', ['jshint:dev', 'karma:unit']); //triggered from grunt dev or grunt - grunt.registerTask('build', ['clean','concat','recess:min','recess:installer','bower','copy']); + grunt.registerTask('build', ['clean','concat','recess:min','recess:installer','copy']); //utillity tasks grunt.registerTask('docs', ['ngdocs']); @@ -110,12 +110,13 @@ module.exports = function (grunt) { copy: { - // Copies over the files downloaded by bower + /* Copies over the files downloaded by bower bower: { files: [ { dest: '<%= distdir %>/lib/typeahead/typeahead.bundle.min.js', src: '<%= bowerfiles %>/typeahead.js/dist/typeahead.bundle.min.js' } ] }, + */ assets: { files: [{ dest: '<%= distdir %>/assets', src : '**', expand: true, cwd: 'src/assets/' }] diff --git a/src/Umbraco.Web.UI.Client/lib/typeahead/typeahead.bundle.min.js b/src/Umbraco.Web.UI.Client/lib/typeahead/typeahead.bundle.min.js new file mode 100644 index 0000000000..dff8ef56ec --- /dev/null +++ b/src/Umbraco.Web.UI.Client/lib/typeahead/typeahead.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * typeahead.js 0.10.2 + * https://github.com/twitter/typeahead.js + * Copyright 2013-2014 Twitter, Inc. and other contributors; Licensed MIT + */ + +!function(a){var b={isMsie:function(){return/(msie|trident)/i.test(navigator.userAgent)?navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]:!1},isBlankString:function(a){return!a||/^\s*$/.test(a)},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a},isArray:a.isArray,isFunction:a.isFunction,isObject:a.isPlainObject,isUndefined:function(a){return"undefined"==typeof a},bind:a.proxy,each:function(b,c){function d(a,b){return c(b,a)}a.each(b,d)},map:a.map,filter:a.grep,every:function(b,c){var d=!0;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?void 0:!1}),!!d):d},some:function(b,c){var d=!1;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?!1:void 0}),!!d):d},mixin:a.extend,getUniqueId:function(){var a=0;return function(){return a++}}(),templatify:function(b){function c(){return String(b)}return a.isFunction(b)?b:c},defer:function(a){setTimeout(a,0)},debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},throttle:function(a,b){var c,d,e,f,g,h;return g=0,h=function(){g=new Date,e=null,f=a.apply(c,d)},function(){var i=new Date,j=b-(i-g);return c=this,d=arguments,0>=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},noop:function(){}},c="0.10.2",d=function(){function a(a){return a.split(/\s+/)}function b(a){return a.split(/\W+/)}function c(a){return function(b){return function(c){return a(c[b])}}}return{nonword:b,whitespace:a,obj:{nonword:c(b),whitespace:c(a)}}}(),e=function(){function a(a){this.maxSize=a||100,this.size=0,this.hash={},this.list=new c}function c(){this.head=this.tail=null}function d(a,b){this.key=a,this.val=b,this.prev=this.next=null}return b.mixin(a.prototype,{set:function(a,b){var c,e=this.list.tail;this.size>=this.maxSize&&(this.list.remove(e),delete this.hash[e.key]),(c=this.hash[a])?(c.val=b,this.list.moveToFront(c)):(c=new d(a,b),this.list.add(c),this.hash[a]=c,this.size++)},get:function(a){var b=this.hash[a];return b?(this.list.moveToFront(b),b.val):void 0}}),b.mixin(c.prototype,{add:function(a){this.head&&(a.next=this.head,this.head.prev=a),this.head=a,this.tail=this.tail||a},remove:function(a){a.prev?a.prev.next=a.next:this.head=a.next,a.next?a.next.prev=a.prev:this.tail=a.prev},moveToFront:function(a){this.remove(a),this.add(a)}}),a}(),f=function(){function a(a){this.prefix=["__",a,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+this.prefix)}function c(){return(new Date).getTime()}function d(a){return JSON.stringify(b.isUndefined(a)?null:a)}function e(a){return JSON.parse(a)}var f,g;try{f=window.localStorage,f.setItem("~~~","!"),f.removeItem("~~~")}catch(h){f=null}return g=f&&window.JSON?{_prefix:function(a){return this.prefix+a},_ttlKey:function(a){return this._prefix(a)+this.ttlKey},get:function(a){return this.isExpired(a)&&this.remove(a),e(f.getItem(this._prefix(a)))},set:function(a,e,g){return b.isNumber(g)?f.setItem(this._ttlKey(a),d(c()+g)):f.removeItem(this._ttlKey(a)),f.setItem(this._prefix(a),d(e))},remove:function(a){return f.removeItem(this._ttlKey(a)),f.removeItem(this._prefix(a)),this},clear:function(){var a,b,c=[],d=f.length;for(a=0;d>a;a++)(b=f.key(a)).match(this.keyMatcher)&&c.push(b.replace(this.keyMatcher,""));for(a=c.length;a--;)this.remove(c[a]);return this},isExpired:function(a){var d=e(f.getItem(this._ttlKey(a)));return b.isNumber(d)&&c()>d?!0:!1}}:{get:b.noop,set:b.noop,remove:b.noop,clear:b.noop,isExpired:b.noop},b.mixin(a.prototype,g),a}(),g=function(){function c(b){b=b||{},this._send=b.transport?d(b.transport):a.ajax,this._get=b.rateLimiter?b.rateLimiter(this._get):this._get}function d(c){return function(d,e){function f(a){b.defer(function(){h.resolve(a)})}function g(a){b.defer(function(){h.reject(a)})}var h=a.Deferred();return c(d,e,f,g),h}}var f=0,g={},h=6,i=new e(10);return c.setMaxPendingRequests=function(a){h=a},c.resetCache=function(){i=new e(10)},b.mixin(c.prototype,{_get:function(a,b,c){function d(b){c&&c(null,b),i.set(a,b)}function e(){c&&c(!0)}function j(){f--,delete g[a],l.onDeckRequestArgs&&(l._get.apply(l,l.onDeckRequestArgs),l.onDeckRequestArgs=null)}var k,l=this;(k=g[a])?k.done(d).fail(e):h>f?(f++,g[a]=this._send(a,b).done(d).fail(e).always(j)):this.onDeckRequestArgs=[].slice.call(arguments,0)},get:function(a,c,d){var e;return b.isFunction(c)&&(d=c,c={}),(e=i.get(a))?b.defer(function(){d&&d(null,e)}):this._get(a,c,d),!!e}}),c}(),h=function(){function c(b){b=b||{},b.datumTokenizer&&b.queryTokenizer||a.error("datumTokenizer and queryTokenizer are both required"),this.datumTokenizer=b.datumTokenizer,this.queryTokenizer=b.queryTokenizer,this.reset()}function d(a){return a=b.filter(a,function(a){return!!a}),a=b.map(a,function(a){return a.toLowerCase()})}function e(){return{ids:[],children:{}}}function f(a){for(var b={},c=[],d=0;db[e]?e++:(f.push(a[d]),d++,e++);return f}return b.mixin(c.prototype,{bootstrap:function(a){this.datums=a.datums,this.trie=a.trie},add:function(a){var c=this;a=b.isArray(a)?a:[a],b.each(a,function(a){var f,g;f=c.datums.push(a)-1,g=d(c.datumTokenizer(a)),b.each(g,function(a){var b,d,g;for(b=c.trie,d=a.split("");g=d.shift();)b=b.children[g]||(b.children[g]=e()),b.ids.push(f)})})},get:function(a){var c,e,h=this;return c=d(this.queryTokenizer(a)),b.each(c,function(a){var b,c,d,f;if(e&&0===e.length)return!1;for(b=h.trie,c=a.split("");b&&(d=c.shift());)b=b.children[d];return b&&0===c.length?(f=b.ids.slice(0),void(e=e?g(e,f):f)):(e=[],!1)}),e?b.map(f(e),function(a){return h.datums[a]}):[]},reset:function(){this.datums=[],this.trie=e()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),c}(),i=function(){function d(a){return a.local||null}function e(d){var e,f;return f={url:null,thumbprint:"",ttl:864e5,filter:null,ajax:{}},(e=d.prefetch||null)&&(e=b.isString(e)?{url:e}:e,e=b.mixin(f,e),e.thumbprint=c+e.thumbprint,e.ajax.type=e.ajax.type||"GET",e.ajax.dataType=e.ajax.dataType||"json",!e.url&&a.error("prefetch requires url to be set")),e}function f(c){function d(a){return function(c){return b.debounce(c,a)}}function e(a){return function(c){return b.throttle(c,a)}}var f,g;return g={url:null,wildcard:"%QUERY",replace:null,rateLimitBy:"debounce",rateLimitWait:300,send:null,filter:null,ajax:{}},(f=c.remote||null)&&(f=b.isString(f)?{url:f}:f,f=b.mixin(g,f),f.rateLimiter=/^throttle$/i.test(f.rateLimitBy)?e(f.rateLimitWait):d(f.rateLimitWait),f.ajax.type=f.ajax.type||"GET",f.ajax.dataType=f.ajax.dataType||"json",delete f.rateLimitBy,delete f.rateLimitWait,!f.url&&a.error("remote requires url to be set")),f}return{local:d,prefetch:e,remote:f}}();!function(c){function e(b){b&&(b.local||b.prefetch||b.remote)||a.error("one of local, prefetch, or remote is required"),this.limit=b.limit||5,this.sorter=j(b.sorter),this.dupDetector=b.dupDetector||k,this.local=i.local(b),this.prefetch=i.prefetch(b),this.remote=i.remote(b),this.cacheKey=this.prefetch?this.prefetch.cacheKey||this.prefetch.url:null,this.index=new h({datumTokenizer:b.datumTokenizer,queryTokenizer:b.queryTokenizer}),this.storage=this.cacheKey?new f(this.cacheKey):null}function j(a){function c(b){return b.sort(a)}function d(a){return a}return b.isFunction(a)?c:d}function k(){return!1}var l,m;return l=c.Bloodhound,m={data:"data",protocol:"protocol",thumbprint:"thumbprint"},c.Bloodhound=e,e.noConflict=function(){return c.Bloodhound=l,e},e.tokenizers=d,b.mixin(e.prototype,{_loadPrefetch:function(b){function c(a){f.clear(),f.add(b.filter?b.filter(a):a),f._saveToStorage(f.index.serialize(),b.thumbprint,b.ttl)}var d,e,f=this;return(d=this._readFromStorage(b.thumbprint))?(this.index.bootstrap(d),e=a.Deferred().resolve()):e=a.ajax(b.url,b.ajax).done(c),e},_getFromRemote:function(a,b){function c(a,c){b(a?[]:f.remote.filter?f.remote.filter(c):c)}var d,e,f=this;return a=a||"",e=encodeURIComponent(a),d=this.remote.replace?this.remote.replace(this.remote.url,a):this.remote.url.replace(this.remote.wildcard,e),this.transport.get(d,this.remote.ajax,c)},_saveToStorage:function(a,b,c){this.storage&&(this.storage.set(m.data,a,c),this.storage.set(m.protocol,location.protocol,c),this.storage.set(m.thumbprint,b,c))},_readFromStorage:function(a){var b,c={};return this.storage&&(c.data=this.storage.get(m.data),c.protocol=this.storage.get(m.protocol),c.thumbprint=this.storage.get(m.thumbprint)),b=c.thumbprint!==a||c.protocol!==location.protocol,c.data&&!b?c.data:null},_initialize:function(){function c(){e.add(b.isFunction(f)?f():f)}var d,e=this,f=this.local;return d=this.prefetch?this._loadPrefetch(this.prefetch):a.Deferred().resolve(),f&&d.done(c),this.transport=this.remote?new g(this.remote):null,this.initPromise=d.promise()},initialize:function(a){return!this.initPromise||a?this._initialize():this.initPromise},add:function(a){this.index.add(a)},get:function(a,c){function d(a){var d=f.slice(0);b.each(a,function(a){var c;return c=b.some(d,function(b){return e.dupDetector(a,b)}),!c&&d.push(a),d.length0||!this.transport)&&c&&c(f)},clear:function(){this.index.reset()},clearPrefetchCache:function(){this.storage&&this.storage.clear()},clearRemoteCache:function(){this.transport&&g.resetCache()},ttAdapter:function(){return b.bind(this.get,this)}}),e}(this);var j={wrapper:'',dropdown:'',dataset:'
',suggestions:'',suggestion:'
'},k={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};b.isMsie()&&b.mixin(k.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),b.isMsie()&&b.isMsie()<=7&&b.mixin(k.input,{marginTop:"-1px"});var l=function(){function c(b){b&&b.el||a.error("EventBus initialized without el"),this.$el=a(b.el)}var d="typeahead:";return b.mixin(c.prototype,{trigger:function(a){var b=[].slice.call(arguments,1);this.$el.trigger(d+a,b)}}),c}(),m=function(){function a(a,b,c,d){var e;if(!c)return this;for(b=b.split(i),c=d?h(c,d):c,this._callbacks=this._callbacks||{};e=b.shift();)this._callbacks[e]=this._callbacks[e]||{sync:[],async:[]},this._callbacks[e][a].push(c);return this}function b(b,c,d){return a.call(this,"async",b,c,d)}function c(b,c,d){return a.call(this,"sync",b,c,d)}function d(a){var b;if(!this._callbacks)return this;for(a=a.split(i);b=a.shift();)delete this._callbacks[b];return this}function e(a){var b,c,d,e,g;if(!this._callbacks)return this;for(a=a.split(i),d=[].slice.call(arguments,1);(b=a.shift())&&(c=this._callbacks[b]);)e=f(c.sync,this,[b].concat(d)),g=f(c.async,this,[b].concat(d)),e()&&j(g);return this}function f(a,b,c){function d(){for(var d,e=0;!d&&e
[Serializable] [DataContract(IsReference = true)] - public class MacroProperty : TracksChangesEntityBase, IMacroProperty, IRememberBeingDirty + public class MacroProperty : TracksChangesEntityBase, IMacroProperty, IRememberBeingDirty, IDeepCloneable { public MacroProperty() { @@ -176,5 +176,37 @@ namespace Umbraco.Core.Models }, _editorAlias, PropertyTypeSelector); } } + + public object DeepClone() + { + //Memberwise clone on MacroProperty will work since it doesn't have any deep elements + // for any sub class this will work for standard properties as well that aren't complex object's themselves. + var clone = (MacroProperty)MemberwiseClone(); + //Automatically deep clone ref properties that are IDeepCloneable + DeepCloneHelper.DeepCloneRefProperties(this, clone); + clone.ResetDirtyProperties(false); + return clone; + } + + protected bool Equals(MacroProperty other) + { + return string.Equals(_alias, other._alias) && _id == other._id; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((MacroProperty) obj); + } + + public override int GetHashCode() + { + unchecked + { + return ((_alias != null ? _alias.GetHashCode() : 0)*397) ^ _id; + } + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/MacroPropertyCollection.cs b/src/Umbraco.Core/Models/MacroPropertyCollection.cs index 6d0c762154..7496b582b4 100644 --- a/src/Umbraco.Core/Models/MacroPropertyCollection.cs +++ b/src/Umbraco.Core/Models/MacroPropertyCollection.cs @@ -8,13 +8,22 @@ namespace Umbraco.Core.Models /// /// A macro's property collection /// - public class MacroPropertyCollection : ObservableDictionary + public class MacroPropertyCollection : ObservableDictionary, IDeepCloneable { public MacroPropertyCollection() : base(property => property.Alias) { } + public object DeepClone() + { + var clone = new MacroPropertyCollection(); + foreach (var item in this) + { + clone.Add((IMacroProperty)item.DeepClone()); + } + return clone; + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs index 805177be9a..4fa6215477 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs @@ -169,6 +169,14 @@ namespace Umbraco.Core.Persistence.Repositories var macro = (Macro)entity; if (macro.IsPropertyDirty("Properties")) { + //now we need to delete any props that have been removed + foreach (var propAlias in macro.RemovedProperties) + { + //delete the property + Database.Delete("WHERE macro=@macroId AND macroPropertyAlias=@propAlias", + new { macroId = macro.Id, propAlias = propAlias }); + } + //for any that exist on the object, we need to determine if we need to update or insert foreach (var propDto in dto.MacroPropertyDtos) { @@ -184,13 +192,7 @@ namespace Umbraco.Core.Persistence.Repositories } } - //now we need to delete any props that have been removed - foreach (var propAlias in macro.RemovedProperties) - { - //delete the property - Database.Delete("WHERE macro=@macroId AND macroPropertyAlias=@propAlias", - new { macroId = macro.Id, propAlias = propAlias }); - } + } ((ICanBeDirty)entity).ResetDirtyProperties(); diff --git a/src/Umbraco.Tests/Models/MacroTests.cs b/src/Umbraco.Tests/Models/MacroTests.cs index 273971c93c..b11814d622 100644 --- a/src/Umbraco.Tests/Models/MacroTests.cs +++ b/src/Umbraco.Tests/Models/MacroTests.cs @@ -1,3 +1,4 @@ +using System.Linq; using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; @@ -19,6 +20,7 @@ namespace Umbraco.Tests.Models public void Can_Deep_Clone() { var macro = new Macro(1, true, 3, "test", "Test", "blah", "blah", "xslt", false, true, true, "script"); + macro.Properties.Add(new MacroProperty(6, "rewq", "REWQ", 1, "asdfasdf")); var clone = (Macro)macro.DeepClone(); @@ -26,6 +28,14 @@ namespace Umbraco.Tests.Models Assert.AreEqual(clone, macro); Assert.AreEqual(clone.Id, macro.Id); + Assert.AreEqual(clone.Properties.Count, macro.Properties.Count); + + for (int i = 0; i < clone.Properties.Count; i++) + { + Assert.AreEqual(clone.Properties[i], macro.Properties[i]); + Assert.AreNotSame(clone.Properties[i], macro.Properties[i]); + } + Assert.AreNotSame(clone.Properties, macro.Properties); Assert.AreNotSame(clone.AddedProperties, macro.AddedProperties); Assert.AreNotSame(clone.RemovedProperties, macro.RemovedProperties); @@ -44,6 +54,9 @@ namespace Umbraco.Tests.Models Assert.IsFalse(asDirty.IsPropertyDirty("Properties")); clone.Properties.Add(new MacroProperty(3, "asdf", "SDF", 3, "asdfasdf")); Assert.IsTrue(asDirty.IsPropertyDirty("Properties")); + Assert.AreEqual(1, clone.AddedProperties.Count()); + clone.Properties.Remove("rewq"); + Assert.AreEqual(1, clone.RemovedProperties.Count()); } diff --git a/src/Umbraco.Tests/Services/MacroServiceTests.cs b/src/Umbraco.Tests/Services/MacroServiceTests.cs index 5ef75d0b14..d88dd26dd4 100644 --- a/src/Umbraco.Tests/Services/MacroServiceTests.cs +++ b/src/Umbraco.Tests/Services/MacroServiceTests.cs @@ -150,6 +150,40 @@ namespace Umbraco.Tests.Services } + [Test] + public void Can_Add_And_Remove_Properties() + { + var macroService = ServiceContext.MacroService; + var macro = new Macro("test", "Test", scriptPath: "~/Views/MacroPartials/Test.cshtml", cacheDuration: 1234); + + //adds some properties + macro.Properties.Add(new MacroProperty("blah1", "Blah1", 0, "blah1")); + macro.Properties.Add(new MacroProperty("blah2", "Blah2", 0, "blah2")); + macro.Properties.Add(new MacroProperty("blah3", "Blah3", 0, "blah3")); + macro.Properties.Add(new MacroProperty("blah4", "Blah4", 0, "blah4")); + macroService.Save(macro); + + var result1 = macroService.GetById(macro.Id); + Assert.AreEqual(4, result1.Properties.Count()); + + //simulate clearing the sections + foreach (var s in result1.Properties.ToArray()) + { + result1.Properties.Remove(s.Alias); + } + //now just re-add a couple + result1.Properties.Add(new MacroProperty("blah3", "Blah3", 0, "blah3")); + result1.Properties.Add(new MacroProperty("blah4", "Blah4", 0, "blah4")); + macroService.Save(result1); + + //assert + + //re-get + result1 = macroService.GetById(result1.Id); + Assert.AreEqual(2, result1.Properties.Count()); + + } + //[Test] //public void Can_Get_Many_By_Alias() //{ From ac88da4188365b101debf0f3e9ad7ec7c300a898 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 12 May 2014 14:32:34 +1000 Subject: [PATCH 47/94] Fixes: U4-4856 ApplicationContext.Current.Services.ContentService.Save throw exception --- .../Security/AuthenticationExtensions.cs | 1 + .../NotificationServiceExtensions.cs | 48 +++++++++++++++++-- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/Security/AuthenticationExtensions.cs b/src/Umbraco.Core/Security/AuthenticationExtensions.cs index a460f32e55..f5b41d0e34 100644 --- a/src/Umbraco.Core/Security/AuthenticationExtensions.cs +++ b/src/Umbraco.Core/Security/AuthenticationExtensions.cs @@ -86,6 +86,7 @@ namespace Umbraco.Core.Security public static UmbracoBackOfficeIdentity GetCurrentIdentity(this HttpContextBase http, bool authenticateRequestIfNotFound) { if (http == null) throw new ArgumentNullException("http"); + if (http.User == null) return null; //there's no user at all so no identity var identity = http.User.Identity as UmbracoBackOfficeIdentity; if (identity != null) return identity; if (authenticateRequestIfNotFound == false) return null; diff --git a/src/Umbraco.Web/NotificationServiceExtensions.cs b/src/Umbraco.Web/NotificationServiceExtensions.cs index 8404a99a0e..9e10531b78 100644 --- a/src/Umbraco.Web/NotificationServiceExtensions.cs +++ b/src/Umbraco.Web/NotificationServiceExtensions.cs @@ -2,7 +2,9 @@ using System; using System.Globalization; using Umbraco.Core; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Models.EntityBase; +using Umbraco.Core.Models.Membership; using Umbraco.Core.Services; using umbraco; using umbraco.BusinessLogic.Actions; @@ -10,28 +12,64 @@ using umbraco.interfaces; namespace Umbraco.Web { + //NOTE: all of these require an UmbracoContext because currently to send the notifications we need an HttpContext, this is based on legacy code + // for which probably requires updating so that these can be sent outside of the http context. + internal static class NotificationServiceExtensions { internal static void SendNotification(this INotificationService service, IUmbracoEntity entity, IAction action, ApplicationContext applicationContext) { - if (global::Umbraco.Web.UmbracoContext.Current == null) return; - service.SendNotification(entity, action, global::Umbraco.Web.UmbracoContext.Current); + if (UmbracoContext.Current == null) + { + LogHelper.Warn(typeof(NotificationServiceExtensions), "Cannot send notifications, there is no current UmbracoContext"); + return; + } + service.SendNotification(entity, action, UmbracoContext.Current); } internal static void SendNotification(this INotificationService service, IUmbracoEntity entity, IAction action, UmbracoContext umbracoContext) { - if (umbracoContext == null) return; + if (umbracoContext == null) + { + LogHelper.Warn(typeof(NotificationServiceExtensions), "Cannot send notifications, there is no current UmbracoContext"); + return; + } service.SendNotification(entity, action, umbracoContext, umbracoContext.Application); } internal static void SendNotification(this INotificationService service, IUmbracoEntity entity, IAction action, UmbracoContext umbracoContext, ApplicationContext applicationContext) { + if (umbracoContext == null) + { + LogHelper.Warn(typeof(NotificationServiceExtensions), "Cannot send notifications, there is no current UmbracoContext"); + return; + } + + var user = umbracoContext.Security.CurrentUser; + + //if there is no current user, then use the admin + if (user == null) + { + LogHelper.Warn(typeof(NotificationServiceExtensions), "There is no current Umbraco user logged in, the notifications will be sent from the administrator"); + user = applicationContext.Services.UserService.GetUserById(0); + if (user == null) + { + LogHelper.Warn(typeof(NotificationServiceExtensions), "Noticiations can not be sent, no admin user with id 0 could be resolved"); + return; + } + } + service.SendNotification(user, entity, action, umbracoContext, applicationContext); + } + + internal static void SendNotification(this INotificationService service, IUser sender, IUmbracoEntity entity, IAction action, UmbracoContext umbracoContext, ApplicationContext applicationContext) + { + if (sender == null) throw new ArgumentNullException("sender"); if (umbracoContext == null) throw new ArgumentNullException("umbracoContext"); if (applicationContext == null) throw new ArgumentNullException("applicationContext"); - var user = umbracoContext.Security.CurrentUser; + applicationContext.Services.NotificationService.SendNotifications( - user, + sender, entity, action.Letter.ToString(CultureInfo.InvariantCulture), ui.Text("actions", action.Alias), From 03cb54e931244082c9770cf98bf34600b4202705 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 12 May 2014 14:37:54 +1000 Subject: [PATCH 48/94] fixed merge issue --- src/Umbraco.Tests/Models/ContentTypeTests.cs | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/Umbraco.Tests/Models/ContentTypeTests.cs b/src/Umbraco.Tests/Models/ContentTypeTests.cs index 9fbfff3dbd..3a0d974185 100644 --- a/src/Umbraco.Tests/Models/ContentTypeTests.cs +++ b/src/Umbraco.Tests/Models/ContentTypeTests.cs @@ -12,17 +12,7 @@ namespace Umbraco.Tests.Models [TestFixture] public class ContentTypeTests : BaseUmbracoConfigurationTest { - [SetUp] - public void Init() - { - TestHelper.EnsureUmbracoSettingsConfig(); - } - - [TearDown] - public void Dispose() - { - TestHelper.CleanUmbracoSettingsConfig(); - } + [Test] public void Can_Deep_Clone_Content_Type_Sort() From b048341da02523d27f5d4dd7ba33b1e9373ebf68 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 12 May 2014 17:07:29 +1000 Subject: [PATCH 49/94] Fixes: U4-4789 PluginCache doesn't update with code defined PropertyEditors in package and publicizes a couple things --- .../LazyManyObjectsResolverbase.cs | 3 +- src/Umbraco.Core/PluginManager.cs | 44 ++++++++++++------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs b/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs index 016a9c8f11..f2223d338e 100644 --- a/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs +++ b/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs @@ -49,6 +49,7 @@ namespace Umbraco.Core.ObjectResolution /// Initializes a new instance of the class with an initial list /// If is per HttpRequest then there must be a current HttpContext. /// is per HttpRequest but the current HttpContext is null. + ///
protected LazyManyObjectsResolverBase(IEnumerable> lazyTypeList, ObjectLifetimeScope scope = ObjectLifetimeScope.Application) : this(scope) { @@ -108,7 +109,7 @@ namespace Umbraco.Core.ObjectResolution /// Gets a value indicating whether the resolver has resolved types to create instances from. ///
/// To be used in unit tests. - internal bool HasResolvedTypes + public bool HasResolvedTypes { get { diff --git a/src/Umbraco.Core/PluginManager.cs b/src/Umbraco.Core/PluginManager.cs index 2f0f7fcec6..d03edc0fc6 100644 --- a/src/Umbraco.Core/PluginManager.cs +++ b/src/Umbraco.Core/PluginManager.cs @@ -44,9 +44,9 @@ namespace Umbraco.Core /// file is cached temporarily until app startup completes. ///
/// - /// - internal PluginManager(ApplicationContext appContext, bool detectBinChanges = true) - : this(detectBinChanges) + /// + internal PluginManager(ApplicationContext appContext, bool detectChanges = true) + : this(detectChanges) { if (appContext == null) throw new ArgumentNullException("appContext"); _appContext = appContext; @@ -55,11 +55,11 @@ namespace Umbraco.Core /// /// Creates a new PluginManager /// - /// - /// If true will detect changes in the /bin folder and therefor load plugins from the + /// + /// If true will detect changes in the /bin folder, app_code, etc... and therefor load plugins from the /// cached plugins file if one is found. If false will never use the cache file for plugins /// - internal PluginManager(bool detectCodeChanges = true) + internal PluginManager(bool detectChanges = true) { _tempFolder = IOHelper.MapPath("~/App_Data/TEMP/PluginCache"); //create the folder if it doesn't exist @@ -68,29 +68,41 @@ namespace Umbraco.Core Directory.CreateDirectory(_tempFolder); } + var pluginListFile = GetPluginListFilePath(); + //this is a check for legacy changes, before we didn't store the TypeResolutionKind in the file which was a mistake, //so we need to detect if the old file is there without this attribute, if it is then we delete it if (DetectLegacyPluginListFile()) { - var filePath = GetPluginListFilePath(); - File.Delete(filePath); + File.Delete(pluginListFile); } - if (detectCodeChanges) + if (detectChanges) { //first check if the cached hash is 0, if it is then we ne //do the check if they've changed - HaveAssembliesChanged = (CachedAssembliesHash != CurrentAssembliesHash) || CachedAssembliesHash == 0; + RequiresRescanning = (CachedAssembliesHash != CurrentAssembliesHash) || CachedAssembliesHash == 0; //if they have changed, we need to write the new file - if (HaveAssembliesChanged) + if (RequiresRescanning) { + //if the hash has changed, clear out the persisted list no matter what, this will force + // rescanning of all plugin types including lazy ones. + // http://issues.umbraco.org/issue/U4-4789 + File.Delete(pluginListFile); + WriteCachePluginsHash(); } } else { + + //if the hash has changed, clear out the persisted list no matter what, this will force + // rescanning of all plugin types including lazy ones. + // http://issues.umbraco.org/issue/U4-4789 + File.Delete(pluginListFile); + //always set to true if we're not detecting (generally only for testing) - HaveAssembliesChanged = true; + RequiresRescanning = true; } } @@ -130,9 +142,9 @@ namespace Umbraco.Core /// - /// Returns a bool if the assemblies in the /bin have changed since they were last hashed. + /// Returns a bool if the assemblies in the /bin, app_code, global.asax, etc... have changed since they were last hashed. /// - internal bool HaveAssembliesChanged { get; private set; } + internal bool RequiresRescanning { get; private set; } /// /// Returns the currently cached hash value of the scanned assemblies in the /bin folder. Returns 0 @@ -328,7 +340,7 @@ namespace Umbraco.Core /// /// Generally only used for resetting cache, for example during the install process /// - internal void ClearPluginCache() + public void ClearPluginCache() { var path = GetPluginListFilePath(); if (File.Exists(path)) @@ -670,7 +682,7 @@ namespace Umbraco.Core //we first need to look into our cache file (this has nothing to do with the 'cacheResult' parameter which caches in memory). //if assemblies have not changed and the cache file actually exists, then proceed to try to lookup by the cache file. - if (HaveAssembliesChanged == false && File.Exists(GetPluginListFilePath())) + if (RequiresRescanning == false && File.Exists(GetPluginListFilePath())) { var fileCacheResult = TryGetCachedPluginsFromFile(resolutionType); From 313d77eb91be058b71e425b42810521238367476 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 12 May 2014 17:19:17 +1000 Subject: [PATCH 50/94] Fixes: U4-4789 PluginCache doesn't update with code defined PropertyEditors in package and publicizes a couple things --- .../LazyManyObjectsResolverbase.cs | 3 +- src/Umbraco.Core/PluginManager.cs | 44 ++++++++++++------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs b/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs index 6aaf59106c..7593693e91 100644 --- a/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs +++ b/src/Umbraco.Core/ObjectResolution/LazyManyObjectsResolverbase.cs @@ -49,6 +49,7 @@ namespace Umbraco.Core.ObjectResolution /// Initializes a new instance of the class with an initial list /// If is per HttpRequest then there must be a current HttpContext. /// is per HttpRequest but the current HttpContext is null. + /// protected LazyManyObjectsResolverBase(IEnumerable> lazyTypeList, ObjectLifetimeScope scope = ObjectLifetimeScope.Application) : this(scope) { @@ -108,7 +109,7 @@ namespace Umbraco.Core.ObjectResolution /// Gets a value indicating whether the resolver has resolved types to create instances from. ///
/// To be used in unit tests. - internal bool HasResolvedTypes + public bool HasResolvedTypes { get { diff --git a/src/Umbraco.Core/PluginManager.cs b/src/Umbraco.Core/PluginManager.cs index 3928a0c1cc..9dd0a72a17 100644 --- a/src/Umbraco.Core/PluginManager.cs +++ b/src/Umbraco.Core/PluginManager.cs @@ -43,9 +43,9 @@ namespace Umbraco.Core /// file is cached temporarily until app startup completes. ///
/// - /// - internal PluginManager(ApplicationContext appContext, bool detectBinChanges = true) - : this(detectBinChanges) + /// + internal PluginManager(ApplicationContext appContext, bool detectChanges = true) + : this(detectChanges) { if (appContext == null) throw new ArgumentNullException("appContext"); _appContext = appContext; @@ -54,11 +54,11 @@ namespace Umbraco.Core /// /// Creates a new PluginManager /// - /// - /// If true will detect changes in the /bin folder and therefor load plugins from the + /// + /// If true will detect changes in the /bin folder, app_code, etc... and therefor load plugins from the /// cached plugins file if one is found. If false will never use the cache file for plugins /// - internal PluginManager(bool detectCodeChanges = true) + internal PluginManager(bool detectChanges = true) { _tempFolder = IOHelper.MapPath("~/App_Data/TEMP/PluginCache"); //create the folder if it doesn't exist @@ -67,29 +67,41 @@ namespace Umbraco.Core Directory.CreateDirectory(_tempFolder); } + var pluginListFile = GetPluginListFilePath(); + //this is a check for legacy changes, before we didn't store the TypeResolutionKind in the file which was a mistake, //so we need to detect if the old file is there without this attribute, if it is then we delete it if (DetectLegacyPluginListFile()) { - var filePath = GetPluginListFilePath(); - File.Delete(filePath); + File.Delete(pluginListFile); } - if (detectCodeChanges) + if (detectChanges) { //first check if the cached hash is 0, if it is then we ne //do the check if they've changed - HaveAssembliesChanged = (CachedAssembliesHash != CurrentAssembliesHash) || CachedAssembliesHash == 0; + RequiresRescanning = (CachedAssembliesHash != CurrentAssembliesHash) || CachedAssembliesHash == 0; //if they have changed, we need to write the new file - if (HaveAssembliesChanged) + if (RequiresRescanning) { + //if the hash has changed, clear out the persisted list no matter what, this will force + // rescanning of all plugin types including lazy ones. + // http://issues.umbraco.org/issue/U4-4789 + File.Delete(pluginListFile); + WriteCachePluginsHash(); } } else { + + //if the hash has changed, clear out the persisted list no matter what, this will force + // rescanning of all plugin types including lazy ones. + // http://issues.umbraco.org/issue/U4-4789 + File.Delete(pluginListFile); + //always set to true if we're not detecting (generally only for testing) - HaveAssembliesChanged = true; + RequiresRescanning = true; } } @@ -129,9 +141,9 @@ namespace Umbraco.Core /// - /// Returns a bool if the assemblies in the /bin have changed since they were last hashed. + /// Returns a bool if the assemblies in the /bin, app_code, global.asax, etc... have changed since they were last hashed. /// - internal bool HaveAssembliesChanged { get; private set; } + internal bool RequiresRescanning { get; private set; } /// /// Returns the currently cached hash value of the scanned assemblies in the /bin folder. Returns 0 @@ -327,7 +339,7 @@ namespace Umbraco.Core /// /// Generally only used for resetting cache, for example during the install process /// - internal void ClearPluginCache() + public void ClearPluginCache() { var path = GetPluginListFilePath(); if (File.Exists(path)) @@ -646,7 +658,7 @@ namespace Umbraco.Core //we first need to look into our cache file (this has nothing to do with the 'cacheResult' parameter which caches in memory). //if assemblies have not changed and the cache file actually exists, then proceed to try to lookup by the cache file. - if (HaveAssembliesChanged == false && File.Exists(GetPluginListFilePath())) + if (RequiresRescanning == false && File.Exists(GetPluginListFilePath())) { var fileCacheResult = TryGetCachedPluginsFromFile(resolutionType); From 289bed8fd20619b3986088aa75386af4afd48646 Mon Sep 17 00:00:00 2001 From: Martin Meixger Date: Mon, 12 May 2014 15:34:50 +0200 Subject: [PATCH 51/94] change negative coordinates to zero --- .../src/common/services/cropperhelper.service.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js index 5c9e78777a..747adfe843 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js @@ -114,11 +114,10 @@ function cropperHelper(umbRequestHelper, $http) { crop.x2 = x2_px / image.width; crop.y2 = y2_px / image.height; - _.forEach(crop, function(coord){ - if(coord < 0){ - coord = 0; - } - }); + for(var coord in crop){ + if(crop[coord] < 0) + crop[coord] = 0; + } return crop; }, From 937e8401044695eef416932f988643e68e3dc571 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 13 May 2014 10:40:56 +1000 Subject: [PATCH 52/94] Fixes: U4-4873 RuntimeCacheRefresher does not remove items when media or content requires cache refreshing & U4-4871 Synced media indexes between load balanced servers do not sync all properties --- src/Umbraco.Web/Cache/MediaCacheRefresher.cs | 8 ++++ .../Cache/UnpublishedPageCacheRefresher.cs | 46 +++++++++++++++---- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web/Cache/MediaCacheRefresher.cs b/src/Umbraco.Web/Cache/MediaCacheRefresher.cs index 9074e4856c..bd12261b44 100644 --- a/src/Umbraco.Web/Cache/MediaCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/MediaCacheRefresher.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Cache; using Umbraco.Core.Events; using Umbraco.Core.IO; using Umbraco.Core.Models; +using Umbraco.Core.Persistence.Caching; using umbraco.interfaces; using System.Linq; @@ -155,6 +156,7 @@ namespace Umbraco.Web.Cache payloads.ForEach(payload => { + //if there's no path, then just use id (this will occur on permanent deletion like emptying recycle bin) if (payload.Path.IsNullOrWhiteSpace()) { @@ -165,6 +167,12 @@ namespace Umbraco.Web.Cache { foreach (var idPart in payload.Path.Split(',')) { + int idPartAsInt; + if (int.TryParse(idPart, out idPartAsInt)) + { + RuntimeCacheProvider.Current.Delete(typeof(IMedia), idPartAsInt); + } + ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch( string.Format("{0}_{1}_True", CacheKeys.MediaCacheKey, idPart)); diff --git a/src/Umbraco.Web/Cache/UnpublishedPageCacheRefresher.cs b/src/Umbraco.Web/Cache/UnpublishedPageCacheRefresher.cs index 765c591415..761ae53e7c 100644 --- a/src/Umbraco.Web/Cache/UnpublishedPageCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/UnpublishedPageCacheRefresher.cs @@ -3,22 +3,16 @@ using System.Web.Script.Serialization; using Umbraco.Core.Cache; using Umbraco.Core.Models; using System.Linq; +using Umbraco.Core.Persistence.Caching; using Umbraco.Core.Sync; namespace Umbraco.Web.Cache { /// - /// A cache refresher used for non-published content, this is primarily to notify Examine indexes to update + /// A cache refresher used for non-published content, this is primarily to notify Examine indexes to update and to refresh the RuntimeCacheRefresher /// public sealed class UnpublishedPageCacheRefresher : TypedCacheRefresherBase, IJsonCacheRefresher { - - //NOTE: There is no functionality for this cache refresher, it is here simply to emit events on each server for which examine - // binds to. We could put the Examine index functionality in here but we've kept it all in the ExamineEvents class so that all of - // the logic is in one place. In the future we may put the examine logic in a cache refresher instead (that would make sense) but we'd - // want to get this done before making more cache refreshers: - // http://issues.umbraco.org/issue/U4-2633 - protected override UnpublishedPageCacheRefresher Instance { get { return this; } @@ -78,12 +72,48 @@ namespace Umbraco.Web.Cache #endregion + public override void RefreshAll() + { + RuntimeCacheProvider.Current.Clear(typeof(IContent)); + base.RefreshAll(); + } + + public override void Refresh(int id) + { + RuntimeCacheProvider.Current.Delete(typeof(IContent), id); + base.Refresh(id); + } + + public override void Remove(int id) + { + RuntimeCacheProvider.Current.Delete(typeof(IContent), id); + base.Remove(id); + } + + + public override void Refresh(IContent instance) + { + RuntimeCacheProvider.Current.Delete(typeof(IContent), instance.Id); + base.Refresh(instance); + } + + public override void Remove(IContent instance) + { + RuntimeCacheProvider.Current.Delete(typeof(IContent), instance.Id); + base.Remove(instance); + } + /// /// Implement the IJsonCacheRefresher so that we can bulk delete the cache based on multiple IDs for when the recycle bin is emptied /// /// public void Refresh(string jsonPayload) { + foreach (var payload in DeserializeFromJsonPayload(jsonPayload)) + { + RuntimeCacheProvider.Current.Delete(typeof(IContent), payload.Id); + } + OnCacheUpdated(Instance, new CacheRefresherEventArgs(jsonPayload, MessageType.RefreshByJson)); } From 16b5c86192e66d61f7c0e95f5f55b2585c29ea51 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 13 May 2014 12:55:31 +1000 Subject: [PATCH 53/94] Fixes: U4-4869 Cannot save tags - was due to adding the loading... message and the ng-if creating a new scope and not targeting the $parent in the view, also fixes up clearing the value with typeahead is used --- .../common/services/cropperhelper.service.js | 5 +++-- .../src/views/propertyeditors/rte/rte.html | 3 ++- .../propertyeditors/tags/tags.controller.js | 5 ++++- .../src/views/propertyeditors/tags/tags.html | 19 ++++++++----------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js index 747adfe843..e613ccad0d 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/cropperhelper.service.js @@ -115,8 +115,9 @@ function cropperHelper(umbRequestHelper, $http) { crop.y2 = y2_px / image.height; for(var coord in crop){ - if(crop[coord] < 0) - crop[coord] = 0; + if(crop[coord] < 0){ + crop[coord] = 0; + } } return crop; diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.html index cf4055d77e..cb1f80e704 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.html @@ -1,4 +1,5 @@ 
Loading...
- +
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js index 62ae843e1c..b44712f8dc 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js @@ -34,6 +34,7 @@ angular.module("umbraco") e.preventDefault(); //we need to use jquery because typeahead duplicates the text box addTag($scope.tagToAdd); + $scope.tagToAdd = ""; } } @@ -111,15 +112,17 @@ angular.module("umbraco") }).bind("typeahead:selected", function (obj, datum, name) { angularHelper.safeApply($scope, function () { addTag(datum["value"]); + $scope.tagToAdd = ""; }); }).bind("typeahead:autocompleted", function (obj, datum, name) { angularHelper.safeApply($scope, function () { addTag(datum["value"]); + $scope.tagToAdd = ""; }); }).bind("typeahead:opened", function (obj) { - console.log("opened "); + //console.log("opened "); }); }); diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html index f947da4456..db13aa49cd 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html @@ -4,16 +4,13 @@ Loading... - -
- {{tag}} +
+ {{tag}} - -
- - + +
\ No newline at end of file From cb7f26c998cc0d7cc8832b94ff1907b3cb0b0bbe Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 13 May 2014 13:39:18 +1000 Subject: [PATCH 54/94] Fixes: U4-4197 Error 400 on admin area login --- .../src/common/resources/auth.resource.js | 17 ++++++++++++++++- .../Editors/AuthenticationController.cs | 13 +++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/auth.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/auth.resource.js index 72904037d5..7f214400d5 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/auth.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/auth.resource.js @@ -55,7 +55,22 @@ function authResource($q, $http, umbRequestHelper, angularHelper) { umbRequestHelper.getApiUrl( "authenticationApiBaseUrl", "IsAuthenticated")), - 'Server call failed for checking authentication'); + { + success: function (data, status, headers, config) { + //if the response is false, they are not logged in so return a rejection + if (data === false || data === "false") { + return $q.reject('User is not logged in'); + } + return data; + }, + error: function (data, status, headers, config) { + return { + errorMsg: 'Server call failed for checking authentication', + data: data, + status: status + }; + } + }); }, /** Gets the user's remaining seconds before their login times out */ diff --git a/src/Umbraco.Web/Editors/AuthenticationController.cs b/src/Umbraco.Web/Editors/AuthenticationController.cs index 5e1672fa90..00498f7e61 100644 --- a/src/Umbraco.Web/Editors/AuthenticationController.cs +++ b/src/Umbraco.Web/Editors/AuthenticationController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Net; using System.Net.Http; +using System.Text; using System.Web; using System.Web.Helpers; using System.Web.Http; @@ -59,18 +60,14 @@ namespace Umbraco.Web.Editors ///
/// [HttpGet] - public HttpResponseMessage IsAuthenticated() + public bool IsAuthenticated() { var attempt = UmbracoContext.Security.AuthorizeRequest(); if (attempt == ValidateRequestAttempt.Success) { - return Request.CreateResponse(HttpStatusCode.OK); - } - //return BadRequest (400), we don't want to return a 401 because that get's intercepted - // by our angular helper because it thinks that we need to re-perform the request once we are - // authorized and we don't want to return a 403 because angular will show a warning msg indicating - // that the user doesn't have access to perform this function, we just want to return a normal invalid msg. - return Request.CreateResponse(HttpStatusCode.BadRequest); + return true; + } + return false; } From 78613823aebf4dbfb384b49444562304bef2c5b3 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 13 May 2014 15:22:16 +1000 Subject: [PATCH 55/94] Fixes: U4-4853 Richtext Editor doesn't render macros after upgrade to Umbraco 6.2.0 --- src/Umbraco.Web/umbraco.presentation/macro.cs | 9 +++++++++ .../umbraco.presentation/umbraco/nodeFactory/Node.cs | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web/umbraco.presentation/macro.cs b/src/Umbraco.Web/umbraco.presentation/macro.cs index 49e49b592f..3fa50ded67 100644 --- a/src/Umbraco.Web/umbraco.presentation/macro.cs +++ b/src/Umbraco.Web/umbraco.presentation/macro.cs @@ -354,6 +354,9 @@ namespace umbraco } catch (Exception e) { + LogHelper.WarnWithException( + "Error loading partial view macro (View: " + Model.ScriptName + ")", true, e); + renderFailed = true; Exceptions.Add(e); macroControl = handleError(e); @@ -1824,6 +1827,12 @@ namespace umbraco public static string MacroContentByHttp(int PageID, Guid PageVersion, Hashtable attributes) { + + if (SystemUtilities.GetCurrentTrustLevel() != AspNetHostingPermissionLevel.Unrestricted) + { + return "Cannot render macro content in the rich text editor when the application is running in a Partial Trust environment"; + } + string tempAlias = (attributes["macroalias"] != null) ? attributes["macroalias"].ToString() : attributes["macroAlias"].ToString(); diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/nodeFactory/Node.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/nodeFactory/Node.cs index 7d614795bc..8ea7dcddbb 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/nodeFactory/Node.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/nodeFactory/Node.cs @@ -550,7 +550,13 @@ namespace umbraco.NodeFactory { if (HttpContext.Current.Items["pageID"] == null) throw new InvalidOperationException("There is no current node."); - return (int)HttpContext.Current.Items["pageID"]; + + var intAttempt = HttpContext.Current.Items["pageID"].TryConvertTo(); + if (intAttempt == false) + { + throw new InvalidOperationException("The pageID value in the HttpContext.Items cannot be converted to an integer"); + } + return intAttempt.Result; } } } \ No newline at end of file From 9acba1d6d739a62fbb544c6df0fce2505abdc117 Mon Sep 17 00:00:00 2001 From: Stephan Date: Tue, 13 May 2014 09:53:22 +0200 Subject: [PATCH 56/94] U4-4857 - issue with document type new property alias --- .../GenericProperty/genericProperty.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI/umbraco_client/GenericProperty/genericProperty.js b/src/Umbraco.Web.UI/umbraco_client/GenericProperty/genericProperty.js index 77bfa813d9..4ca59e82de 100644 --- a/src/Umbraco.Web.UI/umbraco_client/GenericProperty/genericProperty.js +++ b/src/Umbraco.Web.UI/umbraco_client/GenericProperty/genericProperty.js @@ -17,25 +17,30 @@ function duplicatePropertyNameAsSafeAlias(propertySelector) { var prop = $(this); var inputName = prop.find('.prop-name'); var inputAlias = prop.find('.prop-alias'); - inputName.on('input', function (event) { + inputName.on('input blur', function (event) { getSafeAlias(inputAlias, inputName.val(), false, function (alias) { - inputAlias.val(alias); + if (!inputAlias.data('dirty')) + inputAlias.val(alias); }); - }).on('blur', function (event) { - $(this).off('input'); + }); + inputAlias.on('input', function(event) { + inputName.off('input blur'); }); }); } function checkAlias(aliasSelector) { - $(aliasSelector).keyup(function (event) { + $(aliasSelector).on('input', function (event) { var input = $(this); + input.data('dirty', true); var value = input.val(); validateSafeAlias(input, value, false, function (isSafe) { input.toggleClass('highlight-error', !isSafe); }); - }).blur(function(event) { + }).on('blur', function(event) { var input = $(this); + if (!input.data('dirty')) return; + input.removeData('dirty'); var value = input.val(); getSafeAlias(input, value, true, function (alias) { if (value.toLowerCase() != alias.toLowerCase()) From 03d3503531bcd82d0f2013f6c32dc407c17334b1 Mon Sep 17 00:00:00 2001 From: Stephan Date: Tue, 13 May 2014 12:39:35 +0200 Subject: [PATCH 57/94] Don't throw when validating doctype/property aliases with dangerous chars --- src/Umbraco.Web/WebServices/CoreStringsController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web/WebServices/CoreStringsController.cs b/src/Umbraco.Web/WebServices/CoreStringsController.cs index 6da704a520..de7bcd55d5 100644 --- a/src/Umbraco.Web/WebServices/CoreStringsController.cs +++ b/src/Umbraco.Web/WebServices/CoreStringsController.cs @@ -18,6 +18,7 @@ namespace Umbraco.Web.WebServices public class CoreStringsController : UmbracoAuthorizedController { [HttpGet] + [ValidateInput(false)] public JsonResult ToSafeAlias(string value, bool camelCase = true) { // always return a proper camel-cased alias From c9961b51929780b3abc02f9e53c81e6bb49ac8ea Mon Sep 17 00:00:00 2001 From: Stephan Date: Tue, 13 May 2014 15:24:23 +0200 Subject: [PATCH 58/94] Fix Umbraco.Core project (missing files, would not build) --- src/Umbraco.Core/Umbraco.Core.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 8b484914ec..5adf71fd60 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -378,6 +378,8 @@ + + From 48dcc373dc518a84dbcd9527bdcf3d3e8c73a323 Mon Sep 17 00:00:00 2001 From: Damiaan Date: Tue, 13 May 2014 22:29:59 +0200 Subject: [PATCH 59/94] Oembed for slideshare not working anymore --- src/Umbraco.Web.UI/config/EmbeddedMedia.Release.config | 2 +- src/Umbraco.Web.UI/config/EmbeddedMedia.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI/config/EmbeddedMedia.Release.config b/src/Umbraco.Web.UI/config/EmbeddedMedia.Release.config index 8e46fd134b..fe58a8fa84 100644 --- a/src/Umbraco.Web.UI/config/EmbeddedMedia.Release.config +++ b/src/Umbraco.Web.UI/config/EmbeddedMedia.Release.config @@ -15,7 +15,7 @@ - + xml diff --git a/src/Umbraco.Web.UI/config/EmbeddedMedia.config b/src/Umbraco.Web.UI/config/EmbeddedMedia.config index ae25ac80d5..86f00b1ef4 100644 --- a/src/Umbraco.Web.UI/config/EmbeddedMedia.config +++ b/src/Umbraco.Web.UI/config/EmbeddedMedia.config @@ -15,7 +15,7 @@ - + xml From d1e9fb6d9fc25c8f8389dd3e99c25362884cf366 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 09:42:34 +1000 Subject: [PATCH 60/94] re-fixes Core proj since it would not build --- src/Umbraco.Core/Umbraco.Core.csproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 5adf71fd60..8b484914ec 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -378,8 +378,6 @@ - - From 5956394bf15ce5809b1ae3cd455c79ce7101caa6 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 10:52:08 +1000 Subject: [PATCH 61/94] Fixes: U4-4877 Editing macro parameters fails because of new item validation --- .../umbraco/developer/Macros/editMacro.aspx | 25 +-- .../developer/Macros/editMacro.aspx.cs | 153 ++++++++++-------- 2 files changed, 93 insertions(+), 85 deletions(-) diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx index 3c1d3b6679..fb219e6f18 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx +++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx @@ -23,20 +23,7 @@ $(".fileChooser input[type='text']").not(txt).val(""); //reset other drop downs $(".fileChooser select").not($(this)).val(""); - }); - - //disable 'add macro property validators' when save or delete is clicked - $("#body_save,.delete-button").click(function (evt) { - $(".add-validator").each(function() { - ValidatorEnable($(this).get(0), false); - }); - }); - //enable the addmacro property validators when the add button is clicked - $(".add-button").click(function(evt) { - $(".add-validator").each(function () { - ValidatorEnable($(this).get(0), true); - }); - }); + }); UmbClientMgr.appActions().bindSaveShortCut(); @@ -182,15 +169,15 @@ - Required
- + Required
+ - Required
+ Required
- Required
+ Required
- + diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs index 788d9a26f2..a50c2970de 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs @@ -39,9 +39,8 @@ namespace umbraco.cms.presentation.developer { _macro = Services.MacroService.GetById(Convert.ToInt32(Request.QueryString["macroID"])); - if (!IsPostBack) + if (IsPostBack == false) { - ClientTools .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree().Tree.Alias) .SyncTree("-1,init," + _macro.Id.ToString(), false); @@ -77,57 +76,6 @@ namespace umbraco.cms.presentation.developer userControlList.Items.Insert(0, new ListItem("Browse usercontrols on server...", string.Empty)); } - else - { - Page.Validate(); - - ClientTools - .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree().Tree.Alias) - .SyncTree("-1,init," + _macro.Id.ToInvariantString(), true); //true forces the reload - - var tempMacroAssembly = macroAssembly.Text; - var tempMacroType = macroType.Text; - var tempCachePeriod = cachePeriod.Text; - if (tempCachePeriod == string.Empty) - tempCachePeriod = "0"; - if (tempMacroAssembly == string.Empty && macroUserControl.Text != string.Empty) - tempMacroType = macroUserControl.Text; - - SetMacroValuesFromPostBack(_macro, Convert.ToInt32(tempCachePeriod), tempMacroAssembly, tempMacroType); - - // Save elements - var sort = 0; - foreach (RepeaterItem item in macroProperties.Items) - { - var macroPropertyId = (HtmlInputHidden)item.FindControl("macroPropertyID"); - var macroElementName = (TextBox)item.FindControl("macroPropertyName"); - var macroElementAlias = (TextBox)item.FindControl("macroPropertyAlias"); - var macroElementType = (DropDownList)item.FindControl("macroPropertyType"); - - var prop = _macro.Properties.Single(x => x.Id == int.Parse(macroPropertyId.Value)); - prop.Alias = macroElementAlias.Text.Trim(); - prop.Name = macroElementName.Text.Trim(); - prop.EditorAlias = macroElementType.SelectedValue; - prop.SortOrder = sort; - sort++; - } - - Services.MacroService.Save(_macro); - - ClientTools.ShowSpeechBubble(speechBubbleIcon.save, "Macro saved", ""); - - // Check for assemblyBrowser - if (tempMacroType.IndexOf(".ascx", StringComparison.Ordinal) > 0) - assemblyBrowserUserControl.Controls.Add( - new LiteralControl("
")); - else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) - assemblyBrowser.Controls.Add( - new LiteralControl("
")); - } } /// @@ -267,7 +215,17 @@ namespace umbraco.cms.presentation.developer } public void macroPropertyCreate(object sender, EventArgs e) - { + { + //enable add validators + var val1 = (RequiredFieldValidator)((Control)sender).Parent.FindControl("RequiredFieldValidator1"); + var val2 = (RequiredFieldValidator)((Control)sender).Parent.FindControl("RequiredFieldValidator4"); + var val3 = (RequiredFieldValidator)((Control)sender).Parent.FindControl("RequiredFieldValidator5"); + val1.Enabled = true; + val2.Enabled = true; + val3.Enabled = true; + + Page.Validate(); + if (Page.IsValid == false) { return; @@ -336,25 +294,88 @@ namespace umbraco.cms.presentation.developer } protected override void OnInit(EventArgs e) - { - // Tab setup - InfoTabPage = TabView1.NewTabPage("Macro Properties"); - InfoTabPage.Controls.Add(Pane1); - InfoTabPage.Controls.Add(Pane1_2); - InfoTabPage.Controls.Add(Pane1_3); - InfoTabPage.Controls.Add(Pane1_4); + { + base.OnInit(e); + EnsureChildControls(); + } - Parameters = TabView1.NewTabPage("Parameters"); - Parameters.Controls.Add(Panel2); + protected override void CreateChildControls() + { + base.CreateChildControls(); + + // Tab setup + InfoTabPage = TabView1.NewTabPage("Macro Properties"); + InfoTabPage.Controls.Add(Pane1); + InfoTabPage.Controls.Add(Pane1_2); + InfoTabPage.Controls.Add(Pane1_3); + InfoTabPage.Controls.Add(Pane1_4); + + Parameters = TabView1.NewTabPage("Parameters"); + Parameters.Controls.Add(Panel2); MenuButton save = TabView1.Menu.NewButton(); save.ButtonType = MenuButtonType.Primary; save.Text = ui.Text("save"); save.ID = "save"; - base.OnInit(e); - } + save.Click += Save_Click; + } - /// + void Save_Click(object sender, EventArgs e) + { + //disable the add validators + macroProperties. + + Page.Validate(); + + ClientTools + .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree().Tree.Alias) + .SyncTree("-1,init," + _macro.Id.ToInvariantString(), true); //true forces the reload + + var tempMacroAssembly = macroAssembly.Text; + var tempMacroType = macroType.Text; + var tempCachePeriod = cachePeriod.Text; + if (tempCachePeriod == string.Empty) + tempCachePeriod = "0"; + if (tempMacroAssembly == string.Empty && macroUserControl.Text != string.Empty) + tempMacroType = macroUserControl.Text; + + SetMacroValuesFromPostBack(_macro, Convert.ToInt32(tempCachePeriod), tempMacroAssembly, tempMacroType); + + // Save elements + var sort = 0; + foreach (RepeaterItem item in macroProperties.Items) + { + var macroPropertyId = (HtmlInputHidden)item.FindControl("macroPropertyID"); + var macroElementName = (TextBox)item.FindControl("macroPropertyName"); + var macroElementAlias = (TextBox)item.FindControl("macroPropertyAlias"); + var macroElementType = (DropDownList)item.FindControl("macroPropertyType"); + + var prop = _macro.Properties.Single(x => x.Id == int.Parse(macroPropertyId.Value)); + prop.Alias = macroElementAlias.Text.Trim(); + prop.Name = macroElementName.Text.Trim(); + prop.EditorAlias = macroElementType.SelectedValue; + prop.SortOrder = sort; + sort++; + } + + Services.MacroService.Save(_macro); + + ClientTools.ShowSpeechBubble(speechBubbleIcon.save, "Macro saved", ""); + + // Check for assemblyBrowser + if (tempMacroType.IndexOf(".ascx", StringComparison.Ordinal) > 0) + assemblyBrowserUserControl.Controls.Add( + new LiteralControl("
")); + else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) + assemblyBrowser.Controls.Add( + new LiteralControl("
")); + } + + /// /// TabView1 control. /// /// From 42cd71ef6c775857c1fed3790d7edce4574aa16e Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 12:01:38 +1000 Subject: [PATCH 62/94] Fixes: U4-4865 Umbraco 7.1.2 Date Picker not rendering icon or calendar control --- .../src/common/services/assets.service.js | 3 +- .../datepicker/datepicker.controller.js | 62 ++++++++++--------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/assets.service.js b/src/Umbraco.Web.UI.Client/src/common/services/assets.service.js index f8adb14863..94a84f0749 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/assets.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/assets.service.js @@ -178,9 +178,8 @@ angular.module('umbraco.services') * @methodOf umbraco.services.assetsService * * @description - * Injects a collection of files, this can be a mixed collection of css and js files, the loader will determine how to load them + * Injects a collection of files, this can be ONLY js files * - * **Warning:** if the collection of files contains a .css file, you will in some cases not receive a resolved promise, it is therefore prefered to use the individual loadCss and loadJs methods * * @param {Array} pathArray string array of paths to the files to load * @param {Scope} scope optional scope to pass into the loader diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/datepicker/datepicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/datepicker/datepicker.controller.js index 40940dd78d..d426e58606 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/datepicker/datepicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/datepicker/datepicker.controller.js @@ -1,4 +1,4 @@ -function dateTimePickerController($scope, notificationsService, assetsService, angularHelper, userService) { +function dateTimePickerController($scope, notificationsService, assetsService, angularHelper, userService, $element) { //lists the custom language files that we currently support var customLangs = ["pt-BR"]; @@ -31,37 +31,39 @@ function dateTimePickerController($scope, notificationsService, assetsService, a //get the current user to see if we can localize this picker userService.getCurrentUser().then(function (user) { + + assetsService.loadCss('lib/datetimepicker/bootstrap-datetimepicker.min.css').then(function() { + var filesToLoad = ["lib/datetimepicker/bootstrap-datetimepicker.min.js"]; + + //if we support this custom culture, set it, then we'll need to load in that lang file + if (_.contains(customLangs, user.locale)) { + $scope.model.config.language = user.locale; + filesToLoad.push("lib/datetimepicker/langs/datetimepicker." + user.locale + ".js"); + } + + assetsService.load(filesToLoad).then( + function () { + //The Datepicker js and css files are available and all components are ready to use. + + // Get the id of the datepicker button that was clicked + var pickerId = $scope.model.alias; + // Open the datepicker and add a changeDate eventlistener + $element.find("div:first") + .datetimepicker($scope.model.config) + .on("changeDate", applyDate); + + //now assign the date + $("#datepicker" + pickerId).val($scope.model.value); + + //Ensure to remove the event handler when this instance is destroyted + $scope.$on('$destroy', function () { + $element.find("div:first").datetimepicker("destroy"); + }); + }); + }); + - var filesToLoad = ["lib/datetimepicker/bootstrap-datetimepicker.min.js"]; - - //if we support this custom culture, set it, then we'll need to load in that lang file - if (_.contains(customLangs, user.locale)) { - $scope.model.config.language = user.locale; - filesToLoad.push("lib/datetimepicker/langs/datetimepicker." + user.locale + ".js"); - } - - assetsService.load(filesToLoad).then( - function() { - //The Datepicker js and css files are available and all components are ready to use. - - // Get the id of the datepicker button that was clicked - var pickerId = $scope.model.alias; - // Open the datepicker and add a changeDate eventlistener - $("#datepicker" + pickerId) - //.datetimepicker(config); - .datetimepicker($scope.model.config) - .on("changeDate", applyDate); - - //now assign the date - $("#datepicker" + pickerId).val($scope.model.value); - - }); - }); - - assetsService.loadCss( - 'lib/datetimepicker/bootstrap-datetimepicker.min.css' - ); } angular.module("umbraco").controller("Umbraco.PropertyEditors.DatepickerController", dateTimePickerController); From 8c334a8c950f536d06a8594a488919ec66106034 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 12:29:38 +1000 Subject: [PATCH 63/94] Fixes: U4-4880 SEO Checker fails after upgrading from 7.1.1 to 7.1.2 --- src/Umbraco.Core/Services/DataTypeService.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index 03e721242c..65bd78c2b0 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -124,7 +124,13 @@ namespace Umbraco.Core.Services { var collection = repository.GetPreValuesCollectionByDataTypeId(id); //now convert the collection to a string list - var list = collection.FormatAsDictionary().Select(x => x.Value.Value).ToList(); + var list = collection.FormatAsDictionary() + .Select(x => x.Value.Value) + //It is definitely possible to have duplicate values but previously people were probably not expecting that, + // i.e. http://issues.umbraco.org/issue/U4-4880 + // besides, if we are just returning the values without their keys it should probably be the distinct values. + .Distinct() + .ToList(); return list; } } From f6532d27432eddcdef038ef12ec9be72e16a8e6e Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 13:09:02 +1000 Subject: [PATCH 64/94] un-does the distinct check, in the past it was never like this, duplicate values were always allowed so by doing this it is a breaking change --- src/Umbraco.Core/Services/DataTypeService.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index 65bd78c2b0..f1bf4d1321 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -126,10 +126,6 @@ namespace Umbraco.Core.Services //now convert the collection to a string list var list = collection.FormatAsDictionary() .Select(x => x.Value.Value) - //It is definitely possible to have duplicate values but previously people were probably not expecting that, - // i.e. http://issues.umbraco.org/issue/U4-4880 - // besides, if we are just returning the values without their keys it should probably be the distinct values. - .Distinct() .ToList(); return list; } From aa2375b8bab23116ed4ee97fac8dca64bea28b3f Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 15:18:28 +1000 Subject: [PATCH 65/94] Fixes client side mem leak for dialogs and not correctly removing their scopes. --- .../src/common/services/dialog.service.js | 858 +++++++++--------- 1 file changed, 437 insertions(+), 421 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js b/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js index 740a038a23..94b51ed10d 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js @@ -31,476 +31,492 @@ angular.module('umbraco.services') .factory('dialogService', function ($rootScope, $compile, $http, $timeout, $q, $templateCache, appState, eventsService) { - var dialogs = []; - - /** Internal method that removes all dialogs */ - function removeAllDialogs(args) { - for (var i = 0; i < dialogs.length; i++) { - var dialog = dialogs[i]; - dialog.close(args); - dialogs.splice(i, 1); - } - } + var dialogs = []; - /** Internal method that handles opening all dialogs */ - function openDialog(options) { - var defaults = { - container: $("body"), - animation: "fade", - modalClass: "umb-modal", - width: "100%", - inline: false, - iframe: false, - show: true, - template: "views/common/notfound.html", - callback: undefined, - closeCallback: undefined, - element: undefined, - //this allows us to pass in data to the dialog if required which can be used to configure the dialog - //and re-use it for different purposes. It will set on to the $scope.dialogData if it is defined. - dialogData: undefined - }; - - var dialog = angular.extend(defaults, options); - var scope = options.scope || $rootScope.$new(); - - //Modal dom obj and unique id - dialog.element = $('
'); - var id = dialog.template.replace('.html', '').replace('.aspx', '').replace(/[\/|\.|:\&\?\=]/g, "-") + '-' + scope.$id; + /** Internal method that removes all dialogs */ + function removeAllDialogs(args) { + for (var i = 0; i < dialogs.length; i++) { + var dialog = dialogs[i]; + dialog.close(args); + dialogs.splice(i, 1); + } + } - if (options.inline) { - dialog.animation = ""; - } - else { - dialog.element.addClass("modal"); - dialog.element.addClass("hide"); - } + /** Internal method that handles opening all dialogs */ + function openDialog(options) { + var defaults = { + container: $("body"), + animation: "fade", + modalClass: "umb-modal", + width: "100%", + inline: false, + iframe: false, + show: true, + template: "views/common/notfound.html", + callback: undefined, + closeCallback: undefined, + element: undefined, + //this allows us to pass in data to the dialog if required which can be used to configure the dialog + //and re-use it for different purposes. It will set on to the $scope.dialogData if it is defined. + dialogData: undefined + }; - //set the id and add classes - dialog.element - .attr('id', id) - .addClass(dialog.animation) - .addClass(dialog.modalClass); + var dialog = angular.extend(defaults, options); + var scope = options.scope || $rootScope.$new(); - //push the modal into the global modal collection - //we halt the .push because a link click will trigger a closeAll right away - $timeout(function () { - dialogs.push(dialog); - }, 500); - + //Modal dom obj and unique id + dialog.element = $('
'); + var id = dialog.template.replace('.html', '').replace('.aspx', '').replace(/[\/|\.|:\&\?\=]/g, "-") + '-' + scope.$id; - dialog.close = function(data) { - if (dialog.closeCallback) { - dialog.closeCallback(data); - } + if (options.inline) { + dialog.animation = ""; + } + else { + dialog.element.addClass("modal"); + dialog.element.addClass("hide"); + } - if(dialog.element){ - dialog.element.modal('hide'); + //set the id and add classes + dialog.element + .attr('id', id) + .addClass(dialog.animation) + .addClass(dialog.modalClass); - //this is not entirely enough since the damn - //webforms scriploader still complains - if(dialog.iframe){ + //push the modal into the global modal collection + //we halt the .push because a link click will trigger a closeAll right away + $timeout(function () { + dialogs.push(dialog); + }, 500); + + + dialog.close = function (data) { + if (dialog.closeCallback) { + dialog.closeCallback(data); + } + + if (dialog.element) { + dialog.element.modal('hide'); + + //this is not entirely enough since the damn + //webforms scriploader still complains + if (dialog.iframe) { dialog.element.find("iframe").attr("src", "about:blank"); - $timeout(function(){ - dialog.element.remove(); - }, 1000); - }else{ + $timeout(function () { + //we need to do more than just remove the element, this will not destroy the + // scope in angular 1.1x, in angular 1.2x this is taken care of but if we dont + // take care of this ourselves we have memory leaks. + dialog.element.remove(); + dialog.scope.$destroy(); + }, 1000); + } else { + //we need to do more than just remove the element, this will not destroy the + // scope in angular 1.1x, in angular 1.2x this is taken care of but if we dont + // take care of this ourselves we have memory leaks. dialog.element.remove(); - } - } - }; + dialog.scope.$destroy(); + } + } + }; - //if iframe is enabled, inject that instead of a template - if (dialog.iframe) { - var html = $(""); - dialog.element.html(html); - - //append to body or whatever element is passed in as options.containerElement - dialog.container.append(dialog.element); + //if iframe is enabled, inject that instead of a template + if (dialog.iframe) { + var html = $(""); + dialog.element.html(html); - // Compile modal content - $timeout(function () { - $compile(dialog.element)(dialog.scope); - }); + //append to body or whatever element is passed in as options.containerElement + dialog.container.append(dialog.element); - dialog.element.css("width", dialog.width); + // Compile modal content + $timeout(function () { + $compile(dialog.element)(dialog.scope); + }); - //Autoshow - if (dialog.show) { - dialog.element.modal('show'); - } + dialog.element.css("width", dialog.width); - dialog.scope = scope; - return dialog; - } - else { - - //We need to load the template with an httpget and once it's loaded we'll compile and assign the result to the container - // object. However since the result could be a promise or just data we need to use a $q.when. We still need to return the - // $modal object so we'll actually return the modal object synchronously without waiting for the promise. Otherwise this openDialog - // method will always need to return a promise which gets nasty because of promises in promises plus the result just needs a reference - // to the $modal object which will not change (only it's contents will change). - $q.when($templateCache.get(dialog.template) || $http.get(dialog.template, { cache: true }).then(function(res) { return res.data; })) - .then(function onSuccess(template) { + //Autoshow + if (dialog.show) { + dialog.element.modal('show'); + } - // Build modal object - dialog.element.html(template); + dialog.scope = scope; + return dialog; + } + else { - //append to body or other container element - dialog.container.append(dialog.element); - - // Compile modal content - $timeout(function() { - $compile(dialog.element)(scope); - }); + //We need to load the template with an httpget and once it's loaded we'll compile and assign the result to the container + // object. However since the result could be a promise or just data we need to use a $q.when. We still need to return the + // $modal object so we'll actually return the modal object synchronously without waiting for the promise. Otherwise this openDialog + // method will always need to return a promise which gets nasty because of promises in promises plus the result just needs a reference + // to the $modal object which will not change (only it's contents will change). + $q.when($templateCache.get(dialog.template) || $http.get(dialog.template, { cache: true }).then(function (res) { return res.data; })) + .then(function onSuccess(template) { - scope.dialogOptions = dialog; - - //Scope to handle data from the modal form - scope.dialogData = dialog.dialogData ? dialog.dialogData : {}; - scope.dialogData.selection = []; + // Build modal object + dialog.element.html(template); - // Provide scope display functions - //this passes the modal to the current scope - scope.$modal = function(name) { - dialog.element.modal(name); - }; + //append to body or other container element + dialog.container.append(dialog.element); - scope.swipeHide = function(e){ - if(appState.getGlobalState("touchDevice")){ + // Compile modal content + $timeout(function () { + $compile(dialog.element)(scope); + }); + + scope.dialogOptions = dialog; + + //Scope to handle data from the modal form + scope.dialogData = dialog.dialogData ? dialog.dialogData : {}; + scope.dialogData.selection = []; + + // Provide scope display functions + //this passes the modal to the current scope + scope.$modal = function (name) { + dialog.element.modal(name); + }; + + scope.swipeHide = function (e) { + if (appState.getGlobalState("touchDevice")) { var selection = window.getSelection(); - if(selection.type !== "Range"){ - scope.hide(); + if (selection.type !== "Range") { + scope.hide(); } } - }; + }; - scope.hide = function() { - dialog.element.modal('hide'); + scope.hide = function () { + dialog.element.modal('hide'); - dialog.element.remove(); - $("#" + dialog.element.attr("id")).remove(); - }; + dialog.element.remove(); + $("#" + dialog.element.attr("id")).remove(); + //we need to do more than just remove the element, this will not destroy the + // scope in angular 1.1x, in angular 1.2x this is taken care of but if we dont + // take care of this ourselves we have memory leaks. + dialog.scope.$destroy(); + }; - //basic events for submitting and closing - scope.submit = function(data) { - if (dialog.callback) { - dialog.callback(data); - } + //basic events for submitting and closing + scope.submit = function (data) { + if (dialog.callback) { + dialog.callback(data); + } - dialog.element.modal('hide'); - dialog.element.remove(); - $("#" + dialog.element.attr("id")).remove(); - }; + dialog.element.modal('hide'); + dialog.element.remove(); + $("#" + dialog.element.attr("id")).remove(); + //we need to do more than just remove the element, this will not destroy the + // scope in angular 1.1x, in angular 1.2x this is taken care of but if we dont + // take care of this ourselves we have memory leaks. + dialog.scope.$destroy(); + }; - scope.close = function(data) { + scope.close = function (data) { dialog.close(data); - }; + }; - scope.show = function() { - dialog.element.modal('show'); - }; + scope.show = function () { + dialog.element.modal('show'); + }; - scope.select = function(item) { + scope.select = function (item) { var i = scope.dialogData.selection.indexOf(item); - if (i < 0) { - scope.dialogData.selection.push(item); - }else{ + if (i < 0) { + scope.dialogData.selection.push(item); + } else { scope.dialogData.selection.splice(i, 1); - } - }; + } + }; - scope.dismiss = scope.hide; + scope.dismiss = scope.hide; - // Emit modal events - angular.forEach(['show', 'shown', 'hide', 'hidden'], function(name) { - dialog.element.on(name, function(ev) { - scope.$emit('modal-' + name, ev); - }); - }); + // Emit modal events + angular.forEach(['show', 'shown', 'hide', 'hidden'], function (name) { + dialog.element.on(name, function (ev) { + scope.$emit('modal-' + name, ev); + }); + }); - // Support autofocus attribute - dialog.element.on('shown', function(event) { - $('input[autofocus]', dialog.element).first().trigger('focus'); - }); + // Support autofocus attribute + dialog.element.on('shown', function (event) { + $('input[autofocus]', dialog.element).first().trigger('focus'); + }); - //Autoshow - if (dialog.show) { - dialog.element.modal('show'); - } + //Autoshow + if (dialog.show) { + dialog.element.modal('show'); + } - dialog.scope = scope; - }); - - //Return the modal object outside of the promise! - return dialog; - } - } + dialog.scope = scope; + }); - /** Handles the closeDialogs event */ - eventsService.on("app.closeDialogs", function (evt, args) { - removeAllDialogs(args); - }); + //Return the modal object outside of the promise! + return dialog; + } + } - return { - /** - * @ngdoc method - * @name umbraco.services.dialogService#open - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a modal rendering a given template url. - * - * @param {Object} options rendering options - * @param {DomElement} options.container the DOM element to inject the modal into, by default set to body - * @param {Function} options.callback function called when the modal is submitted - * @param {String} options.template the url of the template - * @param {String} options.animation animation csss class, by default set to "fade" - * @param {String} options.modalClass modal css class, by default "umb-modal" - * @param {Bool} options.show show the modal instantly - * @param {Object} options.scope scope to attach the modal to, by default rootScope.new() - * @param {Bool} options.iframe load template in an iframe, only needed for serverside templates - * @param {Int} options.width set a width on the modal, only needed for iframes - * @param {Bool} options.inline strips the modal from any animation and wrappers, used when you want to inject a dialog into an existing container - * @returns {Object} modal object - */ - open: function (options) { - return openDialog(options); - }, - - /** - * @ngdoc method - * @name umbraco.services.dialogService#close - * @methodOf umbraco.services.dialogService - * - * @description - * Closes a specific dialog - * @param {Object} dialog the dialog object to close - * @param {Object} args if specified this object will be sent to any callbacks registered on the dialogs. - */ - close: function (dialog, args) { - if(dialog){ - dialog.close(args); - } - }, - - /** - * @ngdoc method - * @name umbraco.services.dialogService#closeAll - * @methodOf umbraco.services.dialogService - * - * @description - * Closes all dialogs - * @param {Object} args if specified this object will be sent to any callbacks registered on the dialogs. - */ - closeAll: function(args) { - removeAllDialogs(args); - }, + /** Handles the closeDialogs event */ + eventsService.on("app.closeDialogs", function (evt, args) { + removeAllDialogs(args); + }); - /** - * @ngdoc method - * @name umbraco.services.dialogService#mediaPicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a media picker in a modal, the callback returns an array of selected media items - * @param {Object} options mediapicker dialog options object - * @param {$scope} options.scope dialog scope - * @param {Boolean} options.onlyImages Only display files that have an image file-extension - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - mediaPicker: function (options) { + return { + /** + * @ngdoc method + * @name umbraco.services.dialogService#open + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a modal rendering a given template url. + * + * @param {Object} options rendering options + * @param {DomElement} options.container the DOM element to inject the modal into, by default set to body + * @param {Function} options.callback function called when the modal is submitted + * @param {String} options.template the url of the template + * @param {String} options.animation animation csss class, by default set to "fade" + * @param {String} options.modalClass modal css class, by default "umb-modal" + * @param {Bool} options.show show the modal instantly + * @param {Object} options.scope scope to attach the modal to, by default rootScope.new() + * @param {Bool} options.iframe load template in an iframe, only needed for serverside templates + * @param {Int} options.width set a width on the modal, only needed for iframes + * @param {Bool} options.inline strips the modal from any animation and wrappers, used when you want to inject a dialog into an existing container + * @returns {Object} modal object + */ + open: function (options) { + return openDialog(options); + }, + + /** + * @ngdoc method + * @name umbraco.services.dialogService#close + * @methodOf umbraco.services.dialogService + * + * @description + * Closes a specific dialog + * @param {Object} dialog the dialog object to close + * @param {Object} args if specified this object will be sent to any callbacks registered on the dialogs. + */ + close: function (dialog, args) { + if (dialog) { + dialog.close(args); + } + }, + + /** + * @ngdoc method + * @name umbraco.services.dialogService#closeAll + * @methodOf umbraco.services.dialogService + * + * @description + * Closes all dialogs + * @param {Object} args if specified this object will be sent to any callbacks registered on the dialogs. + */ + closeAll: function (args) { + removeAllDialogs(args); + }, + + /** + * @ngdoc method + * @name umbraco.services.dialogService#mediaPicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a media picker in a modal, the callback returns an array of selected media items + * @param {Object} options mediapicker dialog options object + * @param {$scope} options.scope dialog scope + * @param {Boolean} options.onlyImages Only display files that have an image file-extension + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + mediaPicker: function (options) { options.template = 'views/common/dialogs/mediaPicker.html'; options.show = true; return openDialog(options); - }, + }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#contentPicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a content picker tree in a modal, the callback returns an array of selected documents - * @param {Object} options content picker dialog options object - * @param {$scope} options.scope dialog scope - * @param {$scope} options.multipicker should the picker return one or multiple items - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - contentPicker: function (options) { - options.template = 'views/common/dialogs/contentPicker.html'; - options.show = true; - return openDialog(options); - }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#contentPicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a content picker tree in a modal, the callback returns an array of selected documents + * @param {Object} options content picker dialog options object + * @param {$scope} options.scope dialog scope + * @param {$scope} options.multipicker should the picker return one or multiple items + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + contentPicker: function (options) { + options.template = 'views/common/dialogs/contentPicker.html'; + options.show = true; + return openDialog(options); + }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#linkPicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a link picker tree in a modal, the callback returns a single link - * @param {Object} options content picker dialog options object - * @param {$scope} options.scope dialog scope - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - linkPicker: function (options) { - options.template = 'views/common/dialogs/linkPicker.html'; - options.show = true; - return openDialog(options); - }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#linkPicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a link picker tree in a modal, the callback returns a single link + * @param {Object} options content picker dialog options object + * @param {$scope} options.scope dialog scope + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + linkPicker: function (options) { + options.template = 'views/common/dialogs/linkPicker.html'; + options.show = true; + return openDialog(options); + }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#macroPicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a mcaro picker in a modal, the callback returns a object representing the macro and it's parameters - * @param {Object} options macropicker dialog options object - * @param {$scope} options.scope dialog scope - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - macroPicker: function (options) { - options.template = 'views/common/dialogs/insertmacro.html'; - options.show = true; - options.modalClass = "span7 umb-modal"; - return openDialog(options); - }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#macroPicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a mcaro picker in a modal, the callback returns a object representing the macro and it's parameters + * @param {Object} options macropicker dialog options object + * @param {$scope} options.scope dialog scope + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + macroPicker: function (options) { + options.template = 'views/common/dialogs/insertmacro.html'; + options.show = true; + options.modalClass = "span7 umb-modal"; + return openDialog(options); + }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#memberPicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a member picker in a modal, the callback returns a object representing the selected member - * @param {Object} options member picker dialog options object - * @param {$scope} options.scope dialog scope - * @param {$scope} options.multiPicker should the tree pick one or multiple members before returning - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - memberPicker: function (options) { - options.template = 'views/common/dialogs/memberPicker.html'; - options.show = true; - return openDialog(options); - }, - - /** - * @ngdoc method - * @name umbraco.services.dialogService#memberGroupPicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a member group picker in a modal, the callback returns a object representing the selected member - * @param {Object} options member group picker dialog options object - * @param {$scope} options.scope dialog scope - * @param {$scope} options.multiPicker should the tree pick one or multiple members before returning - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - memberGroupPicker: function (options) { - options.template = 'views/common/dialogs/memberGroupPicker.html'; - options.show = true; - return openDialog(options); - }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#memberPicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a member picker in a modal, the callback returns a object representing the selected member + * @param {Object} options member picker dialog options object + * @param {$scope} options.scope dialog scope + * @param {$scope} options.multiPicker should the tree pick one or multiple members before returning + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + memberPicker: function (options) { + options.template = 'views/common/dialogs/memberPicker.html'; + options.show = true; + return openDialog(options); + }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#iconPicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a icon picker in a modal, the callback returns a object representing the selected icon - * @param {Object} options iconpicker dialog options object - * @param {$scope} options.scope dialog scope - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - iconPicker: function (options) { - options.template = 'views/common/dialogs/iconPicker.html'; - options.show = true; - return openDialog(options); - }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#memberGroupPicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a member group picker in a modal, the callback returns a object representing the selected member + * @param {Object} options member group picker dialog options object + * @param {$scope} options.scope dialog scope + * @param {$scope} options.multiPicker should the tree pick one or multiple members before returning + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + memberGroupPicker: function (options) { + options.template = 'views/common/dialogs/memberGroupPicker.html'; + options.show = true; + return openDialog(options); + }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#treePicker - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a tree picker in a modal, the callback returns a object representing the selected tree item - * @param {Object} options iconpicker dialog options object - * @param {$scope} options.scope dialog scope - * @param {$scope} options.section tree section to display - * @param {$scope} options.treeAlias specific tree to display - * @param {$scope} options.multiPicker should the tree pick one or multiple items before returning - * @param {Function} options.callback callback function - * @returns {Object} modal object - */ - treePicker: function (options) { - options.template = 'views/common/dialogs/treePicker.html'; - options.show = true; - return openDialog(options); - }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#iconPicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a icon picker in a modal, the callback returns a object representing the selected icon + * @param {Object} options iconpicker dialog options object + * @param {$scope} options.scope dialog scope + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + iconPicker: function (options) { + options.template = 'views/common/dialogs/iconPicker.html'; + options.show = true; + return openDialog(options); + }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#propertyDialog - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a dialog with a chosen property editor in, a value can be passed to the modal, and this value is returned in the callback - * @param {Object} options mediapicker dialog options object - * @param {$scope} options.scope dialog scope - * @param {Function} options.callback callback function - * @param {String} editor editor to use to edit a given value and return on callback - * @param {Object} value value sent to the property editor - * @returns {Object} modal object - */ - propertyDialog: function (options) { - options.template = 'views/common/dialogs/property.html'; - options.show = true; - return openDialog(options); - }, - - /** - * @ngdoc method - * @name umbraco.services.dialogService#ysodDialog - * @methodOf umbraco.services.dialogService - * @description - * Opens a dialog to an embed dialog - */ - embedDialog: function (options) { - options.template = 'views/common/dialogs/rteembed.html'; - options.show = true; - return openDialog(options); - }, - /** - * @ngdoc method - * @name umbraco.services.dialogService#ysodDialog - * @methodOf umbraco.services.dialogService - * - * @description - * Opens a dialog to show a custom YSOD - */ - ysodDialog: function (ysodError) { + /** + * @ngdoc method + * @name umbraco.services.dialogService#treePicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a tree picker in a modal, the callback returns a object representing the selected tree item + * @param {Object} options iconpicker dialog options object + * @param {$scope} options.scope dialog scope + * @param {$scope} options.section tree section to display + * @param {$scope} options.treeAlias specific tree to display + * @param {$scope} options.multiPicker should the tree pick one or multiple items before returning + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + treePicker: function (options) { + options.template = 'views/common/dialogs/treePicker.html'; + options.show = true; + return openDialog(options); + }, - var newScope = $rootScope.$new(); - newScope.error = ysodError; - return openDialog({ - modalClass: "umb-modal wide", - scope: newScope, - //callback: options.callback, - template: 'views/common/dialogs/ysod.html', - show: true - }); - } - }; - }); \ No newline at end of file + /** + * @ngdoc method + * @name umbraco.services.dialogService#propertyDialog + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a dialog with a chosen property editor in, a value can be passed to the modal, and this value is returned in the callback + * @param {Object} options mediapicker dialog options object + * @param {$scope} options.scope dialog scope + * @param {Function} options.callback callback function + * @param {String} editor editor to use to edit a given value and return on callback + * @param {Object} value value sent to the property editor + * @returns {Object} modal object + */ + propertyDialog: function (options) { + options.template = 'views/common/dialogs/property.html'; + options.show = true; + return openDialog(options); + }, + + /** + * @ngdoc method + * @name umbraco.services.dialogService#ysodDialog + * @methodOf umbraco.services.dialogService + * @description + * Opens a dialog to an embed dialog + */ + embedDialog: function (options) { + options.template = 'views/common/dialogs/rteembed.html'; + options.show = true; + return openDialog(options); + }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#ysodDialog + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a dialog to show a custom YSOD + */ + ysodDialog: function (ysodError) { + + var newScope = $rootScope.$new(); + newScope.error = ysodError; + return openDialog({ + modalClass: "umb-modal wide", + scope: newScope, + //callback: options.callback, + template: 'views/common/dialogs/ysod.html', + show: true + }); + } + }; +}); \ No newline at end of file From 654efd112896694312fe42d9d3cdbc98dc88b0d8 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 15:26:52 +1000 Subject: [PATCH 66/94] Fixes: U4-3492 Recent history list persist between logged in users --- .../src/common/services/history.service.js | 40 +++++----- .../views/common/dialogs/user.controller.js | 80 +++++++++++-------- .../src/views/common/dialogs/user.html | 2 +- 3 files changed, 69 insertions(+), 53 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/history.service.js b/src/Umbraco.Web.UI.Client/src/common/services/history.service.js index 21764c59bf..88200cf086 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/history.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/history.service.js @@ -28,18 +28,25 @@ * */ angular.module('umbraco.services') -.factory('historyService', function ($rootScope, $timeout, angularHelper) { +.factory('historyService', function ($rootScope, $timeout, angularHelper, eventsService) { var nArray = []; function add(item) { - var any = _.where(nArray, {link: item.link}); + if (!item) { + return null; + } + + var listWithoutThisItem = _.reject(nArray, function(i) { + return i.link == item.link; + }); + + //put it at the top and reassign + listWithoutThisItem.splice(0, 0, item); + nArray = listWithoutThisItem; + return nArray[0]; - if(any.length === 0){ - nArray.splice(0,0,item); - return nArray[0]; - } } return { @@ -60,7 +67,9 @@ angular.module('umbraco.services') add: function (item) { var icon = item.icon || "icon-file"; angularHelper.safeApply($rootScope, function () { - return add({name: item.name, icon: icon, link: item.link, time: new Date() }); + var result = add({ name: item.name, icon: icon, link: item.link, time: new Date() }); + eventsService.emit("historyService.add", {added: result, all: nArray}); + return result; }); }, /** @@ -75,7 +84,8 @@ angular.module('umbraco.services') */ remove: function (index) { angularHelper.safeApply($rootScope, function() { - nArray.splice(index, 1); + var result = nArray.splice(index, 1); + eventsService.emit("historyService.remove", { removed: result, all: nArray }); }); }, @@ -89,21 +99,11 @@ angular.module('umbraco.services') */ removeAll: function () { angularHelper.safeApply($rootScope, function() { - nArray = []; + nArray = []; + eventsService.emit("historyService.removeAll"); }); }, - /** - * @ngdoc property - * @name umbraco.services.historyService#current - * @propertyOf umbraco.services.historyService - * - * @description - * - * @returns {Array} Array of history entries for the current user, newest items first - */ - current: nArray, - /** * @ngdoc method * @name umbraco.services.historyService#getCurrent diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js index 0ab78896ad..0da1a271b8 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.controller.js @@ -1,10 +1,20 @@ angular.module("umbraco") .controller("Umbraco.Dialogs.UserController", function ($scope, $location, $timeout, userService, historyService, eventsService) { - + $scope.user = userService.getCurrentUser(); - $scope.history = historyService.current; + $scope.history = historyService.getCurrent(); $scope.version = Umbraco.Sys.ServerVariables.application.version + " assembly: " + Umbraco.Sys.ServerVariables.application.assemblyVersion; + var evtHandlers = []; + evtHandlers.push(eventsService.on("historyService.add", function (e, args) { + $scope.history = args.all; + })); + evtHandlers.push(eventsService.on("historyService.remove", function (e, args) { + $scope.history = args.all; + })); + evtHandlers.push(eventsService.on("historyService.removeAll", function (e, args) { + $scope.history = []; + })); $scope.logout = function () { @@ -16,38 +26,44 @@ angular.module("umbraco") }); //perform the path change, if it is successful then the promise will resolve otherwise it will fail - $location.path("/logout"); - }; + $location.path("/logout"); + }; - $scope.gotoHistory = function (link) { - $location.path(link); - $scope.hide(); - }; + $scope.gotoHistory = function (link) { + $location.path(link); + $scope.hide(); + }; //Manually update the remaining timeout seconds - function updateTimeout() { - $timeout(function () { - if ($scope.remainingAuthSeconds > 0) { - $scope.remainingAuthSeconds--; - $scope.$digest(); - //recurse - updateTimeout(); - } - - }, 1000, false); // 1 second, do NOT execute a global digest - } - - //get the user - userService.getCurrentUser().then(function (user) { - $scope.user = user; - if ($scope.user) { - $scope.remainingAuthSeconds = $scope.user.remainingAuthSeconds; - $scope.canEditProfile = _.indexOf($scope.user.allowedSections, "users") > -1; - //set the timer - updateTimeout(); - } - }); + function updateTimeout() { + $timeout(function () { + if ($scope.remainingAuthSeconds > 0) { + $scope.remainingAuthSeconds--; + $scope.$digest(); + //recurse + updateTimeout(); + } + + }, 1000, false); // 1 second, do NOT execute a global digest + } + + //get the user + userService.getCurrentUser().then(function (user) { + $scope.user = user; + if ($scope.user) { + $scope.remainingAuthSeconds = $scope.user.remainingAuthSeconds; + $scope.canEditProfile = _.indexOf($scope.user.allowedSections, "users") > -1; + //set the timer + updateTimeout(); + } + }); + + //remove all event handlers + $scope.$on('$destroy', function () { + for (var i = 0; i < evtHandlers.length; i++) { + evtHandlers[i](); + } + + }); - - }); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html index 1e86630486..ff71cec524 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/user.html @@ -34,7 +34,7 @@
    -
  • +
  • {{item.name}}
  • From 80d012f3adb0a02efbe78437fccc4f0ddcfecc4c Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 18:25:50 +1000 Subject: [PATCH 67/94] Fixes: U4-4771 u7.1.1 Media section can't view images RangeError: Maximum call stack size exceeded --- .../src/common/services/util.service.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js index 727319e93d..4b9fe44d0b 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js @@ -139,7 +139,8 @@ function umbPhotoFolderHelper($compile, $log, $timeout, $filter, imageHelper, me return { height: minDisplayHeight, imgCount: 1 }; } else if (idealImages.length === idealImgPerRow && targetHeight < maxRowHeight) { - //if we're already dealing with the ideal images per row and it's not quite there, we can scale up a little bit so + + //if we're already dealing with the ideal images per row and it's not quite wide enough, we can scale up a little bit so // long as the targetHeight is currently less than the maxRowHeight. The scale up will be half-way between our current // target height and the maxRowHeight (we won't loop forever though - if there's a difference of 5 px we'll just quit) @@ -152,9 +153,8 @@ function umbPhotoFolderHelper($compile, $log, $timeout, $filter, imageHelper, me } } - //Ok, we couldn't actually scale it up with the ideal row count (TBH I'm not sure that this would ever happen but we'll take it into account) - // we'll just recurse with another image count. - return this.getRowHeightForImages(imgs, maxRowHeight, minDisplayHeight, maxRowWidth, idealImgPerRow + 1, margin); + //Ok, we couldn't actually scale it up with the ideal row count we'll just recurse with a lesser image count. + return this.getRowHeightForImages(imgs, maxRowHeight, minDisplayHeight, maxRowWidth, idealImgPerRow - 1, margin); } else { //we have additional images so we'll recurse and add 1 to the idealImgPerRow until it fits From f00950bfe46b890c36e4c7ebb38bdc978ce929d0 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 18:38:05 +1000 Subject: [PATCH 68/94] adds unit test for image helper --- .../src/common/services/history.service.js | 2 +- .../services/umb-photo-folder-helper.spec.js | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/history.service.js b/src/Umbraco.Web.UI.Client/src/common/services/history.service.js index 88200cf086..75963112e5 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/history.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/history.service.js @@ -39,7 +39,7 @@ angular.module('umbraco.services') } var listWithoutThisItem = _.reject(nArray, function(i) { - return i.link == item.link; + return i.link === item.link; }); //put it at the top and reassign diff --git a/src/Umbraco.Web.UI.Client/test/unit/common/services/umb-photo-folder-helper.spec.js b/src/Umbraco.Web.UI.Client/test/unit/common/services/umb-photo-folder-helper.spec.js index a8bf9bcb7c..b41ce4692e 100644 --- a/src/Umbraco.Web.UI.Client/test/unit/common/services/umb-photo-folder-helper.spec.js +++ b/src/Umbraco.Web.UI.Client/test/unit/common/services/umb-photo-folder-helper.spec.js @@ -31,7 +31,7 @@ describe('umbPhotoFolderHelper tests', function () { }); - it('Build a row by removing an item to scale up to fit', function () { + it('Builds a row by removing an item to scale up to fit', function () { var images = [ { "properties": [{ "id": 8737, "value": "/media/2173/Save-The-Date.jpg", "alias": "umbracoFile" }, { "id": 8738, "value": "443", "alias": "umbracoWidth" }, { "id": 8739, "value": "500", "alias": "umbracoHeight" }, { "id": 8740, "value": "30830", "alias": "umbracoBytes" }, { "id": 8741, "value": "jpg", "alias": "umbracoExtension" }], "updateDate": "2013-12-10 16:57:56", "createDate": "2013-12-10 14:21:26", "published": false, "owner": { "id": 0, "name": "admin" }, "updator": null, "contentTypeAlias": "Image", "sortOrder": 5, "name": "Save-The-Date.jpg", "id": 1349, "icon": "mediaPhoto.gif", "key": "8eb67ae3-49da-4a25-ab39-185667a9b412", "parentId": 1160, "alias": null, "path": "-1,1142,1160,1349", "metaData": {}, "thumbnail": "/umbraco/UmbracoApi/Images/GetBigThumbnail?mediaId=1349", "originalWidth": 443, "originalHeight": 500 }, @@ -52,6 +52,26 @@ describe('umbPhotoFolderHelper tests', function () { expect(result.images.length).toBe(4); }); + + it('Builds a row by removing an item to scale up to fit, then attempts to upscale remaining 2 images, but that doesnt fit so drops another and we end up with one', function () { + + var images = [ + { "properties": [{ "id": 8737, "value": "/media/2173/Save-The-Date.jpg", "alias": "umbracoFile" }, { "id": 8738, "value": "198", "alias": "umbracoWidth" }, { "id": 8739, "value": "220", "alias": "umbracoHeight" }, { "id": 8740, "value": "30830", "alias": "umbracoBytes" }, { "id": 8741, "value": "jpg", "alias": "umbracoExtension" }], "updateDate": "2013-12-10 16:57:56", "createDate": "2013-12-10 14:21:26", "published": false, "owner": { "id": 0, "name": "admin" }, "updator": null, "contentTypeAlias": "Image", "sortOrder": 5, "name": "Save-The-Date.jpg", "id": 1349, "icon": "mediaPhoto.gif", "key": "8eb67ae3-49da-4a25-ab39-185667a9b412", "parentId": 1160, "alias": null, "path": "-1,1142,1160,1349", "metaData": {}, "thumbnail": "/umbraco/UmbracoApi/Images/GetBigThumbnail?mediaId=1349", "originalWidth": 198, "originalHeight": 220 }, + { "properties": [{ "id": 8742, "value": "/media/2174/IMG_2980.JPG", "alias": "umbracoFile" }, { "id": 8743, "value": "211", "alias": "umbracoWidth" }, { "id": 8744, "value": "500", "alias": "umbracoHeight" }, { "id": 8745, "value": "113311", "alias": "umbracoBytes" }, { "id": 8746, "value": "jpg", "alias": "umbracoExtension" }], "updateDate": "2013-12-10 16:57:51", "createDate": "2013-12-10 14:22:33", "published": false, "owner": { "id": 0, "name": "admin" }, "updator": null, "contentTypeAlias": "Image", "sortOrder": 6, "name": "IMG_2980.JPG", "id": 1350, "icon": "mediaPhoto.gif", "key": "0a9618ea-9b4a-4d34-bf53-e76a0d252048", "parentId": 1160, "alias": null, "path": "-1,1142,1160,1350", "metaData": {}, "thumbnail": "/umbraco/UmbracoApi/Images/GetBigThumbnail?mediaId=1350", "originalWidth": 211, "originalHeight": 500 }, + { "properties": [{ "id": 8747, "value": "/media/2175/IMG_3023.JPG", "alias": "umbracoFile" }, { "id": 8748, "value": "940", "alias": "umbracoWidth" }, { "id": 8749, "value": "317", "alias": "umbracoHeight" }, { "id": 8750, "value": "106365", "alias": "umbracoBytes" }, { "id": 8751, "value": "jpg", "alias": "umbracoExtension" }], "updateDate": "2013-12-10 16:57:46", "createDate": "2013-12-10 14:39:28", "published": false, "owner": { "id": 0, "name": "admin" }, "updator": null, "contentTypeAlias": "Image", "sortOrder": 7, "name": "IMG_3023.JPG", "id": 1351, "icon": "mediaPhoto.gif", "key": "44cb1ee0-e3d7-40f7-b27c-ae05fb1a8e0c", "parentId": 1160, "alias": null, "path": "-1,1142,1160,1351", "metaData": {}, "thumbnail": "/umbraco/UmbracoApi/Images/GetBigThumbnail?mediaId=1351", "originalWidth": 940, "originalHeight": 317 } + ]; + var maxRowHeight = 250; + var minDisplayHeight = 105; + var maxRowWidth = 400; + var idealImgPerRow = 3; + var margin = 5; + + var result = umbPhotoFolderHelper.buildRow(images, maxRowHeight, minDisplayHeight, maxRowWidth, idealImgPerRow, margin); + + + expect(result.images.length).toBe(1); + + }); }); From b8975de04dc562f8adf41d678e6a07886aade3ff Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 18:55:08 +1000 Subject: [PATCH 69/94] Fixes: U4-4666 SQL Error when saving content with Tags property with @ value --- .../Persistence/Repositories/TagsRepository.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs index 1d11f8d3d4..030742b90e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs @@ -439,7 +439,12 @@ namespace Umbraco.Core.Persistence.Repositories /// private static string GetTagSet(IEnumerable tagsToInsert) { - var array = tagsToInsert.Select(tag => string.Format("select '{0}' as Tag, '{1}' as [Group]", tag.Text.Replace("'", "''"), tag.Group)).ToArray(); + var array = tagsToInsert + .Select(tag => + string.Format("select '{0}' as Tag, '{1}' as [Group]", + PetaPocoExtensions.EscapeAtSymbols(tag.Text.Replace("'", "''")), + tag.Group)) + .ToArray(); return "(" + string.Join(" union ", array).Replace(" ", " ") + ") as TagSet"; } From 922942197ff140f351c3f2d1bfc45deee1f69c0a Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 19:57:40 +1000 Subject: [PATCH 70/94] Fixes: U4-4741 Tags Property Editor Mishandles Tags with Commas --- .../Persistence/Repositories/TagsRepository.cs | 5 ++++- .../src/views/propertyeditors/tags/tags.controller.js | 2 ++ .../src/views/propertyeditors/tags/tags.html | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs index 030742b90e..7525661b66 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs @@ -442,7 +442,10 @@ namespace Umbraco.Core.Persistence.Repositories var array = tagsToInsert .Select(tag => string.Format("select '{0}' as Tag, '{1}' as [Group]", - PetaPocoExtensions.EscapeAtSymbols(tag.Text.Replace("'", "''")), + PetaPocoExtensions.EscapeAtSymbols( + tag.Text + .Replace("'", "''") //NOTE: I'm not sure about this apostrophe replacement but it's been like that for a long time + .Replace(",", ",")), //NOTE: We need to replace commas with html encoded ones: http://issues.umbraco.org/issue/U4-4741 tag.Group)) .ToArray(); return "(" + string.Join(" union ", array).Replace(" ", " ") + ") as TagSet"; diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js index b44712f8dc..bc6357e2b8 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js @@ -19,6 +19,8 @@ angular.module("umbraco") function addTag(tagToAdd) { if (tagToAdd.length > 0) { if ($scope.currentTags.indexOf(tagToAdd) < 0) { + //we need to html encode any tag containing commas: http://issues.umbraco.org/issue/U4-4741 + tagToAdd = tagToAdd.replace(",", ","); $scope.currentTags.push(tagToAdd); } } diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html index db13aa49cd..e0f46727ac 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.html @@ -1,11 +1,14 @@
    - +
    Loading...
    - {{tag}} + + + + Date: Wed, 14 May 2014 20:31:32 +1000 Subject: [PATCH 71/94] ensures that when querying for a tag with a comma that we encode it so that it finds it. --- src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs index 7525661b66..4ef33b7f4c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs @@ -185,6 +185,10 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable GetTaggedEntitiesByTag(TaggableObjectTypes objectType, string tag, string tagGroup = null) { + //ensure that we html encode any comma's so they are found! + // http://issues.umbraco.org/issue/U4-4741 + var replaced = tag.Replace(",", ","); + var nodeObjectType = GetNodeObjectType(objectType); var sql = new Sql() @@ -199,7 +203,7 @@ namespace Umbraco.Core.Persistence.Repositories .InnerJoin() .On(left => left.NodeId, right => right.NodeId) .Where(dto => dto.NodeObjectType == nodeObjectType) - .Where(dto => dto.Tag == tag); + .Where(dto => dto.Tag == replaced); if (tagGroup.IsNullOrWhiteSpace() == false) { From 157428dbc80291f7070fd7b0ac57740af27a93d0 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 May 2014 20:54:01 +1000 Subject: [PATCH 72/94] ensures multiple commas in tags still work. --- .../src/views/propertyeditors/tags/tags.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js index bc6357e2b8..3c338b0dde 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js @@ -20,7 +20,7 @@ angular.module("umbraco") if (tagToAdd.length > 0) { if ($scope.currentTags.indexOf(tagToAdd) < 0) { //we need to html encode any tag containing commas: http://issues.umbraco.org/issue/U4-4741 - tagToAdd = tagToAdd.replace(",", ","); + tagToAdd = tagToAdd.replace(/\,/g, ","); $scope.currentTags.push(tagToAdd); } } From 1c7d83f5895e9103cf40e8baffd1388ab348bca8 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 15 May 2014 12:49:03 +1000 Subject: [PATCH 73/94] Undoes the comma encoding for tags and istead adds support to store the tags as json or csv (U4-4741) --- src/Umbraco.Core/Models/ContentExtensions.cs | 57 ++++++++++++++++--- .../Models/PropertyTagBehavior.cs | 9 +++ src/Umbraco.Core/Models/PropertyTags.cs | 7 --- .../Models/TagCacheStorageType.cs | 8 +++ .../Repositories/TagsRepository.cs | 18 ++---- .../PropertyEditors/SupportTagsAttribute.cs | 7 +++ .../PropertyEditors/TagPropertyDefinition.cs | 9 ++- src/Umbraco.Core/Umbraco.Core.csproj | 2 + .../propertyeditors/tags/tags.controller.js | 30 +++++++--- .../propertyeditors/tags/tags.prevalues.html | 10 ++++ src/Umbraco.Web/Editors/TagExtractor.cs | 10 ++-- .../TagPropertyEditorTagDefinition.cs | 18 +++++- .../PropertyEditors/TagsPropertyEditor.cs | 52 ++++++++++++++++- 13 files changed, 190 insertions(+), 47 deletions(-) create mode 100644 src/Umbraco.Core/Models/PropertyTagBehavior.cs create mode 100644 src/Umbraco.Core/Models/TagCacheStorageType.cs create mode 100644 src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.prevalues.html diff --git a/src/Umbraco.Core/Models/ContentExtensions.cs b/src/Umbraco.Core/Models/ContentExtensions.cs index 73b5ed34db..84cf2869e7 100644 --- a/src/Umbraco.Core/Models/ContentExtensions.cs +++ b/src/Umbraco.Core/Models/ContentExtensions.cs @@ -9,6 +9,8 @@ using System.Linq; using System.Web; using System.Xml; using System.Xml.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.IO; @@ -539,7 +541,7 @@ namespace Umbraco.Core.Models return ApplicationContext.Current.Services.ContentService.HasPublishedVersion(content.Id); } - + #region Tag methods ///// @@ -567,6 +569,21 @@ namespace Umbraco.Core.Models /// The group/category to assign the tags, the default value is "default" /// public static void SetTags(this IContentBase content, string propertyTypeAlias, IEnumerable tags, bool replaceTags, string tagGroup = "default") + { + content.SetTags(TagCacheStorageType.Csv, propertyTypeAlias, tags, replaceTags, tagGroup); + } + + /// + /// Sets tags for the property - will add tags to the tags table and set the property value to be the comma delimited value of the tags. + /// + /// The content item to assign the tags to + /// The tag storage type in cache (default is csv) + /// The property alias to assign the tags to + /// The tags to assign + /// True to replace the tags on the current property with the tags specified or false to merge them with the currently assigned ones + /// The group/category to assign the tags, the default value is "default" + /// + public static void SetTags(this IContentBase content, TagCacheStorageType storageType, string propertyTypeAlias, IEnumerable tags, bool replaceTags, string tagGroup = "default") { var property = content.Properties[propertyTypeAlias]; if (property == null) @@ -583,15 +600,39 @@ namespace Umbraco.Core.Models //ensure the property value is set to the same thing if (replaceTags) { - property.Value = string.Join(",", trimmedTags); + switch (storageType) + { + case TagCacheStorageType.Csv: + property.Value = string.Join(",", trimmedTags); + break; + case TagCacheStorageType.Json: + //json array + property.Value = JsonConvert.SerializeObject(trimmedTags); + break; + } + } else { - var currTags = property.Value.ToString().Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries) + switch (storageType) + { + case TagCacheStorageType.Csv: + var currTags = property.Value.ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => x.Trim()); - property.Value = string.Join(",", trimmedTags.Union(currTags)); + property.Value = string.Join(",", trimmedTags.Union(currTags)); + break; + case TagCacheStorageType.Json: + var currJson = JsonConvert.DeserializeObject(property.Value.ToString()); + //need to append the new ones + foreach (var tag in trimmedTags) + { + currJson.Add(tag); + } + //json array + property.Value = JsonConvert.SerializeObject(currJson); + break; + } } - } /// @@ -664,7 +705,7 @@ namespace Umbraco.Core.Models { return ApplicationContext.Current.Services.PackagingService.Export(media, true, raiseEvents: false); } - + /// /// Creates the xml representation for the object /// @@ -687,10 +728,10 @@ namespace Umbraco.Core.Models { return ((PackagingService)(ApplicationContext.Current.Services.PackagingService)).Export(member); } - + #endregion } - + } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/PropertyTagBehavior.cs b/src/Umbraco.Core/Models/PropertyTagBehavior.cs new file mode 100644 index 0000000000..0a435ebf95 --- /dev/null +++ b/src/Umbraco.Core/Models/PropertyTagBehavior.cs @@ -0,0 +1,9 @@ +namespace Umbraco.Core.Models +{ + internal enum PropertyTagBehavior + { + Replace, + Remove, + Merge + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Models/PropertyTags.cs b/src/Umbraco.Core/Models/PropertyTags.cs index d64a1c4edf..6075502131 100644 --- a/src/Umbraco.Core/Models/PropertyTags.cs +++ b/src/Umbraco.Core/Models/PropertyTags.cs @@ -33,11 +33,4 @@ namespace Umbraco.Core.Models public IEnumerable> Tags { get; set; } } - - internal enum PropertyTagBehavior - { - Replace, - Remove, - Merge - } } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/TagCacheStorageType.cs b/src/Umbraco.Core/Models/TagCacheStorageType.cs new file mode 100644 index 0000000000..5078a44d85 --- /dev/null +++ b/src/Umbraco.Core/Models/TagCacheStorageType.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Core.Models +{ + public enum TagCacheStorageType + { + Csv, + Json + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs index 4ef33b7f4c..44d6a6f369 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TagsRepository.cs @@ -185,10 +185,6 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable GetTaggedEntitiesByTag(TaggableObjectTypes objectType, string tag, string tagGroup = null) { - //ensure that we html encode any comma's so they are found! - // http://issues.umbraco.org/issue/U4-4741 - var replaced = tag.Replace(",", ","); - var nodeObjectType = GetNodeObjectType(objectType); var sql = new Sql() @@ -203,7 +199,7 @@ namespace Umbraco.Core.Persistence.Repositories .InnerJoin() .On(left => left.NodeId, right => right.NodeId) .Where(dto => dto.NodeObjectType == nodeObjectType) - .Where(dto => dto.Tag == replaced); + .Where(dto => dto.Tag == tag); if (tagGroup.IsNullOrWhiteSpace() == false) { @@ -289,7 +285,7 @@ namespace Umbraco.Core.Persistence.Repositories if (group.IsNullOrWhiteSpace() == false) { sql = sql.Where(dto => dto.Group == group); - } + } var factory = new TagFactory(); @@ -333,7 +329,7 @@ namespace Umbraco.Core.Persistence.Repositories //NOTE: There's some very clever logic in the umbraco.cms.businesslogic.Tags.Tag to insert tags where they don't exist, // and assign where they don't exist which we've borrowed here. The queries are pretty zany but work, otherwise we'll end up // with quite a few additional queries. - + //do all this in one transaction using (var trans = Database.GetTransaction()) { @@ -401,7 +397,7 @@ namespace Umbraco.Core.Persistence.Repositories public void RemoveTagsFromProperty(int contentId, int propertyTypeId, IEnumerable tags) { var tagSetSql = GetTagSet(tags); - + var deleteSql = string.Concat("DELETE FROM cmsTagRelationship WHERE nodeId = ", contentId, " AND propertyTypeId = ", @@ -446,11 +442,7 @@ namespace Umbraco.Core.Persistence.Repositories var array = tagsToInsert .Select(tag => string.Format("select '{0}' as Tag, '{1}' as [Group]", - PetaPocoExtensions.EscapeAtSymbols( - tag.Text - .Replace("'", "''") //NOTE: I'm not sure about this apostrophe replacement but it's been like that for a long time - .Replace(",", ",")), //NOTE: We need to replace commas with html encoded ones: http://issues.umbraco.org/issue/U4-4741 - tag.Group)) + PetaPocoExtensions.EscapeAtSymbols(tag.Text.Replace("'", "''")), tag.Group)) .ToArray(); return "(" + string.Join(" union ", array).Replace(" ", " ") + ") as TagSet"; } diff --git a/src/Umbraco.Core/PropertyEditors/SupportTagsAttribute.cs b/src/Umbraco.Core/PropertyEditors/SupportTagsAttribute.cs index 60f32c086d..3ff124d345 100644 --- a/src/Umbraco.Core/PropertyEditors/SupportTagsAttribute.cs +++ b/src/Umbraco.Core/PropertyEditors/SupportTagsAttribute.cs @@ -1,4 +1,5 @@ using System; +using Umbraco.Core.Models; namespace Umbraco.Core.PropertyEditors { @@ -30,6 +31,7 @@ namespace Umbraco.Core.PropertyEditors Delimiter = ","; ReplaceTags = true; TagGroup = "default"; + StorageType = TagCacheStorageType.Csv; } /// @@ -37,6 +39,11 @@ namespace Umbraco.Core.PropertyEditors /// public TagValueType ValueType { get; set; } + /// + /// Defines how to store the tags in cache (CSV or Json) + /// + public TagCacheStorageType StorageType { get; set; } + /// /// Defines a custom delimiter, the default is a comma /// diff --git a/src/Umbraco.Core/PropertyEditors/TagPropertyDefinition.cs b/src/Umbraco.Core/PropertyEditors/TagPropertyDefinition.cs index 743cd08517..978a7bf2ba 100644 --- a/src/Umbraco.Core/PropertyEditors/TagPropertyDefinition.cs +++ b/src/Umbraco.Core/PropertyEditors/TagPropertyDefinition.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.Models.Editors; +using Umbraco.Core.Models; +using Umbraco.Core.Models.Editors; namespace Umbraco.Core.PropertyEditors { @@ -30,8 +31,14 @@ namespace Umbraco.Core.PropertyEditors Delimiter = tagsAttribute.Delimiter; ReplaceTags = tagsAttribute.ReplaceTags; TagGroup = tagsAttribute.TagGroup; + StorageType = TagCacheStorageType.Csv; } + /// + /// Defines how to store the tags in cache (CSV or Json) + /// + public virtual TagCacheStorageType StorageType { get; private set; } + /// /// Defines a custom delimiter, the default is a comma /// diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 8b484914ec..6931fa1c84 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -349,12 +349,14 @@ + + diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js index 3c338b0dde..be97b0b962 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.controller.js @@ -12,15 +12,21 @@ angular.module("umbraco") //load current value $scope.currentTags = []; if ($scope.model.value) { - $scope.currentTags = $scope.model.value.split(","); + if ($scope.model.config.storageType && $scope.model.config.storageType === "Json") { + //it's a json array already + $scope.currentTags = $scope.model.value; + } + else { + //it is csv + $scope.currentTags = $scope.model.value.split(","); + } + } //Helper method to add a tag on enter or on typeahead select function addTag(tagToAdd) { if (tagToAdd.length > 0) { - if ($scope.currentTags.indexOf(tagToAdd) < 0) { - //we need to html encode any tag containing commas: http://issues.umbraco.org/issue/U4-4741 - tagToAdd = tagToAdd.replace(/\,/g, ","); + if ($scope.currentTags.indexOf(tagToAdd) < 0) { $scope.currentTags.push(tagToAdd); } } @@ -49,16 +55,24 @@ angular.module("umbraco") } }; - //sync model on submit (needed since we convert an array to string) + //sync model on submit, always push up a json array $scope.$on("formSubmitting", function (ev, args) { - $scope.model.value = $scope.currentTags.join(); + $scope.model.value = $scope.currentTags; }); //vice versa $scope.model.onValueChanged = function (newVal, oldVal) { //update the display val again if it has changed from the server - $scope.model.val = newVal; - $scope.currentTags = $scope.model.value.split(","); + $scope.model.value = newVal; + + if ($scope.model.config.storageType && $scope.model.config.storageType === "Json") { + //it's a json array already + $scope.currentTags = $scope.model.value; + } + else { + //it is csv + $scope.currentTags = $scope.model.value.split(","); + } }; //configure the tags data source diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.prevalues.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.prevalues.html new file mode 100644 index 0000000000..2eb9aecf1e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/tags/tags.prevalues.html @@ -0,0 +1,10 @@ +
    + + + +
    \ No newline at end of file diff --git a/src/Umbraco.Web/Editors/TagExtractor.cs b/src/Umbraco.Web/Editors/TagExtractor.cs index f0de24d6e8..361e7700c9 100644 --- a/src/Umbraco.Web/Editors/TagExtractor.cs +++ b/src/Umbraco.Web/Editors/TagExtractor.cs @@ -43,15 +43,15 @@ namespace Umbraco.Web.Editors LogHelper.Error("Could not create custom " + attribute.TagPropertyDefinitionType + " tag definition", ex); throw; } - SetPropertyTags(content, property, convertedPropertyValue, def.Delimiter, def.ReplaceTags, def.TagGroup, attribute.ValueType); + SetPropertyTags(content, property, convertedPropertyValue, def.Delimiter, def.ReplaceTags, def.TagGroup, attribute.ValueType, def.StorageType); } else { - SetPropertyTags(content, property, convertedPropertyValue, attribute.Delimiter, attribute.ReplaceTags, attribute.TagGroup, attribute.ValueType); + SetPropertyTags(content, property, convertedPropertyValue, attribute.Delimiter, attribute.ReplaceTags, attribute.TagGroup, attribute.ValueType, attribute.StorageType); } } - public static void SetPropertyTags(IContentBase content, Property property, object convertedPropertyValue, string delimiter, bool replaceTags, string tagGroup, TagValueType valueType) + public static void SetPropertyTags(IContentBase content, Property property, object convertedPropertyValue, string delimiter, bool replaceTags, string tagGroup, TagValueType valueType, TagCacheStorageType storageType) { if (convertedPropertyValue == null) { @@ -62,14 +62,14 @@ namespace Umbraco.Web.Editors { case TagValueType.FromDelimitedValue: var tags = convertedPropertyValue.ToString().Split(new[] { delimiter }, StringSplitOptions.RemoveEmptyEntries); - content.SetTags(property.Alias, tags, replaceTags, tagGroup); + content.SetTags(storageType, property.Alias, tags, replaceTags, tagGroup); break; case TagValueType.CustomTagList: //for this to work the object value must be IENumerable var stringList = convertedPropertyValue as IEnumerable; if (stringList != null) { - content.SetTags(property.Alias, stringList, replaceTags, tagGroup); + content.SetTags(storageType, property.Alias, stringList, replaceTags, tagGroup); } break; } diff --git a/src/Umbraco.Web/PropertyEditors/TagPropertyEditorTagDefinition.cs b/src/Umbraco.Web/PropertyEditors/TagPropertyEditorTagDefinition.cs index 2754af85f4..8e721366b8 100644 --- a/src/Umbraco.Web/PropertyEditors/TagPropertyEditorTagDefinition.cs +++ b/src/Umbraco.Web/PropertyEditors/TagPropertyEditorTagDefinition.cs @@ -1,10 +1,13 @@ -using Umbraco.Core.Models.Editors; +using System; +using Umbraco.Core; +using Umbraco.Core.Models; +using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; namespace Umbraco.Web.PropertyEditors { /// - /// Used to dynamically change the tag group based on the pre-values + /// Used to dynamically change the tag group and storage type based on the pre-values /// internal class TagPropertyEditorTagDefinition : TagPropertyDefinition { @@ -21,5 +24,16 @@ namespace Umbraco.Web.PropertyEditors return preVals.ContainsKey("group") ? preVals["group"].Value : "default"; } } + + public override TagCacheStorageType StorageType + { + get + { + var preVals = PropertySaving.PreValues.FormatAsDictionary(); + return preVals.ContainsKey("storageType") + ? Enum.Parse(preVals["storageType"].Value) + : TagCacheStorageType.Csv; + } + } } } \ No newline at end of file diff --git a/src/Umbraco.Web/PropertyEditors/TagsPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/TagsPropertyEditor.cs index dc42b74e0c..49fb5ddbc4 100644 --- a/src/Umbraco.Web/PropertyEditors/TagsPropertyEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/TagsPropertyEditor.cs @@ -1,10 +1,15 @@ using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using Newtonsoft.Json.Linq; using Umbraco.Core; +using Umbraco.Core.Models; +using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; namespace Umbraco.Web.PropertyEditors { - [SupportTags(typeof(TagPropertyEditorTagDefinition))] + [SupportTags(typeof(TagPropertyEditorTagDefinition), ValueType = TagValueType.CustomTagList)] [PropertyEditor(Constants.PropertyEditors.TagsAlias, "Tags", "tags")] public class TagsPropertyEditor : PropertyEditor { @@ -12,7 +17,8 @@ namespace Umbraco.Web.PropertyEditors { _defaultPreVals = new Dictionary { - {"group", "default"} + {"group", "default"}, + {"storageType", TagCacheStorageType.Csv.ToString()} }; } @@ -27,11 +33,36 @@ namespace Umbraco.Web.PropertyEditors set { _defaultPreVals = value; } } + protected override PropertyValueEditor CreateValueEditor() + { + return new TagPropertyValueEditor(base.CreateValueEditor()); + } + protected override PreValueEditor CreatePreValueEditor() { return new TagPreValueEditor(); } + internal class TagPropertyValueEditor : PropertyValueEditorWrapper + { + public TagPropertyValueEditor(PropertyValueEditor wrapped) + : base(wrapped) + { + } + + /// + /// This needs to return IEnumerable{string} + /// + /// + /// + /// + public override object ConvertEditorToDb(ContentPropertyData editorValue, object currentValue) + { + var json = editorValue.Value as JArray; + return json == null ? null : json.Select(x => x.Value()); + } + } + internal class TagPreValueEditor : PreValueEditor { public TagPreValueEditor() @@ -43,11 +74,26 @@ namespace Umbraco.Web.PropertyEditors Name = "Tag group", View = "requiredfield" }); + + Fields.Add(new PreValueField(new ManifestPropertyValidator {Type = "Required"}) + { + Description = "Select whether to store the tags in cache as CSV (default) or as JSON. The only benefits of storage as JSON is that you are able to have commas in a tag value but this will require parsing the json in your views or using a property value converter", + Key = "storageType", + Name = "Storage Type", + View = "views/propertyeditors/tags/tags.prevalues.html" + }); } - public override IDictionary ConvertDbToEditor(IDictionary defaultPreVals, Core.Models.PreValueCollection persistedPreVals) + public override IDictionary ConvertDbToEditor(IDictionary defaultPreVals, PreValueCollection persistedPreVals) { var result = base.ConvertDbToEditor(defaultPreVals, persistedPreVals); + + //This is required because we've added this pre-value so old installs that don't have it will need to have a default. + if (result.ContainsKey("storageType") == false || result["storageType"] == null || result["storageType"].ToString().IsNullOrWhiteSpace()) + { + result["storageType"] = TagCacheStorageType.Csv.ToString(); + } + return result; } } From 82a1e85431e33f5756323d1e22ecd9b2dc84577c Mon Sep 17 00:00:00 2001 From: Mark van Schaik Date: Thu, 15 May 2014 16:37:32 +1200 Subject: [PATCH 74/94] solves issue U4-2356 when deleting templates --- src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs index 87bbcf2d4f..8d0ceb969e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs @@ -158,7 +158,7 @@ namespace Umbraco.Core.Persistence.Repositories { "DELETE FROM umbracoUser2NodeNotify WHERE nodeId = @Id", "DELETE FROM umbracoUser2NodePermission WHERE nodeId = @Id", - "UPDATE cmsDocument SET templateId = NULL WHERE nodeId = @Id", + "UPDATE cmsDocument SET templateId = NULL WHERE templateId = @Id", "DELETE FROM cmsDocumentType WHERE templateNodeId = @Id", "DELETE FROM cmsTemplate WHERE nodeId = @Id", "DELETE FROM umbracoNode WHERE id = @Id" From 7b4c58538d9d2d95cba24caa7738a29e8cf8bdfc Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 15 May 2014 16:11:59 +1000 Subject: [PATCH 75/94] wrote test to confirm: U4-2356 --- .../Repositories/TemplateRepositoryTest.cs | 290 +++++++++++------- 1 file changed, 177 insertions(+), 113 deletions(-) diff --git a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs index e2584a936c..a78ca65d58 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Text; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.IO; using Umbraco.Core.Models; using Umbraco.Core.Persistence; @@ -10,6 +11,7 @@ using Umbraco.Core.Persistence.Caching; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Tests.TestHelpers; +using Umbraco.Tests.TestHelpers.Entities; namespace Umbraco.Tests.Persistence.Repositories { @@ -37,10 +39,13 @@ namespace Umbraco.Tests.Persistence.Repositories var unitOfWork = provider.GetUnitOfWork(); // Act - var repository = RepositoryResolver.Current.ResolveByType(unitOfWork); + using (var repository = RepositoryResolver.Current.ResolveByType(unitOfWork)) + { + + // Assert + Assert.That(repository, Is.Not.Null); + } - // Assert - Assert.That(repository, Is.Not.Null); } [Test] @@ -51,10 +56,13 @@ namespace Umbraco.Tests.Persistence.Repositories var unitOfWork = provider.GetUnitOfWork(); // Act - var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem); + using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem)) + { + + // Assert + Assert.That(repository, Is.Not.Null); + } - // Assert - Assert.That(repository, Is.Not.Null); } [Test] @@ -63,16 +71,18 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); - var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem); + using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem)) + { + // Act + var template = new Template("test-add-masterpage.master", "test", "test") { Content = @"<%@ Master Language=""C#"" %>" }; + repository.AddOrUpdate(template); + unitOfWork.Commit(); - // Act - var template = new Template("test-add-masterpage.master", "test", "test") { Content = @"<%@ Master Language=""C#"" %>" }; - repository.AddOrUpdate(template); - unitOfWork.Commit(); - - //Assert - Assert.That(repository.Get("test"), Is.Not.Null); - Assert.That(_masterPageFileSystem.FileExists("test.master"), Is.True); + //Assert + Assert.That(repository.Get("test"), Is.Not.Null); + Assert.That(_masterPageFileSystem.FileExists("test.master"), Is.True); + } + } [Test] @@ -81,22 +91,25 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); - var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem); + using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem)) + { + // Act + var template = new Template("test-updated-masterpage.master", "test", "test") { Content = @"<%@ Master Language=""C#"" %>" }; + repository.AddOrUpdate(template); + unitOfWork.Commit(); - // Act - var template = new Template("test-updated-masterpage.master", "test", "test") { Content = @"<%@ Master Language=""C#"" %>" }; - repository.AddOrUpdate(template); - unitOfWork.Commit(); + template.Content = @"<%@ Master Language=""VB"" %>"; + repository.AddOrUpdate(template); + unitOfWork.Commit(); - template.Content = @"<%@ Master Language=""VB"" %>"; - repository.AddOrUpdate(template); - unitOfWork.Commit(); + var updated = repository.Get("test"); - var updated = repository.Get("test"); + // Assert + Assert.That(_masterPageFileSystem.FileExists("test.master"), Is.True); + Assert.That(updated.Content, Is.EqualTo(@"<%@ Master Language=""VB"" %>")); + } - // Assert - Assert.That(_masterPageFileSystem.FileExists("test.master"), Is.True); - Assert.That(updated.Content, Is.EqualTo(@"<%@ Master Language=""VB"" %>")); + } [Test] @@ -105,19 +118,64 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); - var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem); + using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem)) + { + var template = new Template("test-add-masterpage.master", "test", "test") { Content = @"<%@ Master Language=""C#"" %>" }; + repository.AddOrUpdate(template); + unitOfWork.Commit(); - var template = new Template("test-add-masterpage.master", "test", "test") { Content = @"<%@ Master Language=""C#"" %>" }; - repository.AddOrUpdate(template); - unitOfWork.Commit(); + // Act + var templates = repository.Get("test"); + repository.Delete(templates); + unitOfWork.Commit(); - // Act - var templates = repository.Get("test"); - repository.Delete(templates); - unitOfWork.Commit(); + // Assert + Assert.IsNull(repository.Get("test")); + } - // Assert - Assert.IsNull(repository.Get("test")); + + } + + [Test] + public void Can_Perform_Delete_When_Assigned_To_Doc() + { + // Arrange + var provider = new PetaPocoUnitOfWorkProvider(); + var unitOfWork = provider.GetUnitOfWork(); + + var templateRepository = new TemplateRepository(unitOfWork, NullCacheProvider.Current); + var tagRepository = new TagsRepository(unitOfWork, NullCacheProvider.Current); + var contentTypeRepository = new ContentTypeRepository(unitOfWork, NullCacheProvider.Current, templateRepository); + var contentRepo = new ContentRepository(unitOfWork, NullCacheProvider.Current, contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper()); + + using (contentRepo) + { + var contentType = MockedContentTypes.CreateSimpleContentType("umbTextpage2", "Textpage"); + var textpage = MockedContent.CreateSimpleContent(contentType); + contentTypeRepository.AddOrUpdate(contentType); + contentRepo.AddOrUpdate(textpage); + unitOfWork.Commit(); + + using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem)) + { + var template = new Template("test-add-masterpage.master", "test", "test") { Content = @"<%@ Master Language=""C#"" %>" }; + repository.AddOrUpdate(template); + unitOfWork.Commit(); + + textpage.Template = template; + contentRepo.AddOrUpdate(textpage); + unitOfWork.Commit(); + + // Act + var templates = repository.Get("test"); + repository.Delete(templates); + unitOfWork.Commit(); + + // Assert + Assert.IsNull(repository.Get("test")); + } + } + } [Test] @@ -126,27 +184,30 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); - var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem); + using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem)) + { + var parent = new Template("test-parent-masterpage.master", "parent", "parent") { Content = @"<%@ Master Language=""C#"" %>" }; + var child = new Template("test-child-masterpage.master", "child", "child") { Content = @"<%@ Master Language=""C#"" %>" }; + var baby = new Template("test-baby-masterpage.master", "baby", "baby") { Content = @"<%@ Master Language=""C#"" %>" }; + child.MasterTemplateAlias = parent.Alias; + child.MasterTemplateId = new Lazy(() => parent.Id); + baby.MasterTemplateAlias = child.Alias; + baby.MasterTemplateId = new Lazy(() => child.Id); + repository.AddOrUpdate(parent); + repository.AddOrUpdate(child); + repository.AddOrUpdate(baby); + unitOfWork.Commit(); - var parent = new Template("test-parent-masterpage.master", "parent", "parent") { Content = @"<%@ Master Language=""C#"" %>" }; - var child = new Template("test-child-masterpage.master", "child", "child") { Content = @"<%@ Master Language=""C#"" %>" }; - var baby = new Template("test-baby-masterpage.master", "baby", "baby") { Content = @"<%@ Master Language=""C#"" %>" }; - child.MasterTemplateAlias = parent.Alias; - child.MasterTemplateId = new Lazy(() => parent.Id); - baby.MasterTemplateAlias = child.Alias; - baby.MasterTemplateId = new Lazy(() => child.Id); - repository.AddOrUpdate(parent); - repository.AddOrUpdate(child); - repository.AddOrUpdate(baby); - unitOfWork.Commit(); + // Act + var templates = repository.Get("parent"); + repository.Delete(templates); + unitOfWork.Commit(); - // Act - var templates = repository.Get("parent"); - repository.Delete(templates); - unitOfWork.Commit(); + // Assert + Assert.IsNull(repository.Get("test")); + } - // Assert - Assert.IsNull(repository.Get("test")); + } [Test] @@ -155,66 +216,69 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); - var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem); + using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, _masterPageFileSystem, _viewsFileSystem)) + { + var parent = new Template("test-parent-masterpage.master", "parent", "parent") { Content = @"<%@ Master Language=""C#"" %>" }; + + var child1 = new Template("test-child1-masterpage.master", "child1", "child1") { Content = @"<%@ Master Language=""C#"" %>" }; + var toddler1 = new Template("test-toddler1-masterpage.master", "toddler1", "toddler1") { Content = @"<%@ Master Language=""C#"" %>" }; + var toddler2 = new Template("test-toddler2-masterpage.master", "toddler2", "toddler2") { Content = @"<%@ Master Language=""C#"" %>" }; + var baby1 = new Template("test-baby1-masterpage.master", "baby1", "baby1") { Content = @"<%@ Master Language=""C#"" %>" }; + + var child2 = new Template("test-child2-masterpage.master", "child2", "child2") { Content = @"<%@ Master Language=""C#"" %>" }; + var toddler3 = new Template("test-toddler3-masterpage.master", "toddler3", "toddler3") { Content = @"<%@ Master Language=""C#"" %>" }; + var toddler4 = new Template("test-toddler4-masterpage.master", "toddler4", "toddler4") { Content = @"<%@ Master Language=""C#"" %>" }; + var baby2 = new Template("test-baby2-masterpage.master", "baby2", "baby2") { Content = @"<%@ Master Language=""C#"" %>" }; + + + child1.MasterTemplateAlias = parent.Alias; + child1.MasterTemplateId = new Lazy(() => parent.Id); + child2.MasterTemplateAlias = parent.Alias; + child2.MasterTemplateId = new Lazy(() => parent.Id); + + toddler1.MasterTemplateAlias = child1.Alias; + toddler1.MasterTemplateId = new Lazy(() => child1.Id); + toddler2.MasterTemplateAlias = child1.Alias; + toddler2.MasterTemplateId = new Lazy(() => child1.Id); + + toddler3.MasterTemplateAlias = child2.Alias; + toddler3.MasterTemplateId = new Lazy(() => child2.Id); + toddler4.MasterTemplateAlias = child2.Alias; + toddler4.MasterTemplateId = new Lazy(() => child2.Id); + + baby1.MasterTemplateAlias = toddler2.Alias; + baby1.MasterTemplateId = new Lazy(() => toddler2.Id); + + baby2.MasterTemplateAlias = toddler4.Alias; + baby2.MasterTemplateId = new Lazy(() => toddler4.Id); + + repository.AddOrUpdate(parent); + repository.AddOrUpdate(child1); + repository.AddOrUpdate(child2); + repository.AddOrUpdate(toddler1); + repository.AddOrUpdate(toddler2); + repository.AddOrUpdate(toddler3); + repository.AddOrUpdate(toddler4); + repository.AddOrUpdate(baby1); + repository.AddOrUpdate(baby2); + unitOfWork.Commit(); + + // Act + var rootNode = repository.GetTemplateNode("parent"); + + // Assert + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "parent")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "child1")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "child2")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler1")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler2")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler3")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler4")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "baby1")); + Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "baby2")); + } - var parent = new Template("test-parent-masterpage.master", "parent", "parent") { Content = @"<%@ Master Language=""C#"" %>" }; - var child1 = new Template("test-child1-masterpage.master", "child1", "child1") { Content = @"<%@ Master Language=""C#"" %>" }; - var toddler1 = new Template("test-toddler1-masterpage.master", "toddler1", "toddler1") { Content = @"<%@ Master Language=""C#"" %>" }; - var toddler2 = new Template("test-toddler2-masterpage.master", "toddler2", "toddler2") { Content = @"<%@ Master Language=""C#"" %>" }; - var baby1 = new Template("test-baby1-masterpage.master", "baby1", "baby1") { Content = @"<%@ Master Language=""C#"" %>" }; - - var child2 = new Template("test-child2-masterpage.master", "child2", "child2") { Content = @"<%@ Master Language=""C#"" %>" }; - var toddler3 = new Template("test-toddler3-masterpage.master", "toddler3", "toddler3") { Content = @"<%@ Master Language=""C#"" %>" }; - var toddler4 = new Template("test-toddler4-masterpage.master", "toddler4", "toddler4") { Content = @"<%@ Master Language=""C#"" %>" }; - var baby2 = new Template("test-baby2-masterpage.master", "baby2", "baby2") { Content = @"<%@ Master Language=""C#"" %>" }; - - - child1.MasterTemplateAlias = parent.Alias; - child1.MasterTemplateId = new Lazy(() => parent.Id); - child2.MasterTemplateAlias = parent.Alias; - child2.MasterTemplateId = new Lazy(() => parent.Id); - - toddler1.MasterTemplateAlias = child1.Alias; - toddler1.MasterTemplateId = new Lazy(() => child1.Id); - toddler2.MasterTemplateAlias = child1.Alias; - toddler2.MasterTemplateId = new Lazy(() => child1.Id); - - toddler3.MasterTemplateAlias = child2.Alias; - toddler3.MasterTemplateId = new Lazy(() => child2.Id); - toddler4.MasterTemplateAlias = child2.Alias; - toddler4.MasterTemplateId = new Lazy(() => child2.Id); - - baby1.MasterTemplateAlias = toddler2.Alias; - baby1.MasterTemplateId = new Lazy(() => toddler2.Id); - - baby2.MasterTemplateAlias = toddler4.Alias; - baby2.MasterTemplateId = new Lazy(() => toddler4.Id); - - repository.AddOrUpdate(parent); - repository.AddOrUpdate(child1); - repository.AddOrUpdate(child2); - repository.AddOrUpdate(toddler1); - repository.AddOrUpdate(toddler2); - repository.AddOrUpdate(toddler3); - repository.AddOrUpdate(toddler4); - repository.AddOrUpdate(baby1); - repository.AddOrUpdate(baby2); - unitOfWork.Commit(); - - // Act - var rootNode = repository.GetTemplateNode("parent"); - - // Assert - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "parent")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "child1")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "child2")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler1")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler2")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler3")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "toddler4")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "baby1")); - Assert.IsNotNull(repository.FindTemplateInTree(rootNode, "baby2")); } //[Test] From 6b313aba489358ecc5c0c5bf57cb24321d888a9a Mon Sep 17 00:00:00 2001 From: Graham Ambrose Date: Thu, 15 May 2014 22:43:24 +0100 Subject: [PATCH 76/94] CopyUmbracoFilesToWebRoot assumes packages loacation CopyUmbracoFilesToWebRoot assumes packages folder is always one dir up from project file which is not always the case. I have changed to use MSBuildThisFileDirectory which makes the path relative the the UmbracoCms.targets file. MSBuildThisFileDirectory is supported from MSBuild 4 but as ToolsVersion is already set to 4.0 that should not be a problem. UmbracoVersion property is no longer required but removing it may break external target files depending on it. Have moved it to props file as this makes it more reliable for external targets files. --- build/NuSpecs/build/UmbracoCms.props | 3 +++ build/NuSpecs/build/UmbracoCms.targets | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/NuSpecs/build/UmbracoCms.props b/build/NuSpecs/build/UmbracoCms.props index 5e11945a9d..37f125ecb9 100644 --- a/build/NuSpecs/build/UmbracoCms.props +++ b/build/NuSpecs/build/UmbracoCms.props @@ -1,5 +1,8 @@ + + 7.1.2 + AddUmbracoFilesToOutput; diff --git a/build/NuSpecs/build/UmbracoCms.targets b/build/NuSpecs/build/UmbracoCms.targets index 721f40c976..bd8d28294c 100644 --- a/build/NuSpecs/build/UmbracoCms.targets +++ b/build/NuSpecs/build/UmbracoCms.targets @@ -1,11 +1,8 @@  - - 7.1.2 - - ..\packages\UmbracoCms.$(UmbracoVersion)\UmbracoFiles\ + $(MSBuildThisFileDirectory)..\UmbracoFiles\ From 8cae2526d5d4f0558c9af1fb189c8dd321eac80e Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 16 May 2014 11:34:10 +1000 Subject: [PATCH 77/94] Fixes: U4-4842 Unable to edit "name" and "alias" to MediaType property --- src/Umbraco.Core/Models/ContentType.cs | 23 ------------ src/Umbraco.Core/Models/ContentTypeBase.cs | 37 ++++++++++++++++--- src/Umbraco.Core/Models/DeepCloneHelper.cs | 24 +++++++++++- .../Caching/RuntimeCacheProvider.cs | 8 ++-- src/Umbraco.Tests/Models/ContentTypeTests.cs | 1 + 5 files changed, 59 insertions(+), 34 deletions(-) diff --git a/src/Umbraco.Core/Models/ContentType.cs b/src/Umbraco.Core/Models/ContentType.cs index 1cf7fc9684..ec763d07fa 100644 --- a/src/Umbraco.Core/Models/ContentType.cs +++ b/src/Umbraco.Core/Models/ContentType.cs @@ -133,29 +133,6 @@ namespace Umbraco.Core.Models Key = Guid.NewGuid(); } - /// - /// Method to call when Entity is being updated - /// - /// Modified Date is set and a new Version guid is set - internal override void UpdatingEntity() - { - base.UpdatingEntity(); - } - - public override object DeepClone() - { - var clone = (ContentType)base.DeepClone(); - var propertyGroups = PropertyGroups.Select(x => (PropertyGroup)x.DeepClone()).ToList(); - clone.PropertyGroups = new PropertyGroupCollection(propertyGroups); - //set the property types that are not part of a group - clone.PropertyTypes = PropertyTypeCollection - .Where(x => x.PropertyGroupId == null) - .Select(x => (PropertyType)x.DeepClone()).ToList(); - - clone.ResetDirtyProperties(false); - - return clone; - } /// /// Creates a deep clone of the current entity with its identity/alias and it's property identities reset diff --git a/src/Umbraco.Core/Models/ContentTypeBase.cs b/src/Umbraco.Core/Models/ContentTypeBase.cs index 00e9c1e30c..5c09deadb8 100644 --- a/src/Umbraco.Core/Models/ContentTypeBase.cs +++ b/src/Umbraco.Core/Models/ContentTypeBase.cs @@ -331,11 +331,6 @@ namespace Umbraco.Core.Models get { return _additionalData; } } - /// - /// Some entities may expose additional data that other's might not, this custom data will be available in this collection - /// - public IDictionary AdditionalData { get; private set; } - /// /// Gets or sets a list of integer Ids for allowed ContentTypes /// @@ -356,7 +351,9 @@ namespace Umbraco.Core.Models /// /// List of PropertyGroups available on this ContentType /// - /// A PropertyGroup corresponds to a Tab in the UI + /// + /// A PropertyGroup corresponds to a Tab in the UI + /// [DataMember] public virtual PropertyGroupCollection PropertyGroups { @@ -372,7 +369,13 @@ namespace Umbraco.Core.Models /// List of PropertyTypes available on this ContentType. /// This list aggregates PropertyTypes across the PropertyGroups. /// + /// + /// Marked as DoNotClone because the result of this property is not the natural result of the data, it is + /// a union of data so when auto-cloning if the setter is used it will be setting the unnatural result of the + /// data. We manually clone this instead. + /// [IgnoreDataMember] + [DoNotClone] public virtual IEnumerable PropertyTypes { get @@ -388,6 +391,14 @@ namespace Umbraco.Core.Models } /// + /// Returns the property type collection containing types that are non-groups - used for tests + /// + internal IEnumerable NonGroupedPropertyTypes + { + get { return _propertyTypes; } + } + + /// /// A boolean flag indicating if a property type has been removed from this instance. /// /// @@ -584,5 +595,19 @@ namespace Umbraco.Core.Models propertyType.ResetDirtyProperties(); } } + + public override object DeepClone() + { + var clone = (ContentTypeBase)base.DeepClone(); + + //need to manually wire up the event handlers for the property type collections - we've ensured + // its ignored from the auto-clone process because its return values are unions, not raw and + // we end up with duplicates, see: http://issues.umbraco.org/issue/U4-4842 + + clone._propertyTypes = (PropertyTypeCollection)_propertyTypes.DeepClone(); + clone._propertyTypes.CollectionChanged += clone.PropertyTypesChanged; + + return clone; + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/DeepCloneHelper.cs b/src/Umbraco.Core/Models/DeepCloneHelper.cs index aaee03f963..d8ef10751b 100644 --- a/src/Umbraco.Core/Models/DeepCloneHelper.cs +++ b/src/Umbraco.Core/Models/DeepCloneHelper.cs @@ -2,9 +2,29 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Reflection; namespace Umbraco.Core.Models { + /// + /// Used to attribute properties that have a setter and are a reference type + /// that should be ignored for cloning when using the DeepCloneHelper + /// + /// + /// + /// This attribute must be used: + /// * when the property is backed by a field but the result of the property is the un-natural data stored in the field + /// + /// This attribute should not be used: + /// * when the property is virtual + /// * when the setter performs additional required logic other than just setting the underlying field + /// + /// + internal class DoNotCloneAttribute : Attribute + { + + } + public static class DeepCloneHelper { /// @@ -25,8 +45,10 @@ namespace Umbraco.Core.Models var refProperties = inputType.GetProperties() .Where(x => + //is not attributed with the ignore clone attribute + x.GetCustomAttribute() == null //reference type but not string - x.PropertyType.IsValueType == false && x.PropertyType != typeof (string) + && x.PropertyType.IsValueType == false && x.PropertyType != typeof (string) //settable && x.CanWrite //non-indexed diff --git a/src/Umbraco.Core/Persistence/Caching/RuntimeCacheProvider.cs b/src/Umbraco.Core/Persistence/Caching/RuntimeCacheProvider.cs index c2ca53a240..acacadb0cc 100644 --- a/src/Umbraco.Core/Persistence/Caching/RuntimeCacheProvider.cs +++ b/src/Umbraco.Core/Persistence/Caching/RuntimeCacheProvider.cs @@ -128,9 +128,9 @@ namespace Umbraco.Core.Persistence.Caching public void Save(Type type, IEntity entity) { //IMPORTANT: we must clone to store, see: http://issues.umbraco.org/issue/U4-4259 - entity = (IEntity)entity.DeepClone(); + var clone = (IEntity)entity.DeepClone(); - var key = GetCompositeId(type, entity.Id); + var key = GetCompositeId(type, clone.Id); _keyTracker.TryAdd(key); @@ -139,11 +139,11 @@ namespace Umbraco.Core.Persistence.Caching if (_memoryCache != null) { - _memoryCache.Set(key, entity, new CacheItemPolicy { SlidingExpiration = TimeSpan.FromMinutes(5) }); + _memoryCache.Set(key, clone, new CacheItemPolicy { SlidingExpiration = TimeSpan.FromMinutes(5) }); } else { - HttpRuntime.Cache.Insert(key, entity, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5)); + HttpRuntime.Cache.Insert(key, clone, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5)); } } diff --git a/src/Umbraco.Tests/Models/ContentTypeTests.cs b/src/Umbraco.Tests/Models/ContentTypeTests.cs index 3a0d974185..bb61a84d82 100644 --- a/src/Umbraco.Tests/Models/ContentTypeTests.cs +++ b/src/Umbraco.Tests/Models/ContentTypeTests.cs @@ -152,6 +152,7 @@ namespace Umbraco.Tests.Models } Assert.AreNotSame(clone.PropertyTypes, contentType.PropertyTypes); Assert.AreEqual(clone.PropertyTypes.Count(), contentType.PropertyTypes.Count()); + Assert.AreEqual(0, ((ContentTypeBase)clone).NonGroupedPropertyTypes.Count()); for (var index = 0; index < contentType.PropertyTypes.Count(); index++) { Assert.AreNotSame(clone.PropertyTypes.ElementAt(index), contentType.PropertyTypes.ElementAt(index)); From 46a4f9242c813e873b656bd1cd22765c0444a04e Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 16 May 2014 11:43:20 +1000 Subject: [PATCH 78/94] fixes test --- src/Umbraco.Tests/Models/PropertyGroupTests.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Tests/Models/PropertyGroupTests.cs b/src/Umbraco.Tests/Models/PropertyGroupTests.cs index f56bd2fbc2..413e94bfee 100644 --- a/src/Umbraco.Tests/Models/PropertyGroupTests.cs +++ b/src/Umbraco.Tests/Models/PropertyGroupTests.cs @@ -2,11 +2,12 @@ using System; using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Serialization; +using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.Models { [TestFixture] - public class PropertyGroupTests + public class PropertyGroupTests : BaseUmbracoConfigurationTest { [Test] public void Can_Deep_Clone() @@ -37,7 +38,7 @@ namespace Umbraco.Tests.Models Alias = "test2", CreateDate = DateTime.Now, DataTypeDefinitionId = 6, - DataTypeId = Guid.NewGuid(), + PropertyEditorAlias = "propTest", Description = "testing2", Key = Guid.NewGuid(), Mandatory = true, @@ -118,7 +119,7 @@ namespace Umbraco.Tests.Models Alias = "test2", CreateDate = DateTime.Now, DataTypeDefinitionId = 6, - DataTypeId = Guid.NewGuid(), + PropertyEditorAlias = "propTest", Description = "testing2", Key = Guid.NewGuid(), Mandatory = true, From 762656e9643a4271e38477326228b3b91caf319f Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 16 May 2014 12:08:17 +1000 Subject: [PATCH 79/94] Fixes: U4-4926 Pre-values need to be cloned in/out of the cache --- src/Umbraco.Core/Models/PreValue.cs | 9 +++- src/Umbraco.Core/Models/PreValueCollection.cs | 18 ++++++- .../DataTypeDefinitionRepository.cs | 4 +- .../Models/PreValueCollectionTests.cs | 51 +++++++++++++++++++ src/Umbraco.Tests/Umbraco.Tests.csproj | 1 + 5 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 src/Umbraco.Tests/Models/PreValueCollectionTests.cs diff --git a/src/Umbraco.Core/Models/PreValue.cs b/src/Umbraco.Core/Models/PreValue.cs index b12312130d..61d127f50a 100644 --- a/src/Umbraco.Core/Models/PreValue.cs +++ b/src/Umbraco.Core/Models/PreValue.cs @@ -3,7 +3,7 @@ /// /// Represents a stored pre-value field value /// - public class PreValue + public class PreValue : IDeepCloneable { public PreValue(int id, string value, int sortOrder) { @@ -37,5 +37,12 @@ /// The sort order stored for the pre-value field value /// public int SortOrder { get; private set; } + + public virtual object DeepClone() + { + //Memberwise clone on PreValue will work since it doesn't have any deep elements + var clone = (PreValue)MemberwiseClone(); + return clone; + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/PreValueCollection.cs b/src/Umbraco.Core/Models/PreValueCollection.cs index e6d864cd91..449eaaa3b7 100644 --- a/src/Umbraco.Core/Models/PreValueCollection.cs +++ b/src/Umbraco.Core/Models/PreValueCollection.cs @@ -14,7 +14,7 @@ namespace Umbraco.Core.Models /// Most legacy property editors won't support the dictionary format but new property editors should always use the dictionary format. /// In order to get overrideable pre-values working we need a dictionary since we'll have to reference a pre-value by a key. /// - public class PreValueCollection + public class PreValueCollection : IDeepCloneable { private IDictionary _preValuesAsDictionary; private IEnumerable _preValuesAsArray; @@ -82,5 +82,21 @@ namespace Umbraco.Core.Models } return result; } + + public object DeepClone() + { + var clone = (PreValueCollection) MemberwiseClone(); + if (_preValuesAsArray != null) + { + clone._preValuesAsArray = _preValuesAsArray.Select(x => (PreValue)x.DeepClone()).ToArray(); + } + if (_preValuesAsDictionary != null) + { + clone._preValuesAsDictionary = _preValuesAsDictionary.ToDictionary(x => x.Key, x => (PreValue)x.Value.DeepClone()); + } + + + return clone; + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs index 9484121ad7..0e8ae8c3bc 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs @@ -295,8 +295,8 @@ AND umbracoNode.id <> @id", var cached = _cacheHelper.RuntimeCache.GetCacheItemsByKeySearch(GetPrefixedCacheKey(dataTypeId)); if (cached != null && cached.Any()) { - //return from the cache - return cached.First(); + //return from the cache, ensure it's a cloned result + return (PreValueCollection)cached.First().DeepClone(); } l.UpgradeToWriteLock(); diff --git a/src/Umbraco.Tests/Models/PreValueCollectionTests.cs b/src/Umbraco.Tests/Models/PreValueCollectionTests.cs new file mode 100644 index 0000000000..49c9ab16bb --- /dev/null +++ b/src/Umbraco.Tests/Models/PreValueCollectionTests.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using Umbraco.Core.Models; + +namespace Umbraco.Tests.Models +{ + [TestFixture] + public class PreValueCollectionTests + { + [Test] + public void Can_Deep_Clone() + { + var d = new PreValueCollection(new Dictionary + { + {"blah1", new PreValue(1, "test1", 1)}, + {"blah2", new PreValue(2, "test1", 3)}, + {"blah3", new PreValue(3, "test1", 2)} + }); + + var a = new PreValueCollection(new[] + { + new PreValue(1, "test1", 1), + new PreValue(2, "test1", 3), + new PreValue(3, "test1", 2) + }); + + var clone1 = (PreValueCollection)d.DeepClone(); + var clone2 = (PreValueCollection)a.DeepClone(); + + Action assert = (orig, clone) => + { + Assert.AreNotSame(orig, clone); + var oDic = orig.FormatAsDictionary(); + var cDic = clone.FormatAsDictionary(); + Assert.AreEqual(oDic.Keys.Count(), cDic.Keys.Count()); + foreach (var k in oDic.Keys) + { + Assert.AreNotSame(oDic[k], cDic[k]); + Assert.AreEqual(oDic[k].Id, cDic[k].Id); + Assert.AreEqual(oDic[k].SortOrder, cDic[k].SortOrder); + Assert.AreEqual(oDic[k].Value, cDic[k].Value); + } + }; + + assert(d, clone1); + assert(a, clone2); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index fa9a84acc0..379547049d 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -191,6 +191,7 @@ + From ac9c938e926a9ee3c16f3b1f0c92fbec4731df0c Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 16 May 2014 12:42:21 +1000 Subject: [PATCH 80/94] Fixes: U4-4923 Failed to retrieve data for application tree media after upgrade to 7.1.2 --- .../Repositories/EntityRepository.cs | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs index 02f64aa0cf..d0b81f1b8e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs @@ -493,14 +493,17 @@ namespace Umbraco.Core.Persistence.Repositories // Is this the same UmbracoEntity as the current one we're processing if (Current != null && Current.Key == a.uniqueID) { - // Add this UmbracoProperty to the current additional data - Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty + if (p != null && p.PropertyAlias.IsNullOrWhiteSpace() == false) { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.NTextValue.IsNullOrWhiteSpace() - ? p.NVarcharValue - : p.NTextValue.ConvertToJsonIfPossible() - }; + // Add this UmbracoProperty to the current additional data + Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty + { + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.NTextValue.IsNullOrWhiteSpace() + ? p.NVarcharValue + : p.NTextValue.ConvertToJsonIfPossible() + }; + } // Return null to indicate we're not done with this UmbracoEntity yet return null; @@ -516,14 +519,17 @@ namespace Umbraco.Core.Persistence.Repositories Current = _factory.BuildEntityFromDynamic(a); - //add the property/create the prop list if null - Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty + if (p != null && p.PropertyAlias.IsNullOrWhiteSpace() == false) { - PropertyEditorAlias = p.PropertyEditorAlias, - Value = p.NTextValue.IsNullOrWhiteSpace() - ? p.NVarcharValue - : p.NTextValue.ConvertToJsonIfPossible() - }; + //add the property/create the prop list if null + Current.AdditionalData[p.PropertyAlias] = new UmbracoEntity.EntityProperty + { + PropertyEditorAlias = p.PropertyEditorAlias, + Value = p.NTextValue.IsNullOrWhiteSpace() + ? p.NVarcharValue + : p.NTextValue.ConvertToJsonIfPossible() + }; + } // Return the now populated previous UmbracoEntity (or null if first time through) return prev; From ffbb1a85ab8d0fbda031af3b0ba6bd9d60f60f89 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 16 May 2014 12:43:23 +1000 Subject: [PATCH 81/94] Fixes: U4-4312 Spelling error on "Retreive" should be Retrieve -U7.0.0.4 --- .../src/common/resources/datatype.resource.js | 4 ++-- .../src/common/resources/entity.resource.js | 12 ++++++------ .../src/common/resources/log.resource.js | 2 +- .../src/common/resources/member.resource.js | 2 +- .../src/common/resources/stylesheet.resource.js | 2 +- .../src/common/resources/tree.resource.js | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js index 5366da0db2..ed7c2e726a 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js @@ -81,7 +81,7 @@ function dataTypeResource($q, $http, umbDataFormatter, umbRequestHelper) { umbRequestHelper.getApiUrl( "dataTypeApiBaseUrl", "GetAll")), - 'Failed to retreive data'); + 'Failed to retrieve data'); }, /** @@ -118,7 +118,7 @@ function dataTypeResource($q, $http, umbDataFormatter, umbRequestHelper) { umbRequestHelper.getApiUrl( "dataTypeApiBaseUrl", "GetEmpty")), - 'Failed to retreive data for empty datatype'); + 'Failed to retrieve data for empty datatype'); }, /** * @ngdoc method diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js index 17f1b87b5b..eeb81f2d67 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js @@ -146,7 +146,7 @@ function entityResource($q, $http, umbRequestHelper) { "entityApiBaseUrl", "GetByIds", query)), - 'Failed to retreive entity data for ids ' + ids); + 'Failed to retrieve entity data for ids ' + ids); }, /** @@ -192,7 +192,7 @@ function entityResource($q, $http, umbRequestHelper) { "entityApiBaseUrl", "GetAll", query)), - 'Failed to retreive entity data for type ' + type); + 'Failed to retrieve entity data for type ' + type); }, /** @@ -215,7 +215,7 @@ function entityResource($q, $http, umbRequestHelper) { "entityApiBaseUrl", "GetAncestors", [{id: id}, {type: type}])), - 'Failed to retreive ancestor data for id ' + id); + 'Failed to retrieve ancestor data for id ' + id); }, /** @@ -238,7 +238,7 @@ function entityResource($q, $http, umbRequestHelper) { "entityApiBaseUrl", "GetChildren", [{ id: id }, { type: type }])), - 'Failed to retreive child data for id ' + id); + 'Failed to retrieve child data for id ' + id); }, /** @@ -271,7 +271,7 @@ function entityResource($q, $http, umbRequestHelper) { "entityApiBaseUrl", "Search", [{ query: query }, {type: type}])), - 'Failed to retreive entity data for query ' + query); + 'Failed to retrieve entity data for query ' + query); }, @@ -304,7 +304,7 @@ function entityResource($q, $http, umbRequestHelper) { "entityApiBaseUrl", "SearchAll", [{ query: query }])), - 'Failed to retreive entity data for query ' + query); + 'Failed to retrieve entity data for query ' + query); } }; diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/log.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/log.resource.js index 206c06ad4a..8059975fc1 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/log.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/log.resource.js @@ -99,7 +99,7 @@ function logResource($q, $http, umbRequestHelper) { "logApiBaseUrl", "GetLog", [{ logtype: type, sinceDate: since }])), - 'Failed to retreive user data for id ' + id); + 'Failed to retrieve user data for id ' + id); } }; } diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js index 2eb104129b..65a53d233d 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js @@ -133,7 +133,7 @@ function memberResource($q, $http, umbDataFormatter, umbRequestHelper) { umbRequestHelper.getApiUrl( "memberApiBaseUrl", "GetEmpty")), - 'Failed to retreive data for empty member item type ' + alias); + 'Failed to retrieve data for empty member item type ' + alias); } }, diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/stylesheet.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/stylesheet.resource.js index 3ff29a5c9d..f5eab4e902 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/stylesheet.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/stylesheet.resource.js @@ -93,7 +93,7 @@ function stylesheetResource($q, $http, umbRequestHelper) { "stylesheetApiBaseUrl", "GetRulesByName", [{ name: name }])), - 'Failed to retreive stylesheets '); + 'Failed to retrieve stylesheets '); } }; } diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js index 52f8f07842..ea4bee718f 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/tree.resource.js @@ -72,7 +72,7 @@ function treeResource($q, $http, umbRequestHelper) { return umbRequestHelper.resourcePromise( $http.get(getTreeNodesUrl(options.node)), - 'Failed to retreive data for child nodes ' + options.node.nodeId); + 'Failed to retrieve data for child nodes ' + options.node.nodeId); } }; } From b42d3b226d4ef3e4950cb8ed6ac9c32b8ec1a3c7 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Fri, 16 May 2014 11:29:35 +0200 Subject: [PATCH 82/94] Bump version --- build/Build.bat | 2 +- build/Build.proj | 2 +- build/NuSpecs/build/UmbracoCms.props | 9 ++++----- src/Umbraco.Core/Configuration/UmbracoVersion.cs | 2 +- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 4 ++-- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/build/Build.bat b/build/Build.bat index 0154866703..535c379d52 100644 --- a/build/Build.bat +++ b/build/Build.bat @@ -1,5 +1,5 @@ @ECHO OFF -SET release=7.1.2 +SET release=7.1.3 SET comment= SET version=%release% diff --git a/build/Build.proj b/build/Build.proj index 2b9040dab3..d37a9b7bb9 100644 --- a/build/Build.proj +++ b/build/Build.proj @@ -325,7 +325,7 @@ Regex="CurrentComment { get { return "([a-zA-Z]+)?"" ReplacementText="CurrentComment { get { return "$(BUILD_COMMENT)""/> - diff --git a/build/NuSpecs/build/UmbracoCms.props b/build/NuSpecs/build/UmbracoCms.props index 37f125ecb9..aed481dde4 100644 --- a/build/NuSpecs/build/UmbracoCms.props +++ b/build/NuSpecs/build/UmbracoCms.props @@ -1,15 +1,14 @@ - + - - 7.1.2 + + 7.1.3 AddUmbracoFilesToOutput; $(CopyAllFilesToSingleFolderForPackageDependsOn); - - + AddUmbracoFilesToOutput; $(CopyAllFilesToSingleFolderForPackageDependsOn); diff --git a/src/Umbraco.Core/Configuration/UmbracoVersion.cs b/src/Umbraco.Core/Configuration/UmbracoVersion.cs index ebaca4ed81..3c15b52de9 100644 --- a/src/Umbraco.Core/Configuration/UmbracoVersion.cs +++ b/src/Umbraco.Core/Configuration/UmbracoVersion.cs @@ -5,7 +5,7 @@ namespace Umbraco.Core.Configuration { public class UmbracoVersion { - private static readonly Version Version = new Version("7.1.2"); + private static readonly Version Version = new Version("7.1.3"); /// /// Gets the current version of Umbraco. diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index a6a7481249..78eda959b8 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -2530,9 +2530,9 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.0\x86\*.* "$(TargetDir)x86\" True True - 7120 + 7130 / - http://localhost:7120 + http://localhost:7130 False False From a99a33477a07f27e9091d8423ce6eae4278395ff Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Fri, 16 May 2014 12:27:54 +0200 Subject: [PATCH 83/94] Centralized the current Umbraco version number in UmbracoVersion.txt that will be read by buildbelle.bat, build.bat and the umbraco.web.ui.csproj so it works in VS, command line and also in TeamCity. --- build/Build.bat | 11 ++++++++++- build/BuildBelle.bat | 3 ++- build/UmbracoVersion.txt | 1 + src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 5 ++++- 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 build/UmbracoVersion.txt diff --git a/build/Build.bat b/build/Build.bat index 535c379d52..107edbf7ea 100644 --- a/build/Build.bat +++ b/build/Build.bat @@ -1,5 +1,9 @@ @ECHO OFF -SET release=7.1.3 +IF NOT EXIST UmbracoVersion.txt ( + ECHO UmbracoVersion.txt missing! + GOTO :showerror +) +SET /p release= - + + + + From 8d4589827470af869d65b9dffd82c5c2917ce8fe Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Fri, 16 May 2014 12:44:02 +0200 Subject: [PATCH 84/94] UmbracoVersion property no longer needed. Added data folder to the targets. --- build/NuSpecs/build/UmbracoCms.props | 3 --- build/NuSpecs/build/UmbracoCms.targets | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/NuSpecs/build/UmbracoCms.props b/build/NuSpecs/build/UmbracoCms.props index aed481dde4..1422a4cd76 100644 --- a/build/NuSpecs/build/UmbracoCms.props +++ b/build/NuSpecs/build/UmbracoCms.props @@ -1,8 +1,5 @@  - - 7.1.3 - AddUmbracoFilesToOutput; diff --git a/build/NuSpecs/build/UmbracoCms.targets b/build/NuSpecs/build/UmbracoCms.targets index bd8d28294c..024d8af7ad 100644 --- a/build/NuSpecs/build/UmbracoCms.targets +++ b/build/NuSpecs/build/UmbracoCms.targets @@ -30,6 +30,9 @@ Config\Splashes + + data + umbraco From b07665f4d484d14a48b433af50f2c811017ff9a3 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Fri, 16 May 2014 14:22:13 +0200 Subject: [PATCH 85/94] Fixes U4-4650 Pluralization of document type aliases doesn't always work --- src/umbraco.MacroEngines/RazorDynamicNode/DynamicNode.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNode.cs b/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNode.cs index 050c8cf224..bb7144de75 100644 --- a/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNode.cs +++ b/src/umbraco.MacroEngines/RazorDynamicNode/DynamicNode.cs @@ -887,7 +887,7 @@ namespace umbraco.MacroEngines //this is from SqlMetal and just makes it a bit of fun to allow pluralisation private static string MakePluralName(string name) { - if ((name.EndsWith("x", StringComparison.OrdinalIgnoreCase) || name.EndsWith("ch", StringComparison.OrdinalIgnoreCase)) || (name.EndsWith("ss", StringComparison.OrdinalIgnoreCase) || name.EndsWith("sh", StringComparison.OrdinalIgnoreCase))) + if ((name.EndsWith("x", StringComparison.OrdinalIgnoreCase) || name.EndsWith("ch", StringComparison.OrdinalIgnoreCase)) || (name.EndsWith("s", StringComparison.OrdinalIgnoreCase) || name.EndsWith("sh", StringComparison.OrdinalIgnoreCase))) { name = name + "es"; return name; From 43bfd6e4722ee6358645b27fd1e4c07aa9b0d0c7 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Fri, 16 May 2014 14:33:03 +0200 Subject: [PATCH 86/94] U4-4650 Pluralization of document type aliases doesn't always work --- src/Umbraco.Core/StringExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index d1b20cce30..723ff2efc9 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -213,7 +213,7 @@ namespace Umbraco.Core //this is from SqlMetal and just makes it a bit of fun to allow pluralisation public static string MakePluralName(this string name) { - if ((name.EndsWith("x", StringComparison.OrdinalIgnoreCase) || name.EndsWith("ch", StringComparison.OrdinalIgnoreCase)) || (name.EndsWith("ss", StringComparison.OrdinalIgnoreCase) || name.EndsWith("sh", StringComparison.OrdinalIgnoreCase))) + if ((name.EndsWith("x", StringComparison.OrdinalIgnoreCase) || name.EndsWith("ch", StringComparison.OrdinalIgnoreCase)) || (name.EndsWith("s", StringComparison.OrdinalIgnoreCase) || name.EndsWith("sh", StringComparison.OrdinalIgnoreCase))) { name = name + "es"; return name; From 1dd103caa3c69c4703f275ec8a7fcb213c30aac0 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Fri, 16 May 2014 18:53:23 +0200 Subject: [PATCH 87/94] U4-4930 NuGet update fails to copy new Umbraco binaries --- build/NuSpecs/UmbracoCms.Core.nuspec | 1 + build/NuSpecs/tools/install.core.ps1 | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 build/NuSpecs/tools/install.core.ps1 diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec index bb0746e8bc..b770d8cfdc 100644 --- a/build/NuSpecs/UmbracoCms.Core.nuspec +++ b/build/NuSpecs/UmbracoCms.Core.nuspec @@ -67,5 +67,6 @@ + \ No newline at end of file diff --git a/build/NuSpecs/tools/install.core.ps1 b/build/NuSpecs/tools/install.core.ps1 new file mode 100644 index 0000000000..c712b363bc --- /dev/null +++ b/build/NuSpecs/tools/install.core.ps1 @@ -0,0 +1,24 @@ +param($rootPath, $toolsPath, $package, $project) + +if ($project) { + $dateTime = Get-Date -Format yyyyMMdd-HHmmss + $backupPath = Join-Path (Split-Path $project.FullName -Parent) "\App_Data\NuGetBackup\$dateTime" + $copyLogsPath = Join-Path $backupPath "CopyLogs" + $projectDestinationPath = Split-Path $project.FullName -Parent + + # Create backup folder and logs folder if it doesn't exist yet + New-Item -ItemType Directory -Force -Path $backupPath + New-Item -ItemType Directory -Force -Path $copyLogsPath + + # After backing up, remove all dlls from bin folder in case dll files are included in the VS project + # See: http://issues.umbraco.org/issue/U4-4930 + $umbracoBinFolder = Join-Path $projectDestinationPath "bin" + if(Test-Path $umbracoBinFolder) { + $umbracoBinBackupPath = Join-Path $backupPath "bin" + + New-Item -ItemType Directory -Force -Path $umbracoBinBackupPath + + robocopy $umbracoBinFolder $umbracoBinBackupPath /e /LOG:$copyLogsPath\UmbracoBinBackup.log + Remove-Item $umbracoBinFolder\*.dll -Force -Confirm:$false + } +} \ No newline at end of file From 142a9963afadd002a1dcf3a2363b9b35dd3907b7 Mon Sep 17 00:00:00 2001 From: Shannon Date: Sat, 17 May 2014 15:35:30 +1000 Subject: [PATCH 88/94] Fixes macro property saving issue in repo --- src/Umbraco.Core/Models/IMacroProperty.cs | 2 +- .../Models/MacroPropertyCollection.cs | 38 ++++++++++++++ src/Umbraco.Core/ObservableDictionary.cs | 22 ++++++++ .../Repositories/MacroRepository.cs | 10 ++-- .../Repositories/MacroRepositoryTest.cs | 51 +++++++++++++++++++ 5 files changed, 119 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/Models/IMacroProperty.cs b/src/Umbraco.Core/Models/IMacroProperty.cs index c39e777a0e..a6c1d9ca5f 100644 --- a/src/Umbraco.Core/Models/IMacroProperty.cs +++ b/src/Umbraco.Core/Models/IMacroProperty.cs @@ -6,7 +6,7 @@ namespace Umbraco.Core.Models /// /// Defines a Property for a Macro /// - public interface IMacroProperty : IValueObject, IDeepCloneable + public interface IMacroProperty : IValueObject, IDeepCloneable, IRememberBeingDirty { [DataMember] int Id { get; set; } diff --git a/src/Umbraco.Core/Models/MacroPropertyCollection.cs b/src/Umbraco.Core/Models/MacroPropertyCollection.cs index 7496b582b4..de23d60e7c 100644 --- a/src/Umbraco.Core/Models/MacroPropertyCollection.cs +++ b/src/Umbraco.Core/Models/MacroPropertyCollection.cs @@ -24,6 +24,44 @@ namespace Umbraco.Core.Models } return clone; } + + /// + /// Used to update an existing macro property + /// + /// + /// + /// + /// + /// The existing property alias + /// + /// + public void UpdateProperty(string currentAlias, string name = null, int? sortOrder = null, string editorAlias = null, string newAlias = null) + { + var prop = this[currentAlias]; + if (prop == null) + { + throw new InvalidOperationException("No property exists with alias " + currentAlias); + } + + if (name.IsNullOrWhiteSpace() == false) + { + prop.Name = name; + } + if (sortOrder.HasValue) + { + prop.SortOrder = sortOrder.Value; + } + if (name.IsNullOrWhiteSpace() == false) + { + prop.EditorAlias = editorAlias; + } + + if (newAlias.IsNullOrWhiteSpace() == false && currentAlias != newAlias) + { + prop.Alias = newAlias; + ChangeKey(currentAlias, newAlias); + } + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/ObservableDictionary.cs b/src/Umbraco.Core/ObservableDictionary.cs index b665071386..7e988e2b05 100644 --- a/src/Umbraco.Core/ObservableDictionary.cs +++ b/src/Umbraco.Core/ObservableDictionary.cs @@ -135,6 +135,28 @@ namespace Umbraco.Core } + /// + /// Allows us to change the key of an item + /// + /// + /// + public virtual void ChangeKey(TKey currentKey, TKey newKey) + { + if (!Indecies.ContainsKey(currentKey)) + { + throw new InvalidOperationException("No item with the key " + currentKey + "was found in the collection"); + } + if (ContainsKey(newKey)) + { + throw new DuplicateKeyException(newKey.ToString()); + } + + var currentIndex = Indecies[currentKey]; + + Indecies.Remove(currentKey); + Indecies.Add(newKey, currentIndex); + } + internal class DuplicateKeyException : Exception { diff --git a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs index 4fa6215477..c8ffcbe68a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs @@ -165,9 +165,9 @@ namespace Umbraco.Core.Persistence.Repositories Database.Update(dto); - //update the sections if they've changed + //update the properties if they've changed var macro = (Macro)entity; - if (macro.IsPropertyDirty("Properties")) + if (macro.IsPropertyDirty("Properties") || macro.Properties.Any(x => x.IsDirty())) { //now we need to delete any props that have been removed foreach (var propAlias in macro.RemovedProperties) @@ -188,7 +188,11 @@ namespace Umbraco.Core.Persistence.Repositories } else { - Database.Update(propDto); + //only update if it's dirty + if (macro.Properties[propDto.Alias].IsDirty()) + { + Database.Update(propDto); + } } } diff --git a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs index 5907b6c6be..377b9e57e7 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs @@ -364,7 +364,58 @@ namespace Umbraco.Tests.Persistence.Repositories } } + [Test] + public void Can_Update_Property_For_Macro() + { + // Arrange + var provider = new PetaPocoUnitOfWorkProvider(); + var unitOfWork = provider.GetUnitOfWork(); + using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current)) + { + var macro = repository.Get(1); + macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); + repository.AddOrUpdate(macro); + unitOfWork.Commit(); + //Act + macro = repository.Get(1); + macro.Properties["new1"].Name = "this is a new name"; + repository.AddOrUpdate(macro); + unitOfWork.Commit(); + + + // Assert + var result = repository.Get(1); + Assert.AreEqual("new1", result.Properties.First().Alias); + Assert.AreEqual("this is a new name", result.Properties.First().Name); + + } + } + + [Test] + public void Can_Update_Macro_Property_Alias() + { + // Arrange + var provider = new PetaPocoUnitOfWorkProvider(); + var unitOfWork = provider.GetUnitOfWork(); + using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current)) + { + var macro = repository.Get(1); + macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); + repository.AddOrUpdate(macro); + unitOfWork.Commit(); + + //Act + macro = repository.Get(1); + macro.Properties.UpdateProperty("new1", newAlias: "newAlias"); + repository.AddOrUpdate(macro); + unitOfWork.Commit(); + + // Assert + var result = repository.Get(1); + Assert.AreEqual("newAlias", result.Properties.First().Alias); + } + } [TearDown] public override void TearDown() From 420746397dbfdf0976880b9ee95d899c2f5f9fe8 Mon Sep 17 00:00:00 2001 From: Shannon Date: Sat, 17 May 2014 15:35:56 +1000 Subject: [PATCH 89/94] fixes macro property saving issue in editor (to ensure the alias/key can be changed) --- .../umbraco/developer/Macros/editMacro.aspx.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs index a50c2970de..50fb8b912e 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs @@ -322,8 +322,6 @@ namespace umbraco.cms.presentation.developer void Save_Click(object sender, EventArgs e) { - //disable the add validators - macroProperties. Page.Validate(); @@ -351,10 +349,14 @@ namespace umbraco.cms.presentation.developer var macroElementType = (DropDownList)item.FindControl("macroPropertyType"); var prop = _macro.Properties.Single(x => x.Id == int.Parse(macroPropertyId.Value)); - prop.Alias = macroElementAlias.Text.Trim(); - prop.Name = macroElementName.Text.Trim(); - prop.EditorAlias = macroElementType.SelectedValue; - prop.SortOrder = sort; + + _macro.Properties.UpdateProperty( + prop.Alias, + macroElementName.Text.Trim(), + sort, + macroElementType.SelectedValue, + macroElementAlias.Text.Trim()); + sort++; } From 82c1c95e357e4f64df4fd441175997013c077734 Mon Sep 17 00:00:00 2001 From: Stephan Date: Thu, 15 May 2014 22:06:07 +0200 Subject: [PATCH 90/94] Detached PublishedProperty - refactor --- .../PublishedContent/PublishedContentType.cs | 5 ++++ src/Umbraco.Web/Models/DetachedContent.cs | 24 +++++++++++++++---- src/Umbraco.Web/UmbracoHelper.cs | 3 ++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs index 676eb05ef0..a0fa7932b5 100644 --- a/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs +++ b/src/Umbraco.Core/Models/PublishedContent/PublishedContentType.cs @@ -44,6 +44,11 @@ namespace Umbraco.Core.Models.PublishedContent InitializeIndexes(); } + // create detached content type - ie does not match anything in the DB + internal PublishedContentType(string alias, IEnumerable propertyTypes) + : this (0, alias, propertyTypes) + { } + private void InitializeIndexes() { for (var i = 0; i < _propertyTypes.Length; i++) diff --git a/src/Umbraco.Web/Models/DetachedContent.cs b/src/Umbraco.Web/Models/DetachedContent.cs index e572de656c..b00ff67c72 100644 --- a/src/Umbraco.Web/Models/DetachedContent.cs +++ b/src/Umbraco.Web/Models/DetachedContent.cs @@ -10,21 +10,36 @@ namespace Umbraco.Web.Models { private readonly Dictionary _properties; + /// + /// Initialized a new instance of the class with properties. + /// + /// The properties + /// Properties must be detached or nested properties ie their property type must be detached or nested. + /// Such a detached content can be part of a published property value. public DetachedContent(IEnumerable properties) { - _properties = properties.ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); + var propsa = properties.ToArray(); + if (propsa.Any(x => x.PropertyType.IsDetachedOrNested == false)) + throw new ArgumentException("At least one property type is neither detached nor nested.", "properties"); + _properties = propsa.ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); } + // don't uncomment until you know what you are doing + /* public DetachedContent(IPublishedContent content) { _properties = content.Properties.ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); } + */ + // don't uncomment until you know what you are doing + // at the moment, I don't fully + /* public DetachedContent(IContent content, bool isPreviewing) { var publishedContentType = PublishedContentType.Get(PublishedItemType.Content, content.ContentType.Alias); _properties = PublishedProperty.MapProperties(publishedContentType.PropertyTypes, content.Properties, - (t, v) => PublishedProperty.GetDetached(t, v, isPreviewing)) + (t, v) => PublishedProperty.GetDetached(t.Detached(), v, isPreviewing)) .ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); } @@ -32,7 +47,7 @@ namespace Umbraco.Web.Models { var publishedContentType = PublishedContentType.Get(PublishedItemType.Media, media.ContentType.Alias); _properties = PublishedProperty.MapProperties(publishedContentType.PropertyTypes, media.Properties, - (t, v) => PublishedProperty.GetDetached(t, v, isPreviewing)) + (t, v) => PublishedProperty.GetDetached(t.Detached(), v, isPreviewing)) .ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); } @@ -40,9 +55,10 @@ namespace Umbraco.Web.Models { var publishedContentType = PublishedContentType.Get(PublishedItemType.Member, member.ContentType.Alias); _properties = PublishedProperty.MapProperties(publishedContentType.PropertyTypes, member.Properties, - (t, v) => PublishedProperty.GetDetached(t, v, isPreviewing)) + (t, v) => PublishedProperty.GetDetached(t.Detached(), v, isPreviewing)) .ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); } + */ public ICollection Properties { diff --git a/src/Umbraco.Web/UmbracoHelper.cs b/src/Umbraco.Web/UmbracoHelper.cs index bfa57d5ab3..a0cff38414 100644 --- a/src/Umbraco.Web/UmbracoHelper.cs +++ b/src/Umbraco.Web/UmbracoHelper.cs @@ -437,8 +437,9 @@ namespace Umbraco.Web //currently assigned node. The PublishedContentRequest will be null if: // * we are rendering a partial view or child action // * we are rendering a view from a custom route - if (UmbracoContext.PublishedContentRequest == null + if ((UmbracoContext.PublishedContentRequest == null || UmbracoContext.PublishedContentRequest.PublishedContent.Id != currentPage.Id) + && currentPage.Id > 0) // in case we're rendering a detached content (id == 0) { item.NodeId = currentPage.Id.ToString(); } From dacec47cd9413d77b3c41c5ba89fd57741f96366 Mon Sep 17 00:00:00 2001 From: Stephan Date: Sun, 18 May 2014 21:27:41 +0200 Subject: [PATCH 91/94] Fix the build --- src/Umbraco.Web/Models/DetachedContent.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Umbraco.Web/Models/DetachedContent.cs b/src/Umbraco.Web/Models/DetachedContent.cs index b00ff67c72..df4effa078 100644 --- a/src/Umbraco.Web/Models/DetachedContent.cs +++ b/src/Umbraco.Web/Models/DetachedContent.cs @@ -18,10 +18,7 @@ namespace Umbraco.Web.Models /// Such a detached content can be part of a published property value. public DetachedContent(IEnumerable properties) { - var propsa = properties.ToArray(); - if (propsa.Any(x => x.PropertyType.IsDetachedOrNested == false)) - throw new ArgumentException("At least one property type is neither detached nor nested.", "properties"); - _properties = propsa.ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); + _properties = properties.ToDictionary(x => x.PropertyTypeAlias, x => x, StringComparer.InvariantCultureIgnoreCase); } // don't uncomment until you know what you are doing From 2926a79c3ff9278008ce302116f49bed35be7fcb Mon Sep 17 00:00:00 2001 From: Stephan Date: Tue, 20 May 2014 09:24:40 +0200 Subject: [PATCH 92/94] U4-4949 - fix issue with domains --- src/Umbraco.Web/Routing/DomainHelper.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Umbraco.Web/Routing/DomainHelper.cs b/src/Umbraco.Web/Routing/DomainHelper.cs index 9f64b51e04..1efe0eed0d 100644 --- a/src/Umbraco.Web/Routing/DomainHelper.cs +++ b/src/Umbraco.Web/Routing/DomainHelper.cs @@ -159,12 +159,6 @@ namespace Umbraco.Web.Routing .FirstOrDefault(d => d.Uri.EndPathWithSlash().IsBaseOf(currentWithSlash)); if (domainAndUri != null) return domainAndUri; - // look for the first domain that the current url would be the base of - // ie current is www.example.com, look for domain www.example.com/foo/bar - domainAndUri = domainsAndUris - .FirstOrDefault(d => currentWithSlash.IsBaseOf(d.Uri.EndPathWithSlash())); - if (domainAndUri != null) return domainAndUri; - // if none matches, then try to run the filter to pick a domain if (filter != null) { From e62d1559b17ad02e8f9368209fdd3ed483ea21d0 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 19 May 2014 17:20:32 +0200 Subject: [PATCH 93/94] Fix grunt not copying tuning's index.html to Umbraco/preview. Also fixes same issue when using grunt --dev. --- src/Umbraco.Web.UI.Client/gruntFile.js | 5 +++-- src/Umbraco.Web.UI/Umbraco/preview/index.html | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/gruntFile.js b/src/Umbraco.Web.UI.Client/gruntFile.js index 9b786eda52..b94b1ceb21 100644 --- a/src/Umbraco.Web.UI.Client/gruntFile.js +++ b/src/Umbraco.Web.UI.Client/gruntFile.js @@ -11,7 +11,7 @@ module.exports = function (grunt) { grunt.registerTask('watch-html', ['copy:views', 'copy:vs']); grunt.registerTask('watch-packages', ['copy:packages']); grunt.registerTask('watch-installer', ['concat:install', 'concat:installJs', 'copy:installer', 'copy:vs']); - grunt.registerTask('watch-tuning', ['copy:tuning', 'concat:tuningJs', 'concat:tuningLess']); + grunt.registerTask('watch-tuning', ['copy:tuning', 'concat:tuningJs', 'concat:tuningLess', 'copy:vs']); grunt.registerTask('watch-test', ['jshint:dev', 'karma:unit']); //triggered from grunt dev or grunt @@ -170,7 +170,8 @@ module.exports = function (grunt) { { dest: '<%= vsdir %>/assets', src: '**', expand: true, cwd: '<%= distdir %>/assets' }, { dest: '<%= vsdir %>/js', src: '**', expand: true, cwd: '<%= distdir %>/js' }, { dest: '<%= vsdir %>/lib', src: '**', expand: true, cwd: '<%= distdir %>/lib' }, - { dest: '<%= vsdir %>/views', src: '**', expand: true, cwd: '<%= distdir %>/views' } + { dest: '<%= vsdir %>/views', src: '**', expand: true, cwd: '<%= distdir %>/views' }, + { dest: '<%= vsdir %>/preview', src: '**', expand: true, cwd: '<%= distdir %>/preview' } ] }, diff --git a/src/Umbraco.Web.UI/Umbraco/preview/index.html b/src/Umbraco.Web.UI/Umbraco/preview/index.html index 323310bfd5..1464862ce4 100644 --- a/src/Umbraco.Web.UI/Umbraco/preview/index.html +++ b/src/Umbraco.Web.UI/Umbraco/preview/index.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@
    -
    +
    From 90892ce818143bd6a10ebc097c0ae90aaabb1182 Mon Sep 17 00:00:00 2001 From: per ploug Date: Tue, 20 May 2014 12:05:55 +0200 Subject: [PATCH 94/94] adds rootscope access to umb.clientmgr --- .../lib/umbraco/LegacyUmbClientMgr.js | 4 ++++ .../Application/UmbracoClientManager.js | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/lib/umbraco/LegacyUmbClientMgr.js b/src/Umbraco.Web.UI.Client/lib/umbraco/LegacyUmbClientMgr.js index 5db8fc074e..480a638fbc 100644 --- a/src/Umbraco.Web.UI.Client/lib/umbraco/LegacyUmbClientMgr.js +++ b/src/Umbraco.Web.UI.Client/lib/umbraco/LegacyUmbClientMgr.js @@ -335,6 +335,10 @@ Umbraco.Sys.registerNamespace("Umbraco.Application"); this._modal.push(dialog); return dialog; }, + rootScope : function(){ + return getRootScope(); + }, + closeModalWindow: function(rVal) { //get our angular navigation service diff --git a/src/Umbraco.Web.UI/umbraco_client/Application/UmbracoClientManager.js b/src/Umbraco.Web.UI/umbraco_client/Application/UmbracoClientManager.js index 77d615b6fe..09f66190af 100644 --- a/src/Umbraco.Web.UI/umbraco_client/Application/UmbracoClientManager.js +++ b/src/Umbraco.Web.UI/umbraco_client/Application/UmbracoClientManager.js @@ -157,6 +157,18 @@ Umbraco.Sys.registerNamespace("Umbraco.Application"); }, + /** This is used to launch an angular based modal window instead of the legacy window */ + rootScope: function () { + + if (!this.mainWindow().UmbClientMgr) { + throw "An angular modal window can only be launched when the modal is running within the main Umbraco application"; + } + else { + return this.mainWindow().UmbClientMgr.rootScope(); + } + + }, + openModalWindow: function(url, name, showHeader, width, height, top, leftOffset, closeTriggers, onCloseCallback) { //need to create the modal on the top window if the top window has a client manager, if not, create it on the current window

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 literal 1611264 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
AXHh>@<2QYNztwsT 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
%Q0o^gxfhZI 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