Merge pull request #2333 from umbraco/temp-U4-10670

fixes: U4-10670 7.8. Visual indication on the info-tab or page in whi…
This commit is contained in:
Warren Buckley
2017-11-24 13:46:50 +00:00
committed by GitHub
4 changed files with 114 additions and 36 deletions

View File

@@ -49,6 +49,40 @@
}
function getNode() {
$scope.page.loading = true;
//we are editing so get the content item from the server
$scope.getMethod()($scope.contentId)
.then(function (data) {
$scope.content = data;
if (data.isChildOfListView && data.trashed === false) {
$scope.page.listViewPath = ($routeParams.page) ?
"/content/content/edit/" + data.parentId + "?page=" + $routeParams.page :
"/content/content/edit/" + data.parentId;
}
init($scope.content);
//in one particular special case, after we've created a new item we redirect back to the edit
// route but there might be server validation errors in the collection which we need to display
// after the redirect, so we will bind all subscriptions which will show the server validation errors
// if there are any and then clear them so the collection no longer persists them.
serverValidationManager.executeAndClearAllSubscriptions();
syncTreeNode($scope.content, data.path, true);
resetLastListPageNumber($scope.content);
$scope.page.loading = false;
});
}
function createButtons(content) {
var buttons = contentEditingHelper.configureContentEditorButtons({
create: $scope.page.isNew,
@@ -152,35 +186,8 @@
}
else {
$scope.page.loading = true;
getNode();
//we are editing so get the content item from the server
$scope.getMethod()($scope.contentId)
.then(function (data) {
$scope.content = data;
if (data.isChildOfListView && data.trashed === false) {
$scope.page.listViewPath = ($routeParams.page) ?
"/content/content/edit/" + data.parentId + "?page=" + $routeParams.page :
"/content/content/edit/" + data.parentId;
}
init($scope.content);
//in one particular special case, after we've created a new item we redirect back to the edit
// route but there might be server validation errors in the collection which we need to display
// after the redirect, so we will bind all subscriptions which will show the server validation errors
// if there are any and then clear them so the collection no longer persists them.
serverValidationManager.executeAndClearAllSubscriptions();
syncTreeNode($scope.content, data.path, true);
resetLastListPageNumber($scope.content);
$scope.page.loading = false;
});
}
@@ -316,6 +323,9 @@
$scope.page.buttonRestore = "success";
notificationsService.success("Successfully restored " + node.name + " to " + target.name);
// reload the node
getNode();
}, function (err) {
$scope.page.buttonRestore = "error";
notificationsService.error("Cannot automatically restore this item", err);

View File

@@ -1,9 +1,13 @@
(function () {
'use strict';
function ContentNodeInfoDirective($timeout, $location, logResource, eventsService, userService) {
function ContentNodeInfoDirective($timeout, $location, logResource, eventsService, userService, localizationService) {
function link(scope, element, attrs, ctrl) {
var evts = [];
var isInfoTab = false;
scope.publishStatus = {};
function onInit() {
@@ -32,15 +36,10 @@
// get document type details
scope.documentType = scope.node.documentType;
// load audit trail when on the info tab
eventsService.on("app.tabChange", function (event, args) {
if (args.id === -1) {
loadAuditTrail();
}
});
// make sure dates are formatted to the user's locale
formatDatesToLocal();
setNodePublishStatus(scope.node);
}
@@ -120,6 +119,34 @@
});
}
function setNodePublishStatus(node) {
// deleted node
if(node.trashed === true) {
scope.publishStatus.label = localizationService.localize("general_deleted");
scope.publishStatus.color = "danger";
}
// unpublished node
if(node.published === false && node.trashed === false) {
scope.publishStatus.label = localizationService.localize("content_unpublished");
scope.publishStatus.color = "gray";
}
// published node
if(node.hasPublishedVersion === true && node.publishDate && node.published === true) {
scope.publishStatus.label = localizationService.localize("content_published");
scope.publishStatus.color = "success";
}
// published node with pending changes
if(node.hasPublishedVersion === true && node.publishDate && node.published === false) {
scope.publishStatus.label = localizationService.localize("content_publishedPendingChanges");
scope.publishStatus.color = "success"
}
}
function setPublishDate(date) {
// update publish value
@@ -200,6 +227,38 @@
});
}
// load audit trail when on the info tab
evts.push(eventsService.on("app.tabChange", function (event, args) {
$timeout(function(){
if (args.id === -1) {
isInfoTab = true;
loadAuditTrail();
} else {
isInfoTab = false;
}
});
}));
// watch for content updates - reload content when node is saved, published etc.
scope.$watch('node.updateDate', function(newValue, oldValue){
if(!newValue) { return; }
if(newValue === oldValue) { return; }
if(isInfoTab) {
loadAuditTrail();
formatDatesToLocal();
setNodePublishStatus(scope.node);
}
});
//ensure to unregister from all events!
scope.$on('$destroy', function () {
for (var e in evts) {
eventsService.unsubscribe(evts[e]);
}
});
onInit();
}

View File

@@ -165,6 +165,12 @@
<umb-box data-element="node-info-general">
<umb-box-header title-key="general_general"></umb-box-header>
<umb-box-content class="block-form">
<umb-control-group data-element="node-info-status" label="@general_status">
<umb-badge size="xs" color="{{publishStatus.color}}">
{{publishStatus.label}}
</umb-badge>
</umb-control-group>
<umb-control-group data-element="node-info-create-date" label="@template_createdDate">
{{node.createDateFormatted}} <localize key="general_by">by</localize> {{ node.owner.name }}

View File

@@ -197,6 +197,8 @@
<key alias="getUrlException">Could not get the url</key>
<key alias="routeError">This document is published but its url would collide with content %0%</key>
<key alias="publish">Publish</key>
<key alias="published">Published</key>
<key alias="publishedPendingChanges">Published (pending changes)</key>
<key alias="publishStatus">Publication Status</key>
<key alias="releaseDate">Publish at</key>
<key alias="unpublishDate">Unpublish at</key>
@@ -209,6 +211,7 @@
<key alias="altTextOptional">Alternative text (optional)</key>
<key alias="type">Type</key>
<key alias="unPublish">Unpublish</key>
<key alias="unpublished">Unpublished</key>
<key alias="updateDate">Last edited</key>
<key alias="updateDateDesc" version="7.0">Date/time this document was edited</key>
<key alias="uploadClear">Remove file(s)</key>