* Author: Reini Urban */ require_once('lib/plugin/IncludePage.php'); class WikiPlugin_DynamicIncludePage extends WikiPlugin_IncludePage { function getName() { return _("DynamicIncludePage"); } function getDescription() { return _("Dynamicly include text from another wiki page."); } function getVersion() { return preg_replace("/[Revision: $]/", '', "\$Revision$"); } function getDefaultArguments() { return array_merge (WikiPlugin_IncludePage::getDefaultArguments(), array( 'state' => false, // initial state: false <=> [+], true <=> [-] )); } function run($dbi, $argstr, &$request, $basepage) { global $WikiTheme; $args = $this->getArgs($argstr, $request, false); $page =& $args['page']; if (ENABLE_AJAX) { if ($args['state']) $html = WikiPlugin_IncludePage::run($dbi, $argstr, $request, $basepage); else $html = HTML(HTML::p(array('class' => 'transclusion-title'), fmt(" %s :", WikiLink($page))), HTML::div(array('class' => 'transclusion'), '')); $ajaxuri = WikiURL($page, array('format' => 'xml')); } else { $html = WikiPlugin_IncludePage::run($dbi, $argstr, $request, $basepage); } $header = $html->_content[0]; $body = $html->_content[1]; $id = 'DynInc-'.MangleXmlIdentifier($page); $body->setAttr('id', $id.'-body'); $png = $WikiTheme->_findData('images/folderArrow'. ($args['state'] ? 'Open' : 'Closed'). '.png'); $icon = HTML::img(array('id' => $id.'-img', 'src' => $png, 'onclick' => ENABLE_AJAX ? "showHideAsync('".$ajaxuri."','$id')" : "showHideFolder('$id')", 'border' => 0, 'alt' => _("Click to hide/show"), 'title' => _("Click to hide/show"))); $header = HTML::p(array('class' => 'transclusion-title', 'style' => "text-decoration: none;"), $icon, fmt(" %s :", WikiLink($page))); if ($args['state']) { // show base $body->setAttr('style', 'display:block'); return HTML($header, $body); } else { // do not show base $body->setAttr('style', 'display:none'); if (ENABLE_AJAX) return HTML($header, $body); // async (load in background and insert) else return HTML($header, $body); // sync (load but display:none) } } }; // For emacs users // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: ?>