Comments Editor (DW)

HTML helper for comments on dreamwidth.org

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name           Comments Editor (DW)
// @description    HTML helper for comments on dreamwidth.org
// @match          *://*.dreamwidth.org/*
// @require        https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// @grant          GM_addStyle
// @version        1.3
// @namespace https://greasyfork.org/users/150898
// ==/UserScript==

$.noConflict();
jQuery(document).ready(function($) {

    $("textarea").each(function(id, obj) {
        if ($(obj).attr("name") == "body") {
            var outfield = "<div id='comment-preview'><div id='output'></div></div>";


            if ($(obj).hasClass("b-updateform-textarea")) {
                if ($(obj).hasClass("b-spelling-textarea")) {
                    $(".b-spelling").after(outfield);
                    add_buttons($(".b-updateform-buttons-firstsection"), "short");
                } else {
                    $(obj).after(outfield); //
                    add_buttons(obj, "full");
                }
            } else {
                $(obj).after(outfield); //
                add_buttons(obj, "full");
            }
            $(obj).keydown(update).keyup(update).mousedown(update).mouseup(update).mousemove(update);
        }

    })



    function add_buttons(obj, type) {
        var enable_buttons = true;

        $("form").each(function(id, obj) {
            if ($(obj).attr("name") == "supportForm") {
                enable_buttons = false;
            }
        });

        var elem_tag = "span"; // button
        var str = "<div id='mybuttons' class='buttonsSet'>";
        str += "<button place='&lt;b&gt;^^&lt;/b&gt;'><b>B</b></button> ";
        str += "<button place='&lt;i&gt;^^&lt;/i&gt;'><i>I</i></button> ";
        str += "<button place='&lt;s&gt;^^&lt;/s&gt;'><s>&nbsp;S&nbsp;</s></button> "
        str += "<button place='&lt;code&gt;^^&lt;/code&gt;'>&nbsp;&lt;code&gt;&nbsp;</button> "
        str += "<button place='&lt;i&gt;&gt; ^^&lt;/i&gt;'>quote</button> ";
        str += "<button place='&lt;img src=\"^^\"&gt;'>img</button> ";
        str += "<button place='&lt;a href=\"\"&gt;^^&lt;/a&gt;'><u>link</u></button> ";
        str += "</div>";

        var str_short = "<li class='b-updateform-buttons-item custom-item'><span place='<i><font color=#336699>> ^^</font></i>'><b style='font-size: 13px; cursor: pointer'>Quote</b></span> </li>";
        str_short += "<li class='b-updateform-buttons-item custom-item'><span place='<lj-spoiler>^^</lj-spoiler>'><b style='font-size: 13px; cursor: pointer'>[Spoiler]</b></span></li>";

        if (enable_buttons == true) {
            if (type == "short") {
                str = str_short;
                $(obj).append(str);
            } else {
                $(obj).before(str);
            }
        }

        $('.custom-item span,.buttonsSet button').click(function() { ///.buttonsSet button,
            test_replace($(this).attr('place'));
            return false;
        });
    }


    function test_replace(patt) {
        var elem = $("textarea#body,textarea#commenttext,textarea.textbox");
        var elem_value = $(elem).val();
        var text_lenght = $(elem)[0].selectionEnd - $(elem)[0].selectionStart;

        var text_start = elem_value.substr(0, $(elem)[0].selectionStart);
        var text_end = elem_value.substr($(elem)[0].selectionEnd, $(elem).val().length);

        var text_src = elem_value.substr($(elem)[0].selectionStart, text_lenght);
        var text_replace = patt.replace("^^", text_src);
        var text_result = text_start + text_replace + text_end;

        $(elem).val(text_result);
        return false;
    }
});