Welcome to the Coding forum

This forum is dedicated to discussing matters of template and bot coding. These matters are now distributed across various talk pages, and it is hard to later find these gems of information. So how should we use this forum?

  • put it on the watchlist (duh)
  • post questions
  • post answers
  • post links to questions and answers elsewhere, new or old
  • post announcements and links to these
  • post requests for help with (debugging) templates or bots
  • anything else related to templates and bots


This forum won't fly if people aren't watching it. Please sign here (using three tildes, ~~~ ) to indicate you do.

Useful links

MediaWiki features



You need a C (?) compiler and the utility make to get Perliwikipedia to run. These come free with MinGW or cygwin (see below).


User:Dantman has a fork of it, and some adapations linked on the userpage.

GNU tools for Windows

The GNU tools are a suite of powerful tools used by programmers around the world for decades. They have originally been written for a Unix-like operating system, but most of them have been "translated" to windows, usually from the same sources.

  • MinGW, a collection of tools for compiling C/C++ programs, including `make`, `gcc`, etc.
  • CygWin, a huge collection of GNU tools (the closest you can come to running GNU/Linux on Windows); includes Perl.
  • GnuWin32, a collection of useful tools that can be used separately. GnuWin32 doesn't include the gcc compiler, so you need to find a port of that elsewhere (e.g. in MingW).
  • gawk, a port of `awk`, is the tool mendel likes to use for quick automated text processing tasks.

Feel free to add more useful links.

Interwiki Transclusion

See User:KyleH. Since when is that possible? --mendel 01:39, 12 June 2008 (UTC)

Been a while, obviously. See w:Shared_templates. --mendel 12:36, 12 June 2008 (UTC)

Skill Bar and other stuff

  1. There is a workaround for #ifexist. Let's say article "redlink" doesn't exist. Then {{redlink}} is #ifeq to [[:Template:redlink]]. Of course this costs a lot when "redlink" does in fact exist. However, it ought to work well on images as they typically have short articles if any. So {{#ifeq {{Image:someimage.jpg}}|[[:Image:someimage.jpg]]|it does not exist|it exists}}.
  2. In finding that out, it helped that one can add action=raw&templates=expand&ctype=text/css to an URL to see the un-htmlized version of a page after template expansion. Are Mediawiki URL additions and options (liek action=raw and ctype) documented anywhere?
  3. Why did PanSola make Template:Skill_bar/doc when there is, in fact, no documentation on that page? Can anyone propose a simple way to find those templates that have no docs? including those that have a /doc with nothing on it? not even a stub tag or something? Hmm, probably comes down to parsing pages_current again.
  4. Is {{Skill bar}} used for user skills at all, or is it only supposed to be used for existing skills? #ifexist:Image:{{{1}}}.jpg is not likely to work for any parameter outside mainspace, and in fact there is no article that starts with Image:User: . So the technique to get the correct image that I used in {{Skill list item}} could be ported to {{Skill bar box}}, and that would avoid the #ifexist entirely.
  5. We could then have skill bars for monsters and totally, like, not use {{Skillset}}.

--◄mendel► 14:35, 25 June 2008 (UTC)

  1. Two errors in the code example you posted (that you are probably aware of anyway): first, you have to have a colon after #ifeq (#ifeq:); second, the first word of the image name will be titlecased by MediaWiki, so the second part of the comparison needs to reflect that ([[:Image:Someimage.jpg]]). So: {{#ifeq: {{Image:someimage.jpg}}|[[:Image:Someimage.jpg]]|it does not exist|it exists}}.
  2. mediawikiwiki:Manual:Parameters_to_index.php
  3. Maybe he was planning on documenting it later, and "later" never came? I don't know how to easily find undocumented templates.
  4. I'm pretty sure Skill bar is only used for existing skills, and removing the #ifexist: from Skill bar box would completely empty Category:Pages with too many expensive parser function calls.
  5. I'd be for that, although we'd still need a separate template because monsters rarely need a full 8-skill bar, while the userpages that use it do expect a full 8-skill bar (a lot of them have "Optional"s in the middle of the bar). This "Monster skill bar" would only need a simple modification: each line that calls a Skill bar box would be wrapped with an #if:, like {{#if: {{{1|}}} | {{Skill bar box|{{{1|optional}}}}} }}. —Dr Ishmael Diablo the chicken 04:23, 27 June 2008 (UTC)
1. Hah! That's how you know I didn't copy and paste that code snippet!
4. Let's just remove the #ifexist then!
5. We could call that Template:Skillbar (and it wouldn't have |optional in it) (Yay for 7 closing braces!).It might be necessary to put a single {{trim}} around all the #ifexist so that a stack of nonexistant boxes at the end doesn't add too many spaces to the last table cell. You can then express Template:Skill bar as {{Skillbar|{{{1|optional}}}|{{{2|optional}}}|...|{{{8|optional}}} }} if it ever becomes necessary.
Actually, see User:M.mendel/Templates/Skillbar, User:M.mendel/Templates/Skillbar2 and User:M.mendel/Templates/Skill bar box.
I could write short articles on "Optional" (possibly redirect to "optional skill" and write that) and "generic resurrect". The cheapest fix to the missing monster skill icons is to do image redirects for them, going from Monster skill.
To fix the way Skillbar2 looks now, there are two options: a) undelete Template:Optional and write Template:empty and Template:Generic resurrect, or revert my Skill bar box to what it was before and use the image redirects for the monster skills. --◄mendel► 10:32, 27 June 2008 (UTC)


