FANDOM


RecentChangesMultiple is designed for monitoring multiple smaller wikis at once, giving one central location to view all the edits. While this script is designed to emulate standard Wikia RecentChanges as closest as possible, there are many subtle differences (see Notes below).

DISCLAIMER: This script relies heavily on YQL (Yahoo! Query Language). If depending on an external middle server to deliver your information makes you uncomfortable, you should not use this script.

This tool is designed primarily with wikia wikis in mind, but should work for many wikis by default, and has some settings to handle special cases for others (such as "&subdir=" below). When adding non-wikia wikis, it's important to note that this script is designed for MediaWiki wikis, and requires Special:RecentChanges and Atom feeds to be enabled on a wiki to run.

This script requires the user to use a modern browser that supports various aspects of ECMAScript5 (any up-to-date browser will basically be fine).

Template:Script Instal

Basic Usage

All that's truly need after the script is installed is a div with the "rc-content-multiple" id and a bullet list with the link of the wiki's subdirectory like so (the div will need to be added via source mode):

<div id="rc-content-multiple">
*runescape.wikia.com
*wowwiki.com
*kairosoft.wikia.com
</div>

Note: Do not include http:// before the url.

Inspired by AjaxRC, an "auto-refresh" option is available, that when ticked will cause the list to be refreshed every 60 seconds. A cookie is used to store the setting of the checkbox once clicked.

Inspired by AjaxDiff / LastEdited, you can view the "diff" of a change without changing pages, by hitting the icon to the right of the "diff"/"prev" link. This requires no extra loading, as the script works by looking at these diffs anyways.

If your language is supported, it will automatically be used based on the language in your settings / wiki language. See more on translation stuff below.

Additional Parameters

While the above works and that's all that may be needed, there are also many other additional parameters that can be added, in 2 ways: 1 that effects every wiki on the list, and one that just effects some.

#rc-content-multiple Dataset

Name Expects Default Description
data-params= RC url params - The params you would use on Special:RecentChanges (without the "?" [or the leading "&" after the page title for "index.php?title=" wikis]). Except for hidemyself=1, these don't do anything, but are added onto the link on the "Wikis loaded" icon.
data-hideusers= Comma separated list - A list of users you like to hide the edits of on all wikis, separated with commas. Do not include "User:", and whitespace may be included before/after the commas (white space/underscores in names is required).
data-onlyshowusers= Comma separated list - If a list of users exists, the script will only show edits by these user(s), hiding all non-specified user edits. "hideusers" (both dataset (above) and wiki-specific (below)) takes precedent. Do not include "User:", and whitespace may be included before/after the commas (white space/underscores in names is required).
data-userrights= Comma separated list none Currently only accepts "admin", which simply adds a "block" link like normal on wikis your an admin on ("rollback" was planned, but won't work due to an issue mentioned below in "notes").
data-timezone= string utc By default this script lists dates in UTC. If this attribute is set to "local", the times listed will be based on the local time as determined by the web browser.
data-autorefresh= Whole number 60 The number of seconds for the script to wait to auto-refresh (if the auto-fresh box is checked). Any number above 0 is valid. Note that the time starts after a refresh has completely finished and all results have been added to the screen.
data-groupaddcategories= Boolean false If set to "true", will group "Adding categories" changes into log form. This type of edit happens when someone adds a category on the bottom of a page outside of edit mode.
data-lang= Country Code auto-detect / en First, this is different than "&lang=" listed below, as this is the language used when translating text in the script (vs parsing). By default, this script uses the language set in your user settings (or wiki language if anon) to display a language if supported, or "en" if the language if not supported. For those whose language isn't supported but don't wish to use english as the translation, this this to a 2 letter language code ("fr", "pl", etc) (see support below). This is also the lang used by default if &lang= is not set, and a lang subdomain is not detected.
data-hiderail= Boolean true By default any page that includes a "#rc-content-multiple" div will have it's rail hidden (so it takes up whole page, like normal RC). This parameter is simply a way to reverse this, if desired, when this parameter is equal to "false".
Example

datasets go directly inside the div, like so:

<div id="rc-content-multiple" data-params="hidemyself=1&days=50&limit=500" data-hideusers="TestUser,My awesome username,ILikePIE">
*list of wikis
</div>

On List Items

Every item on the list must start with the wiki's base url, in the format "name.wikia.com" (or or lang.name.wikia.com, or name.[topLevelDomain] if the wiki doesn't have "wikia" in it). do not include "http://", and anything after or including the first "/" at the root.

