Star Citizen Wiki Modul:Galactapedia
Wir laden dich herzlich auf den Star Citizen Wiki Discord Server ein! Du kannst uns auch auf unserem neuen YouTube-Chanel finden!

Modul:Galactapedia

Aus Star Citizen Wiki

Diese Vorlage wird überwiegend automatisiert durch die Star Citizen Wiki API verwendet.

Sie erzeugt Infoboxen für Galactapedia Artikel.

Neue Zeilen können der Tabelle wie folgt hinzugefügt werden:

{{Galactapedia
|...
|!1-header=Dies ist eine Überschrift
|!1.1-Label=Inhalt in Reihe unter Überschrift
|!Infos=[[Menschen]] [[Sol III]]  <- Reihe mit Label "Info", Inhaltstext = Links zu Menschen und Sol III
}}

Imported Text Informationen[Bearbeiten]

Jeder durch die API importierte Artikel zeigt während der Bearbeitung folgenden Text an:

...
!!! Achtung, der folgende Text wird automatisiert verwaltet, alle Änderungen werden gelöscht. !!!
!!! Du kannst Text in einer neuen Zeile unter END-- einfügen. Dieser wird nicht gelöscht.     !!!

START-->Hier folgt der Inhalt...<!--
-->Hier stehen die Kategorien<!--
END--></div>

Durch Hinzufügen gewisser Keywords kann der importierte Text gesteuert werden, folgende Keywords werden unterstützt:

  • DISABLE-CATS--> Stoppt das Hinzufügen von Kategorien durch die API
    • Beispiel: -->Hier stehen die Kategorien -> DISABLE-CATS-->Hier stehen...
  • Textersetzungen: Wörter oder kurze Textabschnitte können durch Hinzufügen von ein oder mehrerer der folgenden Strukturen ersetzt werden:
    • (VON|NACH)
    • Beispiel: (Humans|Menschen)
    • Diese Konstrukte müssen in einer neuen Zeile vor END--> eingefügt werden
START-->Hier folgt der Inhalt...<!--
-->Hier stehen die Kategorien<!--
(Humans|Menschen)
(XIAN|Xi'an)
(Sol III|[[Sol III]]) <- Verlinkt die Seite Sol III
END-->...

Kopiervorlage[Bearbeiten]

{{Galactapedia
|title=Seitentitel
|...
}}


local Galactapedia = {}

local metatable = {}
local methodtable = {}

metatable.__index = methodtable

local objectData = mw.loadData( 'Module:Galactapedia/Data' )

-- Needed Extensions
local common = require( 'Module:Common' )


--- Creates the main title
--- @return string
function methodtable.getTitle( self )
    local title = ''

    --[[    if self.args[ 'title' ] ~= nil then
            title = self.args[ 'title' ]
        else
            title = mw.title.getCurrentTitle().subpageText
        end]]

    -- Return the title text for now
    return mw.title.getCurrentTitle().text
end


--- Entrypoint for {{#seo:}}
--- @return void
function methodtable.setSeoData( self )
    -- Call to {{#seo:}}
    mw.ext.seo.set{
        author = self.frame:preprocess( '{{SERVER}}/Benutzer:{{urlencode:{{REVISIONUSER}}|WIKI}}' ),
        section = 'Galactapedia',
        url = tostring( mw.uri.fullUrl( mw.title.getCurrentTitle().text ) ),
        title = table.concat({
            mw.title.getCurrentTitle().subpageText,
            'Galactapedia',
            self.frame:preprocess( '{{SITENAME}}' )
        }, ' - '),
        title_mode = 'replace',
        locale = 'de_DE',
        type = 'article',
    }
end

--- Sets the frame and extracts the args
--- @param frame table
function methodtable.setFrame( self, frame )
    self.frame = frame
    self.args = require( 'Module:Arguments' ).getArgs( frame )
end

--- Get the infobox for the current article
function methodtable.getInfobox( self )
    local tableData = {}

    local box = require( 'Module:Infobox' ).create( {
        bodyClass = 'floatright',
    } )

	local png, _ = mw.ustring.gsub( self.args[ 'image' ], '.jpg', '.png' )
    box:addImage( common.getImage( {
        self.args[ 'image' ],
        png
    } ), {
        [ 'rowClass' ] = 'table-image',
    } )

    box:addTitle( self:getTitle() )

    for _, key in ipairs( objectData.propertyOrder ) do
        if self.args[ key ] ~= nil then
            local data = {
                key = key,
                value = self.args[ key ]
            }

            for _, value in pairs( common.extractDataFromPrefix( key, self.args ) ) do
                if objectData.propertyContent[ value ] ~= nil then
                    data.value = objectData.propertyContent[ value ]
                else
                    data.value = value
                end
            end

            table.insert( tableData, data )

            self.args[ key ] = nil
        end
    end

    for _, data in ipairs( tableData ) do
        local key = data.key
        local value = { data.value }

        if objectData.smwMapData[ key ] ~= nil then
            if key == 'dateS' then
                self.smwData[ objectData.smwMapData[ key ] ] = mw.text.split( table.concat( value ), '-', true )
            else
                self.smwData[ objectData.smwMapData[ key ] ] = value
            end
        end

        local rowData = table.concat( value, '<br>')
        rowData = mw.text.split( rowData, ', ', true )

        box:addRow( objectData.propertyNames[ key ], table.concat( rowData, '<br>' ), nil, 'col2' )
    end

    mw.smw.set( self.smwData )

    if self.args.related ~= nil then
        box:addRow( 'Verwandte Artikel', self.args.related, nil, 'col-full' )
    end

    box:addRowsFromArgs( self.args, '!' )

    return tostring( box ) .. tostring( table.concat( self.categories ) )
end


--- Entry point for template calls
--- @return string
function Galactapedia.infoBox( frame )
    local instance = Galactapedia:new()
    instance:setFrame( frame )
    instance:setSeoData()

    return instance:getInfobox()
end

--- New Instance
--- Library entrance
function Galactapedia.new( self )
    local instance = {
        frame = nil,
        args = nil,
        categories = {},
        smwData = {
            [ 'Austritt' ]         = nil,
            [ 'Geburtsdatum' ]     = nil,
            [ 'Todesdatum' ]       = nil,
            [ 'Volk' ]             = nil,
            [ 'Hersteller' ]       = nil,
            [ 'Beruf' ]            = nil,
            [ 'Veröffentlichung' ] = nil,
            [ 'Zeitpunkt' ]        = nil,
            [ 'Gründungsdatum' ]   = nil,
            [ 'Ort' ]              = nil,
        }
    }

    setmetatable( instance, metatable )

    return instance
end

return Galactapedia
Cookies helfen uns bei der Bereitstellung dieses Wikis. Durch die Nutzung des Star Citizen Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.