Модуль:Мэтанавігацыя
Выгляд
Дакумэнтацыя модулю[прагляд] [рэдагаваць] [гісторыя] [абнавіць]
local navMap = {
{
["title"] = "Дапамога",
["location"] = "Дапамога:Зьмест",
["children"] = {
{
["title"] = "Пачаткоўцам",
["location"] = "Дапамога:Зьмест/Пачаткоўцам"
},
{
["title"] = "Частыя пытаньні",
["location"] = "Вікіпэдыя:Частыя пытаньні"
},
{
["title"] = "Правілы і рэкамэндацыі",
["location"] = "Вікіпэдыя:Правілы і рэкамэндацыі"
},
{
["title"] = "Пошук",
["location"] = "Вікіпэдыя:Пошук"
},
{
["title"] = "Пясочніца",
["location"] = "Вікіпэдыя:Пясочніца"
}
}
},
{
["title"] = "Суполка",
["location"] = "Вікіпэдыя:Суполка",
["children"] = {
{
["title"] = "Форум",
["location"] = "Вікіпэдыя:Форум"
},
{
["title"] = "Адміністрацыя",
["location"] = "Вікіпэдыя:Адміністрацыя"
},
{
["title"] = "Апытаньні",
["location"] = "Вікіпэдыя:Апытаньні"
},
{
["title"] = "Галасаваньні",
["location"] = "Вікіпэдыя:Галасаваньні"
},
{
["title"] = "Абмеркаваньне правілаў",
["location"] = "Вікіпэдыя:Абмеркаваньне правілаў"
},
{
["title"] = "Паведамленьні пра памылкі",
["location"] = "Вікіпэдыя:Паведамленьні пра памылкі"
}
}
},
{
["title"] = "Ацэньваньне",
["location"] = "Вікіпэдыя:Ацэньваньне",
["children"] = {
{
["title"] = "Для рэцэнзаваньня",
["location"] = "Вікіпэдыя:Артыкулы для рэцэнзаваньня"
},
{
["title"] = "У добрыя",
["location"] = "Вікіпэдыя:Кандыдаты ў добрыя артыкулы"
},
{
["title"] = "У абраныя",
["location"] = "Вікіпэдыя:Кандыдаты ў абраныя артыкулы"
}
}
},
{
["title"] = "Узнагароды",
["location"] = "Вікіпэдыя:Узнагароды артыкулаў",
["children"] = {
{
["title"] = "Абраныя артыкулы",
["location"] = "Вікіпэдыя:Абраныя артыкулы"
},
{
["title"] = "Добрыя артыкулы",
["location"] = "Вікіпэдыя:Добрыя артыкулы"
}
}
},
{
["title"] = "Праекты",
["location"] = "Вікіпэдыя:Праекты",
["children"] = {
{
["title"] = "Злучнасьць",
["location"] = "Вікіпэдыя:Праект:Злучнасьць"
},
{
["title"] = "Правілы",
["location"] = "Вікіпэдыя:Праект:Правілы"
},
{
["title"] = "Рабатызацыя",
["location"] = "Вікіпэдыя:Рабатызацыя"
},
{
["title"] = "Ці ведаеце вы",
["location"] = "Вікіпэдыя:Праект:Ці ведаеце вы"
},
{
["title"] = "Тэматычны тыдзень",
["location"] = "Вікіпэдыя:Праект:Тэматычны тыдзень"
}
}
},
{
["title"] = "Парталы",
["location"] = "Партал:Агляд",
["children"] = {
{
["title"] = "Геаграфія",
["location"] = "Партал:Геаграфія"
},
{
["title"] = "Гісторыя",
["location"] = "Партал:Гісторыя"
},
{
["title"] = "Грамадзтва",
["location"] = "Партал:Грамадзтва"
},
{
["title"] = "Асобы",
["location"] = "Партал:Асобы"
},
{
["title"] = "Рэлігія",
["location"] = "Партал:Рэлігія"
},
{
["title"] = "Спорт",
["location"] = "Партал:Спорт"
},
{
["title"] = "Тэхніка",
["location"] = "Партал:Тэхніка"
},
{
["title"] = "Навука",
["location"] = "Партал:Навука"
},
{
["title"] = "Мастацтва",
["location"] = "Партал:Мастацтва"
},
{
["title"] = "Філязофія",
["location"] = "Партал:Філязофія"
}
}
},
{
["title"] = "Запыты",
["location"] = "Вікіпэдыя:Запыты",
["children"] = {
{
["title"] = "Да адміністратараў",
["location"] = "Вікіпэдыя:Запыты да адміністратараў"
},
{
["title"] = "Да адміністратараў інтэрфэйсу",
["location"] = "Вікіпэдыя:Запыты да адміністратараў інтэрфэйсу"
},
{
["title"] = "На стварэньне",
["location"] = "Вікіпэдыя:На стварэньне"
},
{
["title"] = "Накіды",
["location"] = "Катэгорыя:Вікіпэдыя:Накіды"
},
{
["title"] = "На перанос",
["location"] = "Вікіпэдыя:Запыты на перанос"
},
{
["title"] = "На аб’яднаньне",
["location"] = "Катэгорыя:Вікіпэдыя:Кандыдатуры на аб’яднаньне"
},
{
["title"] = "На выдаленьне",
["location"] = "Вікіпэдыя:Кандыдатуры на выдаленьне"
},
{
["title"] = "На пераклад",
["location"] = "Вікіпэдыя:Запыты на пераклад"
}
}
}
}
local p = {}
local builder = require( "Модуль:HtmlBuilder" )
local currentPosition = {}
local function detectPosition()
if next( currentPosition ) ~= nil then
return currentPosition
else
currentPosition = { ["section"] = "", ["contents"] = "", ["isection"] = 0, ["icontents"] = 0 }
local currentTitle = mw.title.getCurrentTitle().prefixedText
for k, section in ipairs( navMap ) do
for l, child in ipairs( section.children ) do
if child.location == currentTitle then
currentPosition.icontents = l
currentPosition.contents = child.location
currentPosition.isection = k
currentPosition.section = section.location
break
end
end
if section.location == currentTitle then
currentPosition.isection = k
currentPosition.section = section.location
end
end
end
return currentPosition
end
local function renderSections()
local currentSection = detectPosition().section
local root = builder.create()
for _, section in ipairs( navMap ) do
local item = root.tag( 'div' ).wikitext( "[[:" .. section.location .. "|" .. section.title .. "]]" )
if section.location == currentSection then item.addClass( 'active' ) end
end
return tostring( root )
end
local function renderContents()
local currentPos = detectPosition()
if navMap[currentPos.isection] == nil then return "" end
local root = builder.create()
for _, child in ipairs( navMap[currentPos.isection].children ) do
local item = root.tag( 'li' ).wikitext( "[[:" .. child.location .. "|" .. child.title .. "]]" )
end
return tostring( root )
end
function p.metaNavigation( frame )
local root = builder.create()
for n, m in pairs( navMap ) do
mw.log( m.location )
end
local rootNode = root.tag( 'div' )
.addClass( 'metanavigation' )
.tag( 'div' )
.addClass( 'metanavigation-sections' )
.wikitext( renderSections() )
.done()
local contentsText = renderContents()
if contentsText ~= "" then
rootNode.tag( 'div' )
.addClass( 'metanavigation-contents' )
.tag( 'ul' )
.addClass( 'hlist' )
.wikitext( renderContents() )
.done()
end
return tostring( root )
end
return p