");
}
if (o.package !== null) {
/* This icon is not always going to exist, so we should put in an
@@ -50,9 +47,6 @@ var fedmenu = function(options) { $(document).ready(function() {
* isn't there. */
imgurl = 'https://apps.fedoraproject.org/packages/images/icons/' + o.package + '.png';
$('#fedmenu-package-button .img', c).css('background-image', 'url("' + imgurl + '")');
- $('body', c).append('');
- $('#fedmenu-package-content', c).append("❌");
- $('#fedmenu-package-content', c).append("
View the " + o.package + " package elsewhere
");
}
// Define three functions used to generate the content of the menu panes
@@ -67,6 +61,12 @@ var fedmenu = function(options) { $(document).ready(function() {
"";
});
html = html + "";
+
+ if ($('#fedmenu-main-content').length == 0) {
+ $('body', c).append('');
+ $('#fedmenu-main-content', c).append("❌");
+ $('#fedmenu-main-content', c).append("
");
+ }
html = html + "";
$("#fedmenu-user-content", c).append(html);
}
@@ -108,10 +113,52 @@ var fedmenu = function(options) { $(document).ready(function() {
});
if (found) {
html = html + "";
+ if ($('#fedmenu-package-content').length == 0) {
+ $('body', c).append('');
+ $('#fedmenu-package-content', c).append("❌");
+ $('#fedmenu-package-content', c).append("
View the " + o.package + " package elsewhere
");
+ }
$("#fedmenu-package-content", c).append(html);
}
};
+ // A handy lookup for those functions we just defined.
+ var content_makers = {
+ 'main': make_main_content_html,
+ 'user': make_user_content_html,
+ 'package': make_package_content_html,
+ };
+
+ // Figure out the current site that we're on, if possible, and return the
+ // data we have on it from the json we loaded.
+ var get_current_site = function() {
+ var found = null;
+ var ours = window.location.toString();
+ ours = ours.slice(ours.indexOf('://') + 3)
+ $.each(master_data, function(i, node) {
+ $.each(node.children, function(j, leaf) {
+ var theirs = leaf.data.url;
+ theirs = theirs.slice(theirs.indexOf('://') + 3)
+ if (theirs.indexOf(ours) === 0) found = leaf;
+ })
+ });
+ return found;
+ }
+
+ // Try to construct a little footer for the menus.
+ var add_footer_links = function() {
+ var site = get_current_site();
+ var content = "";
+ if (site != null && site.data.bugs_url != undefined && site.data.source_url != undefined) {
+ content = content + "Problems with " + site.name +
+ "? Please file bugs or check out the source.";
+ }
+ content = content + " Powered by fedmenu.";
+ $(".fedmenu-content").append("
" + content + "
");
+ }
+
$.ajax({
url: o.url,
mimeType: o.mimeType,
@@ -122,11 +169,8 @@ var fedmenu = function(options) { $(document).ready(function() {
console.log(err);
},
success: function(script) {
- $.each(json.children, make_main_content_html);
- if (o.user !== null)
- $.each(json.children, make_user_content_html);
- if (o.package !== null)
- $.each(json.children, make_package_content_html);
+ // Save this for later...
+ master_data = json.children;
},
});
@@ -135,8 +179,17 @@ var fedmenu = function(options) { $(document).ready(function() {
"#fedmenu-" + t + "-button," +
"#fedmenu-" + t + "-content";
};
- var activate = function(t) { $(selector(t), c).addClass('fedmenu-active'); };
- var deactivate = function(t) { $(selector(t), c).removeClass('fedmenu-active'); };
+
+ var activate = function(t) {
+ $.each(master_data, content_makers[t]);
+ $(".fedmenu-exit", c).click(function() {deactivate(t);});
+ add_footer_links();
+ setTimeout(function() {$(selector(t), c).addClass('fedmenu-active');}, 50);
+ };
+ var deactivate = function(t) {
+ $(selector(t), c).removeClass('fedmenu-active');
+ $('.fedmenu-content', c).remove(); // destroy content.
+ };
var click_factory = function(t) { return function() {
if ($(this).hasClass('fedmenu-active')) {
@@ -156,7 +209,7 @@ var fedmenu = function(options) { $(document).ready(function() {
deactivate('package');
});
$(document).keydown(function(event) {
- if (event.key == 'Esc'){
+ if (event.key == 'Escape' || event.key == 'Esc'){
deactivate('main');
deactivate('user');
deactivate('package');