更多操作
创建页面,内容为“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…” |
小 已保护“模块:Prevnext”([编辑=仅允许管理员](无限期)[移动=仅允许管理员](无限期)) |
||
(未显示同一用户的1个中间版本) | |||
第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' ) | |||
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( 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' ) | |||
:tag( 'div' ) | |||
:addClass( 'template-prevnext__title' ) | |||
:wikitext( self.frameArgs[ dir .. 'Title' ] or self.frameArgs[ dir ] ) | |||
:done() | |||
if self.frameArgs[ dir .. 'Desc' ] then | if self.frameArgs[ dir .. 'Desc' ] then | ||
content:tag( 'div' ) | content:tag( 'div' ) | ||
:addClass( 'template-prevnext__desc' ) | |||
:wikitext( self.frameArgs[ dir .. 'Desc' ] ) | |||
:done() | |||
end | end | ||
第68行: | 第68行: | ||
inner:tag( 'div' ) | inner:tag( 'div' ) | ||
:addClass( 'template-prevnext__linkoverlay' ) | |||
:wikitext( string.format( '[[%s]]', self.frameArgs[ dir ] ) ) | |||
:allDone() | |||
return inner | return inner | ||
第76行: | 第76行: | ||
local div = mw.html.create( 'div' ) | local div = mw.html.create( 'div' ) | ||
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' ) | |||
:tag( 'div' ) | |||
:addClass( 'template-prevnext__title' ) | |||
:wikitext( self.frameArgs[ 'title' ] or mw.title.getCurrentTitle().subpageText ) | |||
: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 | 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日 (五) 17:43的最新版本
此模块的文档可以在模块: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