Difference between revisions of "Extension:Selenium.php"
(Add htmlspecialchars function, basic file logging not working inside class setup) |
(Formatting, mw-mode in emacs does not like multi line comments - rm logging) |
||
Line 1: | Line 1: | ||
<?php | <?php | ||
# Extension:Selenium {{Category:Extensions}}{{php}}{{Category:Extensions created with Template:SpecialPage}} | # Extension:Selenium {{Category:Extensions}}{{php}}{{Category:Extensions created with Template:SpecialPage}} | ||
− | # - Licenced under LGPL | + | # - Licenced under LGPL http://www.gnu.org/copyleft/lesser.html |
− | # - Author: | + | # - Author: http://www.organicdesign.co.nz/User:Sven |
if (!defined('MEDIAWIKI')) die('Not an entry point.'); | if (!defined('MEDIAWIKI')) die('Not an entry point.'); | ||
− | + | ||
define('SELENIUM_VERSION','0.0.1, 2007-12-03 (selenium-core version 0.8.3'); | define('SELENIUM_VERSION','0.0.1, 2007-12-03 (selenium-core version 0.8.3'); | ||
− | + | ||
$wgSeleniumTag = "selenium"; | $wgSeleniumTag = "selenium"; | ||
$wgExtensionFunctions[] = 'wfSetupSelenium'; | $wgExtensionFunctions[] = 'wfSetupSelenium'; | ||
Line 19: | Line 19: | ||
'url' => 'http://www.mediawiki.org/wiki/Extension:Selenium', | 'url' => 'http://www.mediawiki.org/wiki/Extension:Selenium', | ||
'version' => SELENIUM_VERSION | 'version' => SELENIUM_VERSION | ||
− | + | ); | |
require_once "$IP/includes/SpecialPage.php"; | require_once "$IP/includes/SpecialPage.php"; | ||
Line 26: | Line 26: | ||
class Selenium { | class Selenium { | ||
− | + | # Properties | |
var $prop1 = 'default value'; | var $prop1 = 'default value'; | ||
var $prop2 = 'default value'; | var $prop2 = 'default value'; | ||
− | + | ||
− | + | # Constructor | |
function Selenium() { | function Selenium() { | ||
global $wgHooks,$wgParser,$wgSeleniumTag; | global $wgHooks,$wgParser,$wgSeleniumTag; | ||
− | + | ||
− | + | # Add the tagHook | |
$wgParser->setHook($wgSeleniumTag,array($this,'tagSelenium')); | $wgParser->setHook($wgSeleniumTag,array($this,'tagSelenium')); | ||
− | + | ||
− | + | } | |
− | + | ||
− | + | # Convert the <selenium> tags to HTML | |
function tagSelenium($text,$argv,&$parser) { | function tagSelenium($text,$argv,&$parser) { | ||
$args = ''; | $args = ''; | ||
foreach ($argv as $k => $v) $args .= "<li><b>$k:</b> <i>$v</i></li>\n"; | foreach ($argv as $k => $v) $args .= "<li><b>$k:</b> <i>$v</i></li>\n"; | ||
return "<h3>tagSelenium():</h3>\n<ul>htmlspecialchars($args)<li>Content:</b> htmlspecialchars($text)</ul>\n"; | return "<h3>tagSelenium():</h3>\n<ul>htmlspecialchars($args)<li>Content:</b> htmlspecialchars($text)</ul>\n"; | ||
− | + | } | |
− | + | ||
− | + | # Needed in some versions to prevent Special:Version from breaking | |
function __toString() { return 'Selenium'; } | function __toString() { return 'Selenium'; } | ||
− | + | } | |
− | + | ||
# Called from $wgExtensionFunctions array when initialising extensions | # Called from $wgExtensionFunctions array when initialising extensions | ||
function wfSetupSelenium() { | function wfSetupSelenium() { | ||
global $wgSelenium; | global $wgSelenium; | ||
$wgSelenium = new Selenium(); | $wgSelenium = new Selenium(); | ||
− | + | } | |
− | + | ||
# Needed in MediaWiki >1.8.0 for magic word hooks to work properly | # Needed in MediaWiki >1.8.0 for magic word hooks to work properly | ||
function wfSeleniumLanguageGetMagic(&$magicWords,$langCode = 0) { | function wfSeleniumLanguageGetMagic(&$magicWords,$langCode = 0) { | ||
Line 61: | Line 61: | ||
$magicWords[$wgSeleniumMagic] = array(0,$wgSeleniumMagic); | $magicWords[$wgSeleniumMagic] = array(0,$wgSeleniumMagic); | ||
return true; | return true; | ||
− | + | } | |
# Define a new class based on the SpecialPage class | # Define a new class based on the SpecialPage class | ||
class SpecialSelenium extends SpecialPage { | class SpecialSelenium extends SpecialPage { | ||
− | + | ||
− | + | # Constructor | |
function SpecialSelenium() { | function SpecialSelenium() { | ||
SpecialPage::SpecialPage( | SpecialPage::SpecialPage( | ||
Line 75: | Line 75: | ||
false, # file included by execute() - defaults to Special{$name}.php, only used if no function | false, # file included by execute() - defaults to Special{$name}.php, only used if no function | ||
false # includable | false # includable | ||
− | + | ); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | } | ||
− | + | # Override SpecialPage::execute() $param is from the URL, eg Special:Selenium/param | |
− | |||
function execute($param) { | function execute($param) { | ||
global $wgOut; | global $wgOut; | ||
Line 101: | Line 89: | ||
. wfElement('input',array('type' => 'submit')) | . wfElement('input',array('type' => 'submit')) | ||
. '</form>' | . '</form>' | ||
− | + | ); | |
− | |||
− | |||
} | } | ||
− | + | } | |
+ | |||
# ---------------------- TODO ------------------- # | # ---------------------- TODO ------------------- # | ||
+ | |||
# 1) Deploy tags to allow additional html table tags | # 1) Deploy tags to allow additional html table tags | ||
+ | |||
# 2) Create form for Special:Selenium | # 2) Create form for Special:Selenium | ||
+ | |||
# 3) Create rendering on the fly of a test article to the suite html code | # 3) Create rendering on the fly of a test article to the suite html code | ||
+ | |||
# 4) Some sort of validation of article | # 4) Some sort of validation of article | ||
− | + | ||
# Called from $wgExtensionFunctions array when initialising extensions | # Called from $wgExtensionFunctions array when initialising extensions | ||
function wfSetupSpecialSelenium() { | function wfSetupSpecialSelenium() { | ||
global $wgLanguageCode,$wgMessageCache; | global $wgLanguageCode,$wgMessageCache; | ||
− | + | ||
− | + | # Add the messages used by the specialpage | |
if ($wgLanguageCode == 'en') { | if ($wgLanguageCode == 'en') { | ||
$wgMessageCache->addMessages(array( | $wgMessageCache->addMessages(array( | ||
− | + | 'selenium' => 'Example Specialpage', # The friendly page title | |
− | + | 'exampleMessage' => "Example message: <tt>$1</tt>", | |
− | + | )); | |
− | + | } | |
− | + | ||
− | + | # Add the specialpage to the environment | |
SpecialPage::addPage(new SpecialSelenium()); | SpecialPage::addPage(new SpecialSelenium()); | ||
− | + | } | |
?> | ?> |
Revision as of 00:30, 11 December 2007
<?php
- Extension:Selenium
Template:PhpCategory:Extensions created with Template:SpecialPage
- - Licenced under LGPL http://www.gnu.org/copyleft/lesser.html
- - Author: http://www.organicdesign.co.nz/User:Sven
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('SELENIUM_VERSION','0.0.1, 2007-12-03 (selenium-core version 0.8.3');
$wgSeleniumTag = "selenium"; $wgExtensionFunctions[] = 'wfSetupSelenium'; $wgExtensionFunctions[] = 'wfSetupSpecialSelenium'; $wgHooks['LanguageGetMagic'][] = 'wfSeleniumLanguageGetMagic';
$wgExtensionCredits['specialpage'][] = array( 'name' => 'Special:Selenium', 'author' => 'User:Sven', 'description' => 'Incorporating Selenium tests into the MediaWiki environment', 'url' => 'http://www.mediawiki.org/wiki/Extension:Selenium', 'version' => SELENIUM_VERSION );
require_once "$IP/includes/SpecialPage.php";
class Selenium {
- Properties
var $prop1 = 'default value'; var $prop2 = 'default value';
- Constructor
function Selenium() { global $wgHooks,$wgParser,$wgSeleniumTag;
- Add the tagHook
$wgParser->setHook($wgSeleniumTag,array($this,'tagSelenium'));
}
- Convert the <selenium> tags to HTML
function tagSelenium($text,$argv,&$parser) { $args = ;
foreach ($argv as $k => $v) $args .= "
\n"; return "
tagSelenium():
\n
- htmlspecialchars($args)
- Content: htmlspecialchars($text)
\n";
}
- Needed in some versions to prevent Special:Version from breaking
function __toString() { return 'Selenium'; } }
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupSelenium() { global $wgSelenium; $wgSelenium = new Selenium(); }
- Needed in MediaWiki >1.8.0 for magic word hooks to work properly
function wfSeleniumLanguageGetMagic(&$magicWords,$langCode = 0) { global $wgSeleniumMagic; $magicWords[$wgSeleniumMagic] = array(0,$wgSeleniumMagic); return true; }
- Define a new class based on the SpecialPage class
class SpecialSelenium extends SpecialPage {
- Constructor
function SpecialSelenium() { SpecialPage::SpecialPage( 'Selenium', # name as seen in links etc 'sysop', # user rights required true, # listed in special:specialpages false, # function called by execute() - defaults to wfSpecial{$name} false, # file included by execute() - defaults to Special{$name}.php, only used if no function false # includable ); }
- Override SpecialPage::execute() $param is from the URL, eg Special:Selenium/param
function execute($param) { global $wgOut; $this->setHeaders(); $title = Title::makeTitle(NS_SPECIAL,'Selenium'); $wgOut->addWikiText(wfMsg('example-message','exampleParameter')); $wgOut->addHTML( wfElement('form',array('action' => $title->getLocalURL('action=submit'),'method' => 'post'),null) . '<textarea name="target" cols=25 rows=10></textarea>' . wfElement('input',array('type' => 'submit')) . '</form>' ); } }
- ---------------------- TODO ------------------- #
- 1) Deploy tags to allow additional html table tags
- 2) Create form for Special:Selenium
- 3) Create rendering on the fly of a test article to the suite html code
- 4) Some sort of validation of article
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupSpecialSelenium() { global $wgLanguageCode,$wgMessageCache;
- Add the messages used by the specialpage
if ($wgLanguageCode == 'en') { $wgMessageCache->addMessages(array( 'selenium' => 'Example Specialpage', # The friendly page title 'exampleMessage' => "Example message: $1", )); }
- Add the specialpage to the environment
SpecialPage::addPage(new SpecialSelenium()); } ?>