Module:BIC: Difference between revisions

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Content deleted Content added
No edit summary
No edit summary
Line 110: Line 110:
table.insert(ret, idurl)
table.insert(ret, idurl)
else
else
table.insert(ret, '[http://toolserver.org/~platonides/wlm/ids.php?bic=')
table.insert(ret, '[http://.//.?=')
table.insert(ret, idEncode .. '&userlang=' .. args.lang1)
table.insert(ret, idEncode .. '&userlang=' .. args.lang1)
end
end
else
else
table.insert(ret, '[http://toolserver.org/~platonides/wlm/ids.php?bic=')
table.insert(ret, '[http://.//.?=')
table.insert(ret, idEncode .. '&userlang=' .. args.lang1)
table.insert(ret, idEncode .. '&userlang=' .. args.lang1)
end
end
table.insert(ret, ' ' .. id .. ']')
table.insert(ret, ' ' .. id .. ']')
else
else
table.insert(ret, "''" .. i18nLang.text5 .. "''")
table.insert(ret, "''" .. i18nLang.text5 .. "''")

Revision as of 22:37, 5 September 2014

Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

Module for support of Template:BIC and previous Template:Bien Catalogado now merged. That is for monuments of Spanish heritage registered as Bien de Interés Cultural (BIC) and other buildings registered at regional level. See documentation of the template for more information.

Messages can be translated at Module:BIC/lang.

This module generates missing optional parameters based on patterns of the identifier of the object:

if id begins with defaults to
RI-52 type=JH
RI-53 type=CH
RI-54 type=SH
RI-55 type=ZA
7-INM type=BC, link=ar, idurl=id
IPA- type=BC, link=ct, idurl=id
IPAPC- type=ZA, link=ct
08019/ type=BC, link=ct, idurl=id
03. type=BC, link=vc
12. type=BC, link=vc
46. type=BC, link=vc

otherwise assumes type=M and links to http://toolserver.org/~platonides/wlm/ids.php

Code

-- Support for Template:BIC

local i18n = require("Module:BIC/lang")
local this = {}

