Parser 2011/Real-time collaboration/Tasks

Tasks!

Authentication
For the actual submission of the edit, we rely on the current security strategies (edit token, etc.) to assign to a user. Any other users in the session may become part of the comment, but the submitter is responsible for the edit.

However, in the meantime, authentication is necessary to assert to other users in the session that they are editing with such-and-such users.

Also to avoid the possibility of someone "injecting" edits into the concurrent session that are unwanted and not noticed by the editor.

Possibilities:

Become a CentralAuth responder
In development, we don't check the browser's claims of being a user

In production:
 * Write something in Etherpad which responds to AutoLogin & AutoLogout
 * Will need to access same memcached
 * Configure CentralAuth to call our service as well

etc.

 * Support standard editor as well as WikiEditor
 * Sort of works now, the textarea is #wpTextbox1, and exactly the same, mostly for compatibility?
 * we need to get WikiEditor's collaboration to invoke us after it's modified the HTML around that textarea. Better model? Pubsub with an 'editor ready' event? But how does plain-jane wikimedia know that someone else isn't going to come along?


 * WikiEditor should be hidden properly (still visible at bottom, broken since last time...)


 * theme
 * Variant of nano or micro
 * make pad automatically in monospace mode


 * Toolbar
 * Make API to ACE (the etherpad editor)
 * Same domain JS API, doesn't need postmessage... which is good because we get MOAR browsers
 * Primitives by which it seems we can implement everything we want to duplicate toolbar functionality
 * replace text
 * get selected text
 * get selection position/range
 * set selection relative to document (line number and pos)
 * Existing buttons
 * reconceive insertion/editing, need to invoke an object rather than a textarea (or emulate a textarea). Will need to have a single point of entry for the textarea, there are multiple points where #wpTextbox1 is selected.
 * Undo/Redo buttons
 * Add buttons to mediawiki toolbar
 * Invoke the undo/redo functionality in ether-land


 * make gadget js (currently mediawiki-embed.js) non-static, so it can know what its own hostname & port is.


 * Getting the username for the wikimedia cookie (same domain JS)

Step 2a
Collaboration features into new edit surface

Step 2b
Chat (via Wikia's new chat thingy)?