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