User:Mr.Z-man/cite

Ideas for a refurbishing of the current ref system:

The edit page

 * The current system will continue to work, but will be deprecated in favor of a separate "reference manager"
 * The reference manager will be separate from the editbox and list all the references in the article in their own textareas.
 * Each reference can be assigned a name to use in the article and will have its own unique ID.
 * The current system will be deprecated in favor of a simpler.
 * The new parser function will also have the option to add additional info, for example:
 * The reference manager will work best with JavaScript, but will still be functional without it.
 * will continue to work as now.

Rendered page

 * The rendered output will be essentially the same, with a few minor changes.
 * Rather than lumping all refs that use the same text onto the same line, any reference that has additional info will be on a separate line, indented. For example:
 * 1) ^ab Doe, John. The Foo Book
 * c page 55
 * d pages 75-80
 * Any references included with the page but not used in the text will still be listed.

Database

 * One table will store the actual wikitext of the reference, and a unique ID number for the text.
 * Another will provide a mapping of rev_id -> ref_id
 * This is done in 2 separate tables to save space, as most edits won't change every reference on the page

Other requirements

 * enwiki citation templates are hard on the parser, so it needs good caching. This should be easier with this system than the current one
 * Need to make sure links tables are properly updated
 * Reference changes need to be included in diffs somewhere
 * Need to be able to revert reference changes when reverting an article, either with rollback, undo, or manual reversion
 * Need to be able to retrieve and edit refs with the API.
 * Needs to be integrated with anti-abuse systems - spam checks, abuse filter

Possibly

 * Allow importing of refs from other articles
 * Automatic conversion of the current syntax with an option while editing