2015-05-10 13:37:42 +09:00
|
|
|
/**
|
|
|
|
* Menus namespace
|
2015-05-18 11:39:12 +09:00
|
|
|
* @namespace Telescope.menuItems
|
2015-05-10 13:37:42 +09:00
|
|
|
*/
|
2015-05-18 11:39:12 +09:00
|
|
|
Telescope.menuItems = {};
|
2015-04-24 10:49:24 +09:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Add one or more items to a menu
|
|
|
|
* @param {string} menu - The name of the menu
|
2015-05-10 13:37:42 +09:00
|
|
|
* @param {Object|Object[]} item - The menu item object (or an array of items)
|
|
|
|
*
|
|
|
|
* @example <caption>Using a named route</caption>
|
2015-05-18 11:11:14 +09:00
|
|
|
* Telescope.menuItems.add("viewsMenu", {
|
2015-05-10 13:37:42 +09:00
|
|
|
* route: 'postsDaily',
|
|
|
|
* label: 'daily',
|
|
|
|
* description: 'day_by_day_view'
|
|
|
|
* });
|
|
|
|
*
|
|
|
|
* @example <caption>Using a route function</caption>
|
2015-05-18 11:11:14 +09:00
|
|
|
* Telescope.menuItems.add("userMenu", {
|
2015-05-10 13:37:42 +09:00
|
|
|
* route: function () {
|
|
|
|
* return Router.path('user_profile', {_idOrSlug: Meteor.user().telescope.slug});
|
|
|
|
* },
|
|
|
|
* label: 'profile',
|
|
|
|
* description: 'view_your_profile'
|
|
|
|
* });
|
|
|
|
*
|
2015-04-24 10:49:24 +09:00
|
|
|
*/
|
2015-05-18 11:11:14 +09:00
|
|
|
Telescope.menuItems.add = function (menu, item) {
|
2015-05-01 18:22:00 +02:00
|
|
|
|
2015-04-24 10:49:24 +09:00
|
|
|
// if menu items array doesn't exist yet, initialize it
|
2015-05-18 11:39:12 +09:00
|
|
|
if (typeof Telescope.menuItems[menu] === "undefined") {
|
|
|
|
Telescope.menuItems[menu] = [];
|
2015-04-24 10:49:24 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
if (Array.isArray(item)) {
|
|
|
|
|
|
|
|
var items = item; // we're dealing with an Array, so let's add an "s"
|
|
|
|
items.forEach( function (item) {
|
2015-05-18 11:39:12 +09:00
|
|
|
Telescope.menuItems[menu].push(item);
|
2015-04-24 10:49:24 +09:00
|
|
|
});
|
2015-05-01 18:22:00 +02:00
|
|
|
|
2015-04-24 10:49:24 +09:00
|
|
|
} else {
|
2015-05-01 18:22:00 +02:00
|
|
|
|
2015-05-18 11:39:12 +09:00
|
|
|
Telescope.menuItems[menu].push(item);
|
2015-05-01 18:22:00 +02:00
|
|
|
|
2015-04-24 10:49:24 +09:00
|
|
|
}
|
2015-05-01 18:22:00 +02:00
|
|
|
};
|
2015-04-24 10:49:24 +09:00
|
|
|
|
2015-04-27 10:16:41 +09:00
|
|
|
/**
|
|
|
|
* Remove an item from a menu
|
|
|
|
* @param {string} menu - The name of the menu
|
|
|
|
* @param {string} label - The label of the item to remove
|
|
|
|
*/
|
2015-05-18 11:11:14 +09:00
|
|
|
Telescope.menuItems.remove = function (menu, label) {
|
2015-05-18 11:39:12 +09:00
|
|
|
Telescope.menuItems[menu] = _.reject(Telescope.menuItems[menu], function (menu) {
|
2015-04-27 10:16:41 +09:00
|
|
|
return menu.label === label;
|
|
|
|
});
|
2015-05-01 18:22:00 +02:00
|
|
|
};
|
2015-04-27 10:16:41 +09:00
|
|
|
|
2015-04-24 10:49:24 +09:00
|
|
|
/**
|
|
|
|
* Retrieve an array containing all items for a menu
|
|
|
|
* @param {string} menu - The name of the menu
|
|
|
|
*/
|
2015-05-18 11:11:14 +09:00
|
|
|
Telescope.menuItems.get = function (menu) {
|
2015-05-18 11:39:12 +09:00
|
|
|
return _.sortBy(Telescope.menuItems[menu], "order");
|
2015-05-01 18:22:00 +02:00
|
|
|
};
|