Модуль:Submit an edit request

![]() | Цей модуль позначено як К:такий, що потребує захищеного статусу (90). Завершені модулі використовуються в дуже великій кількості статей, або часто використовуються як підстановки. Позаяк акти вандалізму або помилки можуть вплинути на багато сторінок і навіть незначне редагування призведе до істотного навантаження на сервери, вони підлягають захисту від редагувань. |
![]() | Цей модуль Lua використовується в системних повідомленнях. Його зміни можуть призвести до миттєвих змін у користувацькому інтерфейсі Вікіпедії. Для уникнення великомасштабних збоїв, будь-які зміни спочатку потрібно перевірити на підсторінках /пісочниці та /тестів цього модуля, або у вашій пісочниці модуля. Потім перевірені зміни можуть бути впроваджені на цій сторінці єдиним редагуванням. Будь ласка, обговорюйте будь-які зміни на сторінці обговорення перед їхнім впровадженням. |
![]() | Цей модуль залежить від наступних модулів: |
Цей модуль впроваджує шаблони {{Зробити запит на редагування}} та {{Зробити запит на редагування/посилання}}.
Використання у вікітексті
Щоб використати цей модуль з вікітексту, то ви, зазвичай, повинні використати шаблони {{Зробити запит на редагування}} та {{Зробити запит на редагування/посилання}}. Однак, модуль можна також напряму використати через #invoke. Для кнопки запиту на редагування, використайте {{#invoke:Submit an edit request|button|args}}
, а для лише посилання запиту на редагування, використайте {{#invoke:Submit an edit request|link|args}}
. Будь ласка, дивіться відповідні сторінки шаблонів щодо списку доступних параметрів.
Використання у модулях Lua
Щоб використати цей модуль з іншого модуля Lua, то спершу вам його потрібно завантажити.
local mEditRequest = require('Module:Submit an edit request')
Тоді ви можете використати функцію _button, щоб створити кнопку запиту на редагування та функцію _link, щоб створити посилання запиту на редагування.
mEditRequest._button(args) mEditRequest._link(args)
Змінна args повинна бути таблицею, що містить аргументи для передачі до модуля. Щоб подивитися різні аргументи, які можна вказати та як вони впливають на вивід модуля, будь ласка, зверніться до документації {{Зробити запит на редагування}} та {{Зробити запит на редагування/посилання}}.
Конфігурація
Цей модуль можна перекласти та налаштувати для інших вікі, відредагувавши Модуль:Submit an edit request/config.
Документація вище включена з Модуль:Submit an edit request/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
-- This module implements {{Зробити запит на редагування}}. local CONFIG_MODULE = 'Module:Submit an edit request/config' -- Load necessary modules local mRedirect = require('Module:Redirect') local cfg = mw.loadData(CONFIG_MODULE) local effectiveProtectionLevel = require('Module:Effective protection level')._main local escape = require("Module:String")._escapePattern local lang = mw.language.getContentLanguage() local p = {} local validLevels = { semi = 'semi', -- extended = 'extended', -- template = 'template', full = 'full', interface = 'interface', manual = 'manual' } local function message(key, ...) local params = {...} local msg = cfg[key] if #params < 1 then return msg else return mw.message.newRawMessage(msg):params(params):plain() end end local function validateLevel(level) return level and validLevels[level] or 'full' end local function getLevelInfo(level, field) return cfg.protectionLevels[level][field] end local function resolveRedirect(page) return mRedirect.luaMain(page) end local function isProtected(page) local action = mw.title.new(page).exists and 'edit' or 'create' return effectiveProtectionLevel(action, page) ~= '*' end function p.makeRequestUrl(level, titleObj) titleObj = titleObj or mw.title.getCurrentTitle() local basePage = titleObj.basePageTitle.fullText if cfg['main-page-content'][basePage] then return tostring(mw.uri.fullUrl(message('main-page-request-page'))) end local talkPageName = titleObj.talkPageTitle if talkPageName == nil then return tostring(mw.uri.fullUrl(message('protected-talk-page-request-page'))) end talkPageName = resolveRedirect(talkPageName.prefixedText) if isProtected(talkPageName) then return tostring(mw.uri.fullUrl(message('protected-talk-page-request-page'))) end level = validateLevel(level) if level == 'manual' then return tostring(mw.uri.fullUrl(talkPageName, { action = 'edit', section = 'new' })) end local sectionname = message( 'preload-title-text', getLevelInfo(level, 'levelText'), lang:formatDate(message('preload-title-date-format')) ) local content = mw.title.new(talkPageName):getContent() if content and content:find("== *" .. escape(sectionname) .. " *==") then local dedup = 2 while true do local newname = message("preload-title-dedup-suffix", sectionname, dedup) if not content:find("== *" .. escape(newname) .. " *==") then sectionname = newname break end dedup = dedup + 1 end end local url = mw.uri.fullUrl(talkPageName, { action = 'edit', editintro = getLevelInfo(level, 'editintro'), preload = message('preload-template'), preloadtitle = sectionname, section = 'new' }) url = tostring(url) -- Add the preload parameters. @TODO: merge this into the mw.uri.fullUrl -- query table once [[phab:T93059]] is fixed. local function encodeParam(key, val) return string.format('&%s=%s', mw.uri.encode(key), mw.uri.encode(val)) end url = url .. encodeParam('preloadparams[]', getLevelInfo(level, 'requestTemplate')) url = url .. encodeParam('preloadparams[]', titleObj.prefixedText) return url end function p._link(args) return string.format( '<span class="plainlinks">[%s %s]</span>', p.makeRequestUrl(args.type), args.display or message('default-display-value') ) end function p._button(args) return require('Module:Clickable button 2').main{ [1] = args.display or message('default-display-value'), url = p.makeRequestUrl(args.type), class = 'mw-ui-progressive' } end local function makeInvokeFunc(func, wrapper) return function (frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = {wrapper} }) return func(args) end end p.link = makeInvokeFunc(p._link, message('link-wrapper-template')) p.button = makeInvokeFunc(p._button, message('button-wrapper-template')) return p