Difference between revisions of "Extension:Selenium.php"
(checkout and/or test called extractSections() in Parser.php) |
(Use $_REQUEST['section'] query string parameter for sections) |
||
Line 104: | Line 104: | ||
global $wgParser; | global $wgParser; | ||
− | |||
− | |||
if($param) { | if($param) { | ||
# Note: Need to bypass $wgOut and render only Selenium html here | # Note: Need to bypass $wgOut and render only Selenium html here | ||
Line 129: | Line 127: | ||
# 1) Process $wikitext into sections | # 1) Process $wikitext into sections | ||
− | |||
$count = preg_match_all('|^={2,}\s*(.+?)\s*={2,}(.+?</selenium>)|ms',$wikitext,$matches); | $count = preg_match_all('|^={2,}\s*(.+?)\s*={2,}(.+?</selenium>)|ms',$wikitext,$matches); | ||
Line 138: | Line 135: | ||
} | } | ||
− | print $ | + | # Need to process query string if section (key) is present |
+ | if( array_key_exists('section', $_REQUEST)) { | ||
+ | print $_REQUEST['section']; | ||
+ | # Process test | ||
+ | } | ||
+ | |||
+ | foreach($_SERVER as $key=>$value){ | ||
+ | print "\$_SERVER: $key:$value<br />"; | ||
+ | } | ||
# 2) if a section hash (#) is present in $param, check it is valid in the processed matches | # 2) if a section hash (#) is present in $param, check it is valid in the processed matches |
Revision as of 09:19, 23 December 2007
<?php
- Extension:Selenium Template:Php
Category:Extensions in progress
- Category:SeleniumCategory: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.1.1, 2007-12-03 (selenium-core version 0.8.3');
$egSeleniumTag = "selenium"; $wgExtensionFunctions[] = 'efSetupSelenium'; $wgExtensionFunctions[] = 'efSetupSpecialSelenium'; $wgHooks['LanguageGetMagic'][] = 'efSeleniumLanguageGetMagic';
$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,$egSeleniumTag;
- Add the tagHook
$wgParser->setHook($egSeleniumTag,array($this,'tagSelenium'));
}
- Deploy tags to allow additional html table tags
function tagSelenium($text,$argv,&$parser) {
global $wgTitle;
- Should be a preprocess using first stage of parser
- $text = $parser->preprocess($text,$wgTitle,$parser->mOptions);
- Want the selenium tag to strip out and ... enclosing tags
$text = eregi_replace('.+
- Constructor
function __construct() {
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 ); }
- -------------------- Create form for Special:Selenium --------------------
- Override SpecialPage::execute() $param is from the URL, eg Special:Selenium/param
function execute($param) {
- global $wgRequest;
global $wgOut; global $wgParser;
if($param) {
- Note: Need to bypass $wgOut and render only Selenium html here
- Grab article $param and process contents
$paramTitle = Title::newFromText($param); $article = new Article($paramTitle); $wikitext = $article->getContent();
- Tranclusion expanding braces
$wikitext = $wgParser->preprocess($wikitext,$paramTitle,new ParserOptions());
- -------------------- TODO: flow control on article name --------------------------- #
- 3) Process depending on whether Suite or Test
- if($param match /(.+?#(.+?)/ ) { # pseudo code
- ---- Process an article section as a selenium test
- } else {
- ---- Process an article as a selenium test suite
- }
- !------------------- TODO: flow control on article name --------------------------- #
- ---------------- DEBUG --------------- #
- 1) Process $wikitext into sections
$count = preg_match_all('|^={2,}\s*(.+?)\s*={2,}(.+?</selenium>)|ms',$wikitext,$matches);
if($count==0) {
- $count equals 0 if articles contain no sections and corresponding tags
print "There were no matches"; return; }
- Need to process query string if section (key) is present
if( array_key_exists('section', $_REQUEST)) { print $_REQUEST['section']; # Process test }
foreach($_SERVER as $key=>$value){ print "\$_SERVER: $key:$value
"; }
- 2) if a section hash (#) is present in $param, check it is valid in the processed matches
- if(preg_match("/#/", $param, $match)) {
# }
- print "First header: " . $matches[1][0];
- print "
First section: " . $matches[2][0];
- ---------------- DEBUG --------------- #
} else {
- B) Render Special:Selenium form
$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>' ); } }
- 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 efSetupSpecialSelenium() { 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()); }