Modified to work with recent Firefox releases.
Added "bookmark all open pages" feature : you need to use my SemanticScuttle fork for this.
1
LICENSE
@ -1,6 +1,7 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Marcus
|
||||
Copyright (c) 2015 Yohan
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -1,2 +1,6 @@
|
||||
scuttle-firefox
|
||||
===============
|
||||
Firefox plugin for SemanticScuttle.
|
||||
===================================
|
||||
Modified to work with recent Firefox releases.
|
||||
Added "bookmark all open pages" feature : you need to use my SemanticScuttle fork for this.
|
||||
https://github.com/yohan-b/SemanticScuttle
|
||||
You can also pick what to bookmark.
|
||||
|
3
chrome.manifest
Executable file → Normal file
@ -1,6 +1,7 @@
|
||||
content scuttle chrome/scuttle/content/
|
||||
locale scuttle en-GB chrome/scuttle/locale/en-GB/
|
||||
locale scuttle de-DE chrome/scuttle/locale/de-DE/
|
||||
skin scuttle classic/1.0 chrome/scuttle/skin/classic/
|
||||
|
||||
overlay chrome://browser/content/browser.xul chrome://scuttle/content/scuttle.xul
|
||||
style chrome://global/content/customizeToolbar.xul chrome://scuttle/skin/scuttle.css
|
||||
style chrome://global/content/customizeToolbar.xul chrome://scuttle/skin/scuttle.css
|
||||
|
0
chrome/scuttle/content/contents.rdf
Executable file → Normal file
0
chrome/scuttle/content/options.js
Executable file → Normal file
0
chrome/scuttle/content/options.xul
Executable file → Normal file
78
chrome/scuttle/content/scuttle.js
Executable file → Normal file
@ -1,4 +1,4 @@
|
||||
var scuttle_version = "0.3.1";
|
||||
var scuttle_version = "0.3.4";
|
||||
var scuttle_page_my = "login.php";
|
||||
var scuttle_page_add = "bookmarks.php";
|
||||
|
||||
@ -26,28 +26,80 @@ function scuttle_my(e, mouse) {
|
||||
}
|
||||
}
|
||||
|
||||
function post_to_url(redirectTo, data) {
|
||||
var scuttle_width = prefs.getCharPref("scuttle.options.width");
|
||||
var scuttle_height = prefs.getCharPref("scuttle.options.height");
|
||||
// POST method requests must wrap the encoded text in a MIME stream
|
||||
var stringStream = Components.classes["@mozilla.org/io/string-input-stream;1"].createInstance(Components.interfaces.nsIStringInputStream);
|
||||
|
||||
if ("data" in stringStream) {
|
||||
// Gecko 1.9 or newer
|
||||
stringStream.data = data;
|
||||
} else {
|
||||
// 1.8 or older
|
||||
stringStream.setData(data, data.length);
|
||||
}
|
||||
|
||||
var postData = Components.classes["@mozilla.org/network/mime-input-stream;1"].createInstance(Components.interfaces.nsIMIMEInputStream);
|
||||
postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||
postData.addContentLength = true;
|
||||
postData.setData(stringStream);
|
||||
window.openDialog('chrome://browser/content', '_blank', "status=0, scrollbars=1, toolbar=0, resizable=1, width="+ scuttle_width +", height="+ scuttle_height +", left="+ (screen.width-scuttle_width) / 2 +", top="+ (screen.height-scuttle_height) / 2, redirectTo, null, null, postData);
|
||||
}
|
||||
|
||||
function scuttle_add(address, title) {
|
||||
var scuttle_url = prefs.getCharPref("scuttle.options.url");
|
||||
var scuttle_width = prefs.getCharPref("scuttle.options.width");
|
||||
var scuttle_height = prefs.getCharPref("scuttle.options.height");
|
||||
|
||||
var _address = (address === undefined) ? window.content.location.href : address;
|
||||
var _title = (title === undefined) ? window.content.document.title : title;
|
||||
var focusedWindow = document.commandDispatcher.focusedWindow;
|
||||
var description = focusedWindow.getSelection().toString();
|
||||
var _address = (address === undefined) ? new Array(window.content.location.href) : address;
|
||||
var _title = (title === undefined) ? new Array(window.content.document.title) : title;
|
||||
if (typeof _address === 'string') {
|
||||
_address = [ _address ];
|
||||
}
|
||||
if (typeof _title === 'string') {
|
||||
_title = [ _title ];
|
||||
}
|
||||
var description = "";
|
||||
|
||||
var params = '';
|
||||
for (var i in _address) {
|
||||
params += "address["+i+"]=" + encodeURIComponent(_address[i]) + "&";
|
||||
|
||||
description = description.replace(/[\t\n\r\f\v]+/g, " ");
|
||||
description = description.replace(/ {2,}/g, " ");
|
||||
}
|
||||
|
||||
for (var i in _title) {
|
||||
params += "title["+i+"]=" + encodeURIComponent(_title[i]) + "&";
|
||||
}
|
||||
params = params.slice(0, - 1);
|
||||
|
||||
var a = encodeURIComponent(_address);
|
||||
var t = encodeURIComponent(_title);
|
||||
var d = encodeURIComponent(description);
|
||||
post_to_url(scuttle_url + scuttle_page_add + "?action=add&popup=1" +"&description="+ d +"&src=ffext"+ scuttle_version, params);
|
||||
}
|
||||
|
||||
var scuttle_add_window = window.open(scuttle_url + scuttle_page_add + "?action=add&popup=1&address="+ a +"&title="+ t +"&description="+ d +"&src=ffext"+ scuttle_version, "scuttleBookmark", "status=0, scrollbars=1, toolbar=0, resizable=1, width="+ scuttle_width +", height="+ scuttle_height +", left="+ (screen.width-scuttle_width) / 2 +", top="+ (screen.height-scuttle_height) / 2);
|
||||
function scuttle_multiadd() {
|
||||
var address = [];
|
||||
var title = [];
|
||||
var e = 0;
|
||||
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
|
||||
var browserEnumerator = wm.getEnumerator("navigator:browser");
|
||||
|
||||
while (browserEnumerator.hasMoreElements()) {
|
||||
var browserWin = browserEnumerator.getNext();
|
||||
var tabbrowser = browserWin.gBrowser;
|
||||
|
||||
// Check each tab of this browser instance
|
||||
var numTabs = tabbrowser.browsers.length;
|
||||
for (var index = 0; index < numTabs; index++) {
|
||||
var currentBrowser = tabbrowser.getBrowserAtIndex(index);
|
||||
address[e] = currentBrowser.currentURI.spec;
|
||||
title[e] = tabbrowser.tabs[index].label;
|
||||
e++;
|
||||
}
|
||||
}
|
||||
scuttle_add(address, title);
|
||||
}
|
||||
|
||||
function scuttle_menu() {
|
||||
document.getElementById("scuttle-context-page").setAttribute("hidden", document.getElementById("context-bookmarkpage").getAttribute("hidden"));
|
||||
document.getElementById("scuttle-context-link").setAttribute("hidden", document.getElementById("context-bookmarklink").getAttribute("hidden"));
|
||||
document.getElementById("scuttle-context-selection").setAttribute("hidden", document.getElementById("context-searchselect").getAttribute("hidden"));
|
||||
}
|
||||
}
|
||||
|
7
chrome/scuttle/content/scuttle.xul
Executable file → Normal file
@ -18,6 +18,11 @@
|
||||
label="&scuttle.button.add;"
|
||||
tooltiptext="&scuttle.button.add;"
|
||||
oncommand="scuttle_add();"/>
|
||||
<toolbarbutton id="scuttle-button-multiadd"
|
||||
class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||
label="&scuttle.button.multiadd;"
|
||||
tooltiptext="&scuttle.button.multiadd;"
|
||||
oncommand="scuttle_multiadd();"/>
|
||||
</toolbarpalette>
|
||||
<popup id="contentAreaContextMenu" onpopupshown="scuttle_menu()">
|
||||
<menuitem id="scuttle-context-page"
|
||||
@ -45,4 +50,4 @@
|
||||
hidden="true"
|
||||
oncommand="scuttle_add();"/>
|
||||
</popup>
|
||||
</overlay>
|
||||
</overlay>
|
||||
|
19
chrome/scuttle/locale/de-DE/scuttle.dtd
Normal file
@ -0,0 +1,19 @@
|
||||
<!-- Buttons -->
|
||||
<!ENTITY scuttle.button.my "Mein Scuttle">
|
||||
<!ENTITY scuttle.button.add "Scuttle diese Seite...">
|
||||
<!ENTITY scuttle.button.multiadd "Scuttle diese Seite...">
|
||||
|
||||
<!-- Context Menu -->
|
||||
<!ENTITY scuttle.context.link "Scuttle diesen Link...">
|
||||
|
||||
<!-- Options -->
|
||||
<!ENTITY scuttle.options.title "Scuttle Optionen">
|
||||
|
||||
<!ENTITY scuttle.options.url.label "Adresse:">
|
||||
<!ENTITY scuttle.options.url.tooltip "Adresse deiner Scuttle Installation">
|
||||
|
||||
<!ENTITY scuttle.options.width.label "Breite:">
|
||||
<!ENTITY scuttle.options.width.tooltip "Breite des Popup Fensters">
|
||||
|
||||
<!ENTITY scuttle.options.height.label "Höhe:">
|
||||
<!ENTITY scuttle.options.height.tooltip "Höhe des Popup Fensters">
|
3
chrome/scuttle/locale/en-GB/scuttle.dtd
Executable file → Normal file
@ -1,6 +1,7 @@
|
||||
<!-- Buttons -->
|
||||
<!ENTITY scuttle.button.my "My Scuttle">
|
||||
<!ENTITY scuttle.button.add "Scuttle This Page...">
|
||||
<!ENTITY scuttle.button.multiadd "Scuttle All Pages...">
|
||||
|
||||
<!-- Context Menu -->
|
||||
<!ENTITY scuttle.context.link "Scuttle This Link...">
|
||||
@ -15,4 +16,4 @@
|
||||
<!ENTITY scuttle.options.width.tooltip "Pop-up window width">
|
||||
|
||||
<!ENTITY scuttle.options.height.label "Height:">
|
||||
<!ENTITY scuttle.options.height.tooltip "Pop-up window height">
|
||||
<!ENTITY scuttle.options.height.tooltip "Pop-up window height">
|
||||
|
0
chrome/scuttle/skin/classic/contents.rdf
Executable file → Normal file
0
chrome/scuttle/skin/classic/scuttle-button-add-small.png
Executable file → Normal file
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
0
chrome/scuttle/skin/classic/scuttle-button-add.png
Executable file → Normal file
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
0
chrome/scuttle/skin/classic/scuttle-button-my-small.png
Executable file → Normal file
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
0
chrome/scuttle/skin/classic/scuttle-button-my.png
Executable file → Normal file
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
0
chrome/scuttle/skin/classic/scuttle-icon-small.png
Executable file → Normal file
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 639 B |
0
chrome/scuttle/skin/classic/scuttle-icon.png
Executable file → Normal file
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
15
chrome/scuttle/skin/classic/scuttle.css
Executable file → Normal file
@ -35,6 +35,19 @@ toolbar[iconsize="small"] #scuttle-button-my[disabled="true"] {
|
||||
-moz-image-region: rect(48px 24px 72px 0px) !important;
|
||||
}
|
||||
|
||||
/* Scuttle All Pages... */
|
||||
|
||||
#scuttle-button-multiadd {
|
||||
list-style-image: url("chrome://scuttle/skin/scuttle-button-add.png");
|
||||
-moz-image-region: rect(0px 24px 24px 0px);
|
||||
}
|
||||
#scuttle-button-multiadd:hover {
|
||||
-moz-image-region: rect(24px 24px 48px 0px);
|
||||
}
|
||||
#scuttle-button-multiadd[disabled="true"] {
|
||||
-moz-image-region: rect(48px 24px 72px 0px) !important;
|
||||
}
|
||||
|
||||
toolbar[iconsize="small"] #scuttle-button-add {
|
||||
list-style-image: url("chrome://scuttle/skin/scuttle-button-add-small.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
@ -44,4 +57,4 @@ toolbar[iconsize="small"] #scuttle-button-add:hover {
|
||||
}
|
||||
toolbar[iconsize="small"] #scuttle-button-add[disabled="true"] {
|
||||
-moz-image-region: rect(32px 16px 48px 0px) !important;
|
||||
}
|
||||
}
|
||||
|
0
defaults/preferences/scuttle.js
Executable file → Normal file
15
install.rdf
Executable file → Normal file
@ -4,7 +4,7 @@
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>{88c0fe98-8034-efaa-ba61-6d021f798927}</em:id>
|
||||
<em:version>0.3.2</em:version>
|
||||
<em:version>0.3.4</em:version>
|
||||
<em:type>2</em:type>
|
||||
|
||||
<!-- Firefox -->
|
||||
@ -12,7 +12,16 @@
|
||||
<Description>
|
||||
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
|
||||
<em:minVersion>1.0</em:minVersion>
|
||||
<em:maxVersion>3.6.*</em:maxVersion>
|
||||
<em:maxVersion>4.*</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
<!-- Flock -->
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>{a463f10c-3994-11da-9945-000d60ca027b}</em:id>
|
||||
<em:minVersion>0.4</em:minVersion>
|
||||
<em:maxVersion>1.0</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
@ -24,4 +33,4 @@
|
||||
<em:optionsURL>chrome://scuttle/content/options.xul</em:optionsURL>
|
||||
<em:iconURL>chrome://scuttle/skin/scuttle-icon.png</em:iconURL>
|
||||
</Description>
|
||||
</RDF>
|
||||
</RDF>
|
||||
|