Each list item may have parameters added after it in the format "&paramname=" to add additional functionality for how that wiki is displayed / loaded.

Name Expects Default Description
&hideusers= Comma separated list - Much like the "data-hideusers=" above, this accepts a comma-separated list of users, but instead they are only hidden for the specified wiki. Do not include "User:".
&onlyshowusers= Comma separated list - Much like the "data-onlyshowusers=" above, this accepts a comma-separated list of users, but instead it only triggers for the specified wiki. Do not include "User:".
&userrights= Comma separated list none Same as "data-userrights=" above (but also accepts "none"), but if this is present overrides "data-userrights" for a specific wiki. Ex: If data-userrights="admin" but a wiki has "&userrights=none" set, all userrights specified for all wikis will be overwritten by "none" for that one wiki.
Special cases for properly displaying wikis
&lang= Lang code auto detect / en Accepts a wiki language code (en, fr, pl, etc). If set, when parsing the wiki Atom data (not translating) it will use that language (if supported by script). If not set, it will try to detect the wiki's language by looking at the subdomain (ex: "fr.") and using that if supported. If none of the above work, defaults to your account language (or wiki language if not logged in). See more on translation stuff below.
&subdir= text wiki (for non-wikia wikis) The sub-directory of the wiki (default is "/wiki/"). Beginning and ending "/"s should not be included. If the wiki uses no sub-directory, enter in "root". This also works for "/index.php/", but for wikis that use "index.php?title=" you need to specify not only the subdirectory (including "root"), but also a "--indexphptitle" flag directly after it (no space, see example below).
&favicon= URL (without http://) or single "word" - Replaces the favicon used for the wiki with the one specified. Two input types are accepted:
  • URL - simply include the full url without the "http://". Intended for wikis that don't have favicons / aren't ".wikia." wikis, but can also be changed to any icon you prefer (any valid web img is fine).
  • Previous name - When ".wikia." wikis are moved, their file links still use the original wiki's url name, which don't show with this script. You can specify the old name here to automatically grab the favicon. Should be 1 "word" with no breaks. (ex:"hmwikia" for the "harvestmoon" wiki)</li>
Examples
<div id="rc-content-multiple">
*fewfre.wikia.com&hideusers=Fewfre,FewBot
*harvestmoon.wikia.com&favicon=hmwikia
*communaute.wikia.com&lang=fr
*wiki.guildwars2.com&favicon=wiki.guildwars2.com/images/thumb/d/df/GW2Logo_new.png/180px-GW2Logo_new.png
*ftbwiki.org&subdir=root
*dejavu-fonts.org&subdir=wiki--indexphptitle&favicon=dejavu-fonts.org/wiki/dejavu_logo2.png
*salemwiki.info&subdir=index.php
</div>

Translation

Translation for this is a little tricky since there are three "things" that need to be translated:

  1. Script Text - This is stuff like "loading" and error messages. Effects whole script.
  2. Special:RecentChanges Text - This is stuff requires to format stuff in the atom feed to look just like Special:RecentChanges. Effects whole script.
  3. Parsing Text - This is what allows a wiki in another language to be parsed so things like threads / logs show up properly. Not needed (script shouldn't break), but doesn't look nice. Unlike the above two points, this "translation" is done on a wiki-per-wiki basis (see "&lang=" above). Even if parsing for a wiki is to 1 language, the text seen for the script is translated for all using the above two points.

Also note that none of these translate page names / edit summaries for what I hope are obvious reasons.

All three of these translation points don't require the others to operate, so Translations can be partial.

Current Translations

  • A yellow means it's mostly untranslated
  • A yellow means that most/core parts are translated.
Lang Script Text1 RC Text2 Parsing Text3
English en
Français fr
Polski pl
Deutsch de

How to Translate

Since all three of these refer to "separate" things, they are separated in code and not all three need to be translated (see table right above).

  • Script Text - as "easy" as translating like you would any other script.
  • RC Text - Doesn't need to be verbatim, but as much as possible it should match text found on a normal Special:RecentChanges for that language. "Log" text can be found on Special:Log on a busy wiki for the language. "custom" text (such as noValidDiffSizeTooltip, as defined by a comment to the right of it in the script) follows the same rules as "Script Text" above.
  • Parsing Text - The trickiest one, as it's correctness is quite important. Please note that the positioning / presence of quote marks / HTML tags at the start/finish of a parsing string matter. Anything being incorrect for parsing shouldn't crash the script, but will cause that part not to be parsed properly.
    • For logs, you can usually just go to Special:Log (on a busy wiki for the language, such as Community Central, or even wikipedia), and replace the text with that of the text between the username (right of the "contribs" ")" ) to the beginning of the next link. However please make sure spaces are correct, quote marks are used properly (and correct one for the language [ex: french=« and polish=„]), etc. Also note some logs don't seem to change for languages (ex: wikifeatures). "User rename log" is also a weird one, as "renameuser" doesn't translate, but the part after it does AND you don't include the "(" part between "name user" and the text up to the quote mark.
    • For the "namespaces", the "board thread" namespace can be found on the atom feed, or (it seems) by seeing what Wikia calls the namespace on Special:Search.

Notes

  • This script uses wiki Atom feeds, which forces multiple issues / constraints:
    • Only includes the last 50 changes, including those hidden by the script.
    • Only includes entries up to ~7 days old.
    • If 50 entries are reached, the last 5 or so entries for a wiki don't include diffs, so diff numbers cannot be calculated. (These are marked as "N/A", and calculated into combined totals as "0".)
    • If the same person edits the same page, the feed will automatically combine them, returning a total diff, as well as the last summary message (so a wiki RecentChanges might say "5 changes", while this script might say 1-4). This does allow more unique edits to fit in among the "up to 50" results returned.
    • Atom feeds don't include Message Walls / Forum Thread titles, nor their thread number (instead using a /@comment syntax which as of writting this still doesn't redirect properly).
    • Cannot tell if an edit is marked "minor" or "patrolled".
  • The script adds some small differences to normal RecentChanges, that aren't controlled via the usage section above:
    • For grouped edits on "normal" pages (not threads, comments, etc), the "(# changes)" will link even for new pages (effectively does the same as hitting "cur" on the last link in list).
    • Adds the ability to view an changes "diff" on the same page via an icon to the right of a "diff"/"prev" link.
  • Rollback links cannot be added (or at least not without some research), since rollback links require a "token" in their url which would need to be calculated / retrieved somehow.

Other

  • "http://" shouldn't be used in this script to avoid it automatically becoming a link (makes it annoying to deal with), and shows up on Special:LinkSearch as a page with an external link (may be undesirable).
  • Designed for Wikia wikis, but should work for any wiki with a /wiki/ type url (or at least one that excepts /wiki/ urls ex:wowwiki.com), although other domains can be handled via the "&subdir=" list option.
  • Some non-Wikia wikis simply will not work, due to YQL not returning anything (may be blocked). Ex: "pixelmonmod.com" and "wiki.dolphin-emu.org"
  • Non-English wikis can be added, but "logs", new pages, and other things will not be marked / group properly. Log detection can be fixed by adding additional values to LOG_DETECTION_TEXT in /code.js.

Changelog

See the history of the code page.

  • 14 February 2015 - Alpha finished (followed by break).
  • 22-27 May 2015 - Beta finished.
  • 28 June 2015 - Script published.

Requirements

  • Jquery
  • YQL (Yahoo! Query Language)
  • The script has to run on a Wikia wiki (to make sure it have access to things like the code for collapsing).
Community content is available under CC-BY-SA unless otherwise noted.