Extension:UploadWizard

From MediaWiki.org
Jump to: navigation, search
MediaWiki extensions manualManual:Extensions
Crystal Clear action run.png
UploadWizard

Release status:Extension status stable

Upload Wizard screenshot (release rights).png
ImplementationTemplate:Extension#type Media, Special page
DescriptionTemplate:Extension#description Multi-file, step-by-step upload wizard
Author(s)Template:Extension#username Neil Kandalgaonkar, Jeroen De Dauw, Mark Holmquist, Ryan Kaldari, Ankur Anand, Yuvi Panda, Michael Dale
Latest versionTemplate:Extension#version continuous updates
MediaWikiTemplate:Extension#mediawiki 1.23+
LicenseTemplate:Extension#license GNU General Public License 2.0 or later
Download
README
ExampleTemplate:Extension#example Commons Prototype
NamespaceTemplate:Extension#namespace Campaign

Translate the UploadWizard extension if it is available at translatewiki.net

Check usage and version matrix.

IssuesPhabricator

Open tasks · Report a bug

The UploadWizard extension allows a user to upload multiple files with a step-by-step JavaScript wizard. It was originally designed by Guillaume Paumier as part of the Multimedia usability project and developed by Neil Kandalgaonkar, and has evolved since then.

See also: Upload Wizard description page on Wikimedia Commons

Installation[edit]

Enabling uploads and thumbnails[edit]

Your MediaWiki will need to be capable of hosting media files and creating thumbnails (smaller previews of media files). If you can upload images and see smaller previews on their File page, you're already ready. If not, for full instructions, see the manual page on image administrationManual:Image administration, particularly image thumbnailingManual:Image administration#Image thumbnailing.

Quick start for GNU/Linux or Mac OS X users:

  • Make sure that the images directory is writable by your web server.
  • Install the ImageMagick libraries and binaries.
  • Add the following configuration to LocalSettings.php:
$wgEnableUploads = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = <path to your convert command>;  # Only needs to be set if different from /usr/bin/convert


require_once( "$IP/extensions/UploadWizard/UploadWizard.php" );

You also need to change the following core configuration variable.

// Needed to make UploadWizard work in IE, see bug 39877
$wgApiFrameOptions = 'SAMEORIGIN';

You should also install the EventLogging extension. This is used only if you use the campaigns feature, and should be made a soft dependency at some point in the future.

Enabling Flickr uploads[edit]

You can also use UploadWizard to transfer files directly from Flickr. To enable this option, first you'll need to get an API key from Flickr:

  1. Go to http://www.flickr.com/services/api/
  2. Click on API Keys
  3. Log in with your Yahoo/Flickr username and password
  4. Sign up for a key

Once you have a key, add the following to your LocalSettings.php:

$wgAllowCopyUploads = true;
$wgGroupPermissions['user']['upload_by_url'] = true; // to allow for all registered users

$wgUploadWizardConfig = array(
    'flickrApiUrl' => 'https://secure.flickr.com/services/rest/?',
    'flickrApiKey' => 'XXXXXXXXXXXXXXX',
);

You may also want to limit the upload domains specifically to Flickr:

$wgCopyUploadsDomains = array( '*.flickr.com', '*.staticflickr.com' );

Updating from versions before 07/2013[edit]

