expose new URL controller as pandora._URL
This commit is contained in:
parent
49c013c4ef
commit
6029217e4a
10 changed files with 217 additions and 25 deletions
|
@ -6,7 +6,7 @@
|
||||||
"canSeeFiles": {"guest": -1, "member": -1, "staff": 3, "admin": 4}
|
"canSeeFiles": {"guest": -1, "member": -1, "staff": 3, "admin": 4}
|
||||||
},
|
},
|
||||||
"clipKeys": [
|
"clipKeys": [
|
||||||
{"id": "clip:value", "title": "Clip Text", "type": "string"},
|
{"id": "clip:text", "title": "Clip Text", "type": "string"},
|
||||||
{"id": "clip:position", "title": "Clip Position", "type": "float"},
|
{"id": "clip:position", "title": "Clip Position", "type": "float"},
|
||||||
{"id": "clip:duration", "title": "Clip Duration", "type": "float"},
|
{"id": "clip:duration", "title": "Clip Duration", "type": "float"},
|
||||||
{"id": "clip:hue", "title": "Clip Hue", "type": "hue"},
|
{"id": "clip:hue", "title": "Clip Hue", "type": "hue"},
|
||||||
|
@ -432,7 +432,6 @@
|
||||||
"value": "capability"
|
"value": "capability"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"fixme": "itemNames should be lowercase!",
|
|
||||||
"itemName": {
|
"itemName": {
|
||||||
"singular": "Movie",
|
"singular": "Movie",
|
||||||
"plural": "Movies"
|
"plural": "Movies"
|
||||||
|
@ -441,7 +440,7 @@
|
||||||
{"id": "info", "title": "Info"},
|
{"id": "info", "title": "Info"},
|
||||||
{"id": "statistics", "title": "Statistics"},
|
{"id": "statistics", "title": "Statistics"},
|
||||||
{"id": "clips", "title": "Clips"},
|
{"id": "clips", "title": "Clips"},
|
||||||
{"id": "player", "title": "Player"},
|
{"id": "video", "title": "Video"},
|
||||||
{"id": "timeline", "title": "Timeline"},
|
{"id": "timeline", "title": "Timeline"},
|
||||||
{"id": "map", "title": "Map"},
|
{"id": "map", "title": "Map"},
|
||||||
{"id": "calendar", "title": "Calendar"},
|
{"id": "calendar", "title": "Calendar"},
|
||||||
|
@ -481,7 +480,7 @@
|
||||||
{"id": "maps", "title": "with Maps"},
|
{"id": "maps", "title": "with Maps"},
|
||||||
{"id": "calendars", "title": "with Calendars"},
|
{"id": "calendars", "title": "with Calendars"},
|
||||||
{"id": "clip", "title": "as Clips"},
|
{"id": "clip", "title": "as Clips"},
|
||||||
{"id": "player", "title": "as Player"},
|
{"id": "video", "title": "as Video"},
|
||||||
{"id": "map", "title": "on Map"},
|
{"id": "map", "title": "on Map"},
|
||||||
{"id": "calendar", "title": "on Calendar"}
|
{"id": "calendar", "title": "on Calendar"}
|
||||||
],
|
],
|
||||||
|
@ -594,7 +593,7 @@
|
||||||
"videoScale": "fit",
|
"videoScale": "fit",
|
||||||
"videoMuted": false,
|
"videoMuted": false,
|
||||||
"videoSize": "small",
|
"videoSize": "small",
|
||||||
"videoView": "player",
|
"videoView": "video",
|
||||||
"videoVolume": 1
|
"videoVolume": 1
|
||||||
},
|
},
|
||||||
"username": "",
|
"username": "",
|
||||||
|
|
|
@ -53,6 +53,11 @@ Ox.load({
|
||||||
});
|
});
|
||||||
|
|
||||||
Ox.extend(pandora.site, {
|
Ox.extend(pandora.site, {
|
||||||
|
clipKeys: Ox.map(data.site.clipKeys, function(key) {
|
||||||
|
return Ox.extend(key, {
|
||||||
|
operator: pandora._getSortOperator(key.type)
|
||||||
|
});
|
||||||
|
}),
|
||||||
findKeys: Ox.map(data.site.itemKeys, function(key) {
|
findKeys: Ox.map(data.site.itemKeys, function(key) {
|
||||||
return key.find ? key : null;
|
return key.find ? key : null;
|
||||||
}),
|
}),
|
||||||
|
@ -75,7 +80,9 @@ Ox.load({
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
sortKeys: Ox.map(data.site.itemKeys, function(key) {
|
sortKeys: Ox.map(data.site.itemKeys, function(key) {
|
||||||
return key.columnWidth ? key : null;
|
return key.columnWidth ? Ox.extend(key, {
|
||||||
|
operator: pandora._getSortOperator(key.type)
|
||||||
|
}) : null;
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
Ox.extend(pandora.user, {
|
Ox.extend(pandora.user, {
|
||||||
|
@ -97,6 +104,79 @@ Ox.load({
|
||||||
pandora.URL.update();
|
pandora.URL.update();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// set up url controller
|
||||||
|
|
||||||
|
var itemsName = pandora.site.itemName.plural.toLowerCase(),
|
||||||
|
sortKeys = {}, spanType = {}, views = {};
|
||||||
|
views[itemsName] = {
|
||||||
|
list: Ox.merge(
|
||||||
|
// 'grid' is the default view
|
||||||
|
['grid'],
|
||||||
|
Ox.map(pandora.site.listViews, function(view) {
|
||||||
|
return view.id == 'grid' ? null : view.id;
|
||||||
|
})
|
||||||
|
),
|
||||||
|
item: Ox.merge(
|
||||||
|
// 'info' is the default view, pandora.user.ui.videoView
|
||||||
|
// is the default view if there is a duration
|
||||||
|
['info', pandora.user.ui.videoView],
|
||||||
|
pandora.site.itemViews.map(function(view) {
|
||||||
|
return [
|
||||||
|
'info', pandora.user.ui.videoView
|
||||||
|
].indexOf(view.id) > -1 ? null : view.id;
|
||||||
|
})
|
||||||
|
)
|
||||||
|
};
|
||||||
|
sortKeys[itemsName] = {list: {}, item: {}};
|
||||||
|
views[itemsName].list.forEach(function(view) {
|
||||||
|
sortKeys[itemsName].list[view] = Ox.merge(
|
||||||
|
pandora.isClipView(view) ? Ox.clone(pandora.site.clipKeys) : [],
|
||||||
|
// 'director' is the default sort key
|
||||||
|
[Ox.getObjectById(pandora.site.sortKeys, 'director')],
|
||||||
|
Ox.map(pandora.site.sortKeys, function(key) {
|
||||||
|
return key.id == 'director' ? null : key;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
views[itemsName].item.forEach(function(view) {
|
||||||
|
if (pandora.isClipView(view, true)) {
|
||||||
|
sortKeys[itemsName].item[view] = Ox.merge(
|
||||||
|
// 'clip:position' is the default sort key
|
||||||
|
[Ox.getObjectById(pandora.site.clipKeys, 'clip:position')],
|
||||||
|
Ox.map(pandora.site.clipKeys, function(key) {
|
||||||
|
return key.id == 'clip:position' ? null : key;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
spanType[itemsName] = {
|
||||||
|
list: {
|
||||||
|
map: 'location',
|
||||||
|
calendar: 'date'
|
||||||
|
},
|
||||||
|
item: {
|
||||||
|
video: 'duration',
|
||||||
|
timeline: 'duration',
|
||||||
|
map: 'location',
|
||||||
|
calendar: 'date'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
pandora._URL = Ox.URL({
|
||||||
|
findKeys: pandora.site.findKeys,
|
||||||
|
getItem: pandora.getItemByIdOrTitle,
|
||||||
|
getSpan: pandora.getMetadataByIdOrName,
|
||||||
|
pages: [
|
||||||
|
'about', 'contact', 'faq', 'help', 'home', 'news',
|
||||||
|
'preferences', 'signin', 'signout', 'signup',
|
||||||
|
'software', 'terms', 'tour'
|
||||||
|
],
|
||||||
|
sortKeys: sortKeys,
|
||||||
|
spanType: spanType,
|
||||||
|
types: [pandora.site.itemName.plural.toLowerCase(), 'edits', 'texts'],
|
||||||
|
views: views
|
||||||
|
});
|
||||||
|
|
||||||
pandora.URL.parse(function() {
|
pandora.URL.parse(function() {
|
||||||
|
|
||||||
Ox.UI.hideLoadingScreen();
|
Ox.UI.hideLoadingScreen();
|
||||||
|
|
|
@ -17,6 +17,7 @@ pandora.Query = (function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function constructValue(value, operator) {
|
function constructValue(value, operator) {
|
||||||
|
value = encodeURIComponent(value);
|
||||||
operator = operator.replace('=', '^$');
|
operator = operator.replace('=', '^$');
|
||||||
if (operator.indexOf('$') > -1) {
|
if (operator.indexOf('$') > -1) {
|
||||||
value = operator.substr(0, operator.length - 1) + value + '$';
|
value = operator.substr(0, operator.length - 1) + value + '$';
|
||||||
|
@ -176,7 +177,7 @@ pandora.Query = (function() {
|
||||||
) ? {
|
) ? {
|
||||||
index: indices[0],
|
index: indices[0],
|
||||||
key: ret.query.conditions[indices[0]].key,
|
key: ret.query.conditions[indices[0]].key,
|
||||||
value: ret.query.conditions[indices[0]].value
|
value: decodeURIComponent(ret.query.conditions[indices[0]].value)
|
||||||
} : {index: -1, key: 'advanced', value: ''}
|
} : {index: -1, key: 'advanced', value: ''}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
// vim: et:ts=4:sw=4:sts=4:ft=javascript
|
// vim: et:ts=4:sw=4:sts=4:ft=javascript
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
FIXME:
|
||||||
|
we may want slashes in list names, and ampersands in queries
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
pandora.URL = (function() {
|
pandora.URL = (function() {
|
||||||
|
|
||||||
var previousURL = '',
|
var previousURL = '',
|
||||||
|
@ -125,7 +132,7 @@ pandora.URL = (function() {
|
||||||
section: 'items',
|
section: 'items',
|
||||||
item: item,
|
item: item,
|
||||||
itemView: view
|
itemView: view
|
||||||
}, ['player', 'timeline'].indexOf(view) > -1 ? {
|
}, ['video', 'timeline'].indexOf(view) > -1 ? {
|
||||||
videoView: view
|
videoView: view
|
||||||
} : {}));
|
} : {}));
|
||||||
if (time) {
|
if (time) {
|
||||||
|
@ -259,13 +266,12 @@ pandora.URL = (function() {
|
||||||
}
|
}
|
||||||
pandora.$ui.contentPanel.replaceElement(1, pandora.ui.item());
|
pandora.$ui.contentPanel.replaceElement(1, pandora.ui.item());
|
||||||
}
|
}
|
||||||
// fixme: should be 'video', not 'player'
|
|
||||||
if (
|
if (
|
||||||
previousUI.item &&
|
previousUI.item &&
|
||||||
['player', 'timeline'].indexOf(previousUI.itemView) > -1
|
['video', 'timeline'].indexOf(previousUI.itemView) > -1
|
||||||
) {
|
) {
|
||||||
var $item = pandora.$ui[
|
var $item = pandora.$ui[
|
||||||
previousUI.itemView == 'player' ? 'player' : 'editor'
|
previousUI.itemView == 'video' ? 'player' : 'editor'
|
||||||
];
|
];
|
||||||
$item && pandora.UI.set(
|
$item && pandora.UI.set(
|
||||||
'videoPoints|' + previousUI.item + '|position',
|
'videoPoints|' + previousUI.item + '|position',
|
||||||
|
|
|
@ -313,6 +313,43 @@ pandora.getInfoHeight = function() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pandora.getItemByIdOrTitle = function(str, callback) {
|
||||||
|
pandora.api.get({id: str, keys: ['id']}, function(result) {
|
||||||
|
if (result.status.code == 200) {
|
||||||
|
callback(result.data.id);
|
||||||
|
} else {
|
||||||
|
pandora.api.find({
|
||||||
|
query: {
|
||||||
|
conditions: [{key: 'title', value: str, operator: ''}], // fixme: operator will be "="
|
||||||
|
operator: '&'
|
||||||
|
},
|
||||||
|
sort: [{key: 'votes', operator: ''}], // fixme: not all systems have "votes"
|
||||||
|
range: [0, 100],
|
||||||
|
keys: ['id', 'title', 'votes']
|
||||||
|
}, function(result) {
|
||||||
|
var id = '';
|
||||||
|
if (result.data.items.length) {
|
||||||
|
Ox.print('AAAAAA', result.data.items)
|
||||||
|
var items = Ox.map(result.data.items, function(item) {
|
||||||
|
// test if exact match or word match
|
||||||
|
var sort = new RegExp('^' + str + '$', 'i').test(item.title) ? 2000000
|
||||||
|
: new RegExp('\\b' + str + '\\b', 'i').test(item.title) ? 1000000 : 0;
|
||||||
|
return sort ? {id: item.id, sort: sort + (parseInt(item.votes) || 0)} : null;
|
||||||
|
// fixme: remove the (...|| 0) check once the backend sends correct data
|
||||||
|
});
|
||||||
|
if (items.length) {
|
||||||
|
Ox.print('BBBBBB', items)
|
||||||
|
id = items.sort(function(a, b) {
|
||||||
|
return b.sort - a.sort;
|
||||||
|
})[0].id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
callback(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
pandora.getListData = function() {
|
pandora.getListData = function() {
|
||||||
var data = {}, folder;
|
var data = {}, folder;
|
||||||
if (pandora.user.ui.list) {
|
if (pandora.user.ui.list) {
|
||||||
|
@ -360,6 +397,66 @@ pandora.getListMenu = function(lists) {
|
||||||
] };
|
] };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pandora.getMetadataByIdOrName = function(item, view, str, callback) {
|
||||||
|
// For a given item (or none) and a given view (or any), this takes a string
|
||||||
|
// and checks if it's an annotation/event/place id or an event/place name,
|
||||||
|
// and returns the id (or none) and the view (or none)
|
||||||
|
// fixme: "subtitles:23" is still missing
|
||||||
|
Ox.print('getMetadataByIdOrName', item, view, str);
|
||||||
|
var isName = str[0] == '@',
|
||||||
|
canBeAnnotation = (
|
||||||
|
!view || view == 'video' || view == 'timeline'
|
||||||
|
) && item && !isName,
|
||||||
|
canBeEvent = !view || view == 'calendar',
|
||||||
|
canBePlace = !view || view == 'map';
|
||||||
|
str = isName ? str.substr(1) : str;
|
||||||
|
getId(canBeAnnotation ? 'annotation' : '', function(id) {
|
||||||
|
if (id) {
|
||||||
|
Ox.print('id?', id)
|
||||||
|
callback(id, pandora.user.ui.videoView);
|
||||||
|
} else {
|
||||||
|
getId(canBePlace ? 'place' : '', function(id) {
|
||||||
|
if (id) {
|
||||||
|
callback(id, 'map');
|
||||||
|
} else {
|
||||||
|
getId(canBeEvent ? 'event' : '', function(id) {
|
||||||
|
if (id) {
|
||||||
|
callback(id, 'calendar');
|
||||||
|
} else if (canBePlace && isName) {
|
||||||
|
// set map query ...
|
||||||
|
pandora.user.ui.mapFind = str;
|
||||||
|
callback('@' + str, 'map');
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
function getId(type, callback) {
|
||||||
|
if (type) {
|
||||||
|
pandora.api['find' + Ox.toTitleCase(type + 's')](Ox.extend({
|
||||||
|
query: {
|
||||||
|
key: isName ? 'name' : 'id',
|
||||||
|
value: type == 'annotation' ? item + '/' + str : str,
|
||||||
|
operator: '='
|
||||||
|
},
|
||||||
|
keys: ['id'],
|
||||||
|
range: [0, 1]
|
||||||
|
}, item ? {
|
||||||
|
itemQuery: {key: 'id', value: item, operator: '='}
|
||||||
|
} : {}), function(result) {
|
||||||
|
// fixme: this has to be fixed on the backend!
|
||||||
|
if (result.data.events) { result.data.items = result.data.events; };
|
||||||
|
callback(result.data.items.length ? result.data.items[0].id : '');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
pandora.getSortMenu = function() {
|
pandora.getSortMenu = function() {
|
||||||
var list = pandora.user.ui.lists[pandora.user.ui.list],
|
var list = pandora.user.ui.lists[pandora.user.ui.list],
|
||||||
isClipView = pandora.isClipView(list.listView);
|
isClipView = pandora.isClipView(list.listView);
|
||||||
|
@ -410,7 +507,13 @@ pandora.getSortMenu = function() {
|
||||||
] };
|
] };
|
||||||
};
|
};
|
||||||
|
|
||||||
pandora.getSortOperator = function(key) { // fixme: make static
|
pandora._getSortOperator = function(type) {
|
||||||
|
return ['hue', 'string', 'text'].indexOf(
|
||||||
|
Ox.isArray(type) ? type[0] : type
|
||||||
|
) > -1 ? '+' : '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
pandora.getSortOperator = function(key) { // fixme: remove
|
||||||
var type = Ox.getObjectById(
|
var type = Ox.getObjectById(
|
||||||
/^clip:/.test(key) ? pandora.site.clipKeys : pandora.site.itemKeys,
|
/^clip:/.test(key) ? pandora.site.clipKeys : pandora.site.itemKeys,
|
||||||
key
|
key
|
||||||
|
@ -444,9 +547,11 @@ pandora.getVideoPartsAndPoints = function(durations, points) {
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
pandora.isClipView = function(view) {
|
pandora.isClipView = function(view, item) {
|
||||||
view = view || pandora.user.ui.lists[pandora.user.ui.list].listView;
|
view = view || pandora.user.ui.lists[pandora.user.ui.list].listView;
|
||||||
return ['calendar', 'clip', 'map'].indexOf(view) > -1;
|
return (
|
||||||
|
!item ? ['calendar', 'clip', 'map'] : ['calendar', 'clips', 'map']
|
||||||
|
).indexOf(view) > -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
pandora.signin = function(data) {
|
pandora.signin = function(data) {
|
||||||
|
|
|
@ -8,9 +8,9 @@ pandora.ui.filter = function(list) {
|
||||||
format: key.format,
|
format: key.format,
|
||||||
id: key.id,
|
id: key.id,
|
||||||
title: key.title,
|
title: key.title,
|
||||||
type: key.type == 'layer' ? Ox.getObjectById(
|
type: key.type == 'layer'
|
||||||
pandora.site.layers, key.id
|
? Ox.getObjectById(pandora.site.layers, key.id).type
|
||||||
).type : key.type
|
: key.type
|
||||||
};
|
};
|
||||||
}), {
|
}), {
|
||||||
id: 'list',
|
id: 'list',
|
||||||
|
@ -34,9 +34,6 @@ pandora.ui.filter = function(list) {
|
||||||
query: data.query
|
query: data.query
|
||||||
}, function(result) {
|
}, function(result) {
|
||||||
Ox.Request.clearCache(list.id);
|
Ox.Request.clearCache(list.id);
|
||||||
pandora.$ui.groups.forEach(function($group) {
|
|
||||||
$group.reloadList();
|
|
||||||
});
|
|
||||||
pandora.$ui.list
|
pandora.$ui.list
|
||||||
.bindEventOnce({
|
.bindEventOnce({
|
||||||
init: function(data) {
|
init: function(data) {
|
||||||
|
@ -46,6 +43,10 @@ pandora.ui.filter = function(list) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.reloadList();
|
.reloadList();
|
||||||
|
pandora.$ui.groups.forEach(function($group) {
|
||||||
|
$group.reloadList();
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
pandora.user.ui.query = data.query;
|
pandora.user.ui.query = data.query;
|
||||||
|
|
|
@ -388,6 +388,7 @@ pandora.ui.folderList = function(id) {
|
||||||
data_ = {id: data.id};
|
data_ = {id: data.id};
|
||||||
data_[data.key] = data.value;
|
data_[data.key] = data.value;
|
||||||
pandora.api.editList(data_, function(result) {
|
pandora.api.editList(data_, function(result) {
|
||||||
|
// fixme: we may want slashes in list names
|
||||||
if (result.data.id != data.id) {
|
if (result.data.id != data.id) {
|
||||||
pandora.$ui.folderList[id].value(data.id, 'name', result.data.name);
|
pandora.$ui.folderList[id].value(data.id, 'name', result.data.name);
|
||||||
pandora.$ui.folderList[id].value(data.id, 'id', result.data.id);
|
pandora.$ui.folderList[id].value(data.id, 'id', result.data.id);
|
||||||
|
|
|
@ -26,7 +26,7 @@ pandora.ui.item = function() {
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (!result.data.rendered && [
|
if (!result.data.rendered && [
|
||||||
'clips', 'map', 'player', 'timeline'
|
'clips', 'map', 'video', 'timeline'
|
||||||
].indexOf(pandora.user.ui.itemView)>-1) {
|
].indexOf(pandora.user.ui.itemView)>-1) {
|
||||||
pandora.$ui.contentPanel.replaceElement(1,
|
pandora.$ui.contentPanel.replaceElement(1,
|
||||||
Ox.Element()
|
Ox.Element()
|
||||||
|
@ -250,7 +250,7 @@ pandora.ui.item = function() {
|
||||||
|
|
||||||
pandora.$ui.contentPanel.replaceElement(1, stats);
|
pandora.$ui.contentPanel.replaceElement(1, stats);
|
||||||
|
|
||||||
} else if (pandora.user.ui.itemView == 'player') {
|
} else if (pandora.user.ui.itemView == 'video') {
|
||||||
// fixme: duplicated
|
// fixme: duplicated
|
||||||
var layers = [],
|
var layers = [],
|
||||||
video = {};
|
video = {};
|
||||||
|
|
|
@ -647,8 +647,7 @@ pandora.ui.list = function() { // fixme: remove view argument
|
||||||
},
|
},
|
||||||
select: function(data) {
|
select: function(data) {
|
||||||
var $still, $timeline;
|
var $still, $timeline;
|
||||||
pandora.UI.set(['lists', pandora.user.ui.list, 'selected'].join('|'), data.ids);
|
pandora.UI.set('lists|' + pandora.user.ui.list + '|selected', data.ids);
|
||||||
//pandora.user.ui.lists[pandora.user.ui.list].selected = data.ids;
|
|
||||||
if (data.ids.length) {
|
if (data.ids.length) {
|
||||||
pandora.$ui.mainMenu.enableItem('copy');
|
pandora.$ui.mainMenu.enableItem('copy');
|
||||||
pandora.$ui.mainMenu.enableItem('openmovie');
|
pandora.$ui.mainMenu.enableItem('openmovie');
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// vim: et:ts=4:sw=4:sts=4:ft=javascript
|
// vim: et:ts=4:sw=4:sts=4:ft=javascript
|
||||||
pandora.ui.status = function(key, data) {
|
pandora.ui.status = function(key, data) {
|
||||||
var that = Ox.toTitleCase(key) + ': ' + [
|
var that = Ox.toTitleCase(key) + ': ' + [
|
||||||
Ox.formatNumber(data.items) + ' '+ (data.items != 1 ? pandora.site.itemName.plural : pandora.site.itemName.sinular),
|
Ox.formatNumber(data.items) + ' '+ (data.items != 1 ? pandora.site.itemName.plural : pandora.site.itemName.singular),
|
||||||
Ox.formatDuration(data.runtime, 'medium'),
|
Ox.formatDuration(data.runtime, 'medium'),
|
||||||
data.files + ' file' + (data.files != 1 ? 's' : ''),
|
data.files + ' file' + (data.files != 1 ? 's' : ''),
|
||||||
Ox.formatDuration(data.duration, 'short'),
|
Ox.formatDuration(data.duration, 'short'),
|
||||||
|
|
Loading…
Reference in a new issue