Extension talk:CreateArticle

From MediaWiki.org

Jump to: navigation, search

Contents

[edit] 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

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:

Fatal error: Call to a member function getPrefixedText() on a non-object in .../includes/OutputPage.php on line 816 --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)

[edit] 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)

[edit] 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');
}

[edit] 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)

[edit] More suggestions

  • 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...

-Eep² 12:50, 3 August 2007 (UTC)

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

[edit] 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

[[Category:date]]

Is that somehow possible? —The preceding unsigned comment was added by Robert Buzink (talkcontribs) 15:39, August 12, 2007. Please sign your posts!

[edit] 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)

[edit] [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 [[Category:Whatever]] already. That means the template will be listed in [[Category:Whatever]]. That's not what I want :( I also can't add <noinclude>[[Category:Whatever]]</noinclude> 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:

<includeonly>
== Heading ==

Text

[[Category:Example]]
</includeonly>

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)

[edit] 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.

[edit] example

<createarticle>
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
</createarticle>

gives :

[edit] 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)

[edit] 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 <CreateArticle>...</CreateArticle> tag is written as {{#tag:CreateArticle| ...}} inside the template.

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

{{#tag:CreateArticle|
type=createarticle
buttonlabel=Create new {{{1|article}}}
preload={{{2|Template:Article}}} }}

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:

{{Template:CreateNew|project|Template:Project}}

Source: Extension:Inputbox