Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Cultopedia
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Make Wikisource link
Module
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local hasWikibase = mw.wikibase ~= nil function p.makeLink(frame) --[[--------- Variable declaration --]]--------- local args = getArgs(frame) local lang = args['explicit_lang_param'] or args['implicit_lang_param'] or 'en' local page = mw.title.getCurrentTitle() local pagename = page.text local wikisourceEdition local linkTarget local displayText local toReturn local prefix --[[ Create the prefix for the interwiki link It uses the lowest of: 1. 'Special:Search/', if using the enwiki pagename as the interwiki target 2. If not (1), an 'Author:' prefix, localized, if given a works parameter and not under (1) 3. If not (1) or (2), the empty string We avoid 'Special:Search/Author:' intentionally; this is rarely helpful Here we simply set it to (2) or (3), and override it when setting the link target if needed --]] prefix = args.works and frame:expandTemplate{ title = 'Wikisource/Author', args = { lang } } or '' -- Handle multilingual Wikisource (aka old Wikisource) correctly if lang == 'mul' then wikisourceEdition = 'sourceswiki' -- siteid for multilingual Wikisource else wikisourceEdition = lang .. 'wikisource' -- other Wikisource editions are langcode + 'wikisource' (e.g. 'enwikisource') end -- get the Wikidata sitelink local wikidataSitelink if hasWikibase then wikidataSitelink = mw.wikibase.getSitelink( mw.wikibase.getEntityIdForCurrentPage() or '', wikisourceEdition ) end -- if we have a language parameter, we look at the second unnamed parameter for the source title local checkIndexForTarget = args['implicit_lang_param'] and 2 or 1 -- and then use the next index for display local checkIndexForDisplay = checkIndexForTarget + 1 --[[--------- Set the link target --]]--------- if args['wslink'] then linkTarget = args['wslink'] elseif args[checkIndexForTarget] then -- we have a source title parameter, so return that linkTarget = args[checkIndexForTarget] elseif wikidataSitelink then -- use Wikidata linkTarget = wikidataSitelink else -- we have no parameters and nothing at Wikidata, so we are flying blind -- set the linkTarget to the pagename linkTarget = pagename -- and set prefix to 'Special:Search/' to find the appropriate link prefix = 'Special:Search/' end -- clear prefixes for now; will add it back later if needed -- this prevents duplicate prefixes (Author:Author:Shakespeare; Special:Search/Special:Search/) -- and avoids displayText with any author prefix linkTarget = string.gsub(linkTarget, '^' .. prefix, '') --[[--------- Now build the displayText --]]--------- if not displayText then -- we did not set displayText in the above steps, so set it now -- first we check for an explicit display text, or else we set it to be the link target displayText = args['title'] or args[checkIndexForDisplay] or linkTarget end --[[--------- Now we check whether we should categorize in Category:Wikisource templates with missing id --]]--------- -- initialize errorCategory as true local errorCategory = true -- helper to set errorCategory = false local function setFalse() errorCategory = false end if wikidataSitelink then -- we do have a sitelink at Wikidata setFalse() elseif yesno(args.nocat, true) then -- we have a |nocat parameter setFalse() elseif page.namespace ~= 0 then -- only care about mainspace setFalse() elseif string.match(pagename, '^Lists? of ') then -- we are on a list page, and those should not have Wikisource links setFalse() elseif string.match(pagename, '^%d%d?%d?%d?s? in') then -- we are in a YEAR/DECADE in FOO page, and those also should not have anything else setFalse() else -- Now we check categories and determine whether this is something which does not need a Wikisource links -- Currently, we avoid categorizing: -- 1. Disambiguation pages -- 2. Set index articles -- 3. Articles about species. There is no universal category; [[Category:Articles with 'species' microformats]] is a proxy -- we do this check last to avoid using [[WP:EXPENSIVE]] parser calls if possible for _, cat in ipairs(page.categories) do if cat == "All disambiguation pages" or cat == "All set index articles" or cat == "Articles with 'species' microformats" then setFalse() break end end end -- build the link toReturn = '[[:s:' .. lang .. ':' .. prefix .. linkTarget .. '|' .. displayText .. ']]' -- append the error category if needed if errorCategory then toReturn = toReturn .. '[[Category:Wikisource templates with missing id|' .. pagename .. ']]' end return toReturn end return p
Summary:
Please note that all contributions to Cultopedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Cultopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Make Wikisource link/doc
(
edit
)
Search
Search
Editing
Module:Make Wikisource link
Add topic