Merge branch 'dev-v8' into temp8-U4-11219

This commit is contained in:
Shannon
2018-04-19 23:49:06 +10:00
45 changed files with 562 additions and 394 deletions

View File

@@ -25,6 +25,7 @@ The tour object consist of two parts - The overall tour configuration and a list
"group": "My Custom Group" // Used to group tours in the help drawer
"groupOrder": 200 // Control the order of tour groups
"allowDisable": // Adds a "Don't" show this tour again"-button to the intro step
"culture" : // From v7.11+. Specifies the culture of the tour (eg. en-US), if set the tour will only be shown to users with this culture set on their profile. If omitted or left empty the tour will be visible to all users
"requiredSections":["content", "media", "mySection"] // Sections that the tour will access while running, if the user does not have access to the required tour sections, the tour will not load.
"steps": [] // tour steps - see next example
}

View File

@@ -286,6 +286,7 @@
$scope.page.buttonGroupState = "success";
}, function (err) {
formHelper.showNotifications(err.data);
$scope.page.buttonGroupState = 'error';
});
}

View File

@@ -54,8 +54,6 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
controller: function ($scope, $element) {
var vm = this;
var isInitialized = false;
var registeredCallbacks = {
treeNodeExpanded: [],
@@ -163,9 +161,7 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
if (!args.path) {
throw "args.path cannot be null";
}
var treeNode = loadActiveTree(args.tree);
if (angular.isString(args.path)) {
args.path = args.path.replace('"', '').split(',');
}
@@ -200,6 +196,8 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
deleteAnimations = false;
var treeNode = loadActiveTree(args.tree);
return treeService.syncTree({
node: treeNode,
path: args.path,
@@ -275,13 +273,6 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
//set the data once we have it
$scope.tree = data;
//call the callback, this allows for hosting controllers to bind to events and use the exposed API
if (!isInitialized) {
isInitialized = true;
$scope.onInit();
}
enableDeleteAnimations();
$scope.loading = false;
@@ -433,6 +424,8 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat
});
loadTree();
$scope.onInit();
}
};
}

View File

@@ -57,7 +57,7 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
saveModel),
'Failed to save permissions');
},
getRecycleBin: function () {
return umbRequestHelper.resourcePromise(
@@ -425,7 +425,7 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
$http.get(
umbRequestHelper.getApiUrl(
"contentApiBaseUrl",
"GetEmpty",
"GetEmpty",
[{ blueprintId: blueprintId }, { parentId: parentId}])),
'Failed to retrieve blueprint for id ' + blueprintId);
},
@@ -489,6 +489,7 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
getChildren: function (parentId, options) {
var defaults = {
includeProperties: [],
pageSize: 0,
pageNumber: 0,
filter: '',
@@ -532,6 +533,7 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
"GetChildren",
{
id: parentId,
includeProperties: _.pluck(options.includeProperties, 'alias').join(","),
pageNumber: options.pageNumber,
pageSize: options.pageSize,
orderBy: options.orderBy,
@@ -581,7 +583,7 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
"contentApiBaseUrl",
"GetDetailedPermissions", { contentId: contentId })),
'Failed to retrieve permissions for content item ' + contentId);
},
},
getPermissions: function (nodeIds) {
return umbRequestHelper.resourcePromise(
@@ -742,11 +744,11 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
createBlueprintFromContent: function (contentId, name) {
return umbRequestHelper.resourcePromise(
$http.post(
$http.post(
umbRequestHelper.getApiUrl("contentApiBaseUrl", "CreateBlueprintFromContent", {
contentId: contentId, name: name
})
),
})
),
"Failed to create blueprint from content with id " + contentId
);
}

View File

