From a53f8a1455bc2386568bf96ccc2ba10be2842077 Mon Sep 17 00:00:00 2001 From: Kevin Meilander Date: Tue, 16 Mar 2021 17:29:27 -0500 Subject: [PATCH] update show-inherit logic to match Umbraco Core logic and fix logic --- .../matryoshka-tabbed-content.directive.js | 36 ++++++++++++++----- .../directives/matryoshka-tabbed-content.html | 8 ++--- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.directive.js b/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.directive.js index 30feed5..b57666a 100644 --- a/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.directive.js +++ b/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.directive.js @@ -57,10 +57,6 @@ var appRootNode = $element[0]; - // add form-horizontal class for <8.6 - var umbracoVersion = Umbraco.Sys.ServerVariables.application.version.split(".").map(v => parseInt(v)); - $scope.formHorizontalClass = umbracoVersion[0] == 8 && umbracoVersion[1] < 6 ? "form-horizontal" : ""; - $scope.currentTab = $scope.content.tabs[0]; this.content = $scope.content; @@ -96,9 +92,13 @@ $scope.activeVariant = this.activeVariant; - $scope.defaultVariant = _.find(this.content.variants, variant => { - return variant.language.isDefault; - }); + if ($scope.contentNodeModel) { + $scope.defaultVariant = _.find($scope.contentNodeModel.variants, variant => { + // defaultVariant will never have segment. Wether it has a language or not depends on the setup. + return !variant.segment && ((variant.language && variant.language.isDefault) || (!variant.language)); + }); + } + $scope.unlockInvariantValue = function (property) { property.unlockInvariantValue = !property.unlockInvariantValue; @@ -112,6 +112,25 @@ } ); + $scope.propertyEditorDisabled = function (property) { + if (property.unlockInvariantValue) { + return false; + } + + var contentLanguage = $scope.content.language; + + var canEditCulture = !contentLanguage || + // If the property culture equals the content culture it can be edited + property.culture === contentLanguage.culture || + // A culture-invariant property can only be edited by the default language variant + (property.culture == null && contentLanguage.isDefault); + + + var canEditSegment = property.segment === $scope.content.segment; + + return !canEditCulture || !canEditSegment; + } + // on syncstate event we set the syncstate to the new state for all active controllers. eventsService.on("matryoshka.tabbedContent.changedSyncState", function (event, args) { $scope.syncTabs = args.syncTabs; @@ -243,7 +262,8 @@ controller: controller, link: link, scope: { - content: "=" + content: "=", + contentNodeModel: "=?" //contentNodeModel is the content model for the node, } }; diff --git a/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.html b/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.html index 87c3505..ee696de 100644 --- a/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.html +++ b/src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.html @@ -54,12 +54,12 @@ + show-inherit="propertyEditorDisabled(property)" + inherits-from="defaultVariant.displayName"> -
+
+ preview="propertyEditorDisabled(property)">