Extension:AjaxMakePage.php
<?php /**
Template:PhpCategory:Extensions created with Template:Extension
* AjaxMakePage extension enables users to create a new page and populate it with text
(or replace the text of an existing page) using an input, a textbox and two buttons - made with Template:Extension
* * See http://www.mediawiki.org/wiki/Extension:AjaxMakePage for installation and usage details * * @package MediaWiki * @subpackage Extensions * @author Jack Henderson * @copyright © 2008 Jack Henderson * @licence GNU General Public Licence 2.0 or later */
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('AJAXMAKEPAGE_VERSION', '0.0.1, 2008-12-20');
$wgExtensionFunctions[] = 'efSetupAjaxMakePage';
$wgAjaxExportList[] = "crpage"; $wgAjaxExportList[] = "crdummy1"; $wgAjaxExportList[] = "crdummy2";
$wgExtensionCredits['parserhook'][] = array( 'name' => 'AjaxMakePage', 'author' => 'Jack Henderson', 'description' => 'An extension making it possible to enter a new or existing pages name and its contents in textboxes at the bottom of the existing page, without leaving the page, made with Template:Extension', 'url' => 'http://www.organicdesign.co.nz/Extension:AjaxMakePage', 'version' => AJAXMAKEPAGE_VERSION );
function efAjaxMakePage (&$out,$file) {
global $wgOut,$wgServer,$wgScriptPath;
$wgOut->addHTML('<input id="yajax" type="hidden" value=""/>');
$wgOut->addHTML('<input id="zajax" type="hidden" value=""/>');
$wgOut->addHTML('
Generate a New Page
');
$wgOut->addHTML('Enter New Page Title
<input id="newname" value="" onblur="sajax_do_call(\'crdummy1\',
[document.getElementById(\'newname\').value],
document.getElementById(\'yajax\'))" />
');
$wgOut->addHTML('Enter Page Contents
<textarea rows="5" cols="40" id="newcontent" onblur="sajax_do_call(\'crdummy2\',
[document.getElementById(\'newcontent\').value],
document.getElementById(\'zajax\'))"></textarea>
');
$wgOut->addHTML('<input type="button" onclick="sajax_do_call(\'crdummy2\',
[document.getElementById(\'newcontent\').value],
document.getElementById(\'zajax\'))" id="setupbutton" value="Press This First (Setup)" />
');
$wgOut->addHTML('<input type="button" onclick="sajax_do_call(\'crpage\',
[document.getElementById(\'yajax\').value,document.getElementById(\'zajax\').value],
document.getElementById(\'tajax\'))" id="newbutton" value="Then Press This (Create)" />
');
$wgOut->addHTML('<label id="tajax" /
');
return true; }
function crpage($arg1,$arg2) { $title = Title::newFromText($arg1); $article = new Article($title); $arg2 = htmlspecialchars($arg2); $article->doEdit($arg2,EDIT_UPDATE|EDIT_MINOR); return "Page $arg1 created"; }
function crdummy1($file1) { return $file1; }
function crdummy2($file2) { return $file2; }
function efSetupAjaxMakePage() { global $wgHooks; $wgHooks['BeforePageDisplay'][] = 'efAjaxMakePage'; }