The following is essentially important if you made use of the Campaign feature:

  • Update MediaWiki core to version 1.22 or later
  • Check your custom configuration (LocalSettings.php) against the new default config. Parameters like automatically added categories changed (autoCategoriesautoAdd => array( categories ).
  • Install Extension:EventLogging.
  • Run
    $ php extensions/UploadWizard/maintenance/migrateCampaigns.php
    

Other configuration[edit]

  • You need to have InstantCommons enabled in order to access the licensing tutorial. To enable InstantCommons add
    $wgUseInstantCommons = true;
    
    to LocalSettings.php.
  • You may want to set
    $wgUploadNavigationUrl = '/wiki/Special:UploadWizard';
    
    in LocalSettings.php, where /wiki/ is the correct path for your wiki. A more general way of doing this that works for whatever path configuration you have, but that requires PHP 5.3 or later is:
$wgExtensionFunctions[] = function() {
	$GLOBALS['wgUploadNavigationUrl'] = SpecialPage::getTitleFor( 'UploadWizard' )->getLocalURL();
	return true;
};

This modifies the sidebar's "Upload file" link - probably in other places as well. More at Manual:$wgUploadNavigationUrl.

Several other options are available through a configuration array. For example:

$wgUploadWizardConfig = array(
	'debug' => false,
	'autoAdd' => array(
	 	'wikitext' => array(
			'This file was uploaded with the UploadWizard extension.'
			),
	 	'categories' => array(
	 		 'Uploaded with UploadWizard'	
	 		 ),
		), // Should be localised to the language of your wiki instance
	'feedbackPage' => 'Feedback about UploadWizard',
	'altUploadForm' => 'Special:Upload',
	'fallbackToAltUploadForm' => false,
	'enableFormData' => true, // Should FileAPI uploads be used on supported browsers?
	'enableMultipleFiles' => true,
	'enableMultiFileSelect' => false,
	'uwLanguages' => array(
		'ar' => 'العربية',
		'de' => 'Deutsch',
		'en' => 'English'
		), // Selectable languages for file descriptions - defaults to 'en'
	'tutorial' => array(
	 	'skip' => true
		), // Skip the tutorial
	'maxUploads' => 15, // Number of uploads with one form - defaults to 50
	'fileExtensions' => $wgFileExtensions // omitting this may cause errors
	);

Note Note: This is just an example configuration setting. See the "UploadWizard.config.php" file (starting around line 60) for many more options to the $wgUploadWizardConfig array.

Usage[edit]

URL arguments[edit]

There are several url arguments that can be specified to alter the behaviour of the UploadWizard:

  • campaign: Specifies which upload campaign to use.
  • skiptutorial: Sets if the licensing tutorial should be skipped or not. The value should be "1" or "true" to skip.
  • id: Sets the initial value for the id field.
  • description: Sets the initial value for the description field.
  • lat: Sets the initial value for the latitude field.
  • lon: Sets the initial value for the longitude field.
  • alt: Sets the initial value for the altitude field.
  • categories: Sets the initial value for the categories field, multiple categories seperated by |.
  • fields: The initial value of additional fields defined by a campaign. Values of multiple fields must be passed in the exact same order as defined in the campaign.
(e. g. fields[]=value_first&fields[]=value_second)

These arguments can be specified as follows: if you have an argument named "campaign" and want to provide the value "foobar", then append campaign=foobar to the url. For example wiki/Special:UploadWizard?campaign=foobar or w/index.php?title=Special:UploadWizard&campaign=foobar.

Object references[edit]

Upload Wizard provides a way to store “object references” - references to list templates in Wiki pages - in the file description page. These may be used by bots to insert a thumbnail image into a list page. A bot that is doing this for monument lists of German Wikipedia is running on tool labs. Its code is hosted on GitHub. Though its purpose is to update monument lists on Wikipedia it can be adopted to serve in different scenarios.

This feature uses the parameters objref and updateList. If both parameters are passed, the Upload Wizard shows a checkbox for each upload, which can be used to select the image that the object reference is added to. If the parameter updateList is omitted, the checkboxes will be disabled and an additional notice is being displayed stating that an image for the object already exists in the list.

  • objref: Specifies an object reference that can be used to update a page with a thumbnail of an uploaded image. Passing this parameter is expected in the following format objref=prefix|page_title|object_id
    • prefix - Interwiki or interlanguage prefix as defined per Special:Interwiki. The prefix must be defined in order to make this work.
    • page_title - The title of the page the object is listed on.
    • object_id - A unique identifier of the object for a bot to update
  • updateList: Specifies whether a list page should be updated at all. Set to any value, this parameter enables a checkbox

Testing[edit]

If you're testing UploadWizard for whatever reason, and you've run out of "real" images to upload as test cases, you can always use the handy MediaWiki utility for creating test images. Open a terminal emulator, get into a directory where you want to store a bunch of test JPG files, and run

$ php path/to/mediawiki/tests/phpunit/includes/api/generateRandomImages.php

Here's a Bash script that should make it easier to do all of this without much trouble. It's a good idea to put this in your PATH and/or make a handy shortcut to it somewhere that will make it trivial to update your images with new ones.

#!/bin/bash

# Declare some paths (easier to configure)
PICPATH=/path/to/image/directory
MW_INSTALL_PATH=/path/to/mediawiki

# Get to the pic path, and remove old test images
cd $PICPATH
rm *.jpg

# Run the generate script three times to give us a bunch of images
php $MW_INSTALL_PATH/tests/phpunit/includes/api/generateRandomImages.php
php $MW_INSTALL_PATH/tests/phpunit/includes/api/generateRandomImages.php
php $MW_INSTALL_PATH/tests/phpunit/includes/api/generateRandomImages.php

Templates[edit]

WARNING: This list is not complete and more templates are required, otherwise you will end with SCRIPT error or other error messages not in English!

Upload Wizard will insert a few templates into generated file description pages, which need to exist on the wiki in order for the description pages to be rendered correctly. The templates used include:

Development status[edit]

While we feel that this is ready for others to use, so far, this extension has mostly been used only on Wikimedia wikis. We'd like to get reports from other MediaWiki installations as well.

See also[edit]

Related specs[edit]