Extension:Popup

From MediaWiki.org
Jump to navigation Jump to search
This extension is not to be confused with the Popups extension used by Wikimedia on their wiki family.
MediaWiki extensions manual
Crystal Clear action run.svg
Popup
Release status: beta
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
Parameters
  • $wgEnablePopup
  • $wgPopupPath
  • $wgPopupHeight
  • $wgPopupWidth
  • $wgPopupTitle
  • $wgPause
  • $wgCookieName
  • $wgPopupPosX
  • $wgPopupPosY
  • $wgCookieExpire
  • $wgPopupScript
Hooks used
BeforePageDisplay
Translate the Popup extension if it is available at translatewiki.net
Check usage and version matrix.

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

Installation[edit]

  • Add the following code at the bottom of your LocalSettings.php:
    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]

See also[edit]

Extension:JavaScript