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

Modul:Organisation

Aus Star Citizen Wiki

Diese Vorlage dient der Erstellung von Infoboxen auf den Organisations-Seiten.
Der Parameter Form entspricht den möglichen Werten der RSI Organisations-Seite. Mögliche Werte sind:

  • Unternehmen
  • Privates Militärunternehmen
  • Religion
  • Syndikat
  • Organisation

Die Parameter Ausrichtung nehmen jeweils einen der möglichen Ausrichtungswerte der RSI Organisations-Seite an. Mögliche Werte sind:

  • Kopfgeldjagd
  • Ingenieurwesen
  • Erkundung
  • Freiberuflich
  • Infiltration
  • Piraterie
  • Rohstoffe
  • Aufklärung
  • Sicherheit
  • Sozial
  • Schmuggel
  • Handel
  • Transport

Der Parameter Verpflichtung nimmt einen der möglichen Verpflichtungswerte der RSI Organisations-Seite an. Mögliche Werte sind:

  • Gelegentlich
  • Regulär
  • Hardcore

Die Parameter Rollenspiel und Exklusiv sind Wahrheitswerte. Sie nehmen nur Eingaben der Form Ja/Nein true/false etc. an. Diese Parameter geben an ob Rollenspiel betrieben wird und/oder ob nur eine exklusive Mitgliedschaft vorgesehen ist.
Der Parameter Sprache enthält die Hauptsprache der Organisation. Beispiel: Deutsch.
Der Parameter Mitgliederanzahl enthält die gesamte Anzahl an Mitgliedern der Organisation. Beispiel: 10.
Der Parameter Webseite enthält den Link zur Webseite der Organisation.
Der Parameter Spectrum ID enthält die Organisations-ID von der RSI Organisations-Seite. Beispiel: WIKI.
Der Parameter Discord enthält einen Einladungslink zu dem entsprechenden Discord-Server. Beispiel: https://discord.gg/Ab12cD
Der Parameter Sonstiges enthält alle sonstigen Informationen zu der Organisation in Stichpunkt-Form.

Wichtig: die Parameter Ausrichtung, Verpflichtung und Form nehmen jeweils die englischen und deutschen Werte an. Somit kommt für die Eingabe beim Parameter Form 'Bounty Hunting' und 'Kopfgeldjagd' immer 'Kopfgeldjagd' heraus.
Wichtig: alle Parameter sollen im Format Format und nicht format geschrieben werden.
Wichtig: diese Vorlage generiert die Infoboxen auf den Organisations-Seiten. Die Parameter dieser Vorlage sollen keinen langen Freitext enthalten. Mögliche Freitexte sollten unterhalb dieser Vorlage im Editor eingefügt werden.


Kopiervorlage[Bearbeiten]

{{Organisation
| organisation_type = 
| orientation_1 = 
| orientation_2 = 
| exclusive = 
| role_play = 
| member_count = 
| language = 
| website = 
| rsi_handle = 
| discord =
| other = 
}}

Beispiele[Bearbeiten]

{{Organisation
| organisation_type = Corporation 
| orientation_1 = Social
| orientation_2 = Trading
| obligation = Regulär
| role_play = Ja
| exclusive = Ja
| language = Deutsch
| member_count = 2
| website =
| rsi_handle = GENCO
}}

local Organisation = {}

local metatable = {}
local methodtable = {}

metatable.__index = methodtable

local yesno = require( 'Module:Yesno' )
local capiunto = require( 'Module:Infobox' )
local common = require( 'Module:Common' )
local data = mw.loadData( 'Module:Organisation/Data' )

local function getFromData( haystack, needle)
    local low = mw.ustring.lower

    for key, values in pairs( data[haystack] ) do
        if low( needle ) == low( key ) then
            return key
        else
            for _, translation in pairs( values ) do
                if low( needle ) == low( translation ) then
                    return key
                end
            end
        end
    end

    error( needle .. ' not found in ' .. haystack .. ' Data!', 0 )
end

function methodtable.addLogo( self )
    local image = common.getImage( {
        'Organisation ' .. mw.title.getCurrentTitle().subpageText .. '_Logo.png',
        'Organisation ' .. mw.title.getCurrentTitle().subpageText .. '_Logo.jpg',
    } )

    if image ~= false then
        self.box:addImage( image, {
            [ 'alternativtext' ] = 'Logo ' .. mw.title.getCurrentTitle().subpageText,
            'rahmenlos',
            '350px'
        } )
    else
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlendem Logo]]' )
    end
end

function methodtable.addType( self )
    if self.args.organisation_type then
        local type = getFromData( 'types', self.args.organisation_type )

        if type then
            self.box:addRow( 'Form', type, nil, 'col2' )
            table.insert( self.categories, '[[Kategorie:Organisationsform (' .. type .. ')]]' )
        end
    else
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlender Organisationsform]]' )
    end
end

function methodtable.addOrientation( self )
    local orientations = {}

    if self.args.orientation_1 == nil and self.args.orientation_2 == nil then
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlender Ausrichtung]]' )

        return nil
    end

    if self.args.orientation_1 then
        local orientation = getFromData( 'orientations', self.args.orientation_1 )

        if orientation then
            table.insert( self.categories, '[[Kategorie:Organisationsausrichtung (' .. orientation .. ')]]' )
            table.insert( orientations, '[[:Kategorie:Organisationsausrichtung (' .. orientation .. ')|' .. orientation .. ']]' )
        end
    end

    if self.args.orientation_2 then
        local orientation = getFromData( 'orientations', self.args.orientation_2 )

        if orientation then
            table.insert( self.categories, '[[Kategorie:Organisationsausrichtung (' .. orientation .. ')]]' )
            table.insert( orientations, '[[:Kategorie:Organisationsausrichtung (' .. orientation .. ')|' .. orientation .. ']]' )
        end
    end

    self.box:addRow( 'Ausrichtung', table.concat( orientations, ', ' ), nil, 'col2' )
