add filters
This commit is contained in:
@@ -8,6 +8,9 @@
|
||||
vm.datePickerChange = datePickerChange;
|
||||
vm.clearPublishDate = clearPublishDate;
|
||||
vm.clearUnpublishDate = clearUnpublishDate;
|
||||
vm.dirtyVariantFilter = dirtyVariantFilter;
|
||||
vm.pristineVariantFilter = pristineVariantFilter;
|
||||
vm.changeSelection = changeSelection;
|
||||
|
||||
vm.currentUser = null;
|
||||
vm.datePickerConfig = {
|
||||
@@ -26,6 +29,7 @@
|
||||
function onInit() {
|
||||
|
||||
vm.variants = $scope.model.variants;
|
||||
vm.hasPristineVariants = false;
|
||||
|
||||
if(!$scope.model.title) {
|
||||
localizationService.localize("general_scheduledPublishing").then(function(value){
|
||||
@@ -33,6 +37,40 @@
|
||||
});
|
||||
}
|
||||
|
||||
_.each(vm.variants,
|
||||
function (variant) {
|
||||
variant.compositeId = variant.language.culture + "_" + (variant.segment ? variant.segment : "");
|
||||
variant.htmlId = "_content_variant_" + variant.compositeId;
|
||||
|
||||
//check for pristine variants
|
||||
if (!vm.hasPristineVariants) {
|
||||
vm.hasPristineVariants = pristineVariantFilter(variant);
|
||||
}
|
||||
});
|
||||
|
||||
if (vm.variants.length !== 0) {
|
||||
//now sort it so that the current one is at the top
|
||||
vm.variants = _.sortBy(vm.variants, function (v) {
|
||||
return v.active ? 0 : 1;
|
||||
});
|
||||
|
||||
var active = _.find(vm.variants, function (v) {
|
||||
return v.active;
|
||||
});
|
||||
|
||||
if (active) {
|
||||
//ensure that the current one is selected
|
||||
active.schedule = true;
|
||||
active.save = true;
|
||||
}
|
||||
|
||||
//$scope.model.disableSubmitButton = !canPublish();
|
||||
|
||||
} else {
|
||||
//disable Publish button if we have nothing to publish, should not happen
|
||||
//$scope.model.disableSubmitButton = true;
|
||||
}
|
||||
|
||||
// get current backoffice user and format dates
|
||||
userService.getCurrentUser().then(function (currentUser) {
|
||||
|
||||
@@ -117,11 +155,57 @@
|
||||
|
||||
}
|
||||
|
||||
function changeSelection(variant) {
|
||||
$scope.model.disableSubmitButton = !canSchedule();
|
||||
//need to set the Save state to true if publish is true
|
||||
variant.save = variant.schedule;
|
||||
}
|
||||
|
||||
function dirtyVariantFilter(variant) {
|
||||
//determine a variant is 'dirty' (meaning it will show up as publish-able) if it's
|
||||
// * the active one
|
||||
// * it's editor is in a $dirty state
|
||||
// * it has pending saves
|
||||
// * it is unpublished
|
||||
// * it is in NotCreated state
|
||||
return (variant.active || variant.isDirty || variant.state === "Draft" || variant.state === "PublishedPendingChanges" || variant.state === "NotCreated");
|
||||
}
|
||||
|
||||
function pristineVariantFilter(variant) {
|
||||
return !(dirtyVariantFilter(variant));
|
||||
}
|
||||
|
||||
/** Returns true if publishing is possible based on if there are un-published mandatory languages */
|
||||
function canSchedule() {
|
||||
var selected = [];
|
||||
for (var i = 0; i < vm.variants.length; i++) {
|
||||
var variant = vm.variants[i];
|
||||
|
||||
//if this variant will show up in the publish-able list
|
||||
var publishable = dirtyVariantFilter(variant);
|
||||
|
||||
if ((variant.language.isMandatory && (variant.state === "NotCreated" || variant.state === "Draft"))
|
||||
&& (!publishable || !variant.schedule)) {
|
||||
//if a mandatory variant isn't published and it's not publishable or not selected to be published
|
||||
//then we cannot publish anything
|
||||
|
||||
//TODO: Show a message when this occurs
|
||||
return false;
|
||||
}
|
||||
|
||||
if (variant.schedule) {
|
||||
selected.push(variant.schedule);
|
||||
}
|
||||
}
|
||||
return selected.length > 0;
|
||||
}
|
||||
|
||||
onInit();
|
||||
|
||||
//when this dialog is closed, reset all 'save' flags
|
||||
$scope.$on('$destroy', function () {
|
||||
for (var i = 0; i < vm.variants.length; i++) {
|
||||
vm.variants[i].schedule = false;
|
||||
vm.variants[i].save = false;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -6,25 +6,25 @@
|
||||
|
||||
<div class="umb-list umb-list--condensed">
|
||||
|
||||
<div class="umb-list-item" ng-repeat="variant in vm.variants">
|
||||
<div class="umb-list-item" ng-repeat="variant in vm.variants | filter:vm.dirtyVariantFilter">
|
||||
<ng-form name="scheduleSelectorForm">
|
||||
<div class="flex">
|
||||
<input
|
||||
id="{{variant.language.culture}}"
|
||||
name="saveVariantSelector"
|
||||
type="checkbox"
|
||||
ng-model="variant.save"
|
||||
ng-model="variant.schedule"
|
||||
ng-change="vm.changeSelection(variant)"
|
||||
style="margin-right: 8px;" />
|
||||
<div>
|
||||
|
||||
<label for="{{variant.language.culture}}" style="margin-bottom: 2px;">
|
||||
<span>{{ variant.language.name }}</span>
|
||||
<strong ng-if="variant.language.isMandatory" class="umb-control-required">*</strong>
|
||||
</label>
|
||||
|
||||
<div>
|
||||
<umb-variant-state class="umb-permission__description" variant="variant"></umb-variant-state>
|
||||
<div class="umb-permission__description">
|
||||
<umb-variant-state variant="variant"></umb-variant-state>
|
||||
<span ng-if="variant.language.isMandatory"> - <localize key="languages_mandatoryLanguage"></localize></span>
|
||||
</div>
|
||||
|
||||
<div ng-if="variant.schedule" class="flex items-center" style="margin-top: 10px; margin-bottom: 10px;">
|
||||
@@ -81,5 +81,23 @@
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
<div class="umb-list umb-list--condensed" ng-if="vm.hasPristineVariants">
|
||||
<div style="margin-bottom: 15px; font-weight: bold;">
|
||||
<p><localize key="content_publishedLanguages"></localize></p>
|
||||
</div>
|
||||
|
||||
<div class="umb-list-item" ng-repeat="variant in vm.variants | filter:vm.pristineVariantFilter track by variant.language.culture">
|
||||
<div>
|
||||
<div style="margin-bottom: 2px;">
|
||||
<span>{{ variant.language.name }}</span>
|
||||
</div>
|
||||
<div class="umb-permission__description">
|
||||
<umb-variant-state variant="variant"></umb-variant-state>
|
||||
<span ng-if="variant.language.isMandatory"> - <localize key="languages_mandatoryLanguage"></localize></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user