394572a8fc
By tracking the fieldsets that have been expanded (loaded), we can make sure the submit watchers fire appropriately, even when the fieldsets are collapsed down again. Apart from hopefully fixing the publishing issues for collapsed fieldsets, this also adds a performance gain if the users expand and collapse the same fieldsets more than once, since the fieldsets now only load the first time they're expanded (instead of every time). This also - at least partially - fixes the validation issue #325 introduced by #301
109 lines
8.5 KiB
HTML
109 lines
8.5 KiB
HTML
{{VERSION_HTML}}
|
|
<div class="archetypeEditor ng-class:model.config.customCssClass">
|
|
<textarea class="archetypeDeveloperModel" ng-show="model.config.developerMode" ng-model="model.value"></textarea>
|
|
<ul ui-sortable="sortableOptions" ng-model="model.value.fieldsets" ng-show="!showAddButton()">
|
|
<li ng-repeat="fieldset in model.value.fieldsets">
|
|
<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-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>
|
|
</label>
|
|
</div>
|
|
<div class="archetypeEditorControls label-sub" ng-hide="model.config.hideFieldsetControls">
|
|
<i class="icon icon-add" ng-show="canAdd()" ng-click="openFieldsetPicker($index, $event)"></i>
|
|
<i class="icon icon-navigation handle" ng-show="canSort()"></i>
|
|
<i class="icon icon-documents" ng-click="cloneRow($index)" ng-show="canClone()"></i>
|
|
<i class="icon icon-power" ng-class="{'icon-active': fieldset.disabled}" ng-click="enableDisable(fieldset)" ng-show="showDisableIcon(fieldset)"></i>
|
|
<i class="icon icon-time icon-disabled" ng-class="{'icon-active': isDisabledByPublishing(fieldset)}" ng-show="showPublishingIcon(fieldset)"></i>
|
|
<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="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 }}">
|
|
<span>{{property.label}}</span>
|
|
<div class="archetypeFieldsetHelpText" ng-show="property.helpText">
|
|
<small>{{property.helpText}}</small>
|
|
</div>
|
|
</label>
|
|
|
|
<div ng-class="[(model.config.hidePropertyLabels == '1' ? 'controls-no-label' : 'controls')]">
|
|
<archetype-property class="archetypeEditor" property="property" property-editor-alias="model.alias" fieldset-index="$parent.$index" fieldset="fieldset" archetype-config="model.config" property-config-index="$index" archetype-render-model="model.value" umbraco-form="form"></archetype-property>
|
|
<archetype-submit-watcher active-submit-watcher="activeSubmitWatcher" load-callback="submitWatcherOnLoad" submit-callback="submitWatcherOnSubmit"></archetype-submit-watcher>
|
|
</div>
|
|
</div>
|
|
<div class="control-group archetypeProperty settingsWrapper" ng-show="canConfigure()">
|
|
<div ng-click="showSettings = !showSettings" class="settingsHeader">
|
|
<span class="caret" ng-show="showSettings"></span>
|
|
<span class="caret caret-right" ng-hide="showSettings"></span>
|
|
<label>
|
|
<span><archetype-localize key="settings">Settings</archetype-localize></span>
|
|
</label>
|
|
</div>
|
|
<div class="settings" ng-show="showSettings">
|
|
<!-- misc fieldset settings go here -->
|
|
<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">
|
|
<small><archetype-localize key="publishHelpText">Configure automatic publishing and/or unpublishing of this item</archetype-localize></small>
|
|
</div>
|
|
</label>
|
|
<div class="publishOptions" ng-class="[(model.config.hidePropertyLabels == '1' ? 'controls-no-label' : 'controls')]">
|
|
<div class="publishDate">
|
|
<label for="{{fieldset.releaseDateModel.alias}}">
|
|
<archetype-localize key="publishReleaseDate">Publish at</archetype-localize>
|
|
</label>
|
|
<umb-editor model="fieldset.releaseDateModel"></umb-editor>
|
|
</div>
|
|
<div class="publishDate">
|
|
<label for="{{fieldset.expireDateModel.alias}}">
|
|
<archetype-localize key="publishExpireDate">Unpublish at</archetype-localize>
|
|
</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>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</fieldset>
|
|
</li>
|
|
</ul>
|
|
<div ng-show="showAddButton()">
|
|
<a class="archetypeAddButton" ng-click="openFieldsetPicker(0, $event)" prevent-default>
|
|
<i class="icon icon-add"></i>
|
|
<archetype-localize key="addFieldset">Add an item</archetype-localize>
|
|
</a>
|
|
</div>
|
|
<div class="usky-grid fieldsetPicker" ng-class="{withGroups: overlayMenu.fieldsetGroups.length > 1}" ng-if="overlayMenu.show">
|
|
<div class="cell-tools-menu" ng-style="overlayMenu.style" delayed-mouseleave="closeFieldsetPicker()" archetype-click-outside="closeFieldsetPicker()">
|
|
<h5>
|
|
<archetype-localize key="addFieldset">Add an item</archetype-localize>
|
|
</h5>
|
|
<ul class="groups" ng-show="overlayMenu.fieldsetGroups.length > 1">
|
|
<li ng-repeat="fieldsetGroup in overlayMenu.fieldsetGroups" ng-class="{active: fieldsetGroup == overlayMenu.activeFieldsetGroup}">
|
|
<a ng-click="overlayMenu.activeFieldsetGroup = fieldsetGroup">
|
|
{{fieldsetGroup.name}}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<ul class="elements">
|
|
<li ng-repeat="fieldset in overlayMenu.activeFieldsetGroup.fieldsets">
|
|
<a ng-click="pickFieldset(fieldset.alias, overlayMenu.index)" href>
|
|
<i class="icon {{fieldset.icon}}"></i>
|
|
{{fieldset.label}}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|