First commit

This commit is contained in:
FrenchHope 2017-07-14 07:11:06 +02:00 committed by GitHub
parent c96dfb75e0
commit cb94ae43eb
6 changed files with 179 additions and 0 deletions

12
README Normal file
View File

@ -0,0 +1,12 @@
Add to (Semantic)Scuttle WebExt
Add to (Semantic)Scuttle WebExt is a simple extension that allow to add bookmarks to a (Semantic)Scuttle instance.
(Semantic)Scuttle is a social bookmarking tool experimenting with tags and collaborative tag descriptions.
It needs 3 parameters to work properly:
- (Semantic)Scuttle instance URL
- popup window width
- popup window height
Source :

75
background.js Normal file
View File

@ -0,0 +1,75 @@
var instance
var windowWidth
var windowHeight
function shareURL(){
browser.tabs.query({active: true},function(tabs){
var gettingUrl = browser.storage.local.get("instance_url");
gettingUrl.then(onGotUrl, onError);
var gettingWidth = browser.storage.local.get("window_width");
gettingWidth.then(onGotWidth, onError);
var gettingHeight = browser.storage.local.get("window_height");
gettingHeight.then(onGotHeight, onError);
var tab = tabs[0];
var url = instance + "bookmarks.php?action=add&address=" + encodeURIComponent(tab.url) + "&title=" + tabs[0].title;
widthInt = Number(windowWidth);
heightInt = Number(windowHeight);
browser.windows.create({
url: url,
width: widthInt,
height: heightInt,
type: "popup"
},(win)=>{
browser.tabs.onUpdated.addListener((tabId,changeInfo) =>{
if(tabId === win.tabs[0].id){
if(changeInfo.url){
var new_url
new_url = changeInfo.url
if(new_url.includes("action=add") == false){
browser.windows.remove(win.id);
}
}
}
});
});
});
}
function onError(error) {
console.log(`Error: ${error}`);
}
function onGotUrl(item) {
if (item.instance_url) {
instance = item.instance_url;
}
}
function onGotWidth(item) {
if (item.window_width) {
windowWidth = item.window_width;
}
}
function onGotHeight(item) {
if (item.window_height) {
windowHeight = item.window_height;
}
}
browser.contextMenus.create({
id: "semantic-scuttle",
title: "Add to (Semantic)Scuttle",
onclick: function(){
shareURL();
},
contexts: ["all"]
});
browser.browserAction.onClicked.addListener(() => {
shareURL();
});

BIN
data/icon48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

27
manifest.json Normal file
View File

@ -0,0 +1,27 @@
{
"manifest_version" : 2,
"name": "Add to (Semantic)Scuttle",
"version" : "0.1",
"description" : "Allow to add bookmarks to (Semantic)Scuttle, a social bookmarking tool experimenting with tags and collaborative tag descriptions.",
"homepage_url" : "http://semanticscuttle.sourceforge.net/",
"icons" : {
"48" : "data/icon48.png"
},
"options_ui" : {
"page": "options.html"
},
"permissions" : [
"storage",
"notifications",
"contextMenus",
"activeTab",
"tabs"],
"browser_action" : {
"default_title" : "Add to (Semantic)Scuttle",
"default_icon" : "data/icon48.png"
},
"background" : {
"scripts" : ["background.js"]
}
}

21
options.html Normal file
View File

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form>
<label>(Semantic)Scuttle instance URL <input type="text" id="instance_url" ></label><br />
<label>Window Width <input type="text" id="window_width" ></label><br />
<label>Window Height <input type="text" id="window_height" ></label><br />
<button type="submit">Save</button>
</form>
<script src="options.js"></script>
</body>
</html>

44
options.js Normal file
View File

@ -0,0 +1,44 @@
function saveOptions(e) {
e.preventDefault();
browser.storage.local.set({
instance_url: document.querySelector("#instance_url").value
});
browser.storage.local.set({
window_width: document.querySelector("#window_width").value
});
browser.storage.local.set({
window_height: document.querySelector("#window_height").value
});
}
function restoreOptions() {
function setCurrentChoiceUrl(result) {
document.querySelector("#instance_url").value = result.instance_url || "http://semanticscuttle.sourceforge.net/";
}
function setCurrentChoiceWidth(result) {
document.querySelector("#window_width").value = result.window_width || "640";
}
function setCurrentChoiceHeight(result) {
document.querySelector("#window_height").value = result.window_height || "480";
}
function onError(error) {
console.log(`Error: ${error}`);
}
var gettingUrl = browser.storage.local.get("instance_url");
gettingUrl.then(setCurrentChoiceUrl, onError);
var gettingWidth = browser.storage.local.get("window_width");
gettingWidth.then(setCurrentChoiceWidth, onError);
var gettingHeight = browser.storage.local.get("window_height");
gettingHeight.then(setCurrentChoiceHeight, onError);
}
document.addEventListener("DOMContentLoaded", restoreOptions);
document.querySelector("form").addEventListener("submit", saveOptions);