xref: /plugin/siteexport/inc/javahelp.php (revision f5fb7cd83509e5558812878da653cf2c2f55a50c)
17d101cc1SGerry Weißbach<?php
27d101cc1SGerry Weißbach
37d101cc1SGerry Weißbachif(!defined('DOKU_PLUGIN')) die('meh');
47d101cc1SGerry Weißbachrequire_once(DOKU_PLUGIN.'siteexport/inc/toc.php');
57d101cc1SGerry Weißbach
67d101cc1SGerry Weißbachclass siteexport_javahelp
77d101cc1SGerry Weißbach{
87d101cc1SGerry Weißbach    private $functions = null;
97d101cc1SGerry Weißbach    private $translation = null;
107d101cc1SGerry Weißbach    private $filewriter = null;
117d101cc1SGerry Weißbach
127d101cc1SGerry Weißbach    private $tocName = 'toc.xml';
137d101cc1SGerry Weißbach    private $mapName = 'map.xml';
147d101cc1SGerry Weißbach
157d101cc1SGerry Weißbach    public function siteexport_javahelp($functions, $filewriter)
167d101cc1SGerry Weißbach    {
177d101cc1SGerry Weißbach        $this->functions = $functions;
187d101cc1SGerry Weißbach        $this->filewriter = $filewriter;
197d101cc1SGerry Weißbach        $this->translation = & plugin_load('helper', 'translation' );
207d101cc1SGerry Weißbach    }
217d101cc1SGerry Weißbach
227d101cc1SGerry Weißbach    public function createTOCFiles($data)
237d101cc1SGerry Weißbach    {
247d101cc1SGerry Weißbach        global $conf;
257d101cc1SGerry Weißbach
267d101cc1SGerry Weißbach        // Split Tree for translation
277d101cc1SGerry Weißbach        $translationHSFiles = array();
287d101cc1SGerry Weißbach
297d101cc1SGerry Weißbach        for ($i=0; $i<count($data); $i++)
307d101cc1SGerry Weißbach        {
317d101cc1SGerry Weißbach            $lang = '';
327d101cc1SGerry Weißbach            if ( $this->translation )
337d101cc1SGerry Weißbach            {
347d101cc1SGerry Weißbach                $this->translation->tns = $this->translation->setupTNS($data[$i]['id']);
357d101cc1SGerry Weißbach                $lang = $this->translation->getLangPart($data[$i]['id']);
367d101cc1SGerry Weißbach            }
377d101cc1SGerry Weißbach
387d101cc1SGerry Weißbach            // get all the relative URLs
397d101cc1SGerry Weißbach            $translationHSFiles[$lang][] = $data[$i];
407d101cc1SGerry Weißbach        }
417d101cc1SGerry Weißbach
427d101cc1SGerry Weißbach        $toc = new siteexport_toc($this->functions);
437d101cc1SGerry Weißbach        if ( $this->translation )
447d101cc1SGerry Weißbach        {
457d101cc1SGerry Weißbach            $translationRoot = curNS($this->translation->tns);
467d101cc1SGerry Weißbach        }
477d101cc1SGerry Weißbach
48f37dfca9SGerry Weißbach        $hsPrename = curNS(getNS($this->translation->tns));
49*f5fb7cd8SGerry Weißbach        $this->functions->debug->message("HelpSetPre-Name: {$hsPrename}", null, 1);
50*f5fb7cd8SGerry Weißbach        $this->functions->debug->message("Translation-Root: {$translationRoot}", null, 1);
517d101cc1SGerry Weißbach
527d101cc1SGerry Weißbach        $check = array();
53a9052036SGerry Weißbach        $last_key = end(array_keys($translationHSFiles));
547d101cc1SGerry Weißbach        foreach( $translationHSFiles as $lang => $data )
557d101cc1SGerry Weißbach        {
567d101cc1SGerry Weißbach            if ( count($translationHSFiles) == 1 && $lang == $conf['lang'] )
577d101cc1SGerry Weißbach            {
587d101cc1SGerry Weißbach                // If there is only one language and it is the system language - there is no language
597d101cc1SGerry Weißbach                $lang = '';
607d101cc1SGerry Weißbach            }
617d101cc1SGerry Weißbach
627d101cc1SGerry Weißbach            // Prepare Translations
637d101cc1SGerry Weißbach            if ( !empty($lang) )
647d101cc1SGerry Weißbach            {
657d101cc1SGerry Weißbach                $toc->translation = &$this->translation;
667d101cc1SGerry Weißbach                $rootNode = cleanID($this->translation->tns . $lang) . ':';
677d101cc1SGerry Weißbach            } else {
687d101cc1SGerry Weißbach                $toc->translation = null;
697d101cc1SGerry Weißbach                $rootNode = '';
707d101cc1SGerry Weißbach            }
717d101cc1SGerry Weißbach
72f37dfca9SGerry Weißbach            $tsRootPath = $hsPrename . '/' . $this->translationRootPath($translationRoot);
737d101cc1SGerry Weißbach
747d101cc1SGerry Weißbach            // Create toc and map for each lang
757d101cc1SGerry Weißbach            list($tocData, $mapData, $startPageID) = $toc->__getJavaHelpTOCXML($data, $tsRootPath);
767d101cc1SGerry Weißbach            $this->functions->debug->message("Generating JavaHelpDocZip for language '$lang'", null, 2);
777d101cc1SGerry Weißbach            $this->filewriter->__moveDataToZip($tocData, $tsRootPath . $lang . '/' . $this->tocName);
787d101cc1SGerry Weißbach            $this->filewriter->__moveDataToZip($mapData, $tsRootPath . $lang . '/' . $this->mapName);
797d101cc1SGerry Weißbach
807d101cc1SGerry Weißbach            // Create HS File
817d101cc1SGerry Weißbach            // array_shift($toc->getMapID($rootNode, &$check))
827d101cc1SGerry Weißbach            $HS = $this->getHSXML( $startPageID, $this->functions->getSiteTitle($rootNode), $lang, $tsRootPath );
83*f5fb7cd8SGerry Weißbach            $this->filewriter->__moveDataToZip($HS, $translationRoot . ( empty($lang) ? '' : '_' . $lang ) . '.hs');
847d101cc1SGerry Weißbach
857d101cc1SGerry Weißbach            // Default Lang
86a9052036SGerry Weißbach            if ( $lang == $conf['lang'] || $lang == $last_key )
877d101cc1SGerry Weißbach            {
88f37dfca9SGerry Weißbach                $this->filewriter->__moveDataToZip($HS, $translationRoot . '.hs');
89a9052036SGerry Weißbach                $last_key = null;
907d101cc1SGerry Weißbach            }
917d101cc1SGerry Weißbach        }
927d101cc1SGerry Weißbach    }
937d101cc1SGerry Weißbach
947d101cc1SGerry Weißbach    private function translationRootPath($translationRoot = '')
957d101cc1SGerry Weißbach    {
967d101cc1SGerry Weißbach        if ( !empty($translationRoot) )
977d101cc1SGerry Weißbach        {
987d101cc1SGerry Weißbach            return $translationRoot . '/';
997d101cc1SGerry Weißbach        }
1007d101cc1SGerry Weißbach
1017d101cc1SGerry Weißbach        return $translationRoot;
1027d101cc1SGerry Weißbach    }
1037d101cc1SGerry Weißbach
1047d101cc1SGerry Weißbach    private function getHSXML($rootID, $title, $lang='', $translationRoot='')
1057d101cc1SGerry Weißbach    {
106a9052036SGerry Weißbach        if ( empty($lang) && substr($translationRoot, -1) == '/') {
107a9052036SGerry Weißbach            $translationRoot = substr($translationRoot, 0, -1);
108a9052036SGerry Weißbach        }
109a9052036SGerry Weißbach
1107d101cc1SGerry Weißbach        return <<<OUTPUT
1117d101cc1SGerry Weißbach<?xml version='1.0' encoding='ISO-8859-1' ?>
1127d101cc1SGerry Weißbach<helpset version="1.0">
1137d101cc1SGerry Weißbach
1147d101cc1SGerry Weißbach	<title>{$title}</title>
1157d101cc1SGerry Weißbach    <maps>
1167d101cc1SGerry Weißbach        <homeID>{$rootID}</homeID>
1177d101cc1SGerry Weißbach        <mapref location="{$translationRoot}{$lang}/{$this->mapName}"/>
1187d101cc1SGerry Weißbach     </maps>
1197d101cc1SGerry Weißbach
1207d101cc1SGerry Weißbach    <view>
1217d101cc1SGerry Weißbach        <name>TOC</name>
1227d101cc1SGerry Weißbach        <label>{$this->functions->getLang('toc')}</label>
1237d101cc1SGerry Weißbach        <type>javax.help.TOCView</type>
1247d101cc1SGerry Weißbach        <data>{$translationRoot}{$lang}/{$this->tocName}</data>
1257d101cc1SGerry Weißbach    </view>
1267d101cc1SGerry Weißbach
1277d101cc1SGerry Weißbach    <view>
1287d101cc1SGerry Weißbach        <name>Search</name>
1297d101cc1SGerry Weißbach        <label>{$this->functions->getLang('search')}</label>
1307d101cc1SGerry Weißbach        <type>javax.help.SearchView</type>
1317d101cc1SGerry Weißbach        <data engine="com.sun.java.help.search.DefaultSearchEngine">
1327d101cc1SGerry Weißbach            {$translationRoot}{$lang}/JavaHelpSearch
1337d101cc1SGerry Weißbach        </data>
1347d101cc1SGerry Weißbach    </view>
1357d101cc1SGerry Weißbach
1367d101cc1SGerry Weißbach    <impl>
1377d101cc1SGerry Weißbach        <helpsetregistry helpbrokerclass="javax.help.DefaultHelpBroker" />
1387d101cc1SGerry Weißbach        <viewerregistry viewertype="text/html" viewerclass="com.inet.html.InetHtmlEditorKit" />
1397d101cc1SGerry Weißbach    </impl>
1407d101cc1SGerry Weißbach</helpset>
1417d101cc1SGerry WeißbachOUTPUT;
1427d101cc1SGerry Weißbach    }
1437d101cc1SGerry Weißbach}