There is a template called {{Color}}. It is deprecated. Instead we have now W-color, R-color etc. LordBiro once advocated doing that with CSS (and apparently that still works) - I would advocate that for pretty much the same reason. It causes no extra server headaches, and needs just a browser that can cope.

For template colors it seems to make sense to me to use templates without parameters, i.e. {{Color light warrior}}, {{light color warrior}} or even {{light warrior color}}. The first version sorts better, the last reads better. These templates would just return the color code, i.e. they'd be extremely short and contain no parser function at all. We have 11 colors, in light, dark, possibly "border" and "background", and the new pale. The professions exist abbreviated and written out. (Whoever thought up these abbreviations ought to be stoned, why can't I just substring the first 2 letters? Argh!)

I am bringing this up because I want to experiment with a set of "pale" background colors, and I need to make templates for them. Unless we change site CSS. (Well, I guess I could experiment with personal CSS and change site CSS later...) And of course I need to use the long versions for input... :-( --◄mendel► 01:22, 30 June 2008 (UTC)

Skill box damage output Template

Ok, I need your advice here. I'm currently trying to clean up the Area of effect skills quick reference page. In this page the Template:Skill box damage output is used. However, the 'damage' column isn't needed here and all mentioned skill (-templates) don't have 'damage' filled in, so it will result in a list full of {{{damage}}} tags. My take on this is that there will be 3 options:

  1. Drop use of this template, write your own table
  2. Copy existing template to new template, take damage column out (and maybe alter notes column too)
  3. Adjust existing template and insert clever trick to 'hide' damage column if needed

What would you think ? What is common here, in such situations ? -- Merty sign-- ( talk ) 11:59, 3 July 2008 (UTC)

As a quick fix, I made the tags disappear when there is no damage. Is there anything that should be listed for these skills instead? --◄mendel► 12:43, 3 July 2008 (UTC)
Hey thanks Mendel, thats quick ! As far as I can see, I cannot think of anything that should be listed instead. Now we have an empty 'damage' column and 'note'. Ah well, at least its a start..ty :) -- Merty sign-- ( talk ) 09:37, 7 July 2008 (UTC)

Dialogue CSS

I would like to propose some CSS for Mediawiki:Common.css to easier format cutscene and other dialogues.

 div.dialogue p { text-indent:-4em; margin-left:4em; font-weight:bold; }
 div.dialogue p i { font-weight:normal; }

See User_talk:Quizzical#Cutscene_formatting for the intended effect.

