Difference between revisions of "Template:GetMasterCategoryList"
Line 29: | Line 29: | ||
Category links can display something other than the category name, and in our case, that's what we want to do. We don't want to see "Category", nor do we want to see the "AY Honors/" part of the category name. That's a file organization detail, not something to display. Further, the category name is in English, which will not do if the invoking page is not English. So instead, we grab the Localized name of the master award, by fetching it from <nowiki>{{:</nowiki>Template:Translations/''English Name of Master Award''<nowiki>{{</nowiki>GetLangSuffix}}}}. | Category links can display something other than the category name, and in our case, that's what we want to do. We don't want to see "Category", nor do we want to see the "AY Honors/" part of the category name. That's a file organization detail, not something to display. Further, the category name is in English, which will not do if the invoking page is not English. So instead, we grab the Localized name of the master award, by fetching it from <nowiki>{{:</nowiki>Template:Translations/''English Name of Master Award''<nowiki>{{</nowiki>GetLangSuffix}}}}. | ||
− | + | ||
− | |||
− | |||
<!--T:7--> | <!--T:7--> | ||
After the switch statement we have this:<br/> | After the switch statement we have this:<br/> | ||
Line 38: | Line 36: | ||
<nowiki>{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}}</nowiki> | <nowiki>{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}}</nowiki> | ||
Which checks to see if we had assigned anything to mlist in the switch statement previously, and if we did, it redefines mlist (<nowiki>{{#vardefine:mlist...</nowiki>) by repeating the contents of mlist (<nowiki>{{#var:mlist}}</nowiki>) followed by the line break (<nowiki><br></nowiki>). It then repeats similar logic to append the category link to mlist:<br> | Which checks to see if we had assigned anything to mlist in the switch statement previously, and if we did, it redefines mlist (<nowiki>{{#vardefine:mlist...</nowiki>) by repeating the contents of mlist (<nowiki>{{#var:mlist}}</nowiki>) followed by the line break (<nowiki><br></nowiki>). It then repeats similar logic to append the category link to mlist:<br> | ||
− | <nowiki>{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master1}}} Master Award{{!}}{{{master1}}} Master Award]]}}</nowiki> | + | <nowiki>{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master1}}} Master Award{{GetLangSuffix}}{{!}}{{:Template:Translations/{{{master1}}} Master Award{{GetLangSuffix}}}}]]}}</nowiki> |
+ | |||
+ | As with the category-based logic in the switch statement, we are dealing with localization here too using very similar logic (using <nowiki>{{GetLangSuffix}}</nowiki> to link to the correct category, and the <nowiki>{{:Template:Translation...}}</nowiki> magic) just as before. | ||
+ | |||
+ | It then repeats that logic using <nowiki>{{{master2}}}</nowiki>. | ||
<!--T:8--> | <!--T:8--> |
Revision as of 02:02, 26 January 2021
This template outputs a <br/> separated list of category links to the Master Awards an honor belongs to. It was designed to be used by the honor_infobox template.
Example
{{GetMasterCategoryList
|category=Arts, Crafts and Hobbies
|master1=Wilderness
|master2=Conservation
}}
[[:Category:AY Honors/Artisan Master Award|Template:Translation/Artisan Master Award]]
[[:Category:AY Honors/Wilderness Master Award|Template:Translations/Wilderness Master Award]]
[[:Category:AY Honors/Conservation Master Award|Template:Translations/Conservation Master Award]]
Mechanics
The output list is stored in a variable called mlist (master list) and that is emitted at the end of the template with {{#var:mlist}}.
It starts by looking at the {{{category}}} parameter and assigning a mlist to one of the category-based Master Awards. Not every honor category results in a Master Award, so the switch statement doesn't deal with all of the known categories. In other words, mlist may or may not be empty when we come out of the switch statement.
It then looks to see if the {{{master1}}} argument specified that the honor is part of some other Master Award, and if it is, it adds that to mlist. If mlist already has something assigned to it, the code will append mlist with a <br/> tag before appending the master award category.
The category link it actually adds will be [[Category:AY Honors/some master award/language]], where some master award is constructed by appending {{{master}}} to "Master Award". So we'd get for example, "Artisan Master Award". The /language part is added by the {{GetLangSuffix}} call.
Category links can display something other than the category name, and in our case, that's what we want to do. We don't want to see "Category", nor do we want to see the "AY Honors/" part of the category name. That's a file organization detail, not something to display. Further, the category name is in English, which will not do if the invoking page is not English. So instead, we grab the Localized name of the master award, by fetching it from {{:Template:Translations/English Name of Master Award{{GetLangSuffix}}}}.
After the switch statement we have this:
{{#if:{{{master1|}}}|...
The goal of that statement is so that we can add a <br> to mlist if the {{{master1}}} parameter was provided. Then :
{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}}
Which checks to see if we had assigned anything to mlist in the switch statement previously, and if we did, it redefines mlist ({{#vardefine:mlist...) by repeating the contents of mlist ({{#var:mlist}}) followed by the line break (<br>). It then repeats similar logic to append the category link to mlist:
{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master1}}} Master Award{{GetLangSuffix}}{{!}}{{:Template:Translations/{{{master1}}} Master Award{{GetLangSuffix}}}}]]}}
As with the category-based logic in the switch statement, we are dealing with localization here too using very similar logic (using {{GetLangSuffix}} to link to the correct category, and the {{:Template:Translation...}} magic) just as before.
It then repeats that logic using {{{master2}}}.
Note that the {{!}} template is used to output a | within the [[:Category... link so that we can indicate the text displayed as the link. The use of the {{!}} template is necessary to prevent the {{#vardefine...}} function from interpreting it as its own separator.