打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:Prevnext:修订间差异

爱来自星云工艺喵!(づ。◕◡◡◕。)づ
Kuina留言 | 贡献
创建页面,内容为“require( 'strict' ) local Prevnext = {} local metatable = {} local methodtable = {} metatable.__index = methodtable --- Returns true if a page exists --- @param page string --- @return boolean local function pageExists( page ) local title = mw.title.new( page ) return title and title.exists end --- Creates the prev/next header --- --- @return string function methodtable.make( self ) local function makeLink( dir ) if not self.frameArgs[ dir ] then…”
 
Kuina留言 | 贡献
无编辑摘要
第33行: 第33行:
local inner = mw.html.create( 'div' )
local inner = mw.html.create( 'div' )
inner:addClass( 'template-prevnext__' .. dir )
inner:addClass( 'template-prevnext__' .. dir )
  :addClass( 'template-prevnext__link' )
:addClass( 'template-prevnext__link' )


if not pageExists( self.frameArgs[ dir ] ) then
if not pageExists( self.frameArgs[ dir ] ) then
第42行: 第42行:


icon:addClass( 'template-prevnext__icon' )
icon:addClass( 'template-prevnext__icon' )
:wikitext( mw.ustring.format( '[[File:WikimediaUI-%s-ltr.svg|14px|link=]]', arrow ) )
:wikitext( string.format( '[[File:WikimediaUI-%s-ltr.svg|14px|link=]]', arrow ) )
:done()
:done()


第50行: 第50行:


local content = inner:tag( 'div' )
local content = inner:tag( 'div' )
:addClass( 'template-prevnext__content' )
:addClass( 'template-prevnext__content' )
:tag( 'div' )
:tag( 'div' )
:addClass( 'template-prevnext__title' )
:addClass( 'template-prevnext__title' )
:wikitext( self.frameArgs[ dir .. 'Title' ] or self.frameArgs[ dir ] )
:wikitext( self.frameArgs[ dir .. 'Title' ] or self.frameArgs[ dir ] )
:done()
:done()


if self.frameArgs[ dir .. 'Desc' ] then
if self.frameArgs[ dir .. 'Desc' ] then
content:tag( 'div' )
content:tag( 'div' )
:addClass( 'template-prevnext__desc' )
:addClass( 'template-prevnext__desc' )
:wikitext( self.frameArgs[ dir .. 'Desc' ] )
:wikitext( self.frameArgs[ dir .. 'Desc' ] )
:done()
:done()
end
end


第68行: 第68行:


inner:tag( 'div' )
inner:tag( 'div' )
:addClass( 'template-prevnext__linkoverlay' )
:addClass( 'template-prevnext__linkoverlay' )
:wikitext( mw.ustring.format( '[[%s]]', self.frameArgs[ dir ] ) )
:wikitext( string.format( '[[%s]]', self.frameArgs[ dir ] ) )
:allDone()
:allDone()


return inner
return inner
第76行: 第76行:


local div = mw.html.create( 'div' )
local div = mw.html.create( 'div' )
div:addClass( 'template-prevnext' )
div:addClass( 'template-prevnext' )


local current = mw.html.create( 'div' )
local current = mw.html.create( 'div' )
第82行: 第82行:


local content = current:tag( 'div' )
local content = current:tag( 'div' )
:addClass('template-prevnext__content')
:addClass( 'template-prevnext__content' )
:tag( 'div' )
:tag( 'div' )
:addClass('template-prevnext__title')
:addClass( 'template-prevnext__title' )
:wikitext( self.frameArgs[ 'title' ] or mw.title.getCurrentTitle().subpageText )
:wikitext( self.frameArgs[ 'title' ] or mw.title.getCurrentTitle().subpageText )
:done()
:done()


if self.frameArgs[ 'desc' ] then
if self.frameArgs[ 'desc' ] then
第96行: 第96行:
current:allDone()
current:allDone()


div:node(makeLink('prev')):node(current):node(makeLink('next'))
div:node( makeLink( 'prev' ) ):node( current ):node( makeLink( 'next' ) )


return tostring( div:allDone() ) .. mw.getCurrentFrame():extensionTag{
return mw.getCurrentFrame():extensionTag {
name = 'templatestyles', args = { src = 'Module:Prevnext/styles.css' }
name = 'templatestyles', args = { src = 'Module:Prevnext/styles.css' }
}
} .. tostring( div:allDone() )
end
end


