コンテンツにスキップ

モジュール:編集フィルター編集依頼

モジュールの解説[作成]
local yesno = require('Module:Yesno')
local makeMessageBox = require('Module:Message box').main

local function red(str)
    return '<span style="color: red;">' .. str .. '</span>'
end

local function cat(name)
    return '[[Category:' .. name .. ']]'
end

local function code(str)
    return '<code style="white-space: nowrap;">' .. str .. '</code>'
end

local function small(str)
    return '<span style="font-size: smaller;">' .. str .. '</span>'
end

local function link(page, query, display)
    if display == nil then display = page end
    if query == nil or query == {} then
        return mw.ustring.format('[[%s|%s]]', page, display)
    else
        return mw.ustring.format('[%s %s]', tostring(mw.uri.fullUrl(page, query)), display)
    end
end

local function getTitles()
    local curTitle = mw.title.getCurrentTitle()
    local title = curTitle.text
    local curNs = curTitle.namespace --number
    local ns = {}
    if curNs % 2 == 0 then
        ns.main = mw.site.namespaces[curNs].name
        ns.talk = mw.site.namespaces[curNs + 1].name
    else
        ns.main = mw.site.namespaces[curNs - 1].name
        ns.talk = mw.site.namespaces[curNs].name
    end
    return {
        main = mw.title.makeTitle(ns.main, title).fullText,
        talk = mw.title.makeTitle(ns.talk, title).fullText
    }
end

local function tmbox(answered, demo)

    local params = {}
    if answered then
        params.small = 'yes'
        params.smalltext = 'こちらの編集依頼は終了しました。この依頼を再度有効化するには、引数' .. code('|answered=') ..
            'もしくは' .. code('|ans=') .. 'の値に<b>no</b>を指定してください。'
    else
        params.small = 'no'
        params.image = '[[File:Text-x-generic-highlight-red-marker-round.svg|60px]]'
        local titles = getTitles()
        local txt =
            '<b>プライバシー侵害対策フィルターの編集依頼が出されています。</b>' ..
            small('(' ..
                link(titles.main, {action = 'history'}, '履歴') .. '・' ..
                link('特別:ログ', {page = titles.main}, '記録') .. '・' ..
                link(titles.talk, {action = 'history'}, 'ノートの履歴') .. '・' ..
                link('特別:ログ', {page = titles.talk}, 'ノートの記録') .. '・' ..
                link('特別:不正利用フィルター/143', {}, '編集フィルター') ..
            ')') .. '<br>' ..
            '<p>' ..
                'このテンプレートの後には、' .. link('Wikipedia:削除の方針#B2') .. '関連の理由でフィルターに追加 (または除去) を依頼するための' ..
                '編集内容を提示してください。提示の際には差分リンク等を使用し、<b>編集対象となる文字列を依頼文に含めないでください</b>。' ..
                '除去を依頼する場合は、存続終了となった削除依頼のサブページ、または合意形成があったノートページへのリンクを必ず含めてください。' ..
            '</p>' ..
            '<p style="font-size: smaller; line-height: 1.3em;">' ..
                'フィルターの編集は' .. link('Wikipedia:編集フィルター編集者', {} , '編集フィルター編集者') .. 'が行いますが、不適切な依頼は' ..
                'それ以外の利用者も除去や終了処理ができます。本依頼を終了扱いとする場合、このテンプレートの引数に' .. code('|answered=yes') ..
                'または' .. code('|ans=yes') .. 'を追加して下さい。なお、このテンプレートはプライバシー侵害対策専用です。それ以外の用途に' ..
                '使用しないでください。' ..
            '</p>'
        if not demo then txt = txt .. cat('編集フィルター編集依頼') end
        params.text = txt
    end

    return makeMessageBox('tmbox', params)

end

local p = {}
function p.Main(frame)

    local curTitle = mw.title.getCurrentTitle()

    local demo = yesno(frame.args['demo'], false)
    if curTitle.prefixedText == 'Template:編集フィルター編集依頼' then
        demo = true
    end

    local display
    if not curTitle.isTalkPage and not demo then
        display = red('<b>エラー: このテンプレートはノートページで使用してください。</b>') ..
            cat('テンプレート呼び出しエラーのあるページ/Template:編集フィルター編集依頼')
    else
        display = tmbox(yesno(frame.args['ans'], false), demo)
    end

    return display

end
return p