From d4166f33e8038de4a3c0430eed901125c5221bc3 Mon Sep 17 00:00:00 2001 From: kjac Date: Wed, 14 May 2014 11:32:54 +0200 Subject: [PATCH 01/94] Correct currentValue for ValueEditor conversion Ensure that the currentValue parameter sent to the fieldset property ValueEditor ConvertEditorToDb() method contains the value that was previously entered (if any) and not the one that was just entered. --- .../Models/ArchetypeFieldsetModel.cs | 4 ++++ .../PropertyEditors/ArcheTypePropertyEditor.cs | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs index eb516e1..d78f541 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs @@ -2,6 +2,7 @@ using System.Linq; using Newtonsoft.Json; using Umbraco.Core; +using System; namespace Archetype.Models { @@ -13,6 +14,9 @@ public class ArchetypeFieldsetModel [JsonProperty("properties")] public IEnumerable Properties; + [JsonProperty("id")] + public Guid Id { get; set; } + public ArchetypeFieldsetModel() { Properties = new List(); diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 9877119..0de4e0e 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -116,19 +116,29 @@ public override object ConvertEditorToDb(ContentPropertyData editorValue, object if (editorValue.Value == null || editorValue.Value.ToString() == "") return string.Empty; - var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(editorValue.Value.ToString(), editorValue.PreValues); + var helper = new ArchetypeHelper(); + // attempt to deserialize the current property value as an Archetype + var currentArchetype = currentValue != null ? helper.DeserializeJsonToArchetype(currentValue.ToString(), editorValue.PreValues) : null; + var archetype = helper.DeserializeJsonToArchetype(editorValue.Value.ToString(), editorValue.PreValues); foreach (var fieldset in archetype.Fieldsets) { + // assign an id to the fieldset if it has none (e.g. newly created fieldset) + fieldset.Id = fieldset.Id == Guid.Empty ? Guid.NewGuid() : fieldset.Id; + // find the corresponding fieldset in the current Archetype value (if any) + var currentFieldset = currentArchetype != null ? currentArchetype.Fieldsets.FirstOrDefault(f => f.Id == fieldset.Id) : null; foreach (var propDef in fieldset.Properties) { try { + // find the corresponding property in the current Archetype value (if any) + var currentProperty = currentFieldset != null ? currentFieldset.Properties.FirstOrDefault(p => p.Alias == propDef.Alias) : null; var dtd = ApplicationContext.Current.Services.DataTypeService.GetDataTypeDefinitionById(Guid.Parse(propDef.DataTypeGuid)); var preValues = ApplicationContext.Current.Services.DataTypeService.GetPreValuesCollectionByDataTypeId(dtd.Id); var propData = new ContentPropertyData(propDef.Value, preValues, new Dictionary()); var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias); - propDef.Value = propEditor.ValueEditor.ConvertEditorToDb(propData, propDef.Value); + // make sure to send the current property value (if any) to the PE ValueEditor + propDef.Value = propEditor.ValueEditor.ConvertEditorToDb(propData, currentProperty != null ? currentProperty.Value : null); } catch (Exception ex) { From a6c166d926732036c9177628de566c433033bad9 Mon Sep 17 00:00:00 2001 From: kjac Date: Sun, 18 May 2014 18:19:20 +0200 Subject: [PATCH 02/94] WIP handle file selection Use FileManager to register the files selected for properties contained within an Archetype --- app/controllers/controller.js | 30 +++++++++++++++++++++++++++++ app/directives/archetypeproperty.js | 5 +++++ 2 files changed, 35 insertions(+) diff --git a/app/controllers/controller.js b/app/controllers/controller.js index b70426a..4392453 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -191,11 +191,39 @@ //developerMode helpers $scope.model.value.toString = stringify; + // TODO: upload-imagecrop-datatypes + $scope.model.value.setFiles = setFiles; + //encapsulate stringify (should be built into browsers, not sure of IE support) function stringify() { return JSON.stringify(this); } + // TODO: upload-imagecrop-datatypes + function setFiles(alias, files) { + // get all currently selected files from file manager + var currentFiles = fileManager.getFiles(); + console.log("currentFiles", currentFiles); + + // remove the files set for this alias + fileManager.setFiles(alias, []); + + // get the files already selected for this archetype (by alias) + var archetypeFiles = []; + _.each(currentFiles, function (item) { + if (item.alias === $scope.model.alias) { + archetypeFiles.push(item.file); + } + }); + // add the newly selected files + _.each(files, function (file) { + archetypeFiles.push(file); + }); + console.log("fileList", archetypeFiles); + // update the selected files for this archetype (by alias)) + fileManager.setFiles($scope.model.alias, archetypeFiles); + } + //watch for changes $scope.$watch('model.value', function (v) { if ($scope.model.config.developerMode) { @@ -205,6 +233,8 @@ $scope.model.value.toString = stringify; } } + // TODO: upload-imagecrop-datatypes + $scope.model.value.setFiles = setFiles; }); //helper to count what is visible diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index 3579bd6..52be414 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -164,6 +164,11 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c } }); + // TODO: upload-imagecrop-datatypes + scope.$on("filesSelected", function (event, args) { + scope.archetypeRenderModel.setFiles(scope.model.alias, args.files); + }); + element.html(data).show(); $compile(element.contents())(scope); From 07a62d7edf7fa40846070a80c89faa0073c9145a Mon Sep 17 00:00:00 2001 From: kjac Date: Tue, 20 May 2014 21:28:29 +0200 Subject: [PATCH 03/94] More file upload handling WIP --- .../Models/ArchetypePropertyModel.cs | 4 +++ .../ArcheTypePropertyEditor.cs | 26 ++++++++++++++- app/controllers/controller.js | 32 ++++++++++++++----- app/directives/archetypeproperty.js | 4 +-- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index cd3b1ff..f33d37d 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -25,6 +25,10 @@ public class ArchetypePropertyModel { [JsonProperty("dataTypeGuid")] internal string DataTypeGuid { get; set; } + // container for the names of any files selected for this property in the Umbraco backend + [JsonProperty("fileNames")] + internal IEnumerable FileNames; + public T GetValue() { diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 0de4e0e..9c9863b 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -12,6 +12,7 @@ using Umbraco.Core.Services; using Umbraco.Web.PropertyEditors; using Umbraco.Core.Logging; +using Umbraco.Web.Models.ContentEditing; namespace Archetype.PropertyEditors { @@ -121,6 +122,9 @@ public override object ConvertEditorToDb(ContentPropertyData editorValue, object var currentArchetype = currentValue != null ? helper.DeserializeJsonToArchetype(currentValue.ToString(), editorValue.PreValues) : null; var archetype = helper.DeserializeJsonToArchetype(editorValue.Value.ToString(), editorValue.PreValues); + // get all files uploaded via the file manager (if any) + var uploadedFiles = editorValue.AdditionalData.ContainsKey("files") ? editorValue.AdditionalData["files"] as IEnumerable : null; + foreach (var fieldset in archetype.Fieldsets) { // assign an id to the fieldset if it has none (e.g. newly created fieldset) @@ -135,7 +139,21 @@ public override object ConvertEditorToDb(ContentPropertyData editorValue, object var currentProperty = currentFieldset != null ? currentFieldset.Properties.FirstOrDefault(p => p.Alias == propDef.Alias) : null; var dtd = ApplicationContext.Current.Services.DataTypeService.GetDataTypeDefinitionById(Guid.Parse(propDef.DataTypeGuid)); var preValues = ApplicationContext.Current.Services.DataTypeService.GetPreValuesCollectionByDataTypeId(dtd.Id); - var propData = new ContentPropertyData(propDef.Value, preValues, new Dictionary()); + + var additionalData = new Dictionary(); + + // figure out if we need to pass a files collection in the additional data to the property value editor + if(uploadedFiles != null && propDef.FileNames != null && propDef.FileNames.Any()) + { + // get the uploaded files that belongs to this property (if any) + var propertyFiles = propDef.FileNames.Select(f => uploadedFiles.FirstOrDefault(u => u.FileName == f)).Where(f => f != null).ToList(); + if(propertyFiles.Any()) + { + additionalData["files"] = propertyFiles; + } + } + + var propData = new ContentPropertyData(propDef.Value, preValues, additionalData); var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias); // make sure to send the current property value (if any) to the PE ValueEditor propDef.Value = propEditor.ValueEditor.ConvertEditorToDb(propData, currentProperty != null ? currentProperty.Value : null); @@ -147,6 +165,12 @@ public override object ConvertEditorToDb(ContentPropertyData editorValue, object } } + // clear the contents of the property files collections before saving to DB + foreach(var property in archetype.Fieldsets.SelectMany(f => f.Properties.Where(p => p.FileNames != null)).ToList()) + { + property.FileNames = null; + } + return archetype.SerializeForPersistence(); } } diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 4392453..ff016fc 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -1,4 +1,4 @@ -angular.module("umbraco").controller("Imulus.ArchetypeController", function ($scope, $http, assetsService, angularHelper, notificationsService, $timeout) { +angular.module("umbraco").controller("Imulus.ArchetypeController", function ($scope, $http, assetsService, angularHelper, notificationsService, $timeout, fileManager) { //$scope.model.value = ""; $scope.model.hideLabel = $scope.model.config.hideLabel == 1; @@ -191,7 +191,7 @@ //developerMode helpers $scope.model.value.toString = stringify; - // TODO: upload-imagecrop-datatypes + // issue 114: register handler for file selection $scope.model.value.setFiles = setFiles; //encapsulate stringify (should be built into browsers, not sure of IE support) @@ -199,13 +199,13 @@ return JSON.stringify(this); } - // TODO: upload-imagecrop-datatypes - function setFiles(alias, files) { + // issue 114: handler for file selection + function setFiles(property, alias, files) { // get all currently selected files from file manager var currentFiles = fileManager.getFiles(); - console.log("currentFiles", currentFiles); - // remove the files set for this alias + // remove the files set for this property alias + // NOTE: we can't use property.alias because the file manager registers the selected files on the assigned Archetype property alias (e.g. "archetype-property-archetype-0-1") fileManager.setFiles(alias, []); // get the files already selected for this archetype (by alias) @@ -215,13 +215,28 @@ archetypeFiles.push(item.file); } }); + + // remove the previously selected files for this property (if any) + //if (property.fileNames != null) { + // console.log("rejecting files", property.alias, property.fileNames); + // archetypeFiles = _.reject(archetypeFiles, function (item) { + // return property.fileNames.indexOf(item.name) != -1; + // }); + //} + // add the newly selected files _.each(files, function (file) { archetypeFiles.push(file); }); - console.log("fileList", archetypeFiles); + // update the selected files for this archetype (by alias)) fileManager.setFiles($scope.model.alias, archetypeFiles); + + // update the property files collection + property.fileNames = []; + _.each(files, function (item) { + property.fileNames.push(item.name); + }); } //watch for changes @@ -233,8 +248,9 @@ $scope.model.value.toString = stringify; } } - // TODO: upload-imagecrop-datatypes + // issue 114: re-register handler for files selection and reset the currently selected files on the file manager $scope.model.value.setFiles = setFiles; + fileManager.setFiles($scope.model.alias, []); }); //helper to count what is visible diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index 52be414..10d0c02 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -164,9 +164,9 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c } }); - // TODO: upload-imagecrop-datatypes + // issue 114: handle file selection on property editors scope.$on("filesSelected", function (event, args) { - scope.archetypeRenderModel.setFiles(scope.model.alias, args.files); + scope.archetypeRenderModel.setFiles(scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties[renderModelPropertyIndex], scope.model.alias, args.files); }); element.html(data).show(); From cd03b5a4f9847a0696ce6ae855a30cdd3a7d9f39 Mon Sep 17 00:00:00 2001 From: kjac Date: Tue, 20 May 2014 22:19:21 +0200 Subject: [PATCH 04/94] Test and fine tune 3rd level nested archetypes --- .../ArcheTypePropertyEditor.cs | 18 ++++++++++---- app/controllers/controller.js | 24 +++---------------- app/directives/archetypeproperty.js | 16 +++++++++++-- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 9c9863b..3fdf121 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -143,13 +143,21 @@ public override object ConvertEditorToDb(ContentPropertyData editorValue, object var additionalData = new Dictionary(); // figure out if we need to pass a files collection in the additional data to the property value editor - if(uploadedFiles != null && propDef.FileNames != null && propDef.FileNames.Any()) + if(uploadedFiles != null) { - // get the uploaded files that belongs to this property (if any) - var propertyFiles = propDef.FileNames.Select(f => uploadedFiles.FirstOrDefault(u => u.FileName == f)).Where(f => f != null).ToList(); - if(propertyFiles.Any()) + if(dtd.PropertyEditorAlias == Constants.PropertyEditorAlias) { - additionalData["files"] = propertyFiles; + // it's a nested Archetype - just pass all uploaded files to the value editor + additionalData["files"] = uploadedFiles.ToList(); + } + else if(propDef.FileNames != null && propDef.FileNames.Any()) + { + // pass the uploaded files that belongs to this property (if any) to the value editor + var propertyFiles = propDef.FileNames.Select(f => uploadedFiles.FirstOrDefault(u => u.FileName == f)).Where(f => f != null).ToList(); + if(propertyFiles.Any()) + { + additionalData["files"] = propertyFiles; + } } } diff --git a/app/controllers/controller.js b/app/controllers/controller.js index ff016fc..9f7f23c 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -200,14 +200,10 @@ } // issue 114: handler for file selection - function setFiles(property, alias, files) { + function setFiles(files) { // get all currently selected files from file manager var currentFiles = fileManager.getFiles(); - - // remove the files set for this property alias - // NOTE: we can't use property.alias because the file manager registers the selected files on the assigned Archetype property alias (e.g. "archetype-property-archetype-0-1") - fileManager.setFiles(alias, []); - + // get the files already selected for this archetype (by alias) var archetypeFiles = []; _.each(currentFiles, function (item) { @@ -216,27 +212,13 @@ } }); - // remove the previously selected files for this property (if any) - //if (property.fileNames != null) { - // console.log("rejecting files", property.alias, property.fileNames); - // archetypeFiles = _.reject(archetypeFiles, function (item) { - // return property.fileNames.indexOf(item.name) != -1; - // }); - //} - // add the newly selected files _.each(files, function (file) { archetypeFiles.push(file); }); - // update the selected files for this archetype (by alias)) + // update the selected files for this archetype (by alias) fileManager.setFiles($scope.model.alias, archetypeFiles); - - // update the property files collection - property.fileNames = []; - _.each(files, function (item) { - property.fileNames.push(item.name); - }); } //watch for changes diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index 10d0c02..e206d38 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -1,4 +1,4 @@ -angular.module("umbraco.directives").directive('archetypeProperty', function ($compile, $http, archetypePropertyEditorResource, umbPropEditorHelper, $timeout, $rootScope, $q) { +angular.module("umbraco.directives").directive('archetypeProperty', function ($compile, $http, archetypePropertyEditorResource, umbPropEditorHelper, $timeout, $rootScope, $q, fileManager) { function getFieldsetByAlias(fieldsets, alias) { @@ -166,7 +166,19 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c // issue 114: handle file selection on property editors scope.$on("filesSelected", function (event, args) { - scope.archetypeRenderModel.setFiles(scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties[renderModelPropertyIndex], scope.model.alias, args.files); + // populate the fileNames collection on the property + var property = scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties[renderModelPropertyIndex]; + property.fileNames = []; + _.each(args.files, function (item) { + property.fileNames.push(item.name); + }); + + // remove the files set for this property + // NOTE: we can't use property.alias because the file manager registers the selected files on the assigned Archetype property alias (e.g. "archetype-property-archetype-property-archetype-property-content-0-2-0-1-0-0") + fileManager.setFiles(scope.model.alias, []); + + // now tell the containing Archetype to pick up the selected files + scope.archetypeRenderModel.setFiles(args.files); }); element.html(data).show(); From 84acd43ccf089fdbf84e6bd32011b559bfab7b3f Mon Sep 17 00:00:00 2001 From: kjac Date: Thu, 29 May 2014 11:14:45 +0200 Subject: [PATCH 05/94] Enrich datatypes with default prevalues Datatypes can have default prevalues, that are not saved as part of the config and thus need to be added when loading the datatype - e.g. the "focalPoint" prevalue for the image cropper datatype. --- .../Api/ArchetypeDataTypeController.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs index a544c3a..742f4d4 100644 --- a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs +++ b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs @@ -8,6 +8,9 @@ using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Mvc; using Umbraco.Web.Editors; +using Umbraco.Core.PropertyEditors; +using Archetype.Extensions; +using Newtonsoft.Json; namespace Archetype.Api { @@ -35,8 +38,32 @@ public object GetByGuid(Guid guid) { throw new HttpResponseException(HttpStatusCode.NotFound); } + var dataTypeDisplay = Mapper.Map(dataType); - return new { selectedEditor = dataTypeDisplay.SelectedEditor, preValues = dataTypeDisplay.PreValues }; + + // enrich the prevalues with any missing default prevalues for the datatype (e.g. image cropper "focalPoint# prevalue) + var preValues = dataTypeDisplay.PreValues.ToList(); + if(string.IsNullOrEmpty(dataType.PropertyEditorAlias) == false) + { + // fetch the default prevalues for the datatype + var propEditor = PropertyEditorResolver.Current.GetByAlias(dataType.PropertyEditorAlias); + if(propEditor != null && propEditor.DefaultPreValues != null && propEditor.DefaultPreValues.Any()) + { + // add any missing prevalues + foreach(var missingPreValue in propEditor.DefaultPreValues.Where(p => preValues.Any(pre => pre.Key == p.Key) == false)) + { + var value = missingPreValue.Value; + // if the prevalue is a JSON object, deserialize it + if(value != null && value.ToString().DetectIsJson()) + { + value = JsonConvert.DeserializeObject(value.ToString()); + } + preValues.Add(new PreValueFieldDisplay { Key = missingPreValue.Key, Value = value }); + } + } + } + + return new { selectedEditor = dataTypeDisplay.SelectedEditor, preValues = preValues }; } } } From 71be453ada851619eb43df1b34838090dd33583f Mon Sep 17 00:00:00 2001 From: kjac Date: Sun, 1 Jun 2014 07:48:47 +0200 Subject: [PATCH 06/94] Move property files collection clean-up Moved the cleaning up of files selected for each property to the SerializeForPersistence() method --- app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs | 5 +++++ .../PropertyEditors/ArcheTypePropertyEditor.cs | 6 ------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs index 1587050..794a0ca 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs @@ -30,6 +30,11 @@ IEnumerator IEnumerable.GetEnumerator() internal string SerializeForPersistence() { + // clear the contents of the property files collections before serializing (it's temporary state data) + foreach(var property in Fieldsets.SelectMany(f => f.Properties.Where(p => p.FileNames != null)).ToList()) + { + property.FileNames = null; + } var json = JObject.Parse(JsonConvert.SerializeObject(this)); var propertiesToRemove = new String[] { "propertyEditorAlias", "dataTypeId", "dataTypeGuid" }; diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 3fdf121..730519e 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -173,12 +173,6 @@ public override object ConvertEditorToDb(ContentPropertyData editorValue, object } } - // clear the contents of the property files collections before saving to DB - foreach(var property in archetype.Fieldsets.SelectMany(f => f.Properties.Where(p => p.FileNames != null)).ToList()) - { - property.FileNames = null; - } - return archetype.SerializeForPersistence(); } } From c60c9e1c5d930683db34660bc67883f443cffaaf Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Mon, 15 Jun 2015 14:48:50 -0400 Subject: [PATCH 07/94] Fix #276 --- app/services/archetypeLabelService.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/services/archetypeLabelService.js b/app/services/archetypeLabelService.js index da5b105..4b2babf 100644 --- a/app/services/archetypeLabelService.js +++ b/app/services/archetypeLabelService.js @@ -152,14 +152,24 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar if (template.length < 1) return fieldsetConfig.label; - var rgx = /{{([^)].*)}}/g; + var rgx = /({{(.*?)}})*/g; var results; var parsedTemplate = template; - while ((results = rgx.exec(template)) !== null) { + var rawMatches = template.match(rgx); + + var matches = []; + + _.each(rawMatches, function(match){ + if(match) { + matches.push(match); + } + }); + + _.each(matches, function (match) { // split the template in case it consists of multiple property aliases and/or functions - var templates = results[0].replace("{{", '').replace("}}", '').split("|"); + var templates = match.replace("{{", '').replace("}}", '').split("|"); var templateLabelValue = ""; for(var i = 0; i < templates.length; i++) { @@ -229,8 +239,9 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar } } - parsedTemplate = parsedTemplate.replace(results[0], templateLabelValue); - } + + parsedTemplate = parsedTemplate.replace(match, templateLabelValue); + }); return parsedTemplate; } From c2986d39a9028e3d10e783e69947dd9bd454dd92 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Mon, 15 Jun 2015 15:46:51 -0400 Subject: [PATCH 08/94] Added coreDropdown to label helpers --- app/services/archetypeCacheService.js | 1 + app/services/archetypeLabelService.js | 28 +++++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/app/services/archetypeCacheService.js b/app/services/archetypeCacheService.js index 05f2bd7..81b6a15 100644 --- a/app/services/archetypeCacheService.js +++ b/app/services/archetypeCacheService.js @@ -3,6 +3,7 @@ angular.module('umbraco.services').factory('archetypeCacheService', function (ar var isEntityLookupLoading = false; var entityCache = []; + var isDatatypeLookupLoading = false; var datatypeCache = []; diff --git a/app/services/archetypeLabelService.js b/app/services/archetypeLabelService.js index 4b2babf..a9f7d97 100644 --- a/app/services/archetypeLabelService.js +++ b/app/services/archetypeLabelService.js @@ -1,11 +1,6 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (archetypeCacheService) { //private - var isEntityLookupLoading = false; - var entityCache = []; - var isDatatypeLookupLoading = false; - var datatypeCache = []; - function executeFunctionByName(functionName, context) { var args = Array.prototype.slice.call(arguments).splice(2); @@ -24,6 +19,7 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar } function getNativeLabel(datatype, value, scope) { + switch (datatype.selectedEditor) { case "Imulus.UrlPicker": return imulusUrlPicker(value, scope, {}); @@ -33,11 +29,27 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar return coreMntp(value, scope, datatype); case "Umbraco.MediaPicker": return coreMediaPicker(value, scope, datatype); + case "Umbraco.DropDown": + return coreDropdown(value, scope, datatype); default: return ""; } } + function coreDropdown(value, scope, args) { + + if(!value) + return ""; + + var labelValue = args.preValues[0].value[value].value; + + if(labelValue) { + return labelValue; + } + + return ""; + } + function coreMntp(value, scope, args) { var ids = value.split(','); var type = "Document"; @@ -219,7 +231,7 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar if(propertyConfig) { var datatype = archetypeCacheService.getDatatypeByGuid(propertyConfig.dataTypeGuid); - + if(datatype) { //try to get built-in label @@ -240,6 +252,10 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar } } + if(!templateLabelValue) { + templateLabelValue = ""; + } + parsedTemplate = parsedTemplate.replace(match, templateLabelValue); }); From 2fb922fd6c4d483035590fc89d10c54e3cd2ec12 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Mon, 15 Jun 2015 15:56:45 -0400 Subject: [PATCH 09/94] Rework dropdown label to check for a value first --- app/services/archetypeLabelService.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/archetypeLabelService.js b/app/services/archetypeLabelService.js index a9f7d97..5ebb6fd 100644 --- a/app/services/archetypeLabelService.js +++ b/app/services/archetypeLabelService.js @@ -41,10 +41,10 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar if(!value) return ""; - var labelValue = args.preValues[0].value[value].value; + var prevalue = args.preValues[0].value[value]; - if(labelValue) { - return labelValue; + if(prevalue) { + return prevalue.value; } return ""; From a2121cd8a742639d21701df8b1b76279847c6b4e Mon Sep 17 00:00:00 2001 From: leekelleher Date: Thu, 18 Jun 2015 12:17:44 +0100 Subject: [PATCH 10/94] Upgraded Courier assemblies. Amended references to Courier constants (seems that there was some restructuring within Courier) --- .../DataResolvers/ArchetypeDataResolver.cs | 14 +++++++------- .../lib/Umbraco.Courier.Core.dll | Bin 308224 -> 320000 bytes .../lib/Umbraco.Courier.DataResolvers.dll | Bin 39936 -> 72192 bytes .../lib/Umbraco.Courier.Providers.dll | Bin 61952 -> 68096 bytes .../Properties/VersionInfo.cs | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/Umbraco/Archetype.Courier/DataResolvers/ArchetypeDataResolver.cs b/app/Umbraco/Archetype.Courier/DataResolvers/ArchetypeDataResolver.cs index 5e0bf02..bacdd26 100644 --- a/app/Umbraco/Archetype.Courier/DataResolvers/ArchetypeDataResolver.cs +++ b/app/Umbraco/Archetype.Courier/DataResolvers/ArchetypeDataResolver.cs @@ -62,7 +62,7 @@ private void AddDataTypeDependencies(DataType item) { foreach (var property in config.Fieldsets.SelectMany(x => x.Properties)) { - item.Dependencies.Add(property.DataTypeGuid.ToString(), ProviderIDCollection.dataTypeItemProviderGuid); + item.Dependencies.Add(property.DataTypeGuid.ToString(), ItemProviderIds.dataTypeItemProviderGuid); } item.Prevalues[0].Value = JsonConvert.SerializeObject(config, Formatting.None); @@ -76,7 +76,7 @@ private void ReplacePropertyDataIds(Item item, ContentProperty propertyData, Dir if (propertyData != null && propertyData.Value != null) { var dataType = ExecutionContext.DatabasePersistence.RetrieveItem(new ItemIdentifier(propertyData.DataType.ToString(), - ProviderIDCollection.dataTypeItemProviderGuid)); + ItemProviderIds.dataTypeItemProviderGuid)); //Fetch the Prevalues for the current Property's DataType (if its an 'Archetype config') var prevalue = dataType.Prevalues.FirstOrDefault(x => x.Alias.ToLowerInvariant().Equals("archetypeconfig")); @@ -94,7 +94,7 @@ private void ReplacePropertyDataIds(Item item, ContentProperty propertyData, Dir if (archetype != null) { // get the `PropertyItemProvider` from the collection. - var propertyItemProvider = ItemProviderCollection.Instance.GetProvider(ProviderIDCollection.propertyDataItemProviderGuid, ExecutionContext); + var propertyItemProvider = ItemProviderCollection.Instance.GetProvider(ItemProviderIds.propertyDataItemProviderGuid, ExecutionContext); foreach (var property in archetype.Fieldsets.SelectMany(x => x.Properties)) { @@ -111,7 +111,7 @@ private void ReplacePropertyDataIds(Item item, ContentProperty propertyData, Dir new ContentProperty { Alias = property.Alias, - DataType = ExecutionContext.DatabasePersistence.GetUniqueId(property.DataTypeId, NodeObjectTypes.DataType), + DataType = ExecutionContext.DatabasePersistence.GetUniqueId(property.DataTypeId, UmbracoNodeObjectTypeIds.DataType), PropertyEditorAlias = property.PropertyEditorAlias, Value = property.Value } @@ -157,7 +157,7 @@ private void ReplacePropertyDataIds(Item item, ContentProperty propertyData, Dir // (if packaging) add a dependency for the property's data-type if (direction == Direction.Packaging) - item.Dependencies.Add(firstDataType.DataType.ToString(), ProviderIDCollection.dataTypeItemProviderGuid); + item.Dependencies.Add(firstDataType.DataType.ToString(), ItemProviderIds.dataTypeItemProviderGuid); } } } @@ -179,7 +179,7 @@ private void RetrieveAdditionalProperties(ref ArchetypePreValue preValue) { var dataType = ExecutionContext.DatabasePersistence.RetrieveItem( new ItemIdentifier(property.DataTypeGuid.ToString(), - ProviderIDCollection.dataTypeItemProviderGuid)); + ItemProviderIds.dataTypeItemProviderGuid)); if (dataType == null) continue; @@ -203,7 +203,7 @@ private void RetrieveAdditionalProperties(ref ArchetypeModel archetype, Archetyp { propertyInst.DataTypeGuid = property.DataTypeGuid.ToString(); propertyInst.DataTypeId = ExecutionContext.DatabasePersistence.GetNodeId( - property.DataTypeGuid, NodeObjectTypes.DataType); + property.DataTypeGuid, UmbracoNodeObjectTypeIds.DataType); propertyInst.PropertyEditorAlias = property.PropertyEditorAlias; } } diff --git a/app/Umbraco/Archetype.Courier/lib/Umbraco.Courier.Core.dll b/app/Umbraco/Archetype.Courier/lib/Umbraco.Courier.Core.dll index 12e35bddcb53f3d6fdbc2478975cc8dbf34fcab1..eecebc20ea0e4eafc5d5ab21004cb51ab7d84c8a 100644 GIT binary patch literal 320000 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

xL5;G7n9*|6N*c2qL<5bT@nVL0xxZ6(_i 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 literal 308224 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 O*9-jr`Ttiq@V^0k9176@ diff --git a/app/Umbraco/Archetype.Courier/lib/Umbraco.Courier.Providers.dll b/app/Umbraco/Archetype.Courier/lib/Umbraco.Courier.Providers.dll index dd276b8ee55d4f7debf73331cf4ad7b24057291f..8313289adb8e7dc6b430cd615bd109b0ff08e70c 100644 GIT binary patch literal 68096 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 z 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 UB$}jh=5_ei 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 Date: Thu, 18 Jun 2015 12:20:02 +0100 Subject: [PATCH 11/94] Added exception to Umbraco log, as VS was complaining about an unused `ex`. --- app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs index bcfdcc6..3879acd 100644 --- a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs +++ b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs @@ -3,6 +3,7 @@ using Archetype.Models; using Newtonsoft.Json; using Umbraco.Core; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; @@ -42,6 +43,7 @@ internal ArchetypeModel DeserializeJsonToArchetype(string sourceJson, PreValueCo } catch (Exception ex) { + LogHelper.Error("DeserializeJsonToArchetype", ex); } return archetype; @@ -66,6 +68,7 @@ internal ArchetypeModel DeserializeJsonToArchetype(string sourceJson, int dataTy } catch (Exception ex) { + LogHelper.Error("DeserializeJsonToArchetype", ex); } return archetype; From 99d570dc97fa5edbfeb3fd2305807dbe0cbbc375 Mon Sep 17 00:00:00 2001 From: kjac Date: Thu, 25 Jun 2015 07:59:16 +0200 Subject: [PATCH 12/94] Handle upload and image cropper clientside --- .../Archetype.Umbraco.csproj | 1 + .../Extensions/PropertyEditorExtensions.cs | 58 +++++++++++++++++++ app/directives/archetypeproperty.js | 2 + 3 files changed, 61 insertions(+) create mode 100644 app/Umbraco/Umbraco.Archetype/Extensions/PropertyEditorExtensions.cs diff --git a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj index 3a97867..d96c351 100644 --- a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj +++ b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj @@ -234,6 +234,7 @@ + diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/PropertyEditorExtensions.cs b/app/Umbraco/Umbraco.Archetype/Extensions/PropertyEditorExtensions.cs new file mode 100644 index 0000000..6ec2946 --- /dev/null +++ b/app/Umbraco/Umbraco.Archetype/Extensions/PropertyEditorExtensions.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; +using Umbraco.Core.PropertyEditors; + +namespace Archetype.Extensions +{ + public static class PropertyEditorExtensions + { + ///

+ /// Formats the default prevalues for a property editor for use within an Archetype clientside context + /// + /// The property editor + /// The formatted default prevalues + public static IDictionary DefaultPreValuesForArchetype(this PropertyEditor propertyEditor) + { + if (propertyEditor.DefaultPreValues == null || propertyEditor.DefaultPreValues.Any() == false) + { + return propertyEditor.DefaultPreValues; + } + var view = propertyEditor.ValueEditor.View.ToLowerInvariant(); + + // This is the extension point for default prevalues formatting, in case we need to handle any other + // property editors later on. It should be replaced with a switch statement by then, or maybe some fancy + // auto discovery of formatters :) + if (view == "imagecropper") + { + propertyEditor.FormatImageCropperDefaultPreValuesForArchetype(); + } + return propertyEditor.DefaultPreValues; + } + + /// + /// Format the default prevalues of the image cropper property editor + /// + /// + /// + /// In order for the image cropper to work clientside, we need to make sure it's default prevalue "focalpoint" is returned + /// as a JSON object and not as the string it's defined as on the image cropper property editor. + /// + private static void FormatImageCropperDefaultPreValuesForArchetype(this PropertyEditor propertyEditor) + { + const string focalPointKey = "focalPoint"; + + if (propertyEditor.DefaultPreValues.ContainsKey(focalPointKey) == false || propertyEditor.DefaultPreValues[focalPointKey] == null) + { + return; + } + var focalPoint = propertyEditor.DefaultPreValues[focalPointKey].ToString(); + if (string.IsNullOrEmpty(focalPoint)) + { + return; + } + // translate the JSON string to a JSON object + propertyEditor.DefaultPreValues[focalPointKey] = JsonConvert.DeserializeObject(focalPoint); + } + } +} \ No newline at end of file diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index 7f275e6..2f73789 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -143,6 +143,8 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c //some items need an alias scope.model.alias = "archetype-property-" + propertyAlias; + //some items also need an id (file upload for example) + scope.model.id = propertyAlias; //watch for changes since there is no two-way binding with the local model.value scope.$watch('model.value', function (newValue, oldValue) { From 16c310f3c6423132dc107f2cf9198ea67df6bfb8 Mon Sep 17 00:00:00 2001 From: kjac Date: Fri, 26 Jun 2015 11:27:54 +0200 Subject: [PATCH 13/94] Ensure correct default prevalues for imagecropper --- .../Umbraco.Archetype/Api/ArchetypeDataTypeController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs index 3a2b806..2d0159f 100644 --- a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs +++ b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs @@ -22,7 +22,7 @@ public IEnumerable GetAllPropertyEditors() { return global::Umbraco.Core.PropertyEditors.PropertyEditorResolver.Current.PropertyEditors - .Select(x => new {defaultPreValues = x.DefaultPreValues, alias = x.Alias, view = x.ValueEditor.View}); + .Select(x => new {defaultPreValues = x.DefaultPreValuesForArchetype(), alias = x.Alias, view = x.ValueEditor.View}); } public object GetAll() From 20155b5ca643813629754835b541d6465aa767c9 Mon Sep 17 00:00:00 2001 From: kjac Date: Fri, 26 Jun 2015 11:30:51 +0200 Subject: [PATCH 14/94] Move filenames collection to temporary editor state container --- .../Umbraco.Archetype/Models/ArchetypeModel.cs | 6 +++--- .../Models/ArchetypePropertyModel.cs | 13 ++++++++++--- .../PropertyEditors/ArcheTypePropertyEditor.cs | 5 ++--- app/controllers/controller.js | 1 - app/directives/archetypeproperty.js | 9 ++++++--- 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs index ea0333d..975015f 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs @@ -30,10 +30,10 @@ IEnumerator IEnumerable.GetEnumerator() public string SerializeForPersistence() { - // clear the contents of the property files collections before serializing (it's temporary state data) - foreach(var property in Fieldsets.SelectMany(f => f.Properties.Where(p => p.FileNames != null)).ToList()) + // clear the editor state before serializing (it's temporary state data) + foreach(var property in Fieldsets.SelectMany(f => f.Properties.Where(p => p.EditorState != null)).ToList()) { - property.FileNames = null; + property.EditorState = null; } var json = JObject.Parse(JsonConvert.SerializeObject(this, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore })); diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index 023ba38..34bac35 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -26,9 +26,9 @@ public class ArchetypePropertyModel [JsonProperty("dataTypeGuid")] internal string DataTypeGuid { get; set; } - // container for the names of any files selected for this property in the Umbraco backend - [JsonProperty("fileNames")] - internal IEnumerable FileNames; + // container for temporary editor state from the Umbraco backend + [JsonProperty("editorState")] + internal UmbracoEditorState EditorState { get; set; } [JsonProperty("hostContentType")] internal PublishedContentType HostContentType { get; set; } @@ -92,5 +92,12 @@ private Attempt TryConvertWithPropertyValueConverters(object value, IEnume return Attempt.Fail(); } + + internal class UmbracoEditorState + { + // container for the names of any files selected for a property in the Umbraco backend + [JsonProperty("fileNames")] + public IEnumerable FileNames; + } } } diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 64e1dee..42c5819 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -90,7 +90,6 @@ public override object ConvertDbToEditor(Property property, PropertyType propert { if(property.Value == null || property.Value.ToString() == "") return string.Empty; - ; var archetype = ArchetypeHelper.Instance.DeserializeJsonToArchetype(property.Value.ToString(), propertyType.DataTypeDefinitionId); @@ -152,10 +151,10 @@ public override object ConvertEditorToDb(ContentPropertyData editorValue, object // it's a nested Archetype - just pass all uploaded files to the value editor additionalData["files"] = uploadedFiles.ToList(); } - else if(propDef.FileNames != null && propDef.FileNames.Any()) + else if (propDef.EditorState != null && propDef.EditorState.FileNames != null && propDef.EditorState.FileNames.Any()) { // pass the uploaded files that belongs to this property (if any) to the value editor - var propertyFiles = propDef.FileNames.Select(f => uploadedFiles.FirstOrDefault(u => u.FileName == f)).Where(f => f != null).ToList(); + var propertyFiles = propDef.EditorState.FileNames.Select(f => uploadedFiles.FirstOrDefault(u => u.FileName == f)).Where(f => f != null).ToList(); if(propertyFiles.Any()) { additionalData["files"] = propertyFiles; diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 47304b4..191ba6a 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -262,7 +262,6 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc // issue 114: handler for file selection function setFiles(files) { - console.log("set files", files) // get all currently selected files from file manager var currentFiles = fileManager.getFiles(); diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index 2f73789..e530591 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -123,6 +123,9 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c scope.renderModel = {}; scope.model.value = archetypeService.getFieldsetProperty(scope).value; + //init the property editor state + archetypeService.getFieldsetProperty(scope).editorState = {}; + //set the config from the prevalues scope.model.config = config; @@ -170,11 +173,11 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c // issue 114: handle file selection on property editors scope.$on("filesSelected", function (event, args) { - // populate the fileNames collection on the property + // populate the fileNames collection on the property editor state var property = archetypeService.getFieldsetProperty(scope); - property.fileNames = []; + property.editorState.fileNames = []; _.each(args.files, function (item) { - property.fileNames.push(item.name); + property.editorState.fileNames.push(item.name); }); // remove the files set for this property From 8eb478697613595f80709287c4a38124b2bbd3ed Mon Sep 17 00:00:00 2001 From: kjac Date: Fri, 26 Jun 2015 14:08:00 +0200 Subject: [PATCH 15/94] Revert API method GetByGuid() to its previous state All default prevalue enrichment is now handled by the API method GetAllPropertyEditors() --- .../Api/ArchetypeDataTypeController.cs | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs index 2d0159f..beb591c 100644 --- a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs +++ b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs @@ -40,30 +40,7 @@ public object GetByGuid(Guid guid) } var dataTypeDisplay = Mapper.Map(dataType); - - // enrich the prevalues with any missing default prevalues for the datatype (e.g. image cropper "focalPoint# prevalue) - var preValues = dataTypeDisplay.PreValues.ToList(); - if(string.IsNullOrEmpty(dataType.PropertyEditorAlias) == false) - { - // fetch the default prevalues for the datatype - var propEditor = PropertyEditorResolver.Current.GetByAlias(dataType.PropertyEditorAlias); - if(propEditor != null && propEditor.DefaultPreValues != null && propEditor.DefaultPreValues.Any()) - { - // add any missing prevalues - foreach(var missingPreValue in propEditor.DefaultPreValues.Where(p => preValues.Any(pre => pre.Key == p.Key) == false)) - { - var value = missingPreValue.Value; - // if the prevalue is a JSON object, deserialize it - if(value != null && value.ToString().DetectIsJson()) - { - value = JsonConvert.DeserializeObject(value.ToString()); - } - preValues.Add(new PreValueFieldDisplay { Key = missingPreValue.Key, Value = value }); - } - } - } - - return new { selectedEditor = dataTypeDisplay.SelectedEditor, preValues = preValues }; + return new { selectedEditor = dataTypeDisplay.SelectedEditor, preValues = dataTypeDisplay.PreValues }; } public object GetByGuid(Guid guid, string contentTypeAlias, string propertyTypeAlias, string archetypeAlias, int nodeId) From d0b8314134213962fd4c224d56ae44475a5e3aeb Mon Sep 17 00:00:00 2001 From: kjac Date: Fri, 26 Jun 2015 14:09:12 +0200 Subject: [PATCH 16/94] Formatting issue --- .../Umbraco.Archetype/Api/ArchetypeDataTypeController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs index beb591c..75d3003 100644 --- a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs +++ b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs @@ -40,7 +40,7 @@ public object GetByGuid(Guid guid) } var dataTypeDisplay = Mapper.Map(dataType); - return new { selectedEditor = dataTypeDisplay.SelectedEditor, preValues = dataTypeDisplay.PreValues }; + return new { selectedEditor = dataTypeDisplay.SelectedEditor, preValues = dataTypeDisplay.PreValues }; } public object GetByGuid(Guid guid, string contentTypeAlias, string propertyTypeAlias, string archetypeAlias, int nodeId) From 662cf4c3bff0a7700eb1bcb299af15f825d24dd9 Mon Sep 17 00:00:00 2001 From: kjac Date: Fri, 26 Jun 2015 14:17:52 +0200 Subject: [PATCH 17/94] More formatting --- .../Models/ArchetypePropertyModel.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index 34bac35..b5b606d 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -26,11 +26,11 @@ public class ArchetypePropertyModel [JsonProperty("dataTypeGuid")] internal string DataTypeGuid { get; set; } - // container for temporary editor state from the Umbraco backend - [JsonProperty("editorState")] - internal UmbracoEditorState EditorState { get; set; } + // container for temporary editor state from the Umbraco backend + [JsonProperty("editorState")] + internal UmbracoEditorState EditorState { get; set; } - [JsonProperty("hostContentType")] + [JsonProperty("hostContentType")] internal PublishedContentType HostContentType { get; set; } public T GetValue() @@ -93,11 +93,11 @@ private Attempt TryConvertWithPropertyValueConverters(object value, IEnume return Attempt.Fail(); } - internal class UmbracoEditorState - { - // container for the names of any files selected for a property in the Umbraco backend - [JsonProperty("fileNames")] - public IEnumerable FileNames; - } + internal class UmbracoEditorState + { + // container for the names of any files selected for a property in the Umbraco backend + [JsonProperty("fileNames")] + public IEnumerable FileNames; + } } } From d62fa05ab5578618b5bc3777d0ea9de1e0c4b770 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 1 Jul 2015 09:25:18 -0400 Subject: [PATCH 18/94] Handle 7.2.6 issue --- app/directives/archetypeproperty.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index e530591..eb7fb11 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -144,6 +144,13 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c } } + //upload datatype hack + if(view.indexOf('fileupload.html') != -1) { + scope.propertyForm = scope.form; + scope.model.validation = {}; + scope.model.validation.mandatory = 0; + } + //some items need an alias scope.model.alias = "archetype-property-" + propertyAlias; //some items also need an id (file upload for example) From cfe014ee459b715c3e4049098217053d90d1dfd4 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 8 Jul 2015 13:26:06 -0400 Subject: [PATCH 19/94] Bump version number --- app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs | 4 ++-- config/meta.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs index 2a6234f..b6cf2cf 100644 --- a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs +++ b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("1.8.1")] -[assembly: AssemblyFileVersion("1.8.1")] +[assembly: AssemblyVersion("1.9")] +[assembly: AssemblyFileVersion("1.9")] diff --git a/config/meta.json b/config/meta.json index 65d5b46..cbc87ce 100644 --- a/config/meta.json +++ b/config/meta.json @@ -1,6 +1,6 @@ { "name": "Archetype", - "version": "1.8", + "version": "1.9", "url": "http://github.com/imulus/archetype/", "author": "Imulus - Kevin Giszewski - Tom Fulton - Lee Kelleher - Matt Brailsford - Kenn Jacobsen - Et. Al.", "authorUrl": "http://imulus.com/", From 697a797c7e98ea420dcd690bf48108054457350b Mon Sep 17 00:00:00 2001 From: Stefan Kip Date: Fri, 14 Aug 2015 14:49:41 +0200 Subject: [PATCH 20/94] Fixes for Virtual Directories #156 --- .../PropertyEditors/ArcheTypePropertyEditor.cs | 8 ++++---- app/controllers/config.controller.js | 2 +- app/controllers/controller.js | 2 +- app/resources/archetypePropertyEditorResource.js | 8 ++++---- app/services/archetypeLocalizationService.js | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 42c5819..063090b 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -16,8 +16,8 @@ namespace Archetype.PropertyEditors { - [PropertyEditorAsset(ClientDependencyType.Javascript, "/App_Plugins/Archetype/js/archetype.js")] - [PropertyEditor(Constants.PropertyEditorAlias, "Archetype", "/App_Plugins/Archetype/views/archetype.html", ValueType = "JSON")] + [PropertyEditorAsset(ClientDependencyType.Javascript, "~/App_Plugins/Archetype/js/archetype.js")] + [PropertyEditor(Constants.PropertyEditorAlias, "Archetype", "~/App_Plugins/Archetype/views/archetype.html", ValueType = "JSON")] public class ArchetypePropertyEditor : PropertyEditor { #region Pre Value Editor @@ -29,7 +29,7 @@ protected override PreValueEditor CreatePreValueEditor() internal class ArchetypePreValueEditor : PreValueEditor { - [PreValueField("archetypeConfig", "Config", "/App_Plugins/Archetype/views/archetype.config.html", + [PreValueField("archetypeConfig", "Config", "~/App_Plugins/Archetype/views/archetype.config.html", Description = "(Required) Describe your Archetype.")] public string Config { get; set; } @@ -187,6 +187,6 @@ internal virtual PropertyEditor GetPropertyEditor(IDataTypeDefinition dtd) } } - #endregion + #endregion } } diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index 11ecd42..ebf2111 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -290,5 +290,5 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio } //archetype css - assetsService.loadCss("/App_Plugins/Archetype/css/archetype.css"); + assetsService.loadCss("../App_Plugins/Archetype/css/archetype.css"); }); diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 191ba6a..09c23d6 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -390,7 +390,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc } //archetype css - assetsService.loadCss("/App_Plugins/Archetype/css/archetype.css"); + assetsService.loadCss("../App_Plugins/Archetype/css/archetype.css"); //custom css if($scope.model.config.customCssPath) diff --git a/app/resources/archetypePropertyEditorResource.js b/app/resources/archetypePropertyEditorResource.js index 9243212..a335fe2 100644 --- a/app/resources/archetypePropertyEditorResource.js +++ b/app/resources/archetypePropertyEditorResource.js @@ -3,24 +3,24 @@ angular.module('umbraco.resources').factory('archetypePropertyEditorResource', f getAllDataTypes: function() { // Hack - grab DataTypes from Tree API, as `dataTypeService.getAll()` isn't implemented yet return umbRequestHelper.resourcePromise( - $http.get("/umbraco/backoffice/ArchetypeApi/ArchetypeDataType/GetAll"), 'Failed to retrieve datatypes from tree service' + $http.get("backoffice/ArchetypeApi/ArchetypeDataType/GetAll"), 'Failed to retrieve datatypes from tree service' ); }, getDataType: function (guid, useDeepDatatypeLookup, contentTypeAlias, propertyTypeAlias, archetypeAlias, nodeId) { if(useDeepDatatypeLookup) { return umbRequestHelper.resourcePromise( - $http.get("/umbraco/backoffice/ArchetypeApi/ArchetypeDataType/GetByGuid?guid=" + guid + "&contentTypeAlias=" + contentTypeAlias + "&propertyTypeAlias=" + propertyTypeAlias + "&archetypeAlias=" + archetypeAlias + "&nodeId=" + nodeId), 'Failed to retrieve datatype' + $http.get("backoffice/ArchetypeApi/ArchetypeDataType/GetByGuid?guid=" + guid + "&contentTypeAlias=" + contentTypeAlias + "&propertyTypeAlias=" + propertyTypeAlias + "&archetypeAlias=" + archetypeAlias + "&nodeId=" + nodeId), 'Failed to retrieve datatype' ); } else { return umbRequestHelper.resourcePromise( - $http.get("/umbraco/backoffice/ArchetypeApi/ArchetypeDataType/GetByGuid?guid=" + guid , { cache: true }), 'Failed to retrieve datatype' + $http.get("backoffice/ArchetypeApi/ArchetypeDataType/GetByGuid?guid=" + guid , { cache: true }), 'Failed to retrieve datatype' ); } }, getPropertyEditorMapping: function(alias) { return umbRequestHelper.resourcePromise( - $http.get("/umbraco/backoffice/ArchetypeApi/ArchetypeDataType/GetAllPropertyEditors", { cache: true }), 'Failed to retrieve datatype mappings' + $http.get("backoffice/ArchetypeApi/ArchetypeDataType/GetAllPropertyEditors", { cache: true }), 'Failed to retrieve datatype mappings' ).then(function (data) { var result = _.find(data, function(d) { return d.alias === alias; diff --git a/app/services/archetypeLocalizationService.js b/app/services/archetypeLocalizationService.js index 56baaae..c0c7a6b 100644 --- a/app/services/archetypeLocalizationService.js +++ b/app/services/archetypeLocalizationService.js @@ -24,7 +24,7 @@ angular.module('umbraco.services').factory('archetypeLocalizationService', funct initLocalizedResources:function () { var deferred = $q.defer(); userService.getCurrentUser().then(function(user){ - $http.get("/App_plugins/Archetype/langs/" + user.locale + ".js", { cache: true }) + $http.get("../App_plugins/Archetype/langs/" + user.locale + ".js", { cache: true }) .then(function(response){ service.resourceFileLoaded = true; service.dictionary = response.data; From a03fe3af32f0f107a6a75b8f536237943736477e Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Mon, 17 Aug 2015 11:47:08 -0400 Subject: [PATCH 21/94] Remove some cruft --- app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs | 1 - .../Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index b5b606d..52a1e6b 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -35,7 +35,6 @@ public class ArchetypePropertyModel public T GetValue() { - // Try Umbraco's PropertyValueConverters var converters = UmbracoContext.Current != null ? PropertyValueConvertersResolver.Current.Converters : Enumerable.Empty(); if (!string.IsNullOrWhiteSpace(this.PropertyEditorAlias) && converters.Any()) diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 42c5819..4a266ba 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -4,7 +4,6 @@ using Archetype.Extensions; using ClientDependency.Core; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Core.Models; From 43a72ed5e58cb4ae4e938bcdb524360948ba3bc1 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Mon, 17 Aug 2015 12:16:38 -0400 Subject: [PATCH 22/94] Use relative paths instead of tilde due to core compatibility issues --- .../PropertyEditors/ArcheTypePropertyEditor.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index f8c7998..728d855 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -15,8 +15,8 @@ namespace Archetype.PropertyEditors { - [PropertyEditorAsset(ClientDependencyType.Javascript, "~/App_Plugins/Archetype/js/archetype.js")] - [PropertyEditor(Constants.PropertyEditorAlias, "Archetype", "~/App_Plugins/Archetype/views/archetype.html", ValueType = "JSON")] + [PropertyEditorAsset(ClientDependencyType.Javascript, "../App_Plugins/Archetype/js/archetype.js")] + [PropertyEditor(Constants.PropertyEditorAlias, "Archetype", "../App_Plugins/Archetype/views/archetype.html", ValueType = "JSON")] public class ArchetypePropertyEditor : PropertyEditor { #region Pre Value Editor @@ -28,7 +28,7 @@ protected override PreValueEditor CreatePreValueEditor() internal class ArchetypePreValueEditor : PreValueEditor { - [PreValueField("archetypeConfig", "Config", "~/App_Plugins/Archetype/views/archetype.config.html", + [PreValueField("archetypeConfig", "Config", "../App_Plugins/Archetype/views/archetype.config.html", Description = "(Required) Describe your Archetype.")] public string Config { get; set; } From f3663055833f5996a3b7daeb845d87cce583bf3c Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Tue, 18 Aug 2015 15:10:37 +0200 Subject: [PATCH 23/94] Overhaul WIP --- app/less/archetype.less | 31 +++++++++++++++++++++---------- app/views/archetype.default.html | 4 ++-- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/app/less/archetype.less b/app/less/archetype.less index bb7d403..315bed0 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -23,19 +23,25 @@ } .icon { - color: #333; + color: #ddd; + padding: 2px; + font-size: 16px; + &:hover { + color: #333; + } } .fieldsetIcon { float: left; - padding-right: 4px; + padding: 0 4px 0 0; + color: #333; + vertical-align: text-bottom; } fieldset { - border: 1px solid #dddddd; + border-bottom: 1px dashed #dddddd; padding: 0; margin-bottom: 5px; - background-color: #f1f1f1; clear: both; display: inline-block; width: 100%; @@ -103,13 +109,13 @@ } .caret { - margin: 8px 1px 0 15px; + margin: 8px 1px 0 2px; position: absolute; &.caret-right { border-bottom: 4px solid transparent; border-top: 4px solid transparent; - border-left: 4px solid #000000; + border-left: 4px solid #ddd; content: ""; margin-top: 6px; } @@ -117,10 +123,10 @@ label { margin-bottom: 0; - margin-left: 38px; + margin-left: 14px; white-space: nowrap; padding: 0; - width: ~"calc(100% - 132px)"; + width: ~"calc(100% - 142px)"; position: absolute; span { display: block; @@ -138,6 +144,12 @@ right: 15px; top: 0; } + + &:hover { + .caret-right { + border-left-color: #333; + } + } } .archetypePropertyError { @@ -157,9 +169,8 @@ .archetypeCollapser { clear: both; height: 100%; - padding-top: 12px; + padding: 12px 0 0 20px; background-color: #fff; - border-top: 1px solid silver; border-radius: 0 0 0 5px; form { diff --git a/app/views/archetype.default.html b/app/views/archetype.default.html index 6f330ed..2a53e1f 100644 --- a/app/views/archetype.default.html +++ b/app/views/archetype.default.html @@ -22,10 +22,10 @@ + - - +
From 451f2773a445bc6d2c6133e329ba2f15a0eb55c8 Mon Sep 17 00:00:00 2001 From: kjac Date: Tue, 18 Aug 2015 17:59:20 +0200 Subject: [PATCH 24/94] Add fieldtype picker ...and removed old dropdowns. Plus a bit more styling. --- app/controllers/controller.js | 53 ++++++++++++++++++++++++++++++++ app/less/archetype.less | 10 ++++-- app/views/archetype.default.html | 39 ++++++++++++----------- 3 files changed, 80 insertions(+), 22 deletions(-) diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 09c23d6..9ac562c 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -15,6 +15,11 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc // store the umbraco property alias to help generate unique IDs. Hopefully there's a better way to get this in the future :) $scope.umbracoHostPropertyAlias = $scope.$parent.$parent.model.alias; + $scope.overlayMenu = { + show: false, + style: {} + }; + init(); //hold references to helper resources @@ -74,6 +79,54 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc }; //handles a fieldset add + $scope.openFieldsetPicker = function ($index, event) { + if ($scope.canAdd() == false) { + return; + } + + $scope.overlayMenu.fieldsets = []; + _.each($scope.model.config.fieldsets, function (fieldset) { + var icon = fieldset.icon; + $scope.overlayMenu.fieldsets.push({ + alias: fieldset.alias, + label: fieldset.label, + icon: (fieldset.icon || "icon-document-dashed-line") // default icon if none is chosen + }); + $scope.overlayMenu.index = $index; + }); + + // sanity check + if ($scope.overlayMenu.fieldsets.length == 0) { + return; + } + if ($scope.overlayMenu.fieldsets.length == 1) { + // only one fieldset type - no need to display the picker + $scope.addRow($scope.overlayMenu.fieldsets[0].alias, $index); + return; + } + + // calculate overlay position + // - yeah... it's jQuery (ungh!) but that's how the Grid does it. + var offset = $(event.target).offset(); + var scrollTop = $(event.target).closest(".umb-panel-body").scrollTop(); + if (offset.top < 400) { + $scope.overlayMenu.style.top = 300 + scrollTop; + } + else { + $scope.overlayMenu.style.top = offset.top - 150 + scrollTop; + } + $scope.overlayMenu.show = true; + }; + + $scope.closeFieldsetPicker = function () { + $scope.overlayMenu.show = false; + }; + + $scope.pickFieldset = function (fieldsetAlias, $index) { + $scope.closeFieldsetPicker(); + $scope.addRow(fieldsetAlias, $index); + }; + $scope.addRow = function (fieldsetAlias, $index) { if ($scope.canAdd()) { if ($scope.model.config.fieldsets) { diff --git a/app/less/archetype.less b/app/less/archetype.less index 315bed0..fc8a9aa 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -70,7 +70,7 @@ min-height: 42px; .label-sub { - padding: 8px 0 4px 0; + padding: 10px 0 4px 0; display: inline-block; &.module-label { width: 100%; @@ -134,7 +134,9 @@ text-overflow: ellipsis; } &.dimmed { - color: #d9d9d9; + i, span { + color: #d9d9d9 !important; + } } } @@ -225,6 +227,10 @@ color: #343434; } } + + .fieldsetPicker .icon { + color: #333; + } } .archetypeEditor, .archetypeConfig { diff --git a/app/views/archetype.default.html b/app/views/archetype.default.html index 2a53e1f..72d021d 100644 --- a/app/views/archetype.default.html +++ b/app/views/archetype.default.html @@ -13,18 +13,10 @@
@@ -49,17 +41,24 @@ +
+
+
+ Add an item +
+ +
From ec8df1d4659934e484eb368a610277cab73952d6 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Tue, 18 Aug 2015 13:03:11 -0400 Subject: [PATCH 25/94] Housekeeping --- app/controllers/config.controller.js | 2 +- app/controllers/controller.js | 4 ++ app/directives/archetypeproperty.js | 80 ++++++++-------------------- app/services/archetypeService.js | 34 +++++++++++- 4 files changed, 61 insertions(+), 59 deletions(-) diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index ebf2111..2eae9bd 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -104,7 +104,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio //ini the properties _.each($scope.archetypeConfigRenderModel.fieldsets, function(fieldset){ - $scope.focusProperty(fieldset.properties); + $scope.focusProperty(fieldset.properties); }); //setup JSON.stringify helpers diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 09c23d6..924e90e 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -88,9 +88,13 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc $scope.model.value.fieldsets.push(newFieldset); } } + $scope.setDirty(); + $scope.$broadcast("archetypeAddFieldset", {index: $index, visible: countVisible()}); + newFieldset.collapse = $scope.model.config.enableCollapsing ? true : false; + $scope.focusFieldset(newFieldset); } } diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index eb7fb11..58430f3 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -40,64 +40,12 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c var mergedConfig = _.extend(defaultConfigObj, config); - loadView(pathToView, mergedConfig, defaultValue, alias, propertyAlias, scope, element, ngModelCtrl, propertyValueChanged); + loadView(pathToView, mergedConfig, defaultValue, alias, propertyAlias, scope, element, ngModelCtrl, configFieldsetModel); }); }); - - scope.$on("archetypeFormSubmitting", function (ev, args) { - // validate all fieldset properties - _.each(scope.fieldset.properties, function (property) { - validateProperty(scope.fieldset, property); - }); - - var validationKey = "validation-f" + scope.fieldsetIndex; - ngModelCtrl.$setValidity(validationKey, scope.fieldset.isValid); - }); - - scope.$on("archetypeRemoveFieldset", function (ev, args) { - var validationKey = "validation-f" + args.index; - ngModelCtrl.$setValidity(validationKey, true); - }); - - - // called when the value of any property in a fieldset changes - function propertyValueChanged(fieldset, property) { - // it's the Umbraco way to hide the invalid state when altering an invalid property, even if the new value isn't valid either - property.isValid = true; - setFieldsetValidity(fieldset); - } - - // validate a property in a fieldset - function validateProperty(fieldset, property) { - var propertyConfig = archetypeService.getPropertyByAlias(configFieldsetModel, property.alias); - if (propertyConfig) { - // use property.value !== property.value to check for NaN values on numeric inputs - if (propertyConfig.required && (property.value == null || property.value === "" || property.value !== property.value)) { - property.isValid = false; - } - // issue 116: RegEx validate property value - // Only validate the property value if anything has been entered - RegEx is considered a supplement to "required". - if (property.isValid == true && propertyConfig.regEx && property.value) { - var regEx = new RegExp(propertyConfig.regEx); - if (regEx.test(property.value) == false) { - property.isValid = false; - } - } - } - - setFieldsetValidity(fieldset); - } - - function setFieldsetValidity(fieldset) { - // mark the entire fieldset as invalid if there are any invalid properties in the fieldset, otherwise mark it as valid - fieldset.isValid = - _.find(fieldset.properties, function (property) { - return property.isValid == false - }) == null; - } } - function loadView(view, config, defaultValue, alias, propertyAlias, scope, element, ngModelCtrl, propertyValueChanged) { + function loadView(view, config, defaultValue, alias, propertyAlias, scope, element, ngModelCtrl, configFieldsetModel) { if (view) { $http.get(view, { cache: true }).success(function (data) { @@ -120,6 +68,7 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c archetypeService.getFieldset(scope).properties.push(JSON.parse('{"alias": "' + alias + '", "value": "' + defaultValue + '"}')); scope.renderModelPropertyIndex = archetypeService.getPropertyIndexByAlias(archetypeService.getFieldset(scope).properties, alias); } + scope.renderModel = {}; scope.model.value = archetypeService.getFieldsetProperty(scope).value; @@ -158,13 +107,23 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c //watch for changes since there is no two-way binding with the local model.value scope.$watch('model.value', function (newValue, oldValue) { + archetypeService.getFieldsetProperty(scope).value = newValue; // notify the linker that the property value changed - propertyValueChanged(archetypeService.getFieldset(scope), archetypeService.getFieldsetProperty(scope)); + archetypeService.propertyValueChanged(archetypeService.getFieldset(scope), archetypeService.getFieldsetProperty(scope)); }); scope.$on('archetypeFormSubmitting', function (ev, args) { + // validate all fieldset properties + _.each(scope.fieldset.properties, function (property) { + archetypeService.validateProperty(scope.fieldset, property, configFieldsetModel); + }); + + var validationKey = "validation-f" + scope.fieldsetIndex; + + ngModelCtrl.$setValidity(validationKey, scope.fieldset.isValid); + // did the value change (if it did, it most likely did so during the "formSubmitting" event) var property = archetypeService.getFieldsetProperty(scope); @@ -174,7 +133,7 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c archetypeService.getFieldsetProperty(scope).value = scope.model.value; // notify the linker that the property value changed - propertyValueChanged(archetypeService.getFieldset(scope), archetypeService.getFieldsetProperty(scope)); + archetypeService.propertyValueChanged(archetypeService.getFieldset(scope), archetypeService.getFieldsetProperty(scope)); } }); @@ -182,7 +141,9 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c scope.$on("filesSelected", function (event, args) { // populate the fileNames collection on the property editor state var property = archetypeService.getFieldsetProperty(scope); + property.editorState.fileNames = []; + _.each(args.files, function (item) { property.editorState.fileNames.push(item.name); }); @@ -195,6 +156,11 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c scope.archetypeRenderModel.setFiles(args.files); }); + scope.$on("archetypeRemoveFieldset", function (ev, args) { + var validationKey = "validation-f" + args.index; + ngModelCtrl.$setValidity(validationKey, true); + }); + element.html(data).show(); $compile(element.contents())(scope); @@ -225,4 +191,4 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c umbracoForm: '=' } } -}); +}); \ No newline at end of file diff --git a/app/services/archetypeService.js b/app/services/archetypeService.js index 083f120..157db3f 100644 --- a/app/services/archetypeService.js +++ b/app/services/archetypeService.js @@ -1,5 +1,4 @@ angular.module('umbraco.services').factory('archetypeService', function () { - //public return { //helper that returns a JS ojbect from 'value' string or the original string @@ -67,6 +66,39 @@ angular.module('umbraco.services').factory('archetypeService', function () { }, getFieldsetProperty: function (scope) { return this.getFieldset(scope).properties[scope.renderModelPropertyIndex]; + }, + setFieldsetValidity: function (fieldset) { + // mark the entire fieldset as invalid if there are any invalid properties in the fieldset, otherwise mark it as valid + fieldset.isValid = + _.find(fieldset.properties, function (property) { + return property.isValid == false + }) == null; + }, + validateProperty: function (fieldset, property, configFieldsetModel) { + var propertyConfig = this.getPropertyByAlias(configFieldsetModel, property.alias); + + if (propertyConfig) { + // use property.value !== property.value to check for NaN values on numeric inputs + if (propertyConfig.required && (property.value == null || property.value === "" || property.value !== property.value)) { + property.isValid = false; + } + // issue 116: RegEx validate property value + // Only validate the property value if anything has been entered - RegEx is considered a supplement to "required". + if (property.isValid == true && propertyConfig.regEx && property.value) { + var regEx = new RegExp(propertyConfig.regEx); + if (regEx.test(property.value) == false) { + property.isValid = false; + } + } + } + + this.setFieldsetValidity(fieldset); + }, + // called when the value of any property in a fieldset changes + propertyValueChanged: function (fieldset, property) { + // it's the Umbraco way to hide the invalid state when altering an invalid property, even if the new value isn't valid either + property.isValid = true; + this.setFieldsetValidity(fieldset); } } }); \ No newline at end of file From 65053232978d009096e81ce9dd3cd70e338d18c8 Mon Sep 17 00:00:00 2001 From: kjac Date: Tue, 18 Aug 2015 19:03:36 +0200 Subject: [PATCH 26/94] Removed obsolete dropdown toggles --- app/views/archetype.default.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/archetype.default.html b/app/views/archetype.default.html index 72d021d..0e2c209 100644 --- a/app/views/archetype.default.html +++ b/app/views/archetype.default.html @@ -13,7 +13,7 @@
- + @@ -42,7 +42,7 @@ From 6919c5a8b4d12174c83a1347193424bd9fc7ac92 Mon Sep 17 00:00:00 2001 From: kjac Date: Tue, 18 Aug 2015 23:09:40 +0200 Subject: [PATCH 27/94] A bit more styling of carets + make empty headers clickable --- app/less/archetype.less | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/less/archetype.less b/app/less/archetype.less index fc8a9aa..8f34dbd 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -72,6 +72,7 @@ .label-sub { padding: 10px 0 4px 0; display: inline-block; + min-height: 20px; /* this makes the header clickable when there's no icon and no text */ &.module-label { width: 100%; } @@ -123,10 +124,10 @@ label { margin-bottom: 0; - margin-left: 14px; + margin-left: 18px; white-space: nowrap; padding: 0; - width: ~"calc(100% - 142px)"; + width: ~"calc(100% - 144px)"; position: absolute; span { display: block; From 0ec0e213a2a4e6baf8972fa35af50c459fd25344 Mon Sep 17 00:00:00 2001 From: kjac Date: Tue, 18 Aug 2015 23:11:44 +0200 Subject: [PATCH 28/94] Make the delete icon red on hover --- app/less/archetype.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/less/archetype.less b/app/less/archetype.less index 8f34dbd..c5e26f7 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -29,6 +29,9 @@ &:hover { color: #333; } + &.icon-delete:hover { + color: #b94a48; + } } .fieldsetIcon { From a7dca9378178379aa121a6a53cf961901ffa96bf Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Wed, 19 Aug 2015 07:35:41 +0200 Subject: [PATCH 29/94] Moved some CSS hover rules to a more appropriate target --- app/less/archetype.less | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/app/less/archetype.less b/app/less/archetype.less index c5e26f7..0cf9f0e 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -73,12 +73,28 @@ min-height: 42px; .label-sub { - padding: 10px 0 4px 0; + padding: 8px 0 8px 0; display: inline-block; min-height: 20px; /* this makes the header clickable when there's no icon and no text */ &.module-label { width: 100%; } + &:hover { + cursor: pointer; + + label { + span { + text-decoration: underline; + } + &:hover { + cursor: pointer; + } + } + + .caret-right { + border-left-color: #333; + } + } } .dropdown-menu { @@ -99,19 +115,6 @@ cursor: default; } - &.enableCollapsing:hover { - cursor: pointer; - - label { - span { - text-decoration: underline; - } - &:hover { - cursor: pointer; - } - } - } - .caret { margin: 8px 1px 0 2px; position: absolute; @@ -152,9 +155,6 @@ } &:hover { - .caret-right { - border-left-color: #333; - } } } From e6732d2a37e3420792aee6932bc90873c47c1a47 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Wed, 19 Aug 2015 11:57:13 +0200 Subject: [PATCH 30/94] Close fieldtype picker when clicked outside it --- Gruntfile.js | 1 + app/directives/archetypeclickoutside.js | 29 +++++++++++++++++++++++++ app/views/archetype.default.html | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 app/directives/archetypeclickoutside.js diff --git a/Gruntfile.js b/Gruntfile.js index 0622f65..679fc20 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -58,6 +58,7 @@ module.exports = function(grunt) { 'app/directives/archetypesubmitwatcher.js', 'app/directives/archetypecustomview.js', 'app/directives/archetypeLocalize.js', + 'app/directives/archetypeclickoutside.js', 'app/services/archetypeLocalizationService.js', 'app/helpers/sampleLabelHelpers.js', 'app/resources/archetypePropertyEditorResource.js', diff --git a/app/directives/archetypeclickoutside.js b/app/directives/archetypeclickoutside.js new file mode 100644 index 0000000..5370deb --- /dev/null +++ b/app/directives/archetypeclickoutside.js @@ -0,0 +1,29 @@ +angular.module("umbraco.directives") + .directive('archetypeClickOutside', function ($timeout, $parse) { + return { + restrict: 'A', + link: function (scope, element, attrs, ctrl) { + var fn = $parse(attrs.archetypeClickOutside); + + // add click event handler (delayed so we don't trigger the callback immediately if this directive itself was triggered by a mouse click) + $timeout(function () { + $(document).on("click", mouseClick); + }, 500); + + function mouseClick(event) { + if($(event.target).closest(element).length > 0) { + return; + } + var callback = function () { + fn(scope, { $event: event }); + }; + scope.$apply(callback); + } + + // unbind event + scope.$on('$destroy', function () { + $(document).off("click", mouseClick); + }); + } + }; + }); \ No newline at end of file diff --git a/app/views/archetype.default.html b/app/views/archetype.default.html index 0e2c209..2000b45 100644 --- a/app/views/archetype.default.html +++ b/app/views/archetype.default.html @@ -47,7 +47,7 @@
-
+
Add an item
From 2aa71e48a398e3d0d2cfd8b533bbe7d77eecfa3d Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Wed, 19 Aug 2015 11:57:39 +0200 Subject: [PATCH 31/94] Prettify the "default add" button a little --- app/less/archetype.less | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/app/less/archetype.less b/app/less/archetype.less index 0cf9f0e..225796f 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -208,13 +208,25 @@ border: 1px solid #b94a48; } - .archetypeAddButton:hover { - text-decoration: none; - cursor: pointer; + .archetypeAddButton { + color: #ddd; + .icon { + vertical-align: text-top; + } + &:hover { + color: #333; + text-decoration: none; + cursor: pointer; + + .archetypeAddButtonText { + text-decoration: underline; + } - .archetypeAddButtonText { - text-decoration: underline; + .icon { + color: #333; + } } + } .multiPropertyTextbox { From 6d9c32e30d98b5c13a01a345dc8319a4465f3552 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Wed, 19 Aug 2015 12:40:44 +0200 Subject: [PATCH 32/94] Localization --- app/langs/da-dk.js | 1 + app/langs/da.js | 1 + app/langs/de-de.js | 1 + app/langs/de.js | 1 + app/langs/en-gb.js | 1 + app/langs/en-us.js | 1 + app/langs/en.js | 1 + app/langs/es-es.js | 1 + app/langs/es.js | 1 + app/langs/fr-fr.js | 1 + app/langs/he-il.js | 1 + app/langs/it-it.js | 1 + app/langs/ja-jp.js | 1 + app/langs/ko-kr.js | 1 + app/langs/nb-no.js | 1 + app/langs/nl-nl.js | 1 + app/langs/pl-pl.js | 1 + app/langs/pt-br.js | 1 + app/langs/ru-ru.js | 1 + app/langs/sv-se.js | 1 + app/langs/zh-cn.js | 1 + 21 files changed, 21 insertions(+) diff --git a/app/langs/da-dk.js b/app/langs/da-dk.js index 88306a5..9c686e4 100644 --- a/app/langs/da-dk.js +++ b/app/langs/da-dk.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Tilføj et element", "hideFieldsetControls": "Skjul fieldsets?", "hideFieldsetControlsDescription": "Skjuler kontrollerne tilføj/fjern/sortér.", "toggleAdvanced": "Slå avancerede muligheder til/fra", diff --git a/app/langs/da.js b/app/langs/da.js index 88306a5..9c686e4 100644 --- a/app/langs/da.js +++ b/app/langs/da.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Tilføj et element", "hideFieldsetControls": "Skjul fieldsets?", "hideFieldsetControlsDescription": "Skjuler kontrollerne tilføj/fjern/sortér.", "toggleAdvanced": "Slå avancerede muligheder til/fra", diff --git a/app/langs/de-de.js b/app/langs/de-de.js index 6dc9bfc..fc06d93 100644 --- a/app/langs/de-de.js +++ b/app/langs/de-de.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/de.js b/app/langs/de.js index 6dc9bfc..fc06d93 100644 --- a/app/langs/de.js +++ b/app/langs/de.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/en-gb.js b/app/langs/en-gb.js index dff4043..61f2847 100644 --- a/app/langs/en-gb.js +++ b/app/langs/en-gb.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/en-us.js b/app/langs/en-us.js index 6dc9bfc..fc06d93 100644 --- a/app/langs/en-us.js +++ b/app/langs/en-us.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/en.js b/app/langs/en.js index 6dc9bfc..fc06d93 100644 --- a/app/langs/en.js +++ b/app/langs/en.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/es-es.js b/app/langs/es-es.js index 7ec819e..3197b47 100644 --- a/app/langs/es-es.js +++ b/app/langs/es-es.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/es.js b/app/langs/es.js index 7ec819e..3197b47 100644 --- a/app/langs/es.js +++ b/app/langs/es.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/fr-fr.js b/app/langs/fr-fr.js index 7ec819e..3197b47 100644 --- a/app/langs/fr-fr.js +++ b/app/langs/fr-fr.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/he-il.js b/app/langs/he-il.js index 7ec819e..3197b47 100644 --- a/app/langs/he-il.js +++ b/app/langs/he-il.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/it-it.js b/app/langs/it-it.js index 7ec819e..3197b47 100644 --- a/app/langs/it-it.js +++ b/app/langs/it-it.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/ja-jp.js b/app/langs/ja-jp.js index 7ec819e..3197b47 100644 --- a/app/langs/ja-jp.js +++ b/app/langs/ja-jp.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/ko-kr.js b/app/langs/ko-kr.js index 7ec819e..3197b47 100644 --- a/app/langs/ko-kr.js +++ b/app/langs/ko-kr.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/nb-no.js b/app/langs/nb-no.js index 7ec819e..3197b47 100644 --- a/app/langs/nb-no.js +++ b/app/langs/nb-no.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/nl-nl.js b/app/langs/nl-nl.js index 7ec819e..3197b47 100644 --- a/app/langs/nl-nl.js +++ b/app/langs/nl-nl.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/pl-pl.js b/app/langs/pl-pl.js index 7ec819e..3197b47 100644 --- a/app/langs/pl-pl.js +++ b/app/langs/pl-pl.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/pt-br.js b/app/langs/pt-br.js index 7ec819e..3197b47 100644 --- a/app/langs/pt-br.js +++ b/app/langs/pt-br.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/ru-ru.js b/app/langs/ru-ru.js index 7ec819e..3197b47 100644 --- a/app/langs/ru-ru.js +++ b/app/langs/ru-ru.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/sv-se.js b/app/langs/sv-se.js index 7ec819e..3197b47 100644 --- a/app/langs/sv-se.js +++ b/app/langs/sv-se.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", diff --git a/app/langs/zh-cn.js b/app/langs/zh-cn.js index 7ec819e..3197b47 100644 --- a/app/langs/zh-cn.js +++ b/app/langs/zh-cn.js @@ -1,6 +1,7 @@ { "label": "Label", "alias": "Alias", + "addFieldset": "Add an item", "hideFieldsetControls": "Hide Fieldset Controls?", "hideFieldsetControlsDescription": "Hides the fieldset add/remove/sort controls.", "toggleAdvanced": "Toggle Advanced Options", From f40e023420e65bcc366de1a0becdf4d2e30b3976 Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 19 Aug 2015 13:02:55 +0200 Subject: [PATCH 33/94] Changed the way tags are stripped from tinymce content See stackoverflow for a reference --- app/services/archetypeLabelService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/archetypeLabelService.js b/app/services/archetypeLabelService.js index 5ebb6fd..91f8b72 100644 --- a/app/services/archetypeLabelService.js +++ b/app/services/archetypeLabelService.js @@ -140,7 +140,7 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar } var suffix = ""; - var strippedText = $(value).text(); + var strippedText = $("
").html(value).text(); if(strippedText.length > args.contentLength) { suffix = "…"; From 5c95f592198dbacbad99b368d6aae49aafa3fe72 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 19 Aug 2015 09:04:41 -0400 Subject: [PATCH 34/94] Bump version number --- app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs | 4 ++-- config/meta.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs index b6cf2cf..ebab8fa 100644 --- a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs +++ b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("1.9")] -[assembly: AssemblyFileVersion("1.9")] +[assembly: AssemblyVersion("1.10")] +[assembly: AssemblyFileVersion("1.10-ui-rc1")] diff --git a/config/meta.json b/config/meta.json index cbc87ce..6fdb34f 100644 --- a/config/meta.json +++ b/config/meta.json @@ -1,6 +1,6 @@ { "name": "Archetype", - "version": "1.9", + "version": "1.10-ui-rc1", "url": "http://github.com/imulus/archetype/", "author": "Imulus - Kevin Giszewski - Tom Fulton - Lee Kelleher - Matt Brailsford - Kenn Jacobsen - Et. Al.", "authorUrl": "http://imulus.com/", From 8e11a33031daa9ebcf5d64676d03386a4e962559 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Wed, 19 Aug 2015 15:22:53 +0200 Subject: [PATCH 35/94] Make sure fieldset names are not cropped --- app/less/archetype.less | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/less/archetype.less b/app/less/archetype.less index 225796f..f30f6a1 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -244,8 +244,14 @@ } } - .fieldsetPicker .icon { - color: #333; + .fieldsetPicker { + .icon { + color: #333; + } + ul.elements li { + overflow: visible; + vertical-align: top; + } } } From 1e9c7d0a6c87665ca5d82b1dbb5ead1435082a98 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Tue, 25 Aug 2015 12:59:26 -0400 Subject: [PATCH 36/94] Final tweaks to css and version numbers --- app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs | 2 +- app/less/archetype.less | 9 ++++++++- config/meta.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs index ebab8fa..c3f9401 100644 --- a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs +++ b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; [assembly: AssemblyVersion("1.10")] -[assembly: AssemblyFileVersion("1.10-ui-rc1")] +[assembly: AssemblyFileVersion("1.10")] diff --git a/app/less/archetype.less b/app/less/archetype.less index f30f6a1..f1428e3 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -3,6 +3,12 @@ .archetypeEditor { width: 98%; + .usky-grid { + .cell-tools-menu { + height: 385px; + } + } + .open { position: relative; } @@ -250,7 +256,8 @@ } ul.elements li { overflow: visible; - vertical-align: top; + vertical-align: top; + height: 90px; } } } diff --git a/config/meta.json b/config/meta.json index 6fdb34f..a5ebfb1 100644 --- a/config/meta.json +++ b/config/meta.json @@ -1,6 +1,6 @@ { "name": "Archetype", - "version": "1.10-ui-rc1", + "version": "1.10", "url": "http://github.com/imulus/archetype/", "author": "Imulus - Kevin Giszewski - Tom Fulton - Lee Kelleher - Matt Brailsford - Kenn Jacobsen - Et. Al.", "authorUrl": "http://imulus.com/", From e01c50f08a8dd3c1022cf9a2bb8d737ed843b4a1 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 2 Sep 2015 09:46:22 -0400 Subject: [PATCH 37/94] Fix #289 --- app/controllers/controller.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 84a460d..5458bb8 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -74,6 +74,10 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc draggedRteSettings[textareaId] = draggedRteSettings[textareaId] || _.findWhere(tinyMCE.editors, { id: textareaId }).settings; tinyMCE.execCommand('mceRemoveEditor', false, wrapperId); tinyMCE.init(draggedRteSettings[textareaId]); + + $element.siblings(rteClass).each(function() { + $(this).remove(); + }); }); } }; From d5fd59b954ecff7125b5111c4f19fa74328301b4 Mon Sep 17 00:00:00 2001 From: Tom Fulton Date: Mon, 28 Sep 2015 23:26:07 -0600 Subject: [PATCH 38/94] Remove editorState from model before persisting --- app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs index 975015f..9e3c512 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs @@ -30,15 +30,9 @@ IEnumerator IEnumerable.GetEnumerator() public string SerializeForPersistence() { - // clear the editor state before serializing (it's temporary state data) - foreach(var property in Fieldsets.SelectMany(f => f.Properties.Where(p => p.EditorState != null)).ToList()) - { - property.EditorState = null; - } - var json = JObject.Parse(JsonConvert.SerializeObject(this, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore })); - var propertiesToRemove = new String[] { "propertyEditorAlias", "dataTypeId", "dataTypeGuid", "hostContentType" }; + var propertiesToRemove = new String[] { "propertyEditorAlias", "dataTypeId", "dataTypeGuid", "hostContentType", "editorState" }; json.Descendants().OfType() .Where(p => propertiesToRemove.Contains(p.Name)) From 3904b6527e3f3431511f2bf40f597d5558df3e15 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Fri, 2 Oct 2015 13:40:09 +0200 Subject: [PATCH 39/94] Fix editor dragging once again --- app/controllers/controller.js | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 5458bb8..ffff1ae 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -41,7 +41,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc } var draggedRteSettings; - var rteClass = ".mce-tinymce"; + var rteClass = ".umb-rte textarea"; //sort config $scope.sortableOptions = { @@ -50,34 +50,22 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc handle: ".handle", start: function(ev, ui) { draggedRteSettings = {}; - ui.item.parent().find(rteClass).each(function () { - // remove all RTEs in the dragged row and save their settings - var $element = $(this); - var wrapperId = $element.attr('id'); - var $textarea = $element.siblings('textarea'); - var textareaId = $textarea.attr('id'); - - draggedRteSettings[textareaId] = _.findWhere(tinyMCE.editors, { id: textareaId }).settings; - tinyMCE.execCommand('mceRemoveEditor', false, wrapperId); + $(rteClass, ui.item.parent()).each(function () { + var id = $(this).attr("id"); + draggedRteSettings[id] = _.findWhere(tinyMCE.editors, { id: id }).settings; + tinymce.execCommand('mceRemoveEditor', false, id); + $(this).css("visibility", "hidden"); }); }, update: function (ev, ui) { $scope.setDirty(); }, stop: function (ev, ui) { - ui.item.parent().find(rteClass).each(function () { - var $element = $(this); - var wrapperId = $element.attr('id'); - var $textarea = $element.siblings('textarea'); - var textareaId = $textarea.attr('id'); - - draggedRteSettings[textareaId] = draggedRteSettings[textareaId] || _.findWhere(tinyMCE.editors, { id: textareaId }).settings; - tinyMCE.execCommand('mceRemoveEditor', false, wrapperId); - tinyMCE.init(draggedRteSettings[textareaId]); - - $element.siblings(rteClass).each(function() { - $(this).remove(); - }); + $(rteClass, ui.item.parent()).each(function () { + var id = $(this).attr("id"); + draggedRteSettings[id] = draggedRteSettings[id] || _.findWhere(tinyMCE.editors, { id: id }).settings; + tinyMCE.execCommand("mceRemoveEditor", false, id); + tinyMCE.init(draggedRteSettings[id]); }); } }; From 275b5d22076a457a28102d582c882fed27dd92da Mon Sep 17 00:00:00 2001 From: kjac Date: Sun, 4 Oct 2015 21:39:50 +0200 Subject: [PATCH 40/94] Introduce fieldset groups --- .../Archetype.Umbraco.csproj | 1 + .../Models/ArchetypePreValue.cs | 3 ++ .../Models/ArchetypePreValueFieldset.cs | 3 ++ .../Models/ArchetypePreValueFieldsetGroup.cs | 10 +++++ app/controllers/config.controller.js | 26 +++++++++-- app/controllers/controller.js | 29 +++++++++---- app/langs/da-dk.js | 6 ++- app/langs/da.js | 6 ++- app/langs/de-de.js | 6 ++- app/langs/de.js | 6 ++- app/langs/en-gb.js | 6 ++- app/langs/en-us.js | 6 ++- app/langs/en.js | 6 ++- app/langs/es-es.js | 6 ++- app/langs/es.js | 6 ++- app/langs/fr-fr.js | 6 ++- app/langs/he-il.js | 6 ++- app/langs/it-it.js | 6 ++- app/langs/ja-jp.js | 6 ++- app/langs/ko-kr.js | 6 ++- app/langs/nb-no.js | 6 ++- app/langs/nl-nl.js | 6 ++- app/langs/pl-pl.js | 6 ++- app/langs/pt-br.js | 6 ++- app/langs/ru-ru.js | 6 ++- app/langs/sv-se.js | 6 ++- app/langs/zh-cn.js | 6 ++- app/less/archetype.less | 43 ++++++++++++++++++- app/views/archetype.config.html | 20 +++++++++ app/views/archetype.default.html | 11 ++++- 30 files changed, 236 insertions(+), 36 deletions(-) create mode 100644 app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldsetGroup.cs diff --git a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj index d96c351..0a7417f 100644 --- a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj +++ b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj @@ -239,6 +239,7 @@ + diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs index fa8bd12..cbf4937 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs @@ -38,6 +38,9 @@ public class ArchetypePreValue [JsonProperty("fieldsets")] public IEnumerable Fieldsets { get; set; } + [JsonProperty("fieldsetGroups")] + public IEnumerable FieldsetGroups { get; set; } + [JsonProperty("hidePropertyLabels")] public bool HidePropertyLabels { get; set; } diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldset.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldset.cs index b65683b..0bfd3c8 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldset.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldset.cs @@ -25,5 +25,8 @@ public class ArchetypePreValueFieldset [JsonProperty("properties")] public IEnumerable Properties { get; set; } + + [JsonProperty("group")] + public ArchetypePreValueFieldsetGroup Group { get; set; } } } diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldsetGroup.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldsetGroup.cs new file mode 100644 index 0000000..e62e69c --- /dev/null +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueFieldsetGroup.cs @@ -0,0 +1,10 @@ +using Newtonsoft.Json; + +namespace Archetype.Models +{ + public class ArchetypePreValueFieldsetGroup + { + [JsonProperty("name")] + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index 2eae9bd..00d5826 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -5,8 +5,8 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio //define empty items var newPropertyModel = '{"alias": "", "remove": false, "collapse": false, "label": "", "helpText": "", "dataTypeGuid": "0cc0eba1-9960-42c9-bf9b-60e150b429ae", "value": ""}'; - var newFieldsetModel = '{"alias": "", "remove": false, "collapse": false, "labelTemplate": "", "icon": "", "label": "", "properties": [' + newPropertyModel + ']}'; - var defaultFieldsetConfigModel = JSON.parse('{"showAdvancedOptions": false, "startWithAddButton": false, "hideFieldsetToolbar": false, "enableMultipleFieldsets": false, "hideFieldsetControls": false, "hidePropertyLabel": false, "maxFieldsets": null, "enableCollapsing": true, "enableCloning": false, "enableDisabling": true, "enableDeepDatatypeRequests": false, "fieldsets": [' + newFieldsetModel + ']}'); + var newFieldsetModel = '{"alias": "", "remove": false, "collapse": false, "labelTemplate": "", "icon": "", "label": "", "properties": [' + newPropertyModel + '], "group": null}'; + var defaultFieldsetConfigModel = JSON.parse('{"showAdvancedOptions": false, "startWithAddButton": false, "hideFieldsetToolbar": false, "enableMultipleFieldsets": false, "hideFieldsetControls": false, "hidePropertyLabel": false, "maxFieldsets": null, "enableCollapsing": true, "enableCloning": false, "enableDisabling": true, "enableDeepDatatypeRequests": false, "fieldsets": [' + newFieldsetModel + '], "fieldsetGroups": []}'); //ini the model $scope.model.value = $scope.model.value || defaultFieldsetConfigModel; @@ -234,12 +234,32 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio } } + //handles a fieldset group add + $scope.addFieldsetGroup = function () { + $scope.archetypeConfigRenderModel.fieldsetGroups.push({ name: "" }); + } + + //handles a fieldset group removal + $scope.removeFieldsetGroup = function ($index) { + $scope.archetypeConfigRenderModel.fieldsetGroups.splice($index, 1); + } + //helper to ini the render model function initConfigRenderModel() { $scope.archetypeConfigRenderModel = $scope.model.value; + if (!$scope.archetypeConfigRenderModel.fieldsetGroups) { + $scope.archetypeConfigRenderModel.fieldsetGroups = []; + } - _.each($scope.archetypeConfigRenderModel.fieldsets, function(fieldset){ + _.each($scope.archetypeConfigRenderModel.fieldsets, function(fieldset) { + + if (fieldset.group) { + // tie the fieldset group back up to the actual group object, not the clone that's been persisted + fieldset.group = _.find($scope.archetypeConfigRenderModel.fieldsetGroups, function(fieldsetGroup) { + return fieldsetGroup.name == fieldset.group.name; + }) + } fieldset.remove = false; if (fieldset.alias.length > 0) diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 5458bb8..79ef6e3 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -1,4 +1,4 @@ -angular.module("umbraco").controller("Imulus.ArchetypeController", function ($scope, $http, assetsService, angularHelper, notificationsService, $timeout, fileManager, entityResource, archetypeService, archetypeLabelService, archetypeCacheService, archetypePropertyEditorResource) { +angular.module("umbraco").controller("Imulus.ArchetypeController", function ($scope, $http, $filter, assetsService, angularHelper, notificationsService, $timeout, fileManager, entityResource, archetypeService, archetypeLabelService, archetypeCacheService, archetypePropertyEditorResource) { //$scope.model.value = ""; $scope.model.hideLabel = $scope.model.config.hideLabel == 1; @@ -88,27 +88,38 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc return; } - $scope.overlayMenu.fieldsets = []; + var allFieldsets = []; _.each($scope.model.config.fieldsets, function (fieldset) { var icon = fieldset.icon; - $scope.overlayMenu.fieldsets.push({ + allFieldsets.push({ alias: fieldset.alias, label: fieldset.label, - icon: (fieldset.icon || "icon-document-dashed-line") // default icon if none is chosen + icon: (fieldset.icon || "icon-document-dashed-line"), // default icon if none is chosen + group: fieldset.group ? fieldset.group.name : null }); - $scope.overlayMenu.index = $index; }); - // sanity check - if ($scope.overlayMenu.fieldsets.length == 0) { + if (allFieldsets == 0) { return; } - if ($scope.overlayMenu.fieldsets.length == 1) { + if (allFieldsets.length == 1) { // only one fieldset type - no need to display the picker - $scope.addRow($scope.overlayMenu.fieldsets[0].alias, $index); + $scope.addRow(allFieldsets[0].alias, $index); return; } + $scope.overlayMenu.fieldsetGroups = []; + if ($scope.model.config.fieldsetGroups && $scope.model.config.fieldsetGroups.length > 0) { + _.each($scope.model.config.fieldsetGroups, function (fieldsetGroup) { + $scope.overlayMenu.fieldsetGroups.push({ name: fieldsetGroup.name, fieldsets: $filter("filter")(allFieldsets, { group: fieldsetGroup.name }) }); + }) + } + else { + $scope.overlayMenu.fieldsetGroups.push({ name: "", fieldsets: allFieldsets }); + } + $scope.overlayMenu.index = $index; + $scope.overlayMenu.activeFieldsetGroup = $scope.overlayMenu.fieldsetGroups[0]; + // calculate overlay position // - yeah... it's jQuery (ungh!) but that's how the Grid does it. var offset = $(event.target).offset(); diff --git a/app/langs/da-dk.js b/app/langs/da-dk.js index 9c686e4..f439e02 100644 --- a/app/langs/da-dk.js +++ b/app/langs/da-dk.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset-grupper", + "fieldsetGroupsDescription":"Hvis du har mange fieldsets, skal du måske overveje at gruppere dem i fieldset-vælgeren. Når du først har defineret dine grupper her, vil en gruppe-vælger dukke op i fieldset-editoren, og du kan derefter vælge grupper for alle dine fieldsets.", + "fieldsetGroupName":"Navn", + "addFieldsetGroup":"Tilføj gruppe" } diff --git a/app/langs/da.js b/app/langs/da.js index 9c686e4..41e15e6 100644 --- a/app/langs/da.js +++ b/app/langs/da.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset-grupper", + "fieldsetGroupsDescription":"Hvis du har mange fieldsets, skal du måske overveje at gruppere dem i fieldset-vælgeren. Når du først har defineret dine grupper her, vil en gruppe-vælger dukke op i fieldset-editoren, og du kan derefter vælge grupper for alle dine fieldsets.", + "fieldsetGroupName":"Navn", + "addFieldsetGroup":"Tilføj gruppe" } diff --git a/app/langs/de-de.js b/app/langs/de-de.js index fc06d93..8bd0ee0 100644 --- a/app/langs/de-de.js +++ b/app/langs/de-de.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/de.js b/app/langs/de.js index fc06d93..8bd0ee0 100644 --- a/app/langs/de.js +++ b/app/langs/de.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/en-gb.js b/app/langs/en-gb.js index 61f2847..7ca10c9 100644 --- a/app/langs/en-gb.js +++ b/app/langs/en-gb.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/en-us.js b/app/langs/en-us.js index fc06d93..8bd0ee0 100644 --- a/app/langs/en-us.js +++ b/app/langs/en-us.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/en.js b/app/langs/en.js index fc06d93..8bd0ee0 100644 --- a/app/langs/en.js +++ b/app/langs/en.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/es-es.js b/app/langs/es-es.js index 3197b47..8bd0ee0 100644 --- a/app/langs/es-es.js +++ b/app/langs/es-es.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/es.js b/app/langs/es.js index 3197b47..8bd0ee0 100644 --- a/app/langs/es.js +++ b/app/langs/es.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/fr-fr.js b/app/langs/fr-fr.js index 3197b47..8bd0ee0 100644 --- a/app/langs/fr-fr.js +++ b/app/langs/fr-fr.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/he-il.js b/app/langs/he-il.js index 3197b47..8bd0ee0 100644 --- a/app/langs/he-il.js +++ b/app/langs/he-il.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/it-it.js b/app/langs/it-it.js index 3197b47..8bd0ee0 100644 --- a/app/langs/it-it.js +++ b/app/langs/it-it.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/ja-jp.js b/app/langs/ja-jp.js index 3197b47..8bd0ee0 100644 --- a/app/langs/ja-jp.js +++ b/app/langs/ja-jp.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/ko-kr.js b/app/langs/ko-kr.js index 3197b47..8bd0ee0 100644 --- a/app/langs/ko-kr.js +++ b/app/langs/ko-kr.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/nb-no.js b/app/langs/nb-no.js index 3197b47..8bd0ee0 100644 --- a/app/langs/nb-no.js +++ b/app/langs/nb-no.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/nl-nl.js b/app/langs/nl-nl.js index 3197b47..8bd0ee0 100644 --- a/app/langs/nl-nl.js +++ b/app/langs/nl-nl.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/pl-pl.js b/app/langs/pl-pl.js index 3197b47..8bd0ee0 100644 --- a/app/langs/pl-pl.js +++ b/app/langs/pl-pl.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/pt-br.js b/app/langs/pt-br.js index 3197b47..8bd0ee0 100644 --- a/app/langs/pt-br.js +++ b/app/langs/pt-br.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/ru-ru.js b/app/langs/ru-ru.js index 3197b47..8bd0ee0 100644 --- a/app/langs/ru-ru.js +++ b/app/langs/ru-ru.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/sv-se.js b/app/langs/sv-se.js index 3197b47..8bd0ee0 100644 --- a/app/langs/sv-se.js +++ b/app/langs/sv-se.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/langs/zh-cn.js b/app/langs/zh-cn.js index 3197b47..8bd0ee0 100644 --- a/app/langs/zh-cn.js +++ b/app/langs/zh-cn.js @@ -40,5 +40,9 @@ "overrideDefaultConverterDescription":"Check this if you wish to use your own custom property value converter.", "overrideDefaultConverter":"Override Default Property Value Converter?", "enableCloning":"Enable Cloning?", - "enableCloningDescription":"Enable Fieldset Cloning." + "enableCloningDescription":"Enable Fieldset Cloning.", + "fieldsetGroups":"Fieldset groups", + "fieldsetGroupsDescription":"If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.", + "fieldsetGroupName":"Name", + "addFieldsetGroup":"Add group" } diff --git a/app/less/archetype.less b/app/less/archetype.less index f1428e3..285ea9a 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -7,6 +7,11 @@ .cell-tools-menu { height: 385px; } + &.withGroups { + .cell-tools-menu { + height: 415px; + } + } } .open { @@ -259,13 +264,33 @@ vertical-align: top; height: 90px; } + ul.groups { + display: block; + margin: 0; + padding: 4px; + li { + width: auto; + margin: 0; + padding: 0 20px; + font-weight: bold; + a { + color: #d9d9d9; + cursor: pointer; + } + &.active a, a:hover { + color: #999; + text-decoration: none; + } + } + } } } .archetypeEditor, .archetypeConfig { .archetypeEditorControls { float: right; - + } + .archetypeEditorControls, .archetypeFieldsetGroups { i { cursor: pointer; &.handle { @@ -361,6 +386,22 @@ } } + .archetypeFieldsetGroups { + padding: 0 10px; + margin-bottom: 20px; + ul { + padding: 0; + margin: 0; + + li { + margin-bottom: 10px; + input { + vertical-align: middle; + } + + } + } + } .archetypeAdvancedOptions { margin-top: 15px; div { diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 380f0b5..6f0c58f 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -17,6 +17,10 @@
+
+ + +
@@ -76,6 +80,22 @@
+ +
+
Fieldset groups
+

If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.

+
    +
  • +
    + + + + +
    +
  • +
+ +
diff --git a/app/views/archetype.default.html b/app/views/archetype.default.html index 2000b45..d9dbac3 100644 --- a/app/views/archetype.default.html +++ b/app/views/archetype.default.html @@ -46,13 +46,20 @@ Add an item
-
+
- -
-
Fieldset groups
-

If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.

-
    -
  • -
    - - - - -
    -
  • -
- -
@@ -105,6 +89,22 @@
Fieldset groups
+
+

Fieldset groups

+

If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.

+
    +
  • +
    + + + + +
    +
  • +
+ +
+
From 3402f216b9694d52a5fb6b2d257a94da1e150e24 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Mon, 5 Oct 2015 08:13:50 -0400 Subject: [PATCH 42/94] Add more verbose error logging --- app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs index 3879acd..fde1255 100644 --- a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs +++ b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs @@ -68,7 +68,7 @@ internal ArchetypeModel DeserializeJsonToArchetype(string sourceJson, int dataTy } catch (Exception ex) { - LogHelper.Error("DeserializeJsonToArchetype", ex); + LogHelper.Error(string.Format("DeserializeJsonToArchetype Error DatatypeId=>{0} SourceJson=>{1}", dataTypeId, sourceJson), ex); } return archetype; From 5465c1c8993a04088f6530e7dceaab18b94d3004 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Mon, 5 Oct 2015 14:37:11 +0200 Subject: [PATCH 43/94] Use exact match on group name --- app/controllers/controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 79ef6e3..290515c 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -111,7 +111,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc $scope.overlayMenu.fieldsetGroups = []; if ($scope.model.config.fieldsetGroups && $scope.model.config.fieldsetGroups.length > 0) { _.each($scope.model.config.fieldsetGroups, function (fieldsetGroup) { - $scope.overlayMenu.fieldsetGroups.push({ name: fieldsetGroup.name, fieldsets: $filter("filter")(allFieldsets, { group: fieldsetGroup.name }) }); + $scope.overlayMenu.fieldsetGroups.push({ name: fieldsetGroup.name, fieldsets: $filter("filter")(allFieldsets, { group: fieldsetGroup.name }, true) }); }) } else { From ee8b16eb9b46382e9334d21d264bf8a282f58637 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Mon, 5 Oct 2015 15:03:08 +0200 Subject: [PATCH 44/94] Only show fieldset groups config when "multiple fieldsets" is enabled --- app/views/archetype.config.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 653a95c..fb5f05b 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -89,7 +89,7 @@
-
+

Fieldset groups

If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.

    From b8fc0fb71c8addad7a952d224e2bfebfa4890173 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 12:20:09 -0400 Subject: [PATCH 45/94] WIP --- Gruntfile.js | 3 +- app/controllers/config.controller.js | 13 +++ app/controllers/config.dialog.controller.js | 3 + app/less/archetype.less | 22 ++++- .../archetype.config.developer.dialog.html | 21 +++++ .../archetype.config.fieldset.dialog.html | 51 ++++++++++ app/views/archetype.config.html | 92 +------------------ .../archetype.config.stylescript.dialog.html | 20 ++++ 8 files changed, 130 insertions(+), 95 deletions(-) create mode 100644 app/controllers/config.dialog.controller.js create mode 100644 app/views/archetype.config.developer.dialog.html create mode 100644 app/views/archetype.config.fieldset.dialog.html create mode 100644 app/views/archetype.config.stylescript.dialog.html diff --git a/Gruntfile.js b/Gruntfile.js index 679fc20..86006a9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -54,6 +54,7 @@ module.exports = function(grunt) { src: [ 'app/controllers/controller.js', 'app/controllers/config.controller.js', + 'app/controllers/config.dialog.controller.js', 'app/directives/archetypeproperty.js', 'app/directives/archetypesubmitwatcher.js', 'app/directives/archetypecustomview.js', @@ -73,7 +74,7 @@ module.exports = function(grunt) { copy: { html: { cwd: 'app/views/', - src: ['archetype.html', 'archetype.default.html', 'archetype.config.html'], + src: ['archetype.html', 'archetype.default.html', 'archetype.config.html', 'archetype.config.fieldset.dialog.html', 'archetype.config.stylescript.dialog.html', 'archetype.config.developer.dialog.html'], dest: '<%= basePath %>/views', expand: true }, diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index 00d5826..24af51e 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -309,6 +309,19 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio $scope.model.value.fieldsets = fieldsets; } + $scope.showOptions = function ($event, template) { + $event.preventDefault(); + + dialogService.open({ + template: template, + show: true, + callback: function(data) { + $scope.archetypeConfigRenderModel = data; + }, + dialogData: $scope.archetypeConfigRenderModel + }); + } + //archetype css assetsService.loadCss("../App_Plugins/Archetype/css/archetype.css"); }); diff --git a/app/controllers/config.dialog.controller.js b/app/controllers/config.dialog.controller.js new file mode 100644 index 0000000..cf3009d --- /dev/null +++ b/app/controllers/config.dialog.controller.js @@ -0,0 +1,3 @@ +angular.module('umbraco').controller('ArchetypeConfigOptionsController', function ($scope) { + $scope.model = $scope.dialogData; +}); \ No newline at end of file diff --git a/app/less/archetype.less b/app/less/archetype.less index 0835a78..c04ba9f 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -387,16 +387,24 @@ } .archetypeAdvancedOptions { - margin-top: 15px; - div { - margin-bottom: 10px; - } label { - width: 400px; + width: 100%; + } + + input[type=checkbox] { + margin-top: 0; + margin-right: 2px; } + + small { + color: #b3b3b3; + } + + .archetypeFieldsetGroups { padding: 0 10px; margin-bottom: 20px; + ul { padding: 0; margin: 0; @@ -447,3 +455,7 @@ visibility: visible !important; background-color: #d0e7f1 !important; } + +.archetype-dialog { + margin: 10px; +} \ No newline at end of file diff --git a/app/views/archetype.config.developer.dialog.html b/app/views/archetype.config.developer.dialog.html new file mode 100644 index 0000000..b5623fd --- /dev/null +++ b/app/views/archetype.config.developer.dialog.html @@ -0,0 +1,21 @@ +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    + + +
    +
    +
    \ No newline at end of file diff --git a/app/views/archetype.config.fieldset.dialog.html b/app/views/archetype.config.fieldset.dialog.html new file mode 100644 index 0000000..3ceca39 --- /dev/null +++ b/app/views/archetype.config.fieldset.dialog.html @@ -0,0 +1,51 @@ +
    +
    +
    + +
    + +
    + +
    +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + +
    +

    Fieldset groups

    + If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.

    +
      +
    • +
      + + + + +
      +
    • +
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index fb5f05b..8ff552f 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -83,95 +83,9 @@
    - - -
    -
    - -
    -
    -

    Fieldset groups

    -

    If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.

    -
      -
    • -
      - - - - -
      -
    • -
    - -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - + + +
diff --git a/app/views/archetype.config.stylescript.dialog.html b/app/views/archetype.config.stylescript.dialog.html new file mode 100644 index 0000000..481a1f7 --- /dev/null +++ b/app/views/archetype.config.stylescript.dialog.html @@ -0,0 +1,20 @@ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
\ No newline at end of file From 9787af9ed69bcf01a38ede26ec4e2781a431493d Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 13:13:56 -0400 Subject: [PATCH 46/94] Fixup some styles and move some controller functions for the grouping --- app/controllers/config.controller.js | 10 ---------- app/controllers/config.dialog.controller.js | 10 ++++++++++ app/less/archetype.less | 1 - app/views/archetype.config.developer.dialog.html | 11 ++++------- app/views/archetype.config.fieldset.dialog.html | 2 +- app/views/archetype.config.stylescript.dialog.html | 2 +- 6 files changed, 16 insertions(+), 20 deletions(-) diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index 24af51e..3b90511 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -234,16 +234,6 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio } } - //handles a fieldset group add - $scope.addFieldsetGroup = function () { - $scope.archetypeConfigRenderModel.fieldsetGroups.push({ name: "" }); - } - - //handles a fieldset group removal - $scope.removeFieldsetGroup = function ($index) { - $scope.archetypeConfigRenderModel.fieldsetGroups.splice($index, 1); - } - //helper to ini the render model function initConfigRenderModel() { diff --git a/app/controllers/config.dialog.controller.js b/app/controllers/config.dialog.controller.js index cf3009d..df84050 100644 --- a/app/controllers/config.dialog.controller.js +++ b/app/controllers/config.dialog.controller.js @@ -1,3 +1,13 @@ angular.module('umbraco').controller('ArchetypeConfigOptionsController', function ($scope) { $scope.model = $scope.dialogData; + + //handles a fieldset group add + $scope.addFieldsetGroup = function () { + $scope.model.fieldsetGroups.push({ name: "" }); + } + + //handles a fieldset group removal + $scope.removeFieldsetGroup = function ($index) { + $scope.model.fieldsetGroups.splice($index, 1); + } }); \ No newline at end of file diff --git a/app/less/archetype.less b/app/less/archetype.less index c04ba9f..e90773a 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -400,7 +400,6 @@ color: #b3b3b3; } - .archetypeFieldsetGroups { padding: 0 10px; margin-bottom: 20px; diff --git a/app/views/archetype.config.developer.dialog.html b/app/views/archetype.config.developer.dialog.html index b5623fd..16ae3be 100644 --- a/app/views/archetype.config.developer.dialog.html +++ b/app/views/archetype.config.developer.dialog.html @@ -1,16 +1,13 @@
-
+
- - +
- - +
- - +
diff --git a/app/views/archetype.config.fieldset.dialog.html b/app/views/archetype.config.fieldset.dialog.html index 3ceca39..11b8ff2 100644 --- a/app/views/archetype.config.fieldset.dialog.html +++ b/app/views/archetype.config.fieldset.dialog.html @@ -33,7 +33,7 @@

Fieldset groups

- If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.

+ If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups.
+
+ + Cancel + + + +
\ No newline at end of file From a4f371a4ca8330381daff19f0fdb663e2c2eb788 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 15:34:30 -0400 Subject: [PATCH 49/94] Enforce one dialog at a time. --- app/controllers/config.controller.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index 3b90511..57c7f7d 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -302,6 +302,8 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio $scope.showOptions = function ($event, template) { $event.preventDefault(); + dialogService.closeAll(); + dialogService.open({ template: template, show: true, From bd4398ff284ee9b67b5c590948cd267a25d85f8f Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 15:42:00 -0400 Subject: [PATCH 50/94] Bump version to 1.11 and some minor edits --- app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs | 4 ++-- app/views/archetype.config.developer.dialog.html | 1 - app/views/archetype.config.html | 4 +++- config/meta.json | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs index c3f9401..34b1003 100644 --- a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs +++ b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("1.10")] -[assembly: AssemblyFileVersion("1.10")] +[assembly: AssemblyVersion("1.11")] +[assembly: AssemblyFileVersion("1.11")] diff --git a/app/views/archetype.config.developer.dialog.html b/app/views/archetype.config.developer.dialog.html index 2ee687b..d2e242f 100644 --- a/app/views/archetype.config.developer.dialog.html +++ b/app/views/archetype.config.developer.dialog.html @@ -23,7 +23,6 @@ -
\ No newline at end of file diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 8ff552f..4364709 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -1,4 +1,6 @@
+

Archetype

+

Lorem

  • @@ -83,7 +85,7 @@
    - +
    diff --git a/config/meta.json b/config/meta.json index a5ebfb1..b88d7bf 100644 --- a/config/meta.json +++ b/config/meta.json @@ -1,6 +1,6 @@ { "name": "Archetype", - "version": "1.10", + "version": "1.11", "url": "http://github.com/imulus/archetype/", "author": "Imulus - Kevin Giszewski - Tom Fulton - Lee Kelleher - Matt Brailsford - Kenn Jacobsen - Et. Al.", "authorUrl": "http://imulus.com/", From 0e9bef90487437149f9e8cd8ce5e215fd3844518 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 16:11:15 -0400 Subject: [PATCH 51/94] Add logo asset, add headlines to dialogs --- Gruntfile.js | 8 +++++++- app/less/archetype.less | 7 +++++++ app/views/archetype.config.developer.dialog.html | 1 + app/views/archetype.config.fieldset.dialog.html | 1 + app/views/archetype.config.html | 11 ++++++----- .../archetype.config.stylescript.dialog.html | 1 + assets/logo_50.png | Bin 0 -> 2537 bytes 7 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 assets/logo_50.png diff --git a/Gruntfile.js b/Gruntfile.js index 86006a9..169b38f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -78,6 +78,12 @@ module.exports = function(grunt) { dest: '<%= basePath %>/views', expand: true }, + assets: { + cwd: 'assets/', + src: ['logo_50.png'], + dest: '<%= basePath %>/assets', + expand: true + }, dll: { cwd: 'app/Umbraco/Umbraco.Archetype/bin/Debug/', src: 'Archetype.dll', @@ -215,7 +221,7 @@ module.exports = function(grunt) { }); - grunt.registerTask('default', ['clean', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:config', 'copy:html']); + grunt.registerTask('default', ['clean', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:assets', 'copy:config', 'copy:html']); grunt.registerTask('nuget', ['clean:tmp', 'default', 'copy:nuget', 'template:nuspec', 'nugetpack', 'clean:tmp']); grunt.registerTask('umbraco', ['clean:tmp', 'default', 'copy:umbraco', 'umbracoPackage', 'clean:tmp']); diff --git a/app/less/archetype.less b/app/less/archetype.less index 8a9f2bf..8b0ce5a 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -306,6 +306,13 @@ .archetypeConfig { margin-bottom: 20px; + .archetype-headline { + + img { + margin-right: 5px; + } + } + ul { list-style: none; } diff --git a/app/views/archetype.config.developer.dialog.html b/app/views/archetype.config.developer.dialog.html index d2e242f..2cfe0cd 100644 --- a/app/views/archetype.config.developer.dialog.html +++ b/app/views/archetype.config.developer.dialog.html @@ -1,5 +1,6 @@
    +

    Developer Options

    diff --git a/app/views/archetype.config.fieldset.dialog.html b/app/views/archetype.config.fieldset.dialog.html index 0d2e037..b4cf7f9 100644 --- a/app/views/archetype.config.fieldset.dialog.html +++ b/app/views/archetype.config.fieldset.dialog.html @@ -1,5 +1,6 @@
    +

    Global Fieldset Options

    diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 4364709..0c5ad7e 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -1,6 +1,7 @@
    -

    Archetype

    -

    Lorem

    +

    Archetype

    +

    At a minimum your Archetype needs at least one fieldset with at least one property. You can configure it to allow for multiple types of fieldsets within a single Archetype and you can even add another Archetype as a property. Please use the link below for the full manual:

    +

    Archetype Manual

    • @@ -85,9 +86,9 @@

      Archetype

      - - - + + +
      diff --git a/app/views/archetype.config.stylescript.dialog.html b/app/views/archetype.config.stylescript.dialog.html index 11f5f6f..542d30f 100644 --- a/app/views/archetype.config.stylescript.dialog.html +++ b/app/views/archetype.config.stylescript.dialog.html @@ -1,5 +1,6 @@
      +

      Custom Style/Script Options

      diff --git a/assets/logo_50.png b/assets/logo_50.png new file mode 100644 index 0000000000000000000000000000000000000000..c5aa9dc4e851299b2cc4aa0d93650c21e9ccbde3 GIT binary patch literal 2537 zcmaJ@dpwiv8=oekawrlNGZJccVAz~8n?o8ot*Ml;M;6<&o^8yeawt-SLWP&SD#=+X zk>pUMcx(M?q$b5%h^QRi4&Ldl-rpa;e$VIgJokOwpYQj3UH5f;|9FmU@o-tHtfLHr z!IrwYlD%asZvI`QAp7b%Bvr{4Z9aw0_W?urkqiicIWoZ@0O7`F>;}961~Y1J2Ve_> z!I3OqI-gG6ObiCuW{i1^nUKwuv0*S<2O*ac90u?aLBMVn#|}AOe-nvdG3}6B@l*_z z>jZ?dTtyJzBl7SK7KH^9m`DeEgsqS$6JP^;213XV=kSO^JLETAqHI5Zj7B29LHJ>I z$bX8WQ@0?TKnOtK%`m87j3owPi8aHTTUc3HZ9w2KSPUA2Lt}9$tQFB5N5o(d-yftb z8^jDDdXt^M=aNNs$WT6?OGKk1BO}cs&CNh)HyTSI5au;-IFt;5;ze=z3?YicGx(uE z26({`i_2$$9K^gLBM21m?U1rc|G5I2`%{*~``#v5!_Yzo7mYQ;%wOpTkV^gkP&WG~ zn#cDB{;l_a3iEuUxB%K4;DG`tST?v2gZWfkq7wu#_#os9g5f{9xFrCHXuviM7U`eqiIg%~O zB-x>}IpznK30EhpB%lwy1`6YMW3T&<{GZ}zb5dhN}0@;XfS0=K4T?^@#df&Os zU)SRFOD6-!Z-3fW7W_0mz>&EflG$4Ow;fwyFogg&vZJrCw{P3_ za9=--XMaAA;upN#sNS0#irKi7wegVg1bh)S3Hi=ZK1FHUOT_|*(9Ia5uQTV4V2zAu zjcFFxI3haN9J_|P}l)`iu>MCTxK5j&*d3Dp9V1K}O$nBSJgzs0VX28|-582Aw!owG2 z!JSW!+cYigcklP<@AF;U0~=lV+q+{z`b%vag$C7J;_NdT&IjR2_R8<+WRL9tLusFbsw#i_S@?`VR)9%^L5-8jUQnX-S6BlYTt1=qi|%K z$-_PpvZp}0JY}$YPRD=E9h1o6;3T3aGPPQtoOX$AIwbylboTa{x3L`JSH6q0t)%VXeHDcte0CVQtRLuT}&uxqRw%bo|rW9jSVo#*&o~L(m zlEDKysZ~?xsvRzH1RWisZyu~VJd$n@!Bx)%kGwH zliJ!VtyMN3RDt7-?vH0HidJg%xSppIW(zIwo!v_}hKC+eEJ^~vzDLx%x?oHD zuA}jB=O4oM1LC#T*~fC z$@^~Hs;B*F^5)X(?*1ST|KH!u$SC#OYOjXMdal3oRR*gbh~FnrfYQg~!Qy8McU{}llg{p>;R%k8Lf^%M(( zxXD>VrHc>q-WEH~Eq{3~Q@pLE$9G~~-;J-SsnX&<=+-LQ(-m3I-Y2+C7L<9SGp{6M(hx(c`|}D5~w%YS+95MDB-kCll7F! ziVQjXY3Ya>?vcyb{qh0L#Q4YUJqE8rvKt%pV!wknGvp@go=k?-1+1q|<^Wx!U#U$2&^?e%Vho{dAD-80b!IkE9#!x0Qhuyp>pVMG>QTFfwu5~geKOja;^N{7N0p3RHeK0pZeOi&Y8M2083nD=7@Mge iq|~zJ26}ETSOU8}V0*?@ZuOS=pD#Cx2f3US822|5!9bn> literal 0 HcmV?d00001 From 645198444b9ecc2f645d31d7596cecf2b1300763 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 16:28:00 -0400 Subject: [PATCH 52/94] Add dll version to the config page --- .../Api/ArchetypeDataTypeController.cs | 17 +++++++++++++++-- app/controllers/config.controller.js | 6 ++++++ app/less/archetype.less | 8 ++++++++ .../archetypePropertyEditorResource.js | 5 +++++ app/views/archetype.config.html | 4 ++-- 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs index 75d3003..ba2816a 100644 --- a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs +++ b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs @@ -1,16 +1,16 @@ using System.Collections.Generic; using System; +using System.Diagnostics; using System.Linq; using System.Net; +using System.Reflection; using System.Web.Http; using AutoMapper; using Umbraco.Core.Models; using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Mvc; using Umbraco.Web.Editors; -using Umbraco.Core.PropertyEditors; using Archetype.Extensions; -using Newtonsoft.Json; namespace Archetype.Api { @@ -53,5 +53,18 @@ public object GetByGuid(Guid guid, string contentTypeAlias, string propertyTypeA var dataTypeDisplay = Mapper.Map(dataType); return new { selectedEditor = dataTypeDisplay.SelectedEditor, preValues = dataTypeDisplay.PreValues, contentTypeAlias = contentTypeAlias, propertyTypeAlias = propertyTypeAlias, archetypeAlias = archetypeAlias, nodeId = nodeId }; } + + public object GetDllVersion() + { + return new {dllVersion = _version()}; + } + + private string _version() + { + var asm = Assembly.GetExecutingAssembly(); + var fvi = FileVersionInfo.GetVersionInfo(asm.Location); + + return fvi.FileVersion; + } } } diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index 57c7f7d..615d45e 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -11,6 +11,12 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio //ini the model $scope.model.value = $scope.model.value || defaultFieldsetConfigModel; + $scope.dllVersion = ""; + + archetypePropertyEditorResource.getDllVersion().then(function(data){ + $scope.dllVersion = data.dllVersion; + }); + //ini the render model initConfigRenderModel(); diff --git a/app/less/archetype.less b/app/less/archetype.less index 8b0ce5a..627a084 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -311,6 +311,14 @@ img { margin-right: 5px; } + + small { + margin-left: 5px; + } + } + + .manual-link { + color: blue; } ul { diff --git a/app/resources/archetypePropertyEditorResource.js b/app/resources/archetypePropertyEditorResource.js index a335fe2..463a028 100644 --- a/app/resources/archetypePropertyEditorResource.js +++ b/app/resources/archetypePropertyEditorResource.js @@ -31,6 +31,11 @@ angular.module('umbraco.resources').factory('archetypePropertyEditorResource', f return ""; }); + }, + getDllVersion: function() { + return umbRequestHelper.resourcePromise( + $http.get("backoffice/ArchetypeApi/ArchetypeDataType/GetDllVersion", { cache: true }), 'Failed to retrieve dll version' + ); } } }); diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 0c5ad7e..ebb2854 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -1,7 +1,7 @@
      -

      Archetype

      +

      Archetype{{dllVersion}}

      At a minimum your Archetype needs at least one fieldset with at least one property. You can configure it to allow for multiple types of fieldsets within a single Archetype and you can even add another Archetype as a property. Please use the link below for the full manual:

      -

      Archetype Manual

      +

      Archetype Manual

      • From e3a2b66022283771356145a295d3f47145a32831 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 17:11:26 -0400 Subject: [PATCH 53/94] Version css and js files --- .gitignore | 3 +++ Gruntfile.js | 29 +++++++++++++++++++++++------ app/controllers/controller.js | 1 + app/less/archetype.less | 2 +- package.json | 3 ++- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 1bb174e..aab6533 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,9 @@ tmp/ pkg/*.nupkg pkg/*.zip +*_versioned* + + [Dd]ebug/ [Bb]uild/ [Rr]elease/ diff --git a/Gruntfile.js b/Gruntfile.js index 169b38f..21d41f3 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,13 +1,30 @@ module.exports = function(grunt) { require('load-grunt-tasks')(grunt); - var path = require('path') - + var path = require('path'); + + grunt.loadNpmTasks('grunt-string-replace'); + grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), pkgMeta: grunt.file.readJSON('config/meta.json'), dest: grunt.option('target') || 'dist', basePath: path.join('<%= dest %>', 'App_Plugins', '<%= pkgMeta.name %>'), + 'string-replace': { + version: { + files: { + "app/controllers/controller_versioned.js": "app/controllers/controller.js", + "app/less/archetype_versioned.less": "app/less/archetype.less" + }, + options: { + replacements: [{ + pattern: /{{VERSION}}/g, + replacement: '/* Version <%= pkgMeta.version %> */' + }] + } + } + }, + watch: { options: { spawn: false, @@ -16,7 +33,7 @@ module.exports = function(grunt) { less: { files: ['app/**/*.less'], - tasks: ['less:dist'] + tasks: ['string-replace', 'less:dist'] }, js: { @@ -41,7 +58,7 @@ module.exports = function(grunt) { paths: ["app/less", "lib/less", "vendor"], }, files: { - '<%= basePath %>/css/archetype.css': 'app/less/archetype.less', + '<%= basePath %>/css/archetype.css': 'app/less/archetype_versioned.less', } } }, @@ -52,7 +69,7 @@ module.exports = function(grunt) { }, dist: { src: [ - 'app/controllers/controller.js', + 'app/controllers/controller_versioned.js', 'app/controllers/config.controller.js', 'app/controllers/config.dialog.controller.js', 'app/directives/archetypeproperty.js', @@ -221,7 +238,7 @@ module.exports = function(grunt) { }); - grunt.registerTask('default', ['clean', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:assets', 'copy:config', 'copy:html']); + grunt.registerTask('default', ['clean', 'string-replace', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:assets', 'copy:config', 'copy:html']); grunt.registerTask('nuget', ['clean:tmp', 'default', 'copy:nuget', 'template:nuspec', 'nugetpack', 'clean:tmp']); grunt.registerTask('umbraco', ['clean:tmp', 'default', 'copy:umbraco', 'umbracoPackage', 'clean:tmp']); diff --git a/app/controllers/controller.js b/app/controllers/controller.js index b48ee09..264ea27 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -1,3 +1,4 @@ +{{VERSION}} angular.module("umbraco").controller("Imulus.ArchetypeController", function ($scope, $http, $filter, assetsService, angularHelper, notificationsService, $timeout, fileManager, entityResource, archetypeService, archetypeLabelService, archetypeCacheService, archetypePropertyEditorResource) { //$scope.model.value = ""; diff --git a/app/less/archetype.less b/app/less/archetype.less index 627a084..bd73f8d 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -1,4 +1,4 @@ -/* TODO: clean this up */ +{{VERSION}} .archetypeEditor { width: 98%; diff --git a/package.json b/package.json index 3601308..4032a92 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "url": "https://github.com/imulus/Archetype.git" }, "devDependencies": { - "grunt-msbuild": "^0.1.12" + "grunt-msbuild": "^0.1.12", + "grunt-string-replace": "^1.2.0" } } From 21b933a0dc1ecb157f94cf8777661b4dc01aaaaa Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Wed, 7 Oct 2015 17:34:35 -0400 Subject: [PATCH 54/94] Version HTML --- Gruntfile.js | 29 ++++++++++++++++--- .../archetype.config.developer.dialog.html | 1 + .../archetype.config.fieldset.dialog.html | 1 + app/views/archetype.config.html | 1 + .../archetype.config.stylescript.dialog.html | 1 + app/views/archetype.default.html | 1 + app/views/archetype.html | 1 + 7 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 21d41f3..5c10764 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -14,12 +14,23 @@ module.exports = function(grunt) { version: { files: { "app/controllers/controller_versioned.js": "app/controllers/controller.js", - "app/less/archetype_versioned.less": "app/less/archetype.less" + "app/less/archetype_versioned.less": "app/less/archetype.less", + "app/views/archetype.config.developer.dialog_versioned.html": "app/views/archetype.config.developer.dialog.html", + "app/views/archetype.config.stylescript.dialog_versioned.html": "app/views/archetype.config.stylescript.dialog.html", + "app/views/archetype.config.fieldset.dialog_versioned.html": "app/views/archetype.config.fieldset.dialog.html", + "app/views/archetype.config_versioned.html": "app/views/archetype.config.html", + "app/views/archetype_versioned.html": "app/views/archetype.html", + "app/views/archetype.default_versioned.html": "app/views/archetype.default.html", + }, options: { replacements: [{ pattern: /{{VERSION}}/g, replacement: '/* Version <%= pkgMeta.version %> */' + }, + { + pattern: /{{VERSION_HTML}}/g, + replacement: '' }] } } @@ -91,9 +102,19 @@ module.exports = function(grunt) { copy: { html: { cwd: 'app/views/', - src: ['archetype.html', 'archetype.default.html', 'archetype.config.html', 'archetype.config.fieldset.dialog.html', 'archetype.config.stylescript.dialog.html', 'archetype.config.developer.dialog.html'], - dest: '<%= basePath %>/views', - expand: true + src: [ + 'archetype_versioned.html', + 'archetype.default_versioned.html', + 'archetype.config_versioned.html', + 'archetype.config.fieldset.dialog_versioned.html', + 'archetype.config.stylescript.dialog_versioned.html', + 'archetype.config.developer.dialog_versioned.html' + ], + dest: '<%= basePath %>/views/', + expand: true, + rename: function(dest, src) { + return dest + src.replace('_versioned',''); + } }, assets: { cwd: 'assets/', diff --git a/app/views/archetype.config.developer.dialog.html b/app/views/archetype.config.developer.dialog.html index 2cfe0cd..9803230 100644 --- a/app/views/archetype.config.developer.dialog.html +++ b/app/views/archetype.config.developer.dialog.html @@ -1,3 +1,4 @@ +{{VERSION_HTML}}

        Developer Options

        diff --git a/app/views/archetype.config.fieldset.dialog.html b/app/views/archetype.config.fieldset.dialog.html index b4cf7f9..c58eee2 100644 --- a/app/views/archetype.config.fieldset.dialog.html +++ b/app/views/archetype.config.fieldset.dialog.html @@ -1,3 +1,4 @@ +{{VERSION_HTML}}

        Global Fieldset Options

        diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index ebb2854..4e078d6 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -1,3 +1,4 @@ +{{VERSION_HTML}}

        Archetype{{dllVersion}}

        At a minimum your Archetype needs at least one fieldset with at least one property. You can configure it to allow for multiple types of fieldsets within a single Archetype and you can even add another Archetype as a property. Please use the link below for the full manual:

        diff --git a/app/views/archetype.config.stylescript.dialog.html b/app/views/archetype.config.stylescript.dialog.html index 542d30f..46da912 100644 --- a/app/views/archetype.config.stylescript.dialog.html +++ b/app/views/archetype.config.stylescript.dialog.html @@ -1,3 +1,4 @@ +{{VERSION_HTML}}

        Custom Style/Script Options

        diff --git a/app/views/archetype.default.html b/app/views/archetype.default.html index d9dbac3..0a76e13 100644 --- a/app/views/archetype.default.html +++ b/app/views/archetype.default.html @@ -1,3 +1,4 @@ +{{VERSION_HTML}}
          diff --git a/app/views/archetype.html b/app/views/archetype.html index 63b1114..2276365 100644 --- a/app/views/archetype.html +++ b/app/views/archetype.html @@ -1 +1,2 @@ +{{VERSION_HTML}}
          From 17062c69134178d43e16b7db4be1718d248843d5 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Thu, 8 Oct 2015 08:56:48 +0200 Subject: [PATCH 55/94] Subdivide fieldset options in dialog + use dialog footers in all dialogs --- Gruntfile.js | 5 ++ .../archetype.config.developer.dialog.html | 23 ++++--- .../archetype.config.fieldset.dialog.html | 62 +++++++++++-------- .../archetype.config.stylescript.dialog.html | 22 ++++--- 4 files changed, 66 insertions(+), 46 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 5c10764..c0250a6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -60,6 +60,11 @@ module.exports = function(grunt) { dll: { files: ['app/Umbraco/**/*.dll'], tasks: ['copy:dll'] + }, + + assets: { + files: ['assets/*.*'], + tasks: ['copy:assets'] } }, diff --git a/app/views/archetype.config.developer.dialog.html b/app/views/archetype.config.developer.dialog.html index 9803230..5571427 100644 --- a/app/views/archetype.config.developer.dialog.html +++ b/app/views/archetype.config.developer.dialog.html @@ -1,6 +1,6 @@ {{VERSION_HTML}} -
          -
          +
          + + \ No newline at end of file diff --git a/app/views/archetype.config.fieldset.dialog.html b/app/views/archetype.config.fieldset.dialog.html index c58eee2..98b3be0 100644 --- a/app/views/archetype.config.fieldset.dialog.html +++ b/app/views/archetype.config.fieldset.dialog.html @@ -1,25 +1,26 @@ {{VERSION_HTML}} -
          -
          +
          + + +

          Multiple fieldsets

          -
          -

          Fieldset groups

          +
          + If you have a lot of fieldsets to choose from, you may want to consider grouping them in the fieldset picker. Once you have created your groups here, a group picker will be displayed in the fieldset editor and you can assign your fieldsets to their respective groups. -
            -
          • -
            - - - -
            -
          • -
          - -
          -
          -
          - - Cancel - +
          +
            +
          • +
            + + + +
            +
          • +
          + +
          +
          +
          +
          \ No newline at end of file diff --git a/app/views/archetype.config.stylescript.dialog.html b/app/views/archetype.config.stylescript.dialog.html index 46da912..a987b99 100644 --- a/app/views/archetype.config.stylescript.dialog.html +++ b/app/views/archetype.config.stylescript.dialog.html @@ -1,6 +1,6 @@ {{VERSION_HTML}} -
          -
          +
          + \ No newline at end of file From ca1214a09a975806adb2f51cb1343d680f62571b Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Thu, 8 Oct 2015 07:52:30 -0400 Subject: [PATCH 56/94] Remove FieldsetToolbar option as it was only for the prototype. Tweak Gruntfile --- Gruntfile.js | 4 +--- app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs | 4 +++- app/views/archetype.config.fieldset.dialog.html | 3 --- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index c0250a6..8824738 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,8 +2,6 @@ module.exports = function(grunt) { require('load-grunt-tasks')(grunt); var path = require('path'); - grunt.loadNpmTasks('grunt-string-replace'); - grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), pkgMeta: grunt.file.readJSON('config/meta.json'), @@ -123,7 +121,7 @@ module.exports = function(grunt) { }, assets: { cwd: 'assets/', - src: ['logo_50.png'], + src: ['*.*'], dest: '<%= basePath %>/assets', expand: true }, diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs index cbf4937..3d49e8e 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Newtonsoft.Json; namespace Archetype.Models @@ -12,6 +13,7 @@ public class ArchetypePreValue public bool StartWithAddButton { get; set; } [JsonProperty("hideFieldsetToolbar")] + [Obsolete("This value is no longer used but is kept to prevent breaking changes.")] public bool HideFieldsetToolbar { get; set; } [JsonProperty("enableMultipleFieldsets")] diff --git a/app/views/archetype.config.fieldset.dialog.html b/app/views/archetype.config.fieldset.dialog.html index 98b3be0..1c263ab 100644 --- a/app/views/archetype.config.fieldset.dialog.html +++ b/app/views/archetype.config.fieldset.dialog.html @@ -27,9 +27,6 @@

          Fieldset controls

          -
          - -

          Multiple fieldsets

          From 165a98c89e642ea065b159c864c7fef4b0077757 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Thu, 8 Oct 2015 08:07:35 -0400 Subject: [PATCH 57/94] Add Twitter link --- app/views/archetype.config.html | 2 +- assets/twitter.png | Bin 0 -> 2101 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/twitter.png diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 4e078d6..224bb0b 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -1,6 +1,6 @@ {{VERSION_HTML}}
          -

          Archetype{{dllVersion}}

          +

          Archetype{{dllVersion}}

          At a minimum your Archetype needs at least one fieldset with at least one property. You can configure it to allow for multiple types of fieldsets within a single Archetype and you can even add another Archetype as a property. Please use the link below for the full manual:

          Archetype Manual

            diff --git a/assets/twitter.png b/assets/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9fac35646e7d495167e841ae7bcbabe5e2cca9 GIT binary patch literal 2101 zcmaJ?YgAKL7LEZD3=mXA5on255Crn#krzZJFC;<`5fmt07?LXqklc`5ATXAvWq1TA z8nG-Mf-)*psR*Sgs7NUmM0v@G79B+x#{oeewp4VS#EP9C!`!v*J!hZwec#?^?{BS} z7ZkY53}cN!AP{DJKW?yYb<@AbDBbr{pWH^>vIXXa!TX>?aI#PdB3NQ58pQEs!Wb|Z z6pB+4dO&Xk!T^wlgu!8g0EP&X5rldSK`m40*a(ETk6IxV#epy`8jO+3nZRt@bpR(7 zGl2u10+K+%0VPtuR3*4CH84b!8YiNQ0iT^XZ#6?FAOm3`PA!X2$q@n;Tw-z^hW^uuzSc ztG2Bua6y$wDOJEyNRHDh3ZtP!mO-4!4I`?B3L=?6(qCx>C=mRA zs7&?|t%8HWKkEIT!m5xI1xO4ARZyZ*q#N9!ZTeIS21f}BVMrMQLGdeH43a=Fq>?}i z9A}>=P9PLX<@)$NULaubolS?C$d7dl|o6X^o zIUZ~pjmjm_SGZhAlqdt`@CsM_2bZ%dS8oNGLYJ8fDy2!F*jEY3aPP0okgi?}eO0{= zT=D9)uvX;~b;S_%gZ-~TuN>*zqu+kCtuFXzd{C})yHaQC*inrm0%2Ik=dwc75AH@t z{VexxtfF4+9g06Kh-eH4a9G~)z|gw>%htqY5PLOW%mVJ^TV@!<&%#VZa=(3Pe$hR)*2!OH=ih4 zpI=Whtwb8?-*P| z3d@&Jk!T9yZQ8npQ^UF!2MIP>*&zlQm)rV#UR?=W1{1XRoM(Yw9DQj^08;# zZ=X?ZEP}i&-}OjFeJPtgn!*(e0b`K|yT=?aA-+jVvj-Az3FfIs#-S8*;AypwN!upB z>8yzQrKl^N`{$p`^YBM=3(RZUcE~tsr$W0qCkE|8?^*wR%5NMU^z@?U&c&3bIWbgm zzNm9C+}M@#g+WFdt;#5J_;W|cMbyB-#`Xy9v06KuZyXN%{E#x^(_L`>r_+IG%Df2^ z94@->8o4mN;fBb6DcnUoBY8S_BsVFRUZl!IQ{s0F<@nhpRlaEX3I2RtGv=H|F^h4z zVa?Ohs_wDFeebF~>idpP&-y+^jgLuh_}8IPYc-pU_P8q=d^<~jbWZE`zhmtSOn!~M z#~Nny8j{IDKQ>+={hQh~LHmSe`jFRIx?>S8?XoeRqw%S!=$zK_E4@zDP1kqD%sm&1bz6ME%XdF#gQIX6QSEqA9`5a&PX}$AvWmEoa5E|FoDu#@}?ty>V zQ&U=EcEs}mi-zrvawqIR7*1m67^9w(^-Z*q*r9^&w>#p&nmsK{EpXnlp%tm^9l^yl|rWSz8cfK+_InEv;!a>uZ{OX;Z!K+~iv< zrUZ(0Iczeu+nIi%y?8vw8~F(JTYqRd_klrwrhCV(w??6%w-32m7fi9D@ebyZrsdxb zOxImyV7yN5Zgu(lWl(uJRMM7-I*i~(r>q+;-?Kbb)0@&#Qj2|6%f5cM-?fa;HIZn$ z=kPOH*OYBX_+Ey@iZJ%;;|nPcuOx;1f#P@m=!6B^0}qNShW&EK@*65@{paa?&^481Ysd2CRu$)^=@e_RXp6c;0SKO_khpmU#WEGyDEdfE9N< z-sugssbtb%!~KmXyk@i;hg!yeS!5k+bQNqjQ-8ukT2@>>FlJvP#T+TRXfke@8HK?2 zt!+pz29}~7jc#r^+5@@2IhYQekBKrav(&ufNYb;YidcurKHw47ZtH7p@1?^1dAU1L z?jaslRz?A59_LYH>MM75UR}CfBKdB9_6PU;xs!-*o0oWt3FRXJeRgY5i1`<%Td_8r QV*QVt&kN)>un%Va2SDdaSO5S3 literal 0 HcmV?d00001 From fd28df1bad62df0d0d7c984abee8e3a6abbd3039 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Thu, 8 Oct 2015 08:43:08 -0400 Subject: [PATCH 58/94] Update Gruntfile to remove versioning files --- Gruntfile.js | 75 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 8824738..2d17952 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -47,12 +47,12 @@ module.exports = function(grunt) { js: { files: ['app/**/*.js'], - tasks: ['concat:dist'] + tasks: ['string-replace', 'concat:dist'] }, html: { files: ['app/**/*.html'], - tasks: ['copy:html'] + tasks: ['string-replace', 'copy:html'] }, dll: { @@ -166,31 +166,30 @@ module.exports = function(grunt) { }, nugetpack: { - dist: { - src: 'tmp/nuget/package.nuspec', - dest: 'pkg' - } + dist: { + src: 'tmp/nuget/package.nuspec', + dest: 'pkg' + } }, template: { - 'nuspec': { - 'options': { - 'data': { - name: '<%= pkgMeta.name %>', - version: '<%= pkgMeta.version %>', - url: '<%= pkgMeta.url %>', - license: '<%= pkgMeta.license %>', - licenseUrl: '<%= pkgMeta.licenseUrl %>', - author: '<%= pkgMeta.author %>', - authorUrl: '<%= pkgMeta.authorUrl %>', - - files: [{ path: 'tmp/nuget/**', target: 'content/App_Plugins/Archetype'}] - } - }, - 'files': { - 'tmp/nuget/package.nuspec': ['config/package.nuspec'] - } - } + 'nuspec': { + 'options': { + 'data': { + name: '<%= pkgMeta.name %>', + version: '<%= pkgMeta.version %>', + url: '<%= pkgMeta.url %>', + license: '<%= pkgMeta.license %>', + licenseUrl: '<%= pkgMeta.licenseUrl %>', + author: '<%= pkgMeta.author %>', + authorUrl: '<%= pkgMeta.authorUrl %>', + files: [{ path: 'tmp/nuget/**', target: 'content/App_Plugins/Archetype'}] + } + }, + 'files': { + 'tmp/nuget/package.nuspec': ['config/package.nuspec'] + } + } }, umbracoPackage: { @@ -211,7 +210,26 @@ module.exports = function(grunt) { clean: { build: '<%= grunt.config("basePath").substring(0, 4) == "dist" ? "dist/**/*" : "null" %>', - tmp: ['tmp'] + tmp: ['tmp'], + html: [ + 'app/views/*.html', + '!app/views/archetype.html', + '!app/views/archetype.default.html', + '!app/views/archetype.config.html', + '!app/views/archetype.config.fieldset.dialog.html', + '!app/views/archetype.config.stylescript.dialog.html', + '!app/views/archetype.config.developer.dialog.html' + ], + js: [ + 'app/controllers/*.js', + '!app/controllers/controller.js', + '!app/controllers/config.controller.js', + '!app/controllers/config.dialog.controller.js' + ], + less: [ + 'app/less/*.less', + '!app/less/archetype.less' + ] }, assemblyinfo: { @@ -230,7 +248,7 @@ module.exports = function(grunt) { src: ['<%= grunt.option("target") %>\\Web.config'] } }, - + jshint: { options: { jshintrc: '.jshintrc' @@ -245,7 +263,7 @@ module.exports = function(grunt) { stdout: true, verbosity: 'quiet', maxCpuCount: 4, - version: 4.0, + version: 4.0, buildParameters: { WarningLevel: 2, NoWarn: 1607 @@ -259,10 +277,9 @@ module.exports = function(grunt) { } } } - }); - grunt.registerTask('default', ['clean', 'string-replace', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:assets', 'copy:config', 'copy:html']); + grunt.registerTask('default', ['clean', 'string-replace', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:assets', 'copy:config', 'clean:html', 'clean:js', 'clean:less']); grunt.registerTask('nuget', ['clean:tmp', 'default', 'copy:nuget', 'template:nuspec', 'nugetpack', 'clean:tmp']); grunt.registerTask('umbraco', ['clean:tmp', 'default', 'copy:umbraco', 'umbracoPackage', 'clean:tmp']); From 99638ed0b0f523aaf268227715e43d4348eaef14 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Thu, 8 Oct 2015 08:49:22 -0400 Subject: [PATCH 59/94] Add missing twitter style --- app/less/archetype.less | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/less/archetype.less b/app/less/archetype.less index bd73f8d..a3fddbe 100644 --- a/app/less/archetype.less +++ b/app/less/archetype.less @@ -315,6 +315,14 @@ small { margin-left: 5px; } + + a { + float: right; + + img { + width: 35px; + } + } } .manual-link { From 4be6a13fc0e085d8cb637a375d20068a45acc732 Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Thu, 8 Oct 2015 09:00:19 -0400 Subject: [PATCH 60/94] This never got bumped up, but most people are past that version. --- config/package.nuspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/package.nuspec b/config/package.nuspec index 9c62d84..6755f9e 100644 --- a/config/package.nuspec +++ b/config/package.nuspec @@ -12,7 +12,7 @@ http://github.com/imulus/archetype/raw/master/assets/logo.png <%= licenseUrl %> - + \ No newline at end of file From f405239115caefdd9bc447adb02ab6ae1ce7e78c Mon Sep 17 00:00:00 2001 From: kgiszewski Date: Thu, 8 Oct 2015 13:42:19 -0400 Subject: [PATCH 61/94] Fixed goofed up packages, bump to v1.11.1 --- Gruntfile.js | 2 +- app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs | 4 ++-- config/meta.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 2d17952..4c1340c 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -279,7 +279,7 @@ module.exports = function(grunt) { } }); - grunt.registerTask('default', ['clean', 'string-replace', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:assets', 'copy:config', 'clean:html', 'clean:js', 'clean:less']); + grunt.registerTask('default', ['clean', 'string-replace', 'less', 'concat', 'assemblyinfo', 'msbuild:dist', 'copy:dll', 'copy:assets', 'copy:html', 'copy:config', 'clean:html', 'clean:js', 'clean:less']); grunt.registerTask('nuget', ['clean:tmp', 'default', 'copy:nuget', 'template:nuspec', 'nugetpack', 'clean:tmp']); grunt.registerTask('umbraco', ['clean:tmp', 'default', 'copy:umbraco', 'umbracoPackage', 'clean:tmp']); diff --git a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs index 34b1003..d11b181 100644 --- a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs +++ b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("1.11")] -[assembly: AssemblyFileVersion("1.11")] +[assembly: AssemblyVersion("1.11.1")] +[assembly: AssemblyFileVersion("1.11.1")] diff --git a/config/meta.json b/config/meta.json index b88d7bf..0f82d05 100644 --- a/config/meta.json +++ b/config/meta.json @@ -1,6 +1,6 @@ { "name": "Archetype", - "version": "1.11", + "version": "1.11.1", "url": "http://github.com/imulus/archetype/", "author": "Imulus - Kevin Giszewski - Tom Fulton - Lee Kelleher - Matt Brailsford - Kenn Jacobsen - Et. Al.", "authorUrl": "http://imulus.com/", From f5f4e80800945604a32e5c8ea23d14585afbe9c5 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 26 Oct 2015 10:52:27 +0100 Subject: [PATCH 62/94] Added "lazy loading" for fieldset properties I've had a big performance problem when loading big child archetypes in an archetype, by adding a ng-if the digest cycle isn't called directly when loading the directive --- app/views/archetype.default.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/archetype.default.html b/app/views/archetype.default.html index 0a76e13..d952cc0 100644 --- a/app/views/archetype.default.html +++ b/app/views/archetype.default.html @@ -21,7 +21,7 @@
          -
          +

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