MediaWiki:Gadget-AVIM portlet.js

// Thiết lập
self.avimSettings = {
    headerText: "Gõ tiếng Việt",
    helpArticle: "Wikipedia:Gõ tiếng Việt",
    helpText: "Trợ giúp",
    helpServer: mw.config.get("wgServer"),
    methodArticleServer: "//vi.wikipedia.org",
    methods: [
        {value: 0, id: "auto", name: "Tự động", key: "F9"},
        {value: 1, id: "telex", name: "Telex", article: "Telex (kiểu gõ)#Quy ước telex"},
        {value: 2, id: "vni", name: "VNI", article: "VNI#Quy ước"},
        {value: 3, id: "viqr", name: "VIQR", article: "VIQR#Quy tắc"},
        {value: 4, id: "viqr2", name: "VIQR*"},
        {value: -1, id: "off", name: "Tắt", key: "F12"},
    ],
    options: [
        {id: "daucu", name: "Bỏ dấu kiểu cũ", command: "setDauCu", key: "F7"},
        {id: "ckspell", name: "Đúng chính tả", command: "setSpell", key: "F8"},
    ],
};

// Bản dịch
switch (mw.config.get("wgUserLanguage")) {
    case "en":
        self.avimSettings.headerText = "Vietnamese input";
        self.avimSettings.helpArticle = "Wikipedia:Gõ tiếng Việt/Tiếng Anh";
        self.avimSettings.helpText = "Help";
        self.avimSettings.methodArticleServer = "//en.wikipedia.org";
        self.avimSettings.methods[0].name = "Auto";
        self.avimSettings.methods[1].article = "Telex (IME)";
        self.avimSettings.methods[2].article = "VNI#VNI Input Method";
        self.avimSettings.methods[3].article = "Vietnamese Quoted-Readable#Syntax and usage";
        self.avimSettings.methods[5].name = "Off";
        self.avimSettings.options[0].name = "Old accents";
        self.avimSettings.options[1].name = "Enforce spelling";
        break;
    case "es":
        self.avimSettings.headerText = "Entrada en vietnamita";
        self.avimSettings.helpText = "Ayuda";
        self.avimSettings.methods[0].name = "Automática";
        self.avimSettings.methods[5].name = "Apagada";
        self.avimSettings.options[0].name = "Acentos viejos";
        self.avimSettings.options[1].name = "Ortografía correcta";
        break;
    case "fr":
        self.avimSettings.headerText = "Saisie en vietnamien";
        self.avimSettings.helpText = "Aide";
        self.avimSettings.methodArticleServer = "//fr.wikipedia.org";
        self.avimSettings.methods[0].name = "Automatique";
        self.avimSettings.methods[1].article = "vi:" + self.avimSettings.methods[1].article;
        self.avimSettings.methods[2].article = "vi:" + self.avimSettings.methods[2].article;
        self.avimSettings.methods[3].article = "Vietnamese Quoted-Readable";
        self.avimSettings.methods[5].name = "Éteint";
        self.avimSettings.options[0].name = "Vieux accents";
        self.avimSettings.options[1].name = "Correction d’orthographe";
        break;
}

