16ed83c65SGerry Weißbach<?php 26ed83c65SGerry Weißbach/** 36ed83c65SGerry Weißbach * Imageflow Plugin 46ed83c65SGerry Weißbach * 56ed83c65SGerry Weißbach * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 66ed83c65SGerry Weißbach * @author i-net software <tools@inetsoftware.de> 76ed83c65SGerry Weißbach * @author Gerry Weissbach <gweissbach@inetsoftware.de> 86ed83c65SGerry Weißbach */ 96ed83c65SGerry Weißbach 106ed83c65SGerry Weißbach// must be run within Dokuwiki 116ed83c65SGerry Weißbachif(!defined('DOKU_INC')) die(); 126ed83c65SGerry Weißbach 136ed83c65SGerry Weißbachif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 146ed83c65SGerry Weißbachrequire_once(DOKU_PLUGIN.'action.php'); 156ed83c65SGerry Weißbach 166ed83c65SGerry Weißbachclass action_plugin_popupviewer extends DokuWiki_Action_Plugin { 176ed83c65SGerry Weißbach 186ed83c65SGerry Weißbach function getInfo(){ 19*804f499dSGerry Weißbach return array_merge(confToHash(dirname(__FILE__).'/plugin.info.txt'), array( 20*804f499dSGerry Weißbach 'name' => 'PopUpViewer Action Component', 21*804f499dSGerry Weißbach 'desc' => 'Delivers pages back to the browser' 22*804f499dSGerry Weißbach )); 236ed83c65SGerry Weißbach } 246ed83c65SGerry Weißbach 256ed83c65SGerry Weißbach function register(&$controller) { 266ed83c65SGerry Weißbach // Support given via AJAX 276ed83c65SGerry Weißbach $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'ajax_viewer_provider'); 286ed83c65SGerry Weißbach } 296ed83c65SGerry Weißbach 306ed83c65SGerry Weißbach function ajax_viewer_provider( &$event ) { 316ed83c65SGerry Weißbach global $JSINFO; 326ed83c65SGerry Weißbach global $INFO; 336ed83c65SGerry Weißbach global $ID; 346ed83c65SGerry Weißbach global $ACT; 356ed83c65SGerry Weißbach 366ed83c65SGerry Weißbach if ( $event->data != '_popup_load_file' && $event->data != '_popup_load_image_meta' ) { 376ed83c65SGerry Weißbach return; 386ed83c65SGerry Weißbach } 396ed83c65SGerry Weißbach 406ed83c65SGerry Weißbach // Registers ACT 416ed83c65SGerry Weißbach if (isset($_SERVER['HTTP_X_DOKUWIKI_DO'])){ 426ed83c65SGerry Weißbach $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO'])); 436ed83c65SGerry Weißbach } elseif (!empty($_REQUEST['idx'])) { 446ed83c65SGerry Weißbach $ACT = 'index'; 456ed83c65SGerry Weißbach } elseif (isset($_REQUEST['do'])) { 466ed83c65SGerry Weißbach $ACT = $_REQUEST['do']; 476ed83c65SGerry Weißbach } else { 486ed83c65SGerry Weißbach $ACT = 'show'; 496ed83c65SGerry Weißbach } 506ed83c65SGerry Weißbach 516ed83c65SGerry Weißbach $event->preventDefault(); 526ed83c65SGerry Weißbach $event->stopPropagation(); 536ed83c65SGerry Weißbach $ID = cleanID(str_replace(wl('', null, true), '', $_REQUEST['id'])); 546ed83c65SGerry Weißbach $ID = cleanID($_REQUEST['id']); 556ed83c65SGerry Weißbach 566ed83c65SGerry Weißbach $data = ""; 576ed83c65SGerry Weißbach $head = array(); 586ed83c65SGerry Weißbach 596ed83c65SGerry Weißbach switch($event->data) { 606ed83c65SGerry Weißbach case '_popup_load_file' : 616ed83c65SGerry Weißbach $INFO = pageinfo(); 626ed83c65SGerry Weißbach $json = new JSON(); 636ed83c65SGerry Weißbach $JSINFO['id'] = $ID; 646ed83c65SGerry Weißbach $JSINFO['namespace'] = (string) $INFO['namespace']; 656ed83c65SGerry Weißbach trigger_event('POPUPVIEWER_DOKUWIKI_STARTED',$head,null,true); 666ed83c65SGerry Weißbach 676ed83c65SGerry Weißbach $script = 'var JSINFO = '.$json->encode($JSINFO).'; '; 686ed83c65SGerry Weißbach $head['script'][] = array( 'type'=>'text/javascript', '_data'=> $script); 696ed83c65SGerry Weißbach 706ed83c65SGerry Weißbach $data = '<div class="dokuwiki" style="padding-bottom: 10px;">' . p_wiki_xhtml($ID,'',true) . '</div>'; 716ed83c65SGerry Weißbach break; 726ed83c65SGerry Weißbach case '_popup_load_image_meta' : 736ed83c65SGerry Weißbach @require_once(DOKU_INC.'inc/JpegMeta.php'); 746ed83c65SGerry Weißbach if ( $meta = new JpegMeta(mediaFN($ID))) { 756ed83c65SGerry Weißbach $meta->_parseAll(); 766ed83c65SGerry Weißbach $title = $meta->getField('Iptc.Headline'); 776ed83c65SGerry Weißbach $caption = $meta->getField('Iptc.Caption'); 786ed83c65SGerry Weißbach 796ed83c65SGerry Weißbach if ( !empty($title) ) { $title = "<h3 class=\"title\">$title</h3>"; } 806ed83c65SGerry Weißbach if ( !empty($caption) ) { $caption = "<div class=\"text\"><p>$caption</p></div>"; } 816ed83c65SGerry Weißbach $data = preg_replace("%(\n|\r)%", '', nl2br($title.$caption)); 826ed83c65SGerry Weißbach } 836ed83c65SGerry Weißbach break; 846ed83c65SGerry Weißbach } 856ed83c65SGerry Weißbach 866ed83c65SGerry Weißbach header('Content-Type: text/html; charset=utf-8'); 876ed83c65SGerry Weißbach 886ed83c65SGerry Weißbach if ( !empty($head) ) { 896ed83c65SGerry Weißbach trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true); 906ed83c65SGerry Weißbach } 916ed83c65SGerry Weißbach 926ed83c65SGerry Weißbach print $data; 936ed83c65SGerry Weißbach return; 946ed83c65SGerry Weißbach } 956ed83c65SGerry Weißbach}