Repository navigation
Expand file tree
/
Copy pathplugin-mainmenu.js
More file actions
executable file
·110 lines (93 loc) · 4.33 KB
/
Copy pathplugin-mainmenu.js
File metadata and controls
executable file
·110 lines (93 loc) · 4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
define([
"jwebkit",
"jwebdesk",
], function(jwk, jwebdesk) {
function mainmenu_template() {
return [
{ "text": "Applications", "id": "app-menu", "menu": [
{ "text": "Accessories", "id": "access", "menu": [] },
{ "text": "Games", "id": "games", "menu": [] },
{ "text": "Graphics", "id": "graphics", "menu": [] },
{ "text": "Office", "id": "office", "menu": [] },
{ "text": "Development", "id": "dev", "menu": [] },
{ "text": "Sound & Video", "id": "media", "menu": [] },
{ "text": "Web", "id": "web", "menu": [] },
{ "text": "Other", "id": "other", "menu": [] },
{ "separation" : true },
{ "text": "Add / Remove...", "command": "add_remove"}
]
},
{ "text": "Social", "id": "social-menu", "menu": [ ] },
{ "text": "System", "id": "sys-menu", "menu": [
{ "text": "My JwebdesK WebIdent", "command": "jwebdesk-webident", "params":{ access_token: jwk.getCookie("access_token"), namespace: "jwebdesk" }},
{ "separation" : true },
{ "text": "Package Manager", "command": "jwebdesk-package-manager"},
{ "text": "Package Wizard (viejo)", "command": "jwebdesk-package-wizard"},
{ "text": "Package Wizard", "command": "jwebdesk~jwebdesk-package-wizard@init"},
/*{ "text": "Configuraciuon", "id": "prefs", "menu": [] },
{ "text": "Administration", "id": "admin", "menu": [] },*/
{ "separation" : true },
{ "text": "About jwk jwebdesk", "command": "about_jwebdesk"},
{ "text": "About jwk", "command": "about_jwk"}
]
}
]
}
function get_menu_by_id(data, id) {
function search(id, branch) {
var menu = null;
console.assert(Array.isArray(branch), branch);
for (var i in branch) {
if (branch[i].id == id) return branch[i];
if (branch[i].menu) {
menu = search.call(this, id, branch[i].menu);
if (menu) return menu;
}
}
}
menu = search(id, data);
console.assert(menu);
return menu;
}
var data = new jwk.Node();
function instalar_plugin(launchbar) {
launchbar.add_component("mainmenu", {
"data": data,
"ui_type": "menu.menubar",
"datapath": "mainmenu"
});
jwebdesk.access.mainmenu.on("change", function () {
launchbar.reset_menu();
})
launchbar.on("change:structure", function (n, e) {
launchbar.reset_menu();
});
launchbar.one("change:structure", function (n, e) {
var mainmenu = e.value.search("mainmenu");
mainmenu.on("command", function(n, e) {
jwebdesk.open_app(e.command, e.params);
});
});
launchbar.register_function("reset_menu", function() {
var new_main_menu = mainmenu_template();
var menuentries = jwebdesk.access.mainmenu;
var list = menuentries.keys();
var structure = this.get("structure");
// if (structure) {
// var mainmenu = structure.search("mainmenu");
for (var i in list) {
var entry = menuentries.get(list[i]).valueOf();
var id = entry["menu-id"];
delete entry["menu-id"];
var parent = get_menu_by_id(new_main_menu, id);
console.assert(Array.isArray(parent.menu), id, entry, parent);
parent.menu.push(entry);
}
// }
data.set("mainmenu", new_main_menu, {no_parse: true});
});
}
jwebdesk.wait_app("jwebdesk~jwebdesk-launchbar@alpha-0.5").done(function (proxy) {
instalar_plugin(proxy.instance)
});
});