Extension:Popups

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 (with an exception of English and German Wikipedia). A description of how the extension functions and more information on its use on Wikimedia projects is available at hover>Special:MyLanguage/Page Previews|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

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 ext-pgimg>Special:MyLanguage/Extension:PageImages|Extension:PageImages which returns the single most appropriate thumbnail associated with an article. It ignores maintenance templates, stubs, flag icons etc.

Text
The text comes from the ext-txtextract>Special:MyLanguage/Extension:TextExtracts|Extension:TextExtracts from which a plain-text extract is requested (see that extension for exclusions). [https://phabricator.wikimedia.org/diffusion/EPOP/browse/master/resources/ext.popups.core.js;2c17c7dcffb665eba0a7a630872c05170b5d9041$48 Two sentences] are requested from the intro section and a limit is put through CSS that makes sure that text doesn't overflow from the card. This is done by applying a [https://phabricator.wikimedia.org/diffusion/EPOP/browse/master/resources/ext.popups.core.js;2c17c7dcffb665eba0a7a630872c05170b5d9041$110</> max-height] on that element. This approach would provide the same visual solution regardless of the language's script. A major con is that the text stops abruptly and ellipses can't be added.

Show/hide timing
The timing of the show/hide can currently be adjusted via code, which should be added to your local common-js>Special:MyPage/common.js</>|common.js or global-js>Special:MyLanguage/Help:Extension:GlobalCssJs</>|global.js file :

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 <tvar|js>ext.popups.renderer.article.js</> or this [<tvar|url>https://gerrit.wikimedia.org/r/#/c/139827/</> patch that adds a renderer for references].

Known problems
Users of the ext-tran>Special:MyLanguage/Extension:Translate</>|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.

<tvar|phab-task>T167852</> is for a technical audience but has more information on the underlying problem.

Why can't I copy and paste text from a preview?
At time of writing, the phab>phab:T146097#2737160</>|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.

How can I remove content from a page preview?
ext-textextracts>Special:MyLanguage/Extension:TextExtracts</>|TextExtracts will strip any element that is marked with the <tvar|noexept> </> class. This class is one of the classes in the <tvar|wgExtractsRemoveClasses> </> configuration variable.