Module:Favilink: Difference between revisions

Jump to navigation Jump to search
mNo edit summary
(refactor)
Line 1: Line 1:
local p = {}
local p = {}
local cargo= mw.ext.cargo
local htmlparse = require'Module:HTMLParse'
local htmlparse = require'Module:HTMLParse'
local colorparse = require'Module:ColorParse'
local colorparse = require'Module:ColorParse'
Line 18: Line 17:
   
   
if frame.args ~= nil and frame.args ~= '' then
if frame.args ~= nil and frame.args ~= '' then
  if frame.args[1] ~= nil and frame.args[1] ~= '' then
if frame.args[1] ~= nil and frame.args[1] ~= '' then
  name = mw.text.trim(frame:preprocess(frame.args[1]))
name = mw.text.trim(frame:preprocess(frame.args[1]))
  modifier = mw.text.trim(frame:preprocess(frame.args[2]))
modifier = mw.text.trim(frame:preprocess(frame.args[2]))
  else
else
    error "There is no argument specified! [[Category:pages with favilink errors]]"
    error "There is no argument specified! [[Category:pages with favilink errors]]"
  end
end
end
end


Line 31: Line 30:


function p.modulefavilink(name, searchtype, modifier)
function p.modulefavilink(name, searchtype, modifier)
  searchtype = searchtype or 'PlainName'
searchtype = searchtype or 'PlainName'
  modifier = modifier or ''
modifier = modifier or ''
  if name ~= nil and name ~= '' then
if name ~= nil and name ~= '' then
    return main(name, searchtype, modifier)
    return main(name, searchtype, modifier)
  else   
else   
    error "There is no argument specified! [[Category:pages with favilink errors]]"
    error "There is no argument specified! [[Category:pages with favilink errors]]"
  end
end
end
end


function main(name, searchtype, modifier)
function main(name, searchtype, modifier)
local displayname_tooltip_override = false
local displayname_tooltip_override = false
if searchtype == '_pageName' then
if searchtype == '_pageName' then
  name = name:gsub("'", "'")
name = name:gsub("'", "'")
end
end
local result = util.favilink(name, searchtype)
local result = util.favilink(name, searchtype)


if result ~= nil then
if result ~= nil then
  name = result['PlainName']
name = result['PlainName']
else
else
  return '[[' .. name.. ']](favilink error!)[[Category:pages with favilink errors]]'
return '[[' .. name.. ']](favilink error!)[[Category:pages with favilink errors]]'
end
end


local pagelink = result['Page'] or name
local pagelink = result['Page'] or name
local displayname = result['DisplayName'] or name
local displayname = result['DisplayName'] or name
local displayimg = result['Display']
local displayimg = result['Display']


--[Setting display name modifiers...]
return p.format(pagelink, displayname, displayimg, modifier, displayname_tooltip_override)
local display
end


if modifier == 'plural' then
function p.format(pagelink, displayname, displayimg, modifier, displayname_tooltip_override)
  local displayresult = htmlparse.pluralize( {args= {html = displayname} })
--[Setting display name modifiers...]
  display=displayresult
local display


elseif modifier == 'possessive' then
if modifier == 'plural' then
  local displayresult = htmlparse.make_possessive({ args = {html = displayname} })
local displayresult = htmlparse.pluralize( {args= {html = displayname} })
  display=displayresult
display=displayresult
elseif modifier == 'possessive' then
local displayresult = htmlparse.make_possessive({ args = {html = displayname} })
display=displayresult
elseif modifier == '' then
display = displayname
elseif modifier == 'displayname-tooltip-override' then
display = displayname
displayname_tooltip_override = true
else
display = colorparse.parse('&y'..modifier)
end


elseif modifier == '' then
local img = displayimg
  display = displayname
if string.len(displayimg) > 4 then
if string.sub(displayimg, -4) == '.png' then
    img = '[[File:' .. displayimg.. '|16px|link='..pagelink..']]'
end
end


elseif modifier == 'displayname-tooltip-override' then
local spandisplay = displayname_tooltip_override == true and '<span title="'..name..'">'..display..'</span>' or display
  display = displayname
  displayname_tooltip_override = true
else
  display= colorparse.parse('&y'..modifier)
end


local img = displayimg
local qudimage = mw.html.create('span')
if string.len(displayimg) > 4 then
qudimage
  if string.sub(displayimg, -4) == '.png' then
        :addClass('qud-image')
      img = '[[File:' .. displayimg.. '|16px|link='..pagelink..']]'
        :node(mw.html.create('span')
  end
            :addClass('qud-image-link-image-container')
            :wikitext(img))
        :node(mw.html.create('span')
            :addClass('qud-image-link')
            :css('color','#b1c9c3')
            :wikitext('[['..pagelink..'|' .. spandisplay .. ']]'))
return tostring(qudimage)
end
end


local spandisplay = displayname_tooltip_override == true and '<span title="'..name..'">'..display..'</span>' or display
function p.idfavilink(frame)
 
return p.favilink(frame,'ObjectID')
local qudimage = mw.html.create('span')
qudimage
        :addClass('qud-image')
        :node(mw.html.create('span')
            :addClass('qud-image-link-image-container')
            :wikitext(img))
        :node(mw.html.create('span')
            :addClass('qud-image-link')
            :css('color','#b1c9c3')
            :wikitext('[['..pagelink..'|' .. spandisplay .. ']]'))
 
return tostring(qudimage)
end
end


function p.idfavilink(frame)
function p.pagenamefavilink(frame)
  return p.favilink(frame,'ObjectID')
return p.favilink(frame,'_pageName')
end
end


function p.pagenamefavilink(frame)
function p.favilinkformat(frame)
  return p.favilink(frame,'_pageName')
frame=mw.getCurrentFrame()
return p.format(frame.args['pagelink'],
frame.args['displayname'],
frame.args['displayimg'],
frame.args['modifier'],
frame.args['displayname_tooltip_override'])
end
end


return p
return p