Merge branch 'temp8-4217-datatype-edits-updates-content-editor' into v8/dev

This commit is contained in:
Stephan
2019-04-01 12:19:11 +02:00
4 changed files with 77 additions and 36 deletions

View File

@@ -116,6 +116,13 @@
function isContentCultureVariant() {
return $scope.content.variants.length > 1;
}
function reload() {
$scope.page.loading = true;
loadContent().then(function() {
$scope.page.loading = false;
});
}
function bindEvents() {
//bindEvents can be called more than once and we don't want to have multiple bound events
@@ -123,13 +130,10 @@
eventsService.unsubscribe(evts[e]);
}
evts.push(eventsService.on("editors.content.reload", function (name, args) {
evts.push(eventsService.on("editors.documentType.saved", function (name, args) {
// if this content item uses the updated doc type we need to reload the content item
if(args && args.node && args.node.key === $scope.content.key) {
$scope.page.loading = true;
loadContent().then(function() {
$scope.page.loading = false;
});
if(args && args.documentType && $scope.content.documentType.id === args.documentType.id) {
reload();
}
}));

View File

@@ -147,7 +147,7 @@
id: documentType.id,
submit: function (model) {
const args = { node: scope.node };
eventsService.emit('editors.content.reload', args);
eventsService.emit("editors.content.reload", args);
editorService.close();
},
close: function () {

View File

@@ -1,13 +1,17 @@
(function() {
'use strict';
function GroupsBuilderDirective(contentTypeHelper, contentTypeResource, mediaTypeResource, dataTypeHelper, dataTypeResource, $filter, iconHelper, $q, $timeout, notificationsService, localizationService, editorService) {
function GroupsBuilderDirective(contentTypeHelper, contentTypeResource, mediaTypeResource,
dataTypeHelper, dataTypeResource, $filter, iconHelper, $q, $timeout, notificationsService,
localizationService, editorService, eventsService) {
function link(scope, el, attr, ctrl) {
var eventBindings = [];
var validationTranslated = "";
var tabNoSortOrderTranslated = "";
scope.dataTypeHasChanged = false;
scope.sortingMode = false;
scope.toolbar = [];
scope.sortableOptionsGroup = {};
@@ -613,18 +617,44 @@
});
});
}
var unbindModelWatcher = scope.$watch('model', function(newValue, oldValue) {
if (newValue !== undefined && newValue.groups !== undefined) {
activate();
function hasPropertyOfDataTypeId(dataTypeId) {
// look at each property
var result = _.filter(scope.model.groups, function(group) {
return _.filter(group.properties, function(property) {
return (property.dataTypeId === dataTypeId);
});
});
return (result.length > 0);
}
});
// clean up
scope.$on('$destroy', function(){
unbindModelWatcher();
});
eventBindings.push(scope.$watch('model', function(newValue, oldValue) {
if (newValue !== undefined && newValue.groups !== undefined) {
activate();
}
}));
// clean up
eventBindings.push(eventsService.on("editors.dataTypeSettings.saved", function (name, args) {
if(hasPropertyOfDataTypeId(args.dataType.id)) {
scope.dataTypeHasChanged = true;
}
}));
// clean up
eventBindings.push(scope.$on('$destroy', function() {
for(var e in eventBindings) {
eventBindings[e]();
}
// if a dataType has changed, we want to notify which properties that are affected by this dataTypeSettings change
if(scope.dataTypeHasChanged === true) {
var args = {documentType: scope.model};
eventsService.emit("editors.documentType.saved", args);
}
}));
}

View File

@@ -10,7 +10,8 @@
(function () {
"use strict";
function DataTypeSettingsController($scope, dataTypeResource, dataTypeHelper, localizationService, notificationsService, overlayService, formHelper) {
function DataTypeSettingsController($scope, dataTypeResource, dataTypeHelper,
localizationService, notificationsService, overlayService, formHelper, eventsService) {
var vm = this;
@@ -103,27 +104,33 @@
var preValues = dataTypeHelper.createPreValueProps(vm.dataType.preValues);
dataTypeResource.save(vm.dataType, preValues, $scope.model.create).then(function(newDataType) {
$scope.model.dataType = newDataType;
vm.saveButtonState = "success";
dataTypeResource.save(vm.dataType, preValues, $scope.model.create).then(
function(newDataType) {
$scope.model.dataType = newDataType;
var args = { dataType: newDataType };
eventsService.emit("editors.dataTypeSettings.saved", args);
vm.saveButtonState = "success";
if ($scope.model && $scope.model.submit) {
$scope.model.submit($scope.model);
}
}, function(err) {
vm.saveButtonState = "error";
if(err.status === 400) {
if (err.data && (err.data.ModelState)) {
formHelper.handleServerValidation(err.data.ModelState);
if ($scope.model && $scope.model.submit) {
$scope.model.submit($scope.model);
}
}, function(err) {
vm.saveButtonState = "error";
if(err.status === 400) {
if (err.data && (err.data.ModelState)) {
formHelper.handleServerValidation(err.data.ModelState);
for (var e in err.data.ModelState) {
notificationsService.error("Validation", err.data.ModelState[e][0]);
for (var e in err.data.ModelState) {
notificationsService.error("Validation", err.data.ModelState[e][0]);
}
}
}
}
});
);
}