@@ -122,6 +122,18 @@ function mediaTypeResource($q, $http, umbRequestHelper, umbDataFormatter) {
'Failed to delete content type contaier');
},
/**
* @ngdoc method
* @name umbraco.resources.mediaTypeResource#save
* @methodOf umbraco.resources.mediaTypeResource
*
* @description
* Saves or update a media type
*
* @param {Object} content data type object to create/update
* @returns {Promise} resourcePromise object.
*
*/
save: function (contentType) {
var saveModel = umbDataFormatter.formatContentTypePostData(contentType);

View File

@@ -86,8 +86,8 @@ function memberTypeResource($q, $http, umbRequestHelper, umbDataFormatter) {
/**
* @ngdoc method
* @name umbraco.resources.contentTypeResource#save
* @methodOf umbraco.resources.contentTypeResource
* @name umbraco.resources.memberTypeResource#save
* @methodOf umbraco.resources.memberTypeResource
*
* @description
* Saves or update a member type

View File

@@ -237,10 +237,11 @@ function contentEditingHelper(fileManager, $q, $location, $routeParams, notifica
}
//if we are not creating, then we should add unpublish too,
// if we are not creating, then we should add unpublish too,
// so long as it's already published and if the user has access to publish
// and the user has access to unpublish (may have been removed via Event)
if (!args.create) {
if (args.content.publishDate && _.contains(args.content.allowedActions, "U")) {
if (args.content.publishDate && _.contains(args.content.allowedActions, "U") && _.contains(args.content.allowedActions, "Z")) {
buttons.subButtons.push(createButtonDefinition("Z"));
}
}

View File

@@ -8,7 +8,7 @@
// Sortabel
// Sortable
// -------------------------
// sortable-helper
@@ -127,6 +127,16 @@
position: relative;
margin-bottom: 40px;
padding-top: 10px;
&:hover {
background-color: @grayLighter;
}
&[ng-click],
&[data-ng-click],
&[x-ng-click] {
cursor: pointer;
}
}
.umb-grid .row-tools a {
@@ -431,7 +441,7 @@
background-color: @gray-10;
.umb-row-title-bar {
cursor: default;
cursor: inherit;
}
.umb-row-title {

View File

@@ -16,24 +16,23 @@
<i class="large {{docType.icon}}"></i>
<span class="menu-label">
{{docType.name}}
<small>
{{docType.description}}
</small>
<small>{{docType.description}}</small>
</span>
</a>
</li>
<!--
<li class="add">
<a href="#settings/documenttype/create/{{currentNode.id}}?doctype={{docType.alias}}&create=true" ng-click="nav.hideNavigation()">
<i class="icon-large icon-plus"></i>
<span class="menu-label">
Create a new media type
<small>
Design and configure a new media type
</small>
</span>
</a>
</li> -->
<!--
<li class="add">
<a href="#settings/documenttype/create/{{currentNode.id}}?doctype={{docType.alias}}&create=true" ng-click="nav.hideNavigation()">
<i class="icon-large icon-plus"></i>
<span class="menu-label">
Create a new media type
<small>
Design and configure a new media type
</small>
</span>
</a>
</li>
-->
</ul>
</li>
</ul>

View File

@@ -6,10 +6,9 @@
<li ng-repeat="docType in allowedTypes">
<a href="#member/member/edit/{{currentNode.id}}?doctype={{docType.alias}}&create=true" ng-click="nav.hideNavigation()">
<i class="large icon-users"></i>
<span class="menu-label">{{docType.name}}
<i class="large {{docType.icon}}"></i>
<span class="menu-label">
{{docType.name}}
<small>{{docType.description}}</small>
</span>
</a>
@@ -24,4 +23,3 @@
<localize key="buttons_somethingElse">Do something else</localize>
</button>
</div>

View File

@@ -1,6 +1,6 @@
/**
* The controller that is used for a couple different Property Editors: Multi Node Tree Picker, Content Picker,
* The controller that is used for a couple different Property Editors: Multi Node Tree Picker, Content Picker,
* since this is used by MNTP and it supports content, media and members, there is code to deal with all 3 of those types
* @param {any} $scope
* @param {any} entityResource
@@ -70,7 +70,7 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
$scope.renderModel = [];
$scope.dialogEditor = editorState && editorState.current && editorState.current.isDialogEditor === true;
$scope.dialogEditor = editorState && editorState.current && editorState.current.isDialogEditor === true;
//the default pre-values
var defaultConfig = {
@@ -105,7 +105,7 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
$scope.model.config.showOpenButton = Object.toBoolean($scope.model.config.showOpenButton);
$scope.model.config.showEditButton = Object.toBoolean($scope.model.config.showEditButton);
$scope.model.config.showPathOnHover = Object.toBoolean($scope.model.config.showPathOnHover);
var entityType = $scope.model.config.startNode.type === "member"
? "Member"
: $scope.model.config.startNode.type === "media"
@@ -135,8 +135,8 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
},
treeAlias: $scope.model.config.startNode.type,
section: $scope.model.config.startNode.type,
idType: "int",
//only show the lang selector for content
idType: "int",
//only show the lang selector for content
showLanguageSelector: $scope.model.config.startNode.type === "content"
};

View File

@@ -267,11 +267,6 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
}
var notSupported = [
"Umbraco.CheckBoxList",
"Umbraco.DropDownMultiple",
"Umbraco.MacroContainer",
"Umbraco.RadioButtonList",
"Umbraco.MultipleTextstring",
"Umbraco.Tags",
"Umbraco.UploadField",
"Umbraco.ImageCropper"

View File

@@ -266,7 +266,7 @@ angular.module("umbraco")
editor.on('ObjectResized', function (e) {
var qs = "?width=" + e.width + "&height=" + e.height;
var qs = "?width=" + e.width + "&height=" + e.height + "&mode=max";
var srcAttr = $(e.target).attr("src");
var path = srcAttr.split("?")[0];
$(e.target).attr("data-mce-src", path + qs);
@@ -384,7 +384,7 @@ angular.module("umbraco")
// element might still be there even after the modal has been hidden.
$scope.$on('$destroy', function () {
unsubscribe();
if (tinyMceEditor !== undefined && tinyMceEditor != null) {
if (tinyMceEditor !== undefined && tinyMceEditor != null) {
tinyMceEditor.destroy()
}
});