diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js index df92ae1c90..a0816b1379 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js @@ -148,10 +148,12 @@ var found = _.find(filteredAvailableCompositeTypes, function (f) { return current.contentType.alias === f.contentType.alias; }); + //allow if the item was found in the response (allowed) list - - // and ensure its set to allowed if it is currently checked - current.allowed = (selectedContentTypeAliases.indexOf(current.contentType.alias) !== -1) || - ((found !== null && found !== undefined) ? found.allowed : false); + // and ensure its set to allowed if it is currently checked, + // DO not allow if it's a locked content type. + current.allowed = scope.model.lockedCompositeContentTypes.indexOf(current.contentType.alias) === -1 && + (selectedContentTypeAliases.indexOf(current.contentType.alias) !== -1) || ((found !== null && found !== undefined) ? found.allowed : false); }); }); @@ -167,6 +169,20 @@ } + function setupAvailableContentTypesModel(result) { + scope.compositionsDialogModel.availableCompositeContentTypes = result; + //iterate each one and set it up + _.each(scope.compositionsDialogModel.availableCompositeContentTypes, function (c) { + //set the inherited flags + c.inherited = false; + if (scope.model.lockedCompositeContentTypes.indexOf(c.contentType.alias) > -1) { + c.inherited = true; + } + // convert icons for composite content types + iconHelper.formatContentTypeIcons([c.contentType]); + }); + } + /* ---------- DELETE PROMT ---------- */ scope.togglePrompt = function (object) { @@ -312,12 +328,7 @@ $q.all([ //get available composite types availableContentTypeResource(scope.model.id, [], propAliasesExisting).then(function (result) { - scope.compositionsDialogModel.availableCompositeContentTypes = result; - var contentTypes = _.map(scope.compositionsDialogModel.availableCompositeContentTypes, function(c) { - return c.contentType; - }); - // convert icons for composite content types - iconHelper.formatContentTypeIcons(contentTypes); + setupAvailableContentTypesModel(result); }), //get content type count countContentTypeResource().then(function(result) { diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.controller.js index 4188b331e3..7a908a7260 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.controller.js @@ -5,7 +5,6 @@ var vm = this; - vm.isDisabled = isDisabled; vm.isSelected = isSelected; function isSelected(alias) { @@ -13,12 +12,6 @@ return true; } } - - function isDisabled(alias) { - if($scope.model.contentType.lockedCompositeContentTypes.indexOf(alias) !== -1) { - return true; - } - } } angular.module("umbraco").controller("Umbraco.Overlays.CompositionsOverlay", CompositionsOverlay); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.html index a113e8309c..d5cc52b942 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/contenttypeeditor/compositions/compositions.html @@ -1,56 +1,54 @@