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.
This commit is contained in:
parent
fe2f5bd66a
commit
cbb7761b2a
2 changed files with 121 additions and 59 deletions
|
@ -38,6 +38,7 @@ let (home = get_home_directory()) {
|
||||||
|
|
||||||
require("cdispass");
|
require("cdispass");
|
||||||
require("jira");
|
require("jira");
|
||||||
|
require('scuttle');
|
||||||
|
|
||||||
define_browser_object_class(
|
define_browser_object_class(
|
||||||
"history-url", null,
|
"history-url", null,
|
||||||
|
@ -218,6 +219,7 @@ add_hook("content_policy_hook", content_policy_bytype);
|
||||||
add_hook("mode_line_hook", mode_line_adder(buffer_count_widget));
|
add_hook("mode_line_hook", mode_line_adder(buffer_count_widget));
|
||||||
add_hook("mode_line_hook", mode_line_adder(buffer_icon_widget), true);
|
add_hook("mode_line_hook", mode_line_adder(buffer_icon_widget), true);
|
||||||
add_hook("mode_line_hook", mode_line_adder(downloads_status_widget));
|
add_hook("mode_line_hook", mode_line_adder(downloads_status_widget));
|
||||||
|
add_hook('mode_line_hook', mode_line_adder(scuttle_bookmarked_widget));
|
||||||
|
|
||||||
remove_hook("download_added_hook", open_download_buffer_automatically);
|
remove_hook("download_added_hook", open_download_buffer_automatically);
|
||||||
|
|
||||||
|
@ -324,65 +326,6 @@ register_user_stylesheet(
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
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}));
|
|
||||||
I.window.minibuffer.message(content.responseText);
|
|
||||||
} 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}));
|
|
||||||
I.window.minibuffer.message(content.responseText);
|
|
||||||
} catch (e) { }
|
|
||||||
}, $browser_object = browser_object_links);
|
|
||||||
|
|
||||||
define_key(default_global_keymap, "p", "scuttle-post");
|
define_key(default_global_keymap, "p", "scuttle-post");
|
||||||
define_key(default_global_keymap, "P", "scuttle-post-link");
|
define_key(default_global_keymap, "P", "scuttle-post-link");
|
||||||
|
|
||||||
|
|
119
conkeror/.conkerorrc/site-js/scuttle.js
Normal file
119
conkeror/.conkerorrc/site-js/scuttle.js
Normal file
|
@ -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);
|
Loading…
Reference in a new issue