Modul:Participation: Unterschied zwischen den Versionen
This is [[MediaWiki:Tagline]]. Set to <code>display:none</code> by chameleon skin.
Tobi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Tobi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 19: | Zeile 19: | ||
config.validNamespace | config.validNamespace | ||
) then | ) then | ||
return false, | return false, 'Diese Vorlage darf nur im Namensraum \'\'' | ||
.. config.validNamespace | .. config.validNamespace | ||
.. '\'\' verwendet werden!' | .. '\'\' verwendet werden!' | ||
end | end | ||
if not assertTargetIsValid( | if not assertTargetIsValid( | ||
Zeile 28: | Zeile 27: | ||
config.validTargetPageCategory | config.validTargetPageCategory | ||
) then | ) then | ||
return false, 'Die Seite mit dem Namen \'\'' | |||
.. getCurrentTitle().text | |||
.. '\'\' existiert nicht oder ist keine Figur!' | |||
return false, | |||
.. getCurrentTitle().text | |||
.. '\'\' existiert nicht oder ist keine Figur!' | |||
end | end | ||
return true | return true | ||
Zeile 54: | Zeile 48: | ||
local res = smw.ask ( query ) | local res = smw.ask ( query ) | ||
if not res[1] or not res[1].pageCategories then | if not res[1] or not res[1].pageCategories then | ||
return false | return false | ||
end | end | ||
return tt.inTable( res[1].pageCategories, 'Kategorie:' .. validCategory | return tt.inTable( res[1].pageCategories, 'Kategorie:' .. validCategory ) | ||
end | end | ||
Zeile 88: | Zeile 82: | ||
end | end | ||
local playData = {} | local playData = {} | ||
for k, row in res do | for k, row in pairs(res) do | ||
if row and row.number and row.title then | if row and row.number and row.title then | ||
playData[row.number] = row | playData[row.number] = row | ||
Zeile 106: | Zeile 100: | ||
local assesmentResult, assesmentMessage = assesPrerequisites() | local assesmentResult, assesmentMessage = assesPrerequisites() | ||
if not assesmentResult then | if not assesmentResult then | ||
return assesmentMessage | return alertBox( assesmentMessage ) | ||
end | end | ||
-- all is well | -- all is well |
Version vom 23. Dezember 2017, 20:38 Uhr
This module is rated as ready for general use. It has reached a mature form and is thought to be bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
Dieses Modul kommt direkt auf Seiten im Namensraum "Spielteilnahme" zum Einsatz. Es prüft, ob es eine Spielfigur mit dem gleichen Namen wie die aktuelle Seite hat gibt und zeigt dann für die entsprechende Figur eine Übersicht aller Spiele und den Teilnahmestatus an. Zusätzlich gibt es für jedes Spiel eine Möglichkeit, sich direkt An- oder abzumelden.
Usage
{{#invoke:Participation|main}}
Example
The above documentation is transcluded from Modul:Participation/doc. (edit | history) Subpages of this module. |
local config = {
validNamespace = 'Spielteilnahme',
validTargetPageCategory = 'Figuren'
}
local p = {}
local smw = mw.smw
local tt = require( 'Module:TableTools' )
local currentTitle = nil
function assertCorrectNamespace( title, namespace )
return title.nsText == namespace
end
function assesPrerequisites()
if not assertCorrectNamespace(
getCurrentTitle(),
config.validNamespace
) then
return false, 'Diese Vorlage darf nur im Namensraum \'\''
.. config.validNamespace
.. '\'\' verwendet werden!'
end
if not assertTargetIsValid(
getCurrentTitle().text,
config.validTargetPageCategory
) then
return false, 'Die Seite mit dem Namen \'\''
.. getCurrentTitle().text
.. '\'\' existiert nicht oder ist keine Figur!'
end
return true
end
function assertTargetIsValid( targetPageName, validCategory )
--[=[
-- ssc's '?Category:' .. validCategory handling seems broken atm
local query = {
'[[' .. targetPageName .. ']]',
'?Category:' .. validCategory
}
--]=]
local query = {
'[[' .. targetPageName .. ']]',
'?Category#=pageCategories'
}
local res = smw.ask ( query )
if not res[1] or not res[1].pageCategories then
return false
end
return tt.inTable( res[1].pageCategories, 'Kategorie:' .. validCategory )
end
function alertBox( text )
return '<div class="alert alert-danger" role="alert">'
.. '<strong>Achtung:</strong> ' .. text
.. '</div>'
end
function getCurrentTitle()
if currentTitle ~= nil then
return currentTitle
end
currentTitle = mw.title.getCurrentTitle()
return currentTitle
end
function getPlayData()
local query = {
'[[Category:Spiele]]',
'?#=play',
'?Has number#=number',
'?Has character participating#=players',
'?Has display name#=displayName',
'?Has title#=title',
'mainlabel=-'
}
res = smw.ask( query )
if not res then
return {}
end
local playData = {}
for k, row in pairs(res) do
if row and row.number and row.title then
playData[row.number] = row
end
end
return playData
end
function printParticipationControl( playData, character )
return '== ' .. character .. ' ==\n'
.. '<pre>\n'
.. tt.printTable( playData )
.. '</pre>\n'
end
function p.main()
local assesmentResult, assesmentMessage = assesPrerequisites()
if not assesmentResult then
return alertBox( assesmentMessage )
end
-- all is well
local playData = getPlayData()
return printParticipationControl(
playData,
getCurrentTitle().text
)
end
-- pt = require('Module:TableTools').printTable
return p