Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/release/13.5' into v13/dev
Browse files Browse the repository at this point in the history
# Conflicts:
#	version.json
  • Loading branch information
bergmania committed Sep 18, 2024
2 parents b237285 + 2e068bb commit 25a5dde
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 22 deletions.
3 changes: 0 additions & 3 deletions src/Umbraco.Core/EmbeddedResources/Lang/sv.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
<name>The Umbraco community</name>
<link>https://docs.umbraco.com/umbraco-cms/extending/language-files</link>
</creator>
<area alias="apps">
<key alias="umbContent">Innehåll</key>
</area>
<area alias="actions">
<key alias="assigndomain">Hantera domännamn</key>
<key alias="auditTrail">Hantera versioner</key>
Expand Down
25 changes: 17 additions & 8 deletions src/Umbraco.Core/Services/LocalizedTextService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,13 @@ private IDictionary<string, IDictionary<string, string>> GetAreaStoredTranslatio
IEnumerable<XElement> areas = xmlSource[cult].Value.XPathSelectElements("//area");
foreach (XElement area in areas)
{
var result = new Dictionary<string, string>(StringComparer.InvariantCulture);
var areaAlias = area.Attribute("alias")!.Value;

if (!overallResult.TryGetValue(areaAlias, out IDictionary<string, string>? result))
{
result = new Dictionary<string, string>(StringComparer.InvariantCulture);
}

IEnumerable<XElement> keys = area.XPathSelectElements("./key");
foreach (XElement key in keys)
{
Expand All @@ -364,7 +370,10 @@ private IDictionary<string, IDictionary<string, string>> GetAreaStoredTranslatio
}
}

overallResult.Add(area.Attribute("alias")!.Value, result);
if (!overallResult.ContainsKey(areaAlias))
{
overallResult.Add(areaAlias, result);
}
}

// Merge English Dictionary
Expand All @@ -374,11 +383,11 @@ private IDictionary<string, IDictionary<string, string>> GetAreaStoredTranslatio
IEnumerable<XElement> enUS = xmlSource[englishCulture].Value.XPathSelectElements("//area");
foreach (XElement area in enUS)
{
IDictionary<string, string>
result = new Dictionary<string, string>(StringComparer.InvariantCulture);
if (overallResult.ContainsKey(area.Attribute("alias")!.Value))
var areaAlias = area.Attribute("alias")!.Value;

if (!overallResult.TryGetValue(areaAlias, out IDictionary<string, string>? result))
{
result = overallResult[area.Attribute("alias")!.Value];
result = new Dictionary<string, string>(StringComparer.InvariantCulture);
}

IEnumerable<XElement> keys = area.XPathSelectElements("./key");
Expand All @@ -394,9 +403,9 @@ private IDictionary<string, IDictionary<string, string>> GetAreaStoredTranslatio
}
}

if (!overallResult.ContainsKey(area.Attribute("alias")!.Value))
if (!overallResult.ContainsKey(areaAlias))
{
overallResult.Add(area.Attribute("alias")!.Value, result);
overallResult.Add(areaAlias, result);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
appState, contentResource, entityResource, navigationService, notificationsService, contentAppHelper,
serverValidationManager, contentEditingHelper, localizationService, formHelper, umbRequestHelper,
editorState, $http, eventsService, overlayService, $location, localStorageService, treeService,
$exceptionHandler, uploadTracker) {
$exceptionHandler, uploadTracker) {

var evts = [];
var infiniteMode = $scope.infiniteModel && $scope.infiniteModel.infiniteMode;
Expand Down Expand Up @@ -497,6 +497,7 @@
//Set them all to be invalid
var fieldsToRollback = checkValidility();
eventsService.emit("content.saving", { content: $scope.content, action: args.action });
eventsService.emit("form.lock");

return contentEditingHelper.contentEditorPerformSave({
saveMethod: args.saveMethod,
Expand All @@ -517,6 +518,7 @@
syncTreeNode($scope.content, data.path, false, args.reloadChildren);

eventsService.emit("content.saved", { content: $scope.content, action: args.action, valid: true });
eventsService.emit("form.unlock");

if($scope.contentForm.$invalid !== true) {
resetNestedFieldValiation(fieldsToRollback);
Expand All @@ -534,6 +536,7 @@
if (err && err.status === 400 && err.data) {
// content was saved but is invalid.
eventsService.emit("content.saved", { content: $scope.content, action: args.action, valid: false });
eventsService.emit("form.unlock");
}

return $q.reject(err);
Expand Down Expand Up @@ -1002,7 +1005,7 @@
const openPreviewWindow = (url, target) => {
// Chromes popup blocker will kick in if a window is opened
// without the initial scoped request. This trick will fix that.

const previewWindow = $window.open(url, target);

previewWindow.addEventListener('load', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';

/** This directive is used to render out the current variant tabs and properties and exposes an API for other directives to consume */
function tabbedContentDirective($timeout, $filter, contentEditingHelper, contentTypeHelper) {
function tabbedContentDirective($timeout, $filter, contentEditingHelper, contentTypeHelper, eventsService) {

function link($scope, $element) {

Expand Down Expand Up @@ -156,14 +156,13 @@
}
});

$scope.$on("formSubmitting", function() {
$scope.allowUpdate = false;
eventsService.on("form.lock", function() {
$scope.$evalAsync(() => {
$scope.allowUpdate = false;
});
});

$scope.$on("formSubmitted", function() {
setAllowUpdate();
});
$scope.$on("formSubmittedValidationFailed", function() {
eventsService.on("form.unlock", function() {
setAllowUpdate();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@


function rawRteBlockResolver(propertyValue, propPasteResolverMethod) {
if (propertyValue != null && typeof propertyValue === "object") {
if (propertyValue && typeof propertyValue === "object" && propertyValue.markup) {

// object property of 'blocks' holds the data for the Block Editor.
var value = propertyValue.blocks;

// we got an object, and it has these three props then we are most likely dealing with a Block Editor.
if ((value.layout !== undefined && value.contentData !== undefined && value.settingsData !== undefined)) {
if ((value && value.layout !== undefined && value.contentData !== undefined && value.settingsData !== undefined)) {

// replaceUdisOfObject replaces udis of the value object(by instance reference), but also returns the updated markup (as we cant update the reference of a string).
propertyValue.markup = replaceUdisOfObject(value.layout, value, propertyValue.markup);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1056,6 +1056,10 @@ function tinyMceService($rootScope, $q, imageHelper, $locale, $http, $timeout, s
editor.undoManager.clear();
}
}

angularHelper.safeApply($rootScope, function () {
editor.dispatch("Change");
});
});
});

Expand Down

0 comments on commit 25a5dde

Please sign in to comment.