Module:Favilink: Difference between revisions

Jump to navigation Jump to search
1,061 bytes added ,  00:22, 25 July 2023
m
no edit summary
m (Undo revision 13746 by Teamtoto (talk))
mNo edit summary
 
(48 intermediate revisions by 3 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
local cargo= mw.ext.cargo
local h = {}
local htmlparse = require'Module:HTMLParse'
local htmlparse = require'Module:HTMLParse'
local colorparse = require'Module:ColorParse'
local colorparse = require'Module:ColorParse'
local util = require'Module:Favilink Utility'
local util_args = require('Module:Args Utility')


function p.favilink(frame, searchtype)
function p.favilink(frame, searchtype)
local displayname_tooltip_override = false


--[Getting query results...]
--[Getting query results...]
Line 11: Line 12:
local name
local name
local modifier
local modifier
frame=mw.getCurrentFrame()


searchtype = searchtype or 'PlainName'
searchtype = searchtype or 'PlainName'
   
   
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


local wherestr = ''
return h.main(name, searchtype, modifier)


if (searchtype == 'PlainName') then
  wherestr = ' AND BINARY PlainName="' .. name:gsub("'", "\'") .. '"'
elseif (searchtype == 'ID') then
  wherestr = ' AND BINARY ObjectID="' .. name:gsub("'", "\'") .. '"'
elseif (searchtype == '_pageName') then
  wherestr = ' AND BINARY _pageName="' .. name:gsub("'", "\'") .. '"'
end
end


local result = cargo.query('GeneralData','_pageName=Page, DisplayName, Image, DisplayChar, PlainName',{where='_pageNamespace="0"' .. wherestr, default=name, limit='1'} )
function p.modulefavilink(name, searchtype, modifier)
 
searchtype = searchtype or 'PlainName'
if not next(result) then
modifier = modifier or ''
  return '[[' .. name.. ']][[Category:pages with favilink errors]]'
if name ~= nil and name ~= '' then
else
    return h.main(name, searchtype, modifier)
  name = result[1]['PlainName']
else 
    error "There is no argument specified! [[Category:pages with favilink errors]]"
end
end
end


local pagelink = result[1]['Page'] or name
function h.main(name, searchtype, modifier)
local displayname = result[1]['DisplayName'] or name
if searchtype == '_pageName' then
local image = (result[1]['Image'] ~= '' and result[1]['Image']~=nil) and result[1]['Image'] or 'None'
name = name:gsub("'", "'")
local displaychar = result[1]['DisplayChar'] or '•'
end
 
local result = util.favilink(name, searchtype)
--[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
if result ~= nil then
  display = displayname
name = result['PlainName']
else
return '[[' .. name.. ']](favilink error!)[[Category:pages with favilink errors]]'
end


elseif modifier == 'displayname-tooltip-override' then
local pagelink = result['Page'] or name
  display = displayname
local displayname = result['DisplayName'] or name
  displayname_tooltip_override = true
local displayimg = result['Display']
else
  display= colorparse.modulenonxmlparse('&y'..modifier)
end


local img
return p.format(pagelink,
if (mw.title.new('File:' .. image).exists == true) then
displayname,
  img = '[[File:' .. image .. '|16px|link='..pagelink..']]'
displayimg,
else
modifier,
  img = displaychar
name)
end
end


function p.format(pagelink, displayname, displayimg, modifier, name)
local displayname_tooltip_override = false
local display
local modifier = modifier or ""
    if modifier == '' then
display = displayname
elseif 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 == 'displayname-tooltip-override' then
display = displayname
displayname_tooltip_override = true
    elseif string.sub(modifier,1,7) == 'prefix:' then
        modifier = string.sub(modifier,8)
        display = colorparse.parse('&y'..modifier..' ')..displayname
    elseif string.sub(modifier,1,7) == 'suffix:' then
        modifier = string.sub(modifier,8)
        display = displayname..colorparse.parse(' &y'..modifier)
else
display = colorparse.parse('&y'..modifier)
end


local spandisplay = displayname_tooltip_override == true and '<span title="'..name..'">'..display..'</span>' or display
local img = displayimg
if displayimg ~= nil then
if string.len(displayimg) > 4 then
if string.sub(displayimg, -4) == '.png' then
    img = '[[File:' .. displayimg.. '|16px|link='..pagelink..'|alt=]]'
end
end
end


local qudimage = mw.html.create('span')
local spandisplay = displayname_tooltip_override == true and '<span title="'..name..'">'..display..'</span>' or display
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)


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.idfavilink(frame)
  return p.favilink(frame,'ID')
return p.favilink(frame,'ObjectID')
end
end


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


function p.favilinkformat(frame)
return p.format(frame.args['pagelink'],
frame.args['displayname'],
frame.args['displayimg'],
frame.args['modifier'],
frame.args['name'])
end
function p.favilinkformatinline(frame)
local util_text = require('Module:Text Utility')
frame=mw.getCurrentFrame()
local argsstr = table.concat(frame.args, '')
local args = util_text.split(argsstr, '%s*;;;%s*')
return p.format(args[1],
args[2],
args[3],
'',
args[4])
end
return p
return p

Navigation menu