사용자:LiteHell2/keybaseInEmail.js: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
3번째 줄: 3번째 줄:
         if (document.querySelector('p.error')) return; // 오류시 종료
         if (document.querySelector('p.error')) return; // 오류시 종료


        // 자동완성 묘듈 로드
         mw.loader.load('//www.librewiki.net/index.php?title=사용자:LiteHell2/kdpgp.js&action=raw&ctype=text/javascript');
         mw.loader.load("jquery.ui.autocomplete")


         // id 입력칸
         // id 입력칸
12번째 줄: 11번째 줄:
         document.querySelector('table tbody').insertBefore(keybaseIdRow, document.querySelector('table tr.mw-htmlform-field-HTMLTextAreaField'));
         document.querySelector('table tbody').insertBefore(keybaseIdRow, document.querySelector('table tr.mw-htmlform-field-HTMLTextAreaField'));


// 이유는 모르겠으나 작동이 안되므로 주석처리
         // 이벤트 핸들러 추가
/*
         document.querySelector('form.visualClear').addEventListener('submit', function() {
         // id 입력칸 자동입력
             if (keybaseIdRow.querySelector('input').value.trim().length != 0) {
         $(keybaseIdRow.querySelector('input')).autocomplete({
                // 키 불려오기
             source: function(acreq, acres) {
                 var req = new XMLHttpRequest();
                 var req = new XMLHttpRequest();
                 req.open('GET', 'https://keybase.io/_/api/1.0/user/lookup.json?user=' + encodeURIComponent(acreq.term));
                 req.open('GET', 'https://keybase.io/' + keybaseIdRow.querySelector('input').value + '/key.asc', false);
                 req.onreadystatechange = function(evt) {
                 req.send(null);
                        if (req.readyState == 4 && req.status == 200) {
                if (req.status == 200) {
                            var obj = JSON.parse(req.responseText);
                    kbpgp.KeyManager.import_form_armored_pgp({
                            if (obj.status.code == 0) {
                        armored: req.responseText
                                 var result = [];
                    }, function(err, alice) {
                                 for (var i = 0; i < obj.them.length; i++) {
                        if (!err) {
                                     result.push(obj.them[i].basics.username);
                            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);
                                 }
                                 }
                                acres(result);
                            });
                            } // end of if (obj.status.code == .....
                         }
                         } // end of if (req.readyState == .....
                     });
                     } // end of onreadystatechanged handler
                req.send(null);
            }
        });
*/
 
        // 체크박스
        var encryptWithKeybase = document.createElement("tr");
        encryptWithKeybase.className = "mw-htmlform-field-HTMLCheckField";
        encryptWithKeybase.innerHTML = '<td class="mw-label"><label></label></td><td class="mw-input"><input id="input-encrypt-with-gpg" type="checkbox" value="0"></input> <label for="input-encrypt-with-gpg">Keybase id로 얻은 공개키로 GPG 암호화</label></td>';
        document.querySelector('.mw-htmlform-field-HTMLCheckField').parentNode.insertBefore(encryptWithKeybase, document.querySelector('.mw-htmlform-field-HTMLCheckField'));
 
        // 이벤트 핸들러 추가
        document.querySelector('form.visualClear').addEventListener('submit', function() {
            if (encryptWithKeybase.querySelector('input').checked) {
                if (keybaseIdRow.querySelector('input').value.trim().length == 0) {
                    alert('Keybase Id를 입력해주세요.');
                    return false;
                 }
                 }
                // 디버그용
                alert('!');
             }
             }
             return true;
             return true;

2015년 9월 13일 (일) 23:34 판

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_form_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;
        });

    })();
}