xref: /plugin/siteexport/helper.php (revision 95c3174fe8f584b21d06c52feeef1855d7d5c633)
17d101cc1SGerry Weißbach<?php
27d101cc1SGerry Weißbach/**
37d101cc1SGerry Weißbach * Translation Plugin: Simple multilanguage plugin
47d101cc1SGerry Weißbach *
57d101cc1SGerry Weißbach * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
67d101cc1SGerry Weißbach * @author     Andreas Gohr <andi@splitbrain.org>
77d101cc1SGerry Weißbach */
87d101cc1SGerry Weißbach
97d101cc1SGerry Weißbach// must be run within Dokuwiki
107d101cc1SGerry Weißbachif(!defined('DOKU_INC')) die();
117d101cc1SGerry Weißbach
127d101cc1SGerry Weißbachclass helper_plugin_siteexport extends DokuWiki_Plugin {
137d101cc1SGerry Weißbach
147d101cc1SGerry Weißbach	/**
157d101cc1SGerry Weißbach	 * for backward compatability
167d101cc1SGerry Weißbach	 * @see inc/DokuWiki_Plugin#getInfo()
177d101cc1SGerry Weißbach	 */
187d101cc1SGerry Weißbach    function getInfo(){
197d101cc1SGerry Weißbach        if ( method_exists(parent, 'getInfo')) {
207d101cc1SGerry Weißbach            $info = parent::getInfo();
217d101cc1SGerry Weißbach        }
227d101cc1SGerry Weißbach        return is_array($info) ? $info : confToHash(dirname(__FILE__).'/plugin.info.txt');
237d101cc1SGerry Weißbach    }
247d101cc1SGerry Weißbach
257d101cc1SGerry Weißbach    /*
267d101cc1SGerry Weißbach     * return all the templates that this wiki has
277d101cc1SGerry Weißbach     */
287d101cc1SGerry Weißbach	function __getTemplates() {
297d101cc1SGerry Weißbach
307d101cc1SGerry Weißbach		// populate $this->_choices with a list of directories
317d101cc1SGerry Weißbach		$list = array();
327d101cc1SGerry Weißbach
337d101cc1SGerry Weißbach		$_dir = DOKU_INC . 'lib/tpl/';
347d101cc1SGerry Weißbach		$_pattern = '/^[\w-]+$/';
357d101cc1SGerry Weißbach		if ($dh = @opendir($_dir)) {
367d101cc1SGerry Weißbach			while (false !== ($entry = readdir($dh))) {
377d101cc1SGerry Weißbach				if ($entry == '.' || $entry == '..') continue;
387d101cc1SGerry Weißbach				if ($entry == '.' || $entry == '..') continue;
397d101cc1SGerry Weißbach				if ($_pattern && !preg_match($_pattern,$entry)) continue;
407d101cc1SGerry Weißbach
417d101cc1SGerry Weißbach				$file = (is_link($_dir.$entry)) ? readlink($_dir.$entry) : $entry;
427d101cc1SGerry Weißbach				if (is_dir($_dir.$file)) $list[] = $entry;
437d101cc1SGerry Weißbach			}
447d101cc1SGerry Weißbach			closedir($dh);
457d101cc1SGerry Weißbach		}
467d101cc1SGerry Weißbach
477d101cc1SGerry Weißbach
487d101cc1SGerry Weißbach		sort($list);
497d101cc1SGerry Weißbach		return $list;
507d101cc1SGerry Weißbach	}
517d101cc1SGerry Weißbach
527d101cc1SGerry Weißbach	/*
537d101cc1SGerry Weißbach	 * Return array list of plugins that exist
547d101cc1SGerry Weißbach	 */
557d101cc1SGerry Weißbach	function __getPluginList() {
567d101cc1SGerry Weißbach	    global $plugin_controller;
577d101cc1SGerry Weißbach
587d101cc1SGerry Weißbach	    $allPlugins = array();
597d101cc1SGerry Weißbach	    foreach($plugin_controller->getList(null,true) as $plugin ) {
607d101cc1SGerry Weißbach	    	// check for CSS or JS
617d101cc1SGerry Weißbach	    	if ( !file_exists(DOKU_PLUGIN."$plugin/script.js") && !file_exists(DOKU_PLUGIN."$p/style.css") ) { continue; }
627d101cc1SGerry Weißbach	    	$allPlugins[] = $plugin;
637d101cc1SGerry Weißbach	    }
647d101cc1SGerry Weißbach
657d101cc1SGerry Weißbach    	return array($allPlugins, $plugin_controller->getList());
667d101cc1SGerry Weißbach	}
67*95c3174fSGerry Weißbach
68*95c3174fSGerry Weißbach	function __siteexport_addpage() {
69*95c3174fSGerry Weißbach
70*95c3174fSGerry Weißbach        global $ID, $conf;
71*95c3174fSGerry Weißbach
72*95c3174fSGerry Weißbach	    $templateSwitching = false;
73*95c3174fSGerry Weißbach	    $pdfExport = false;
74*95c3174fSGerry Weißbach	    $usenumberedheading = false;
75*95c3174fSGerry Weißbach	    $cronEnabled = false;
76*95c3174fSGerry Weißbach	    $translationAvailable = false;
77*95c3174fSGerry Weißbach	    $usenumberedheading = true;
78*95c3174fSGerry Weißbach
79*95c3174fSGerry Weißbach        if ( $functions=& plugin_load('preload', 'siteexport') && $functions->__create_preload_function() ) {
80*95c3174fSGerry Weißbach            $templateSwitching = true;
81*95c3174fSGerry Weißbach        }
82*95c3174fSGerry Weißbach
83*95c3174fSGerry Weißbach        if ( $functions =& plugin_load('action', 'dw2pdf' ) ) {
84*95c3174fSGerry Weißbach            $pdfExport = true;
85*95c3174fSGerry Weißbach        }
86*95c3174fSGerry Weißbach
87*95c3174fSGerry Weißbach        // if ( $functions =& plugin_load('renderer', 'nodetailsxhtml' ) ) {
88*95c3174fSGerry Weißbach        // }
89*95c3174fSGerry Weißbach
90*95c3174fSGerry Weißbach        if ( $functions =& plugin_load('cron', 'siteexport' ) ) {
91*95c3174fSGerry Weißbach            $cronEnabled = $functions->canWriteSettings();
92*95c3174fSGerry Weißbach        }
93*95c3174fSGerry Weißbach
94*95c3174fSGerry Weißbach        if ( $functions =& plugin_load('helper', 'translation' ) ) {
95*95c3174fSGerry Weißbach            $translationAvailable = true;
96*95c3174fSGerry Weißbach        }
97*95c3174fSGerry Weißbach
98*95c3174fSGerry Weißbach        $regenerateScript = '';
99*95c3174fSGerry Weißbach        print $this->locale_xhtml('intro');
100*95c3174fSGerry Weißbach
101*95c3174fSGerry Weißbach        $form = new Doku_Form('siteexport', null, 'post');
102*95c3174fSGerry Weißbach        $form->startFieldset( $this->getLang('startingNamespace') );
103*95c3174fSGerry Weißbach
104*95c3174fSGerry Weißbach        $form->addElement(form_makeTextField('ns', $ID, $this->getLang('ns') . ':', 'ns'));
105*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
106*95c3174fSGerry Weißbach        $form->addElement(form_makeTextField('ens', $ID, $this->getLang('ens') . ':', 'ens'));
107*95c3174fSGerry Weißbach
108*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
109*95c3174fSGerry Weißbach        $form->addElement(form_makeListboxField('depthType', array( "0.0" => $this->getLang('depth.pageOnly'), "1.0" => $this->getLang('depth.allSubNameSpaces'), "2.0" => $this->getLang('depth.specifiedDepth') ), (empty($_REQUEST['depthType']) ? $this->getLang('depth.allSubNameSpaces') : $_REQUEST['depthType']), $this->getLang('depthType') . ':', 'depthType', null, array_merge(array('class' => 'edit'))));
110*95c3174fSGerry Weißbach
111*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
112*95c3174fSGerry Weißbach        $form->addElement(form_makeOpenTag("div", array('style' => 'display:' . ($_REQUEST['depthType'] == "2" ? "block" : "none") . ';', 'id' => 'depthContainer')));
113*95c3174fSGerry Weißbach        $form->addElement(form_makeTextField('depth', $this->getConf('depth'), $this->getLang('depth') . ':', 'depth'));
114*95c3174fSGerry Weißbach        $form->addElement(form_makeCloseTag("div"));
115*95c3174fSGerry Weißbach
116*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
117*95c3174fSGerry Weißbach        $form->addElement(form_makeOpenTag("div", array('style' => 'display:none;', 'id' => 'depthContainer')));
118*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('exportLinkedPages', 1, $this->getLang('exportLinkedPages') . ':', 'exportLinkedPages'));
119*95c3174fSGerry Weißbach        $form->addElement(form_makeCloseTag("div"));
120*95c3174fSGerry Weißbach
121*95c3174fSGerry Weißbach        $form->endFieldset();
122*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
123*95c3174fSGerry Weißbach
124*95c3174fSGerry Weißbach        $form->startFieldset( $this->getLang('selectYourOptions') );
125*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('absolutePath', 1, $this->getLang('absolutePath') . ':', 'absolutePath'));
126*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
127*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('exportBody', 1, $this->getLang('exportBody') . ':', 'exportBody'));
128*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
129*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('disableCache', 1, $this->getLang('disableCache') . ':', 'disableCache'));
130*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
131*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('addParams', 1, $this->getLang('addParams') . ':', 'addParams', null, array_merge(array('checked' => ($conf['userewrite'] != 1 ? 'checked' : '' ) ))));
132*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
133*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
134*95c3174fSGerry Weißbach        $form->addElement(form_makeListboxField('renderer', array_merge(array('','xhtml'), plugin_list('renderer')), '', $this->getLang('renderer') . ':', 'renderer', null, array_merge(array('class' => 'edit'))));
135*95c3174fSGerry Weißbach
136*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
137*95c3174fSGerry Weißbach        if ( $templateSwitching ) {
138*95c3174fSGerry Weißbach            $form->addElement(form_makeListboxField('template', $this->__getTemplates(), $conf['template'], $this->getLang('template') . ':', 'template', null, array_merge(array('class' => 'edit'))));
139*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br'));
140*95c3174fSGerry Weißbach        } else
141*95c3174fSGerry Weißbach        {
142*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br'));
143*95c3174fSGerry Weißbach            $form->addElement(form_makeOpenTag('p', array('style' => 'color: #a00;' )));
144*95c3174fSGerry Weißbach            $form->addElement('Can\'t create preload file in \'inc\' directory. Template switching is not available. Plugin disabling is not available.');
145*95c3174fSGerry Weißbach            $form->addElement(form_makeCloseTag('p'));
146*95c3174fSGerry Weißbach        }
147*95c3174fSGerry Weißbach
148*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
149*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('pdfExport', 1, $this->getLang('pdfExport') . ':', 'pdfExport', null, $pdfExport ? array() : array_merge(array('disabled' => 'disabled')) ));
150*95c3174fSGerry Weißbach        if ( !$pdfExport ) {
151*95c3174fSGerry Weißbach            $form->addElement(form_makeOpenTag('p', array('style' => 'color: #a00;' )));
152*95c3174fSGerry Weißbach            $form->addElement('In order to use the PDF export, please ');
153*95c3174fSGerry Weißbach            $form->addElement(form_makeOpenTag('a', array('href' => 'http://www.dokuwiki.org/plugin:dw2pdf', 'alt' => 'install plugin', 'target' => '_blank')));
154*95c3174fSGerry Weißbach            $form->addElement('install the dw2pdf plugin.');
155*95c3174fSGerry Weißbach            $form->addElement(form_makeCloseTag('a'));
156*95c3174fSGerry Weißbach            $form->addElement(form_makeCloseTag('p'));
157*95c3174fSGerry Weißbach        }
158*95c3174fSGerry Weißbach
159*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
160*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('usenumberedheading', 1, $this->getLang('usenumberedheading') . ':', 'usenumberedheading', null, $usenumberedheading && $pdfExport ? array() : array_merge(array('disabled' => 'disabled')) ));
161*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
162*95c3174fSGerry Weißbach
163*95c3174fSGerry Weißbach        if ( !$usenumberedheading ) {
164*95c3174fSGerry Weißbach            $form->addElement(form_makeOpenTag('p', array('style' => 'color: #a00;' )));
165*95c3174fSGerry Weißbach            $form->addElement('In order to use numbered headings, please ');
166*95c3174fSGerry Weißbach            $form->addElement(form_makeOpenTag('a', array('href' => 'http://www.dokuwiki.org/plugin:nodetailsxhtml', 'alt' => 'install plugin', 'target' => '_blank')));
167*95c3174fSGerry Weißbach            $form->addElement('install the nodetailsxhtml plugin.');
168*95c3174fSGerry Weißbach            $form->addElement(form_makeCloseTag('a'));
169*95c3174fSGerry Weißbach            $form->addElement(form_makeCloseTag('p'));
170*95c3174fSGerry Weißbach        }
171*95c3174fSGerry Weißbach
172*95c3174fSGerry Weißbach        $form->endFieldset();
173*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
174*95c3174fSGerry Weißbach
175*95c3174fSGerry Weißbach        $form->startFieldset( $this->getLang('helpCreationOptions') );
176*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('eclipseDocZip', 1, $this->getLang('eclipseDocZip') . ':', 'eclipseDocZip'));
177*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
178*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('JavaHelpDocZip', 1, $this->getLang('JavaHelpDocZip') . ':', 'JavaHelpDocZip'));
179*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
180*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('useTocFile', 1, $this->getLang('useTocFile') . ':', 'useTocFile'));
181*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
182*95c3174fSGerry Weißbach        $form->addElement(form_makeCheckboxField('emptyTocElem', 1, $this->getLang('emptyTocElem') . ':', 'emptyTocElem'));
183*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
184*95c3174fSGerry Weißbach        if ( !$translationAvailable ) {
185*95c3174fSGerry Weißbach            $form->addElement(form_makeCheckboxField('TOCMapWithoutTranslation', 1, $this->getLang('TOCMapWithoutTranslation') . ':', 'TOCMapWithoutTranslation'));
186*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br'));
187*95c3174fSGerry Weißbach        }
188*95c3174fSGerry Weißbach        $form->endFieldset();
189*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
190*95c3174fSGerry Weißbach
191*95c3174fSGerry Weißbach        if ( $templateSwitching )
192*95c3174fSGerry Weißbach        {
193*95c3174fSGerry Weißbach            $form->startFieldset( $this->getLang('disablePluginsOption') );
194*95c3174fSGerry Weißbach
195*95c3174fSGerry Weißbach            $form->addElement(form_makeCheckboxField("disableall", 1, 'Disable All:', "disableall", 'forceVisible'));
196*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br'));
197*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br'));
198*95c3174fSGerry Weißbach
199*95c3174fSGerry Weißbach            list($allPlugins, $enabledPlugins) = $this->__getPluginList();
200*95c3174fSGerry Weißbach            foreach ( $allPlugins as $plugin ) {
201*95c3174fSGerry Weißbach                $form->addElement(form_makeCheckboxField("disableplugin[]", $plugin, $plugin . ':', "disableplugin_$plugin", null, (!in_array($plugin, $enabledPlugins) ? array('checked' => 'checked', 'disabled' => 'disabled') : array() )));
202*95c3174fSGerry Weißbach                $form->addElement(form_makeTag('br'));
203*95c3174fSGerry Weißbach            }
204*95c3174fSGerry Weißbach
205*95c3174fSGerry Weißbach            $form->endFieldset();
206*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br'));
207*95c3174fSGerry Weißbach        }
208*95c3174fSGerry Weißbach
209*95c3174fSGerry Weißbach        $form->startFieldset( $this->getLang('customOptions') );
210*95c3174fSGerry Weißbach        $form->addElement(form_makeOpenTag('p'));
211*95c3174fSGerry Weißbach        $form->addElement( $this->getLang('customOptionsDescription') );
212*95c3174fSGerry Weißbach        $form->addElement(form_makeCloseTag('p'));
213*95c3174fSGerry Weißbach
214*95c3174fSGerry Weißbach        $form->addElement(form_makeOpenTag('ul', array('id' => 'siteexport__customActions')));
215*95c3174fSGerry Weißbach        $form->addElement(form_makeCloseTag('ul'));
216*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br', array('class'=>'clear')));
217*95c3174fSGerry Weißbach        $form->addElement(form_makeButton('submit', 'addoption', $this->getLang('addCustomOption') , array('style' => 'float:right;') ));
218*95c3174fSGerry Weißbach
219*95c3174fSGerry Weißbach        $form->endFieldset();
220*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
221*95c3174fSGerry Weißbach
222*95c3174fSGerry Weißbach        $form->startFieldset( $this->getLang('startProcess') );
223*95c3174fSGerry Weißbach
224*95c3174fSGerry Weißbach        $form->addElement(form_makeTextField('copyurl', "", $this->getLang('directDownloadLink') . ':', 'copyurl', null, array('readonly' => 'readonly') ));
225*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
226*95c3174fSGerry Weißbach        $form->addElement(form_makeTextField('wgeturl', "", $this->getLang('wgetURLLink') . ':', 'wgeturl', null, array('readonly' => 'readonly') ));
227*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
228*95c3174fSGerry Weißbach        $form->addElement(form_makeTextField('curlurl', "", $this->getLang('curlURLLink') . ':', 'curlurl', null, array('readonly' => 'readonly') ));
229*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br', array('class'=>'clear')));
230*95c3174fSGerry Weißbach        $form->addElement(form_makeButton('submit', 'siteexport', $this->getLang('start') , array('style' => 'float:right;')));
231*95c3174fSGerry Weißbach        $form->endFieldset();
232*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
233*95c3174fSGerry Weißbach
234*95c3174fSGerry Weißbach        $form->startFieldset( $this->getLang('status') );
235*95c3174fSGerry Weißbach        $form->addElement(form_makeOpenTag('span', array('id' => 'siteexport__out')));
236*95c3174fSGerry Weißbach
237*95c3174fSGerry Weißbach        $form->addElement(form_makeCloseTag('span'));
238*95c3174fSGerry Weißbach        $form->addElement(form_makeOpenTag('span', array('class' => 'siteexport__throbber')));
239*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('img', array('src' => DOKU_BASE.'lib/images/loading.gif', 'id' => 'siteexport__throbber')));
240*95c3174fSGerry Weißbach        $form->addElement(form_makeCloseTag('span'));
241*95c3174fSGerry Weißbach        $form->endFieldset();
242*95c3174fSGerry Weißbach        $form->addElement(form_makeTag('br'));
243*95c3174fSGerry Weißbach
244*95c3174fSGerry Weißbach        if ( $cronEnabled )
245*95c3174fSGerry Weißbach        {
246*95c3174fSGerry Weißbach            $form->startFieldset( $this->getLang('cronSaveProcess') );
247*95c3174fSGerry Weißbach            $form->addElement(form_makeOpenTag('p'));
248*95c3174fSGerry Weißbach            $form->addElement( $this->getLang('cronDescription') );
249*95c3174fSGerry Weißbach            $form->addElement(form_makeCloseTag('p'));
250*95c3174fSGerry Weißbach
251*95c3174fSGerry Weißbach            $form->addElement(form_makeCheckboxField("cronOverwriteExisting", 1, $this->getLang('canOverwriteExisting'), "cronOverwriteExisting"));
252*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br', array('class'=>'clear')));
253*95c3174fSGerry Weißbach            $form->addElement(form_makeButton('submit', 'cronDeleteAction', $this->getLang('cronDeleteAction') , array('id' => 'cronDeleteAction', 'style' => 'float:left;display:none') ));
254*95c3174fSGerry Weißbach            $form->addElement(form_makeButton('submit', 'cronSaveAction', $this->getLang('cronSaveAction') , array('id' => 'cronSaveAction', 'style' => 'float:right;') ));
255*95c3174fSGerry Weißbach            $form->addElement(form_makeTag('br', array('class'=>'clear')));
256*95c3174fSGerry Weißbach
257*95c3174fSGerry Weißbach            $form->addElement(form_makeOpenTag('a', array('href' => '#cronactions', 'alt' => 'show cron jobs', 'id' => 'showcronjobs', 'target' => '_blank', 'style' => 'float:right;')));
258*95c3174fSGerry Weißbach            $form->addElement('show all cron jobs');
259*95c3174fSGerry Weißbach            $form->addElement(form_makeCloseTag('a'));
260*95c3174fSGerry Weißbach
261*95c3174fSGerry Weißbach            $form->endFieldset();
262*95c3174fSGerry Weißbach        }
263*95c3174fSGerry Weißbach
264*95c3174fSGerry Weißbach        $form->printForm();
265*95c3174fSGerry Weißbach	}
2667d101cc1SGerry Weißbach}
267