Hello,

In commit 72458 I've added the InlineEditor extension. [1] This extension is a 
working implementation of the prototype(s) earlier posted on this list. It's 
not actually for use on live wikis, but more a proof-of-concept and framework 
to experiment with. I will explain the extension in detail for those of you who 
might be interested.

== Design overview ==
The extension exists of several parts, structured in sub-directories like the 
UsabilityInitiative extension. The InlineEditor extension itself provides a 
framework for different edit modes to build on. It displays the edit modes, 
provides an interface to mark editable pieces of wikitext, provides a 
client-side inline editor which the edit modes *may* use, is configurable with 
several fallback options to the full/traditional editor, and handles 
previewing, publishing, undo and redo.

Every other extension provides an edit mode for the InlineEditor extension. 
They hook into InlineEditorMark and InlineEditorDefineEditors. The first one is 
called whenever wikitext is passed through the extension, and all edit modes 
can mark their editable pieces. Once this is done, a few algorithms will 
combine this with information of previously edited pieces, generate both 
wikitext to run through the parser, and JSON which is passed to the client, 
which maps the editable pieces to the original wikitext. The other hook is to 
include CSS, JS and messages to the page.

== Limitations ==
There are many things which are sub-optimal right now:
* The editor is slow. Whenever changing a small element and previewing it, the 
entire page is reparsed. This will be fixed by parsing only the element if 
possible (i.e. references have side effects at the bottom of the page).
* It's for now only possible to use the editor as primary editor, with a link 
to the full/traditional editor. There will be a configuration option whether to 
do this, or display a message at the top of the traditional edit page to switch 
to this editor.
* I've not tested things in older browsers (or IE at all, for that matter). I 
only know it runs fine in Firefox and Chrome, but it may have bugs in other 
browsers.
* The edit modes are really, really, basic right now. They may or may not screw 
things up. Most of them have just one or a few regular expressions which do 
well in general, but may fail at many edge-cases.
* The editor may not handle all the messages and edge cases of the traditional 
editor. 
* The extensions is written for MediaWiki 1.16 but may or may not work with 
other versions.

Also, I'm not sure at all whether the current set of edit modes is the way to 
go. Currently, they are mutually exclusive. Meaning that text marked by one 
editor is never included in text marked by another editor. However, maybe it's 
better to not have edit modes like this, but different granularity of editing. 
I.e. sentence => paragraph => block. This way the user will get familiar with 
more wikitext instead of always seeing small portions. The framework currently 
doesn't allow for overlap in markings, but I will work to make this possible.

== Goals ==
Goal of this extension is to provide a framework to easily play with different 
modes of editing in-line. Feel free to write extensions that use this 
framework, or help with the framework itself. Any usability or technical 
suggestions are also welcome!

I hope to get some documentation up on mediawiki.org anytime soon, but note 
that the code is heavily documented inline. Feel free to ask any questions: I'm 
probably forgetting to mention some things that may not be clear to everyone. 
Also, there is no public wiki at the moment to test this extension with, will 
work on that, but if someone else can enable it on a test wiki that would be 
great too!

To install the extension(s), check the instructions in 
/trunk/extensions/InlineEditor/InlineEditor.php. Thanks for your time reading 
this!

Regards,
Jan Paul

[1] http://www.mediawiki.org/wiki/Special:Code/MediaWiki/72458
_______________________________________________
Wikitext-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitext-l

Reply via email to