Модуль : Navbar

Х?окху модулах лаьцна хааман Модуль:Navbar/doc аг?о кхолла мега

local
 p
 =
 {}


local
 hlist
 =
 'Template:Flatlist/styles.css'

local
 templatestyles
 =
 'Module:Navbar/styles.css'

local
 getArgs


function
 p
.
_ruwikiNavbar
(
 args
 )

	local
 titleText
 =
 args
[
 1
 ]
 or
 (
':'
 ..
 mw
.
getCurrentFrame
():
getParent
():
getTitle
())

	local
 title
 =
 mw
.
title
.
new
(
mw
.
text
.
trim
(
titleText
),
 'Template'
);


	if
 not
 title
 then

		error
(
'Invalid title '
 ..
 titleText
)

	end

	
	local
 whiteColorDefs
 =
 {

		[
'#fff'
]
 =
 true
,

		[
'#ffffff'
]
 =
 true
,

		[
'white'
]
 =
 true
,

	}

	local
 fontColor
 =
 args
.
fontcolor
 and
 args
.
fontcolor
:
lower
()

	local
 isWhite
 =
 fontColor
 and
 whiteColorDefs
[
 fontColor
 ]
 ==
 true

	local
 fontStyle
 =
 args
.
fontstyle
 and
 mw
.
text
.
unstripNoWiki
(
 args
.
fontstyle
:
lower
()
 )

	if
 not
 isWhite
 and
 fontStyle
 then

		local
 styleratio
 =
 require
(
 'Module:Color contrast'
 ).
_styleratio

		isWhite
 =
 styleratio
(
 {

			fontStyle
 ..
 '; color:#666;'
,

			''
,

			'#666'

		}
 )
 <
 3.66

	end

	
	local
 isTemplate
 =
 title
.
namespace
 ==
 10

	local
 altText
 =
 string.format
(

		'Перейти %s ≪%s≫'
,

		isTemplate
 and
 'к шаблону'
 or
 'на страницу'
,

		mw
.
text
.
split
(
 isTemplate
 and
 title
.
text
 or
 title
.
fullText
,
 '#'
 )[
 1
 ]

	)

	return
 string.format
(

		'[[Файл:Wikipedia interwiki section gear icon%s.svg|14px|class=noprint|link=%s|%s]]'
,

		isWhite
 and
 ' white'
 or
 ''
,

		tostring
(
 title
 ),

		altText

	)

end


function
 p
.
ruwikiNavbar
(
frame
)

	if
 not
 getArgs
 then

		getArgs
 =
 require
(
'Module:Arguments'
).
getArgs

	end

	return
 p
.
_ruwikiNavbar
(
getArgs
(
frame
))

end


function
 p
.
_navbar
(
args
)

	local
 titleArg
 =
 1


	if
 args
.
collapsible
 then

		titleArg
 =
 2

		if
 not
 args
.
plain
 then

			args
.
mini
 =
 1

		end

		if
 args
.
fontcolor
 then

			args
.
fontstyle
 =
 'color:'
 ..
 args
.
fontcolor
 ..
 ';'

		end

		args
.
style
 =
 'float:left; text-align:left; white-space:nowrap;'

	end

	
	if
 args
[
titleArg
]
 ==
 'off'
 then

		return

	end


	local
 titleText
 =
 args
[
titleArg
]
 or
 (
':'
 ..
 mw
.
getCurrentFrame
():
getParent
():
getTitle
())

	local
 title
 =
 mw
.
title
.
new
(
mw
.
text
.
trim
(
titleText
),
 'Template'
);


	if
 not
 title
 then

		error
(
'Invalid title '
 ..
 titleText
)

	end


	local
 talkpage
 =
 title
.
talkPageTitle
 and
 title
.
talkPageTitle
.
fullText
 or
 ''
;

	local
 tag

	if
 args
.
nodiv
 then

		tag
 =
 'span'

	else

		tag
 =
 'div'

	end

	
	local
 div
 =
 mw
.
html
.
create
():
tag
(
tag
)

	div

		:
addClass
(
'navbar hlist plainlinks noprint'
)

		:
attr
(
'data-navboxnavigation-link'
,
 '0'
)

		:
cssText
(
args
.
style
)


	if
 args
.
mini
 then
 div
:
addClass
(
'navbar-mini'
)
 end


	if
 not
 (
args
.
mini
 or
 args
.
plain
)
 then

		div

			:
tag
(
'span'
)

				:
addClass
(
'navbar-boxtext'
)

				:
cssText
(
args
.
fontstyle
)

				:
wikitext
(
args
.
text
 or
 'Шаблон:'
)

				:
wikitext
(
' '
)

	end

	
	local
 ul
 =
 div
:
tag
(
'ul'
);

	if
 args
.
brackets
 then

		ul
:
addClass
(
'navbar-brackets'
)

	end


	ul

		:
tag
(
'li'
)

			:
addClass
(
'nv-view'
)

			:
wikitext
(
'[['
 ..
 title
.
fullText
 ..
 '|'
)

			:
tag
(
args
.
mini
 and
 'abbr'
 or
 'span'
)

				:
addClass
(
args
.
mini
 and
 'navbar-mini-abbr'
)

				:
attr
(
'title'
,
 'Просмотр этого шаблона'
)

				:
cssText
(
args
.
fontstyle
)

				:
wikitext
(
args
.
mini
 and
 'п'
 or
 'просмотр'
)

				:
done
()

			:
wikitext
(
']]'
)

			:
done
()

	
		:
tag
(
'li'
)

			:
addClass
(
'nv-talk'
)

			:
wikitext
(
'[['
 ..
 talkpage
 ..
 '|'
)

			:
tag
(
args
.
mini
 and
 'abbr'
 or
 '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
(
'[[Special:EditPage/'
 ..
 title
.
fullText
 ..
 '|'
)

				:
tag
(
args
.
mini
 and
 'abbr'
 or
 'span'
)

					:
attr
(
'title'
,
 'Править этот шаблон'
)

					:
cssText
(
args
.
fontstyle
)

					:
wikitext
(
args
.
mini
 and
 'р'
 or
 'править'
)

					:
done
()

				:
wikitext
(
']]'
);

	end


	if
 args
.
collapsible
 then

		div
:
done
()

		:
tag
(
'span'
)

			:
addClass
(
 args
.
mini
 and
 'navbar-ct-mini'
 or
 'navbar-ct-full'
 )

			:
cssText
(
args
.
fontstyle
)

			:
wikitext
(
args
[
1
])

	end


	local
 frame
 =
 mw
.
getCurrentFrame
()

	return
 frame
:
extensionTag
{

		name
 =
 'templatestyles'
,
 args
 =
 {
 src
 =
 hlist
 }

	}
 ..
 frame
:
extensionTag
{

		name
 =
 'templatestyles'
,
 args
 =
 {
 src
 =
 templatestyles
 }

	}
 ..
 tostring
(
div
:
done
())

end


function
 p
.
navbar
(
frame
)

	if
 not
 getArgs
 then

		getArgs
 =
 require
(
'Module:Arguments'
).
getArgs

	end

	return
 p
.
_navbar
(
getArgs
(
frame
))

end


return
 p