BBCodes for MAL

Add BBCode to MAL Forum posts

Verzia zo dňa 27.02.2015. Pozri najnovšiu verziu.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name           BBCodes for MAL
// @namespace      No Page
// @description    Add BBCode to MAL Forum posts
// @author         Al_eXs
// @include        *myanimelist.net/forum/?topicid=*
// @include        *myanimelist.net/forum/?action=message&msgid=*
// @include        *myanimelist.net/forum/?action=message&topic_id=*
// @include        *myanimelist.net/mymessages.php?go=send*
// @include        *myanimelist.net/editprofile.php*
// @include        *myanimelist.net/myblog.php*
// @include        *myanimelist.net/forum/?action=post*
// @include        *myanimelist.net/forum/index.php?action=post&boardid=*
// @include        *myanimelist.net/clubs.php?cid=*
// @include        *myanimelist.net/profile/*
// @include        *myanimelist.net/modules.php?go=report&type=forummessage&id=*
// @include        *myanimelist.net/mymessages.php?toname=*
// @include        *myanimelist.net/comtocom.php?id1=*
// @exclude        *myanimelist.net/editprofile.php?go=stylepref&do=cssadv&id=*
// @version        1.0.9
// ==/UserScript==

function addtag(obj, tag) {

    beforeText = obj.value.substring(0, obj.selectionStart);
    selectedText = obj.value.substring(obj.selectionStart, obj.selectionEnd);
    afterText = obj.value.substring(obj.selectionEnd, obj.value.length);

    switch(tag) {
        
        case "bold":
            tagOpen = "[b]";
            tagClose = "[/b]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "strike":
            tagOpen = "[s]";
            tagClose = "[/s]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "italic":
            tagOpen = "[i]";
            tagClose = "[/i]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "underline":
            tagOpen = "[u]";
            tagClose = "[/u]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "code":
            tagOpen = "[code]";
            tagClose = "[/code]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "center":
            tagOpen = "[center]";
            tagClose = "[/center]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "right":
            tagOpen = "[right]";
            tagClose = "[/right]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "spoiler":
            tagOpen = "[spoiler]";
            tagClose = "[/spoiler]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "url":
            desc = prompt("Enter URL description", "");
            
            if (desc == null) {
                break;
            }

            tagOpen = "[url=";
            tagClose = "]" + desc + "[/url]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "url=":
            url = prompt("Enter URL", "");
            
            if (url == null) {
                break;
            }

            tagOpen = "[url=" + url + "]";
            tagClose = "[/url]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "image":
            imgURL = prompt("Enter image URL", "");

            if (imgURL == null) {
                break;
            }

            tagOpen = "[img]";
            tagClose = "[/img]";

            newText = beforeText + tagOpen + imgURL + tagClose + afterText;
            break;
            
        case "size":
            txtSize = document.getElementById("Size");
            
            if (txtSize == "Size") {
                break;
            }

            if (txtSize.value == "enter") {
                txtSizeName = prompt("Enter the size (from 0 to 999, 100 is default)", "");
            } else {
                txtSizeName = txtSize.value;
            }

            tagOpen = "[size=" + String(txtSizeName) + "]";
            tagClose = "[/size]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "profile":
            profile = prompt("Enter profile name", "");
            
            if (profile == null) {
                break;
            }

            tagOpen = "[profile=" + profile + "]";
            tagClose = "[/profile]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;
            
        case "youtube":
            yt = prompt("Enter complete youtube url", "");
            
            if (yt == null) {
                break;
            }
 
            yt0 = yt.replace("https://","http://");
            yt1 = yt0.replace("http://www.youtube.com/watch?v=","");
            yt2 = yt1.substring(0,11);

            tagOpen = "[yt]";
            tagClose = "[/yt]";

            newText = beforeText + tagOpen + yt2 + tagClose + afterText;
            break;
            
        case "colour":
            colour = document.getElementById("Colour");

            if (colour == "Select") {
                break;
            }

            if (colour.value == "enter") {
                colourName = prompt("Enter the colour name or hex value (e.g. #abc123)", "");
            } else {
                colourName = colour.value;
            }

            tagOpen = "[color=" + String(colourName) + "]";
            tagClose = "[/color]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "quote=":
            quote = prompt("Enter quoted person name", "");
            
            if (quote == null) {
                break;
            }

            tagOpen = "[quote=" + quote + "]";
            tagClose = "[/quote]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "quote":
            tagOpen = "[quote]";
            tagClose = "[/quote]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "list":
            tagOpen = "[list][*]";
            tagClose = "[/list]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "list=1":
            tagOpen = "[list=1][*]";
            tagClose = "[/list]";

            newText = beforeText + tagOpen + selectedText + tagClose + afterText;
            break;

        case "[*]":
            tagOpen = "[*]";

            newText = beforeText + tagOpen + selectedText + afterText;
            break;
    }

    obj.value = newText;
}

