-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathcontext-menu.js
51 lines (43 loc) · 1.34 KB
/
context-menu.js
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
var CONTEXT_HASH = {
"google-cache": "http://webcache.googleusercontent.com/search?q=cache:",
"wayback-machine": "http://web.archive.org/web/*/",
"coral-cdn": ".nyud.net"
};
function formUrl(context, url) {
var contextUrl = CONTEXT_HASH[context];
var isHTTPS = url.substring(0, 6) === "https:";
// Google and Wayback Machine
if(context !== "coral-cdn") {
return contextUrl + (isHTTPS ? url.substr(8) : url.substr(7));
} else { // Coral CDN
if(url.slice(-1) === "/") {
return url.substring(0, url.length - 1) + contextUrl;
} else {
return url + contextUrl;
}
}
}
function redirectToCachedUrl(info, tab) {
chrome.tabs.update(tab.id, { url: formUrl(info.menuItemId, info.pageUrl) });
}
// Create context menu caches
function createContextMenu(cache) {
var saveObj = {};
var create_properties = {
id: cache,
title: "Open page with " + cache.split("-").join(" "),
contexts: ["page"]
};
saveObj[cache] = true;
chrome.contextMenus.create(create_properties);
chrome.storage.sync.set(saveObj);
}
// Load Context Menus on Startup
chrome.storage.sync.get(Object.keys(CONTEXT_HASH), function(results) {
Object.keys(results).forEach(function(cache) {
if(!!results[cache]) {
createContextMenu(cache);
}
});
});
chrome.contextMenus.onClicked.addListener(redirectToCachedUrl);