* {@link mw.Upload.BookletLayout#getFilename getFilename}, and
* {@link mw.Upload.BookletLayout#getText getText} methods are used to get
* the information filled in these forms, required to call
* {@link mw.Upload mw.Upload}.
*
* ## Usage
*
* See the {@link mw.Upload.Dialog upload dialog}.
*
* The {@link mw.Upload.BookletLayout.event:fileUploaded fileUploaded},
* and {@link mw.Upload.BookletLayout.event:fileSaved fileSaved} events can
* be used to get details of the upload.
*
* ## Extending
*
* To extend using {@link mw.Upload mw.Upload}, override
* {@link mw.Upload.BookletLayout#renderInfoForm renderInfoForm} to render
* the form required for the specific use-case. Update the
* {@link mw.Upload.BookletLayout#getFilename getFilename}, and
* {@link mw.Upload.BookletLayout#getText getText} methods to return data
* from your newly created form. If you added new fields you'll also have
* to update the {@link mw.Upload.BookletLayout#clear} method.
*
* If you plan to use a different upload model, apart from what is mentioned
* above, you'll also have to override the
* {@link mw.Upload.BookletLayout#createUpload createUpload} method to
* return the new model. The {@link #saveFile saveFile}, and
* the {@link mw.Upload.BookletLayout#uploadFile uploadFile} methods need to be
* overridden to use the new model and data returned from the forms.
*
* @class mw.Upload.BookletLayout
* @extends OO.ui.BookletLayout
*
* @constructor
* @description Create an instance of `mw.Upload.BookletLayout`.
* @param {Object} config Configuration options; see also the config parameter for the
* {@link mw.Upload.BookletLayout} constructor.
* @param {jQuery} [config.$overlay] Overlay to use for widgets in the booklet
* @param {string} [config.filekey] Sets the stashed file to finish uploading. Overrides most of the file selection process, and fetches a thumbnail from the server.