Compare commits

...

16 Commits

Author SHA1 Message Date
Kevin Giszewski 014b407abb Let's do purple 2017-08-18 09:03:03 -04:00
Kenn Jacobsen 5aa16a6636 Bump package version 2017-08-18 08:10:43 +02:00
Kenn Jacobsen 7206bba46a Merge pull request #423 from kjac/min-fieldsets-feature
Add minimum fieldsets feature
2017-08-15 12:43:07 +02:00
Kenn Jacobsen af9db94fb6 Merge pull request #421 from kjac/Fix-418
Fix #418
2017-08-09 13:37:50 +02:00
Kenn Jacobsen d2014be81b Fix #418
Don't let the entire published content conversion break if one property
no longer exists.
2017-08-09 13:36:59 +02:00
Kenn Jacobsen 01b8b3b508 Merge remote-tracking branch 'refs/remotes/origin/master' into min-fieldsets-feature 2017-08-09 13:24:35 +02:00
Kenn Jacobsen 734125fa25 Merge remote-tracking branch 'refs/remotes/kgiszewski/master' 2017-08-09 13:24:06 +02:00
Kenn Jacobsen 76678f538d Merge pull request #420 from kjac/fix-414
Fix #414
2017-08-09 13:22:55 +02:00
Kenn Jacobsen 7fe23fdf4c Fix #414
Using ng-src instead of src fixes the issue.
2017-08-09 13:22:05 +02:00
Kenn Jacobsen c956c12cdf Merge remote-tracking branch 'refs/remotes/kgiszewski/master' 2017-08-09 13:16:19 +02:00
Kenn Jacobsen 8706feb882 Merge pull request #419 from kjac/fix-417
Tested with a custom property editor to make sure the JSON default value works.
2017-08-09 12:58:59 +02:00
Kenn Jacobsen c8364986a2 Fix #417
Don't turn an object into a string if it's not...
2017-08-09 12:49:47 +02:00
Kenn Jacobsen 4d24150bdc Merge remote-tracking branch 'refs/remotes/kgiszewski/master' 2017-08-09 12:48:17 +02:00
kjac a16c4b4da9 Merge remote-tracking branch 'refs/remotes/kgiszewski/master' into min-fieldsets-feature 2017-07-28 16:09:49 +02:00
Kevin Giszewski 75a312c309 Update README.md 2017-06-26 09:12:11 -04:00
kjac 7bc9584940 Add min fieldsets handling 2017-06-12 22:26:03 +02:00
10 changed files with 53 additions and 14 deletions
+5 -1
View File
@@ -10,7 +10,6 @@ Install the selected <a href='https://github.com/imulus/Archetype/releases'>rele
## Official Docs ##
https://github.com/kgiszewski/ArchetypeManual
## News and Updates ##
Follow us on Twitter https://twitter.com/ArchetypeKit
@@ -21,6 +20,11 @@ Follow us on Twitter https://twitter.com/ArchetypeKit
* Matt Brailsford - The Outfield - http://www.theoutfield.co.uk/
* Kenn Jacobsen - Vertica - http://kennjacobsen.dk/
## Donate!
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KBKWLURGLGU6L)
This project is funded by the core team members' time only. We don't charge for Archetype but it does take quite a bit of effort to keep it up-to-date with Umbraco core changes. If you're making a few bucks off of Archetype, we wouldn't refuse a donation :)
## Contribute ##
Want to contribute to Archetype? You'll want to use Grunt (our task runner) to help you integrate with a local copy of Umbraco.
@@ -49,6 +49,9 @@ namespace Archetype.Models
[JsonProperty("hidePropertyLabel")]
public bool HidePropertyLabel { get; set; }
[JsonProperty("minFieldsets", NullValueHandling = NullValueHandling.Ignore)]
public int MinFieldsets { get; set; }
[JsonProperty("maxFieldsets", NullValueHandling = NullValueHandling.Ignore)]
public int MaxFieldsets { get; set; }
@@ -1,5 +1,6 @@
using System;
using Archetype.Extensions;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
@@ -24,14 +25,22 @@ namespace Archetype.Models
_property = property;
_rawValue = property.Value;
_propertyType = property.CreateDummyPropertyType();
// #418 - need to wrap this in a try/catch to prevent orphaned properties from breaking everything
try
{
_propertyType = property.CreateDummyPropertyType();
if (_propertyType != null)
{
_sourceValue = new Lazy<object>(() => _propertyType.ConvertDataToSource(_rawValue, preview));
_objectValue = new Lazy<object>(() => _propertyType.ConvertSourceToObject(_sourceValue.Value, preview));
_xpathValue = new Lazy<object>(() => _propertyType.ConvertSourceToXPath(_sourceValue.Value, preview));
}
if (_propertyType != null)
{
_sourceValue = new Lazy<object>(() => _propertyType.ConvertDataToSource(_rawValue, preview));
_objectValue = new Lazy<object>(() => _propertyType.ConvertSourceToObject(_sourceValue.Value, preview));
_xpathValue = new Lazy<object>(() => _propertyType.ConvertSourceToXPath(_sourceValue.Value, preview));
}
}
catch(Exception ex)
{
LogHelper.Warn<ArchetypePublishedProperty>(string.Format("Could not create an IPublishedProperty for property: {0} - the error was: {1}", property.Alias, ex.Message));
}
}
internal ArchetypePropertyModel ArchetypeProperty
@@ -1,4 +1,4 @@
using System.Reflection;
[assembly: AssemblyVersion("1.14.1")]
[assembly: AssemblyFileVersion("1.14.1")]
[assembly: AssemblyVersion("1.15.1")]
[assembly: AssemblyFileVersion("1.15.1")]
+15 -1
View File
@@ -1,5 +1,5 @@
{{VERSION}}
angular.module("umbraco").controller("Imulus.ArchetypeController", function ($scope, $http, $filter, assetsService, angularHelper, notificationsService, $timeout, fileManager, entityResource, archetypeService, archetypeLabelService, archetypeCacheService, archetypePropertyEditorResource) {
angular.module("umbraco").controller("Imulus.ArchetypeController", function ($scope, $http, $filter, $interpolate, assetsService, angularHelper, notificationsService, $timeout, fileManager, entityResource, archetypeService, archetypeLabelService, archetypeCacheService, archetypePropertyEditorResource, archetypeLocalizationService) {
// Variables.
var draggedParent;
@@ -541,6 +541,13 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
$timeout(function () {
$scope.handleMandatoryValidation();
}, 50);
// localize the message for minimum fieldsets validation errors
archetypeLocalizationService.localize("minFieldsetsMessage").then(function (value) {
value = value || "You must add minimum {{minFieldsets}} items";
var exp = $interpolate(value);
$scope.minFieldsetsMessage = exp({ minFieldsets: $scope.model.config.minFieldsets });
});
}
function addDefaultProperties(fieldsets)
@@ -798,6 +805,13 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
}
}
$scope.minFieldsetsFulfilled = function () {
if (!$scope.model.config.minFieldsets) {
return true;
}
return $scope.numberOfEnabledFieldsets() >= $scope.model.config.minFieldsets;
}
//custom js
if ($scope.model.config.customJsPath) {
assetsService.loadJs($scope.model.config.customJsPath);
+2 -1
View File
@@ -65,7 +65,8 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c
if (!scope.renderModelPropertyIndex)
{
archetypeService.getFieldset(scope).properties.push(JSON.parse('{"alias": "' + alias + '", "value": "' + defaultValue + '"}'));
var propertyValue = { alias: alias, value: defaultValue };
archetypeService.getFieldset(scope).properties.push(propertyValue);
scope.renderModelPropertyIndex = archetypeService.getPropertyIndexByAlias(archetypeService.getFieldset(scope).properties, alias);
}
@@ -14,6 +14,10 @@
<div>
<label for="archetypeAdvancedOptionsMultipleOpen"><input type="checkbox" id="archetypeAdvancedOptionsMultipleOpen" ng-model="dialogData.model.enableMultipleOpen" /><archetype-localize key="enableMultipleOpen">Enable Multiple Open Fieldsets?</archetype-localize><small><archetype-localize key="enableMultipleOpenDescription">When fieldset collapsing is enabled, this allows multiple fieldsets to be open at the same time.</archetype-localize></small></label>
</div>
<div>
<label for="archetypeAdvancedOptionsMinFieldsets"><archetype-localize key="minFieldsets">Min Fieldsets</archetype-localize><small><archetype-localize key="minFieldsetsDescription">How many Fieldsets are required? Default is none.</archetype-localize></small></label>
<input type="number" id="archetypeAdvancedOptionsMinFieldsets" class="archetypeMaxFieldsets" ng-model="dialogData.model.minFieldsets" />
</div>
<div>
<label for="archetypeAdvancedOptionsMaxFieldsets"><archetype-localize key="maxFieldsets">Max Fieldsets</archetype-localize><small><archetype-localize key="maxFieldsetsDescription">How many Fieldsets are allowed? Entering '1' will disable the controls. Default is unlimited.</archetype-localize></small></label>
<input type="number" id="archetypeAdvancedOptionsMaxFieldsets" class="archetypeMaxFieldsets" ng-model="dialogData.model.maxFieldsets"/>
+5 -1
View File
@@ -14,6 +14,10 @@
<input type="hidden" name="archetypeMandatory" ng-model="model.mandatoryValidation" ng-required="model.validation.mandatory" />
<div><span class="help-inline" val-msg-for="archetypeMandatory" val-toggle-msg="required"><archetype-localize key="required">Required</archetype-localize></span></div>
<!-- Min fieldsets validation. -->
<input type="hidden" name="archetypeMinFieldsets" ng-model="model.mandatoryMinFieldsets" ng-required="!minFieldsetsFulfilled()" />
<div><span class="help-inline" val-msg-for="archetypeMinFieldsets" val-toggle-msg="required">{{minFieldsetsMessage}}</span></div>
<!-- Fieldsets. -->
<ul ui-sortable="sortableOptions" class="archetypeSortable" ng-class="{archetypeEmpty: model.value.fieldsets.length === 0 || sortingLastItem(), archetypeCrossDraggable: model.config.enableCrossDragging}" ng-model="model.value.fieldsets">
<li ng-repeat="fieldset in model.value.fieldsets">
@@ -140,7 +144,7 @@
</div>
<div class="fieldsetPreviewImage">
<a href="{{overlayMenu.fieldsetPreview.previewImage}}" target="_blank">
<img src="{{overlayMenu.fieldsetPreview.previewImage}}" />
<img ng-src="{{overlayMenu.fieldsetPreview.previewImage}}" />
</a>
</div>
<div class="fieldsetPreviewClose">
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "Archetype",
"version": "1.14.1",
"version": "1.15.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/",