++@param {array} colors (+ +
attribute): The array of colors.
+@param {string} colors (attribute): The array of colors.
+@param {string} selectedColor (attribute): The selected color.
+@param {string} size (attribute): The size (s, m).
+@param {function} onSelect (expression): Callback function when the item is selected.
+**/
+
+(function () {
+ 'use strict';
+
+ function ColorSwatchesDirective() {
+
+ function link(scope, el, attr, ctrl) {
+
+ scope.setColor = function (color) {
+ //scope.selectedColor({color: color });
+ scope.selectedColor = color;
+
+ if (scope.onSelect) {
+ scope.onSelect(color);
+ }
+ };
+ }
+
+ var directive = {
+ restrict: 'E',
+ replace: true,
+ transclude: true,
+ templateUrl: 'views/components/umb-color-swatches.html',
+ scope: {
+ colors: '=?',
+ size: '@',
+ selectedColor: '=',
+ onSelect: '&'
+ },
+ link: link
+ };
+
+ return directive;
+
+ }
+
+ angular.module('umbraco.directives').directive('umbColorSwatches', ColorSwatchesDirective);
+
+})();
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgridselector.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgridselector.directive.js
index de1c0ca936..dfd1e1184d 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgridselector.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgridselector.directive.js
@@ -1,7 +1,7 @@
-(function() {
+(function () {
'use strict';
- function GridSelector(overlayService) {
+ function GridSelector($location, overlayService) {
function link(scope, el, attr, ctrl) {
@@ -11,18 +11,18 @@
scope.itemLabel = "";
// set default item name
- if(!scope.itemName){
+ if (!scope.itemName) {
scope.itemLabel = "item";
} else {
scope.itemLabel = scope.itemName;
}
- scope.removeItem = function(selectedItem) {
+ scope.removeItem = function (selectedItem) {
var selectedItemIndex = scope.selectedItems.indexOf(selectedItem);
scope.selectedItems.splice(selectedItemIndex, 1);
};
- scope.removeDefaultItem = function() {
+ scope.removeDefaultItem = function () {
// it will be the last item so we can clear the array
scope.selectedItems = [];
@@ -32,7 +32,7 @@
};
- scope.openItemPicker = function($event){
+ scope.openItemPicker = function ($event) {
var dialogModel = {
view: "itempicker",
title: "Choose " + scope.itemLabel,
@@ -40,10 +40,10 @@
selectedItems: scope.selectedItems,
position: "target",
event: $event,
- submit: function(model) {
+ submit: function (model) {
scope.selectedItems.push(model.selectedItem);
// if no default item - set item as default
- if(scope.defaultItem === null) {
+ if (scope.defaultItem === null) {
scope.setAsDefaultItem(model.selectedItem);
}
overlayService.close();
@@ -55,7 +55,12 @@
overlayService.open(dialogModel);
};
- scope.setAsDefaultItem = function(selectedItem) {
+ scope.openTemplate = function (selectedItem) {
+ var url = "/settings/templates/edit/" + selectedItem.id;
+ $location.url(url);
+ }
+
+ scope.setAsDefaultItem = function (selectedItem) {
// clear default item
scope.defaultItem = {};
@@ -66,69 +71,69 @@
function updatePlaceholders() {
- // update default item
- if(scope.defaultItem !== null && scope.defaultItem.placeholder) {
+ // update default item
+ if (scope.defaultItem !== null && scope.defaultItem.placeholder) {
- scope.defaultItem.name = scope.name;
+ scope.defaultItem.name = scope.name;
- if(scope.alias !== null && scope.alias !== undefined) {
- scope.defaultItem.alias = scope.alias;
- }
-
- }
-
- // update selected items
- angular.forEach(scope.selectedItems, function(selectedItem) {
- if(selectedItem.placeholder) {
-
- selectedItem.name = scope.name;
-
- if(scope.alias !== null && scope.alias !== undefined) {
- selectedItem.alias = scope.alias;
- }
+ if (scope.alias !== null && scope.alias !== undefined) {
+ scope.defaultItem.alias = scope.alias;
+ }
}
- });
- // update availableItems
- angular.forEach(scope.availableItems, function(availableItem) {
- if(availableItem.placeholder) {
+ // update selected items
+ angular.forEach(scope.selectedItems, function (selectedItem) {
+ if (selectedItem.placeholder) {
- availableItem.name = scope.name;
+ selectedItem.name = scope.name;
- if(scope.alias !== null && scope.alias !== undefined) {
- availableItem.alias = scope.alias;
- }
+ if (scope.alias !== null && scope.alias !== undefined) {
+ selectedItem.alias = scope.alias;
+ }
- }
- });
+ }
+ });
+
+ // update availableItems
+ angular.forEach(scope.availableItems, function (availableItem) {
+ if (availableItem.placeholder) {
+
+ availableItem.name = scope.name;
+
+ if (scope.alias !== null && scope.alias !== undefined) {
+ availableItem.alias = scope.alias;
+ }
+
+ }
+ });
}
function activate() {
- // add watchers for updating placeholde name and alias
- if(scope.updatePlaceholder) {
- eventBindings.push(scope.$watch('name', function(newValue, oldValue){
- updatePlaceholders();
- }));
+ // add watchers for updating placeholde name and alias
+ if (scope.updatePlaceholder) {
+ eventBindings.push(scope.$watch('name', function (newValue, oldValue) {
+ updatePlaceholders();
+ }));
- eventBindings.push(scope.$watch('alias', function(newValue, oldValue){
- updatePlaceholders();
- }));
- }
+ eventBindings.push(scope.$watch('alias', function (newValue, oldValue) {
+ updatePlaceholders();
+ }));
+ }
}
activate();
// clean up
- scope.$on('$destroy', function(){
+ scope.$on('$destroy', function () {
- // clear watchers
- for(var e in eventBindings) {
- eventBindings[e]();
- }
+ // clear watchers
+ for (var e in eventBindings) {
+ eventBindings[e]();
+ }
});
@@ -139,13 +144,13 @@
replace: true,
templateUrl: 'views/components/umb-grid-selector.html',
scope: {
- name: "=",
- alias: "=",
- selectedItems: '=',
- availableItems: "=",
- defaultItem: "=",
- itemName: "@",
- updatePlaceholder: "="
+ name: "=",
+ alias: "=",
+ selectedItems: '=',
+ availableItems: "=",
+ defaultItem: "=",
+ itemName: "@",
+ updatePlaceholder: "="
},
link: link
};
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js
index 21714d172c..9f1f7a0d2e 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js
@@ -88,6 +88,9 @@
@param {function} onRemove (expression): Callback function when the remove button is clicked.
@param {function} onOpen (expression): Callback function when the open button is clicked.
@param {function} onEdit (expression): Callback function when the edit button is clicked (Added in version 7.7.0).
+@param {string} openUrl (binding): Fallback URL for onOpen (Added in version 7.12.0).
+@param {string} editUrl (binding): Fallback URL for onEdit (Added in version 7.12.0).
+@param {string} removeUrl (binding): Fallback URL for onRemove (Added in version 7.12.0).
**/
(function () {
@@ -122,7 +125,10 @@
allowEdit: "=?",
onOpen: "&?",
onRemove: "&?",
- onEdit: "&?"
+ onEdit: "&?",
+ openUrl: '=?',
+ editUrl: '=?',
+ removeUrl: '=?'
},
link: link
};
@@ -133,4 +139,4 @@
angular.module('umbraco.directives').directive('umbNodePreview', NodePreviewDirective);
-})();
\ No newline at end of file
+})();
diff --git a/src/Umbraco.Web.UI.Client/src/common/filters/nestedcontent.filter.js b/src/Umbraco.Web.UI.Client/src/common/filters/nestedcontent.filter.js
index 76e4e4a822..8c23094bbf 100644
--- a/src/Umbraco.Web.UI.Client/src/common/filters/nestedcontent.filter.js
+++ b/src/Umbraco.Web.UI.Client/src/common/filters/nestedcontent.filter.js
@@ -9,6 +9,13 @@ var ncNodeNameCache = {
angular.module("umbraco.filters").filter("ncNodeName", function (editorState, entityResource) {
+ function formatLabel(firstNodeName, totalNodes) {
+ return totalNodes <= 1
+ ? firstNodeName
+ // If there is more than one item selected, append the additional number of items selected to hint that
+ : firstNodeName + " (+" + (totalNodes - 1) + ")";
+ }
+
return function (input) {
// Check we have a value at all
@@ -25,23 +32,38 @@ angular.module("umbraco.filters").filter("ncNodeName", function (editorState, en
ncNodeNameCache.keys = {};
}
+ // MNTP values are comma separated IDs. We'll only fetch the first one for the NC header.
+ var ids = input.split(',');
+ var lookupId = ids[0];
+
// See if there is a value in the cache and use that
- if (ncNodeNameCache.keys[input]) {
- return ncNodeNameCache.keys[input];
+ if (ncNodeNameCache.keys[lookupId]) {
+ return formatLabel(ncNodeNameCache.keys[lookupId], ids.length);
}
// No value, so go fetch one
// We'll put a temp value in the cache though so we don't
// make a load of requests while we wait for a response
- ncNodeNameCache.keys[input] = "Loading...";
+ ncNodeNameCache.keys[lookupId] = "Loading...";
- entityResource.getById(input, "Document")
- .then(function (ent) {
- ncNodeNameCache.keys[input] = ent.name;
- });
+ var type = lookupId.indexOf("umb://media/") === 0
+ ? "Media"
+ : lookupId.indexOf("umb://member/") === 0
+ ? "Member"
+ : "Document";
+ entityResource.getById(lookupId, type)
+ .then(
+ function (ent) {
+ ncNodeNameCache.keys[lookupId] = ent.name;
+ }
+ );
// Return the current value for now
- return ncNodeNameCache.keys[input];
+ return formatLabel(ncNodeNameCache.keys[lookupId], ids.length);
};
-});
\ No newline at end of file
+}).filter("ncRichText", function () {
+ return function(input) {
+ return $("").html(input).text();
+ };
+});
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js
index 3cde632d4b..264d15215f 100644
--- a/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js
+++ b/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js
@@ -18,7 +18,8 @@ function dataTypeHelper() {
description: preVals[i].description,
label: preVals[i].label,
view: preVals[i].view,
- value: preVals[i].value
+ value: preVals[i].value,
+ prevalues: preVals[i].prevalues
});
}
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js
index e4ba9b337c..42b739fe61 100644
--- a/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js
+++ b/src/Umbraco.Web.UI.Client/src/common/services/listviewhelper.service.js
@@ -272,12 +272,19 @@
for (var i = 0; selection.length > i; i++) {
var selectedItem = selection[i];
// if item.id is 2147483647 (int.MaxValue) use item.key
- if ((item.id !== 2147483647 && item.id === selectedItem.id) || item.key === selectedItem.key) {
+ if ((item.id !== 2147483647 && item.id === selectedItem.id) || (item.key && item.key === selectedItem.key)) {
isSelected = true;
}
}
if (!isSelected) {
- selection.push({ id: item.id, key: item.key });
+ var obj = {
+ id: item.id
+ };
+ if (item.key) {
+ obj.key = item.key;
+ }
+
+ selection.push(obj);
item.selected = true;
}
}
@@ -298,7 +305,7 @@
for (var i = 0; selection.length > i; i++) {
var selectedItem = selection[i];
// if item.id is 2147483647 (int.MaxValue) use item.key
- if ((item.id !== 2147483647 && item.id === selectedItem.id) || item.key === selectedItem.key) {
+ if ((item.id !== 2147483647 && item.id === selectedItem.id) || (item.key && item.key === selectedItem.key)) {
selection.splice(i, 1);
item.selected = false;
}
@@ -368,9 +375,15 @@
for (var i = 0; i < items.length; i++) {
var item = items[i];
+ var obj = {
+ id: item.id
+ };
+ if (item.key) {
+ obj.key = item.key
+ }
if (checkbox.checked) {
- selection.push({ id: item.id, key: item.key });
+ selection.push(obj);
} else {
clearSelection = true;
}
@@ -410,7 +423,7 @@
var selectedItem = selection[selectedIndex];
// if item.id is 2147483647 (int.MaxValue) use item.key
- if ((item.id !== 2147483647 && item.id === selectedItem.id) || item.key === selectedItem.key) {
+ if ((item.id !== 2147483647 && item.id === selectedItem.id) || (item.key && item.key === selectedItem.key)) {
numberOfSelectedItem++;
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js b/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js
index aa53626a78..127124ea13 100644
--- a/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js
+++ b/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js
@@ -156,13 +156,13 @@ function tinyMceService($log, imageHelper, $http, $timeout, macroResource, macro
var s = "width: " + newSize.width + "px; height:" + newSize.height + "px;";
editor.dom.setAttrib(imgElm, 'style', s);
- editor.dom.setAttrib(imgElm, 'id', null);
if (img.url) {
var src = img.url + "?width=" + newSize.width + "&height=" + newSize.height;
editor.dom.setAttrib(imgElm, 'data-mce-src', src);
}
- }
+ }
+ editor.dom.setAttrib(imgElm, 'id', null);
}, 500);
}
},
diff --git a/src/Umbraco.Web.UI.Client/src/less/belle.less b/src/Umbraco.Web.UI.Client/src/less/belle.less
index b18f2c942f..6fe1421742 100644
--- a/src/Umbraco.Web.UI.Client/src/less/belle.less
+++ b/src/Umbraco.Web.UI.Client/src/less/belle.less
@@ -122,6 +122,7 @@
@import "components/umb-grid.less";
@import "components/umb-empty-state.less";
@import "components/umb-property-editor.less";
+@import "components/umb-color-swatches.less";
@import "components/umb-iconpicker.less";
@import "components/umb-insert-code-box.less";
@import "components/umb-packages.less";
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/application/umb-drawer.less b/src/Umbraco.Web.UI.Client/src/less/components/application/umb-drawer.less
index 45208bd4bf..cc024ca5bb 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/application/umb-drawer.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/application/umb-drawer.less
@@ -56,12 +56,13 @@
/* Our badge - should be moved */
.umb-help-badge {
- padding: 10px 20px 10px 35px;
+ padding: 10px 20px 10px 55px;
background: @white;
position: relative;
overflow: hidden;
border-radius: 3px;
display: block;
+ margin-bottom:5px;
box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16);
}
@@ -76,10 +77,10 @@
}
.umb-help-badge__icon {
- font-size: 40px;
+ font-size: 36px;
transform: translate(0,-50%);
position: absolute;
- left: -15px;
+ left: 10px;
top: 50%;
color: @red-l3;
}
@@ -130,6 +131,14 @@
align-items: center;
}
+/* the outer container for each help type - tours, video etc */
+.umb-help-section + .umb-help-section {
+ margin-top:20px;
+}
+
+.umb-help-section__title {
+ margin:0 0 10px;
+}
/* Help list */
@@ -137,13 +146,13 @@
list-style: none;
margin-left: 0;
margin-bottom: 0;
- background: @white;
+ background: @white;
border-radius: 3px;
box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16);
-}
-
-.umb-help-list:last-child {
- border-bottom: none;
+
+ [data-element*="help-tours"] & {
+ margin-bottom:5px;
+ }
}
.umb-help-list-item {
@@ -156,20 +165,28 @@
border-bottom: none;
}
-.umb-help-list-item > a,
+.umb-help-list-item__group-title i {
+ margin-right:2px;
+ text-decoration: none;
+}
+
.umb-help-list-item__content {
display: flex;
align-items: center;
- padding: 10px 20px;
+ padding: 10px 20px 10px 10px;
+ text-decoration: none;
}
+.umb-help-list-item:hover,
+.umb-help-list-item:focus,
+.umb-help-list-item:active,
.umb-help-list-item > a:hover,
.umb-help-list-item > a:focus,
.umb-help-list-item > a:active {
text-decoration: none;
.umb-help-list-item__title {
- text-decoration: underline !important;
+ text-decoration: underline;
}
}
@@ -198,4 +215,8 @@
.umb-help-list-item:hover .umb-help-list-item__group-title {
text-decoration: underline;
+}
+
+[data-element*="tour-"].umb-help-list-item:hover .umb-help-list-item__title {
+ text-decoration:none;
}
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-color-swatches.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-color-swatches.less
new file mode 100644
index 0000000000..e9101973b4
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-color-swatches.less
@@ -0,0 +1,61 @@
+.umb-color-swatches {
+
+ .umb-color-box {
+ border: none;
+ color: white;
+ cursor: pointer;
+ padding: 5px;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ margin: 5px;
+ border-radius: 3px;
+ width: 30px;
+ height: 30px;
+ transition: box-shadow .3s;
+
+ &:hover, &:focus {
+ box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
+ }
+
+ .check_circle {
+ display: none;
+ visibility: hidden;
+ width: 20px;
+ height: 20px;
+ margin: 0 auto;
+
+ .icon {
+ font-size: 1em;
+ display: flex;
+ width: 100%;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
+ background-color: rgba(0,0,0,.15);
+ float: left;
+ }
+ }
+
+ &.active {
+ .check_circle {
+ display: flex;
+ visibility: visible;
+ }
+ }
+
+ &.umb-color-box--s {
+ }
+
+ &.umb-color-box--m {
+ width: 40px;
+ height: 40px;
+
+ .check_circle {
+ width: 25px;
+ height: 25px;
+ }
+ }
+ }
+}
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less
index d09d170814..7dfcc493a8 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less
@@ -537,15 +537,11 @@
.umb-grid textarea.textstring {
display: block;
overflow: hidden;
- border: none;
background: @white;
outline: none;
resize: none;
color: @gray-3;
-}
-
-.umb-grid .umb-cell-rte textarea.mceNoEditor {
- display: none !important;
+ min-width: 100%;
}
.umb-grid .umb-cell-media .caption {
@@ -567,11 +563,6 @@
width: 100%;
}
-.umb-grid .umb-cell-rte {
- border-color: transparent;
-}
-
-
// ICONS
// -------------------------
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-iconpicker.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-iconpicker.less
index 8ed034b403..83d596b332 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/umb-iconpicker.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-iconpicker.less
@@ -40,3 +40,39 @@
.umb-iconpicker-item i {
font-size: 30px;
}
+
+
+// Color swatch
+ .button {
+ border: none;
+ color: white;
+ padding: 5px;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ margin: 5px;
+ border-radius: 3px;
+ }
+
+
+ .check_circle{
+ width: 20px;
+ height: 20px;
+
+ }
+
+ // Hide Circle when not active
+ i.small{
+ display: none;
+ }
+
+ // Circle behind the checkmark
+ i.small.active{
+ font-size: 14px;
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background-color: rgba(0,0,0,.15);
+ float: right;
+ }
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less
index 4f24fcf504..e2a8c8fc81 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less
@@ -67,29 +67,63 @@
-o-user-select: none;
}
-.nested-content__heading
-{
- float: left;
+.nested-content__heading {
line-height: 20px;
-}
+ position: relative;
-.nested-content__heading i
-{
- vertical-align: text-top;
- color: #999; /* same icon color as the icons in the item type picker */
- margin-right: 10px;
+ &.-with-icon
+ {
+ padding-left: 20px;
+ }
+
+ i
+ {
+ color: #999; /* same icon color as the icons in the item type picker */
+ position: absolute;
+ left: 0;
+ }
+
+ .nested-content__item-name
+ {
+ max-height: 20px;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: block;
+ }
}
.nested-content__icons
{
- margin: -6px 0;
opacity: 0;
transition: opacity .15s ease-in-out;
-moz-transition: opacity .15s ease-in-out;
-webkit-transition: opacity .15s ease-in-out;
+
+ position: absolute;
+ right: 0px;
+ top: 2px;
+ background-color: white;
+ padding: 5px;
+
+ &:before
+ {
+ content: ' ';
+ position: absolute;
+ display: block;
+ width: 30px;
+ left: -30px;
+ top: 0;
+ bottom: 0;
+ background: -webkit-linear-gradient(90deg, rgba(255,255,255,0), white);
+ background: -moz-linear-gradient(90deg, rgba(255,255,255,0), white);
+ background: linear-gradient(90deg, rgba(255,255,255,0), white);
+ }
}
+
.nested-content__header-bar:hover .nested-content__icons,
.nested-content__item--active > .nested-content__header-bar .nested-content__icons
{
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-node-preview.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-node-preview.less
index 9e038bd571..3d1015f972 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/umb-node-preview.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-node-preview.less
@@ -1,11 +1,14 @@
.umb-node-preview {
padding: 5px 0;
display: flex;
- max-width: 66.6%;
box-sizing: border-box;
border-bottom: 1px solid @gray-9;
}
+.umb-editor-wrapper .umb-node-preview {
+ max-width: 66.6%;
+}
+
.umb-node-preview:last-of-type {
border-bottom: none;
}
@@ -89,7 +92,6 @@
color: @turquoise-d1;
font-weight: bold;
padding: 5px 15px;
- max-width: 66.6%;
box-sizing: border-box;
}
@@ -97,6 +99,10 @@
color: @turquoise-d1;
}
+.umb-editor-wrapper .umb-node-preview-add {
+ max-width: 66.6%;
+}
+
.umb-overlay,
.umb-modal {
.umb-node-preview {
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less
index 0ea7b5f434..b302ed2654 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-table.less
@@ -94,7 +94,7 @@ input.umb-table__input {
cursor: pointer;
font-size: 14px;
position: relative;
- min-height: 32px;
+ min-height: 52px;
&:hover {
background-color: @gray-10;
}
@@ -272,4 +272,4 @@ input.umb-table__input {
font-size: 20px;
}
-}
\ No newline at end of file
+}
diff --git a/src/Umbraco.Web.UI.Client/src/less/hacks.less b/src/Umbraco.Web.UI.Client/src/less/hacks.less
index be48fd9ab6..22e2eb4566 100644
--- a/src/Umbraco.Web.UI.Client/src/less/hacks.less
+++ b/src/Umbraco.Web.UI.Client/src/less/hacks.less
@@ -20,12 +20,17 @@
}
.thumbnail {
- border-radius: 0px;
-}
+ border-radius: 0;
+ min-width: 150px;
-.thumbnail img {
- max-width: 100% !important;
- width: 100%;
+ > a {
+ display: block;
+ }
+
+ img {
+ max-width: 100% !important;
+ width: 100%;
+ }
}
#mapCanvas img {
diff --git a/src/Umbraco.Web.UI.Client/src/less/property-editors.less b/src/Umbraco.Web.UI.Client/src/less/property-editors.less
index 67b684ab7e..8e6ed84ac9 100644
--- a/src/Umbraco.Web.UI.Client/src/less/property-editors.less
+++ b/src/Umbraco.Web.UI.Client/src/less/property-editors.less
@@ -3,20 +3,20 @@
// --------------------------------------------------
.umb-property-editor {
min-width:66.6%;
-
+
&-pull {
float:left;
width:66.6%;
}
-
+
&-push {
float:right;
- }
+ }
}
.umb-property-editor-tiny {
width: 60px;
-
+
&.umb-editor-push {
width:30%;
min-width:0;
@@ -53,7 +53,7 @@
float:right;
width:35%;
}
-
+
&--pull, &--push {
.umb-editor {
min-width:0;
@@ -138,6 +138,12 @@ ul.color-picker li {
margin: 3px;
border: 2px solid transparent;
width: 60px;
+
+ .thumbnail{
+ min-width: auto;
+ width: 58px;
+ padding: 0;
+ }
}
ul.color-picker li.active {
border: 2px dashed @gray-8;
@@ -148,54 +154,67 @@ ul.color-picker li a {
cursor:pointer;
}
-.control-group.color-picker-preval .thumbnail {
- width:30px;
- border:none;
-}
+
/* pre-value editor */
-/*.control-group.color-picker-preval:before {
- content: "";
- display: inline-block;
- vertical-align: middle;
- height: 100%;
-}*/
+.control-group.color-picker-preval {
+ .thumbnail {
+ width: 36px;
+ border: none;
+ cursor: move;
+ border-radius: 3px;
+ }
-/*.control-group.color-picker-preval div.thumbnail {
- display: inline-block;
- vertical-align: middle;
-}*/
-.control-group.color-picker-preval div.color-picker-prediv {
- display: inline-block;
- width: 60%;
-}
+ .handle {
+ float: left;
+ display: inline-flex;
+ margin: 5px 3px 5px 0;
+ }
-.control-group.color-picker-preval pre {
- display: inline;
- margin-right: 20px;
- margin-left: 10px;
- width: 50%;
- white-space: nowrap;
- overflow: hidden;
- margin-bottom: 0;
- vertical-align: middle;
-}
+ div.color-picker-prediv {
+ display: inline-flex;
+ align-items: center;
-.control-group.color-picker-preval btn {
- //vertical-align: middle;
-}
+ pre {
+ display: inline;
+ font-family: monospace;
+ margin-right: 10px;
+ margin-left: 10px;
+ width: 50%;
+ white-space: nowrap;
+ overflow: hidden;
+ margin-bottom: 0;
+ vertical-align: middle;
+ padding-top: 7px;
+ padding-bottom: 7px;
+ background: #f7f7f7;
+ }
-.control-group.color-picker-preval input[type="text"] {
- min-width: 40%;
- width: 40%;
- display: inline-block;
- margin-right: 20px;
- margin-top: 1px;
-}
+ span {
+ margin-left: 5px;
+ }
+ }
-.control-group.color-picker-preval label {
- border: solid @white 1px;
- padding: 6px;
+ input[type="text"] {
+ min-width: 40%;
+ width: 320px;
+ display: inline-block;
+ margin-top: 1px;
+ }
+
+ .sp-replacer {
+ margin-right: 18px;
+ }
+
+ label {
+ border: 1px solid #fff;
+ padding: 7px 10px;
+ font-family: monospace;
+ border: 1px solid #dfdfe1;
+ background: #f7f7f7;
+ margin: 0 15px 0 0;
+ border-radius: 3px;
+ }
}
@@ -369,7 +388,7 @@ ul.color-picker li a {
> li:not(.unsortable) {
cursor: move;
}
-}
+}
.umb-sortable-thumbnails li:hover .umb-sortable-thumbnails__actions {
opacity: 1;
@@ -899,10 +918,39 @@ ul.color-picker li a {
//
// Tags
// --------------------------------------------------
-.umb-tags{border: @gray-10 solid 1px; padding: 10px; font-size: 13px; text-shadow: none;}
-.umb-tags .tag{cursor: pointer; margin: 7px; padding: 7px; background: @turquoise}
-.umb-tags .tag i{padding: 2px;}
-.umb-tags input{border: none; background: @white}
+.umb-tags{
+ border: @gray-10 solid 1px;
+ padding: 10px;
+ font-size: 13px;
+ text-shadow: none;
+
+ .tag{
+ cursor: default;
+ margin: 7px;
+ padding: 10px;
+ background: @turquoise;
+ position: relative;
+
+ .icon-trash{
+ cursor: pointer;
+ padding: 2px;
+ font-size: 12px;
+ position: relative;
+ right: -6px;
+ }
+
+ .umb_confirm-action__overlay.-left{
+ top: 6px;
+ left: auto;
+ right: 15px;
+ }
+ }
+
+ input{
+ border: none;
+ background: @white;
+ }
+}
//
// Date/time picker
diff --git a/src/Umbraco.Web.UI.Client/src/less/variables.less b/src/Umbraco.Web.UI.Client/src/less/variables.less
index 5ee1d6dba1..b6e7c87309 100644
--- a/src/Umbraco.Web.UI.Client/src/less/variables.less
+++ b/src/Umbraco.Web.UI.Client/src/less/variables.less
@@ -10,26 +10,30 @@
// Grays
// -------------------------
@black: #000;
-@blackLight: #1d1d1d;
+@blackLight: #1D1D1D;
@grayDarker: #222;
@grayDark: #343434;
@gray: #555;
-@grayMed: #7f7f7f;
-@grayLight: #d9d9d9;
-@grayLighter: #f8f8f8;
-@white: #fff;
-
+@grayMed: #7F7F7F;
+@blueGrey: #607D8B;
+@grayLight: #D9D9D9;
+@grayLighter: #F8F8F8;
+@white: #FFF;
+@grayIcon: #9E9E9E;
// Accent colors
// -------------------------
-@blue: #2e8aea;
-@blueDark: #0064cd;
-@blueLight: #add8e6;
-@green: #46a546;
-@red: #9d261d;
-@yellow: #ffc40d;
+
+
+
+@blue: #2E8AEA;
+@blueDark: #0064CD;
+@blueLight: #ADD8E6;
+@green: #46A546;
+@red: #9D261D;
+@yellow: #FFC40D;
@orange: #DF7F48;
-@pink: #c3325f;
+@pink: #C3325F;
// Colors
@@ -86,6 +90,28 @@
@gray-10: #F3F3F5;
+// Additional Icon Colours
+@brownIcon: #795548;
+@blueIcon: #2196F3;
+@lightBlueIcon: #03A9F4;
+@cyanIcon: #00BCD4;
+@greenIcon: #4CAF50;
+@lightGreenIcon: #8BC34A;
+@limeIcon: #CDDC39;
+@yellowIcon: #FFEB3B;
+@amberIcon: #FFC107;
+@orangeIcon: #FF9800;
+@deepOrangeIcon: #FF5722;
+@redIcon: #F44336;
+@pinkIcon: #E91E63;
+@purpleIcon: #9C27B0;
+@deepPurpleIcon: #673AB7;
+@indigoIcon: #3F51B5;
+
+
+
+
+
.red{color: @red;}
.blue{color: @blue;}
.black{color: @black;}
@@ -96,30 +122,71 @@
//icon colors for tree icons
.color-red, .color-red i{color: @red-d1 !important;}
.color-blue, .color-blue i{color: @turquoise-d1 !important;}
-.color-orange, .color-orange i{color: #d9631e !important;}
+.color-orange, .color-orange i{color: @orange !important;}
.color-green, .color-green i{color: @green-d1 !important;}
-.color-yellow, .color-yellow i{color: @yellow-d1 !important;}
+.color-yellow, .color-yellow i{color: @yellowIcon !important;}
/* Colors based on http://zavoloklom.github.io/material-design-color-palette/colors.html */
-.color-black, .color-black i { color: #000 !important; }
-.color-blue-grey, .color-blue-grey i { color: #607d8b !important; }
-.color-grey, .color-grey i { color: #9e9e9e !important; }
-.color-brown, .color-brown i { color: #795548 !important; }
-.color-blue, .color-blue i { color: #2196f3 !important; }
-.color-light-blue, .color-light-blue i {color: #03a9f4 !important; }
-.color-cyan, .color-cyan i { color: #00bcd4 !important; }
-.color-green, .color-green i { color: #4caf50 !important; }
-.color-light-green, .color-light-green i {color: #8bc34a !important; }
-.color-lime, .color-lime i { color: #cddc39 !important; }
-.color-yellow, .color-yellow i { color: #ffeb3b !important; }
-.color-amber, .color-amber i { color: #ffc107 !important; }
-.color-orange, .color-orange i { color: #ff9800 !important; }
-.color-deep-orange, .color-deep-orange i { color: #ff5722 !important; }
-.color-red, .color-red i { color: #f44336 !important; }
-.color-pink, .color-pink i { color: #e91e63 !important; }
-.color-purple,.color-purple i { color: #9c27b0 !important; }
-.color-deep-purple, .color-deep-purple i { color: #673ab7 !important; }
-.color-indigo, .color-indigo i { color: #3f51b5 !important; }
+.btn-color-black {background-color: @black;}
+.color-black i { color: @black;}
+
+
+.btn-color-blue-grey {background-color: @blueGrey;}
+.color-blue-grey i { color: @blueGrey; }
+
+
+.btn-color-grey{background-color: @grayIcon;}
+.color-grey i { color: @grayIcon; }
+
+
+.btn-color-brown{background-color: @brownIcon;}
+.color-brown i { color: @brownIcon; }
+
+.btn-color-blue{background-color: @blueIcon;}
+.color-blue i { color: @blueIcon; }
+
+.btn-color-light-blue{background-color: @lightBlueIcon;}
+.color-light-blue i {color: @lightBlueIcon;}
+
+.btn-color-cyan{background-color: @cyanIcon;}
+.color-cyan i { color: @cyanIcon; }
+
+.btn-color-green{background-color: @greenIcon;}
+.color-green i { color: @greenIcon }
+
+.btn-color-light-green{background-color: @lightGreenIcon;}
+.color-light-green i {color: @lightGreenIcon; }
+
+.btn-color-lime{background-color: @limeIcon;}
+.color-lime i { color: @limeIcon; }
+
+.btn-color-yellow{background-color: @yellowIcon;}
+.color-yellow i { color: @yellowIcon; }
+
+.btn-color-amber{background-color: @amberIcon;}
+.color-amber i { color: @amberIcon; }
+
+.btn-color-orange{background-color: @orangeIcon;}
+.color-orange i { color: @orangeIcon; }
+
+.btn-color-deep-orange{background-color: @deepOrangeIcon;}
+.color-deep-orange i { color: @deepOrangeIcon; }
+
+.btn-color-red{background-color: @redIcon;}
+.color-red i { color: @redIcon; }
+
+.btn-color-pink{background-color: @pinkIcon;}
+.color-pink i { color: @pinkIcon; }
+
+.btn-color-purple{background-color: @purpleIcon;}
+.color-purple i { color: @purpleIcon; }
+
+.btn-color-deep-purple{background-color: @deepPurpleIcon;}
+.color-deep-purple i { color: @deepPurpleIcon; }
+
+.btn-color-indigo{background-color: @indigoIcon;}
+.color-indigo i { color: @indigoIcon; }
+
// Scaffolding
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.controller.js
index df40539aac..3323f2bfb3 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.controller.js
@@ -48,15 +48,17 @@
setSectionName();
userService.getCurrentUser().then(function (user) {
-
+
vm.userType = user.userType;
vm.userLang = user.locale;
+ vm.hasAccessToSettings = _.contains(user.allowedSections, 'settings');
+
evts.push(eventsService.on("appState.treeState.changed", function (e, args) {
handleSectionChange();
}));
- findHelp(vm.section, vm.tree, vm.usertype, vm.userLang);
+ findHelp(vm.section, vm.tree, vm.userType, vm.userLang);
});
@@ -81,17 +83,20 @@
vm.tree = $routeParams.tree;
setSectionName();
- findHelp(vm.section, vm.tree, vm.usertype, vm.userLang);
+ findHelp(vm.section, vm.tree, vm.userType, vm.userLang);
}
});
}
function findHelp(section, tree, usertype, userLang) {
+
+ if (vm.hasAccessToSettings) {
+ helpService.getContextHelpForPage(section, tree).then(function (topics) {
+ vm.topics = topics;
+ });
+ }
- helpService.getContextHelpForPage(section, tree).then(function (topics) {
- vm.topics = topics;
- });
var rq = {};
rq.section = vm.section;
@@ -113,10 +118,12 @@
rq.path = rq.section + "/" + $routeParams.tree + "/" + $routeParams.method;
}
- helpService.findVideos(rq).then(function(videos){
- vm.videos = videos;
- });
-
+
+ if (vm.hasAccessToSettings) {
+ helpService.findVideos(rq).then(function (videos) {
+ vm.videos = videos;
+ });
+ }
}
function setSectionName() {
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.html b/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.html
index 79c2118aca..cf93308c82 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/drawers/help/help.html
@@ -9,16 +9,17 @@
- Restore {{currentNode.name}} under {{target.name}}? -
+
+
{{currentNode.name}} was moved underneath {{target.name}}
- +{{currentNode.name}}
-
+
+
{{currentNode.name}}
#{{item.value}} - {{item.label}}#{{item.value}}{{item.label}}{{area.maxItems}}
@@ -95,15 +95,13 @@