Skip to content

Commit

Permalink
Merge branch 'temp8-4217-datatype-edits-updates-content-editor' into …
Browse files Browse the repository at this point in the history
…v8/dev
  • Loading branch information
Stephan committed Apr 1, 2019
2 parents c185672 + 4906231 commit 61cfba5
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -116,20 +116,24 @@
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
for (var e in evts) {
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();
}
}));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 () {
Expand Down
Original file line number Diff line number Diff line change
@@ -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 = {};
Expand Down Expand Up @@ -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);
}
}));

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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";

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]);
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);

for (var e in err.data.ModelState) {
notificationsService.error("Validation", err.data.ModelState[e][0]);
}
}
}
}
});
);

}

Expand Down

0 comments on commit 61cfba5

Please sign in to comment.