From d0df31be8b2fa7532ccb3e267d87d11134fc3131 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 19 Jan 2016 19:57:38 +0100 Subject: [PATCH] Ensures the build models buttons work and are enabled for content types, media types and member types --- .../services/contenttypehelper.service.js | 40 ++++++++- .../views/documenttypes/edit.controller.js | 86 +++++++------------ .../src/views/mediatypes/edit.controller.js | 33 +++++++ .../src/views/mediatypes/edit.html | 25 ++++-- .../src/views/membertypes/edit.controller.js | 35 +++++++- .../src/views/membertypes/edit.html | 25 ++++-- 6 files changed, 173 insertions(+), 71 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js index abfa58bc72..047d18c35c 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/contenttypehelper.service.js @@ -3,7 +3,7 @@ * @name umbraco.services.contentTypeHelper * @description A helper service for the content type editor **/ -function contentTypeHelper(contentTypeResource, dataTypeResource, $filter) { +function contentTypeHelper(contentTypeResource, dataTypeResource, $filter, $injector, $q) { var contentTypeHelperService = { @@ -25,6 +25,44 @@ function contentTypeHelper(contentTypeResource, dataTypeResource, $filter) { }, + generateModels: function () { + var deferred = $q.defer(); + var modelsResource = $injector.has("modelsBuilderResource") ? $injector.get("modelsBuilderResource") : null; + var modelsBuilderEnabled = Umbraco.Sys.ServerVariables.umbracoPlugins.modelsBuilder.enabled; + if (modelsBuilderEnabled && modelsResource) { + modelsResource.buildModels().then(function(result) { + deferred.resolve(result); + + //just calling this to get the servar back to life + modelsResource.getModelsOutOfDateStatus(); + + }, function(e) { + deferred.reject(e); + }); + } + else { + deferred.resolve(false); + } + return deferred.promise; + }, + + checkModelsBuilderStatus: function () { + var deferred = $q.defer(); + var modelsResource = $injector.has("modelsBuilderResource") ? $injector.get("modelsBuilderResource") : null; + var modelsBuilderEnabled = Umbraco.Sys.ServerVariables.umbracoPlugins.modelsBuilder.enabled; + + if (modelsBuilderEnabled && modelsResource) { + modelsResource.getModelsOutOfDateStatus().then(function(result) { + //Generate models buttons should be enabled if its not 100 + deferred.resolve(result.status !== 100); + }); + } + else { + deferred.resolve(false); + } + return deferred.promise; + }, + makeObjectArrayFromId: function (idArray, objectArray) { var newArray = []; diff --git a/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js index cd0dc96c11..3c8159bb8e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js @@ -46,59 +46,6 @@ } ]; - var modelsResource = $injector.has("modelsBuilderResource") ? $injector.get("modelsBuilderResource") : null; - var modelsBuilderEnabled = Umbraco.Sys.ServerVariables.umbracoPlugins.modelsBuilder.enabled; - - //disable by default, turn on if detected correctly. - vm.page.modelsBuilder = false; - if (modelsBuilderEnabled && modelsResource) { - modelsResource.getModelsOutOfDateStatus().then(function (result) { - - if (result.status === 100) { - return; - } - - vm.page.modelsBuilder = true; - - //Models builder mode: - - vm.page.defaultButton = { - hotKey: "ctrl+s", - labelKey: "buttons_save", - letter: "S", - type: "submit", - handler: function () { vm.save(); } - }; - vm.page.subButtons = [{ - hotKey: "ctrl+g", - labelKey: "buttons_generateModels", - letter: "G", - handler: function () { - - vm.page.saveButtonState = "busy"; - notificationsService.info("Building models", "this can take abit of time, don't worry"); - - if (modelsBuilderEnabled && modelsResource) { - modelsResource.buildModels().then(function () { - vm.page.saveButtonState = "init"; - - //clear and add success - notificationsService.success("Models Generated"); - - //just calling this to get the servar back to life - modelsResource.getModelsOutOfDateStatus(); - - }, function () { - notificationsService.error("Models could not be generated"); - vm.page.saveButtonState = "error"; - }); - } - } - }]; - - }); - } - vm.page.keyboardShortcutsOverview = [ { "name": localizationService.localize("main_sections"), @@ -164,6 +111,39 @@ } ]; + contentTypeHelper.checkModelsBuilderStatus().then(function (result) { + vm.page.modelsBuilder = result; + if (result) { + //Models builder mode: + vm.page.defaultButton = { + hotKey: "ctrl+s", + labelKey: "buttons_save", + letter: "S", + type: "submit", + handler: function () { vm.save(); } + }; + vm.page.subButtons = [{ + hotKey: "ctrl+g", + labelKey: "buttons_generateModels", + letter: "G", + handler: function () { + + vm.page.saveButtonState = "busy"; + notificationsService.info("Building models", "this can take abit of time, don't worry"); + + contentTypeHelper.generateModels().then(function (result) { + vm.page.saveButtonState = "init"; + //clear and add success + notificationsService.success("Models Generated"); + }, function () { + notificationsService.error("Models could not be generated"); + vm.page.saveButtonState = "error"; + }); + } + }]; + } + }); + if ($routeParams.create) { vm.page.loading = true; diff --git a/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.controller.js index 26453cfa13..89e598ec27 100644 --- a/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.controller.js @@ -95,6 +95,39 @@ } ]; + contentTypeHelper.checkModelsBuilderStatus().then(function (result) { + vm.page.modelsBuilder = result; + if (result) { + //Models builder mode: + vm.page.defaultButton = { + hotKey: "ctrl+s", + labelKey: "buttons_save", + letter: "S", + type: "submit", + handler: function () { vm.save(); } + }; + vm.page.subButtons = [{ + hotKey: "ctrl+g", + labelKey: "buttons_generateModels", + letter: "G", + handler: function () { + + vm.page.saveButtonState = "busy"; + notificationsService.info("Building models", "this can take abit of time, don't worry"); + + contentTypeHelper.generateModels().then(function(result) { + vm.page.saveButtonState = "init"; + //clear and add success + notificationsService.success("Models Generated"); + }, function() { + notificationsService.error("Models could not be generated"); + vm.page.saveButtonState = "error"; + }); + } + }]; + } + }); + if ($routeParams.create) { vm.page.loading = true; diff --git a/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.html b/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.html index d8f82a64ff..b6c507ec0c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.html +++ b/src/Umbraco.Web.UI.Client/src/views/mediatypes/edit.html @@ -39,14 +39,23 @@ - - + + + + + + diff --git a/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.controller.js index f4aa8eed25..ed880da9b3 100644 --- a/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.controller.js @@ -9,7 +9,7 @@ (function () { "use strict"; - function MemberTypesEditController($scope, $rootScope, $routeParams, $log, $filter, memberTypeResource, dataTypeResource, editorState, iconHelper, formHelper, navigationService, contentEditingHelper, notificationsService, $q, localizationService, overlayHelper) { + function MemberTypesEditController($scope, $rootScope, $routeParams, $log, $filter, memberTypeResource, dataTypeResource, editorState, iconHelper, formHelper, navigationService, contentEditingHelper, notificationsService, $q, localizationService, overlayHelper, contentTypeHelper) { var vm = this; var localizeSaving = localizationService.localize("general_saving"); @@ -54,6 +54,39 @@ } ]; + contentTypeHelper.checkModelsBuilderStatus().then(function (result) { + vm.page.modelsBuilder = result; + if (result) { + //Models builder mode: + vm.page.defaultButton = { + hotKey: "ctrl+s", + labelKey: "buttons_save", + letter: "S", + type: "submit", + handler: function () { vm.save(); } + }; + vm.page.subButtons = [{ + hotKey: "ctrl+g", + labelKey: "buttons_generateModels", + letter: "G", + handler: function () { + + vm.page.saveButtonState = "busy"; + notificationsService.info("Building models", "this can take abit of time, don't worry"); + + contentTypeHelper.generateModels().then(function (result) { + vm.page.saveButtonState = "init"; + //clear and add success + notificationsService.success("Models Generated"); + }, function () { + notificationsService.error("Models could not be generated"); + vm.page.saveButtonState = "error"; + }); + } + }]; + } + }); + if ($routeParams.create) { vm.page.loading = true; diff --git a/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.html b/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.html index b8bb2fd569..64ffe504b1 100644 --- a/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.html +++ b/src/Umbraco.Web.UI.Client/src/views/membertypes/edit.html @@ -37,14 +37,23 @@ - - + + + + + +