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)); 497d101cc1SGerry Weißbach 507d101cc1SGerry Weißbach $check = array(); 51*a9052036SGerry Weißbach $last_key = end(array_keys($translationHSFiles)); 527d101cc1SGerry Weißbach foreach( $translationHSFiles as $lang => $data ) 537d101cc1SGerry Weißbach { 547d101cc1SGerry Weißbach if ( count($translationHSFiles) == 1 && $lang == $conf['lang'] ) 557d101cc1SGerry Weißbach { 567d101cc1SGerry Weißbach // If there is only one language and it is the system language - there is no language 577d101cc1SGerry Weißbach $lang = ''; 587d101cc1SGerry Weißbach } 597d101cc1SGerry Weißbach 607d101cc1SGerry Weißbach // Prepare Translations 617d101cc1SGerry Weißbach if ( !empty($lang) ) 627d101cc1SGerry Weißbach { 637d101cc1SGerry Weißbach $toc->translation = &$this->translation; 647d101cc1SGerry Weißbach $rootNode = cleanID($this->translation->tns . $lang) . ':'; 657d101cc1SGerry Weißbach } else { 667d101cc1SGerry Weißbach $toc->translation = null; 677d101cc1SGerry Weißbach $rootNode = ''; 687d101cc1SGerry Weißbach } 697d101cc1SGerry Weißbach 70f37dfca9SGerry Weißbach $tsRootPath = $hsPrename . '/' . $this->translationRootPath($translationRoot); 717d101cc1SGerry Weißbach 727d101cc1SGerry Weißbach // Create toc and map for each lang 737d101cc1SGerry Weißbach list($tocData, $mapData, $startPageID) = $toc->__getJavaHelpTOCXML($data, $tsRootPath); 747d101cc1SGerry Weißbach $this->functions->debug->message("Generating JavaHelpDocZip for language '$lang'", null, 2); 757d101cc1SGerry Weißbach $this->filewriter->__moveDataToZip($tocData, $tsRootPath . $lang . '/' . $this->tocName); 767d101cc1SGerry Weißbach $this->filewriter->__moveDataToZip($mapData, $tsRootPath . $lang . '/' . $this->mapName); 777d101cc1SGerry Weißbach 787d101cc1SGerry Weißbach // Create HS File 797d101cc1SGerry Weißbach // array_shift($toc->getMapID($rootNode, &$check)) 807d101cc1SGerry Weißbach $HS = $this->getHSXML( $startPageID, $this->functions->getSiteTitle($rootNode), $lang, $tsRootPath ); 81*a9052036SGerry Weißbach $this->filewriter->__moveDataToZip($HS, $translationRoot . ( empty($lang) ? '' : '_') . $lang . '.hs'); 827d101cc1SGerry Weißbach 837d101cc1SGerry Weißbach // Default Lang 84*a9052036SGerry Weißbach if ( $lang == $conf['lang'] || $lang == $last_key ) 857d101cc1SGerry Weißbach { 86f37dfca9SGerry Weißbach $this->filewriter->__moveDataToZip($HS, $translationRoot . '.hs'); 87*a9052036SGerry Weißbach $last_key = null; 887d101cc1SGerry Weißbach } 897d101cc1SGerry Weißbach } 907d101cc1SGerry Weißbach } 917d101cc1SGerry Weißbach 927d101cc1SGerry Weißbach private function translationRootPath($translationRoot = '') 937d101cc1SGerry Weißbach { 947d101cc1SGerry Weißbach if ( !empty($translationRoot) ) 957d101cc1SGerry Weißbach { 967d101cc1SGerry Weißbach return $translationRoot . '/'; 977d101cc1SGerry Weißbach } 987d101cc1SGerry Weißbach 997d101cc1SGerry Weißbach return $translationRoot; 1007d101cc1SGerry Weißbach } 1017d101cc1SGerry Weißbach 1027d101cc1SGerry Weißbach private function getHSXML($rootID, $title, $lang='', $translationRoot='') 1037d101cc1SGerry Weißbach { 104*a9052036SGerry Weißbach if ( empty($lang) && substr($translationRoot, -1) == '/') { 105*a9052036SGerry Weißbach $translationRoot = substr($translationRoot, 0, -1); 106*a9052036SGerry Weißbach } 107*a9052036SGerry Weißbach 1087d101cc1SGerry Weißbach return <<<OUTPUT 1097d101cc1SGerry Weißbach<?xml version='1.0' encoding='ISO-8859-1' ?> 1107d101cc1SGerry Weißbach<helpset version="1.0"> 1117d101cc1SGerry Weißbach 1127d101cc1SGerry Weißbach <title>{$title}</title> 1137d101cc1SGerry Weißbach <maps> 1147d101cc1SGerry Weißbach <homeID>{$rootID}</homeID> 1157d101cc1SGerry Weißbach <mapref location="{$translationRoot}{$lang}/{$this->mapName}"/> 1167d101cc1SGerry Weißbach </maps> 1177d101cc1SGerry Weißbach 1187d101cc1SGerry Weißbach <view> 1197d101cc1SGerry Weißbach <name>TOC</name> 1207d101cc1SGerry Weißbach <label>{$this->functions->getLang('toc')}</label> 1217d101cc1SGerry Weißbach <type>javax.help.TOCView</type> 1227d101cc1SGerry Weißbach <data>{$translationRoot}{$lang}/{$this->tocName}</data> 1237d101cc1SGerry Weißbach </view> 1247d101cc1SGerry Weißbach 1257d101cc1SGerry Weißbach <view> 1267d101cc1SGerry Weißbach <name>Search</name> 1277d101cc1SGerry Weißbach <label>{$this->functions->getLang('search')}</label> 1287d101cc1SGerry Weißbach <type>javax.help.SearchView</type> 1297d101cc1SGerry Weißbach <data engine="com.sun.java.help.search.DefaultSearchEngine"> 1307d101cc1SGerry Weißbach {$translationRoot}{$lang}/JavaHelpSearch 1317d101cc1SGerry Weißbach </data> 1327d101cc1SGerry Weißbach </view> 1337d101cc1SGerry Weißbach 1347d101cc1SGerry Weißbach <impl> 1357d101cc1SGerry Weißbach <helpsetregistry helpbrokerclass="javax.help.DefaultHelpBroker" /> 1367d101cc1SGerry Weißbach <viewerregistry viewertype="text/html" viewerclass="com.inet.html.InetHtmlEditorKit" /> 1377d101cc1SGerry Weißbach </impl> 1387d101cc1SGerry Weißbach</helpset> 1397d101cc1SGerry WeißbachOUTPUT; 1407d101cc1SGerry Weißbach } 1417d101cc1SGerry Weißbach}