wiki.techinc.nl/includes
Bartosz Dziewoński 6f5b29ff4e Implement page status indicators
Page status indicators are icons (or short text snippets) usually
displayed in the top-right corner of the page, outside of the main
content. Basically, <indicator name="foo">[[File:Foo.svg|20px]]</indicator>
may be used on a page to place the icon in the indicator area. They
are also known as top icons, page icons, heading icons or title icons.

I found the discussion on bug 23796 highly illuminating. I suggest
that everyone read it before suggesting different design choices.

I spent some time with a thesaurus pondering the name. "Emblems" and
"badges" were also considered, but the former has a much more limited
meaning and the latter is already taken by Wikidata, with a similar
but subtly different feature set. I am not aware of any naming
conflicts ;) besides new talk page message "indicator" (used by core
and Echo in some documents) and OOjs UI indicators (tiny icons like
the arrow on a dropdown form element), which shouldn't be confusing.

Potential use cases include:
* "Lock" indicators for page protection levels
* Featured/good article indicators
* Redirect shortcuts display ("WP:VPT")
* Links to help/manual for special pages
* Coordinates?… or globe icon for inline pop-up maps

Design features:
* Skin-customizable. Skins can fully control where and how indicators
  are shown, or may just do <?php echo $this->getIndicators(); ?> to
  output the default structure. By default they are not shown at all.
* Extension-customizable. Extensions can call ParserOutput::addIndicator()
  to insert an indicator from one of the numerous parser hooks.
