Extension:Popups/en

The Popups extension displays page previews − summaries of an article's content when the user hovers over a link to that article.

This is an initiative of the Design team, inspired by the popular Navigation popups gadget. Currently this feature is available on all Wikipedias by default for logged-out users. A description of how the extension functions and more information on its use on Wikimedia projects is available at Page Previews.

Dependencies
This extension has a hard dependency on and. There are also optional dependencies on (without BetaFeatures, it loads for all users), and  and  (for instrumentation).

Installation

 * Install the dependencies.


 * Enable the beta feature

API
Every project is different, and what displays in your previews is highly dependent on the content inside your wiki.

Extension:Popups has been optimised to work with Wikipedia-like content (e.g. wikitext). If your wiki is using a different kind of content handler (for example as is the case for Wikibase) it will need to provide its own API.

The API can be written in any language, but the response of the API must match the spec defined here:

https://www.mediawiki.org/wiki/Specs/Summary/1.2.0

Defining new APIs is out of scope for the Popups extension.

Once defined, you can configure page previews to point to your API using $wgPopupsRestGatewayEndpoint configuration option.

Content
The popups show an image (if one is available), a small text excerpt and the timestamp of the last edit.

Image
The image comes from the Extension:PageImages which returns the single most appropriate thumbnail associated with an article. It ignores maintenance templates, stubs, flag icons etc.

Text
Popups can be configured with any compatible API that is compatible with the Page content service summary endpoint using. For third parties we encourage using the Page Content Service to enjoy using Popups with your local wiki.

You can also use the Extension:TextExtracts extension. This extension has various caveats and we do not actively support use of this API.

Renderers
This extensions currently has only one renderer, that is for ordinary pages.

New renderers for different kind of pages, or things like references can be easily added.

One needs to create a new object with the following methods:


 * init
 * createPopup
 * getOffset
 * getClasses
 * processPopup

You can see details of these methods in ext.popups.renderer.article.js or this patch that adds a renderer for references.

Known problems

 * Users of the Translate extension should note that Page Previews requests previews in the content language of the page. If the preview contains a complete translatable block, then it will be translated. If, however, the preview contains an incomplete translateable block – because a sentence is cut off, say – then it isn't translated and will be displayed in the content language of the page. If you are observing this behavior, then you should consider marking up individual sentences in your lead section.


 * T167852 is for a technical audience but has more information on the underlying problem.


 * Longer math formulas cutting off in preview - long math or chemical formulas (formulas wider than the preview width) display as truncated in previews. We were not able to add a gradient in order to indicate that the formula is continued on the article itself.

Why can't I copy and paste text from a preview?
At time of writing, the cons of doing so outweigh the pros. Essentially it boils down to decreasing the touch area to read the article in full. Once Page Previews is deployed on English and German Wikipedia, feel free to reopen this task and reignite the discussion, but right now we have no plans.

How can I change the image that I see on preview?
See Extension:PageImages#Image choice.

How can I remove content from a page preview?
Any element marked with the  class will be stripped from the summary.

Where do summaries come from?
These are provided by the Summary REST API.

Why are parenthetical stripped?
There's a good discussion going on in T91344 in Phabricator. If you have any views on this or see any problems relating to this, please let us know there.