forked from 0x2620/pandora
add ui for lists/edits/collections groups
This commit is contained in:
parent
5201341085
commit
859a820c90
5 changed files with 106 additions and 25 deletions
|
@ -350,7 +350,6 @@ class Edit(models.Model):
|
|||
'description',
|
||||
'duration',
|
||||
'editable',
|
||||
'editable',
|
||||
'groups',
|
||||
'id',
|
||||
'items',
|
||||
|
|
|
@ -15,7 +15,7 @@ pandora.ui.folderList = function(id, section) {
|
|||
columns = [
|
||||
{
|
||||
clickable: function(data) {
|
||||
return data.user == pandora.user.username
|
||||
return data.editable
|
||||
|| (id == 'featured' && canEditFeatured);
|
||||
},
|
||||
format: function(value, data) {
|
||||
|
@ -31,7 +31,7 @@ pandora.ui.folderList = function(id, section) {
|
|||
id: 'user',
|
||||
operator: '+',
|
||||
tooltip: function(data) {
|
||||
return data.user == pandora.user.username
|
||||
return data.editable
|
||||
|| (id == 'featured' && canEditFeatured)
|
||||
? Ox._('Edit Icon')
|
||||
: '';
|
||||
|
@ -52,7 +52,7 @@ pandora.ui.folderList = function(id, section) {
|
|||
},
|
||||
{
|
||||
editable: function(data) {
|
||||
return data.user == pandora.user.username;
|
||||
return data.editable;
|
||||
},
|
||||
format: function(value) {
|
||||
return Ox.encodeHTMLEntities(value);
|
||||
|
@ -81,7 +81,7 @@ pandora.ui.folderList = function(id, section) {
|
|||
{
|
||||
clickable: function(data) {
|
||||
return section != 'texts' && (
|
||||
data.type == 'smart' || data.user == pandora.user.username
|
||||
data.type == 'smart' || data.editable
|
||||
);
|
||||
},
|
||||
format: function(value, data) {
|
||||
|
@ -98,16 +98,16 @@ pandora.ui.folderList = function(id, section) {
|
|||
width: '10px',
|
||||
height: '10px',
|
||||
padding: '3px',
|
||||
opacity: section == 'texts' || data.user == pandora.user.username ? 1 : 0.25
|
||||
opacity: section == 'texts' || data.editable ? 1 : 0.25
|
||||
});
|
||||
},
|
||||
id: 'type',
|
||||
operator: '+',
|
||||
tooltip: function(data) {
|
||||
return data.type == 'static'
|
||||
? (data.user == pandora.user.username ? Ox._('Edit {0}', [Ox._(folderItem)]) : '')
|
||||
? (data.editable ? Ox._('Edit {0}', [Ox._(folderItem)]) : '')
|
||||
: data.type == 'smart'
|
||||
? (data.user == pandora.user.username ? Ox._('Edit Query') : Ox._('Show Query'))
|
||||
? (data.editable ? Ox._('Edit Query') : Ox._('Show Query'))
|
||||
: data.type.toUpperCase();
|
||||
},
|
||||
visible: true,
|
||||
|
@ -264,7 +264,7 @@ pandora.ui.folderList = function(id, section) {
|
|||
columns: columns,
|
||||
droppable: id != 'volumes',
|
||||
items: items,
|
||||
keys: ['modified'].concat(section != 'texts'
|
||||
keys: ['modified', 'editable', 'groups'].concat(section != 'texts'
|
||||
? ['query', 'name', 'view'] : ['rightslevel']),
|
||||
max: 1,
|
||||
min: 0,
|
||||
|
|
|
@ -36,6 +36,10 @@ pandora.ui.groupsDialog = function(options) {
|
|||
groups,
|
||||
selectedGroups;
|
||||
|
||||
if (options.groups) {
|
||||
selectedGroups = options.groups;
|
||||
renderGroups();
|
||||
} else {
|
||||
pandora.api[isItem ? 'get' : 'getUser']({
|
||||
id: options.id,
|
||||
keys: ['groups']
|
||||
|
@ -43,6 +47,7 @@ pandora.ui.groupsDialog = function(options) {
|
|||
selectedGroups = result.data.groups;
|
||||
renderGroups();
|
||||
});
|
||||
}
|
||||
|
||||
function addGroup() {
|
||||
// disableElements();
|
||||
|
|
|
@ -266,6 +266,67 @@ pandora.ui.listGeneralPanel = function(listData) {
|
|||
)
|
||||
.css({position: 'absolute', left: '160px', top: '64px'})
|
||||
.appendTo(that),
|
||||
$groupsInput = Ox.Input({
|
||||
disabled: false,
|
||||
label: Ox._('Groups'),
|
||||
labelWidth: 80,
|
||||
value: listData.groups.join(', '),
|
||||
width: 320
|
||||
})
|
||||
.bindEvent({
|
||||
change: editGroups
|
||||
})
|
||||
.css({position: 'absolute', left: '160px', top: '88px'})
|
||||
.appendTo(that),
|
||||
/*
|
||||
$groupsLabel,
|
||||
$groupsInput = Ox.FormElementGroup({
|
||||
elements: [
|
||||
Ox.Label({
|
||||
overlap: 'right',
|
||||
textAlign: 'right',
|
||||
title: Ox._('Groups'),
|
||||
width: 80
|
||||
}),
|
||||
Ox.FormElementGroup({
|
||||
elements: [
|
||||
$groupsLabel = Ox.Label({
|
||||
title: listData.groups ? listData.groups.join(', ') : '',
|
||||
width: 224
|
||||
}),
|
||||
Ox.Button({
|
||||
overlap: 'left',
|
||||
title: 'edit',
|
||||
tooltip: Ox._('Edit Groups'),
|
||||
type: 'image'
|
||||
})
|
||||
.bindEvent({
|
||||
click: function() {
|
||||
console.log(listData)
|
||||
pandora.$ui.groupsDialog = pandora.ui.groupsDialog({
|
||||
id: listData.id,
|
||||
name: listData.id,
|
||||
groups: listData.groups,
|
||||
type: 'list'
|
||||
})
|
||||
.bindEvent({
|
||||
groups: function(data) {
|
||||
var groups = data.groups.join(', ');
|
||||
//fixme edit groups
|
||||
$groupsLabel.options({title: groups});
|
||||
}
|
||||
})
|
||||
.open();
|
||||
}
|
||||
})
|
||||
],
|
||||
float: 'right'
|
||||
})
|
||||
],
|
||||
float: 'left'
|
||||
}).css({position: 'absolute', left: '160px', top: '88px'})
|
||||
.appendTo(that),
|
||||
*/
|
||||
$subscribersInput = Ox.Input({
|
||||
disabled: true,
|
||||
label: Ox._('Subscribers'),
|
||||
|
@ -273,7 +334,7 @@ pandora.ui.listGeneralPanel = function(listData) {
|
|||
value: subscribers,
|
||||
width: 320
|
||||
})
|
||||
.css({position: 'absolute', left: '160px', top: '88px'})
|
||||
.css({position: 'absolute', left: '160px', top: '112px'})
|
||||
[getSubscribersAction()]()
|
||||
.appendTo(that),
|
||||
$descriptionInput = Ox.Input({
|
||||
|
@ -321,6 +382,19 @@ pandora.ui.listGeneralPanel = function(listData) {
|
|||
});
|
||||
}
|
||||
}
|
||||
function editGroups(data) {
|
||||
var groups = data.value.split(', ');
|
||||
console.log(groups);
|
||||
pandora.api['edit' + folderItem]({
|
||||
id: listData.id,
|
||||
groups: groups
|
||||
}, function(result) {
|
||||
listData.groups = result.data.groups;
|
||||
pandora.$ui.folderList[listData.folder].value(
|
||||
result.data.id, 'groups', listData.groups
|
||||
);
|
||||
});
|
||||
}
|
||||
function editStatus(data) {
|
||||
var status = data.value;
|
||||
$statusSelect.value(status == 'private' ? 'public' : 'private');
|
||||
|
@ -368,10 +442,10 @@ pandora.ui.listGeneralPanel = function(listData) {
|
|||
});
|
||||
}
|
||||
function getDescriptionHeight() {
|
||||
return listData.status == 'private' ? 184 : 160;
|
||||
return (listData.status == 'private' ? 184 : 160) - 24;
|
||||
}
|
||||
function getDescriptionTop() {
|
||||
return listData.status == 'private' ? 88 : 112;
|
||||
return (listData.status == 'private' ? 88 : 112) + 24;
|
||||
}
|
||||
function getSubscribersAction() {
|
||||
return listData.status == 'private' ? 'hide' : 'show';
|
||||
|
|
|
@ -714,7 +714,7 @@ pandora.enableDragAndDrop = function($list, canMove, section, getItems) {
|
|||
data = $list.value(id);
|
||||
if (drag.targets) {
|
||||
drag.targets[id] = Ox.extend({
|
||||
editable: data.user == pandora.user.username
|
||||
editable: data.editable
|
||||
&& data.type == 'static',
|
||||
selected: $item.is('.OxSelected')
|
||||
}, data);
|
||||
|
@ -828,8 +828,10 @@ pandora.enableDragAndDrop = function($list, canMove, section, getItems) {
|
|||
operator: '&'
|
||||
}
|
||||
}, function(result) {
|
||||
var folder = drag.target.status != 'featured'
|
||||
? 'personal' : 'featured';
|
||||
var folder = drag.target.status == 'featured' ? 'featured' : (
|
||||
drag.target.user == pandora.user.username
|
||||
? 'personal' : 'favorite'
|
||||
);
|
||||
pandora.$ui.folderList[folder].value(
|
||||
drag.target.id, 'items', result.data.items
|
||||
);
|
||||
|
@ -938,7 +940,7 @@ pandora.enableDragAndDrop = function($list, canMove, section, getItems) {
|
|||
);
|
||||
} else if (
|
||||
drag.action == 'move'
|
||||
&& drag.source.user != pandora.user.username
|
||||
&& !drag.source.editable
|
||||
) {
|
||||
image = 'symbolClose';
|
||||
text = Ox._(
|
||||
|
@ -951,7 +953,7 @@ pandora.enableDragAndDrop = function($list, canMove, section, getItems) {
|
|||
'You can\'t remove {0}<br>from smart {1}.',
|
||||
[itemName.plural, targetName.plural]
|
||||
);
|
||||
} else if (drag.target && drag.target.user != pandora.user.username) {
|
||||
} else if (drag.target && !drag.target.editable) {
|
||||
image = 'symbolClose';
|
||||
text = Ox._(
|
||||
'You can only {0} {1}<br>to your own {2}',
|
||||
|
@ -1726,9 +1728,10 @@ pandora.getListData = function(list) {
|
|||
if (folder) {
|
||||
data = pandora.$ui.folderList[folder].value(list);
|
||||
if (pandora.user.ui.section == 'item') {
|
||||
data.editable = data.user == pandora.user.username && data.type == 'static';
|
||||
data.editable = data.editable && data.type == 'static';
|
||||
} else {
|
||||
data.editable = data.user == pandora.user.username;
|
||||
data.editable = data.editable || data.user == pandora.user.username;
|
||||
|
||||
}
|
||||
data.folder = folder;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue