1*6ed83c65SGerry Weißbach<?php 2*6ed83c65SGerry Weißbach/** 3*6ed83c65SGerry Weißbach * Imageflow Plugin 4*6ed83c65SGerry Weißbach * 5*6ed83c65SGerry Weißbach * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6*6ed83c65SGerry Weißbach * @author i-net software <tools@inetsoftware.de> 7*6ed83c65SGerry Weißbach * @author Gerry Weissbach <gweissbach@inetsoftware.de> 8*6ed83c65SGerry Weißbach */ 9*6ed83c65SGerry Weißbach 10*6ed83c65SGerry Weißbach// must be run within Dokuwiki 11*6ed83c65SGerry Weißbachif(!defined('DOKU_INC')) die(); 12*6ed83c65SGerry Weißbach 13*6ed83c65SGerry Weißbachif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 14*6ed83c65SGerry Weißbachrequire_once(DOKU_PLUGIN.'action.php'); 15*6ed83c65SGerry Weißbach 16*6ed83c65SGerry Weißbachclass action_plugin_popupviewer extends DokuWiki_Action_Plugin { 17*6ed83c65SGerry Weißbach 18*6ed83c65SGerry Weißbach function getInfo(){ 19*6ed83c65SGerry Weißbach return array(); 20*6ed83c65SGerry Weißbach } 21*6ed83c65SGerry Weißbach 22*6ed83c65SGerry Weißbach function register(&$controller) { 23*6ed83c65SGerry Weißbach // Support given via AJAX 24*6ed83c65SGerry Weißbach $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'ajax_viewer_provider'); 25*6ed83c65SGerry Weißbach } 26*6ed83c65SGerry Weißbach 27*6ed83c65SGerry Weißbach function ajax_viewer_provider( &$event ) { 28*6ed83c65SGerry Weißbach global $JSINFO; 29*6ed83c65SGerry Weißbach global $INFO; 30*6ed83c65SGerry Weißbach global $ID; 31*6ed83c65SGerry Weißbach global $ACT; 32*6ed83c65SGerry Weißbach 33*6ed83c65SGerry Weißbach if ( $event->data != '_popup_load_file' && $event->data != '_popup_load_image_meta' ) { 34*6ed83c65SGerry Weißbach return; 35*6ed83c65SGerry Weißbach } 36*6ed83c65SGerry Weißbach 37*6ed83c65SGerry Weißbach // Registers ACT 38*6ed83c65SGerry Weißbach if (isset($_SERVER['HTTP_X_DOKUWIKI_DO'])){ 39*6ed83c65SGerry Weißbach $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO'])); 40*6ed83c65SGerry Weißbach } elseif (!empty($_REQUEST['idx'])) { 41*6ed83c65SGerry Weißbach $ACT = 'index'; 42*6ed83c65SGerry Weißbach } elseif (isset($_REQUEST['do'])) { 43*6ed83c65SGerry Weißbach $ACT = $_REQUEST['do']; 44*6ed83c65SGerry Weißbach } else { 45*6ed83c65SGerry Weißbach $ACT = 'show'; 46*6ed83c65SGerry Weißbach } 47*6ed83c65SGerry Weißbach 48*6ed83c65SGerry Weißbach $event->preventDefault(); 49*6ed83c65SGerry Weißbach $event->stopPropagation(); 50*6ed83c65SGerry Weißbach $ID = cleanID(str_replace(wl('', null, true), '', $_REQUEST['id'])); 51*6ed83c65SGerry Weißbach $ID = cleanID($_REQUEST['id']); 52*6ed83c65SGerry Weißbach 53*6ed83c65SGerry Weißbach $data = ""; 54*6ed83c65SGerry Weißbach $head = array(); 55*6ed83c65SGerry Weißbach 56*6ed83c65SGerry Weißbach switch($event->data) { 57*6ed83c65SGerry Weißbach case '_popup_load_file' : 58*6ed83c65SGerry Weißbach $INFO = pageinfo(); 59*6ed83c65SGerry Weißbach $json = new JSON(); 60*6ed83c65SGerry Weißbach $JSINFO['id'] = $ID; 61*6ed83c65SGerry Weißbach $JSINFO['namespace'] = (string) $INFO['namespace']; 62*6ed83c65SGerry Weißbach trigger_event('POPUPVIEWER_DOKUWIKI_STARTED',$head,null,true); 63*6ed83c65SGerry Weißbach 64*6ed83c65SGerry Weißbach $script = 'var JSINFO = '.$json->encode($JSINFO).'; '; 65*6ed83c65SGerry Weißbach $head['script'][] = array( 'type'=>'text/javascript', '_data'=> $script); 66*6ed83c65SGerry Weißbach 67*6ed83c65SGerry Weißbach $data = '<div class="dokuwiki" style="padding-bottom: 10px;">' . p_wiki_xhtml($ID,'',true) . '</div>'; 68*6ed83c65SGerry Weißbach break; 69*6ed83c65SGerry Weißbach case '_popup_load_image_meta' : 70*6ed83c65SGerry Weißbach @require_once(DOKU_INC.'inc/JpegMeta.php'); 71*6ed83c65SGerry Weißbach if ( $meta = new JpegMeta(mediaFN($ID))) { 72*6ed83c65SGerry Weißbach $meta->_parseAll(); 73*6ed83c65SGerry Weißbach $title = $meta->getField('Iptc.Headline'); 74*6ed83c65SGerry Weißbach $caption = $meta->getField('Iptc.Caption'); 75*6ed83c65SGerry Weißbach 76*6ed83c65SGerry Weißbach if ( !empty($title) ) { $title = "<h3 class=\"title\">$title</h3>"; } 77*6ed83c65SGerry Weißbach if ( !empty($caption) ) { $caption = "<div class=\"text\"><p>$caption</p></div>"; } 78*6ed83c65SGerry Weißbach $data = preg_replace("%(\n|\r)%", '', nl2br($title.$caption)); 79*6ed83c65SGerry Weißbach } 80*6ed83c65SGerry Weißbach break; 81*6ed83c65SGerry Weißbach } 82*6ed83c65SGerry Weißbach 83*6ed83c65SGerry Weißbach header('Content-Type: text/html; charset=utf-8'); 84*6ed83c65SGerry Weißbach 85*6ed83c65SGerry Weißbach if ( !empty($head) ) { 86*6ed83c65SGerry Weißbach trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true); 87*6ed83c65SGerry Weißbach } 88*6ed83c65SGerry Weißbach 89*6ed83c65SGerry Weißbach print $data; 90*6ed83c65SGerry Weißbach return; 91*6ed83c65SGerry Weißbach } 92*6ed83c65SGerry Weißbach}