end

function methodtable.addMemberCount( self )
    if self.args.member_count then
        self.box:addRow( 'Mitgliederanzahl', self.args.member_count, nil, 'col2' )
    else
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlender Mitgliederanzahl]]' )
    end
end

function methodtable.addObligation( self )
    if self.args.obligation then
        local obligation = getFromData( 'obligations', self.args.obligation )

        if obligation then
            self.box:addRow( 'Verpflichtung', obligation, nil, 'col2' )
            table.insert( self.categories, '[[Kategorie:Organisationsverpflichtung (' .. obligation .. ')]]' )
        end
    else
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlender Verpflichtung]]' )
    end
end

function methodtable.addRolePlay( self )
    if self.args.role_play then
        local string = 'Nein'

        if yesno( self.args.role_play ) then
            string = 'Ja'
            table.insert( self.categories, '[[Kategorie:Organisation (Rollenspiel)]]' )
        end

        self.box:addRow( 'Rollenspiel', string, nil, 'col2' )
    else
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlender Rollenspielangabe]]' )
    end
end

function methodtable.addExclusiveMembership( self )
    if self.args.exclusive then
        local string = 'Nein'

        if yesno( self.args.exclusive ) then
            string = 'Ja'
            table.insert( self.categories, '[[Kategorie:Organisation (Exklusive Mitgliedschaft)]]' )
        end

        self.box:addRow( 'Exklusive Mitgliedschaft', string, nil, 'col2' )
    else
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlender Exklusivitätsangabe]]' )
    end
end

function methodtable.addLanguage( self )
    if self.args.language then
        self.box:addRow( 'Sprache', self.args.language, nil, 'col2' )
    else
        table.insert( self.categories, '[[Kategorie:Organisation mit fehlender Amtssprache]]' )
    end
end

function methodtable.addWebsite( self )
    if self.args.website then
        if string.match( self.args.website, 'http' ) == nil then
            error( 'Webseite scheint kein valider Link zu sein', 0 )

            return nil
        end

        self.box:addRow( 'Webseite', '[' .. self.args.website .. ' ' .. mw.title.getCurrentTitle().subpageText .. ']', nil, 'col2' )

        mw.smw.set({
            Webseite = self.args.website,
        })
    end
end

function methodtable.addRSI( self )
    if self.args.rsi_handle then
        if string.match( self.args.rsi_handle, 'http' ) then
            error( 'Im Feld Spectrum ID keinen Link angeben', 0 )
        else
            self.box:addRow( 'RSI', '[https://robertsspaceindustries.com/orgs/' .. string.upper( self.args.rsi_handle ) .. ' ' .. string.upper( self.args.rsi_handle ) .. ' auf RSI]', nil, 'col2' )
        end
    end
end

function methodtable.addTeamspeak( self )
    if self.args.teamspeak then
        if string.match( self.args.teamspeak, 'http' ) then
            error( 'Teamspeak Adresse scheint nicht valide zu sein', 0 )
        else
            self.box:addRow( 'Teamspeak', '[ts3server://' .. self.args.teamspeak .. ' ' .. self.args.teamspeak .. ']', nil, 'col2' )
        end
    end
end

function methodtable.addDiscord( self )
    if self.args.discord then
        if not string.match( self.args.discord,'discord.gg' ) then
            error( 'Discord Einladungslink scheint nicht valide zu sein', 0 )
        else
            self.box:addRow( 'Discord', '[' .. self.args.discord .. ' ' .. mw.title.getCurrentTitle().subpageText .. ']', nil, 'col2' )
        end
    end
end

function methodtable.addGuilded( self )
    if self.args.guilded then
        if not string.match( self.args.guilded,'guilded.gg' ) then
            error( 'Guilded Link scheint nicht valide zu sein', 0 )
        else
            self.box:addRow( 'Guilded', '[' .. self.args.guilded .. ' ' .. mw.title.getCurrentTitle().subpageText .. ']', nil, 'col2' )
        end
    end
end

function methodtable.addOther( self )
    if self.args.other then
        self.box:addRow( 'Sonstiges', self.args.other, nil, 'col2' )
    end
end

function methodtable.infoBox( self )
    local config = {
        bodyClass = 'floatright',
    }

    if self.args.slogan ~= nil then
        config.top = self.args.slogan
    end

    self.box = capiunto.create( config )

    self:addLogo()
    self.box:addTitle( mw.title.getCurrentTitle().subpageText )
    self:addType()
    self:addOrientation()
    self:addMemberCount()
    self:addObligation()
    self:addRolePlay()
    self:addExclusiveMembership()
    self:addLanguage()
    self:addWebsite()
    self:addRSI()
    self:addTeamspeak()
    self:addDiscord()
    self:addGuilded()
    self:addOther()

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

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

function Organisation.infobox( frame )
    local instance = Organisation:new()
    instance.args = require( 'Module:Arguments' ).getArgs( frame )

    return instance:infoBox()
end

--- New Instance
function Organisation.new( self )
    local instance = {
        categories = {
            '[[Kategorie:Organisation]]',
        },
        box = nil,
        args = nil,
    }

    setmetatable( instance, metatable )

    return instance
end

return Organisation
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.