--- Set the frame and load args
--- Set the frame and load args
第110行: 第109行:
self.frameArgs = require( 'Module:Arguments' ).getArgs( frame )
self.frameArgs = require( 'Module:Arguments' ).getArgs( frame )
end
end


--- New Instance
--- New Instance
第122行: 第120行:
return instance
return instance
end
end


--- Template entry
--- Template entry
第131行: 第128行:
return instance:make()
return instance:make()
end
end


return Prevnext
return Prevnext

2025年5月16日 (五) 13:34的版本

此模块的文档可以在模块:Prevnext/doc创建

require( 'strict' )

local Prevnext = {}

local metatable = {}
local methodtable = {}


metatable.__index = methodtable


--- Returns true if a page exists
--- @param page string
--- @return boolean
local function pageExists( page )
	local title = mw.title.new( page )
	return title and title.exists
end


--- Creates the prev/next header
---
--- @return string
function methodtable.make( self )
	local function makeLink( dir )
		if not self.frameArgs[ dir ] then
			return
		end

		local arrow = 'ArrowPrevious'
		if dir == 'next' then arrow = 'ArrowNext' end

		local inner = mw.html.create( 'div' )
		inner:addClass( 'template-prevnext__' .. dir )
			:addClass( 'template-prevnext__link' )

		if not pageExists( self.frameArgs[ dir ] ) then
			inner:addClass( 'template-prevnext__link--new' )
		end

		local icon = mw.html.create( 'div' )

		icon:addClass( 'template-prevnext__icon' )
			:wikitext( string.format( '[[File:WikimediaUI-%s-ltr.svg|14px|link=]]', arrow ) )
			:done()

		if dir == 'prev' then
			inner:node( icon )
		end

		local content = inner:tag( 'div' )
			:addClass( 'template-prevnext__content' )
			:tag( 'div' )
			:addClass( 'template-prevnext__title' )
			:wikitext( self.frameArgs[ dir .. 'Title' ] or self.frameArgs[ dir ] )
			:done()

		if self.frameArgs[ dir .. 'Desc' ] then
			content:tag( 'div' )
				:addClass( 'template-prevnext__desc' )
				:wikitext( self.frameArgs[ dir .. 'Desc' ] )
				:done()
		end

		if dir == 'next' then
			inner:node( icon )
		end

		inner:tag( 'div' )
			:addClass( 'template-prevnext__linkoverlay' )
			:wikitext( string.format( '[[%s]]', self.frameArgs[ dir ] ) )
			:allDone()

		return inner
	end

	local div = mw.html.create( 'div' )
	div:addClass( 'template-prevnext' )

	local current = mw.html.create( 'div' )
	current:addClass( 'template-prevnext__current' )

	local content = current:tag( 'div' )
		:addClass( 'template-prevnext__content' )
		:tag( 'div' )
		:addClass( 'template-prevnext__title' )
		:wikitext( self.frameArgs[ 'title' ] or mw.title.getCurrentTitle().subpageText )
		:done()

	if self.frameArgs[ 'desc' ] then
		content:tag( 'div' )
			:addClass( 'template-prevnext__desc' )
			:wikitext( self.frameArgs[ 'desc' ] )
	end

	current:allDone()

	div:node( makeLink( 'prev' ) ):node( current ):node( makeLink( 'next' ) )

	return mw.getCurrentFrame():extensionTag {
		name = 'templatestyles', args = { src = 'Module:Prevnext/styles.css' }
	} .. tostring( div:allDone() )
end

--- Set the frame and load args
--- @param frame table
function methodtable.setFrame( self, frame )
	self.currentFrame = frame
	self.frameArgs = require( 'Module:Arguments' ).getArgs( frame )
end

--- New Instance
function Prevnext.new( self, args )
	local instance = {
		frameArgs = args
	}

	setmetatable( instance, metatable )

	return instance
end

--- Template entry
function Prevnext.main( frame )
	local instance = Prevnext:new()
	instance:setFrame( frame )

	return instance:make()
end

return Prevnext
我们为您提供服务需要使用Cookie。使用我们的服务即表示您同意我们使用Cookie。