01: // ==UserScript==
02: // @name MarkDown stealer
03: // @namespace HTLAL
04: // @include http://how-to-learn-any-language.com/forum/*
05: // @version 1
06: // @grant none
07: // ==/UserScript==
08:
09: // basic markdown reg expressions
10: var mdpat = [/\*\*(.*?)\*\*/g,
11: /\*(.*?)\*/g,
12: /_(.*?)_/g,
13: /\[(.*?)\]\((.*?)\)/g,
14: /\[([http|ftp].*?)\]/g];
15: // replacements for the preview window
16: var mdrep = ['<strong>$1</strong>',
17: '<em>$1</em>',
18: '<u>$1</u>',
19: '<a href="$2" rel="nofollow">$1</a>',
20: '<a href="$1" rel="nofollow">$1</a>'];
21: // to convert the markdown to BBCode
22: var bbcode = ['[B]$1[/B]',
23: '[I]$1[/I]',
24: '[U]$1[/U]',
25: '[URL=$2]$1[/URL]',
26: '[URL]$1[/URL]'];
27:
28: previewPageHTML = ' <html>' +
29: ' <head>' +
30: ' <title>Post Preview</title>' +
31: ' </head>' +
32: ' <body style="background-image:url(http://how-to-learn-any-language.com/forum/forum_images/main_bg.gif)">' +
33: ' <center>Post Preview</center>' +
34: ' <div style="width:98%; border:1px solid; background-color:#F4F4FB; height:147; padding:2px;">';
35: previewPageHTML_bottom = ' </div>' +
36: ' <center><a href="JavaScript:onClick=window.close()">Close Window</a></center>' +
37: '</body>' +
38: '</html>';
39:
40: function convertMarkDown(e) {
41: // e.preventDefault();
42: var textareas = document.getElementsByTagName('textarea'); // grab the textarea element
43: if (textareas) {
44: var textarea = textareas[0];
45: text = textarea.value;
46: text = text.replace(/(?:\r\n|\r|\n)/g, '<br />'); // replace all new lines for BR
47: for(i=0;i<mdpat.length;i++) {
48: text = text.replace(mdpat[i],bbcode[i]);
49: }
50: text = text.replace(/[/g,"[");
51: textarea.value = text;
52: }
53: }
54:
55: function previewMarkDown() {
56: var textareas = document.getElementsByTagName('textarea'); // grab the textarea element
57: if (textareas) {
58: var textarea = textareas[0];
59: text = textarea.value;
60: text = text.replace(/(?:\r\n|\r|\n)/g, '<br />'); // replace all new lines for BR
61: for(i=0;i<mdpat.length;i++) {
62: text = text.replace(mdpat[i],mdrep[i]);
63: }
64: preview = window.open('','Preview','toolbar=0,location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=680,height=400');
65: preview.document.body.innerHTML = previewPageHTML + text + previewPageHTML_bottom;
66: preview.document.body.style.backgroundImage="url(http://how-to-learn-any-language.com/forum/forum_images/main_bg.gif)";
67: }
68: }
69:
70: inputs = document.querySelectorAll("form input[type=submit]");
71: for(i=0;i<inputs.length;i++) {
72: // inputs[i].removeAttribute("onclick");
73: }
74:
75: // create the preview button
76: var formp = document.querySelectorAll("form p");
77: if (formp) {
78: form = formp[1];
79: submit = form.querySelector("input[type=submit]");
80: var button = document.createElement("button");
81: button.textContent = "Preview Markdown";
82: button.setAttribute("type", "button");
83: button.addEventListener('click', previewMarkDown, false);
84: form.appendChild(button);
85: document.getElementsByTagName("form")[0].addEventListener("submit",convertMarkDown,false);
86: }