Add scuttle config

This commit is contained in:
Tom Willemse 2016-09-28 14:39:42 +02:00
parent c6f43c514b
commit f17ca04d07
3 changed files with 201 additions and 0 deletions

View file

@ -1 +1,2 @@
init.js
private.js

View file

@ -58,3 +58,51 @@ description.
#+BEGIN_SRC js
define_opensearch_webjump("mdn", "mozilla-developer-network.xml");
#+END_SRC
Add the ~site-js/~ directory to the load path.
#+BEGIN_SRC js
function add_to_load_path(new_path) {
if (new_path.startsWith('/')) {
load_paths.push("file://" + new_path);
} else {
let path = get_home_directory();
path.append('.conkerorrc');
path.append(new_path);
load_paths.push(path);
}
}
add_to_load_path('site-js');
#+END_SRC
* Scuttle
Load the scuttle module.
#+BEGIN_SRC js
require('scuttle');
#+END_SRC
Set the URL of my scuttle installation.
#+BEGIN_SRC js
scuttle_url = 'https://ryuslash.org/scuttle/';
#+END_SRC
Add the bookmarked widget to the mode line. This requires my
customized version of Scuttle to be able to check if a buffer has
been bookmarked or not.
#+BEGIN_SRC js
add_hook('mode_line_hook', mode_line_adder(scuttle_bookmarked_widget));
#+END_SRC
Set-up keybindings for posting to scuttle.
#+BEGIN_SRC js
define_key(default_global_keymap, 'p', 'scuttle-post');
define_key(default_global_keymap, 'P', 'scuttle-post-link');
#+END_SRC

View file

@ -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);