Thảo luận Mô đun:Redirect
Thêm đề tài@Mxn và Trần Nguyễn Minh Huy: Chúng ta cần nâng cấp mô đun này. Mô đun hiện tại đang gây ra lỗi kịch bản cho gần 9.000 trang nhúng bản mẫu {{trang định hướng}} (hàm isRedirect không tồn tại). Tran Xuan Hoa (thảo luận) 23:09, ngày 3 tháng 2 năm 2017 (UTC)
Yêu cầu sửa trang bị khóa ngày 28 tháng 11 năm 2022
| Có yêu cầu muốn sửa mô đun khóa hoàn toàn Mô đun:Redirect. (sửa · lịch sử · cuối · liên kết · chỗ thử · sửa chỗ thử · lịch sử chỗ thử · thay đổi chỗ thử cuối cùng · khác biệt chỗ thử · số lần nhúng · nhật trình khóa) Vui lòng trình bày thật rõ ràng, cụ thể và dễ hiểu để cả những người chưa quen vấn đề cũng có thể thực hiện sửa đổi được yêu cầu. Chỉ dùng bản mẫu này để yêu cầu tại trang hẳn để thực hiện các sửa đổi không gây tranh cãi hoặc đã đạt được đồng thuận. Nếu sửa đổi đó có thể gây tranh cãi, hãy thảo luận trước tại trang thảo luận của trang bị khóa rồi mới sử dụng bản mẫu này. Bạn cũng có thể yêu cầu khóa hay mở khóa. Sau khi thực hiện hoặc từ chối, hãy thêm tham số |
-- This module provides functions for getting the target of a redirect page.local p = {}-- Gets a mw.title object, using pcall to avoid generating script errors if we-- are over the expensive function count limit (among other possible causes).local function getTitle(...) local success, titleObj = pcall(mw.title.new, ...) if success then return titleObj else return nil endend-- Gets the name of a page that a redirect leads to, or nil if it isn't a-- redirect.function p.getTargetFromText(text) local target = string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]" ) or string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" ) return target and mw.uri.decode(target, 'PATH')end-- Gets the target of a redirect. If the page specified is not a redirect,-- returns nil.function p.getTarget(page, fulltext) -- Get the title object. Both page names and title objects are allowed -- as input. local titleObj if type(page) == 'string' or type(page) == 'number' then titleObj = getTitle(page) elseif type(page) == 'table' and type(page.getContent) == 'function' then titleObj = page else error(string.format( "bad argument #1 to 'getTarget'" .. " (string, number, or title object expected, got %s)", type(page) ), 2) end if not titleObj then return nil end local targetTitle = titleObj.redirectTarget if targetTitle then if fulltext then return targetTitle.fullText else return targetTitle.prefixedText end else return nil endend--[[-- Given a single page name determines what page it redirects to and returns the-- target page name, or the passed page name when not a redirect. The passed-- page name can be given as plain text or as a page link.---- Returns page name as plain text, or when the bracket parameter is given, as a-- page link. Returns an error message when page does not exist or the redirect-- target cannot be determined for some reason.--]]function p.luaMain(rname, bracket, fulltext) if type(rname) ~= "string" or not rname:find("%S") then return nil end bracket = bracket and "[[%s]]" or "%s" rname = rname:match("%[%[(.+)%]%]") or rname local target = p.getTarget(rname, fulltext) local ret = target or rname ret = getTitle(ret) if ret then if fulltext then ret = ret.fullText else ret = ret.prefixedText end return bracket:format(ret) else return nil endend-- Provides access to the luaMain function from wikitext.function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) return p.luaMain(args[1], args.bracket, args.fulltext) or ''end-- Returns true if the specified page is a redirect, and false otherwise.function p.luaIsRedirect(page) local titleObj = getTitle(page) if not titleObj then return false end if titleObj.isRedirect then return true else return false endend-- Provides access to the luaIsRedirect function from wikitext, returning 'yes'-- if the specified page is a redirect, and the blank string otherwise.function p.isRedirect(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) if p.luaIsRedirect(args[1]) then return 'yes' else return '' endendreturn pCập nhật module bên enwiki. Thời Gian Không tồn tại! 06:00, ngày 28 tháng 11 năm 2022 (UTC)
Câu hỏi: @Irha1412: Bạn cần cập nhật mô đun này nữa không? Bạn đã thử trong Mô đun:Redirect/sandbox chưa? Anster (thảo luận) 09:17, ngày 31 tháng 5 năm 2023 (UTC)