Editing Module:Life Guide
Appearance
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
| Latest revision | Your text | ||
| Line 4: | Line 4: | ||
local getTemplateArgs = require('Module:Parser').getTemplateArgs | local getTemplateArgs = require('Module:Parser').getTemplateArgs | ||
-- [[Template: | -- [[Template:Tutorial]] | ||
function p. | function p.Tutorial(frame, args) | ||
if args == nil then | if args == nil then | ||
args = require('Module:Arguments').getArgs(frame, { parentFirst = true }) | args = require('Module:Arguments').getArgs(frame, { parentFirst = true }) | ||
end | end | ||
local html = mw.html.create() | local html = mw.html.create() | ||
if args[1] and type(args[1]) == 'string' then | if args[1] and type(args[1]) == 'string' then | ||
for page in lib.gsplit(args[1], ';', { removeEmpty = true }) do | for page in lib.gsplit(args[1], ';', { removeEmpty = true }) do | ||
local | local tutorialArgs = getTemplateArgs('Tutorial/' .. page, { only = 'Tutorial' }) | ||
if lib.isEmpty( | if lib.isEmpty(tutorialArgs) then | ||
html:tag('strong'):addClass('error'):wikitext('The page [[ | html:tag('strong'):addClass('error'):wikitext('The page [[Tutorial/', page, ']] is not a valid tutorial.') | ||
else | else | ||
html | html | ||
:tag('div') | :tag('div'):addClass('tutorial') | ||
:tag('dl') | :tag('dl') | ||
:tag('dt'):wikitext( | :tag('dt'):wikitext(tutorialArgs.title or page) | ||
:tag('dd'):node(p. | :tag('dd'):node(p._TutorialFormat(tutorialArgs)) | ||
end | end | ||
end | end | ||
else | else | ||
html | html | ||
:tag('div') | :tag('div'):addClass('tutorial') | ||
:node(p._TutorialFormat(args)) | |||
:node(p. | |||
end | end | ||
return frame:preprocess(tostring(html)) | return frame:preprocess(tostring(html)) | ||
end | end | ||
function p. | function p._TutorialFormat(args) | ||
local out = mw.html.create('') | local out = mw.html.create('') | ||
local title = mw.title.getCurrentTitle() | local title = mw.title.getCurrentTitle() | ||
if args.about then | if args.about then | ||
args.about = lib.split(args.about, ';') | args.about = lib.split(args.about, ';') | ||
if title.rootText == ' | if title.rootText == 'Tutorial' then | ||
out:tag('i'):wikitext(require('Module:Hatnote').main(args.about)) | out:tag('i'):wikitext(require('Module:Hatnote').main(args.about)) | ||
end | end | ||
| Line 50: | Line 43: | ||
local size = args.size or '200px' | local size = args.size or '200px' | ||
if (title.rootText == ' | if (title.rootText == 'Tutorial') then | ||
size = '400px' | size = '400px' | ||
end | end | ||
| Line 60: | Line 53: | ||
local text = args['text' .. tostring(I)] | local text = args['text' .. tostring(I)] | ||
if (image or text) then | if (image or text) then | ||
local row = out:tag('div'):addClass(' | local row = out:tag('div'):addClass('tutorial-detail') | ||
row:wikitext('[[File:', (image or 'Empty.png'), '|', size, ']]') | row:wikitext('[[File:', (image or 'Empty.png'), '|', size, ']]') | ||
row:tag('div'):wikitext((text or '<wbr>')) | row:tag('div'):wikitext((text or '<wbr>')) | ||
| Line 72: | Line 65: | ||
-- add categories if correct page | -- add categories if correct page | ||
local subpage = args.title or title.subpageText | local subpage = args.title or title.subpageText | ||
if (not args['table'] and title.baseText == ' | if (not args['table'] and title.baseText == 'Tutorial' and (subpage ~= nil and not lib.inArray({ 'Elements', 'Enemies', 'System', 'Adventure', 'Event', 'Quest', 'Uncategorized' }, subpage))) then | ||
local cat = mw.html.create() | local cat = mw.html.create() | ||
cat:wikitext('[[Category: | cat:wikitext('[[Category:Tutorials|', subpage, ']]') | ||
if args['sort'] then | if args['sort'] then | ||
cat:wikitext('[[Category: | cat:wikitext('[[Category:Tutorial|', string.format('%05d', args['sort']), ']]') | ||
else | else | ||
cat:wikitext('[[Category: | cat:wikitext('[[Category:Tutorial]]') | ||
end | end | ||
if lib.inArray({ 'Elements', 'Enemies', 'System', 'Adventure' }, args['type']) then | if lib.inArray({ 'Elements', 'Enemies', 'System', 'Adventure' }, args['type']) then | ||
cat:wikitext('[[Category:', args['type'], ' | cat:wikitext('[[Category:', args['type'], ' Tutorials|', subpage, ']]') | ||
if not args['sort'] then | if not args['sort'] then | ||
cat:wikitext('[[Category: | cat:wikitext('[[Category:Tutorial Missing Sort]]') | ||
end | end | ||
elseif args['type'] == 'Event' or args['type'] == 'Quest' then | elseif args['type'] == 'Event' or args['type'] == 'Quest' then | ||
cat:wikitext('[[Category:', args['type'], ' | cat:wikitext('[[Category:', args['type'], ' Tutorials|', subpage, ']]') | ||
else | else | ||
cat:wikitext('[[Category:Uncategorized | cat:wikitext('[[Category:Uncategorized Tutorials|', subpage, ']]') | ||
end | end | ||
if args.about then | if args.about then | ||
for _, v in pairs(args.about) do | for _, v in pairs(args.about) do | ||
cat:wikitext('[[Category:', v, ' | cat:wikitext('[[Category:', v, ' Tutorials]]') | ||
end | end | ||
end | end | ||
| Line 103: | Line 96: | ||
while (args['image' .. tostring(I)] and exists) do | while (args['image' .. tostring(I)] and exists) do | ||
if not checkExists('File:' .. args['image' .. tostring(I)]) then | if not checkExists('File:' .. args['image' .. tostring(I)]) then | ||
cat:wikitext('[[Category: | cat:wikitext('[[Category:Tutorial Missing Image]]') | ||
exists = false; | exists = false; | ||
end | end | ||
| Line 116: | Line 109: | ||
end | end | ||
-- [[Template: | -- [[Template:Tutorials by Category Table]] | ||
function p.Table(frame) | function p.Table(frame) | ||
local args = require('Module:Arguments').getArgs(frame, { parentFirst = true }) | local args = require('Module:Arguments').getArgs(frame, { parentFirst = true }) | ||
local result = mw.html.create('div'):addClass(' | local result = mw.html.create('div'):addClass('tutorial-table') | ||
local title = mw.title.getCurrentTitle().text | local title = mw.title.getCurrentTitle().text | ||
if lib.isEmpty(args.pages) then | if lib.isEmpty(args.pages) then | ||
result:tag('span'):wikitext('No [[ | result:tag('span'):wikitext('No [[Tutorial]]s ', (args[1] and 'that match the category selection' or 'are in ' .. title), '.') | ||
else | else | ||
local resultTable = mw.html.create('table'):addClass('article-table') | local resultTable = mw.html.create('table'):addClass('article-table') | ||
local count = 0 | local count = 0 | ||
for | for tutorialPage in lib.gsplit(args.pages, ';;;', { noTrim = true, removeEmpty = true }) do | ||
local | local tutorialArgs = getTemplateArgs(tutorialPage, { only = 'Tutorial' }) | ||
for key, value in pairs( | for key, value in pairs(tutorialArgs) do | ||
if value == '' then | if value == '' then tutorialArgs[key] = nil end | ||
end | end | ||
tutorialArgs.PAGENAME = tutorialPage | |||
resultTable:node(p._TableRow(frame, | resultTable:node(p._TableRow(frame, tutorialArgs)) | ||
count = count + 1 | count = count + 1 | ||
end | end | ||
local header = result:tag('div'):addClass(' | local header = result:tag('div'):addClass('tutorial-header') | ||
if lib.isNotEmpty(args.header) then | if lib.isNotEmpty(args.header) then | ||
header:wikitext(tostring(tostring(args.header):gsub('%%PAGES%%', count))) | header:wikitext(tostring(tostring(args.header):gsub('%%PAGES%%', count))) | ||
| Line 147: | Line 140: | ||
count, | count, | ||
"'''", | "'''", | ||
' [[ | ' [[Tutorial]]', | ||
(count == 1 and ' ' or 's '), | (count == 1 and ' ' or 's '), | ||
(args[1] and ('that match' .. (count == 1 and 'es' or '') .. ' the category selection:') or ' are in ' .. title) | (args[1] and ('that match' .. (count == 1 and 'es' or '') .. ' the category selection:') or ' are in ' .. title) | ||
| Line 173: | Line 166: | ||
local row = out:tag('tr'):tag('td') | local row = out:tag('tr'):tag('td') | ||
args['table'] = true | args['table'] = true | ||
row:node(p. | row:node(p.Tutorial(frame, args)) | ||
end | end | ||
return out | return out | ||