Bawolff, Daniel or anyone else out there:
Is there interest in helping create a 'ZoomableImages' extension?
I am have some working code (below)... it would need a security audit and bit more polish.
I started a page for the extension on MediaWiki -- https://www.mediawiki.org/wiki/Extension:ZoomableImages
Previously reported stuff on Phabricator... but I think the account is locked.
Reading about uploading...
Michael
ZoomableImages.php ---------------------------------------------------------------- <?php
/** * @extension ZoomableImages * @author Michael Bonert (AKA: Nephron) * @copyright © 2016 Michael Bonert * @licence GNU General Public Licence Version 2.0+ * @description allow use of deep zoom images (DZI) via OpenSeadragon */
// Extension credits that will show up on Special:Version $wgExtensionCredits['tag'][] = array( 'name' => "ZoomableImages", 'author' => "Michael Bonert", 'description' => "Extension to allow use of zoomable images using the OpenSeadragon viewer", 'version' => "0.1", 'license-name' => "GPL-2.0+", );
$wgAutoloadClasses['ZoomableImages'] = $IP . '/extensions/ZoomableImages/ZoomableImages_body.php'; $wgHooks['ParserFirstCallInit'][] = 'ZoomableImages::onParserInit'; ?> ----------------------------------------------------------------
ZoomableImages_body.php ---------------------------------------------------------------- <?php class ZoomableImages { static function onParserInit( Parser $parser ) { $parser->setHook( 'zoomableimage', array( __CLASS__, 'zoomableimageRender' ) ); return true; } static function zoomableimageRender( $input, array $args, Parser $parser, PPFrame $frame ) { $attr = array(); // make a list of attributes and their values and dump them along with the user input
// initialize 'width' and 'height' $zimage_width = -1; $zimage_height = -1;
foreach( $args as $name => $value ) { $attr[] = '<strong>' . htmlspecialchars( $name ) . '</strong> = ' . htmlspecialchars( $value ); // get 'width', 'height' and 'name' if ( $name == 'name') { $zimage_name= $value; } if ( $name == 'width' ) { $zimage_width = $value; } if ( $name == 'height' ) { $zimage_height = $value; } }
// if 'width' and 'height' not defined set default values if ( $zimage_width == -1 ) { $zimage_width=400; } if ( $zimage_height == -1 ) { $zimage_width=300; }
$ret = '<table>'; $ret .= '<tr>'; $ret .= '<!-- OpenSeadragon zoomable image -->'; $ret .= '<div id="openseadragon1" style="width: ' . $zimage_width . 'px; height:' . $zimage_height . 'px;"></div>'; $ret .= '<script src="../extensions/ZoomableImages/openseadragon/openseadragon.min.js"></script>'; $ret .= '<script type="text/javascript"> var viewer = OpenSeadragon({ id: "openseadragon1", prefixUrl: "../extensions/ZoomableImages/openseadragon/images/", tileSources: "../images/zimages/' . $zimage_name . '" });</script>'; $ret .= '</tr>'; $ret .= '</table>'; return $ret; } } ----------------------------------------------------------------
extension.json ---------------------------------------------------------------- { "name": "ZoomableImages", "author": [ "Michael Bonert" ], "license-name": "GPL-2.0+", "url": "https://www.mediawiki.org/wiki/Extension:ZoomableImages", "descriptionmsg": "zoomableimages-desc", "type": "parserhook", "MessagesDirs": { "ZoomableImages": [ ] }, "Hooks": { "ParserFirstCallInit": [ "ZoomableImages::init" ] }, "manifest_version": 1 } ----------------------------------------------------------------