Modul:Dozentenprofil
Aus MAV
Aufruf der Funktion
Bitte exakt nach folgendem Schema in der "Vorlage:MAV" aufrufen
{{#invoke:Dozentenprofil|combinedDozentenprofiles|{{SUBPAGENAME}}}}
local p = {}
local function asText(v)
if type(v) == 'table' then
return v.fulltext or v.value or v[1] or ''
end
return v or ''
end
function p.getEvents(Beginn, Ende, Kategorie, Beschreibung)
local searchresult = ''
if Beschreibung == '' then
searchresult = mw.smw.ask( '[[Kategorie:' .. Kategorie .. ']][[Beginn::<' .. Ende .. ']][[Ende::>' .. Beginn .. ']][[Geographikum::Universität Wittenberg]]|?Beginn=Beginn|?Ende=Ende|limit=500' )
else
searchresult = mw.smw.ask( '[[Kategorie:' .. Kategorie .. ']][[Beginn::<' .. Ende .. ']][[Ende::>' .. Beginn .. ']][[Geographikum::Universität Wittenberg]]|?' .. Beschreibung .. '|?Beginn=Beginn|?Ende=Ende|limit=500' )
end
if not searchresult then
return 'Keine Einträge gefunden\n'
end
local out = '{| class="wikitable sortable"\n'
out = out .. '! Name !! Beginn !! Ende\n'
for _, row in ipairs(searchresult) do
out = out .. '|-\n'
out = out .. '| ' .. row[1] .. '\n'
if Beschreibung ~= '' then
out = out .. '| ' .. asText(row[Beschreibung]) .. '\n'
end
out = out .. '| ' .. (row.Beginn or '') .. '\n'
out = out .. '| ' .. (row.Ende or '') .. '\n'
end
out = out .. '|}\n'
return out
end
function p.createSingleDozentenprofil(Beginn, Ende)
local returnstring = ''
local categories = {
{'Liste der Studenten', 'Ausbildung', '' },
{'Liste der Dozenten', 'Tätigkeit', 'Tätigkeitsart'}
}
for _, entry in ipairs(categories) do
returnstring = returnstring .. "'''" .. entry[1] .. ": '''\n" .. p.getEvents(Beginn, Ende, entry[2], entry[3])
end
return returnstring
end
function p.combinedDozentenprofiles(frame)
local queryResult = ''
local pagename = frame.args[1]
local returnvalue = ''
queryResult = mw.smw.ask( '[[Kategorie:Tätigkeit]][[Person::' .. pagename .. ']][[Geographikum::Universität Wittenberg]]|mainlabel=-|?Beginn|?Ende|sort=DatumSortiert' )
if queryResult == nil then
return 'Keine Angaben zu einer Dozententätigkeit in Wittenberg gefunden.'
end
local erlaubteTaetigkeiten = {
["Adjunkt"] = true,
["Dozent (artes)"] = true,
["Dozent (med. Fakultät)"] = true,
["Examinator (artes)"] = true,
["Examinator (med.)"] = true,
["Pädagoge"] = true,
["Prof. (artes)"] = true,
["Prof. (Mathematik)"] = true,
["Prof. (Physik)"] = true,
["Prof. med."] = true
}
if type( queryResult ) == "table" then
local Beginn = ''
local Ende = ''
local taetigkeitsart = ''
for num, row in ipairs( queryResult ) do
for property, data in pairs( row ) do
if property == 'Beginn' then
Beginn = data
elseif property == 'Ende' then
Ende = data
elseif property == 'Tätigkeitsart' then
taetigkeitsart = data
end
end
if erlaubteTaetigkeiten[taetigkeitsart] then
returnvalue = returnvalue .. '=== ' .. taetigkeitsart .. '(von ' .. Beginn .. ' bis ' .. Ende .. ') ===\n' .. p.createSingleDozentenprofil(Beginn, Ende)
end
end
end
return returnvalue
end
return p