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

잔글 (LiteHell2 사용자가 사용자:LiteHell2/common.js 문서를 넘겨주기를 만들지 않고 사용자:LiteHell2/keybaseInEmail.js 문서로 옮겼습니다: 개발 완료)
편집 요약 없음
10번째 줄: 10번째 줄:
         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>';
         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('table tbody').insertBefore(keybaseIdRow, document.querySelector('table tr.mw-htmlform-field-HTMLTextAreaField'));
        // 버튼 추가
        var encryptBtn = document.createElement("input");
        encryptBtn.className = "mw-htmlform-submit";
        encryptBtn.setAttribute("type", "button");
        encryptBtn.value = "암호화";
        document.querySelector('span.mw-htmlform-submit-buttons').appendChild(encryptBtn);


         // 이벤트 핸들러 추가
         // 이벤트 핸들러 추가
         document.querySelector('form.visualClear').addEventListener('submit', function() {
         encryptBtn.addEventListener('submit', function() {
             if (keybaseIdRow.querySelector('input').value.trim().length != 0) {
             if (keybaseIdRow.querySelector('input').value.trim().length != 0) {
                 // 키 불려오기
                 // 키 불려오기
38번째 줄: 45번째 줄:
                 }
                 }
             }
             }
            return true;
         });
         });


     })();
     })();
}
}

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

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'));

        // 버튼 추가
        var encryptBtn = document.createElement("input");
        encryptBtn.className = "mw-htmlform-submit";
        encryptBtn.setAttribute("type", "button");
        encryptBtn.value = "암호화";
        document.querySelector('span.mw-htmlform-submit-buttons').appendChild(encryptBtn);

        // 이벤트 핸들러 추가
        encryptBtn.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;
                                } else {
                                    alert('오류가 발생했습니다. 메세지를 그냥 보냅니다.');
                                }
                            });
                        }
                    });
                }
            }
        });

    })();
}