check_feature('feature_wiki_mindmap'); if (! file_exists('files/visorFreemind.swf')) { $smarty->assign('missing', 'files/visorFreemind.swf'); $smarty->assign('mid', 'tiki-mindmap.tpl'); $smarty->display("tiki.tpl"); exit; } if (isset($_REQUEST['export'])) { // {{{ // Output the page relations in WikiMindMap format (derived from Freemind) $dom = new DOMDocument(); $dom->appendChild($root = $dom->createElement('map')); $root->setAttribute('version', '0.8.0'); /** * @param $dom * @param $text * @param bool $link * @return mixed */ function create_node($dom, $text, $link = true) { $wikilib = TikiLib::lib('wiki'); $node = $dom->createElement('node'); $node->setAttribute('TEXT', $text); $node->setAttribute('STYLE', 'bubble'); if ($link) { $node->setAttribute('WIKILINK', $wikilib->sefurl($text)); $node->setAttribute('MMLINK', 'tiki-mindmap.php?page=' . urlencode($text)); } return $node; } /** * @param $node * @param $pageName * @param int $remainingLevels * @param array $pages */ function populate_node($node, $pageName, $remainingLevels = 3, $pages = []) { global $user; $wikilib = TikiLib::lib('wiki'); $tikilib = TikiLib::lib('tiki'); $child = $wikilib->wiki_get_neighbours($pageName); $child = array_diff($child, $pages); foreach ($child as $page) { if (! $tikilib->user_has_perm_on_object($user, $page, 'wiki page', 'tiki_p_view')) { continue; } $node->appendChild($new = create_node($node->ownerDocument, $page)); if ($remainingLevels != 0) { populate_node($new, $page, $remainingLevels - 1, array_merge($pages, [$page, $pageName])); } else { $new->setAttribute('STYLE', 'fork'); } } if (count($child) == 0) { $node->setAttribute('STYLE', 'fork'); } } if (! isset($_REQUEST['export'])) { $root->appendChild(create_node($dom, tra('No page provided.'), false)); } elseif (! $tikilib->page_exists($_REQUEST['export'])) { $root->appendChild(create_node($dom, tr('Page "%0" does not exist', $_REQUEST['export']), false)); } else { $root->appendChild($parent = create_node($dom, $_REQUEST['export'])); populate_node($parent, $_REQUEST['export']); } header('Content-Type: text/xml'); echo $dom->saveXML(); exit; } // }}} $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : $prefs['wikiHomePage']; $ePage = urlencode($page); $code = $tikilib->embed_flash(['movie' => 'files/visorFreemind.swf', 'bgcolor' => '#cccccc', 'width' => 800, 'height' => 800,], '', ['openUrl' => '_blank', 'initLoadFile' => "tiki-mindmap.php?export={$ePage}", 'startCollapsedToLevel' => 1, 'mainNodeShape' => 'bubble',]); $smarty->assign('mindmap', $code); $smarty->assign('page', $page); $smarty->assign('mid', 'tiki-mindmap.tpl'); $smarty->display("tiki.tpl");