* Wiki-customizable. In addition to just using the parser functions,
  on-wiki styles and scripts can use the provided classes and ids
  (.mw-indicator, #mw-indicator-<name>) to customize their display.

Design limitations:
* Every indicator must have a unique identifier (name). It's not
  possible to create arrays, or to have several indicators with the
  same name. In case of duplicates, the latest occurrence of the
  parser function wins.
* Indicators are displayed ordered by their names (and not occurrence
  order). This ensures consistency across pages and provides a simple
  means of ordering or grouping them.
* Indicators are not stored, tracked or accessible outside of
  ParserOutput (in particular they're not in the page_props table).
  They are intended to merely reflect the content or metadata that is
  already present on the page, and not be data themselves. If you ever
  think you need to list pages with a given status indicator, instead
  figure out what it means and use the appropriate tracking category,
  special page report, already existing page_prop, or other means.

Corresponding patch in Vector: I90a8ae15ac8275d084ea5f47b6b2684d5e6c7412.
I'll implement support in the other three skins included in the tarball
and document it on mediawiki.org after this is merged.

Bug: 23796
Change-Id: I2389ff9a5332a2b1d033eb75f0946e5241cfaaf4
2014-10-17 15:49:15 -07:00
..
actions Revert "Make an empty "?action=" parameter default to "view"" 2014-10-11 17:15:49 +00:00
api Implement page status indicators 2014-10-17 15:49:15 -07:00
cache Merge "Turn a wfDebug call in MessageCache::get into a wfDebugLog call" 2014-10-03 18:08:27 +00:00
changes Fix undefined argument in OldChangesList 2014-09-09 16:05:53 +02:00
clientpool
composer
config Add MultiConfig for fallback logic 2014-09-17 15:55:04 -07:00
content Introduce ContentAlterParserOutput hook 2014-09-29 18:44:39 +00:00
context Loosened the CLI restriction in RequestContext::importScopedSession() 2014-10-01 23:05:23 +00:00
dao
db DatabaseBase::tableName() fix limit while invoking explode() 2014-10-15 23:14:11 +02:00
debug Add a PSR-3 based logging interface 2014-10-14 00:20:32 +00:00
deferred Remove SquidUpdate::newFromLinksTo() 2014-10-06 18:19:10 +00:00
diff i18n: Use native digits on 'difference-missing-revision' 2014-09-26 19:53:59 +00:00
exception Log non-MediaWiki exceptions for requests via main entry point 2014-10-06 23:57:49 +00:00
externalstore Clear the DBO_TRX flag for sanity in ExternalStore 2014-09-12 11:43:34 -07:00
filebackend Bumped the default Swift token expiry a bit 2014-09-24 17:04:01 -07:00
filerepo Reduced LocalFileRestoreBatch::execute deadlocks when doing batch restores 2014-10-17 04:07:54 +00:00
gallery Add missing </div> tag to packed-overlay galleries 2014-09-19 00:28:02 -03:00
htmlform SpecialNewpages: Prepare for mw-ui 2014-10-15 23:25:11 +02:00
installer Localisation updates from https://translatewiki.net. 2014-10-16 22:01:06 +02:00
interwiki
jobqueue Merge "Made upload jobs avoid using the user session" 2014-10-03 15:41:11 +00:00
json Added missing JsonFormat::parse() RELEASE NOTES, fixed docs 2014-09-30 01:45:35 +00:00
libs Merge "Improved timestamp precision in ProcessCacheLRU" 2014-10-02 21:12:34 +00:00
logging Implement autocompletion for Performer field on Special:Log 2014-09-30 01:03:55 +00:00
mail Fixed spacing 2014-09-29 20:46:19 +02:00
media Do not read metadata from non-existing djvu image 2014-09-29 20:53:43 +02:00
normal
objectcache SqlBagOStuff: document public method deleteAll() 2014-10-15 22:57:53 +02:00
page Break long lines 2014-10-14 19:30:43 +00:00
pager Fixed spacing 2014-09-29 20:46:19 +02:00
parser Implement page status indicators 2014-10-17 15:49:15 -07:00
password PasswordFactory::newFromPlaintext( null ) needs to work 2014-09-29 21:42:33 +00:00
poolcounter Correct variable names in @param to match method declarations 2014-08-13 21:48:28 +02:00
profiler Made the DB profiler use startAtomic() 2014-09-16 17:20:23 -07:00
rcfeed Use safe attribute accessor for RecentChange 2014-09-13 05:02:33 +00:00
resourceloader Add RL template module with HTML markup language 2014-10-17 09:23:04 -07:00
revisiondelete Split RevisionDeleteAbstracts.php to separate files 2014-08-20 19:08:33 +02:00
search Remove redundant $db->resultObject() calls 2014-09-19 20:35:55 +00:00
site Fixed spacing 2014-09-29 20:46:19 +02:00
skins Implement page status indicators 2014-10-17 15:49:15 -07:00
specialpage Merge "API: HTMLize and internationalize the help, add Special:ApiHelp" 2014-10-13 22:19:47 +00:00
specials SpecialNewpages: Prepare for mw-ui 2014-10-15 23:25:11 +02:00
templates Add 'name' back to wpLoginAttempt 2014-10-12 00:57:53 +01:00
title Don't include images/categories when behind a local interwiki prefix 2014-08-01 18:20:51 +10:00
upload Merge "Avoid attempting to prerender thumbnails that will fail" 2014-10-03 17:45:15 +00:00
utils Fixed UID comment 2014-08-27 16:19:11 -07:00
.htaccess
AjaxDispatcher.php AjaxDispatcher: Use Config instead of globals 2014-08-25 19:20:30 -07:00
AjaxResponse.php AjaxDispatcher: Use Config instead of globals 2014-08-25 19:20:30 -07:00
AuthPlugin.php
AutoLoader.php Merge "Add a PSR-3 based logging interface" 2014-10-16 23:39:22 +00:00
Autopromote.php
Block.php Couple of type hints for Block 2014-09-25 15:11:39 +00:00
Category.php Add missing @param to function docs 2014-08-14 20:22:52 +02:00
CategoryFinder.php CategoryFinder: give parent category tree an accessor 2014-09-05 11:57:42 -07:00
CategoryViewer.php Fix for Ia9baaf0b: Make previously public variables public again 2014-08-29 23:01:53 +02:00
ChangeTags.php Special:Contributions: Use mediawiki.ui 2014-09-29 11:42:25 -07:00
Collation.php
Cookie.php Fixed spacing 2014-08-04 11:51:22 +02:00
DefaultSettings.php Merge "Add a PSR-3 based logging interface" 2014-10-16 23:39:22 +00:00
Defines.php Add comment to AFL_* constants in Defines.php 2014-10-04 02:40:08 +00:00
DeprecatedGlobal.php
EditPage.php Break long lines 2014-10-14 19:30:43 +00:00
Export.php Remove XmlDumpWriter::schemaVersion (deprecated 1.20) 2014-09-26 14:34:36 -07:00
Fallback.php
Feed.php Fix for Ia9baaf0b: Make previously public variables public again 2014-08-29 23:01:53 +02:00
FeedUtils.php
FileDeleteForm.php
ForkController.php Add missing @param to function docs 2014-08-14 20:22:52 +02:00
FormOptions.php Add missing @param to function docs 2014-08-14 20:22:52 +02:00
GitInfo.php
GlobalFunctions.php Minor doc fix for wfShellExecWithStderr() 2014-10-08 14:12:11 -04:00
HistoryBlob.php Fix for Ia9baaf0b: Make previously public variables public again 2014-08-29 23:01:53 +02:00
Hooks.php Add name of offensive hook function to error message 2014-10-10 15:11:04 +00:00
Html.php Html: Use https for @see url of buttonAttributes() 2014-10-03 22:12:41 +00:00
HtmlFormatter.php
HttpFunctions.php Replace $wgConf->localVHosts by $wgLocalVirtualHosts 2014-10-03 03:54:44 -07:00
Import.php Fix for Ia9baaf0b: Make previously public variables public again 2014-08-29 23:01:53 +02:00
Licenses.php
limit.sh
Linker.php Make linker warning useful 2014-09-23 09:13:33 +02:00
LinkFilter.php
MagicWord.php Add missing @return to function docs 2014-08-23 23:14:57 +02:00
MediaWiki.php Revert "Make an empty "?action=" parameter default to "view"" 2014-10-11 17:15:49 +00:00
MediaWikiVersionFetcher.php
Message.php Introduce Message::plaintextParam 2014-09-30 12:51:29 -07:00
MessageBlobStore.php MessageBlobStore: Use Config instead of globals 2014-08-25 11:35:36 +00:00
mime.info Make image/vnd.microsoft.icon be an alias for image/x-icon mime type. 2014-09-13 13:23:55 -03:00
mime.types Make image/vnd.microsoft.icon be an alias for image/x-icon mime type. 2014-09-13 13:23:55 -03:00
MimeMagic.php MimeMagic: Use Config instead of globals 2014-09-06 11:50:05 +00:00
MovePage.php MovePage: Properly return errors 2014-10-10 22:52:13 -07:00
MWNamespace.php
MWTimestamp.php Remove unmatched @param 2014-08-16 22:50:02 +02:00
OutputHandler.php
OutputPage.php Implement page status indicators 2014-10-17 15:49:15 -07:00
PathRouter.php
PHPVersionError.php Bump 1.25 2014-09-19 14:03:18 -07:00
Preferences.php Hygiene: Make construction of buttons easier 2014-09-30 14:54:56 -07:00
PrefixSearch.php Merge "PrefixSearch: Enforce including the exact match as first result" 2014-10-10 21:34:23 +00:00
ProtectionForm.php Merge "Don't break existing expiry time of "infinity" when modifying protection" 2014-09-18 02:27:56 +00:00
Revision.php Don't clobber revision size of 0 2014-09-29 10:46:18 -04:00
RevisionList.php
Sanitizer.php SECURITY: Enhance CSS filtering in SVG files 2014-09-24 21:06:54 +02:00
Setup.php Merge "Add API output skin" 2014-09-24 15:20:41 +00:00
SiteConfiguration.php Replace $wgConf->localVHosts by $wgLocalVirtualHosts 2014-10-03 03:54:44 -07:00
SiteStats.php
SquidPurgeClient.php
StatCounter.php StatCounter: Use Config instead of globals 2014-09-09 17:18:00 -07:00
Status.php Fix Status serialization with cleanupCallback as Closure 2014-10-03 12:02:20 -04:00
StreamFile.php
StubObject.php Fix visibility in SkinFallback and StubObject 2014-08-12 01:06:49 +00:00
tidy.conf
Title.php Move non-user specific things from Title::isValidMoveOperation() to MovePage 2014-09-19 20:11:59 +00:00
TitleArray.php
TitleArrayFromResult.php
User.php Merge "Fix for Bug 63980 - Comparison of limits in pingLimiter is incorrect" 2014-10-04 20:35:30 +00:00
UserArray.php
UserArrayFromResult.php
UserRightsProxy.php Fix userrights-interwiki when the 'user' table is shared 2014-08-10 12:01:25 +00:00
WatchedItem.php Fixed spacing 2014-08-27 18:31:50 +02:00
WebRequest.php Merge "Don't rely on $wgTitle in WebRequest" 2014-10-02 20:27:51 +00:00
WebResponse.php Docs: compatability -> compatibility 2014-08-13 19:39:07 +02:00
WebStart.php Remove $wgTitle from WebStart forever 2014-09-22 14:52:36 -07:00
WikiMap.php
Xml.php Remove Xml::namespaceSelector() (deprecated since 1.19) 2014-08-19 23:34:21 -07:00
ZhConversion.php