diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js index 3eac5439fd..ed0259f78b 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js @@ -157,10 +157,19 @@ if(app && app.alias !== "umbContent" && app.alias !== "umbInfo") { $scope.defaultButton = null; $scope.subButtons = null; + $scope.page.showSaveButton = false; $scope.page.showPreviewButton = false; return; } + // create the save button + if(_.contains($scope.content.allowedActions, "A")) { + $scope.page.showSaveButton = true; + // add ellipsis to the save button if it opens the variant overlay + $scope.page.saveButtonEllipsis = content.variants && content.variants.length > 1 ? "true" : "false"; + } + + // create the pubish combo button $scope.page.buttonGroupState = "init"; var buttons = contentEditingHelper.configureContentEditorButtons({ create: $scope.page.isNew, @@ -168,7 +177,6 @@ methods: { saveAndPublish: $scope.saveAndPublish, sendToPublish: $scope.sendToPublish, - save: $scope.save, unPublish: $scope.unPublish } }); @@ -225,9 +233,7 @@ // This is a helper method to reduce the amount of code repitition for actions: Save, Publish, SendToPublish function performSave(args) { - - $scope.page.buttonGroupState = "busy"; - + eventsService.emit("content.saving", { content: $scope.content, action: args.action }); return contentEditingHelper.contentEditorPerformSave({ @@ -242,8 +248,6 @@ syncTreeNode($scope.content, data.path); - $scope.page.buttonGroupState = "success"; - eventsService.emit("content.saved", { content: $scope.content, action: args.action }); return $q.when(data); @@ -257,8 +261,6 @@ editorState.set($scope.content); } - $scope.page.buttonGroupState = "error"; - return $q.reject(err); }); } @@ -405,13 +407,20 @@ } } else { - return performSave({ saveMethod: contentResource.sendToPublish, action: "sendToPublish" }); + $scope.page.buttonGroupState = "busy"; + return performSave({ + saveMethod: contentResource.sendToPublish, + action: "sendToPublish" + }).then(function(){ + $scope.page.buttonGroupState = "success"; + }, function () { + $scope.page.buttonGroupState = "error"; + });; } }; $scope.saveAndPublish = function () { clearNotifications($scope.content); - // TODO: Add "..." to publish button label if there are more than one variant to publish - currently it just adds the elipses if there's more than 1 variant if (showSaveOrPublishDialog()) { //before we launch the dialog we want to execute all client side validations first if (formHelper.submitForm({ scope: $scope, action: "publish" })) { @@ -457,7 +466,15 @@ else { //ensure the publish flag is set $scope.content.variants[0].publish = true; - return performSave({ saveMethod: contentResource.publish, action: "publish" }); + $scope.page.buttonGroupState = "busy"; + return performSave({ + saveMethod: contentResource.publish, + action: "publish" + }).then(function(){ + $scope.page.buttonGroupState = "success"; + }, function () { + $scope.page.buttonGroupState = "error"; + });; } }; @@ -488,15 +505,14 @@ clearNotifications($scope.content); overlayService.close(); return $q.when(data); - }, - function (err) { - clearDirtyState($scope.content.variants); - model.submitButtonState = "error"; - //re-map the dialog model since we've re-bound the properties - dialog.variants = $scope.content.variants; - //don't reject, we've handled the error - return $q.when(err); - }); + }, function (err) { + clearDirtyState($scope.content.variants); + model.submitButtonState = "error"; + //re-map the dialog model since we've re-bound the properties + dialog.variants = $scope.content.variants; + //don't reject, we've handled the error + return $q.when(err); + }); }, close: function (oldModel) { overlayService.close(); @@ -507,7 +523,15 @@ } } else { - return performSave({ saveMethod: $scope.saveMethod(), action: "save" }); + $scope.page.saveButtonState = "busy"; + return performSave({ + saveMethod: $scope.saveMethod(), + action: "save" + }).then(function(){ + $scope.page.saveButtonState = "success"; + }, function () { + $scope.page.saveButtonState = "error"; + }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js index decbd74150..a11c93c2da 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js @@ -146,7 +146,7 @@ function contentEditingHelper(fileManager, $q, $location, $routeParams, notifica if (!args.methods) { throw "args.methods is not defined"; } - if (!args.methods.saveAndPublish || !args.methods.sendToPublish || !args.methods.save || !args.methods.unPublish) { + if (!args.methods.saveAndPublish || !args.methods.sendToPublish || !args.methods.unPublish) { throw "args.methods does not contain all required defined methods"; } @@ -179,17 +179,6 @@ function contentEditingHelper(fileManager, $q, $location, $routeParams, notifica alias: "sendToPublish", addEllipsis: args.content.variants && args.content.variants.length > 1 ? "true" : "false" }; - case "A": - //save - return { - letter: ch, - labelKey: "buttons_save", - handler: args.methods.save, - hotKey: "ctrl+s", - hotKeyWhenHidden: true, - alias: "save", - addEllipsis: args.content.variants && args.content.variants.length > 1 ? "true" : "false" - }; case "Z": //unpublish return { @@ -209,8 +198,8 @@ function contentEditingHelper(fileManager, $q, $location, $routeParams, notifica buttons.subButtons = []; //This is the ideal button order but depends on circumstance, we'll use this array to create the button list - // Publish, SendToPublish, Save - var buttonOrder = ["U", "H", "A"]; + // Publish, SendToPublish + var buttonOrder = ["U", "H"]; //Create the first button (primary button) //We cannot have the Save or SaveAndPublish buttons if they don't have create permissions when we are creating a new item. diff --git a/src/Umbraco.Web.UI.Client/src/less/buttons.less b/src/Umbraco.Web.UI.Client/src/less/buttons.less index daa6757f44..b1e9671de3 100644 --- a/src/Umbraco.Web.UI.Client/src/less/buttons.less +++ b/src/Umbraco.Web.UI.Client/src/less/buttons.less @@ -227,13 +227,29 @@ input[type="button"] { font-size: 16px; border: none; background: @green; - color: white; + color: @white; font-weight: bold; &:hover { background: @green-d1; } } +// outlined +.btn-outline { + border: 1px solid @gray-8; + background: @white; + color: @black; + padding: 5px 13px; +} + +.btn-outline:hover, +.btn-outline:focus, +.btn-outline:active { + border-color: @gray-7; + background: transparent; + color: @black; +} + // Cross-browser Jank // -------------------------------------------------- diff --git a/src/Umbraco.Web.UI.Client/src/less/components/application/umb-dashboard.less b/src/Umbraco.Web.UI.Client/src/less/components/application/umb-dashboard.less index 4f40841c03..2a1d5eb6d3 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/application/umb-dashboard.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/application/umb-dashboard.less @@ -20,7 +20,7 @@ } .umb-dashboard__content { - padding: 30px 20px; + padding: 20px; overflow: auto; } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less index 4bcc60d5f3..e40282cb58 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less @@ -16,12 +16,15 @@ .umb-button-group { .umb-button__button { - border-radius: 3px 0px 0px 3px; + border-radius: @baseBorderRadius; } .umb-button-group__toggle { - border-radius: 0px 3px 3px 0; + border-radius: 0px @baseBorderRadius @baseBorderRadius 0; border-left: 1px solid rgba(0,0,0,0.09); + margin-left: -2px; + padding-left: 10px; + padding-right: 10px; } } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/editor/subheader/umb-editor-sub-header.less b/src/Umbraco.Web.UI.Client/src/less/components/editor/subheader/umb-editor-sub-header.less index 99f3ac36ee..10296b58e3 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/editor/subheader/umb-editor-sub-header.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/editor/subheader/umb-editor-sub-header.less @@ -4,7 +4,7 @@ background: @gray-10; display: flex; justify-content: space-between; - margin-top: -20px; + margin-top: -10px; position: relative; top: 0; diff --git a/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html b/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html index ace41d7e94..d5ee000e87 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html @@ -39,12 +39,23 @@ + + + + action="openCompositionsDialog()" + size="xs"> + action="toggleSortingMode();" + size="xs"> diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html index c4a68b9b0c..dcdf544fe2 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html +++ b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html @@ -48,8 +48,8 @@ @@ -62,48 +62,52 @@ -
- - -
-
- - -
-
- - -
-
- - -
+ + + + + + + + + + + +