Merge remote-tracking branch 'refs/remotes/imulus/master'
This commit is contained in:
@@ -10,6 +10,8 @@ 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
|
||||
|
||||
##Core Team##
|
||||
|
||||
@@ -277,19 +277,19 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
return true;
|
||||
}
|
||||
|
||||
$scope.isDisabledByPublishing = function (fieldset) {
|
||||
$scope.isDisabledByPublishing = function(fieldset) {
|
||||
if ($scope.canPublish() === false) {
|
||||
return false;
|
||||
}
|
||||
// NOTE: all comparison is done in local datetime
|
||||
// - that's fine because the selected local datetimes will be converted to UTC datetimes when submitted
|
||||
if (fieldset.expireDateModel && fieldset.expireDateModel.value) {
|
||||
if (fieldset.expireDateModel && fieldset.expireDateModel.value && (moment() > moment(fieldset.expireDateModel.value))) {
|
||||
// an expired release affects the fieldset
|
||||
return moment() > moment(fieldset.expireDateModel.value);
|
||||
return true;
|
||||
}
|
||||
if (fieldset.releaseDateModel && fieldset.releaseDateModel.value) {
|
||||
if (fieldset.releaseDateModel && fieldset.releaseDateModel.value && (moment(fieldset.releaseDateModel.value) > moment())) {
|
||||
// a pending release affects the fieldset
|
||||
return moment(fieldset.releaseDateModel.value) > moment();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -317,13 +317,15 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
}
|
||||
|
||||
function addCustomProperties(fieldsets) {
|
||||
_.each(fieldsets, function (fieldset) {
|
||||
addCustomPropertiesToFieldset(fieldset);
|
||||
// make sure we have loaded moment.js before using it
|
||||
assetsService.loadJs("lib/moment/moment-with-locales.js").then(function() {
|
||||
_.each(fieldsets, function(fieldset) {
|
||||
addCustomPropertiesToFieldset(fieldset);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function addCustomPropertiesToFieldset(fieldset) {
|
||||
|
||||
// create models for publish configuration (utilizing the built-in datepicker data type)
|
||||
// NOTE: all datetimes must be converted from UTC to local
|
||||
fieldset.releaseDateModel = {
|
||||
@@ -362,6 +364,12 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
return fieldset.collapse;
|
||||
}
|
||||
|
||||
// added to track loaded fieldsets
|
||||
$scope.loadedFieldsets = [];
|
||||
$scope.isLoaded = function (fieldset) {
|
||||
return $scope.loadedFieldsets.indexOf(fieldset) >= 0;
|
||||
}
|
||||
|
||||
//helper for expanding/collapsing fieldsets
|
||||
$scope.focusFieldset = function(fieldset){
|
||||
fixDisableSelection();
|
||||
@@ -384,12 +392,14 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
if(!fieldset && $scope.model.value.fieldsets.length == 1)
|
||||
{
|
||||
$scope.model.value.fieldsets[0].collapse = false;
|
||||
$scope.loadedFieldsets.push($scope.model.value.fieldsets[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(iniState && fieldset)
|
||||
{
|
||||
fieldset.collapse = !iniState;
|
||||
$scope.loadedFieldsets.push(fieldset);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -446,6 +456,9 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
// reset submit watcher counter on save
|
||||
$scope.activeSubmitWatcher = 0;
|
||||
|
||||
// init loaded fieldsets tracking
|
||||
$scope.loadedFieldsets = _.where($scope.model.value.fieldsets, { collapse: false });
|
||||
|
||||
// create properties needed for the backoffice to work (data that is not serialized to DB)
|
||||
addCustomProperties($scope.model.value.fieldsets);
|
||||
});
|
||||
@@ -558,13 +571,18 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
return $scope.activeSubmitWatcher;
|
||||
}
|
||||
$scope.submitWatcherOnSubmit = function (args) {
|
||||
_.each($scope.model.value.fieldsets, function(fieldset) {
|
||||
$scope.$broadcast("archetypeFormSubmitting", args);
|
||||
}
|
||||
|
||||
// we'll use our own "archetypeFormSubmitting" event to save custom properties, as at least some
|
||||
// of the editors store their values back to the model on the core "formSubmitting" event
|
||||
$scope.$on("archetypeFormSubmitting", function (ev, args) {
|
||||
_.each($scope.model.value.fieldsets, function (fieldset) {
|
||||
// extract the publish configuration from the fieldsets (and convert local datetimes to UTC)
|
||||
fieldset.releaseDate = toUtc(fieldset.releaseDateModel.value);
|
||||
fieldset.expireDate = toUtc(fieldset.expireDateModel.value);
|
||||
});
|
||||
$scope.$broadcast("archetypeFormSubmitting", args);
|
||||
}
|
||||
});
|
||||
|
||||
function toUtc(date) {
|
||||
if (!date) {
|
||||
|
||||
@@ -93,9 +93,11 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c
|
||||
}
|
||||
}
|
||||
|
||||
//upload, colorpicker datatype hack
|
||||
if(view.indexOf('fileupload.html') != -1 || view.indexOf('colorpicker.html') != -1) {
|
||||
//hacks for various built-in datatyps including upload, colorpicker and tags
|
||||
if (!scope.propertyForm) {
|
||||
scope.propertyForm = scope.form;
|
||||
}
|
||||
if (!scope.model.validation) {
|
||||
scope.model.validation = {};
|
||||
scope.model.validation.mandatory = 0;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
angular.module("umbraco.directives").directive('archetypeSubmitWatcher', function ($rootScope) {
|
||||
var linker = function (scope, element, attrs, ngModelCtrl) {
|
||||
// call the load callback on scope to obtain the ID of this submit watcher
|
||||
var id = scope.loadCallback();
|
||||
scope.$on("formSubmitting", function (ev, args) {
|
||||
var id = scope.loadCallback ? scope.loadCallback() : 0;
|
||||
|
||||
scope.$on("formSubmitting", function (ev, args) {
|
||||
// on the "formSubmitting" event, call the submit callback on scope to notify the Archetype controller to do it's magic
|
||||
if (id == scope.activeSubmitWatcher) {
|
||||
scope.submitCallback(args);
|
||||
@@ -22,4 +22,4 @@ angular.module("umbraco.directives").directive('archetypeSubmitWatcher', functio
|
||||
activeSubmitWatcher: '='
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -319,6 +319,9 @@
|
||||
}
|
||||
}
|
||||
.settingsHeader {
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
label {
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
<fieldset ng-class="['archetype-fieldset-' + fieldset.alias, (getFieldsetValidity(fieldset) == false ? 'archetypeFieldsetError' : '')]" ng-init="fieldsetConfigModel = getConfigFieldsetByAlias(fieldset.alias)">
|
||||
<div class="archetypeFieldsetLabel" ng-class="{enableCollapsing: model.config.enableCollapsing}">
|
||||
<div ng-click="focusFieldset(fieldset)" class="label-sub module-label">
|
||||
<span class="caret" ng-hide="fieldset.collapse || !model.config.enableCollapsing"></span>
|
||||
<span class="caret caret-right" ng-show="fieldset.collapse && model.config.enableCollapsing"></span>
|
||||
<span class="caret" ng-class="{'caret-right': isCollapsed(fieldset)}" ng-show="model.config.enableCollapsing"></span>
|
||||
<label ng-class="{dimmed: isDisabled(fieldset)}">
|
||||
<i class="fieldsetIcon icon ng-class:fieldsetConfigModel.icon"></i>
|
||||
<span ng-bind="getFieldsetTitle(fieldsetConfigModel, $index)"></span>
|
||||
@@ -22,7 +21,7 @@
|
||||
<i class="icon icon-delete" ng-click="removeRow($index)" ng-show="canRemove()"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="archetypeCollapser animate-hide" ng-hide="model.config.enableCollapsing && isCollapsed(fieldset)" ng-if="!isCollapsed(fieldset)">
|
||||
<div class="archetypeCollapser animate-hide" ng-hide="model.config.enableCollapsing && isCollapsed(fieldset)" ng-if="isLoaded(fieldset)">
|
||||
<form class="form-inline">
|
||||
<div ng-class="[('archetype-property-' + property.alias), (getPropertyValidity($parent.$index, property.alias) === false ? 'archetypePropertyError' : '')]" class="archetypeProperty control-group" ng-repeat="property in fieldsetConfigModel.properties">
|
||||
<label ng-hide="model.config.hidePropertyLabels == '1'" class="control-label" for="archetype-property-{{model.alias}}-f{{$parent.$index}}-{{property.alias}}-p{{$index}}" ng-attr-title="{{ isDebuggingEnabled || model.config.developerMode ? property.alias : null }}">
|
||||
@@ -47,7 +46,7 @@
|
||||
</div>
|
||||
<div class="settings" ng-show="showSettings">
|
||||
<!-- misc fieldset settings go here -->
|
||||
<div ng-show="canPublish()">
|
||||
<div ng-if="fieldset.releaseDateModel" ng-show="canPublish()">
|
||||
<label ng-hide="model.config.hidePropertyLabels == '1'" class="control-label">
|
||||
<span><archetype-localize key="publish">Publishing</archetype-localize></span>
|
||||
<div class="archetypeFieldsetHelpText">
|
||||
@@ -67,6 +66,8 @@
|
||||
</label>
|
||||
<umb-editor model="fieldset.expireDateModel"></umb-editor>
|
||||
</div>
|
||||
<!-- we need a submit watcher here to make sure the publish dates are saved back to their models -->
|
||||
<archetype-submit-watcher active-submit-watcher="activeSubmitWatcher" load-callback="submitWatcherOnLoad" submit-callback="submitWatcherOnSubmit"></archetype-submit-watcher>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user