function xpath(query, object) {
	if(!object) var object = document;
	return document.evaluate(query, object, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
}

function getXpathRes(){
	var path = xpath("//textarea[@class='textarea']");
	if(path.snapshotLength == 0) path = xpath("//textarea[@class='inputtext']");
	return (path.snapshotLength > 0) ?  path : false;
}

var xpathRes = getXpathRes();

if(xpathRes){
	var div1 = document.createElement("div");
	div1.style="margin: 0px; margin-top:10px; margin-bottom:5px";
	div1.align ="Left";
	div1.id = "myBBcode";
	div1.innerHTML = " ";
	div1.style.display = "block";

	xpathRes.snapshotItem(0).parentNode.insertBefore(div1, xpathRes.snapshotItem(0));

	var post = document.createElement("input");
	post.type = "button";
	post.value = "Bold";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'bold');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Italic";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'italic');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Strike";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'strike');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Underline";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'underline');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Code";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'code');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Center";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'center');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Right";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'right');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "URL";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'url');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "URL=";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'url=');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Spoiler";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'spoiler');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "IMG";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'image');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Youtube";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'youtube');}, false);
	div1.appendChild(post);
    var post = document.createElement("BROKEN");
	post.type = "button";
	post.value = "Profile";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'profile');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Quote=";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'quote=');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "Quote";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'quote');}, false);
	div1.appendChild(post);
    var postSize = document.createElement("select");
	postSize.id = "Size";
	//postSize.value = "Size";
        var opt = document.createElement("option");
        opt.value = "Size";
        opt.appendChild(document.createTextNode('Size'));
        postSize.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "50";
        opt.appendChild(document.createTextNode('Small'));
        postSize.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "100";
        opt.appendChild(document.createTextNode('Normal'));
        postSize.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "300";
        opt.appendChild(document.createTextNode('Medium'));
        postSize.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "600";
        opt.appendChild(document.createTextNode('Big'));
        postSize.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "900";
        opt.appendChild(document.createTextNode('Ultra Big'));
        postSize.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "enter";
        opt.appendChild(document.createTextNode('Enter size'));
        postSize.appendChild(opt);
    postSize.addEventListener('change', function() {addtag(document.getElementsByTagName("textarea")[0],'size'); postSize.value = 'Size'}, false);
	div1.appendChild(postSize);
    var postColour = document.createElement("select");
	postColour.id = "Colour";
	//postColour.value = "Colour";
        var opt = document.createElement("option");
        opt.value = "Select";
        opt.appendChild(document.createTextNode('Select Colour'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "grey";
        opt.appendChild(document.createTextNode('Grey'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "blue";
        opt.appendChild(document.createTextNode('Blue'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "red";
        opt.appendChild(document.createTextNode('Red'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "green";
        opt.appendChild(document.createTextNode('Green'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "yellow";
        opt.appendChild(document.createTextNode('Yellow'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "pink";
        opt.appendChild(document.createTextNode('Pink'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "navy";
        opt.appendChild(document.createTextNode('Navy'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "white";
        opt.appendChild(document.createTextNode('White'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "black";
        opt.appendChild(document.createTextNode('Black'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "orange";
        opt.appendChild(document.createTextNode('Orange'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "purple";
        opt.appendChild(document.createTextNode('Purple'));
        postColour.appendChild(opt);
        var opt = document.createElement("option");
        opt.value = "enter";
        opt.appendChild(document.createTextNode('Enter colour'));
        postColour.appendChild(opt);
	postColour.addEventListener('change', function() {addtag(document.getElementsByTagName("textarea")[0],'colour'); postColour.value = 'Select'}, false);
	div1.appendChild(postColour);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "list";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'list');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "list=1";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'list=1');}, false);
	div1.appendChild(post);
    var post = document.createElement("input");
	post.type = "button";
	post.value = "[*]";
	post.addEventListener('click', function() {addtag(document.getElementsByTagName("textarea")[0],'[*]');}, false);
	div1.appendChild(post);
}