xref: /plugin/popupviewer/action.php (revision f375a6bb959675108427ae9b3a7a842bd9c20601)
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(){
19804f499dSGerry Weißbach    	return array_merge(confToHash(dirname(__FILE__).'/plugin.info.txt'), array(
20804f499dSGerry Weißbach				'name' => 'PopUpViewer Action Component',
21804f499dSGerry Weißbach				'desc' => 'Delivers pages back to the browser'
22804f499dSGerry 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
546ed83c65SGerry Weißbach        $data = "";
556ed83c65SGerry Weißbach        $head = array();
56*f375a6bbSGerry Weißbach		$ID = getID('id');
576ed83c65SGerry Weißbach
586ed83c65SGerry Weißbach        switch($event->data) {
596ed83c65SGerry Weißbach            case '_popup_load_file' :
606ed83c65SGerry Weißbach                $INFO = pageinfo();
616ed83c65SGerry Weißbach                $json = new JSON();
626ed83c65SGerry Weißbach                $JSINFO['id'] = $ID;
636ed83c65SGerry Weißbach                $JSINFO['namespace'] = (string) $INFO['namespace'];
646ed83c65SGerry Weißbach                trigger_event('POPUPVIEWER_DOKUWIKI_STARTED',$head,null,true);
656ed83c65SGerry Weißbach
666ed83c65SGerry Weißbach                $script = 'var JSINFO = '.$json->encode($JSINFO).'; ';
676ed83c65SGerry Weißbach                $head['script'][] = array( 'type'=>'text/javascript', '_data'=> $script);
686ed83c65SGerry Weißbach
696ed83c65SGerry Weißbach                $data = '<div class="dokuwiki" style="padding-bottom: 10px;">' . p_wiki_xhtml($ID,'',true) . '</div>';
706ed83c65SGerry Weißbach                break;
716ed83c65SGerry Weißbach            case '_popup_load_image_meta' :
72*f375a6bbSGerry Weißbach
73*f375a6bbSGerry Weißbach				global $SRC;
74*f375a6bbSGerry Weißbach				$SRC = mediaFN($ID);
75*f375a6bbSGerry Weißbach                $title = hsc(tpl_img_getTag('IPTC.Headline'));
76*f375a6bbSGerry Weißbach                $caption = hsc(tpl_img_getTag('IPTC.Caption'));
776ed83c65SGerry Weißbach
786ed83c65SGerry Weißbach                if ( !empty($title) ) { $title = "<h3 class=\"title\">$title</h3>"; }
796ed83c65SGerry Weißbach                if ( !empty($caption) ) { $caption = "<div class=\"text\"><p>$caption</p></div>"; }
806ed83c65SGerry Weißbach                $data = preg_replace("%(\n|\r)%", '', nl2br($title.$caption));
816ed83c65SGerry Weißbach                break;
826ed83c65SGerry Weißbach        }
836ed83c65SGerry Weißbach
846ed83c65SGerry Weißbach        header('Content-Type: text/html; charset=utf-8');
856ed83c65SGerry Weißbach
866ed83c65SGerry Weißbach        if ( !empty($head) ) {
876ed83c65SGerry Weißbach            trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true);
886ed83c65SGerry Weißbach        }
896ed83c65SGerry Weißbach
906ed83c65SGerry Weißbach        print $data;
916ed83c65SGerry Weißbach        return;
926ed83c65SGerry Weißbach    }
936ed83c65SGerry Weißbach}