// Vimperator plugin: Hatena Bookmark image counter // Maintainer: mattn - http://mattn.kaoriya.net (function() { const ICON = 'data:image/x-icon;base64,'+ 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAOd5Uv/JXyr/yV8q/8lfKv/JXyr/yV8q/8lfKv/JXyr/yV8q/8lfKv/J'+ 'Xyr/yV8q/8lfKv/JXyr/AAAAAAAAAAD6pYX/53lS/+d5Uv/neVL/53lS/+d5Uv/neVL/53lS/+d5'+ 'Uv/neVL/53lS/+d5Uv/neVL/yV8q/wAAAAAAAAAA+qWF/+d5Uv/neVL/53lS/+d5Uv/neVL/53lS'+ '/+d5Uv/neVL/53lS/+d5Uv/neVL/53lS/8lfKv8AAAAAAAAAAPqlhf/neVL/53lS/+d5Uv//////'+ '///////////////////////////neVL/53lS/+d5Uv/JXyr/AAAAAAAAAAD6pYX/53lS/+d5Uv/n'+ 'eVL////////////neVL/53lS/+d5Uv///////////+d5Uv/neVL/yV8q/wAAAAAAAAAA+qWF/+d5'+ 'Uv/neVL/53lS////////////53lS/+d5Uv/neVL////////////neVL/53lS/8lfKv8AAAAAAAAA'+ 'APqlhf/neVL/53lS/+d5Uv///////////+d5Uv/neVL/53lS////////////53lS/+d5Uv/JXyr/'+ 'AAAAAAAAAAD6pYX/53lS/+d5Uv/neVL/////////////////////////////////53lS/+d5Uv/n'+ 'eVL/yV8q/wAAAAAAAAAA+qWF/+d5Uv/neVL/53lS////////////53lS/+d5Uv///////////+d5'+ 'Uv/neVL/53lS/8lfKv8AAAAAAAAAAPqlhf/neVL/53lS/+d5Uv///////////+d5Uv/neVL/////'+ '///////neVL/53lS/+d5Uv/JXyr/AAAAAAAAAAD6pYX/53lS/+d5Uv/neVL/////////////////'+ '///////////neVL/53lS/+d5Uv/neVL/yV8q/wAAAAAAAAAA+qWF/+d5Uv/neVL/53lS/+d5Uv/n'+ 'eVL/53lS/+d5Uv/neVL/53lS/+d5Uv/neVL/53lS/8lfKv8AAAAAAAAAAPqlhf/neVL/53lS/+d5'+ 'Uv/neVL/53lS/+d5Uv/neVL/53lS/+d5Uv/neVL/53lS/+d5Uv/JXyr/AAAAAAAAAAD6pYX/+qWF'+ '//qlhf/6pYX/+qWF//qlhf/6pYX/+qWF//qlhf/6pYX/+qWF//qlhf/6pYX/53lS/wAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAA//8AAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB'+ 'AACAAQAA//8AAA=='; var hbCountIcon = document.getElementById('status-bar') .insertBefore(document.createElement('statusbarpanel'), document.getElementById('security-button') .nextSibling); hbCountIcon.setAttribute('id', 'hatena-bookmark-count-icon'); hbCountIcon.setAttribute('src', ICON); hbCountIcon.setAttribute('class', 'statusbarpanel-iconic'); hbCountIcon.addEventListener('click', function(e) { liberator.open('http://b.hatena.ne.jp/entry/' + liberator.modules.buffer.URL .replace(/#/g, '%23'), liberator.NEW_TAB); }, false); liberator.plugins.hbCountUpdate = function() { hbCountIcon.setAttribute('src', 'http://b.hatena.ne.jp/entry/image/' + liberator.modules.buffer.URL.replace(/#/g, '%23')); }; liberator.modules.autocommands.add('LocationChange', '.*', 'js liberator.plugins.hbCountUpdate()'); })(); // vim:sw=4 ts=4 et:
path: root/tinymenu.js
blob: ea2cd8e1be778402299aea566a5dbe27eb934e9c (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
var PLUGIN_INFO =
<VimperatorPlugin>
<name>{NAME}</name>
<description>Tiny Menu for Vimperator</description>
<minVersion>2.0pre</minVersion>
<maxVersion>2.0</maxVersion>
<updateURL>https://github.com/vimpr/vimperator-plugins/raw/master/tinymenu.js</updateURL>
<author mail="hotchpotch@gmail.com" homepage="http://d.hatena.ne.jp/secondlife/">Yuichi Tateno</author>
<license>MPL 1.1/GPL 2.0/LGPL 2.1</license>
<version>0.2</version>
<detail><![CDATA[
append statusbar's menuicon like Tiny Menu [ https://addons.mozilla.org/firefox/addon/1455 ].

thx icon id:tnx.

== Commands ==
  :opentinymenu:
    Open the tiny menu.
]]></detail>
</VimperatorPlugin>;

(function() {
    if (!liberator.plugins.tinymenu)
        liberator.plugins.tinymenu = {};

    let tinymenu = liberator.plugins.tinymenu;
    if (tinymenu.menu) return;

    let p = function(msg) {
        Application.console.log(msg);
    };

    const ICON = 'data:image/png;base64,'+
                 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK'+
                 '6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGiSURBVHja'+
                 'jFPLSsNQEJ30kZK+Nkk3zUoQuhKErK0gCHHlN5SCUFoImEU3LgVBiFAQhIIf4UIo'+
                 'CIJ/oO3KbWm7aLorJTQg9UxsYxKi7cDhPuaec+femRFqtRpFrAJcAMfA4XrvHXgD'+
                 'usBn8HAqQr4ErlVVlXK5HEmS5G06jqMtFgttPB43sLwC7qICIvCkKIpeKpUok8mE'+
                 'VLPZrIdisSjZtm3NZrNTbJ8D7kbgFkQdN5Miy/SfqeUyffT7OoRusDRZ4ABoleFg'+
                 'O6pWyTTNEMmyrNB6atsEAQPTRxao4+akIAg/zumU2u12mIC9oCUSCWIO/qTOAjre'+
                 '5js1TYsNvdls/qapUqFCocBTnQX2RFEMHTYMI7TudDoeKWjpdNr7klTcbUzYZusn'+
                 'J1lg6LrufjB1cRFEDRwehizQm8/nraDALhGAw8MLC3RHo1FDlmU/E9siWK1WhAx8'+
                 'bdI4AB4mk0mLC2mXCHCWh3vmCutm8ksZNR9L4iwsl0suIEIp96KlzD9yBoffTPl8'+
                 'PthMHhFhO38108bY8YyD3M4nkXZ+jWvnbwEGAKqdlwtH3ubkAAAAAElFTkSuQmCC';

    if (!tinymenu.popup) {
        let menus = Array.slice(document.getElementById('main-menubar').childNodes);
        let popup = document.createElement('menupopup');
        menus.reverse().forEach(function(elem) popup.appendChild(elem.cloneNode(true)));
        popup.setAttribute('id', 'gimperator-tinymenu-popup');
        tinymenu.popup = popup;
    }

    if (!tinymenu.menu) {
        let menu = document.createElement('statusbarpanel');
        menu.setAttribute('id', 'vimperator-tinymenu');
        menu.setAttribute('class','statusbarpanel-iconic');
        menu.setAttribute('src', ICON);
        tinymenu.menu = menu;
    }

    let menu = tinymenu.menu;
    let popup = tinymenu.popup;

    menu.addEventListener('click', function(event) {
        if (popup.state == 'closed')
            popup.openPopup(menu, 'before_end', 0, 0, false, true);
    }, false);

    commands.addUserCommand(
        ['opentinymenu'],
        'Open the tiny menu ',
        function () {
            popup.openPopup(menu, 'before_end', 0, 0, false, true);
        },
        true
    );

    //document.getElementById('status-bar').insertBefore(menu, document.getElementById('security-button').nextSibling);
    document.getElementById('status-bar').appendChild(popup);
    document.getElementById('status-bar').appendChild(menu);
})();