Modul:Vorlage:Babel

Die Dokumentation für dieses Modul kann unter Modul:Vorlage:Babel/Doku erstellt werden

-- Babel -- 20251009
-- ursprünglich aus der Esperanto-Wikipedia, aber von Tlustulimu teilweise nach dem 
-- englischen Modul angepaßt, weil anders der erste unbenannte Parameter nicht
-- wie gewünscht funktionierte.

function subtitle(text)
	-- This function builds subtitles in the box
				local sub_title = mw.html.create('table')
				  :css('text-align','center')
				  :css('width','100%')
				  :css('margin','0 auto')
				local row =  sub_title:tag('tr')
				local sub_title_cell =  row:tag('th')
				   :css('background-color','#EEFFCC')
				   :css('border','1px dotted #FFCC99')
				   :css('padding','0.3em')				   
				   :wikitext(text)
				   :done()
				-- sub_title:done()
				return tostring(sub_title)
end	


local p = {}

function p.babel(frame)  
	-- This function builds the babel box used by the {{babel}} template.
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	--local args = getArgs(frame, {wrappers = 'Template:Babel'})
	local args = getArgs(frame, {wrappers = 'Benutzer:Tlustulimu/Vorlage:Babel'})

	local tab = ""
	local frame = mw.getCurrentFrame()	
	local first = false
	if args[1] and args[1]:find('%S') then
		first = true
	end
	
	-- variables for the babel cells
	local t1 = "<tr><td>"
	local t2 = "</td></tr>"
	local mf = args.mw or "{{GENDER:{{BASEPAGENAME}}|m|w|}}"
	
	-- "remove" args[1] so it isn't looked at in the loop
	-- table.remove(args,1) doesn't produce desired result
	if first == false then
		args[1] = ''	
	end	
	
	-- creates the table cell's beginning
	tab = tab .. t1

	-- Keep track of how many columns are in this table
	local col_span = 1
	for _, v in ipairs( args ) do
		-- ! indicates a new cell should be created
		if v:find('%S') and v ~= '!' then
			if mw.ustring.sub(v,1,2) == "[[" then
				tab = tab .. v 
			elseif mw.ustring.sub(v,1,2) == "{{" and mw.ustring.sub(v,1,3) ~= "{{{" then	
				tab = tab .. v 
			elseif mw.ustring.sub(v,1,1) == "<" then
				tab = tab .. v 
			-- converts the text with ## at the begining into subtitle	
			elseif mw.ustring.sub(v,1,2) == "##" then
				v = mw.ustring.sub(v,3)
				tab = tab .. subtitle(v) 
			-- code for {{#Babel, because the parser analyzed this before Lua can work			
			elseif mw.ustring.sub(v,1,3) == "#b#" or mw.ustring.sub(v,1,3) == "#B#"	then
				local v = mw.ustring.sub(v,4) 
				-- removes the internal links 
				v = mw.ustring.gsub(v,"%[%[Project:Babel%|Babel – Benutzerinformationen%]%]","",1)
				v = mw.ustring.gsub(v,"%[%[:Kategorie:Benutzer:nach Sprache%|Benutzer nach Sprache%]%]","",1)				
				v = '<div style="width:246px; float:left;">' .. v .. "</div>"
				tab = tab .. v
				
			else	
				tab = tab .. frame:preprocess('{{User '..v.. '|mw=' .. mf .. '}}') 
			end
		-- Recycling body_cells for <td>
		elseif v and v == '!' then
			col_span = col_span + 1
			tab = tab .. '</td><td>' -- end of the table cell and beginn of a new one, for more then one column
--			body_cells = row2:tag('td')
		end
	end

	-- creates the title line of the table
	local fl = args.float or args.align or ""
	local color = args.color or ""
	local header = ""
	local t = args.titel or args.Titel or '[[Wikipedia:Babel|Babel:]]'	
	local c = ""
	local c2 = ""
	if color ~= "" then
		c = 'style="background-color:' .. color .. ';" '
		c2 = 'style="background-color:' .. color .. '; " | '		
	end
	local margin = ""
	-- correction of the left and right margins, if the box is floated to the left side
	if fl == "left" then
		margin = "margin-left:0; margin-right:1em;"
	end
	if first == true then
		-- code from the template {{Babel-HTML-Kopf}}, but with added width
		header = '<table style="width:248px; ' .. frame:preprocess('{{Babel-Style|float=' .. fl .. '}}') .. margin .. '" id="userboxes">'
		if col_span > 1 then
			header = header .. '<tr><th ' .. c .. 'colspan="' .. col_span .. '">' .. t .. '</th></tr>' 
		else
			header = header .. '<tr><th ' .. c .. '>' .. t .. '</th></tr>' 
		end
		tab = header .. tab
	else
		-- code from the template {{Babel-Kopf}}, but with added width
		header = '{| style="width:248px; ' .. frame:preprocess('{{Babel-Style|float=' .. fl .. '}}') .. margin .. '" id="userboxes"'
		if col_span > 1 then
			header = header .. '\n! ' .. c .. 'colspan="' .. col_span .. '" | ' .. t			
		else
			header = header .. '\n! ' .. c2 .. t
		end
		tab = header .. "\n" .. tab		
	end	


	
	-- for user according to the location (country, town, village etc.)
	local maxaus = 20
	for i = 1, maxaus do
		local a = args['aus' .. i] or ""
		if a ~="" then
			-- for a title before the location
			local title = args['aus' .. i .. "-titel"] or ""
			if title ~= "" then
				tab = tab .. subtitle(title) 				
			end
			tab = tab .. frame:preprocess('{{Benutzer:Vorlage/aus ' .. a .. '}}') 
		end
	end	

	-- for special boxes
	local maxspec = 20
	if args['Spezialbox'] then
			-- for a title before the special box
			local title = args['Spezialbox-titel'] or ""
			if title ~= "" then
				tab = tab .. subtitle(title) 				
			end		
		local s = args['Spezialbox']		
		tab = tab .. s 
	end
	for i = 2, maxspec do
		local s = args['Spezialbox' .. i] or ""
		if s ~="" then
			-- for a title before the special box
			local title = args['Spezialbox' .. i .. "-titel"] or ""
			if title ~= "" then
				tab = tab .. subtitle(title) 				
			end				
			tab = tab .. s 
		end
	end	

 

	-- code for the template {{Benutzer SUL}}
	if args['SUL-Projekt'] ~= nil and args['SUL-Projekt'] ~= "" then
			local p = args['SUL-Projekt']
			local l = args['SUL-Sprache'] or ""
			-- for title before the information about the user's SUL
			local title = args['SUL-Titel'] or ""
			if title ~= "" then
				tab = tab .. subtitle(title)
			end				
			tab = tab .. frame:preprocess('{{Benutzer SUL|1=' .. l .. '|2=' .. p 
				.. '}}') 
	end		

	-- creates the table cell's end
	tab = tab .. t2
	if color ~= "" then
		c = "background-color:" .. color .. ";"
	end	
	if args['Fußzeile'] or args['fußzeile'] then
		local f = args['Fußzeile'] or args['fußzeile']
		if col_span > 1 then
			tab = tab .. '<tr><td colspan="' .. col_span .. '" style="text-align:center;' .. c .. '">' .. f .. t2
		else	
			tab = tab .. '<tr><td style="text-align:center; ' .. c .. '">' .. f .. t2
		end
	else
		if first == true then
			local kat = "'''[[:Kategorie:Benutzer:nach Sprache|Benutzer nach Sprache]]'''"
			if col_span > 1 then
				tab = tab .. '<tr><td colspan="' .. col_span .. '" style="text-align: center; ' .. c .. '">' .. kat .. t2
			else
				tab = tab .. '<tr><td style="text-align: center; ' .. c .. '">' .. kat .. t2
			end
		end
	end
	
 	-- creates the end of the table
 	if first == true then
		tab = tab .. "</table>"
 	end
 
	return tostring(tab)
	
end

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.