Zum Inhalt springen

Modul:PropertyLink: Unterschied zwischen den Versionen

1.969 Bytes hinzugefügt ,  25. November 2019
link to URL if qualifier has one
Keine Bearbeitungszusammenfassung
(link to URL if qualifier has one)
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
function getProperty( propertyName )
function getLinkLabel(propValue, frame)
if propValue['type'] == 'wikibase-entityid' then
local isWikipedia = false
        local linkTarget = mw.wikibase.sitelink( "Q" .. propValue.value['numeric-id'] )
        if not linkTarget then
        local targetEntity = mw.wikibase.getEntity( "Q" .. propValue.value['numeric-id'] )
        if targetEntity and targetEntity['sitelinks'] then
        if targetEntity['sitelinks']['dewiki'] then
        linkTarget = string.gsub('de:' .. targetEntity['sitelinks']['dewiki']['title'], ' ', '_')
        isWikipedia = true
        elseif targetEntity['sitelinks']['enwiki'] then
        linkTarget = string.gsub(targetEntity['sitelinks']['enwiki']['title'], ' ', '_')
        isWikipedia = true
    end
end
end
        local linkTitle = mw.wikibase.label( "Q" ..propValue.value['numeric-id'] )
       
        if isWikipedia then
        template = "{{WikipediaLink|%s|%s}}"
        end
        if linkTarget and linkTitle then
        if isWikipedia then
        return frame:expandTemplate{ title = 'WikipediaLink', args = { linkTarget, linkTitle } }
        end
        return mw.ustring.format( "[[%s|%s]]", linkTarget, linkTitle )
        else
            return linkTitle
        end
    elseif propValue and propValue['type'] == 'string' then
    return propValue.value
    end
end
 
function getProperty(propertyName, frame)
     local entity = mw.wikibase.getEntityObject()
     local entity = mw.wikibase.getEntityObject()
     if not entity or not entity.claims then return end--the entity doesnt exist or have no claims
     if not entity or not entity.claims then return end--the entity doesnt exist or have no claims
Zeile 7: Zeile 41:
     local propValue = property.mainsnak and property.mainsnak.datavalue
     local propValue = property.mainsnak and property.mainsnak.datavalue
     if not propValue then return end --property doesnt exist
     if not propValue then return end --property doesnt exist
    if propValue['type'] == 'wikibase-entityid' then
 
        local linkTarget = mw.wikibase.sitelink( "Q" .. propValue.value['numeric-id'] )
local label = getLinkLabel(propValue, frame)
        local linkTitle = mw.wikibase.label( "Q" ..propValue.value['numeric-id'] )
        return linkTarget and linkTitle and mw.ustring.format( "[[%s|%s]]", linkTarget, linkTitle )
if not label == propValue then
            or linkTitle
return label
    elseif propValue and propValue['type'] == 'string' then return propValue.value end
end
if property.qualifiers and property.qualifiers["P27"] then
return mw.ustring.format( "[%s %s]", property.qualifiers["P27"][1].datavalue.value, label )
end
return label
end
end
 
function property( frame )
function property( frame )
     return getProperty(string.upper(frame.args[1]))
     return getProperty(string.upper(frame.args[1], frame), frame)
end
end
 
function getLabel( propertyName )
function getLabel( propertyName )
     local entity = mw.wikibase.getEntity()
     local entity = mw.wikibase.getEntity()
Zeile 35: Zeile 74:
     end
     end
end
end
function getLinkLabels( frame )
propertyName = frame.args[1]
    local entity = mw.wikibase.getEntityObject()
    if not entity or not entity.claims then return end--the entity doesnt exist or have no claims
    local properties = entity.claims[propertyName]
    if not properties then return end--no such property for this item
   
   
    local retVal = ''
    for propIndex in pairs(properties) do
    local property = properties[propIndex]
local propValue = property.mainsnak.datavalue
if not propValue then return '' end --property doesnt exist
local value = getLinkLabel(propValue, frame)
if retVal == '' then
retVal = value
else
retVal = retVal .. ', ' .. value
end
end
return retVal
end
-- Return the label for property, or the label of the linked entiy of that property
-- Return the label for property, or the label of the linked entiy of that property
function label( frame )
function label( frame )
     return getLabel( string.lower(frame.args[1] ))
     return getLabel(string.lower(frame.args[1]))
end
end
 
function getImageLink( propName, width)
function getImageLink( propName, width)
     local entity = mw.wikibase.getEntity()
     local entity = mw.wikibase.getEntity()
     if not entity or not entity.claims then return end --the entity doesnt exist or have no claims
     if not entity or not entity.claims then return end --the entity doesnt exist or have no claims
     local property = entity.claims[propName or "P3"]
     local property = entity.claims[propName or "P4"]
     if property then
     if property then
         local width = width or "220"
         local width = width or "220"
         return mw.ustring.format( '[[File:%s|%spx]]', property[0].mainsnak.datavalue.value, width )
         return mw.ustring.format( '[[File:%s|%spx]]', property[1].mainsnak.datavalue.value, width )
     end
     end
end
end
Zeile 53: Zeile 116:
--use this function to get associated image to be used in the article
--use this function to get associated image to be used in the article
function imageLink( frame )
function imageLink( frame )
     return getImageLink( string.lower(frame.args[1]), frame.args["width"])
     return getImageLink( string.upper(frame.args[1]), frame.args["width"])
end
end
   
   
Zeile 66: Zeile 129:
     getProperty = getProperty,
     getProperty = getProperty,
     getImageLink = getImageLink,
     getImageLink = getImageLink,
     getLabel = getLabel
     getLabel = getLabel,
    getLinkLabels = getLinkLabels,
}
}
11.008

Bearbeitungen

Cookies helfen uns bei der Bereitstellung von Android Wiki. Durch die Nutzung von Android Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.