Greasy Fork is available in English.

Greasyfork forum MARKDOWN for new comments

Select MARKDOWN format by default, add formatting help links, add CODE markdown button

Verze ze dne 04. 12. 2014. Zobrazit nejnovější verzi.

// ==UserScript==
// @name          Greasyfork forum MARKDOWN for new comments
// @author        wOxxOm
// @description   Select MARKDOWN format by default, add formatting help links, add CODE markdown button
// @namespace     wOxxOm.scripts
// @version       1.01
// @include       https://greasyfork.org/*forum/discussion/*
// @include       https://greasyfork.org/*forum/post/discussion*
// @run-at        document-start
// @grant         none
// ==/UserScript==

var ob = new MutationObserver(function(mutations){
  for (var i=0, ml=mutations.length, m; (i<ml) && (m=mutations[i]); i++)
    for (var j=0, nodes=m.addedNodes, nl=nodes.length, n; (j<nl) && (n=nodes[j]); j++)
      if (n.nodeType == 1) {
        if (n.localName == 'label') {
          if (n.for != 'Form_Format2')
            continue;
        } 
        else if (!(n = n.querySelector('label[for="Form_Format2"]')))
          continue;

        n.click();

        n.previousElementSibling.insertAdjacentHTML('beforeend',
              ' (<a href="/help/allowed-markup" target="_blank" title="'+
              '* (name, title), a (href), abbr, b, blockquote (cite), br, center, cite, code, dd, del, dfn, div, dl, dt, em, '+
              'h1, h2, h3, h4, h5, h6, hr, i, ins, img (alt, height, src (https), width), kbd, li, mark, ol, p, pre, q (cite), '+
              'rp, rt, ruby, s, samp, small, span, strike, strong, tt, table, tbody, tfoot, thead, td, th, tr, sub, sup, '+
              'time (datetime, pubdate), u, ul, var">?</a>)');
        n.insertAdjacentHTML('beforeend',' (<a href="http://www.darkcoding.net/software/markdown-quick-reference/" target="_blank">?</a>)');

        var a = document.createElement('a');
        a.className = "Button CodeButton"; a.style.setProperty('float','right'); a.textContent = 'Code';
        a.title = 'Apply CODE markdown to selected text';
        a.addEventListener('click', function(e){
          var txtNode = document.getElementById('Form_Body');
          var s1 = txtNode.selectionStart, s2 = txtNode.selectionEnd;
          var txt = txtNode.value;
          var sel = txt.substring(s1, s2);
          
          if (sel.indexOf('\n') < 0)
            sel_pre = sel_post = '`';
          else {
            sel_pre = ((s1==0) || (txt.charAt(s1-1) == '\n') ? '' : '\n') + '```' + (sel.charAt(0) == '\n' ? '' : '\n');
            sel_post =  (sel.substr(-1) == '\n' ? '' : '\n') + '```' + (txt.substr(s2,1) == '\n' ? '' : '\n');
          }
          txtNode.value = txt.substr(0, s1) + sel_pre + sel + sel_post + txt.substr(s2);
          txtNode.setSelectionRange(s1 + sel_pre.length, s1 + sel_pre.length + sel.length);
          txtNode.focus();
        });
        n.parentNode.insertBefore(a, n.nextElementSibling);

        ob.disconnect();
        return;
      }
})
ob.observe(document, {subtree:true, childList:true});