Modul: Dozentenprofil: Unterschied zwischen den Versionen

Aus MAV
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 18: Zeile 18:


if not searchresult then
if not searchresult then
return 'Keine Einträge gefunden\n'
return 'Keine Einträge gefunden.\n'
end
end
Zeile 61: Zeile 61:


     if queryResult == nil then
     if queryResult == nil then
         return 'Keine Angaben zu einer Dozententätigkeit in Wittenberg gefunden.'
         return 'Keine Angaben zu einer Dozententätigkeit in Wittenberg gefunden.\n'
     end
     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
     if type( queryResult ) == "table" then
         local Beginn = ''
         local Beginn = ''
Zeile 84: Zeile 71:
         Beginn = row.Beginn
         Beginn = row.Beginn
         Ende = row.Ende
         Ende = row.Ende
         taetigkeitsart = row['Tätigkeitsart']
         taetigkeitsart = asText(row['Tätigkeitsart'])
        returnvalue = returnvalue .. asText(row['Tätigkeitsart'])
             returnvalue = returnvalue .. '\n=== ' .. taetigkeitsart .. ' (von ' .. Beginn .. ' bis ' .. Ende .. ') ===\n' .. p.createSingleDozentenprofil(Beginn, Ende)
             if taetigkeitsart == '[[Prof. med.]]' then
            returnvalue = returnvalue .. asText(row['Tätigkeitsart'])
            --returnvalue = returnvalue .. '=== ' .. taetigkeitsart .. '(von ' .. Beginn .. ' bis ' .. Ende .. ') ===\n' .. p.createSingleDozentenprofil(Beginn, Ende)
            end
end
end
     end
     end

Aktuelle Version vom 4. Januar 2026, 17:56 Uhr

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=Beginn|?Ende=Ende|?Tätigkeitsart=Tätigkeitsart|format=plainlist|sort=DatumSortiert|link=none' )

    if queryResult == nil then
        return 'Keine Angaben zu einer Dozententätigkeit in Wittenberg gefunden.\n'
    end
    
    if type( queryResult ) == "table" then
        local Beginn = ''
        local Ende = ''
        local taetigkeitsart = ''
        for num, row in ipairs( queryResult ) do
        	Beginn = row.Beginn
        	Ende = row.Ende
        	taetigkeitsart = asText(row['Tätigkeitsart'])
            returnvalue = returnvalue .. '\n=== ' .. taetigkeitsart .. ' (von ' .. Beginn .. ' bis ' .. Ende .. ') ===\n' .. p.createSingleDozentenprofil(Beginn, Ende)
		end
    end
	return returnvalue
end

return p