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
}
----------------------------------------------------------------


_______________________________________________
MediaWiki-l mailing list
To unsubscribe, go to:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

Reply via email to