Extension:Popup

From mediawiki.org
This extension is not to be confused with the Popups extension used by Wikimedia on their wiki family.
MediaWiki extensions manual
Popup
Release status: unmaintained
Implementation Notify
Description Shows a popup on every nth page request.
Author(s) Johannes Perl (Jperltalk)
Latest version 0.1 (2012-06-18)
MediaWiki 1.7.0+
Database changes No
License GNU General Public License 2.0 or later
Download See the code section
  • $wgEnablePopup
  • $wgPopupPath
  • $wgPopupHeight
  • $wgPopupWidth
  • $wgPopupTitle
  • $wgPause
  • $wgCookieName
  • $wgPopupPosX
  • $wgPopupPosY
  • $wgCookieExpire
  • $wgPopupScript

The Popup extension shows a popup on every nth page request of a user by setting a cookie and counting page requests.

Installation[edit]

  • Copy the code into a file and place the file(s) in a directory called Popup in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php file:
    require_once "$IP/extensions/Popup/Popup.php";
    
  • Yes Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Code[edit]

Popup.php
<?php
/**
 * Popup extension showing a popup on every nth page request.
 *
 * @author [http://www.perlproductions.at Johannes Perl]
 * @licence GNU General Public Licence 2.0 or later
 */

if(!defined('MEDIAWIKI')) die('Not an entry point.');

$wgEnablePopup = true;

$wgExtensionCredits['other'][] = array(
        'name'        => "Popup",
        'author'      => "[http://www.perlproductions.at Johannes Perl]",
        'description' => "Shows a simple popup on every nth page request",
        'url'         => "https://www.mediawiki.org/wiki/Extension:Popup",
        'version'     => "0.1"
);

if(!isset($wgEnablePopup) || !$wgEnablePopup) return;

$wgHooks['BeforePageDisplay'][] = 'showPopup'; # hook to add js and show popup

$wgPopupPath = $wgScriptPath."/extensions/Popup/Popup.html"; # path to popup html file
$wgPopupHeight = 300; # height of popup
$wgPopupWidth = 200;  # width of popup
$wgPopupTitle = "Popup Title"; # title of popup
$wgPause = 10; # show the popup every 10th time
$wgCookieName = "MWPopupCounter"; # name of cookie
$wgPopupPosX = 20; $wgPopupPosY = 20;
$wgCookieExpire = 0; # the time the cookie expires
$wgPopupScript = "win = window.open('{$wgPopupPath}','{$wgPopupTitle}','height={$wgPopupHeight},width={$wgPopupWidth}'); win.moveTo({$wgPopupPosX}, {$wgPopupPosY});";

function showPopup( OutputPage &$out, Skin &$skin )
{
	global $wgPopupPath, $wgPopupHeight, $wgPopupWidth, $wgPause, $wgCookieName, $wgPopupScript, $wgCookieExpire;

	if(!isset($_COOKIE[$wgCookieName])) //cookie does not exist yet
	{
		setcookie($wgCookieName, 1, $wgCookieExpire);
		$reqno = 1;
	}
	else //cookie already exists
	{
		$reqno = $_COOKIE[$wgCookieName] + 1;
		setcookie($wgCookieName, $_COOKIE[$wgCookieName] + 1, $wgCookieExpire);
	}

	if($reqno == 1 || $reqno % $wgPause == 0)
	{
		$out->addInlineScript($wgPopupScript);
	}

	return true;
}

#if you want to delete the cookie for testing purpose use the code below
#setcookie($wgCookieName, "", $wgCookieExpire);
Popup.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Testpopup</title>
  </head>
  <body>
    <p>This is just a test popup page. Edit me.</p>
  </body>
</html>

TODO[edit]