xref: /plugin/popupviewer/action.php (revision 6ed83c6540b28ab4d3ecd6f835b4042fa04a21f1)
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}