From 1088a8a5f3173a2ca685f2044a4eb60bfd560890 Mon Sep 17 00:00:00 2001 From: yohan <783b8c87@scimetis.net> Date: Fri, 18 Sep 2015 21:49:32 +0200 Subject: [PATCH] Modified to work with recent Firefox releases. Added "bookmark all open pages" feature : you need to use my SemanticScuttle fork for this. --- LICENSE | 1 + README.md | 8 +- chrome.manifest | 3 +- chrome/scuttle/content/contents.rdf | 0 chrome/scuttle/content/options.js | 0 chrome/scuttle/content/options.xul | 0 chrome/scuttle/content/scuttle.js | 78 +++++++++++++++--- chrome/scuttle/content/scuttle.xul | 7 +- chrome/scuttle/locale/de-DE/scuttle.dtd | 19 +++++ chrome/scuttle/locale/en-GB/scuttle.dtd | 3 +- chrome/scuttle/skin/classic/contents.rdf | 0 .../skin/classic/scuttle-button-add-small.png | Bin .../skin/classic/scuttle-button-add.png | Bin .../skin/classic/scuttle-button-my-small.png | Bin .../skin/classic/scuttle-button-my.png | Bin .../skin/classic/scuttle-icon-small.png | Bin chrome/scuttle/skin/classic/scuttle-icon.png | Bin chrome/scuttle/skin/classic/scuttle.css | 15 +++- defaults/preferences/scuttle.js | 0 install.rdf | 15 +++- scuttle_0.3.4.xpi | Bin 0 -> 27830 bytes 21 files changed, 127 insertions(+), 22 deletions(-) mode change 100755 => 100644 chrome.manifest mode change 100755 => 100644 chrome/scuttle/content/contents.rdf mode change 100755 => 100644 chrome/scuttle/content/options.js mode change 100755 => 100644 chrome/scuttle/content/options.xul mode change 100755 => 100644 chrome/scuttle/content/scuttle.js mode change 100755 => 100644 chrome/scuttle/content/scuttle.xul create mode 100644 chrome/scuttle/locale/de-DE/scuttle.dtd mode change 100755 => 100644 chrome/scuttle/locale/en-GB/scuttle.dtd mode change 100755 => 100644 chrome/scuttle/skin/classic/contents.rdf mode change 100755 => 100644 chrome/scuttle/skin/classic/scuttle-button-add-small.png mode change 100755 => 100644 chrome/scuttle/skin/classic/scuttle-button-add.png mode change 100755 => 100644 chrome/scuttle/skin/classic/scuttle-button-my-small.png mode change 100755 => 100644 chrome/scuttle/skin/classic/scuttle-button-my.png mode change 100755 => 100644 chrome/scuttle/skin/classic/scuttle-icon-small.png mode change 100755 => 100644 chrome/scuttle/skin/classic/scuttle-icon.png mode change 100755 => 100644 chrome/scuttle/skin/classic/scuttle.css mode change 100755 => 100644 defaults/preferences/scuttle.js mode change 100755 => 100644 install.rdf create mode 100644 scuttle_0.3.4.xpi diff --git a/LICENSE b/LICENSE index bb62102..17640fe 100644 --- a/LICENSE +++ b/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 diff --git a/README.md b/README.md index 58780dc..bf7237a 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/chrome.manifest b/chrome.manifest old mode 100755 new mode 100644 index 172c0b8..bd9ba30 --- a/chrome.manifest +++ b/chrome.manifest @@ -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 \ No newline at end of file +style chrome://global/content/customizeToolbar.xul chrome://scuttle/skin/scuttle.css diff --git a/chrome/scuttle/content/contents.rdf b/chrome/scuttle/content/contents.rdf old mode 100755 new mode 100644 diff --git a/chrome/scuttle/content/options.js b/chrome/scuttle/content/options.js old mode 100755 new mode 100644 diff --git a/chrome/scuttle/content/options.xul b/chrome/scuttle/content/options.xul old mode 100755 new mode 100644 diff --git a/chrome/scuttle/content/scuttle.js b/chrome/scuttle/content/scuttle.js old mode 100755 new mode 100644 index 08c50c1..2627da5 --- a/chrome/scuttle/content/scuttle.js +++ b/chrome/scuttle/content/scuttle.js @@ -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")); -} \ No newline at end of file +} diff --git a/chrome/scuttle/content/scuttle.xul b/chrome/scuttle/content/scuttle.xul old mode 100755 new mode 100644 index 6e1d0bd..9142311 --- a/chrome/scuttle/content/scuttle.xul +++ b/chrome/scuttle/content/scuttle.xul @@ -18,6 +18,11 @@ label="&scuttle.button.add;" tooltiptext="&scuttle.button.add;" oncommand="scuttle_add();"/> + - \ No newline at end of file + diff --git a/chrome/scuttle/locale/de-DE/scuttle.dtd b/chrome/scuttle/locale/de-DE/scuttle.dtd new file mode 100644 index 0000000..f12a85f --- /dev/null +++ b/chrome/scuttle/locale/de-DE/scuttle.dtd @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/chrome/scuttle/locale/en-GB/scuttle.dtd b/chrome/scuttle/locale/en-GB/scuttle.dtd old mode 100755 new mode 100644 index 909a842..d35c8ef --- a/chrome/scuttle/locale/en-GB/scuttle.dtd +++ b/chrome/scuttle/locale/en-GB/scuttle.dtd @@ -1,6 +1,7 @@ + @@ -15,4 +16,4 @@ - \ No newline at end of file + diff --git a/chrome/scuttle/skin/classic/contents.rdf b/chrome/scuttle/skin/classic/contents.rdf old mode 100755 new mode 100644 diff --git a/chrome/scuttle/skin/classic/scuttle-button-add-small.png b/chrome/scuttle/skin/classic/scuttle-button-add-small.png old mode 100755 new mode 100644 diff --git a/chrome/scuttle/skin/classic/scuttle-button-add.png b/chrome/scuttle/skin/classic/scuttle-button-add.png old mode 100755 new mode 100644 diff --git a/chrome/scuttle/skin/classic/scuttle-button-my-small.png b/chrome/scuttle/skin/classic/scuttle-button-my-small.png old mode 100755 new mode 100644 diff --git a/chrome/scuttle/skin/classic/scuttle-button-my.png b/chrome/scuttle/skin/classic/scuttle-button-my.png old mode 100755 new mode 100644 diff --git a/chrome/scuttle/skin/classic/scuttle-icon-small.png b/chrome/scuttle/skin/classic/scuttle-icon-small.png old mode 100755 new mode 100644 diff --git a/chrome/scuttle/skin/classic/scuttle-icon.png b/chrome/scuttle/skin/classic/scuttle-icon.png old mode 100755 new mode 100644 diff --git a/chrome/scuttle/skin/classic/scuttle.css b/chrome/scuttle/skin/classic/scuttle.css old mode 100755 new mode 100644 index 609461a..f0dfa9d --- a/chrome/scuttle/skin/classic/scuttle.css +++ b/chrome/scuttle/skin/classic/scuttle.css @@ -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; -} \ No newline at end of file +} diff --git a/defaults/preferences/scuttle.js b/defaults/preferences/scuttle.js old mode 100755 new mode 100644 diff --git a/install.rdf b/install.rdf old mode 100755 new mode 100644 index e08edae..531e974 --- a/install.rdf +++ b/install.rdf @@ -4,7 +4,7 @@ {88c0fe98-8034-efaa-ba61-6d021f798927} - 0.3.2 + 0.3.4 2 @@ -12,7 +12,16 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 1.0 - 3.6.* + 4.* + + + + + + + {a463f10c-3994-11da-9945-000d60ca027b} + 0.4 + 1.0 @@ -24,4 +33,4 @@ chrome://scuttle/content/options.xul chrome://scuttle/skin/scuttle-icon.png - \ No newline at end of file + diff --git a/scuttle_0.3.4.xpi b/scuttle_0.3.4.xpi new file mode 100644 index 0000000000000000000000000000000000000000..e3df846c90de6b9e12d084782258ac6cd3b64676 GIT binary patch literal 27830 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