Editing Module:HeroData/navGive feedback
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 lang_module = require('Module:Lang') | local lang_module = require('Module:Lang') | ||
local utilities = require('Module:Utilities') | local utilities = require('Module:Utilities') | ||
-- Shared helper function | -- Shared helper function | ||
local function get_heroes(in_herolabs) | local function get_heroes(in_herolabs, include_key) | ||
local heroes = {} | local heroes = {} | ||
| Line 29: | Line 21: | ||
--- Create a sort key for each hero to ensure correct alphabetical ordering. | --- Create a sort key for each hero to ensure correct alphabetical ordering. | ||
-- This logic handles special cases like "The Doorman" by looking for a "_sort" version of the hero's key in the language files. | |||
local hero_name = lang_module.get_string(hero_key, nil, 'en') | local hero_name = lang_module.get_string(hero_key, nil, 'en') | ||
local sort_key_to_find = hero_key .. '_sort' | local sort_key_to_find = hero_key .. '_sort' | ||
| Line 34: | Line 27: | ||
local sort_key | local sort_key | ||
-- | -- The lang_module returns the requested key (wrapped in HTML) if a translation is not found. | ||
-- We detect this failure by checking if the returned string contains the key we originally searched for. | |||
if string.find(potential_sort_key, sort_key_to_find, 1, true) then | if string.find(potential_sort_key, sort_key_to_find, 1, true) then | ||
-- If the key is found in the result, it means the translation failed. Fall back to the hero's display name for sorting. | |||
sort_key = hero_name | sort_key = hero_name | ||
else | else | ||
-- If the key is NOT found, it means we received a valid sort key (e.g., "Doorman"). Use it. | |||
sort_key = potential_sort_key | sort_key = potential_sort_key | ||
end | end | ||
-- Store reusable hero data | -- Store reusable hero data | ||
| Line 50: | Line 42: | ||
name = hero_name, | name = hero_name, | ||
sort_key = sort_key, | sort_key = sort_key, | ||
link = | link = lang_module.get_string(hero_key, 'en'), | ||
recommended = tostring(is_recommended) | recommended = tostring(is_recommended) | ||
} | } | ||
| Line 64: | Line 56: | ||
end) | end) | ||
return heroes | return heroes | ||
end | end | ||
| Line 70: | Line 61: | ||
-- for [[Template:Deadlock_Wiki/Heroes]] | -- for [[Template:Deadlock_Wiki/Heroes]] | ||
function p.get_hero_nav_cards(frame) | function p.get_hero_nav_cards(frame) | ||
local text_size = frame.args['text_size'] | local text_size = frame.args['text_size'] | ||
local card_size = frame.args['card_size'] | local card_size = frame.args['card_size'] | ||
| Line 76: | Line 68: | ||
local heroes = get_heroes(in_herolabs) | local heroes = get_heroes(in_herolabs) | ||
local | |||
local ret = '' | |||
for _, hero in ipairs(heroes) do | for _, hero in ipairs(heroes) do | ||
ret = ret .. '{{Hero card2' | |||
ret = ret .. '|heroName=' .. hero.link | |||
ret = ret .. '|cardSize=' .. card_size | |||
ret = ret .. '|textSize=' .. text_size | |||
ret = ret .. '|isHeroLabs=' .. in_herolabs | |||
ret = ret .. '}}' | |||
end | end | ||
if debug_mode then | if debug_mode then | ||
| Line 94: | Line 89: | ||
-- for [[Template:Roster]] | -- for [[Template:Roster]] | ||
function p.get_hero_roster(frame) | function p.get_hero_roster(frame) | ||
local in_herolabs = frame.args['in_herolabs'] or 'false' | local in_herolabs = frame.args['in_herolabs'] or 'false' | ||
local debug_mode = frame.args['debug_mode'] == 'true' | local debug_mode = frame.args['debug_mode'] == 'true' | ||
local lang_code = lang_module.get_lang_code() | |||
local subpage_str = '' | |||
if lang_code ~= 'en' then | |||
subpage_str = '/' .. lang_code | |||
end | |||
local heroes = get_heroes(in_herolabs) | local heroes = get_heroes(in_herolabs) | ||
local | |||
local ret = '' | |||
for _, hero in ipairs(heroes) do | for _, hero in ipairs(heroes) do | ||
ret = ret .. '{{HeroRosterCard' | |||
ret = ret .. '|name=' .. hero.name | |||
ret = ret .. '|key=' .. hero.key | |||
ret = ret .. '}}' | |||
end | end | ||
if debug_mode then | if debug_mode then | ||
| Line 114: | Line 119: | ||
-- for [[Template:Quotes Navbox]] etc. | -- for [[Template:Quotes Navbox]] etc. | ||
local utilities = require('Module:Utilities') | |||
p.get_hero_bulletpoints = function(frame) | p.get_hero_bulletpoints = function(frame) | ||
local subpage = frame.args['1'] | local subpage = frame.args['1'] | ||
local in_herolabs = frame.args['in_herolabs'] or 'false' | local in_herolabs = frame.args['in_herolabs'] or 'false' | ||
local debug_mode = frame.args['debug_mode'] == 'true' | local debug_mode = frame.args['debug_mode'] == 'true' | ||
local no_redlinks = frame.args['no_redlinks'] == 'true' | local no_redlinks = frame.args['no_redlinks'] == 'true' -- default: false | ||
local heroes = get_heroes(in_herolabs) | local heroes = get_heroes(in_herolabs) | ||
| Line 124: | Line 131: | ||
for _, hero in ipairs(heroes) do | for _, hero in ipairs(heroes) do | ||
local page_title = hero.name | |||
if subpage then | |||
page_title = hero.name .. '/' .. subpage | |||
end | |||
-- Skip redlinks entirely when enabled | -- Skip redlinks entirely when enabled | ||
| Line 131: | Line 140: | ||
local item | local item | ||
if subpage then | if subpage then | ||
item = | item = '{{PageRef|' .. hero.name .. '|alt_link=' .. page_title .. '}}' | ||
else | else | ||
item = | item = '{{HeroIcon|' .. hero.name .. '}}' | ||
end | end | ||
table.insert(parts, item) | table.insert(parts, item) | ||
| Line 149: | Line 158: | ||
-- for image galleries | -- for image galleries | ||
local utilities = require('Module:Utilities') | |||
p.get_hero_gallery = function(frame) | p.get_hero_gallery = function(frame) | ||
local file_name = frame.args['1'] | local file_name = frame.args['1'] | ||
local description = frame.args['2'] | local description = frame.args['2'] | ||
local in_herolabs = frame.args['in_herolabs'] or 'false' | local in_herolabs = frame.args['in_herolabs'] or 'false' | ||
local debug_mode = frame.args['debug_mode'] == 'true' | local debug_mode = frame.args['debug_mode'] == 'true' | ||
local heroes = get_heroes(in_herolabs) | local heroes = get_heroes(in_herolabs) | ||
local | |||
local ret = '' | |||
for _, hero in ipairs(heroes) do | for _, hero in ipairs(heroes) do | ||
ret = ret .. 'File:' .. hero.name .. file_name .. '|' .. hero.name .. description .. '\n' | |||
end | end | ||
ret = '<gallery>'..ret..'</gallery>' | |||
if debug_mode then | if debug_mode then | ||