User:Gorgon/Sandbox/Sandbox Alpha

From Avlis Wiki
Revision as of 06:20, 4 January 2024 by Gorgon (talk | contribs) (Undo)
Jump to navigation Jump to search

[[Magic:{{{School}}}|{{{School}}}]] {{{Subschool}}} {{{Descriptors}}}
Level: {{{Level}}}
Innate Level: {{{Innate Level}}}
Component(s): {{{Components}}}
Casting Time: {{{Casting Time}}}
Range: {{{Range}}}
Target: {{{Target}}}
Duration: {{{Duration}}}
Counter(s): {{{Counters}}}
Saving Throw: {{{Saving Throw}}}
Spell Resistance: {{{Spell Resistance}}}
Metamagic: {{{Metamagic}}}
Energy Substitution: {{{Energy Substitution}}}

{{{Description}}}

<templatedata> {

"description": "Spell te

This is a user sandbox of Gorgon. A user sandbox is a subpage of the user's user page. It serves as a testing spot and page development space for the user, and is not an Avlis wiki article.

Anything up to/including the Template start heading will not be included in transclusion of this template (or any part of the trailing documentation section either, though that will eventually be formalized template documentation, possibly with transcluded categories at the end).

I love to over-comment my code, so why change things here...




Test version of Template:Spell

Extensions that would make this work better [My wish list]


  • Extension:DynamicPageList (third-party) - Enhanced version of Extension:DynamicPageList (Wikimedia)
    • DPL:Overview - Generate dynamic reports based on category members and selective included info from each (Extension:Labeled Section Transclusion above would really help there).
    • DPL:Template:Catlist - Picture this totally reformatted as filter/sort options up top of the Spell List page, as a dynamic table. It starts showing all spells, but sortable with one click by level, school, class, or any other useful Template:Spell parameter/category used by them. Then add in the ability to filter results to only certain kinds/combinations (e.g, Show only cleric evocation spells, sorted by level, with the option of showing specific domain ones as well).
    • I doubt anyone else besides me would use this (except maybe the occasional dabbler), but it would really be useful for spells, and maybe a few other things eventually. Revamping all spells via this template is a huge undertaking (and my main goal for wiki updating, now that I can verify/test spells again), so adding this extension for that work alone would make a huge difference.
    • After looking into the more recent version of Extension:DynamicPageList (Wikimedia) (the one used by most Wikimedia projects, not the "enhanced - 3rd party one"), it may be just as useful (or better), since it allows more sort options. Need to see both in practical use before deciding anything.
    • I definitely want this now. The Extension:DynamicPageList (Wikimedia) version is off my wish list, since that functionality is pretty much the main reason I want it.
  • Extension:Arrays - For parsing things like the V, S, M in a single "Descriptors" parameter, without a lot of #explode etc. code (still looking for the best way to do that, and that needs the string parsing extensions enbled).


Revision notes


  • I think Buddha had the right idea with his discussion on the Categories page about reformatting how we categorize spells. The current Spell List page (and its various subversions) all rely on manual updating when any new changes happen to it, like a new spell being added. Revisions to this template will improve how each spell is displayed, and categorized (even without new extensions), so moving to category listings that update dynamically makes a lot of sense.




Can the Name template parameter be taken from the page name automatically?

  • Maybe as a default if not given as a parameter?
  • Might need some page renaming, but should work.
  • Keeping the template from categorizing itself as a spell might be annoying, unless namespace checking or other validation is done.


  • Taking the Name template parameter from the {{SUBPAGENAME}} isn't so simple.
    • The Magic: (and Epic Spell:) prefix needs to be stripped after checking if it exists, especially for using it as a sort key with categories. Checking for it is easy with something like {{#ifeq:{{lc:{{padleft:|6|{{SUBPAGENAME}}}}}}|magic:|}}. Removing it is harder. {{#explode:{{SUBPAGENAME}}|:|1}} could do it, but needs the parser functions for string handling enabled with $wgPFEnableStringFunctions = true; in LocalSettings.php (see the second top note at: Extension:StringFunctions).
      • All the spell pages should be stripped of these prefixes themselves. Someone was setting it up as if there were actual namespaces for them, but there aren't. Do I really want to get into that mess?
    • If the {{SUBPAGENAME}} has more than one word for the spell name, the second and latter words need to be capitalized.
      • Using some sort of {{#replace:{{#explode:{{SUBPAGENAME}}| |1}}|{{ucfirst:{{#explode:{{SUBPAGENAME}} code, that first counts the words and has enough depth levels for them all would get messy fast (for loop in wiki markup?).
      • Someone must have had a similar problem and found an easier solution, so do some searching.
    • We'll have to assume all page names like Bigbys have been changed to use apostrophes too (e.g., Bigby's) - no sane way to check and fix that here (well maybe a switch with the known names already, but new ones would need constant updates... which it what this is supposed to eliminate).
    • If it isn't easy, just make it a required parameter with error message, like the rest.




  • Redone using onlyinclude sections with transcludesection tags (See above).
    • Not as simple as Labeled Section Transclusion, and can't do some things with it, but good enough for now.
  • Major School/Subschool/Descriptors redo.
    • Added the Subschool: and Descriptors: prefixes, but they may make the School line too long.
    • Added a bunch of validation checks in switches.
  • Added Spell Name: at the top.
    • Having every spell "Name" be the page name "Magic:Name" was inaccurate and confusing.
    • Uses the Name = parameter, or {{SUBPAGENAME}} if not entered.
  • All parameters are now Proper Case.
  • Lowercase conversion is used for comparison validation of parameter values (when possible).
    • ifeq: and case entries in a switch are case sensitive, so this is necessary.
  • Proper Case conversion is used (when possible) in output results.
    • If people don't use the right case, this should fix at least some of the issues.
  • Added a bunch of namespace checks as part of the validation,
    • All spells should be in the Main namespace, so anything outside that is a template (or test page in a userspace).
    • Added a hak to make my sandbox spell pages work as if in Main (remember to change it back when publishing this).
  • Started making missing parameter entries (without forced defaults or warnings) not show in Main, instead of the {{{parameter name}}} (like in the Template namespace).
    • Better to add warnings (when defaults aren't possible) for all that should be included. If they see annoying red stuff, they will have to fix it.
  • Split Description Summary and Description Details parameters, so the summary can be transcluded as a short description elsewhere.
    • Need to make the Description Details optional (and conditional on the summary) and add a default "No description" blurb to the summary.
  • I don't like all the ifeq: {{NAMESPACE}}