Last modified: 2014-03-10 11:10:21 UTC
I'm thinking of developing a new version of Extension:MultiUpload and using it as a base for a more specialized upload interface for another extension's use. All this (including the current MultiUpload) would work better if there were more of a distinction in the code between the Special:Upload page and its HTTP request, and a single file-upload operation, since you need that distinction in order to do multiple file uploads in a single request. I'd like to split up a few functions in SpecialUpload.php, upload.js, and UploadBase.php, so that they don't assume a single upload per page view and can be called more flexibly. I'm working on a prototype, which I'll put into Gerrit when it's more ready. I'm opening this bug now in case people want to discuss it.
Mentioning it in a thread on https://lists.wikimedia.org/mailman/listinfo/wikitech-l might be good.
I agree that the upload classes could be refactored (in particular trying to fix bug 48306 revealed some weaknesseses with the current design)
Sure. I probably won't touch those parts. I think a MultiUpload page - that is, an interface like Special:Upload but with several copies of the upload-file interface on a single page - can be done using a SpecialPage object that derives from SpecialUpload and a list of objects of SpecialUploadOneFile class that also derives from SpecialUpload - if some of SpecialUpload's functions are split so they can be selectively replaced in the subclasses. This is a kind of odd design, but would allow it to use Special:Upload's code with almost no duplication while making minimal changes to MW core. Some similar splitting would also need to happen in the javascript, and a more general factory function for UploadBase.
https://gerrit.wikimedia.org/r/#/c/67173/