Merge pull request #2609 from umbraco/temp8-U4-11173
Fixes - U4-11173 Update the publish dialog list to only show languages that have pending changes
This commit is contained in:
@@ -218,6 +218,7 @@ Use this directive to construct a header inside the main editor window.
|
||||
}
|
||||
|
||||
function setCurrentVariant(variants) {
|
||||
|
||||
angular.forEach(variants, function (variant) {
|
||||
if(variant.current) {
|
||||
scope.vm.currentVariant = variant;
|
||||
@@ -245,8 +246,8 @@ Use this directive to construct a header inside the main editor window.
|
||||
});
|
||||
}
|
||||
|
||||
scope.goBack = function() {
|
||||
if(scope.onBack) {
|
||||
scope.goBack = function () {
|
||||
if (scope.onBack) {
|
||||
scope.onBack();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,23 +1,27 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
function PublishController($scope, $timeout) {
|
||||
function PublishController($scope) {
|
||||
|
||||
var vm = this;
|
||||
vm.variants = $scope.model.variants;
|
||||
var variants = $scope.model.variants;
|
||||
vm.changeSelection = changeSelection;
|
||||
vm.loading = true;
|
||||
|
||||
vm.dirtyVariants = [];
|
||||
vm.pristineVariants = [];
|
||||
|
||||
//watch this model, if it's reset, then re init
|
||||
$scope.$watch(function() {
|
||||
return $scope.model.variants;
|
||||
},
|
||||
function(newVal, oldVal) {
|
||||
$scope.$watch(function () {
|
||||
return $scope.model.variants;
|
||||
},
|
||||
function (newVal, oldVal) {
|
||||
vm.variants = newVal;
|
||||
if (oldVal && oldVal.length) {
|
||||
//re-bind the selections
|
||||
for (var i = 0; i < oldVal.length; i++) {
|
||||
var found = _.find(vm.variants, function(v) {
|
||||
return v.language.id == oldVal[i].language.id;
|
||||
var found = _.find(variants, function (v) {
|
||||
return v.language.id === oldVal[i].language.id;
|
||||
});
|
||||
if (found) {
|
||||
found.publish = oldVal[i].publish;
|
||||
@@ -28,24 +32,42 @@
|
||||
});
|
||||
|
||||
function changeSelection(variant) {
|
||||
var firstSelected = _.find(vm.variants, function(v) {
|
||||
var firstSelected = _.find(variants, function (v) {
|
||||
return v.publish;
|
||||
});
|
||||
$scope.model.disableSubmitButton = !firstSelected; //disable submit button if there is none selected
|
||||
}
|
||||
|
||||
function onInit() {
|
||||
_.each(vm.variants,
|
||||
function (v) {
|
||||
v.compositeId = v.language.id + "_" + (v.segment ? v.segment : "");
|
||||
v.htmlId = "publish_variant_" + v.compositeId;
|
||||
_.each(variants,
|
||||
function (variant) {
|
||||
variant.compositeId = variant.language.id + "_" + (variant.segment ? variant.segment : "");
|
||||
variant.htmlId = "publish_variant_" + variant.compositeId;
|
||||
|
||||
//separate "pristine" and "dirty" variants
|
||||
if (variant.isEdited === true) {
|
||||
vm.dirtyVariants.push(variant);
|
||||
} else if (variant.isEdited === true ||
|
||||
variant.isEdited === false && variant.state === "Unpublished") {
|
||||
vm.dirtyVariants.push(variant);
|
||||
} else {
|
||||
vm.pristineVariants.push(variant);
|
||||
}
|
||||
});
|
||||
//now sort it so that the current one is at the top
|
||||
vm.variants = _.sortBy(vm.variants, function(v) {
|
||||
return v.current ? 0 : 1;
|
||||
});
|
||||
//ensure that the current one is selected
|
||||
vm.variants[0].publish = true;
|
||||
|
||||
if (vm.dirtyVariants.length !== 0) {
|
||||
//now sort it so that the current one is at the top
|
||||
vm.dirtyVariants = _.sortBy(vm.dirtyVariants, function (v) {
|
||||
return v.current ? 0 : 1;
|
||||
});
|
||||
//ensure that the current one is selected
|
||||
vm.dirtyVariants[0].publish = true;
|
||||
} else {
|
||||
//disable Publish button if we have nothing to publish
|
||||
$scope.model.disableSubmitButton = true;
|
||||
}
|
||||
|
||||
vm.loading = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,34 +1,52 @@
|
||||
<div ng-controller="Umbraco.Overlays.PublishController as vm" >
|
||||
|
||||
<div ng-controller="Umbraco.Overlays.PublishController as vm">
|
||||
|
||||
<div style="margin-bottom: 15px;">
|
||||
<p>What languages would you like to publish?</p>
|
||||
<p ng-if="vm.dirtyVariants.length > 0"><localize key="content_languagesToPublish"></localize></p>
|
||||
<p ng-if="vm.dirtyVariants.length === 0"><localize key="content_noLanguagesToPublish"></localize></p>
|
||||
</div>
|
||||
|
||||
<div ng-if="vm.loading" style="min-height: 50px; position: relative;">
|
||||
<umb-load-indicator></umb-load-indicator>
|
||||
</div>
|
||||
|
||||
<div class="umb-list umb-list--condensed" ng-if="!vm.loading">
|
||||
<div class="umb-list-item" ng-repeat="variant in vm.variants">
|
||||
<div class="umb-list umb-list--condensed" ng-if="!vm.loading && vm.dirtyVariants">
|
||||
|
||||
<div class="umb-list-item" ng-repeat="variant in vm.dirtyVariants">
|
||||
<ng-form name="publishVariantSelectorForm">
|
||||
<label class="flex" for="{{variant.htmlId}}">
|
||||
<input
|
||||
id="{{variant.htmlId}}"
|
||||
name="publishVariantSelector"
|
||||
type="checkbox"
|
||||
ng-model="variant.publish"
|
||||
ng-change="vm.changeSelection(variant)"
|
||||
ng-disabled="variant.validationError"
|
||||
style="margin-right: 8px;"
|
||||
val-server-field="{{variant.htmlId}}"/>
|
||||
<input id="{{variant.htmlId}}"
|
||||
name="publishVariantSelector"
|
||||
type="checkbox"
|
||||
ng-model="variant.publish"
|
||||
ng-change="vm.changeSelection(variant)"
|
||||
ng-disabled="variant.validationError"
|
||||
style="margin-right: 8px;"
|
||||
val-server-field="{{variant.htmlId}}" />
|
||||
<div>
|
||||
<div ng-class="{'bold': variant.published}" style="margin-bottom: 2px;">{{ variant.language.name }}</div>
|
||||
<div class="umb-permission__description" ng-if="!variant.validationError">{{ variant.state }}</div>
|
||||
<div class="umb-permission__description" ng-if="!variant.validationError && variant.isEdited && variant.state === 'Published'"><localize key="content_publishedPendingChanges"></localize></div>
|
||||
<div class="umb-permission__description" ng-if="!variant.validationError && variant.isEdited && variant.state === 'Unpublished'"><localize key="content_unpublishedPendingChanges"></localize></div>
|
||||
<div class="umb-permission__description" ng-if="!variant.validationError && variant.isEdited === false">{{ variant.state }}</div>
|
||||
|
||||
<div class="umb-permission__description" style="color: #F02E28;" val-msg-for="publishVariantSelector" val-toggle-msg="valServerField"></div>
|
||||
</div>
|
||||
</label>
|
||||
</ng-form>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
<div class="umb-list umb-list--condensed" ng-if="!vm.loading && vm.pristineVariants">
|
||||
<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.pristineVariants">
|
||||
<div>
|
||||
<div ng-class="{'bold': variant.published}" style="margin-bottom: 2px;">{{ variant.language.name }}</div>
|
||||
<div class="umb-permission__description" ng-if="!variant.validationError">{{ variant.state }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -59,7 +59,9 @@
|
||||
<umb-dropdown-item class="umb-variant-switcher__item" ng-class="{'umb-variant-switcher_item--current': variant.current}" ng-repeat="variant in variants">
|
||||
<a href="" class="umb-variant-switcher__name-wrapper" ng-click="selectVariant($event, variant)" prevent-default>
|
||||
<span class="umb-variant-switcher__name">{{variant.language.name}}</span>
|
||||
<span class="umb-variant-switcher__state">{{variant.state}}</span>
|
||||
<span class="umb-variant-switcher__state" ng-if="!variant.validationError && variant.isEdited && variant.state === 'Published'"><localize key="content_publishedPendingChanges"></localize></span>
|
||||
<span class="umb-variant-switcher__state" ng-if="!variant.validationError && variant.isEdited && variant.state === 'Unpublished'"><localize key="content_unpublishedPendingChanges"></localize></span>
|
||||
<span class="umb-variant-switcher__state" ng-if="variant.isEdited === false">{{variant.state}}</span>
|
||||
</a>
|
||||
<!-- Commented out as opposed to removed until we fully support split view (U4-11290) -->
|
||||
<!--
|
||||
|
||||
@@ -201,6 +201,7 @@
|
||||
<key alias="publish">Publish</key>
|
||||
<key alias="published">Published</key>
|
||||
<key alias="publishedPendingChanges">Published (pending changes)</key>
|
||||
<key alias="unpublishedPendingChanges">Unpublished (pending changes)</key>
|
||||
<key alias="publishStatus">Publication Status</key>
|
||||
<key alias="releaseDate">Publish at</key>
|
||||
<key alias="unpublishDate">Unpublish at</key>
|
||||
@@ -231,6 +232,10 @@
|
||||
<key alias="contentRoot">Content root</key>
|
||||
<key alias="isSensitiveValue">This value is hidden. If you need access to view this value please contact your website administrator.</key>
|
||||
<key alias="isSensitiveValue_short">This value is hidden.</key>
|
||||
<key alias="languagesToPublish">What languages would you like to publish?</key>
|
||||
<key alias="noLanguagesToPublish">No languages available to be published.</key>
|
||||
<key alias="publishedLanguages">Published Languages.</key>
|
||||
|
||||
</area>
|
||||
<area alias="blueprints">
|
||||
<key alias="createBlueprintFrom">Create a new Content Template from '%0%'</key>
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Umbraco.Web.Models.ContentEditing
|
||||
/// </summary>
|
||||
[DataMember(Name = "name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
|
||||
[DataMember(Name = "state")]
|
||||
public string PublishedState { get; set; }
|
||||
|
||||
@@ -33,6 +33,9 @@ namespace Umbraco.Web.Models.ContentEditing
|
||||
[DataMember(Name = "exists")]
|
||||
public bool Exists { get; set; }
|
||||
|
||||
[DataMember(Name = "isEdited")]
|
||||
public bool IsEdited { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Determines if this is the variant currently being edited
|
||||
/// </summary>
|
||||
|
||||
@@ -36,6 +36,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
Name = source.GetName(x.IsoCode),
|
||||
Exists = source.IsCultureAvailable(x.IsoCode), // segments ??
|
||||
PublishedState = source.PublishedState.ToString(),
|
||||
IsEdited = source.IsCultureEdited(x.IsoCode)
|
||||
//Segment = ?? We'll need to populate this one day when we support segments
|
||||
}).ToList();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user