UploadWizard/Software design/front-end

Developers' guide to UploadWizard
The main overview: a simple PHP script is invoked via Special:UploadWizard.

For older/incompatible browsers, this simply shows the basic upload form. For most / modern browsers, this loads a funky Javascript application which under normal circumstances does not reload the page, but shows a multi-step wizard with Javascript techniques. It manages most interactions via the API and dynamic HTML construction.

We have also written a lot of stuff related to stashed uploads that lives in includes/filerepo and includes/upload.

The usual boilerplate

 * UploadWizard.alias.php -- page name in various languages
 * UploadWizard.i18n.php -- message strings
 * UploadWizardHooks.php -- Resource Loader package definition
 * UploadWizard.php -- the usual boilerplate, simply includes all the files needed, including SpecialUploadWizard.php.

Loading resources
Due to constant changes in resource loading libraries over the course of this project, I eventually wrote my own super-simple framework. We may (probably) switch to Resource Loader before it is all over since they are launching at least some of RL with 1.17.


 * generateMinifiedResources.php
 * should be run every time you modify a JS or CSS file.
 * creates minified javascript file
 * creates minified CSS files for every directory (to preserve relative links)


 * UploadWizardDependencyLoader.php
 * when not in debug mode, adds minified scripts and styles to the page
 * the resources from generateMinifiedResources are hardcoded


 * UploadWizardMessages.php
 * creates JS on the page for messages