*/ class admin_plugin_translation extends AdminPlugin { /** @inheritdoc */ public function forAdminOnly() { return false; } /** @inheritdoc */ public function handle() { } /** @inheritdoc */ public function html() { /** @var helper_plugin_translation $helper */ $helper = plugin_load('helper', "translation"); $default_language = $helper->defaultlang; /** @var Doku_Renderer_xhtml $xhtml_renderer */ $xhtml_renderer = p_get_renderer('xhtml'); echo "

" . $this->getLang("menu") . "

"; echo ""; echo ""; if ($this->getConf('show_path')) { echo ""; } foreach ($helper->translations as $t) { if ($t === $default_language) { continue; } echo ""; } echo ""; $pages = $this->getAllPages(); foreach ($pages as $page) { if ( $helper->getLangPart($page["id"]) !== $default_language || !$helper->istranslatable($page["id"], false) || !page_exists($page["id"]) ) { continue; } // We have an existing and translatable page in the default language $showRow = false; $row = ""; if ($this->getConf('show_path')) { $row .= ""; } [, $idpart] = $helper->getTransParts($page["id"]); foreach ($helper->translations as $t) { if ($t === $default_language) { continue; } [$translID, ] = $helper->buildTransID($t, $idpart); $difflink = ''; if (!page_exists($translID)) { $class = "missing"; $title = $this->getLang("missing"); $showRow = true; } else { $translfn = wikiFN($translID); if ($page['mtime'] > filemtime($translfn)) { $class = "outdated"; $difflink = " getLang('old'); $showRow = true; } else { $class = "current"; $title = $this->getLang('current'); } } $row .= ""; } $row .= ""; if ($showRow) { echo $row; } } echo "
default: $default_language" . $this->getLang('path') . "$t
" . $xhtml_renderer->internallink($page['id'], null, null, true) . "" . $xhtml_renderer->internallink($page['id'], $page['id'], null, true) . "" . $xhtml_renderer->internallink( $translID, $title, null, true ) . $difflink . "
"; } /** * Get all pages in the translation namespace * * @return array */ protected function getAllPages() { $namespace = $this->getConf("translationns"); $dir = dirname(wikiFN("$namespace:foo")); $pages = []; search($pages, $dir, 'search_allpages', []); return $pages; } }