Add scuttle config
This commit is contained in:
parent
c6f43c514b
commit
f17ca04d07
3 changed files with 201 additions and 0 deletions
1
conkeror/.conkerorrc/.gitignore
vendored
1
conkeror/.conkerorrc/.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
init.js
|
||||
private.js
|
||||
|
|
|
@ -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
|
||||
|
|
152
conkeror/.conkerorrc/site-js/scuttle.js
Normal file
152
conkeror/.conkerorrc/site-js/scuttle.js
Normal 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);
|
Loading…
Reference in a new issue