From f17ca04d079f13e6bb4b30553183157bafa1a017 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Wed, 28 Sep 2016 14:39:42 +0200 Subject: Add scuttle config --- conkeror/.conkerorrc/site-js/scuttle.js | 152 ++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 conkeror/.conkerorrc/site-js/scuttle.js (limited to 'conkeror/.conkerorrc/site-js') diff --git a/conkeror/.conkerorrc/site-js/scuttle.js b/conkeror/.conkerorrc/site-js/scuttle.js new file mode 100644 index 0000000..9b7373b --- /dev/null +++ b/conkeror/.conkerorrc/site-js/scuttle.js @@ -0,0 +1,152 @@ +define_hook('scuttle_bookmarked_hook'); + +define_variable("scuttle_username", null, + "Username of te scuttle account."); +define_variable("scuttle_password", null, + "Password of the scuttle account."); +define_variable("scuttle_url", null, + "The URL where scuttle can be found."); + +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_get_url(path) +{ + let url = make_uri(scuttle_url); + + if (scuttle_username != null) + url.username = scuttle_username; + if (scuttle_password != null) + url.password = scuttle_password; + + url.path += '/api'; + + return url.spec + '/' + path; +} + +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 = scuttle_get_url('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 = scuttle_get_url( + 'posts_add.php?&url=' + + escape(load_spec_uri_string(load_spec(I.buffer.top_frame))) + + '&description=' + + escape(( + yield I.minibuffer.read( + $prompt = "name (required): ", + $initial_value = I.buffer.title + ) + )) + + '&tags=' + + escape(( + yield I.minibuffer.read( + $prompt = "tags (space delimited): " + ) + )) + + '&extended=' + + escape(( + 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 = scuttle_get_url( + 'posts_add.php?&url=' + + mylink + + '&description=' + + escape(( + yield I.minibuffer.read( + $prompt = "name (required): ", + $initial_value = bo.textContent + ) + )) + + '&tags=' + + escape(( + yield I.minibuffer.read( + $prompt = "tags (space delimited): " + ) + )) + + '&extended=' + + escape(( + 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); -- cgit v1.2.3-54-g00ecf