Quotation marks could be added with these two lines (if there's no bug):

 div.dialogue p i:before { content:"\201C" }
 div.dialogue p i:after { content:"\201D" }

--◄mendel► 21:37, 7 July 2008 (UTC)

I tested these lines on my global.css and they work (the quotes, too). --◄mendel► 13:22, 8 July 2008 (UTC)

Why does this work?

Q: Hey, I'm sort of teaching myself the different coding languages (got hung up on javascripting, bleh), and I was wondering why the code for the div class dialogue works. The code is, as follows:

div.dialogue p { text-indent:-4em; margin-left:4em; font-weight:bold; }
div.dialogue p i { font-weight:normal; }

The answer I got to was that because of the javascript that already exists, each page is written in a way that the javascript sees the apostrophe and decides to write a paragraph style, either "p", "p i", or some other third "p" type for normal text. As I said before, I don't know how to code so I can't check the javascript file and see if I'm right or not. If you could enlighten me, it'd be greatly appreciated but, by all means, don't feel obligated. Powersurge360 18:47, 13 August 2008 (UTC)

A: This has absolutely nothing to do with Javascript; it should work just as well when you turn Javascript off. (Well, on NN4.7 turning JS off also disabled CSS, but that was years ago in a galaxy far, far away). The CSS comes into effect after the wiki has converted the wikicode to HTML. The wiki converts regular text to paragraphs (<p>this is a paragraph</p>) and apostrophes to italics tags (<i>this is italic text</i>). You can see this if you view the page source with your browser (provided you can find the text, you might want to use action=render to get rid of the wiki skin code ; see above on how to use that).

<div class=dialogue>
Speaker: ''I am talking.''
<div class=dialogue>
<p>Speaker: <i>I am talking.</i></p>

Speaker: I am talking.

Now stylesheets (CSS) work by selecting a type of tag and specifying how content in that tag should be formatted. You can either put the format in the style="" attribute in the tag itself; or you can put it at the top of the HTML file; or you can import it at the top of the page file from another file. If you put

p { color: red; }

at the top of your HTML page or in a .css (like [[w:Special:MyPage/global.css]]), all <p> text (all paragraphs) in the HTML that includes this style will be red. Headings won't be affected, because they aren't inside <p> tags, they use <h1>, <h2> etc.

We need to select more specific paragraphs, though.

div.dialogue p { text-indent:-4em; margin-left:4em; font-weight:bold; }

means we select all <p> tags that are directly inside a <div> tag; and not just any <div> tag, but it has to have class=dialogue. This means any paragraph text inside the <div class=dialogue> is indented and bold.

Now one final adjustment is necessary: the text in italics should not be bold. Therefore, we use

div.dialogue p i { font-weight:normal; }

to select text that is inside <i> tags inside <p> tags inside a <div> with class=dialogue, and only that text is made to be not bold, but normal.

All this is being done by your CSS-compatible browser without any Javascript at all. --◄mendel► 19:18, 13 August 2008 (UTC)

Ok, so I didn't do too badly, I understood most of why it worked, but didn't quite get how the wikicode became HTML mark-up (assuming it was javascript as opposed to whatever it actually is). Thanks for moving/explaining it. Powersurge360 19:21, 13 August 2008 (UTC)
Javascript can put additional HTML text on a page after the wiki has sent it to your browser (the nav boxes that show/hide work that way), but that's not the case here. --◄mendel► 19:28, 13 August 2008 (UTC)

Naming Convention for Templates

Do we have one? "BeastInfo", "QuestItem", "Skill box", "Effext box", "Shield begin info", "Quest-stub", "Unique-item-stub", "Location info", "CollectableCategory", "ElonianMissionProgression", "MonumentsNavBox". Guess we don't. --◄mendel► 05:35, 8 July 2008 (UTC)

Category list for AWB

As long as making a category list from within AWB doesn't work, you can use Special:Export to create a category list. Enter the category name into the top box, click "Add", copy the contents of the big edit box to a text file, and let AWb make a list from that.

For deprecated methods of generating a category list by scripting, see here in the page history.

AWB is now able to create lists from categories. Not sure if it was the new release of AWB or Wikia's upgrade to MediaWiki 1.13, but at least it works. —Dr Ishmael Diablo the chicken 02:06, 20 September 2008 (UTC)

Mini Database Dump

The Database dumps are quite big - editing a 250MB with a text editor is a daunting task. You can make a miniature database dump that contains just one page with Special:Export. Just enter the page name into the big box and click "Export". ("Save as file" doesn't work for me, though.) The XML file you get has exactly the same structure as our big database dumps. ◄mendel►


...makes four. Right? Well, it should. Apparently our version of MediaWiki doesn't have support to do exponentials. Is there perhaps some alternative workaround I could use in the meantime? Calculating a power manually is quite messy...

If a^(b(x)):

  1. I evaluate b(x) (=c)
  2. Truncate the value (=d)
  3. Multiply a by itself d times
  4. Take the remainder after truncation by subtracting d from c (=e)
  5. Output to the user that they must manually multiply a by itself e times to finish the calculation

...and I'm trying to make a damage calculation template, so after that the user would then need to multiply by the Raw Damage. That is too much work for the user, I think.

Maybe I should just go bug Kyle instead. Entropy Sig (T/C) 06:56, 8 September 2008 (UTC)

Ok, I've done some digging. Meta documents powers (and logarithms and whatnot) since May 10th, albeit not on the m:Help:ParserFunctions page. They seem to be running ParserFunctions (Version 1.1.1), same as we. Ofcourse they're running MW 1.14a , and it seems that the calculations are somewhat dependent on the server OS as well. I'd wait until we get MW1.13 and file it as bug report then. ;-) (But since the database has just been locked, who knows? we may already have that.)
--◄mendel► 11:32, 8 September 2008 (UTC)
So close to achieving the ultimate dream of GuildWars Wikia coders... :\ Other than this obstacle, I think User:Entropy/dcal should be ready for deployment soon. I wonder why it seemed so difficult before, it's really quite a simple thing to do if you put the data-gathering as the user's duty. To make it really really cool I would need to put in a whole listing of every damage source at the same, and a way to query its raw damage at a specified rank...etc. Lots of possible automation that I could add but it would make the template grow exponentially. (Pune.)
Random idea...I wonder if we could use an outside site to do the math? I know there is some template somewhere which puts out calls to an outside site for...timezone differences or something. Entropy Sig (T/C) 14:42, 8 September 2008 (UTC)
Yeah, Template:TZ. <- Check it out. Then we would do^{{{expression}}} or such.
Actually, if someone had their own website, it would probably be a lot easier to make a template that calls out everything to there and then the website returns the data to the template for display. I am sure it would be easier to code this without the restrictions of MediaWiki. Less drain on system resources also. Entropy Sig (T/C) 14:50, 8 September 2008 (UTC)
The way that would work is to make it site Javascript and link to it from the sidebar. I envision someone clicking on a "damage calculator" sidebar link, then a small window pops up that lets you do the calculations.
Good default values are "12" for attributes, "60" for armor, and "20" for a level. That makes casters do 60 damage with no mods, (hope that's right - I am too lazy to check), so that'd be a good damage default for average weapons as well. --◄mendel► 17:06, 8 September 2008 (UTC)
Well I don't know how to write .JS unfortunately. I could do it in Visual :P Those are good default values, I was tired. Entropy Sig (T/C) 23:49, 8 September 2008 (UTC)
Yay, it works now! Entropy gogogo! --◄mendel► 15:09, 10 September 2008 (UTC)
Cheers \o/\o/\o/ Once I'm done you can help me make it into a sidebar link or Monaco widget through .JS ! Entropy Sig (T/C) 21:23, 10 September 2008 (UTC)
Damage template is done now. Moving to mainspace at Template:Damage. If someone can convert it into a cool .JS thing that would be awesome...maybe we can have our own damage calculator page. Entropy Sig (T/C) 23:02, 10 September 2008 (UTC)

PAGESIZE not working

(Reset indent) The thing that does not yet work is 13, which works everywhere but our wiki (I tried central wikia and wowwiki), and the cause may be that I had created a template of that name - it's been deleted today, so I hope the server script run that gives us the wantedpages etc. fixes that. If not, somebody's got to totally wipe the page from the database. --◄mendel► 21:26, 10 September 2008 (UTC)

I don't see how that is totally relevant but ok. sizeof() is a fun and useful function, but what would you do with it on Wikis? Entropy Sig (T/C) 21:34, 10 September 2008 (UTC)
Well, sizeof() does soemthing totally different in C, but anyhow.... what I want to do is tally up the size of Warwick's talkpage archives, and maybe automate that so we can compute some editcount/talkpage ratio for other users as well. More of a pastime, really. --◄mendel► 23:08, 10 September 2008 (UTC)
Right, so the talkpage is X Kb, you use sizeof() to find the size in bytes of each talkpage, which is part of the Warwick's archives array. foreach(archive in warwick_archives){ sizeof(archive) } ... Anyway can't you just take the contents of the archive, stick it to MSWord, and use Word Count? I understand that you want to do it automated, but...meh. I think it's strange how there isn't already a MediaWiki function for this, since obviously the software has the capability to count page size. Else it couldn't give those messages at 32kb about archiving. Entropy Sig (T/C) 23:24, 10 September 2008 (UTC)
Entropy, the MediaWiki Parserfunction that does this is called PAGESIZE, it is new with version 1.13, and it works on all Wikia wikis I've tested except ours. Do you want to copy & paste 49 pages, some quite huge, into a MSWORD document? I tried two approaches doing Wikitemplates, but ran into the processing limits imposed by the server because WarWick's archives are just too darn huge - and from those attempts stems the template that blocks the MediaWiki PAGESIZE from working, if my guess is right. Once it works, the oldest revision of User:Warwick/Archive size‎ just needs to have an #expr added that sums it all up. --◄mendel► 23:39, 10 September 2008 (UTC)
"I think it's strange how there isn't already a MediaWiki function for this" before MediaWiki 1.13. I understand that you may be frustrated but why take it out on the ignorant? :\ Entropy Sig (T/C) 23:41, 10 September 2008 (UTC)
I've reported the issue, seems today I find a lot of wikis with the problem when yesterday there wasn't one. --◄mendel► 10:33, 11 September 2008 (UTC)

JS for redirect=no

I'd find a piece of JS useful that adds "?redirect=no" to all URLs on a page that don't have a question mark in them, and mayve "&redirect=no" to the URLs that do. It could be called via an extra tab. This would enable me to go to skill icon page from a skill page without triggering the redirect and attendant page load first. --◄mendel► 10:35, 13 September 2008 (UTC)

Minorly related question, but what is the difference between a "?function" and a "&function" call? I am also wondering if it would be more practical to instead make a piece of .JS that simply disables all redirects for you while it is on (so that you don't need to append URLs). Entropy Sig (T/C) 18:41, 13 September 2008 (UTC)
In a URL, the "?" signifies the beginning of parameters that are not part of the actual URL. The "&" is used between parameters if you have more than one. What Mendel's saying here is that for links that don't have parameters yet, the function would need to add "?redirect=no", and for those that do have parameters (that already have a "?" in the URL string), it needs to append this parameter to the existing set of parameters, as "&redirect=no" (so the full parameter list would be something like "?action=edit&redirect=no"). —Dr Ishmael Diablo the chicken 18:57, 13 September 2008 (UTC)
Thank you, doctor. Remains for me to clarify that the redirects are done by the server without knowledge of the browser, so you cannot actually use JavaScript to control the server directly. What you can control is the page URL for the next page, because that is sent by the browser software and can be rewritten by the Javascript before it is sent (i.e. before you click on that link). What I take you to mean is to make it a toggle, so you would not have to click it for each page, but you'd turn them off once, and they'd stay off until you turned them on again. Clever! --◄mendel► 21:35, 13 September 2008 (UTC)

the following was copied from Entropy's user talk

The {{PAGENAME}} magic word (no need for template) is part of the new MediaWiki parser engine - it was released alongside the old engine in 1.12. Wikia hasn't forced anyone to switch to the new engine yet, although individual wikis can request it if they want it, but they are going to roll it out to everyone in the near future. There's a page Special:ParserDiffTest where you can compare the way a page is rendered with the old and new engines (the biggest difference I've seen is that the new engine adds a "class='mw-redirect'" attribute to all links that link to redirect pages, could be useful if we ever wanted to trim our use of internal redirects). —Dr Ishmael Diablo the chicken 22:52, 24 September 2008 (UTC)
Hey, could that be used for Forum:Coding#JS for redirect=no?? Also, we have 1.13 now iirc, and I was talking about the magic word/template thing which gives a page's size in bytes, not return the URL or whatever. Entropy Sig (T/C) 22:59, 24 September 2008 (UTC)
Right, Wikia is now on 1.13, I was saying that the new engine was first released in 1.12. And I meant {{PAGESIZE}}, dunno why I typed "NAME". >.>
{{PAGENAME}} only refers to the name of the current page, so it wouldn't be of any use in creating "?redirect=no" links from a page. —Dr Ishmael Diablo the chicken 23:05, 24 September 2008 (UTC)
I was talking of the class='mw-redirect' . Entropy Sig (T/C) 23:08, 24 September 2008 (UTC)
Ohhhhh... I see. Yes, that would work. There's a JS function getElementsByClassName whereby you could get all links that had class='mw-redirect' and rewrite them to include [?&]redirect=no. Brilliant! —Dr Ishmael Diablo the chicken 23:25, 24 September 2008 (UTC)

Solution found? Entropy Sig (T/C) 03:49, 25 September 2008 (UTC)

Sort keys for pages in categories

Sometimes you want a page to placed somewhere else in a category (a common case is when the pages have a common prefix and all get sorted under the same initial - you'd want them to sort by the part of the name that really matters). The way to do it is to add the sort key after the category, like so: [[Category:Forums|Coding]] would sort this page in Category:Forums, it would be listed as "Forum:Coding" but display under C (not F), sorted after "Cobbling" and before "Cooking".

Articles that use several categories, or that get autosorted by templates, can use another way to set their sort key: {{DEFAULTSORT:Coding}} sets a default category sort key for the whole current page; it acts as if |Coding was appended to every category anywhere on the page, including those put there by templates. --◄mendel► 21:48, 18 September 2008 (UTC)

Ugly hacks

Category:Ugly hacks is for code that does the job, but less than elegant - it may be hard to read, perform badly, or I may remain uncertain that it works correctly under all conditions. Putting a page in that category remains invisible on the page itself once we upgrade to the new parser. I strive to use a <!-- comment --> on the page to indicate the ugliness so that others can have a go at beautifying. --◄mendel► 05:50, 23 September 2008 (UTC)

rearranging the RC box

fieldset.rcoptions { border-style: none; margin: 0; padding: 0; }
fieldset.rcoptions form table tr+tr { position:absolute; top:235px; left:330px; }

See User_talk:JonTheMon/monobook.css. --◄mendel► 17:28, 29 October 2008 (UTC)

Recentchanges for WhatLinksHere ?

Try Special:RecentChangesLinked/Category:GuildWars Wikia or Special:RecentChangesLinked/Image:Diablo_the_chicken.gif (wtf?) or Special:RecentChangesLinked/User:M.mendel. --◄mendel► 18:05, 29 October 2008 (UTC)

mass edits outside RC

This procedure needs admin powers for the "import" step.

  1. Special:Export the articles that are to be edited
  2. strip Wikia's copyright message from them
  3. edit the articles
  4. make the date current
  5. change the summary
  6. change the author to yourself
  7. I am unsure what happens to the revision numbers
  8. Special:Import the bunch

I haven't tested it yet, though, so proceed at your own risk. --◄mendel► 23:19, 7 November 2008 (UTC)

Dubious. Why not use a bot? Entropy Sig (T/C) 01:26, 8 November 2008 (UTC)
Ah. Better post a list of pages affected, so people can review.
With a bot, you're at the mercy of the varnishing gurus. For extensive edits, your own machine needs to run for a long time if you respect the idea of not doing more than 6 edits per minute. The server load is higher because the bot also reads the pages, checks for edit conflicts etc. With the export/import, if it is a complicated change, you can preview the result on all the pages before going live.
For the upcoming language/interwiki link feature, the challenge is to use the existing translation lists to auto-link a lot of pages. If I want to do that with AWB, I need to write a template that I can subst: on a page and let the wiki do the lookup (it's a bit involved). Or I could code my own bot (with all the possible bugs this entails). Or I can write a script that converts the exported pages and debug that to perfection, wait for a quiet morning with <2 wiki edits/hour and, in one fell swoop, turn the feature on. What would you prefer? --◄mendel► 09:21, 8 November 2008 (UTC) & 10:58, 8 November 2008 (UTC)
Because my technical understanding is far inferior to yours, I'll assume that you've forseen that it takes less "work" for all parties and machines involved, so you can go ahead and do it this way. But yes, do list what pages will be changed :) Entropy Sig (T/C) 10:14, 8 November 2008 (UTC)
Bah! I haven't foreseen anything; it was your comment that made me think (thank you). And "being too lazy to explain things properly" doesn't equal "far superior tech". At any rate, there's going to be testing, reported here, before anything big goes down. --◄mendel► 10:58, 8 November 2008 (UTC)
The non-technical summary of the above technical argument goes thus:
  • code my own bot: I'm too lazy to learn how to do that
  • use AWBot + templates: doable, but boring
  • Special:Export/Import: shiny new toy, lemme play with that!
Of course, the dis-/advantages listed above are true, but they're not the real motivation. :-P --◄mendel► 11:49, 8 November 2008 (UTC)
What happens if someone else edits one or more of the affected pages between exporting and reimporting? Would their edits be overwritten? ¬ Wizårdbõÿ777(talk) 19:21, 8 November 2008 (UTC)
That depends on the date of the imported revision; if it is older, the revision shows up in the history, but won't be current. That's why I suggest using a time of few edits because then you can look at RC, see what edits have been made in the interim, and manually deal with them. --◄mendel► 21:59, 8 November 2008 (UTC)

px vs. em

moved from User talk:M.mendel

What's the difference? I always thought they were just different units to measure the same thing, like feet vs. meters. —Dr Ishmael Diablo the chicken 17:02, 8 December 2008 (UTC)

1 px is one pixel, whereas 1 em is equivalent to the size of the font in the element. So if your div has a font-size of 12px, 2em is 24px. ¬ Wizårdbõÿ777(talk) 18:30, 8 December 2008 (UTC)
Oh, and "em" comes from typesetting, where one "em" was the width of the letter M (the widest letter). ¬ Wizårdbõÿ777(talk) 18:33, 8 December 2008 (UTC)
Yes, that is correct. So if a user has set the browser to enlarged fonts, or uses another dpi setting for the display so that the letters take up more pixels, the box will adapt to the size. That is assuming the font size is given in pt, not in pixels; if the font size is set in pixels, there is no difference. --◄mendel► 21:55, 8 December 2008 (UTC)

date displays

I'm keeping the hacks I tried for Template:User birthday here in case anyone needs them. --◄mendel► 11:39, 10 January 2009 (UTC)


Sat Jan 19


Saturday, 19th of January

<div style="position:relative;">[[Image:Birthday_Cupcake_(effect).jpg|45px]]
<div style="position:absolute; top:0px; left:6px; color:white; font-size:11px;">
[{{fullurl:{{FULLPAGENAME}}|action=purge}} {{#sub:{{CURRENTDAYNAME}}|0|3}}]
<div style="position:absolute; bottom:0px; left:6px; color:white; font-size:11px;">
[{{fullurl:{{FULLPAGENAME}}|action=purge}} {{CURRENTMONTHABBREV}} {{CURRENTDAY}}]

Link color change

Hyperlinks are blue and change color when you have visited the page in question. Do we have CSS in place that we can attach to always make a link black? --◄mendel► 12:15, 12 January 2009 (UTC)

I seem to recall changing the font color will override the automatic "clicked" color. Btw, the color only changes in IE, not Firefox (not sure about any other browsers.) --Macros 12:37, 12 January 2009 (UTC)
Yes, the color changes by default in Firefox - it's set in the site CSS, unvisited is #002bb8, visited is #5a3696. You can easily override it with a span tag inside the wikilink, [[User:Dr ishmael|<span style="color:black">Dr ishmael</span>]] => Dr ishmael. A lot of people do this in their signatures. —Dr Ishmael Diablo the chicken 15:32, 12 January 2009 (UTC)
Thank you. --◄mendel► 22:36, 12 January 2009 (UTC)

Transcludable Special Pages

The pages listed there can be transcluded onto wiki pages. As an example, for RecentChanges, it could look like this: {{Special:RecentChanges/namespace=10,days=30,limit=10,hideminor=0}}.

As of this writing, for RecentChanges, the filtering by namespace and category do not work, but you can put the parameters on the URL of the page you are transcluding it on and then it does. See Forum:Coding/RC transclude demo and, and the latter link is most simply and portably coded {{fullurl:Forum:Coding/RC transclude demo|namespace=10}}. --◄mendel► 10:55, 13 January 2009 (UTC)

nowiki with templates

{{#tag:nowiki|{{{1|test}}}{{me}}[{{fullurl:{{PAGENAME}}|action=raw&ctype=text/css&templates=expand raw}}]}}

test<span style="white-space:nowrap;">[[Image:Mesmer-icon-small.png|Mesmer]]</span>[ raw]

Cool, eh? Use it if you want to show what the wikicode output of a template looks like. --◄mendel► 12:32, 29 January 2009 (UTC)

Update: this works even better with pre instead of nowiki:

{{#tag:pre|{{{1|test}}}{{me}}[{{fullurl:{{PAGENAME}}|action=raw&ctype=text/css&templates=expand raw}}]}}

results in:

test<span style="white-space:nowrap;">[[Image:Mesmer-icon-small.png|Mesmer]]</span>[ raw]

Thanks to gww:User:Poke for the tip! --◄mendel► 15:56, 9 April 2009 (UTC)

Nested <choose>

It works using #tag: on the choose tag. See here for a demo. --◄mendel► 17:24, 16 February 2009 (UTC)

Section depth limit for TOCs

Is there any controllable way to make Wikia limit the section depth it will include in the autogenerated/user-placed TOCs? eg all section headings with, say, more than three === are ignored, in the manner of the Wikipedia TOClimit template.

So for example if there's a page with 5 levels of subheading (and thus the TOC is somewhere near 3 kilometres long), one could go {{TOCleft|limit=3}} and the TOC would show only down to level 3 subheadings. It would help for cleaning up some QR pages, etc. where the TOC becomes an unwieldy burden visually and is often just forced off with __NOTOC__ instead.

Anyway so yeah... is there any way to do that here? :D -- AudreyChandler 18:01, 4 April 2009 (UTC)

We have CSS that works like that (except TOC works in mysterious ways, the indent doesn't always correspond to the number of =). See GuildWars Wikia:CSS classes#Limit TOC display depth. --◄mendel► 18:17, 4 April 2009 (UTC)
omg perfect! Thank you. Effect on removal skills quick reference is shiny and pretty now! :D -- AudreyChandler 18:42, 4 April 2009 (UTC)

Titles for user spaces

I tried, but it didn't work, so...

Is it possible to use < title > < /title > tags to retitle user space pages? When multiple tabs are open they all look exactly the same because the title is lifted from the page address (which all ofc start with something like User:CaptainCorellisMandolin/... etc.), which takes up the whole tab and pushes any distinctive identifying text off the edge. And that just... bugs me! x] -- AudreyChandler 17:17, 21 April 2009 (UTC)

Whilst meant from hiding surfing habits from peaking eyes, I find that the firefox extention TabReanimizer is a handy tab renaming tool that overwrites the tab name with a custom one. I use it for RC and other wiki pages, and it saves me work when I browse through my tabs (which is normally about 30) RandomTime 19:53, 21 April 2009 (UTC)
There is a hack to do that, but it's not installed on this wiki. --◄mendel► 21:17, 21 April 2009 (UTC)
On wiki is preferable, but TabReanimizer is a good way to go as a workaround RandomTime 21:32, 21 April 2009 (UTC)
MW 1.14 can do it hack-less if it is enabled, so maybe we could ask Wikia to have that done for us when we have 1.14? It's been discussed here on the central forums, too. For general guidance, we should make some kind of policy though to limit its use to non-confusing ways (only in userspace?). --◄mendel► 22:24, 21 April 2009 (UTC)
Well, I would suggest disabling it in places where the title is already automatically properly generated (article pages) or where the browser-identified title is about as good as necessary (for example, Image pages), for the sake of end-user consistency between page types. But I also don't really know enough about the various seedy crevasses this Wiki has to contribute properly to this discussion.
I just like it when the smart people let me make things pretty. :[ -- AudreyChandler 23:43, 21 April 2009 (UTC)
You can't selectively "disable" that feature, it's either on everywhere or off. What you can do when it's on is use a keyword on a page to set the title to be what you want it to be, and the only way to limit its use is socially, i.e. by making a community rule about it and enforcing it through telling people. --◄mendel► 09:07, 22 April 2009 (UTC)
Oh, I see. I don't think it would be too much of a problem (since I doubt the vast majority of users would even pay attention), unless there's a seething horde of vandals eagerly waiting to rename GuildWars Wikia pages in horrible and creative ways. OTOH it's not that big a deal, I was just double-checking if there was a way to make it work currently. Not that I wouldn't use it liberally if it did appear in the featureset someday. :] -- AudreyChandler 18:07, 22 April 2009 (UTC)
Well, if for "currently" you'd accept "in two weeks", I'll see what can be done. --◄mendel► 18:14, 22 April 2009 (UTC)
lol, I'd accept "in 6-18 months". Thanks Mendel, let me know if I can help with ... whatever it is you're up to. I can... uh... cheerlead. Maybe. :P -- AudreyChandler 18:24, 22 April 2009 (UTC)
Mendel's chearleaders - new fanclub for Gwiki RandomTime 20:57, 22 April 2009 (UTC)
I wouldn't worry too much about vandalism. Move vandalism is much worse, and can already be done, yet it's not a big problem. --Macros 23:43, 22 April 2009 (UTC)

smaller polls

Polls are resizable on GuildWars Wikia. To get a smaller poll (it can get pretty wide for widescreen browsers), wrap it in a table. That will make it smaller, but at least as wide as the widest text in it. Example:


The poll was created at 21:51 on May 1, 2009, and so far 2 people voted.

--◄mendel► 21:53, 1 May 2009 (UTC)

Monaco for Monobook

There are a few ways for someone who prefers another skin to see wiki pages in Monaco:

  1. change your preferences (ugh)
  2. append ?useskin=monaco&usetheme=custom to a page URL
  3. place {{monaco}} on a page and click on it (it is invisible to monaco users): See this page with the Monaco skin
  4. use the "Monaco View" link in the "support" section of the sidebar
  5. add this as bookmark to your browser and use it on any Wikia page: javascript:document.location=document.location+'?useskin=monaco&usetheme=custom';

--◄mendel► 08:35, 13 May 2009 (UTC)

*Pagename problem

{{PAGENAME}} (and related magic words) insert a line break at the front if the pagename starts with an asterisk. Various workarounds have been deployed at MediaWiki:Noarticletext. Watch {{urlencode:{{#tag:nowiki|{{PAGENAMEE}}}}}} get expanded to Coding for a good "wtf?" :) --◄mendel► 20:14, 25 May 2009 (UTC)

Autorefresh for RC, Watchlist and logs

.. is here. Does it work in personal .js ? Do we want this site-wide? (Remember to find and ask the author before copying, the license is incompatible.) --◄mendel► 10:10, 26 June 2009 (UTC)

Or we could steal it from GWW peeps without saying anything. It works in personal .js on *that* wiki, I've not tried it here. Entropy Entropy Sig 2 (C) 04:41, 3 July 2009 (UTC)
Look here I stole it from some WoWWiki person (he allowed it), i have it across all Wikia sites. — Balistic

Cache issues

Cache issues of any kind could become better by ?action=purge (or refresh tab): Images will resize themselves to all needed sizes, and .css or .js files will get passed to the cache servers who might have been unwilling to recognize the new version. If it doesn't seem to help, wait 5-15 minutes and try that again. We have the refresh tab because we have SMW. --◄mendel► 19:45, 2 July 2009 (UTC)

New JS for show/hide ?

See w:c:dev:ShowHide. --◄mendel► 15:40, 12 July 2009 (UTC)

Linking to diffs

Does anyone know if there is a way to link to a comparison between the most recent version of a page and the previous version? Basically, what I have a list of links on another wiki, and I want to put direct links to the most recent diff beside them (and have them automatically update when those pages are edited). Nwash User-Nwash-Eyes 09:42, January 15, 2010 (UTC)

Answering own question: Wikipedia:Template:Diff.
The answer is ?diff=cur, no revision number. --◄mendel► 22:32, January 15, 2010 (UTC)

Tabber extension

I've been looking into the tabber extension; it currently (version 1.01) still has some issues, and I've posted workarounds to the talkpage there. If there's anything else, ask me on my talkpage. --M.mendel 16:49, July 15, 2010 (UTC)

Verbatim vs. int

Read w:Forum:Verbatim. The upshot is that <verbatim> can be used to insert raw HTML on wiki pages that the parser would otherwise prevent. --◄mendel► 07:12, August 17, 2010 (UTC)

The obvious downside is that it could be used to insert malicious javascript from external sites: the iframe for RT's job queue graph runs a script from Of course, this is instantly mitigated by the fact that only admins can edit the MediaWiki: namespace, but it's still a risk that should be acknowledged.
So what sort of uses could this have besides embedding external content? —Dr Ishmael Diablo the chicken 12:47, August 17, 2010 (UTC)
Not really anything extra, as sysops can already edit MediaWiki:common.js or, indeed - any user's custom javascript. This, far more than just Deletion and Protection, is one of the tools that the wiki is trusting Sysops with. -- RandomTime 20:16, August 17, 2010 (UTC)
Well, we're trusting anyone who plonks down the money to run ads on Wikia.
Verbatim can be used to get the img tag or the background style attribute past the parser. We could add a twitter feed, iframe a web-based irc client, place page-specific javascript on a page that needs it instead of having it in common.js, embed flash applets, make amazon associate links, embed any web counter to track statistics for specific pages, use the google maps API for that guildwars map, make pages that load and play music automatically (I'm saying we could, not that we should!), have popups on hovering (like PvXwiki builds), maybe make a skin mod with a 50% sidebar that opens gww:{{FULLPAGENAME}} in an iframe (well, that might not actually work), basically many things we could do if we controlled the skin or the extensions that run on the server. In short, break out of Wikicode limits. --◄mendel► 21:53, August 17, 2010 (UTC)
NB: I'm not trusting any advertisers. Ever. ---- RandomTime 22:05, August 17, 2010 (UTC)
Cool, that's exactly what I was looking for, mendel - I'm not much of a brainstormer. Sounds pretty spiffy. Unfortunately, like you mentioned on the Wikia forum page, there doesn't seem to be much documentation on it. Is there any way to pass parameters to the included code? Maybe set up some div's with specific id's that the JS could getElementById on?Dr Ishmael Diablo the chicken 22:50, August 17, 2010 (UTC)
There's no way to pass parameters, but templates and magic words (such as {{PAGENAME}}) still work. In some cases, it might be possible to break up the html and insert a parameter in the wikitext (there's a type of amazon associate link that would work well with that). The safety of this is exactly the same as parameter passing, i.e. very unsafe, use with utmost care to avoid insertion of arbitrary code on pages. Are you thinking of anything specific? --◄mendel► 23:25, August 17, 2010 (UTC)
Since MediaWiki is written in php (AFAIK), it might be possible to insert php into the page with "verbatim". Could someone suggest a snippet of php to test if that is true? --◄mendel► 08:31, August 19, 2010 (UTC)
This should produce "Hello world!" --> ## Nope, looks like it bypasses the entire server-side processing. —Dr Ishmael Diablo the chicken 14:10, August 19, 2010 (UTC)
Mmmh, some parser stage strips off the newlines, so that we get <?phpecho "Hello World";?>; you could try inserting spaces, but it doesn't look promising. --◄mendel► 14:22, August 19, 2010 (UTC)
The newlines aren't necessary, but the fact that it was concatenating ?phpecho was a problem. It still doesn't work, though - it's passing the PHP code straight through to the client. —Dr Ishmael Diablo the chicken 14:33, August 19, 2010 (UTC)
Aw, it would've been awesome if that had worked. Well, thanks for confirming! --◄mendel► 15:05, August 19, 2010 (UTC)
Here's a way to 'pass' a 'parameter' to a verbatim page: set the value you want to pass within a hidden div, and the div's id will be the parameter name. The JS can then get that div by its id and pull the innerHTML into a variable.
The output of MediaWiki:Verbatim sandbox is given between the hashes --> ##
This would have to be restricted/controlled even more rigorously than #var's, but it does work. —Dr Ishmael Diablo the chicken 20:54, August 19, 2010 (UTC)
Well, that's not a MediaWiki $1 or $2 parameter; it's more of a way for the javascript to find stuff on the page. Sanitizing these inputs would probably be paramount. In the example, the wiki parser is doing that for us. --◄mendel► 21:43, August 19, 2010 (UTC)

Another Javascript example, using a Wikia variable: w:c:unanswers:Template:USERNAME. --◄mendel► 21:45, August 19, 2010 (UTC)


Discovered a major problem with using JS in a verbatim page - the engine inserts the &nbsp; entity before all !, ?, and : characters that occur outside of comments or quoted strings. I have no clue why it does this (probably some sort of security measure), but it means that if the code contains any a ? b : c or != operators, you're gonna end up with syntax errors when the browser tries to parse it.

Luckily, both of those operators can be rewritten without those characters, but this is still a major issue. —Dr Ishmael Diablo the chicken 14:59, September 9, 2010 (UTC)

Another issue: the engine converts all & characters within quoted strings into the &amp; entity. Workaround is to concatenate String.fromCharCode(38) into the string. —Dr Ishmael Diablo the chicken 16:26, September 9, 2010 (UTC)