사용자:LiteHell2/keybaseInEmail.js

< 사용자:LiteHell2
LiteHell2 (토론 | 기여)님의 2015년 9월 13일 (일) 23:36 판

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
if (mw.config.get('wgPageName') == "특수:이메일보내기") {
    (function() {
        if (document.querySelector('p.error')) return; // 오류시 종료

        mw.loader.load('//www.librewiki.net/index.php?title=사용자:LiteHell2/kdpgp.js&action=raw&ctype=text/javascript');

        // id 입력칸
        var keybaseIdRow = document.createElement("tr");
        keybaseIdRow.className = "mw-htmlform-field-HTMLTextField";
        keybaseIdRow.innerHTML = '<td class="mw-label"><label for="input-keybase-id">Keybase 아이디</label></td><td class="mw-input"><input id="input-keybase-id" maxlength="100" title="암호화에 사용할 Keybase Id" type="text"></input></td>';
        document.querySelector('table tbody').insertBefore(keybaseIdRow, document.querySelector('table tr.mw-htmlform-field-HTMLTextAreaField'));

        // 이벤트 핸들러 추가
        document.querySelector('form.visualClear').addEventListener('submit', function() {
            if (keybaseIdRow.querySelector('input').value.trim().length != 0) {
                // 키 불려오기
                var req = new XMLHttpRequest();
                req.open('GET', 'https://keybase.io/' + keybaseIdRow.querySelector('input').value + '/key.asc', false);
                req.send(null);
                if (req.status == 200) {
                    kbpgp.KeyManager.import_from_armored_pgp({
                        armored: req.responseText
                    }, function(err, alice) {
                        if (!err) {
                            var txtarea = document.querySelector('.mw-htmlform-field-HTMLTextAreaField textarea');
                            kbpgp.box({
                                msg: txtarea.value,
                                encrypt_for: alice
                            }, function(err, result_string, result_buffer) {
                                if (!err) {
                                    txtarea.value = result_string;
                                    alert(txtarea.value);
                                }
                            });
                        }
                    });
                }
            }
            return true;
        });

    })();
}