From caef15580501c99461e4da6057f42631d63bb672 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 19 Jan 2016 14:46:19 +0100 Subject: [PATCH] U4-7748 Models Builder - needs to be in control of the models-out-of-date status --- .../src/common/resources/models.resource.js | 26 ------- .../views/documenttypes/edit.controller.js | 74 +++++++++++-------- .../ModelsBuilder/modelsbuilder.controller.js | 16 ++-- .../ModelsBuilder/package.manifest | 3 +- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 12 ++- src/Umbraco.Web.UI/packages.config | 4 +- .../Editors/BackOfficeController.cs | 20 ++++- src/Umbraco.Web/Umbraco.Web.csproj | 25 ++++++- src/Umbraco.Web/packages.config | 6 ++ 9 files changed, 105 insertions(+), 81 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/common/resources/models.resource.js diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/models.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/models.resource.js deleted file mode 100644 index c8ec9e8eed..0000000000 --- a/src/Umbraco.Web.UI.Client/src/common/resources/models.resource.js +++ /dev/null @@ -1,26 +0,0 @@ -function modelsResource($q, $http, umbRequestHelper) { - - // TODO - should use BackOfficeController to register urls? How can we extend it? - // TODO - this shouldn't exist in core!! - - return { - getModelsOutOfDateStatus: function() { - return umbRequestHelper.resourcePromise( - $http.get( - /*umbRequestHelper.getApiUrl( - "modelsApiBaseUrl", - "GetModelsOutOfDateStatus")*/ "/Umbraco/BackOffice/ModelsBuilder/ModelsBuilder/GetModelsOutOfDateStatus"), - "Failed to get models out-of-date status"); - }, - - buildModels: function() { - return umbRequestHelper.resourcePromise( - $http.get( - /*umbRequestHelper.getApiUrl( - "modelsApiBaseUrl", - "BuildModels")*/ "/Umbraco/BackOffice/ModelsBuilder/ModelsBuilder/BuildModels"), - "Failed to build models"); - } - }; -} -angular.module("umbraco.resources").factory("modelsResource", modelsResource); 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 5b03381dec..cd0dc96c11 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 @@ -9,7 +9,7 @@ (function () { "use strict"; - function DocumentTypesEditController($scope, $routeParams, modelsResource, contentTypeResource, dataTypeResource, editorState, contentEditingHelper, formHelper, navigationService, iconHelper, contentTypeHelper, notificationsService, $filter, $q, localizationService, overlayHelper) { + function DocumentTypesEditController($scope, $routeParams, $injector, contentTypeResource, dataTypeResource, editorState, contentEditingHelper, formHelper, navigationService, iconHelper, contentTypeHelper, notificationsService, $filter, $q, localizationService, overlayHelper) { var vm = this; var localizeSaving = localizationService.localize("general_saving"); @@ -46,48 +46,58 @@ } ]; + 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; - modelsResource.getModelsOutOfDateStatus().then(function () { - vm.page.modelsBuilder = true; - }); + vm.page.modelsBuilder = false; + if (modelsBuilderEnabled && modelsResource) { + modelsResource.getModelsOutOfDateStatus().then(function (result) { - //Models builder mode: + if (result.status === 100) { + return; + } - 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.modelsBuilder = true; - vm.page.saveButtonState = "busy"; - notificationsService.info("Building models", "this can take abit of time, don't worry"); + //Models builder mode: - modelsResource.buildModels().then(function () { - vm.page.saveButtonState = "init"; + 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 () { - //clear and add success - notificationsService.success("Models Generated"); + vm.page.saveButtonState = "busy"; + notificationsService.info("Building models", "this can take abit of time, don't worry"); - //just calling this to get the servar back to life - modelsResource.getModelsOutOfDateStatus(); + if (modelsBuilderEnabled && modelsResource) { + modelsResource.buildModels().then(function () { + vm.page.saveButtonState = "init"; - }, function () { - notificationsService.error("Models could not be generated"); - vm.page.saveButtonState = "error"; - }); - } - }]; + //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 = [ { diff --git a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.controller.js b/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.controller.js index 28dcf72010..7d75e25b44 100644 --- a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.controller.js +++ b/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.controller.js @@ -1,9 +1,9 @@ -function modelsBuilderController($scope, umbRequestHelper, $log, $http /*, $sce*/) { +function modelsBuilderController($scope, umbRequestHelper, $log, $http, modelsBuilderResource) { $scope.generate = function() { $scope.generating = true; umbRequestHelper.resourcePromise( - $http.get(umbRequestHelper.getApiUrl("modelsBuilderBaseUrl", "BuildModels")), + $http.post(umbRequestHelper.getApiUrl("modelsBuilderBaseUrl", "BuildModels")), 'Failed to generate.') .then(function (result) { $scope.generating = false; @@ -11,14 +11,10 @@ }; function init() { - umbRequestHelper.resourcePromise( - $http.get(umbRequestHelper.getApiUrl("modelsBuilderBaseUrl", "GetDashboard")), - 'Failed to get dashboard.') - .then(function (result) { - //result.text = $sce.trustAsHtml(result.text); // accept html - $scope.dashboard = result; - $scope.ready = true; - }); + modelsBuilderResource.getDashboard().then(function(result) { + $scope.dashboard = result; + $scope.ready = true; + }); } init(); diff --git a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/package.manifest b/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/package.manifest index 63bae80c75..d83523517a 100644 --- a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/package.manifest +++ b/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/package.manifest @@ -1,6 +1,7 @@ { //array of files we want to inject into the application on app_start javascript: [ - '~/App_Plugins/ModelsBuilder/modelsbuilder.controller.js' + '~/App_Plugins/ModelsBuilder/modelsbuilder.controller.js', + '~/App_Plugins/ModelsBuilder/modelsbuilder.resource.js' ] } \ No newline at end of file diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index c1a73c889b..7770c0844b 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -350,12 +350,12 @@ umbraco.providers - - ..\packages\Umbraco.ModelsBuilder.2.2.0-beta003\lib\Umbraco.ModelsBuilder.dll + + ..\packages\Umbraco.ModelsBuilder.3.0.0-beta0001\lib\Umbraco.ModelsBuilder.dll True - - ..\packages\Umbraco.ModelsBuilder.AspNet.2.2.0-beta003\lib\Umbraco.ModelsBuilder.AspNet.dll + + ..\packages\Umbraco.ModelsBuilder.AspNet.3.0.0-beta0001\lib\Umbraco.ModelsBuilder.AspNet.dll True @@ -582,8 +582,6 @@ treeInit.aspx - - @@ -642,7 +640,6 @@ - 404handlers.config @@ -2390,6 +2387,7 @@ + diff --git a/src/Umbraco.Web.UI/packages.config b/src/Umbraco.Web.UI/packages.config index 7dd41d153c..b13d2fdb5e 100644 --- a/src/Umbraco.Web.UI/packages.config +++ b/src/Umbraco.Web.UI/packages.config @@ -37,7 +37,7 @@ - - + + \ No newline at end of file diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs index 4ffe57a924..0a618fac1c 100644 --- a/src/Umbraco.Web/Editors/BackOfficeController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeController.cs @@ -26,6 +26,7 @@ using Umbraco.Core.Manifest; using Umbraco.Core.Models; using Umbraco.Core.Models.Identity; using Umbraco.Core.Security; +using Umbraco.ModelsBuilder.Configuration; using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Mvc; using Umbraco.Web.PropertyEditors; @@ -362,7 +363,8 @@ namespace Umbraco.Web.Editors { "umbracoPlugins", new Dictionary { - {"trees", GetTreePluginsMetaData()} + {"trees", GetTreePluginsMetaData()}, + {"modelsBuilder", GetModelsBuilderSettings() } } }, { @@ -403,7 +405,7 @@ namespace Umbraco.Web.Editors return JavaScript(result); } - + [HttpPost] public ActionResult ExternalLogin(string provider, string redirectUrl = null) { @@ -644,6 +646,20 @@ namespace Umbraco.Web.Editors return app; } + + private Dictionary GetModelsBuilderSettings() + { + if (ApplicationContext.IsConfigured == false) + return null; + + var settings = new Dictionary + { + {"enabled", UmbracoConfig.For.ModelsBuilder().Enable} + }; + + return settings; + } + private IEnumerable> GetTreePluginsMetaData() { var treeTypes = PluginManager.Current.ResolveAttributedTreeControllers(); diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index fba27991a8..cde08a8a6c 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -140,6 +140,14 @@ False ..\packages\Microsoft.AspNet.Identity.Owin.2.2.1\lib\net45\Microsoft.AspNet.Identity.Owin.dll + + ..\packages\Microsoft.CodeAnalysis.Common.1.0.0\lib\net45\Microsoft.CodeAnalysis.dll + True + + + ..\packages\Microsoft.CodeAnalysis.CSharp.1.0.0\lib\net45\Microsoft.CodeAnalysis.CSharp.dll + True + False @@ -184,6 +192,10 @@ System + + ..\packages\System.Collections.Immutable.1.1.36\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll + True + @@ -201,6 +213,10 @@ False ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll + + ..\packages\System.Reflection.Metadata.1.0.21\lib\portable-net45+win8\System.Reflection.Metadata.dll + True + @@ -286,6 +302,10 @@ {D7636876-0756-43CB-A192-138C6F0D5E42} umbraco.providers + + ..\packages\Umbraco.ModelsBuilder.3.0.0-beta0001\lib\Umbraco.ModelsBuilder.dll + True + ..\packages\UrlRewritingNet.UrlRewriter.2.0.7\lib\UrlRewritingNet.UrlRewriter.dll True @@ -2157,7 +2177,10 @@ umbraco_org_umbraco_update_CheckForUpgrade - + + + + 11.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0 diff --git a/src/Umbraco.Web/packages.config b/src/Umbraco.Web/packages.config index 75747af5ee..15b9d1193e 100644 --- a/src/Umbraco.Web/packages.config +++ b/src/Umbraco.Web/packages.config @@ -15,6 +15,9 @@ + + + @@ -26,6 +29,9 @@ + + + \ No newline at end of file