From cbb7761b2a045a1506e0ba01fb7e26a1c75704b8 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Wed, 10 Dec 2014 17:10:17 +0100 Subject: 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. --- conkeror/.conkerorrc/site-js/scuttle.js | 119 ++++++++++++++++++++++++++++++++ 1 file changed, 119 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..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); -- cgit v1.2.3-54-g00ecf