MediaWiki:Gadget-AVIM portlet.js

Bách khoa toàn thư mở Wikipedia

Đây là phiên bản hiện hành của trang này do Mxn (thảo luận | đóng góp) sửa đổi vào lúc 22:02, ngày 17 tháng 2 năm 2023 (Sửa mẹo công cụ của các liên kết trợ giúp bằng cách định rõ máy chủ). Địa chỉ URL hiện tại là một liên kết vĩnh viễn đến phiên bản này của trang.

(khác) ← Phiên bản cũ | Phiên bản mới nhất (khác) | Phiên bản mới → (khác)

Chú ý: Sau khi lưu thay đổi trang, bạn phải xóa bộ nhớ đệm của trình duyệt để nhìn thấy các thay đổi. Google Chrome, Firefox, Internet ExplorerSafari: Giữ phím ⇧ Shift và nhấn nút Reload/Tải lại trên thanh công cụ của trình duyệt. Để biết chi tiết và hướng dẫn cho các trình duyệt khác, xem Trợ giúp:Xóa bộ nhớ đệm.

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

});