[Mediawiki-l] Configuring to allow Embedding different MIME types

Tim Starling tstarling at wikimedia.org
Sat Jul 4 07:04:30 UTC 2009


Jon.G.Bartlett at gsk.com wrote:
> All,
> 
> I'm running a private Mediawiki within the company - and I want to embed 
> objects other than the standard picture MIME formats.
> Obviously, clients need to have the software installed - and I know how to 
> allow certain upload file types - but how do I enable the client to 
> display the embedded object ?
> 
> This seems like it should be an FAQ  - but I can't find any other info.
> Jon.
> PS the file type I'm particularly interested in is ISIS sketch - which is 
> a molecular drawing program (and is different to Moelcule e.g. jMOL).

If no-one has written a plugin for that file type already, you'll have
to do one yourself. Basically it's a media type handler, so say if the
type is application/x-isis, you'd have:

$wgMediaHandlers['application/x-isis'] = 'IsisHandler';

class IsisHandler extends MediaHandler {
    function doTransform( $image, $dstPath, $dstUrl, $params, $flags =
0 ) {
        return new IsisPluginOutput( $image->getURL() );
    }

    ...a few other functions to define here but all pretty easy...
}

class IsisPluginOutput extends MediaTransformOutput {
    function __construct( $url ) {
        $this->url = $url;
    }

    function toHtml( $options = array() ) {
        return Xml::element( 'object',
            array(
                'src' => $this->url,
                ... object attributes per ISIS documentation ...
            ) );
    }
}

Put that in a file, fill in the blanks, and share it as an extension
on www.mediawiki.org.

Unfortunately it's necessary at the current time to do one of these
for each object type you want to embed. If you have a media handler
like this, then the plugin will be invoked on the file description
page, and for file links in wiki pages like [[File:Foo.mol]].

-- Tim Starling




More information about the MediaWiki-l mailing list