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

Versione datata 04/12/2014. Vedi la nuova versione l'ultima versione.

// ==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});