Modul:Mathe für Nicht-Freaks/Seite
Erscheinungsbild
Modul Mathe für Nicht-Freaks
Es existiert keine Dokumentation. Wenn du eine anlegen willst, solltest du keine „/Doku“-Unteseite benutzen, sondern LuaDokumentation.
- Diese Dokumentation wurde mithilfe von Modul:LuaDokumentation erstellt und befindet sich im Quelltext.
- Liste der Unterseiten
local Modul = {}
local de_prefix = "Mathe für Nicht-Freaks"
local en_prefix = "Serlo: EN: "
local sitemap = require("Modul:Mathe für Nicht-Freaks/Sitemap").parse()
local Liste = require("Modul:Liste")
local utils = require("Modul:Utils")
function books()
local child = nils
local children, state, index = ipairs(sitemap.children)
function iter()
index, child = children(state, index)
if child then return child:to_link() else return nil end
end
return iter
end
function Modul.oben(frame)
local title = mw.title.getCurrentTitle().text
if utils.starts(title, de_prefix) then
frame:callParserFunction("DISPLAYTITLE", string.sub(title, #de_prefix + 3) .. " – Serlo „Mathe für Nicht-Freaks“")
elseif utils.starts(title, en_prefix) then
frame:callParserFunction("DISPLAYTITLE", string.sub(title, #en_prefix + 1) .. " – Serlo")
end
return Modul.erzeugeSeite(frame, ':Mathe für Nicht-Freaks: Vorlage:Header')
end
function Modul.buecher(frame)
local next_book = books()
local function iter_books()
book = next_book()
if book ~= nil then
book = "'''" .. book .. "'''"
end
return book
end
return Liste.createListOutput(iter_books, { icon = "Office-book.svg", icon_size = "x20px", abstand = "0.5em", kein_icon_verweis = true })
end
function Modul.unten(frame)
return Modul.erzeugeSeite(frame, ':Mathe für Nicht-Freaks: Vorlage:Footer')
end
function Modul.navigation(frame)
return Modul.erzeugeSeite(frame, ':Mathe für Nicht-Freaks: Vorlage:Footer')
end
function Modul.erzeugeSeite(frame, template)
local args = { }
local current_page = mw.title.getCurrentTitle()
local current_page_text = current_page:getContent()
local current_title = current_page.fullText
-- Do not show navigation on Unterseiten
if string.find(current_title, "/", 1, true) then return "" end
local current_node = sitemap:find(function(n) return n.link == current_title end)
if current_node == nil then return "<b>Fehler: Aktuelle Seite wurde in der Sitemap nicht gefunden. Deswegen kann keine Navigation angezeigt werden</b>" end
local book = current_node:find_parent(function(n) return n.level == 1 end)
args.buch = book.name
args.buchlink = book.link
args.quellen = frame.args.quellen
args.weblinks = frame.args.weblinks
if book.name == "Informationen zum Projekt" then
args.typ = "meta"
else
args.typ = "main"
end
if string.find(current_page_text, "%<ref") then
args.einzelnachweise = "true"
end
if current_node.progress and current_node.progress >= 75 then
args['überprüft'] = frame.args['überprüft']
end
args.info = frame.args.info
if current_node.level == 1 and #current_node.children > 0 then
args.kategorien = "[[Kategorie:Buch]]\n[[Kategorie:Studium]]"
local inhalt = "__NOTOC__\n"
function add_inhalt_link(node)
if node.level > 1 then
if node.char == "=" then
tmp = string.rep("=", node.nr-1)
inhalt = inhalt .. tmp .. node.name .. tmp .. "\n"
else
inhalt = inhalt .. "* " .. node:to_link() .. "\n"
end
end
for _, child in ipairs(node.children) do
add_inhalt_link(child)
end
end
add_inhalt_link(book)
args.inhalt = inhalt
else
args.kapitel = 1
if current_node.progress and current_node.progress <= 25 then
args.inhalt = frame:expandTemplate{ title = "Baustelle" }
end
end
args.books = Liste.createListOutput(books(), { icon = "Office-book.svg", icon_size = "x14px", kein_icon_verweis = true, abstand = "0.3em" })
local navigation = ""
function add_navigation_link(node)
if node.level > 1 then
navigation = navigation .. string.rep("*", node.level-1) .. " " .. node:to_link() .. "\n"
end
if node:is_over(current_node) then
for _, child in ipairs(node.children) do
add_navigation_link(child)
end
end
end
add_navigation_link(book)
args.navigation = navigation
local next_site = current_node:next_site()
if current_node.level ~= 1 and next_site ~= nil then
args.next_link = next_site:site_link()
args.next_link_name = next_site.name
end
return frame:expandTemplate{ title = template, args = args }
end
return Modul