Module:Favilink

From Caves of Qud Wiki
Revision as of 22:22, 5 February 2021 by Teamtoto (talk | contribs)
Jump to navigation Jump to search
Template-info.png Documentation

!!Currently only for use for objects in the tables: ItemsTable, Food, Corpses, Characters, Locations. All possible items can be found here: Special:CargoTables/GeneralData.

Usage

Used similar to regular wikipage linking syntax. First argument takes name of the object and will pull the image from that item. This must be called using Template:Favilink.

{{favilink|Stopsvalinn}}

Stopsvalinn.pngStopsvalinn

Optional Parameters

You can use the following values as the second argument:

plural pluralizes the item name while preserving the color formatting.
{{favilink |antimatter cell|plural}}

Antimatter cell.pngantimatter cells

possessive makes the item name possessive while preserving the color formatting.
{{favilink | Q Girl | possessive}}

Q girl.pngQ Girl's

displayname-tooltip-override makes the hover tooltip equal to the display name for items whose display name doesn't match their page name, such as cybernetics credit wedge 1¢. This is probably only needed in special locations where part of the favilink can get truncated, such as in the Character infobox's Inventory list.
{{favilink | cybernetics credit wedge 1¢ | displayname-tooltip-override}}

Compare to tooltip when this parameter is not specified:

prefix:<prefix> Prepends a prefix to the name, which can include qud text color styles.
{{favilink | mental aggregator | prefix:&ylant&Ye&Wr&Yn&yed}}

Mental aggregator.pngprefix:lanterned

suffix:<suffix> Postpends a suffix to the name, which can include qud text color styles.
{{favilink | plasma grenade | suffix:mk II}}

Plasma grenade mk i.pngsuffix:mk II

<any other value> completely overrides the name shown in the favilink to whatever argument specified.
{{favilink|torch|A &Rreally&y spicy meatball}}

Torch.pngA really spicy meatball


local p = {}
local cargo= mw.ext.cargo
local htmlparse = require'Module:HTMLParse'
local colorparse = require'Module:ColorParse'
local util = require'Module:Favilink Utility'
local util_args = require('Module:Args Utility')

function p.favilink(frame, searchtype)

--[Getting query results...]

local name
local modifier

frame=mw.getCurrentFrame()

searchtype = searchtype or 'PlainName'
 
if frame.args ~= nil and frame.args ~= '' then
  if frame.args[1] ~= nil and frame.args[1] ~= '' then
  name = mw.text.trim(frame:preprocess(frame.args[1]))
  modifier = mw.text.trim(frame:preprocess(frame.args[2]))
  else
     error "There is no argument specified! [[Category:pages with favilink errors]]"
  end
end

return main(name, searchtype, modifier)

end

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

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

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

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

--[Setting display name modifiers...]
local display

if modifier == 'plural' then
  local displayresult = htmlparse.pluralize( {args= {html = displayname} })
  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

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

local spandisplay = displayname_tooltip_override == true and '<span title="'..name..'">'..display..'</span>' or display

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

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

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

return p