در حال ویرایش پودمان:Navbar

هشدار: شما وارد نشده‌اید. نشانی آی‌پی شما برای عموم قابل مشاهده خواهد بود اگر هر تغییری ایجاد کنید. اگر وارد شوید یا یک حساب کاربری بسازید، ویرایش‌هایتان به نام کاربری‌تان نسبت داده خواهد شد، همراه با مزایای دیگر.

این ویرایش را می‌توان خنثی کرد. لطفاً تفاوت زیر را بررسی کنید تا تأیید کنید که این چیزی است که می‌خواهید انجام دهید، سپس تغییرات زیر را ذخیره کنید تا خنثی‌سازی ویرایش را به پایان ببرید.

نسخهٔ فعلی متن شما
خط ۱: خط ۱:
local p = {}
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')


local function get_title_arg(is_collapsible, template)
local getArgs
local title_arg = 1
local ul
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end


local function choose_links(template, args)
function p.addItem (mini, full, link, descrip, args, url)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
 
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
 
local function add_link(link_description, ul, is_mini, font_style)
local l
local l
if link_description.url then
if url then
l = {'[', '', ']'}
l = {'[', '', ']'}
else
else
خط ۴۱: خط ۱۲:
end
end
ul:tag('li')
ul:tag('li')
:addClass('nv-' .. link_description.full)
:addClass('nv-'..full)
:wikitext(l[1] .. link_description.link .. l[2])
:wikitext(l[1] .. link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:tag(args.mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:attr('title', descrip..' this template')
:cssText(font_style)
:cssText(args.fontstyle)
:wikitext(is_mini and link_description.mini or link_description.full)
:wikitext(args.mini and mini or full)
:done()
:done()
:wikitext(l[3])
:wikitext(l[3])
:done()
end
end


local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
function p.brackets (position, c, args, div)
if args.brackets then
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
div
if not title then
:tag('span')
error(cfg.invalid_title .. title_text)
:css('margin-'..position, '-0.125em')
:cssText(args.fontstyle)
:wikitext(c)
end
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
end
 
function p._navbar(args)
local show = {true, true, true, false, false, false}
local titleArg = 1
-- TODO: Get link_descriptions and show into the configuration module.
if args.collapsible then
-- link_descriptions should be easier...
titleArg = 2
local link_descriptions = {
if not args.plain then args.mini = 1 end
{ ['mini'] = 'ن', ['full'] = 'نمایش', ['html_title'] = 'این الگو را مشاهده کنید',
if args.fontcolor then
['link'] = title.fullText, ['url'] = false },
args.fontstyle = 'color:' .. args.fontcolor .. ';'
{ ['mini'] = 'ب', ['full'] = 'بحث', ['html_title'] = 'بحث دربارهٔ این الگو',
end
['link'] = talkpage, ['url'] = false },
args.style = 'float:left; text-align:left'
{ ['mini'] = 'و', ['full'] = 'ویرایش', ['html_title'] = 'این الگو را ویرایش کنید',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'ت', ['full'] = 'تاریخچه', ['html_title'] = 'تاریخچهٔ این الگو',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'ا', ['full'] = 'انتقال', ['html_title'] = 'این الگو را منتقل کنید',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'پ', ['full'] = 'پی‌گیری', ['html_title'] = 'تغییرات این الگو را پی‌گیری کنید',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
 
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
end
for i, _ in ipairs(displayed_links) do
if args.template then
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
titleArg = 'template'
show = {true, false, false, false, false, false}
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
for k,v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
end
return ul:done()
end
if args.noedit then show[3] = false end
 
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local font_style = args.fontstyle
local title = mw.title.new(mw.text.trim(titleText), 'Template')
local font_color = args.fontcolor
if not title then
local is_collapsible = args.collapsible
error('Invalid title ' .. titleText)
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
local navbar_style = args.style
local div = mw.html.create():tag('div')
local div = mw.html.create():tag('div')
div
div
:addClass(cfg.classes.navbar)
:addClass('plainlinks')
:addClass(cfg.classes.plainlinks)
:addClass('hlist')
:addClass(cfg.classes.horizontal_list)
:addClass('navbar')
:addClass(collapsible_class) -- we made the determination earlier
:cssText(args.style)
:cssText(navbar_style)


if is_mini then div:addClass(cfg.classes.mini) end
if args.mini then div:addClass('mini') end


local box_text = (args.text or cfg.box_text) .. ' '
if not (args.mini or args.plain) then
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
div
:tag('span')
:tag('span')
:addClass(cfg.classes.box_text)
:css('word-spacing', 0)
:cssText(font_style)
:cssText(args.fontstyle)
:wikitext(box_text)
:wikitext(args.text or 'This box:')
:wikitext(' ')
end
end
local template = args.template
p.brackets('right', '[ ', args, div)
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
ul = div:tag('ul')
local title_arg = get_title_arg(is_collapsible, template)
if show[1] then p.addItem('v', 'view', title.fullText, 'View', args) end
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
if show[2] then p.addItem('t', 'talk', talkpage, 'Discuss', args) end
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
if show[3] then p.addItem('e', 'edit', title:fullUrl('action=edit'), 'Edit', args, true) end
div:node(list)
if show[4] then p.addItem('h', 'hist', title:fullUrl('action=history'), 'History of', args, true) end
 
if show[5] then
if is_collapsible then
local move = mw.title.new ('Special:Movepage')
local title_text_class
p.addItem('m', 'move', move:fullUrl('target='..title.fullText), 'Move', args, true) end
if is_mini then
if show[6] then p.addItem('w', 'watch', title:fullUrl('action=watch'), 'Watch', args, true) end
title_text_class = cfg.classes.collapsible_title_mini
else
p.brackets('left', ' ]', args, div)
title_text_class = cfg.classes.collapsible_title_full
end
if args.collapsible then
div:done()
div
:tag('div')
:done()
:addClass(title_text_class)
:tag('div')
:cssText(font_style)
:css('font-size', '114%')
:css('margin', args.mini and '0 4em' or '0 7em')
:cssText(args.fontstyle)
:wikitext(args[1])
:wikitext(args[1])
end
end
 
return mw.getCurrentFrame():extensionTag{
return tostring(div:done())
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
end


function p.navbar(frame)
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._navbar(getArgs(frame))
end
end


return p
return p
لطفاً توجه داشته‌باشید که همهٔ مشارکت‌ها در ویکی حج منتشرشده تحت Creative Commons Attribution-NonCommercial-ShareAlike در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). اگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو راهنمای ویرایش‌کردن (در پنجرهٔ تازه باز می‌شود)

الگوی به‌کاررفته در این صفحه: