Extension talk:CreateArticle

Valid MediaWiki Versions
If you've downloaded and used this extension and it works properly, please add your MediaWiki version to the following list. Thanks!


 * MW 1.6.9
 * MW 1.6.10
 * MW 1.9.3 CreateArticele: works, Inputbox: fails
 * MW 1.12.0
 * MW 1.14.0
 * MW 1.15.1
 * MW 1.16.2 (Apply this Patch)

Hello there,

I'm using the extension with the prefix parameter. If someone tries to create an article with an pagename which is already existing (e.g there is already a page called "prefix: mypage" and the user entered the title "mypage" at the box) - you'll get a fatal error:

--Diamondaine

Hi,

i noticed two "problems" when running in Version 1.6.9

1. I had to comment out line 105 (rendering magic word PAGENAME) because of warnings in my html code on the start page rendered in the html code.

For me it is not a real big problem, because we do not need this functionality.
 * I'm puzzled over this; this line of code came directly from the Inputbox extension, which was the basis of this extension. Is there perhaps a conflict with something specific in your wiki? --Hoggwild5 19:30, 20 March 2007 (UTC)

2. Pressing the button with no text entered, causes an error on line 212 (i guess $title is empty, and ->getArticleID causes the problem)

Maybe it is not the "best solution" but i added the following to the if statement (line 212)

if(isset($title) && $title->getArticleID == 0) {

in this case, it will be handled as an aricitle that exists.

193.19.114.132--

I have to do some additions.

In my case, the statement at line 201 does not work.

if(is_null($title)){

i changed it into !isset($title) and it works

193.19.114.132--


 * '''The above errors were corrected with new source code posted on 20 Mar 2007 --Hoggwild5 22:57, 20 March 2007 (UTC)

Is it possible to have templates other than in the Mediawiki namespace on this? Or is it easy to create new templates in the mediawiki namespace?
 * if you have edit privileges to the MediaWiki namespace, creating a new template there is easy. I'll look at the possibility of using templates from other namespaces as well.  The logic I used here is the same as the Inputbox extension, so I'll need to take a look at source code to see if this is easily implemented. --Hoggwild5 23:01, 20 March 2007 (UTC)

Another thought: What if this create article triggered a form entry rather just adding the template to the edit view? -j --198.70.22.217 17:40, 19 March 2007 (UTC)
 * I am working on a form entry extension, and the primary purpose of this extension with the ability to add namespaces and/or subpages to an article title without user intervention is to set up the appropriate triggers for a form entry screen. This capability is under development. --Hoggwild5 23:01, 20 March 2007 (UTC)


 * Will you be posting that here or keeping a log of progress somewhere? -j --198.70.22.217 13:45, 26 March 2007 (UTC)

Problem in MW 1.9.3 with PHP 5.1.6
If you get 'createbox: type not defined.', the culprit is the 'htmlspecialchars' function below: /* Parses tag input arguments */ function getCreateBoxOption(&$value,&$input,$name,$isNumber=false) { if(preg_match("/^\s*$name\s*=\s*(.*)/mi",$input,$matches)) { if($isNumber) { $value=intval($matches[1]); } else { $value=htmlspecialchars($matches[1]); }       } }

Then try the following: /* Parses tag input arguments */ function getCreateBoxOption(&$value,&$input,$name,$isNumber=false) { if(preg_match("/^\s*$name\s*=\s*(.*)/mi",$input,$matches)) { if($isNumber) { $value=intval($matches[1]); } else { $value=trim(htmlspecialchars($matches[1])); }       } }

Hope this helps, Jean-Lou Dupont 14:08, 26 March 2007 (UTC)

Preload, supage and prefix do not work in Version 0.91 beta (20 Mar 2007) of the extension
Workaround:

function accRedirect($title, $action) {   global $wgRequest, $wgOut; $query = "action=edit&section=". $wgRequest->getVal('section'). "&createintro=". $wgRequest->getVal('createintro'). /* New code*/ "&prefix=". $wgRequest->getVal('prefix'). "&preload=". $wgRequest->getVal('preload'). "&subpage=". $wgRequest->getVal('subpage'). "&editintro=". $wgRequest->getVal('editintro') ; $wgOut->setSquidMaxage( 1200 ); $wgOut->redirect($title->getFullURL( $query ), '301'); }

Basic error checking
Can you add some javascript and/or PHP (fallback) error checking to verify/validate the input field isn't empty and, optionally, to verify the prefix isn't entered? Thanks. -Eep² 19:02, 30 July 2007 (UTC)

More suggestions
-Eep² 12:50, 3 August 2007 (UTC)
 * If a page already exists, go into edit mode instead of giving an error.
 * An option to call templates - I want to create automated pages and just want to enter the name in and have the template apply the name to various fields in the template. Eventually I don't even want the newly created page to be editable once it's created by certain users, but that's another issue...


 * Preload plain text and formatted text without having to have it in a template. -Eep² 07:36, 7 August 2007 (UTC)

dynamic preload
I would like to preload text that is inserted by the user in the form. More specifically, I would like to let users insert a title and a date, create a new page with the inserted title as page-name and the inserted date as a category. like so:

form:

-title

-date

result:

editing title

Is that somehow possible?

need some support
Hi,

i wanna use some parts of your extension to finish my wizard extension.

So at the last step of the wizard - which leeds users to write new articles - the title comes from a session var.

The crate article box has to be added to a pageobject

$page=array (           "step" => "4",            "title" => wfMsg('naw_title_page_4', '4', '4'),            "caption" => utf8_encode(wfMsg('naw_caption_page_4')),            "body" => $this->renderCreatebox            );

$this->addWizardPage($page);

But function renderCreatebox($input, $params,&$parser) assumes 3 params. So is there a way I can handle this

Thanks mic (info@hafenvolleyballer.de)

[RESOLVED] Problem: Template for new article in categories
I thought this would solve a big problem of mine but it doesn't. For preload= I want to use a template that already adds the article into categories, so template text reads already. That means the template will be listed in. That's not what I want :( I also can't add since I would have to tell my users to remove this... So what to do since all namespaces are shown in categories? --Subfader 21:41, 17 March 2008 (UTC)

Finally found the solution Manual:Creating pages with preloaded text. The preloaded template text must be inside includeonly tags, so the page won't be categorized, instead of include tags as I tried (well, very confusing, innit!). Example: You create Template:XYZpage with this text: {| border="1" cellpadding="4" style="border-collapse:collapse;"  

Heading
Text

 

Template:XYZpage will preload everything inside the includeonly tags without including the tags theirself. Template:XYZpage will not be listed in Catgeory:Example. --Subfader 14:55, 25 March 2008 (UTC)
 * }

Little variation on display
I wanted the prefix (e.g. the namespace) displayed before the input field. And maybe some want the sufix displayed after...

I submit the variant CreateArticle/variant pre and post

There are two more parameters :
 * pre: If the value is the name one of the existing parameters, the value of this parameter is displayed before the field. If not, the value passed to pre is displayed.
 * post: If the value is the name one of the existing parameters, the value of this parameter is displayed before the field. If not, the value passed to pre is displayed.

example
type=createarticle break=yes width=24 buttonlabel=créer la référence prefix=Référence: editintro=Wikitau:Référence/Création/editintro preload=Wikitau:Référence/Création/preload pre=prefix gives :
 * http://www.wikitau.org/index.php5?title=Portail:Bibliothèque

Changes
Maybe it would be better to send the name of the parameter by the way @prefix, and to make more test (allowed fields in an array...) before reading the value... But I'm not skillful enough... FrViPofm 16:27, 16 June 2008 (UTC)

Using CreateArticle in a template
In order to create many similar CreateArticle boxes, CreateArticle can be used in a template. However, passing template parameters to CreateArticle parameters only works if the  ...  tag is written as   inside the template.

The following example is a template to create a new wiki page from a named template:

When instantiating the template, the first parameter gives the item that is created (default: article) as spelled out in the button, the second parameter gives the name of the template used to create the item (default: Template:Article).

E.g., the code for an input box to create a new project from a project template might look like this:

Source: Extension:Inputbox

Dynamic parameters with magic words
The same technique works when using a magic word for dynamically changing parameters, e.g. creating a subpage for the current page:

--Nakohdo 12:48, 28 January 2011 (UTC)

A few quick fixes
Luckily they were easy to fix in 1.15.1 on PHP 5.3.0.

Create Article Box Missing
function renderCreatebox($input, $params, &$parser) { to function renderCreatebox($input, $params, $parser) {
 * The create box never showed up.
 * Displayed this error: Parameter 3 in renderCreateBox expected reference. Value was sent.
 * To fix it just edit line:

Display edit page instead of error when article already exists
$wgTitle = Title::newFromText( wfMsgForContent( 'createarticle' ) ); $wgOut->errorpage( 'error', 'articleexists' ); and replace with this line accRedirect($title, 'createarticle');
 * Change these or uncomment these lines

--dk01 1/2/10

Why it doesn't work on PHP 5.3.2 ?
Hello, it doesn't work on php5, why ? I use: PHP Version 5.3.2-1ubuntu4.2 Apache/2.2.14 (Ubuntu)

Maybe something needs to be configured ? Help me please.

It does not work for me either
To my mind it worked with Mediawiki 1.14.1, but after upgrading to 1.15.4, it does not work any more. It's on FreeBSD, Apache 2.2.16 and PHP 5.3.3. The plugin does not throw any errors into http-log, but the input just does not appear on pages.

Create page without visual elements
Hi. What I need to change to your extension to create articles without visual elements? For example, when parsing the page with text

type=createarticle title=New I want the page "New" was created automatically, if it does not exists.

Thanks, Taras, Kyyiv, Ukraine.

Not working for me..
i tried it, and failed at it. what does: UNIQ1136e00e5edcd741-createarticle-00000001-QINU mean? i used: "#tag:CreateArticle| type=createarticle buttonlabel=Create new preload=" with }} and {{ at the end i have no idea whats going on.. thanks, Flipp0 17 sept. 2010 at 13:44

Added Dynamic Language loading
Hi I made this change for http://test.cablegatewiki.org so that it will search for the preload that is the same language as is being created.

I.E. You choose to create an article in French (ArticleName/fr) then it will use (PreloadArticle/fr) for the preload.

This code was added to accRedirect

Before code: function accRedirect($title, $action) { global $wgRequest, $wgOut;

$query = "action=edit&section=". $wgRequest->getVal('section'). "&createintro=". $wgRequest->getVal('createintro'). "&preload=". $wgRequest->getVal('preload'). "&editintro=". $wgRequest->getVal('editintro'); $wgOut->setSquidMaxage( 1200 ); $wgOut->redirect($title->getFullURL( $query ), '301'); }

After code: function accRedirect($title, $action) { global $wgRequest, $wgOut; /**	$langSuffix = substr( $wgRequest->getVal('title'), strrpos( $wgRequest->getVal('title'), '/' ) ); $preloadTitle = Title::newFromText($wgRequest->getVal('preload') .$langSuffix); if ( $preloadTitle->isKnown ) { $languageSpecificPreload = $wgRequest->getVal('preload') .$langSuffix; } else { $languageSpecificPreload = $wgRequest->getVal('preload'); } /******* If it can't find that language preload, uses the preload given *******************************************/ $query = "action=edit&section=". $wgRequest->getVal('section'). "&createintro=". $wgRequest->getVal('createintro'). "&preload=". $languageSpecificPreload. "&editintro=". $wgRequest->getVal('editintro'); $wgOut->setSquidMaxage( 1200 ); $wgOut->redirect($title->getFullURL( $query ), '301'); }
 * Checks which language article is being created then tries to get the preload in that same language *****/

Add it if you want, could maybe put another argument in "dynamiclanguage" or something. --202.27.47.11 14:10, 25 February 2011 (UTC)