2015-04-19 16:46:59 +02:00

95 lines
2.6 KiB
JavaScript

(function($) {
$(document).bind('cobalt-load', function(evt, cobalt) {
var plugin = {
'version': 0,
'catalogs': {},
'handlers': []
};
plugin['catalogs']['menu'] = {
'update': function(last_update, callback) {
$.getJSON(Drupal.settings.basePath + 'cobalt/data/menu_json', {}, function (data) {
cobalt.emptyCatalog('menu');
for (var id in data) {
cobalt.addEntry({id:id, name:data[id][1], extra:data[id][0], information: data[id][0], catalog:'menu', classname:'url_data'});
}
callback(false);
});
},
'install': function() {
},
'uninstall': function() {
},
'item_formatter': function(item) {
return item.name + ' <small>' + item.information + '</small>';
},
'update_rate': 60000
};
var uri_from_item = function(item, omitDestination) {
var path = item.information;
var destination = Drupal.settings.cobalt.path;
if (typeof(path) == 'object') {
destination = path.destination;
path = path.path;
}
if (path=='<front>') {
path = '';
}
if (destination && !omitDestination) {
path = path + '?destination=' + destination;
}
return Drupal.settings.basePath + path;
};
plugin['handlers'].push({
'id': 'menu_goto',
'name': Drupal.t('Go to and return'),
'data_class': 'url_data',
'handler': function(text, item) {
window.location.href = uri_from_item(item);
}
});
plugin['handlers'].push({
'id': 'menu_goto_stay',
'name': Drupal.t('Go to'),
'data_class': 'url_data',
'handler': function(text, item) {
window.location.href = uri_from_item(item, true);
}
});
plugin['handlers'].push({
'id': 'menu_open_in_new_window',
'name': Drupal.t('Open in new window'),
'data_class': 'url_data',
'handler': function(text, item) {
var form = document.createElement("form");
$(form).attr({
'method': 'GET',
'action': uri_from_item(item),
'target': '_blank'
}).appendTo('body');
try {
form.submit();
}
catch(e) {
var message = $('<div></div>');
message.append('<h1>' + Drupal.t('Could not open window') + '</h1>');
message.append('<p>' + Drupal.t('You might be using a popup blocker, which stopped Cobalt from opening a new window.') + '</p>');
cobalt.showHtml(message);
}
$(form).remove();
}
});
cobalt.registerPlugin('cobalt_menu', plugin);
});
})(jQuery);