summaryrefslogtreecommitdiffstats
path: root/conkeror/.conkerorrc/site-js
diff options
context:
space:
mode:
authorGravatar Tom Willemse2014-12-10 17:10:17 +0100
committerGravatar Tom Willemse2014-12-10 17:10:17 +0100
commitcbb7761b2a045a1506e0ba01fb7e26a1c75704b8 (patch)
treed5d1a1aa62cd57c834d1453504bdb4dbccd0c2f6 /conkeror/.conkerorrc/site-js
parentfe2f5bd66a2d6815ac617f625f9f396e5f43f031 (diff)
downloaddotfiles-cbb7761b2a045a1506e0ba01fb7e26a1c75704b8.tar.gz
dotfiles-cbb7761b2a045a1506e0ba01fb7e26a1c75704b8.zip
Add scuttle bookmarked widget
This widget shows whether or not the currently visited buffer is bookmarked in scuttle. This function requires a patch to scuttle to work.
Diffstat (limited to 'conkeror/.conkerorrc/site-js')
-rw-r--r--conkeror/.conkerorrc/site-js/scuttle.js119
1 files changed, 119 insertions, 0 deletions
diff --git a/conkeror/.conkerorrc/site-js/scuttle.js b/conkeror/.conkerorrc/site-js/scuttle.js
new file mode 100644
index 0000000..8ecb63a
--- /dev/null
+++ b/conkeror/.conkerorrc/site-js/scuttle.js
@@ -0,0 +1,119 @@
+// define_hook('scuttle_bookmarked_hook');
+
+function scuttle_parse_xml(text)
+{
+ var parser = Components
+ .classes["@mozilla.org/xmlextras/domparser;1"]
+ .createInstance(Components.interfaces.nsIDOMParser);
+ return parser.parseFromString(text, 'text/xml');
+}
+
+function scuttle_bookmarked_widget(window)
+{
+ this.class_name = 'scuttle-bookmark-widget';
+ text_widget.call(this, window);
+ this.add_hook('current_content_buffer_location_change_hook');
+ this.add_hook('select_buffer_hook');
+ // this.add_hook('scuttle_bookmarked_hook');
+}
+scuttle_bookmarked_widget.prototype = {
+ constructor: scuttle_bookmarked_widget,
+ __proto__: text_widget.prototype,
+ update: function () {
+ var obj = this;
+ function doit() {
+ check_buffer(obj.window.buffers.current, content_buffer);
+ let posturl = 'https://ryuslash.org/scuttle/api/is_bookmarked.php?url=' +
+ encodeURIComponent(
+ load_spec_uri_string(
+ load_spec(obj.window.buffers.current.top_frame)
+ )
+ );
+
+ try {
+ let content = yield send_http_request(
+ load_spec({uri: posturl})
+ );
+
+ var dom = scuttle_parse_xml(content.responseText);
+ var result = dom.getElementsByTagName('result')[0].innerHTML;
+
+ obj.view.text = result == 'true'
+ ? "+" : "-";
+ }
+ catch (e) { }
+ }
+ co_call(doit());
+ }
+};
+
+interactive("scuttle-post",
+ "bookmark the page via scuttle",
+ function (I) {
+ check_buffer(I.buffer, content_buffer);
+ let posturl = 'https://ryuslash.org/scuttle/api/posts_add.php?&url=' +
+ encodeURIComponent(
+ load_spec_uri_string(
+ load_spec(I.buffer.top_frame))) +
+ '&description=' +
+ encodeURIComponent(
+ yield I.minibuffer.read(
+ $prompt = "name (required): ",
+ $initial_value = I.buffer.title)) +
+ '&tags=' +
+ encodeURIComponent(
+ yield I.minibuffer.read(
+ $prompt = "tags (space delimited): ")) +
+ '&extended=' +
+ encodeURIComponent(
+ yield I.minibuffer.read(
+ $prompt = "extended description: "));
+
+ try {
+ var content = yield send_http_request(
+ load_spec({uri: posturl}));
+ var dom = scuttle_parse_xml(content.responseText);
+ var result = dom.getElementsByTagName('result')[0];
+ var code = result.getAttribute('code');
+ I.window.minibuffer.message(code);
+
+ // if (code === 'done')
+ // scuttle_bookmarked_hook_run();
+ } catch (e) { }
+ });
+
+interactive("scuttle-post-link",
+ "bookmark the link via scuttle",
+ function (I) {
+ var bo = yield read_browser_object(I);
+ var mylink = load_spec_uri_string(
+ load_spec(encodeURIComponent(bo)));
+ check_buffer(I.buffer, content_buffer);
+ let postlinkurl = 'https://ryuslash.org/scuttle/api/posts_add.php?&url=' +
+ mylink +
+ '&description=' +
+ encodeURIComponent(
+ yield I.minibuffer.read(
+ $prompt = "name (required): ",
+ $initial_value = bo.textContent)) +
+ '&tags=' +
+ encodeURIComponent(
+ yield I.minibuffer.read(
+ $prompt = "tags (space delimited): ")) +
+ '&extended=' +
+ encodeURIComponent(
+ yield I.minibuffer.read(
+ $prompt = "extended description: "));
+
+ try {
+ var content = yield send_http_request(
+ load_spec({uri: postlinkurl}));
+ var dom = scuttle_parse_xml(content.responseText);
+ var result = dom.getElementsByTagName('result')[0];
+ var code = result.getAttribute('code');
+ I.window.minibuffer.message(code);
+
+ // if (code === 'done')
+ // scuttle_bookmarked_hook_run();
+ } catch (e) { }
+ }, $browser_object = browser_object_links);