Page MenuHomePhabricator

refactor upload code a bit for use with extensions
Open, LowPublicFeature

Description

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.


Version: 1.22.0
Severity: enhancement

Details

Reference
bz48581

Event Timeline

bzimport raised the priority of this task from to Low.Nov 22 2014, 1:43 AM
bzimport set Reference to bz48581.
bzimport added a subscriber: Unknown Object (MLST).

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.

Krinkle set Security to None.
Krinkle removed a subscriber: Unknown Object (MLST).
Aklapper changed the subtype of this task from "Task" to "Feature Request".Feb 4 2022, 11:13 AM