diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js index 99327dd2ea..bb156f2820 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/rte/rte.controller.js @@ -4,6 +4,22 @@ angular.module("umbraco") $scope.isLoading = true; + var alreadyDirty = false; + function syncContent(editor){ + editor.save(); + angularHelper.safeApply($scope, function () { + $scope.model.value = editor.getContent(); + }); + + if (!alreadyDirty) { + //make the form dirty manually so that the track changes works, setting our model doesn't trigger + // the angular bits because tinymce replaces the textarea. + var currForm = angularHelper.getCurrentForm($scope); + currForm.$setDirty(); + alreadyDirty = true; + } + } + tinyMceService.configuration().then(function (tinyMceConfig) { //config value from general tinymce.config file @@ -147,27 +163,18 @@ angular.module("umbraco") //when buttons modify content editor.on('ExecCommand', function (e) { - editor.save(); - angularHelper.safeApply($scope, function () { - $scope.model.value = editor.getContent(); - }); + syncContent(editor); }); // Update model on keypress editor.on('KeyUp', function (e) { - editor.save(); - angularHelper.safeApply($scope, function () { - $scope.model.value = editor.getContent(); - }); + syncContent(editor); }); // Update model on change, i.e. copy/pasted text, plugins altering content editor.on('SetContent', function (e) { if (!e.initial) { - editor.save(); - angularHelper.safeApply($scope, function () { - $scope.model.value = editor.getContent(); - }); + syncContent(editor); } }); @@ -177,6 +184,8 @@ angular.module("umbraco") var srcAttr = $(e.target).attr("src"); var path = srcAttr.split("?")[0]; $(e.target).attr("data-mce-src", path + qs); + + syncContent(editor); });