Module:DE:Beginners guide navigation

From OpenStreetMap Wiki
Jump to navigation Jump to search
--[[ Codebase for the navigation templates for the German "Beginner's Guide"
to OpenStreetMap ]]--

local p = {}
-- contains all page names of the "Beginner's Guide" in order
local pages = {
	"DE:Beginners' guide",
	"DE:Join the community",
	"DE:Beginners Guide 1.1",
	"DE:Bearbeitungsprogramm auswählen",
	"DE:Beginners Guide 1.3",
	"DE:Beginners Guide 1.4",
	"DE:Beginners Guide 1.5"
}
-- contains all captions of the previously defined page names
local captions = {
	"Einleitung",
	"Treten Sie der Gemeinschaft bei",
	"Daten sammeln",
	"Bearbeitungsprogramm auswählen",
	"Karte zeichnen",
	"Eigenschaften hinzufügen",
	"Ergebnis betrachten"
}

-- creates a tab-style navigation
function p.tabs(frame)
	local counter = 1
	local templateParameters = {}
	local pageNumber = table.maxn(pages)
	
	while (counter <= pageNumber) do
		templateParameters[counter] = pages[counter]
		templateParameters[tostring("label" .. counter)] = captions[counter]
		counter = counter + 1
	end
	return frame:expandTemplate{title = "Tabs flexible", args = templateParameters }
end

-- creates a book-style navigation ("<- previous page ... next page ->")
function p.arrows(frame)
	local pagename = frame.args["pagename"]
	local output = {}
	local pageIndex = 1
	local pageNumber = table.maxn(pages)
	
	output[1] = "---- \n"
	while (pageIndex <= pageNumber) do
		if (pagename == pages[pageIndex]) then
			break
		else
			pageIndex = pageIndex + 1
		end
	end
	
	if (pageIndex ~= 1) then
		table.insert(output, '<div style="float: left;">\n[[' .. pages[pageIndex-1] ..
			"|« " .. captions[pageIndex-1] .. "]]\n</div>")
	end
	if (pageIndex ~= pageNumber) then
		table.insert(output, '<div style="float: right;">\n[[' .. pages[pageIndex+1] ..
			"|" .. captions[pageIndex+1] .. " »]]\n</div>")
	end
	return tostring(table.concat(output))
end
	
return p