Modul:LinkFormDatum

Aus FürthWiki
Version vom 16. September 2024, 13:53 Uhr von Red Rooster (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

LinkFormDate

Funktion, welche die Datumsfelder der Formulare zur Visualisierung in den Faktenboxen abbildet. Hierbei werden die Datumsangaben gleichzeitig semantisiert.

Die von der Vorlage übergebenen Parameter lauten:

  • 1 = Datum, z. B. das Geburtsdatum in beliebigem Format
  • 2 = Name des Hauptattributs, z. B. "Geburtsdatum"
  • 3 = Name des Tagesattributes, z. B. "Geburtstag"
  • 4 = Name des Jahresattributes, z. B. "Geburtsjahr"

FormatDate

Bringt ein semantisches Datum in die Übliche Darstellung, so dass Jahr und Monatstag klickbar sind.


local p = {}
local c = require( "Module:Common" )

function p.LinkFormDate( frame )
	pf = frame:getParent()
	args = pf.args
	
	months={
		[1] = "Januar",
		[2] = "Februar",
		[3] = "März",
		[4] = "April",
		[5] = "Mai",
		[6] = "Juni",
		[7] = "Juli",
		[8] = "August",
		[9] = "September",
		[10] = "Oktober",
		[11] = "November",
		[12] = "Dezember"}
	
	date = args[1]
	attr_date = args[2]
	attr_day = args[3]
	attr_year = args[4]
    
    date_array=split(date, "/")
    mw.smw.set({[attr_date] = date})
    if isEmpty(date_array[1]) then
    	-- When datestring contained no "/"
    	if isInteger(date_array[0]) then
    		-- When dateformat is just YYYY
    		return "[[" .. attr_year .. "::" .. date_array[0] .. "]]"
    	else
    		-- Dateformat is <monthname> YYYY
    		mda = split(date_array[0])
    		return mda[0] .. " [[" .. attr_year .. "::" .. mda[1] .. "]]"
    	end
    elseif isEmpty(date_array[2]) then
    	-- Datestring contained one "/"
    	mn = months[tonumber(date_array[1])]
    	return mn .. " [[" .. attr_year .. "::" .. date_array[0] .. "]]"
    else
    	-- Dateformat should be YYYY/MM/DD
    	mn = months[tonumber(date_array[1])]
    	date_array[2] = date_array[2]:gsub('0*', '', 1)
    	return "[[" .. attr_day .. "::" .. date_array[2] .. ". " .. mn .. "]]" .. 
    		" [[" .. attr_year .. "::" .. date_array[0] .. "]]"
    end
end

function p.FormatDate( frame )
	pf = frame:getParent()
	args = pf.args
	
	date = args[1]
	date_array=split(date, " ")
	if isEmpty(date_array[1]) then
    	-- When datestring contained no " ", thus is year
    	return "[[" .. date_array[0] .. "]]"
	elseif isEmpty(date_array[2]) then
		-- When datestring contains monthname and year
		return date_array[0] .. " [[" .. date_array[1] .. "]]"
	else
		-- When datestring contains day, monthname and year
		return "[[" .. date_array[0] .. ". " .. date_array[1] .. "]] " .. 
			"[[" .. date_array[2] .. "]]"
	end
end

return p