function this.templateBIC(frame)
    -- Get language
    local args = frame.args
    local lang = "en" -- default
    if i18n[args.lang1] then
        lang = args.lang1
    elseif i18n[args.lang2] then
        lang = args.lang2 -- first fallback
    elseif i18n[args.lang3] then
        lang = args.lang3 -- second fallback
    end
    local i18nLang = i18n[lang]
    
    -- Get template parameters
    local pargs = frame:getParent().args
    local id = pargs[1] or ""
    local db = mw.ustring.lower(pargs.link or "")
    local idurl = pargs.idurl or ""
    local type = mw.ustring.upper(pargs.type or "")
    
    -- Get defaults based on id patterns
    if id ~= "" then
        if db == "" then
            db = this.getDb(id)
        end
        if idurl == "" then
            idurl = this.getIdurl(id)
        end
        if type == "" then
            type = this.getType(id)
        end
    end

    local namespace = mw.title.getCurrentTitle().nsText
    
    -- Layout
    local ret = {}
    table.insert(ret, '{| cellspacing="4" ')
    table.insert(ret, 'style="text-align:left; color:#000; background:#F9FFF0;')
    table.insert(ret, ' border:1px solid #BBA22C; margin:1px;"\n')
    table.insert(ret, '| style="width:32px; height:32px;" ')
    table.insert(ret, '| [[File:Icone chateau fort.svg|30px|link=]]\n')
    table.insert(ret, '| style="font-size:9pt; padding:1pt; line-height:1.1em;" |')
    -- from Template:Lang
    table.insert(ret, '<p><span lang="' .. lang .. '" xml:lang="' .. lang .. '" class="description ' .. lang .. '">')
    if namespace == "Category" then
        table.insert(ret, i18nLang.text1Cat)
    else
        table.insert(ret, i18nLang.text1File)
    end
    if type == "CH" then
        table.insert(ret, i18nLang.text2CH)
    elseif type == "JH" then
        table.insert(ret, i18nLang.text2JH)
    elseif type == "SH" then
        table.insert(ret, i18nLang.text2SH)
    elseif type == "ZA" then
        table.insert(ret, i18nLang.text2ZA)
    elseif type == "BC" then
        table.insert(ret, i18nLang.text2BC)
    else
        table.insert(ret, i18nLang.text2M)
    end
    if type == "BC" then
        if db == "ar" then
            table.insert(ret, i18nLang.text3BCar)
        elseif db == "ct" then
            table.insert(ret, i18nLang.text3BCct)
        elseif db == "vc" then
            table.insert(ret, i18nLang.text3BCvc)
        else
            table.insert(ret, i18nLang.text3BC)
        end
    else
        if db == "ct" then
            table.insert(ret, i18nLang.text3BICct)
        elseif db == "vc" then
            table.insert(ret, i18nLang.text3BICvc)
        else
            table.insert(ret, i18nLang.text3BIC)
        end
    end
    table.insert(ret, i18nLang.text4)
    table.insert(ret, '</span><span style="white-space:nowrap;">')
    if id ~= "" then
        local idEncode = mw.uri.encode(id, PATH)
        if idurl ~= "" then
            if db == "ar" then
                table.insert(ret, '[http://www.sipca.es/censo/' .. idurl .. '/.html')
            elseif db == "ct" then
                if mw.ustring.find(idurl, "^bcn/") then
                    table.insert(ret, '[http://w10.bcn.es/APPS/cat_patri/editElement.do?reqCode=inspect&id.identificador=')
                    table.insert(ret, mw.ustring.sub(idurl, 8))
                    table.insert(ret, '&id.districte=' .. mw.ustring.sub(idurl, 5, 6))
                else
                    table.insert(ret, '[http://cultura.gencat.cat/invarquit/Fitxa.asp?idregistre=')
                    table.insert(ret, idurl)
                end
            elseif db == "vc" then
                if type == "BC" then
                    table.insert(ret, '[http://www.cult.gva.es/dgpa/brl/Detalles_brl.asp?IdInmueble=')
                else
                    table.insert(ret, '[http://www.cult.gva.es/dgpa/bics/Detalles_bics.asp?IdInmueble=')
                end
                table.insert(ret, idurl)
            else
                table.insert(ret, '[http://www.mecd.gob.es/bienes/cargarFiltroBienesInmuebles.do?layout=bienesInmuebles&cache=init&language=')
                table.insert(ret, idEncode .. '&userlang=' .. args.lang1)
            end
        else
            table.insert(ret, '[http://www.mecd.gob.es/bienes/cargarFiltroBienesInmuebles.do?layout=bienesInmuebles&cache=init&language=')
            table.insert(ret, idEncode .. '&userlang=' .. args.lang1)
        end
        -- table.insert(ret, ' ' .. id .. ']') oculto mientras no se arregle la base de datos
    else
        table.insert(ret, "''" .. i18nLang.text5 .. "''")
    end
    table.insert(ret, '.</span></p>\n|}')
    
    return table.concat(ret)
end

function this.getDb(id)
    local dbDefault = ""
    if mw.ustring.find(id, "^[17]%-INM") then
        dbDefault = "ar"
    elseif mw.ustring.find(id, "^08019/") or mw.ustring.find(id, "^IPA") then
        dbDefault = "ct"
    elseif mw.ustring.find(id, "^PH%-874") then
        dbDefault = "vc"
    elseif mw.ustring.find(id, "^[014][236]%.") then -- strictly 03. 12. 46.
        dbDefault = "vc"
    end
    return dbDefault
end

function this.getIdurl(id)
    local idurlDefault = ""
    if mw.ustring.find(id, "^IPA%-") then
        idurlDefault = mw.ustring.sub(id, 5)
    elseif mw.ustring.find(id, "^[17]%-INM") then
        idurlDefault = id
    end
    return idurlDefault
end

function this.getType(id)
    local typeDefault = "M"
    if mw.ustring.find(id, "^RI%-52") then
        typeDefault = "JH"
    elseif mw.ustring.find(id, "^RI%-53") then
        typeDefault = "CH"
    elseif mw.ustring.find(id, "^RI%-54") then
        typeDefault = "SH"
    elseif mw.ustring.find(id, "^RI%-55") or mw.ustring.find(id, "^IPAPC%-") then
        typeDefault = "ZA"
    elseif mw.ustring.find(id, "^PH%-874") then
        typeDefault = "ZA"
    elseif mw.ustring.find(id, "^08019/") or mw.ustring.find(id, "^IPA%-") then
        typeDefault = "BC"
    elseif mw.ustring.find(id, "^[014][236]%.") or mw.ustring.find(id, "^7%-INM") then
        typeDefault = "BC"
    end
    return typeDefault
end

return this