در حال ویرایش پودمان: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
 
if is_collapsible then title_arg = 2 end
function p._navbar(args)
if template then title_arg = 'template' end
local titleArg = 1
return title_arg
end


local function choose_links(template, args)
if args.collapsible then
-- The show table indicates the default displayed items.
titleArg = 2
-- view, talk, edit, hist, move, watch
if not args.plain then
-- TODO: Move to configuration.
args.mini = 1
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
if args.fontcolor then
args.fontstyle = 'color:' .. args.fontcolor .. ';'
end
args.style = 'float:right; text-align:right; width:6em;'
end
end


local remove_edit_link = args.noedit
local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
if remove_edit_link then show[3] = false end
local title = mw.title.new(mw.text.trim(titleText), 'الگو');
return show
end


local function add_link(link_description, ul, is_mini, font_style)
if not title then
local l
error('صفحه وجود ندارد' .. titleText)
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end


local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '';
 
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
local div = mw.html.create():tag('div')
if not title then
div
error(cfg.invalid_title .. title_text)
:addClass('plainlinks')
:addClass('hlist')
:addClass('navbar')
:cssText(args.style)
 
if args.mini then div:addClass('mini') end
 
if not (args.mini or args.plain) then
div
:tag('span')
:css('word-spacing', 0)
:cssText(args.fontstyle)
:wikitext(args.text or 'این جعبه:')
:wikitext(' ')
end
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'ن', ['full'] = 'نمایش', ['html_title'] = 'این الگو را مشاهده کنید',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 'ب', ['full'] = 'بحث', ['html_title'] = 'بحث دربارهٔ این الگو',
['link'] = talkpage, ['url'] = false },
{ ['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 args.brackets then
if has_brackets then
div
ul:addClass(cfg.classes.brackets)
:tag('span')
:cssText(font_style)
:css('margin-left', '-0.125em')
:cssText(args.fontstyle)
:wikitext('[')
:newline();
end
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end


function p._navbar(args)
local ul = div:tag('ul');
 
-- TODO: We probably don't need both fontstyle and fontcolor...
ul
local font_style = args.fontstyle
:tag('li')
local font_color = args.fontcolor
:addClass('nv-view')
local is_collapsible = args.collapsible
:wikitext('[[' .. title.fullText .. '|')
local is_mini = args.mini
:tag('span')
local is_plain = args.plain
:attr('title', 'این الگو را مشاهده کنید')
:cssText(args.fontstyle)
local collapsible_class = nil
:wikitext(args.mini and 'ن' or 'نمایش')
if is_collapsible then
:done()
collapsible_class = cfg.classes.collapsible
:wikitext(']]')
if not is_plain then is_mini = 1 end
:done()
if font_color then
:tag('li')
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
:addClass('nv-talk')
end
:wikitext('[[' .. talkpage .. '|')
:tag('span')
:attr('title', 'بحث دربارهٔ این الگو')
:cssText(args.fontstyle)
:wikitext(args.mini and 'ب' or 'بحث')
:done()
:wikitext(']]');
 
if not args.noedit then
ul
:tag('li')
:addClass('nv-edit')
:wikitext('[' .. title:fullUrl('action=edit') .. ' ')
:tag('span'):attr('title', 'این الگو را ویرایش کنید')
:cssText(args.fontstyle)
:wikitext(args.mini and 'و' or 'ویرایش')
:done()
:wikitext(']');
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end


local box_text = (args.text or cfg.box_text) .. ' '
if args.brackets 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('margin-right', '-0.125em')
:cssText(font_style)
:cssText(args.fontstyle)
:wikitext(box_text)
:wikitext(']')
:newline();
end
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)


if is_collapsible then
if args.collapsible then
local title_text_class
div
if is_mini then
:done()
title_text_class = cfg.classes.collapsible_title_mini
:tag('span')
else
:css('font-size', '110%')
title_text_class = cfg.classes.collapsible_title_full
:cssText(args.fontstyle)
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
: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 در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). اگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو راهنمای ویرایش‌کردن (در پنجرهٔ تازه باز می‌شود)

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