Open main menu

User:Christoph Jauera (WMDE)/Test

MediaWiki extensions manual
OOjs UI icon advanced.svg
Popups
Release status: stable
Hovercard english.png
Implementation Skin
Description <> Displays popups when users hover over article links</>
Author(s)
  • Prateek Saxena,
  • Yair Rand,
  • Sam Smith,
  • Joaquín Oltra Hernández,
  • Bahodir Mansurov,
  • Jon Robson,
  • Piotr Miazga,
  • Jeff Hobson (Prtksxnatalk)
MediaWiki 1.25+
PHP 5.4+
Database changes No
License GNU General Public License 2.0 or later
Download
Translate the Christoph Jauera (WMDE) extension if it is available at translatewiki.net
Issues Open tasks · Report a bug

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 [[<tvar|hover>Special:MyLanguage/Page Previews</>|Page Previews]]. </>

<>

Contents

DependenciesEdit

This extension has a hard dependency on <tvar|TextExtracts>Extension:TextExtracts </> and <tvar|PageImages>Extension:PageImages </>. There are also optional dependencies on <tvar|Beta>Beta Features </> (without BetaFeatures, it loads for all users), and <tvar|EventLogging>Extension:EventLogging </> and <tvar|WikimediaEvents>Extension:WikimediaEvents </> (for instrumentation).

InstallationEdit

</>

  • Download and place the file(s) in a directory called Christoph Jauera (WMDE) in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php:
    wfLoadExtension( 'Christoph Jauera (WMDE)' );
    
  •   Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

To users running MediaWiki 1.24 or earlier:

The instructions above describe the new way of installing this extension using wfLoadExtension(). If you need to install this extension on these earlier versions (MediaWiki 1.24 and earlier), instead of wfLoadExtension( 'Christoph Jauera (WMDE)' );, you need to use:

require_once "$IP/extensions/Christoph Jauera (WMDE)/Christoph Jauera (WMDE).php";

<>

  • Enable the beta feature

</>

$wgPopupsBetaFeature = true;

<>

Example of final LocalSettings configuration for a non-testing site (regular wiki)Edit

</>

wfLoadExtensions([
    'TextExtracts',
    'PageImages',
    'Popups'
]);
$wgPopupsBetaFeature = false;
$wgPopupsExperiment	= false;
$wgPopupsHideOptInOnPreferencesPage = true;
$wgPopupsOptInDefaultState = '1';

APIEdit

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.

<>

Configuration optionsEdit

</>

<> Option</> <> Default value</> <> Useful for...</> <> Documentation</>
$wgPopupsHideOptInOnPreferencesPage false sysadmins <> Whether the option to enable/disable Page Previews should be hidden on Preferences page. Please note if PopupsBetaFeature is set to true this option will be always hidden. False by default</>
$wgPopupsOptInDefaultState 0 sysadmins <> Default Page Previews visibility. Has to be a string as a compatibility with beta feature settings</>
$wgPopupsConflictingNavPopupsGadgetName Navigation_popups sysadmins <> Navigation popups gadget name</>
$wgPopupsGateway mwApiPlain sysadmins code>[mwApiPlain|restbasePlain|restbaseHTML]</>. Full and always up to date list is available in <tvar|path>src/gateway/index.js</></>
$wgPopupsRestGatewayEndpoint /api/rest_v1/page/summary/ sysadmins Specify a REST endpoint where summaries should be sourced from. Endpoint must meet the spec at https://www.mediawiki.org/wiki/Specs/Summary/1.2.0
$wgPopupsAnonsExperimentalGroupSize 0 sysadmins <>

Defines the fraction of users that should be subject to an A/B test. When enabled half of users in this group will see page previews. The rest will be divided into one of two buckets where previews will not show and the control group size will match the enabled bucket. If undefined, or 0, no users will be subject to experimentation and previews will be enabled for everyone unless <tvar|wgPopupsBetaFeature>$wgPopupsBetaFeature</> is enabled. </>

$wgPopupsEventLogging false sysadmins <> Whether we should log events. This should be used carefully alongside PopupsAnonsExperimentalGroupSize. Note if this is enabled without using that variable events will be logged for all users. Be careful!</>
$wgPopupsExperiment true sysadmins <> Enables A/B experiments with Popups in desktop stable.</>
$wgPopupsExperimentConfig
$wgPopupsExperimentConfig = [
        'name' => 'Popups A/B Test - May, 2016',
        'enabled' => true,
        'buckets' => [
                'control' => 0.5,
                'A' => 0.5
        ],
];
sysadmins <>

Configuration for Popups A/B test

<tvar|control>control</> and <tvar|bucket>bucket</> determine which percentage of users will see Popups enabled. Bucketing is done per browser/device, not user accounts.

<tvar|wgPopupsExperiment>$wgPopupsExperiment</> will override the experiment setting enabling Popups if explicitly enabled in beta features. </>

$wgPopupsSchemaSamplingRate 0 sysadmins <> Sampling rate for logging performance data to statsv</>
$wgPopupsSurveyLink sysadmins <> URL for survey</>
$wgPopupsPageBlacklist [ "Special:Userlogin", "Special:CreateAccount" ] sysadmins userlogin>Special:Userlogin</></>

<>

ContentEdit

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

ImageEdit

The image comes from the [[<tvar|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.

TextEdit

Popups can be configured with any compatible API that is compatible with the [[<tvar|pagecontent>Page Content Service#Summary</>|Page content service summary endpoint]] using <tvar|global>$wgPopupsRestGatewayEndpoint</>. For third parties we encourage using the [[<tvar|pagecontent2>Page Content Service</>|Page Content Service]] to enjoy using Popups with your local wiki.

You can also use the [[<tvar|ext-txtextract>Special:MyLanguage/Extension:TextExtracts</>|Extension:TextExtracts]] extension. This extension has [[<tvar|caveats>Extension:TextExtracts#Caveats</>|various caveats]] and we do not actively support use of this API.

RenderersEdit

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 problemsEdit

  • Users of the [[<tvar|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.
  • [[<tvar|phab-task2>phab:T188734</>|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.

FAQEdit

Why can't I copy and paste text from a preview?Edit

At time of writing, the [[<tvar|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?Edit

See [[<tvar|ext-pageimages>Special:MyLanguage/Extension:PageImages#Image_choice</>|Extension:PageImages#Image choice]].

How can I remove content from a page preview?Edit

Any element marked with the <tvar|noexcerpt>noexcerpt</> class will be stripped from the summary.

Where do summaries come from?Edit

These are provided by the [[<tvar|pagecontent>Page_Content_Service#Summary</>|Summary REST API]].

Why are parenthetical stripped?Edit

There's a good discussion going on in [<tvar|phab>https://phabricator.wikimedia.org/T91344</> T91344 in Phabricator]. If you have any views on this or see any problems relating to this, please let us know there.

Why don't I see Popups outside of content namespaces?Edit

Popups appear on links to pages in content namespaces only.</> <> This is a limitation of Popups; TextExtracts are available from other namespaces.</> <> You may workaround this by appending more namespaces into <tvar|1>$wgContentNamespaces </>. </>