summaryrefslogtreecommitdiffstats
path: root/conkeror/.conkerorrc/site-js/scuttle.js
blob: 8ecb63ad34533516d38abd25765cb4469ca1b336 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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);