U4-8749: Fixes by @AndyButland

This commit is contained in:
Asbjørn Riis-Knudsen
2016-07-29 23:42:59 +02:00
parent e53b81b627
commit b686fa74c9
3 changed files with 88 additions and 31 deletions

View File

@@ -151,7 +151,6 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie
layouts: $scope.model.config.layouts,
activeLayout: listViewHelper.getLayout($routeParams.id, $scope.model.config.layouts)
},
orderBySystemField: true,
allowBulkPublish: $scope.entityType === 'content' && $scope.model.config.bulkActionPermissions.allowBulkPublish,
allowBulkUnpublish: $scope.entityType === 'content' && $scope.model.config.bulkActionPermissions.allowBulkUnpublish,
allowBulkCopy: $scope.entityType === 'content' && $scope.model.config.bulkActionPermissions.allowBulkCopy,
@@ -159,6 +158,15 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie
allowBulkDelete: $scope.model.config.bulkActionPermissions.allowBulkDelete
};
// Check if selected order by field is actually custom field
for (var j = 0; j < $scope.options.includeProperties.length; j++) {
var includedProperty = $scope.options.includeProperties[j];
if (includedProperty.alias.toLowerCase() === $scope.options.orderBy.toLowerCase()) {
$scope.options.orderBySystemField = includedProperty.isSystem === 1;
break;
}
}
//update all of the system includeProperties to enable sorting
_.each($scope.options.includeProperties, function (e, i) {
@@ -180,12 +188,12 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie
}
if (e.isSystem) {
//localize the header
var key = getLocalizedKey(e.alias);
localizationService.localize(key).then(function (v) {
e.header = v;
});
}
//localize the header
var key = getLocalizedKey(e.alias);
localizationService.localize(key).then(function (v) {
e.header = v;
});
}
});
$scope.selectLayout = function (selectedLayout) {

View File

@@ -1,31 +1,77 @@
function sortByPreValsController($rootScope, $scope, localizationService, editorState) {
// Helper to find a particular value from the list of sort by options
function findFromSortByFields(value) {
return _.find($scope.sortByFields, function (e) {
return e.value.toLowerCase() === value.toLowerCase();
});
}
// Get list of properties assigned as columns of the list view
var propsPreValue = _.findWhere(editorState.current.preValues, { key: "includeProperties" });
if(propsPreValue != undefined){
$scope.sortByFields = propsPreValue.value;
}
else {
$scope.sortByFields = [];
// Populate list of options for the default sort (all the columns plus then node name)
$scope.sortByFields = [];
$scope.sortByFields.push({ value: "name", name: "Name", isSystem: 1 });
if (propsPreValue != undefined) {
for (var i = 0; i < propsPreValue.value.length; i++) {
var value = propsPreValue.value[i];
$scope.sortByFields.push({
value: value.alias,
name: value.header,
isSystem: value.isSystem
});
}
}
var existingValue = _.find($scope.sortByFields, function (e) {
return e.alias.toLowerCase() === $scope.model.value;
// Localize the system fields, for some reason the directive doesn't work inside of the select group with an ng-model declared
var systemFields = [
{ value: "SortOrder", key: "general_sort" },
{ value: "Name", key: "general_name" },
{ value: "VersionDate", key: "content_updateDate" },
{ value: "Updater", key: "content_updatedBy" },
{ value: "CreateDate", key: "content_createDate" },
{ value: "Owner", key: "content_createBy" },
{ value: "ContentTypeAlias", key: "content_documentType" },
{ value: "Published", key: "content_isPublished" },
{ value: "Email", key: "general_email" },
{ value: "Username", key: "general_username" }
];
_.each(systemFields, function (e) {
localizationService.localize(e.key).then(function (v) {
var sortByListValue = findFromSortByFields(e.value);
if (sortByListValue) {
sortByListValue.name = v;
switch (e.value) {
case "Updater":
e.name += " (Content only)";
break;
case "Published":
e.name += " (Content only)";
break;
case "Email":
e.name += " (Members only)";
break;
case "Username":
e.name += " (Members only)";
break;
}
}
});
});
if (existingValue === undefined) {
//Existing value not found
//Set to first value
if($scope.sortByFields.length > 0){
$scope.model.value = $scope.sortByFields[0].alias;
}
// Check existing model value is available in list and ensure a value is set
var existingValue = findFromSortByFields($scope.model.value);
if (existingValue) {
// Set the existing value
// The old implementation pre Umbraco 7.5 used PascalCase aliases, this uses camelCase, so this ensures that any previous value is set
$scope.model.value = existingValue.value;
}
else {
//Set the existing value
//The old implementation pre Umbraco 7.5 used PascalCase aliases, this uses camelCase, so this ensures that any previous value is set
$scope.model.value = existingValue.alias;
// Existing value not found, set to first value
$scope.model.value = $scope.sortByFields[0].value;
}
}

View File

@@ -53,9 +53,17 @@ namespace Umbraco.Web.PropertyEditors
{
[PreValueField("displayAtTabNumber", "Display At Tab Number", "number", Description = "Which tab position that the list of child items will be displayed")]
public int DisplayAtTabNumber { get; set; }
[PreValueField("pageSize", "Page Size", "number", Description = "Number of items per page")]
public int PageSize { get; set; }
[PreValueField("layouts", "Layouts", "views/propertyeditors/listview/layouts.prevalues.html")]
public int Layouts { get; set; }
[PreValueField("includeProperties", "Columns Displayed", "views/propertyeditors/listview/includeproperties.prevalues.html",
Description = "The properties that will be displayed for each column")]
public object IncludeProperties { get; set; }
[PreValueField("orderBy", "Order By", "views/propertyeditors/listview/sortby.prevalues.html",
Description = "The default sort order for the list")]
public int OrderBy { get; set; }
@@ -63,15 +71,10 @@ namespace Umbraco.Web.PropertyEditors
[PreValueField("orderDirection", "Order Direction", "views/propertyeditors/listview/orderdirection.prevalues.html")]
public int OrderDirection { get; set; }
[PreValueField("layouts", "Layouts", "views/propertyeditors/listview/layouts.prevalues.html")]
public int Layouts { get; set; }
[PreValueField("includeProperties", "Columns Displayed", "views/propertyeditors/listview/includeproperties.prevalues.html",
Description = "The properties that will be displayed for each column")]
public object IncludeProperties { get; set; }
[PreValueField("bulkActionPermissions", "Bulk Action Permissions", "views/propertyeditors/listview/bulkactionpermissions.prevalues.html",
Description = "The bulk actions that are allowed from the list view")]
public BulkActionPermissionSettings BulkActionPermissions { get; set; }
internal class BulkActionPermissionSettings
{
public bool AllowBulkPublish { get; set; }