$(function () {

/**
 * Cho ra URL tương đối giao thức đến trang wiki với tên được chỉ định.
 */
function articleURLFromTitle(title, server) {
    var components = title.match("^([^#]+)(?:#(.+))?");
    if (!components || !components[1]) return "";
    var lastComponent = components[1];
    if (components[2]) {
        lastComponent += "#";
        lastComponent += encodeURIComponent(components[2]).replace(/%20/g, "_")
                                                          .replace(/%/g, ".");
    }
    return server + mw.config.get("wgArticlePath").replace("$1", lastComponent);
}

/**
 * Tạo một liên kết đến trang được chỉ định và cho ra đối tượng bọc của jQuery.
 */
function linkFromArticle(title, server, text) {
    return $("<a href='" + articleURLFromTitle(title, server) + "' title='" +
             title + "'>" + text + "</a>");
}

var head_link = linkFromArticle(self.avimSettings.helpArticle,
                                self.avimSettings.helpServer,
                                self.avimSettings.headerText);
var content = $("<ul></ul>");

$.each(self.avimSettings.methods, function (i, method) {
    if (!method) return;
    
    var item = $("<li></li>");
    
    // Nút radio
    var radio = $("<input id='avim_" + method.id +
                  "' name='viet_method' type='radio' />");
    radio.click(function (evt) {
        AVIMObj.setMethod(method.value);
    });
    item.append(radio);
    
    // Nhãn
    var label = $("<label class='radio' for='avim_" + method.id + "'>" +
                  method.name + "</label>");
    item.append("&nbsp;");
    item.append(label);
    
    // Thông tin phụ
    if (method.article) {
        item.append("&nbsp;");
        item.append("<a href='" +
                       articleURLFromTitle(method.article,
                                           self.avimSettings.methodArticleServer) +
                       "' title='" + method.article + "'>(?)</a>");
    }
    if (method.key) {
        item.append("&nbsp;");
        item.append("<small>[" + method.key + "]</small>");
    }
    
    content.append(item);
});
content.append("<li><hr /></li>");
$.each(self.avimSettings.options, function (i, option) {
    if (!option) return;
    
    var item = $("<li></li>");
    
    // Hộp kiểm
    var checkbox = $("<input id='avim_" + option.id +
                     "' name='viet_method' type='checkbox' />");
    checkbox.click(function (evt) {
        AVIMObj[option.command](this);
    });
    item.append(checkbox);
    
    // Nhãn
    var label = $("<label class='radio' for='avim_" + option.id + "'>" +
                  option.name + "</label>")
    item.append("&nbsp;");
    item.append(label);
    
    // Thông tin phụ
    if (option.key) {
        item.append("&nbsp;");
        item.append("<small>[" + option.key + "]</small>");
    }
    
    content.append(item);
});

content = $("<div class='pBody'></div>").append(content);

switch (mw.config.get("skin")) {
    case "standard":    // Cổ điển
        $("#quickbar").append("<hr class='sep' />");
        var portlet = $("<div id='p-avim'></div>");
        portlet.append(head_link)
               .append(content);
        $("#quickbar").append(portlet);
        break;
    case "cologneblue": // Xanh Cologne
        var portlet = $("<div id='p-avim'></div>");
        portlet.append($("<h6></h6>").append(head_link))
               .append(content);
        $("#quickbar").append(portlet);
        break;
    case "nostalgia":   // Vọng cổ
//        content.remove("br");
//        content.find("hr").replaceWith(" | ");
        var portlet = $("<div id='p-avim'></div>");
        portlet.append($("<h5></h5>").append(head_link))
               .append(content);
        $("#footer").append(portlet);
        break;
    case "minerva":	// Minerva
    	// Đưa các điều khiển vào “trình đơn tràn”.
    	var portlet = $("<div id='p-avim' class='portlet'></div>");
        portlet.append($("<h5 class='toggle-list-item__label'></h5>").append(head_link))
               .append(content);
        var item = $("<li class='toggle-list-item'></li>").append(portlet);
        $("#p-tb").append(portlet);
        break;
    case "vector":  // Vectơ
    case "vector-2022":  // Vectơ 2022
        // Đặt liên kết vào (?) vì đề mục của hộp thu gọn không nên chuyển nguời
        // dùng ra khỏi trang.
        content.addClass("vector-menu-content");
        var portlet = $("<nav id='p-avim' class='mw-portlet mw-portlet-avim vector-menu vector-menu-portal portal vector-main-menu-group' role='navigation'></nav>");
        portlet.append($("<div id='p-avim-label' class='vector-menu-heading'></div>")
        			.append($("<span class='vector-menu-heading-label'></span>")
        				.append(head_link)))
               .append(content);
        $("#p-tb").before(portlet);
        break;
    default:    // Cá nhân, Chick, Đơn giản, Hiện đại
        var portlet = $("<div id='p-avim' class='portlet'></div>");
        portlet.append($("<h5></h5>").append(head_link))
               .append(content);
        $("#p-tb").before(portlet);
        break;
}

// Khi bấm F12, AVIMObj.keyDownHandler() cố ẩn phân tử #AVIMControl, cho nên nó
// cần phải tồn tại.
$(document.body).append("<div id='AVIMControl'></div>");

// Chắc chắn khởi tạo AVIM nếu trường hợp [[MediaWiki:Gadget-AVIM.js]] đã được
// chạy.
if (self.AVIMObj) {
    AVIMObj.setMethod(AVIMGlobalConfig.onOff ? AVIMGlobalConfig.method : -1);
    AVIMObj.setSpell(AVIMGlobalConfig.ckSpell);
    AVIMObj.setDauCu(AVIMGlobalConfig.oldAccent);
}

});
Chúng tôi bán
Bài viết liên quan
Bọt trong Usucha có quan trọng không?
Bọt trong Usucha có quan trọng không?
Trong một thời gian, trường phái trà đạo Omotesenke là trường phái trà đạo thống trị ở Nhật Bản, và usucha mà họ làm trông khá khác so với những gì bạn có thể đã quen.
Tips chỉnh ảnh đỉnh cao trên iPhone
Tips chỉnh ảnh đỉnh cao trên iPhone
Tips chỉnh ảnh đỉnh cao trên iPhone
Thai nhi phát triển như thế nào và các bà mẹ cần chú ý gì
Thai nhi phát triển như thế nào và các bà mẹ cần chú ý gì
Sau khi mang thai, các bà mẹ tương lai đều chú ý đến sự phát triển của bào thai trong bụng
4 chữ C cần nhớ khi mua kim cương
4 chữ C cần nhớ khi mua kim cương
Lưu ngay bài viết này lại để sau này đi mua kim cương cho đỡ bỡ ngỡ nha các bạn!