MK wrote:
Just to clarify: the special page will be a form. The
fields
correspond (approximately) to the structure of the pages in the wiki,
for example, here the page listing mediawiki itself:
http://directoryng-dev.fsf.org/wiki/MediaWiki
Nb, this information appears outdated (lol) but don't bother creating a
user to correct it (yet) as the site is still in development.
Wow, that information is way old. Not even one of the external links is
right (although some addresses are probably still accepted).
Note that the mediawiki version used is not the latest one (you are
using 1.15.1, you should use 1.16.0 or 1.15.5).
Anyway,
if you view the source you'll notice the page uses more than a dozen
templates (one megalithic template was not flexible enough) and a
similar number of Semantic properties, and I want to spare the user
these details. So the form data will be processed to create a page.
You say I do not need to access api.php to do that, therefore I don't
need to password to get an "edit" token, etc -- how would I go about
that?
No problem. You can require a right in order to
use that Special Page.
Take a look at how other restricted special pages do it.
Yes, if I understand that correctly, it is done with group privileges.
However, I still need to be able to attach the *specific user* to the
creation of the page (there may be a separate database for that or just
embedded comments, not sure yet).
....
Okay, I guess this is sort of re-iteration, but how
would a special
page "directly insert the article" -- keeping in mind it needs to
return form data to a php script on the server for processing which
will add the MW + Semantic markup? Again, I do not want to require
the user to learn the templates, or the chance to screw them up, etc.,
so it cannot be a simple "create page".
Calling Article::doEdit()
It would look similar to this:
$title = Title::newFromText( $wgRequest->getVal( 'title' ) );
$article = new Article( $title )
$text = '{{FSWhead|short=' . $wgRequest->getVal( 'short' ) .
'|full=' .
$wgRequest->getVal( 'full' ) . '|home=' $wgRequest->getVal(
'home' ) . "}}";
$article->doEdit( $text, "Special page edited article" );
Article::doEdit() has a user param, but if it is not provided, it will
automagically use the user which submitted the form to the special page.