make sure users without 'canSeeFiles' don't get files info in status bar; honor capability property of sort keys (fixes #251)

This commit is contained in:
rolux 2012-03-21 09:22:31 +00:00
parent 11b0a06107
commit e2c0669860
4 changed files with 38 additions and 60 deletions

View file

@ -520,21 +520,25 @@ pandora.ui.mainMenu = function() {
function getSortMenu() { function getSortMenu() {
var ui = pandora.user.ui, var ui = pandora.user.ui,
isClipView = pandora.isClipView(ui.listView); isClipView = pandora.isClipView(ui.listView),
items = isClipView ? pandora.site.clipKeys.map(function(key) {
return Ox.extend(Ox.clone(key), {
checked: ui.listSort[0].key == key.id,
title: 'Clip ' + key.title
});
}) : [];
return { id: 'sortMenu', title: 'Sort', items: [ return { id: 'sortMenu', title: 'Sort', items: [
{ id: 'sortitems', title: 'Sort ' + (isClipView || ui.item ? 'Clips' : pandora.site.itemName.plural) + ' by', items: [ { id: 'sortitems', title: 'Sort ' + (isClipView || ui.item ? 'Clips' : pandora.site.itemName.plural) + ' by', items: [
{ group: 'listsort', min: 1, max: 1, items: Ox.merge( { group: 'listsort', min: 1, max: 1, items: Ox.merge(
isClipView ? pandora.site.clipKeys.map(function(key) { items,
return Ox.extend(Ox.clone(key), { Ox.map(pandora.site.sortKeys, function(key) {
checked: ui.listSort[0].key == key.id, return Ox.getIndexById(items, key.id) == -1 && (
title: 'Clip ' + key.title !key.capability
}); || pandora.site.capabilities[key.capability][pandora.user.level]
}) : [], ) ? Ox.extend({
!ui.item ? pandora.site.sortKeys.map(function(key) {
return Ox.extend({
checked: ui.listSort[0].key == key.id checked: ui.listSort[0].key == key.id
}, key); }, key) : null;
}) : [] })
) } ) }
] }, ] },
{ id: 'orderitems', title: 'Order ' + (isClipView ? 'Clips' : pandora.site.itemName.plural), items: [ { id: 'orderitems', title: 'Order ' + (isClipView ? 'Clips' : pandora.site.itemName.plural), items: [

View file

@ -4,26 +4,26 @@
pandora.ui.sortSelect = function(isNavigationView) { pandora.ui.sortSelect = function(isNavigationView) {
var isClipView = pandora.isClipView(), var isClipView = pandora.isClipView(),
items = [], items = isClipView ? pandora.site.clipKeys.map(function(key) {
sortKey = !pandora.user.ui.item ? 'listSort' : 'itemSort',
that;
if (isClipView) {
items = pandora.site.clipKeys.map(function(key) {
return Ox.extend(Ox.clone(key), { return Ox.extend(Ox.clone(key), {
title: 'Sort by ' + (!pandora.user.ui.item ? 'Clip ' : '') + key.title title: 'Sort by ' + (!pandora.user.ui.item ? 'Clip ' : '') + key.title
}); });
}); }) : [],
// fixme: a separator would be good // fixme: a separator would be good
// !pandora.user.ui.item && items.push({}); sortKey = !pandora.user.ui.item ? 'listSort' : 'itemSort',
} that;
if (!pandora.user.ui.item) { if (!pandora.user.ui.item) {
items = Ox.merge(items, Ox.map(pandora.site.sortKeys, function(key) { items = Ox.merge(
return Ox.getIndexById(items, key.id) == -1 items,
? Ox.extend(Ox.clone(key), { Ox.map(pandora.site.sortKeys, function(key) {
return Ox.getIndexById(items, key.id) == -1 && (
!key.capability
|| pandora.site.capabilities[key.capability][pandora.user.level]
) ? Ox.extend(Ox.clone(key), {
title: 'Sort by ' + key.title title: 'Sort by ' + key.title
}) }) : null;
: null; })
})); );
} }
that = Ox.Select({ that = Ox.Select({
id: 'sortSelect', id: 'sortSelect',

View file

@ -1,25 +0,0 @@
// vim: et:ts=4:sw=4:sts=4:ft=javascript
'use strict';
pandora.ui.status = function(key, data) {
var itemName = data.items != 1 ? pandora.site.itemName.plural : pandora.site.itemName.singular,
segments = [],
that = Ox.toTitleCase(key) + ': ';
if (!pandora.user.ui.item && pandora.user.ui.listView == 'clip') {
itemName = data.items != 1 ? 'Clips' : 'Clip';
}
segments.push(Ox.formatNumber(data.items) + ' '+ itemName);
if (data.runtime)
segments.push(Ox.formatDuration(data.runtime, 'short'));
if (data.files)
segments.push(data.files + ' file' + (data.files != 1 ? 's' : ''));
if (!data.runtime && data.duration)
segments.push(Ox.formatDuration(data.duration, 'short'));
else if (data.duration)
segments.push(Ox.formatDuration(data.duration));
if (data.size)
segments.push(Ox.formatValue(data.size, 'B'));
if (data.pixels)
segments.push(Ox.formatValue(data.pixels, 'px'));
return that + segments.join(', ');
};

View file

@ -36,18 +36,17 @@ pandora.ui.statusbar = function() {
: (pandora.site.itemName[data.items == 1 ? 'singular' : 'plural']), : (pandora.site.itemName[data.items == 1 ? 'singular' : 'plural']),
parts = []; parts = [];
parts.push(Ox.formatNumber(data.items) + ' '+ itemName); parts.push(Ox.formatNumber(data.items) + ' '+ itemName);
if (data.runtime) if (data.runtime) {
parts.push(Ox.formatDuration(data.runtime, 'short')); parts.push(Ox.formatDuration(data.runtime, 'short'));
if (data.files) } else if (data.duration) {
parts.push(data.files + ' file' + (data.files == 1 ? '' : 's'));
if (!data.runtime && data.duration)
parts.push(Ox.formatDuration(data.duration, 'short')); parts.push(Ox.formatDuration(data.duration, 'short'));
else if (data.duration) }
parts.push(Ox.formatDuration(data.duration)); if (pandora.site.capabilities.canSeeFiles[pandora.user.level]) {
if (data.size) data.files && parts.push(data.files + ' file' + (data.files == 1 ? '' : 's'));
parts.push(Ox.formatValue(data.size, 'B')); data.duration && parts.push(Ox.formatDuration(data.duration));
if (data.pixels) data.size && parts.push(Ox.formatValue(data.size, 'B'));
parts.push(Ox.formatValue(data.pixels, 'px')); data.pixels && parts.push(Ox.formatValue(data.pixels, 'px'));
}
return parts.join(', '); return parts.join(', ');
} }