1<?php 2 3// must be run within Dokuwiki 4if(!defined('DOKU_INC')) die(); 5 6class admin_plugin_translation extends DokuWiki_Admin_Plugin { 7 function forAdminOnly() { 8 return false; 9 } 10 11 function handle() { 12 } 13 14 function html() { 15 16 /** @var helper_plugin_translation $helper */ 17 $helper = plugin_load('helper', "translation"); 18 $default_language = $helper->defaultlang; 19 20 /** @var Doku_Renderer_xhtml $xhtml_renderer */ 21 $xhtml_renderer = p_get_renderer('xhtml'); 22 23 echo "<h1>" . $this->getLang("menu") . "</h1>"; 24 echo "<table id='outdated_translations'>"; 25 echo "<tr><th>default: $default_language</th>"; 26 foreach ($helper->translations as $t) { 27 if($t === $default_language) { 28 continue; 29 } 30 echo "<th>$t</th>"; 31 } 32 echo "</tr>"; 33 34 $pages = $this->getAllPages(); 35 foreach ($pages as $page) { 36 if ($helper->getLangPart($page["id"]) === $default_language && 37 $helper->istranslatable($page["id"], false) && 38 page_exists($page["id"]) 39 ) { 40 $showRow = false; 41 $row = "<tr><td>" . $xhtml_renderer->internallink($page['id'],null,null,true) . "</td>"; 42 43 list($lc, $idpart) = $helper->getTransParts($page["id"]); 44 45 foreach ($helper->translations as $t) { 46 if ($t === $default_language) { 47 continue; 48 } 49 50 list($translID, $name) = $helper->buildTransID($t, $idpart); 51 52 53 $difflink = ''; 54 if(!page_exists($translID)) { 55 $class = "missing"; 56 $title = $this->getLang("missing"); 57 $showRow = true; 58 } else { 59 $translfn = wikiFN($translID); 60 if($page['mtime'] > @filemtime($translfn)) { 61 $class = "outdated"; 62 $difflink = " <a href='"; 63 $difflink .= $helper->getOldDiffLink($page["id"], $page['mtime']); 64 $difflink .= "'>(diff)</a>"; 65 $title = $this->getLang("outdated"); 66 $showRow = true; 67 } else { 68 $class = "current"; 69 $title = $this->getLang('current'); 70 } 71 } 72 $row .= "<td class='$class'>" . $xhtml_renderer->internallink($translID,$title,null,true) . $difflink . "</td>"; 73 } 74 $row .= "</tr>"; 75 76 if ($showRow) { 77 echo $row; 78 } 79 } 80 } 81 echo "</table>"; 82 83 } 84 85 function getAllPages() { 86 global $conf; 87 $namespace = $this->getConf("translationns"); 88 $dir = $conf['datadir'] . '/' . str_replace(':', '/', $namespace); 89 $pages = array(); 90 search($pages, $dir, 'search_allpages',array()); 91 return $pages; 92 } 93}