Патчим DokuWiki.

Сентябрь 4th, 2009 по SadKo Оставить ответ »

Совсем недавно всплыла проблема с навигацией в dokuwiki.

ПХПисты совсем обалдели и расхлябались! Суют свой быдлокод куда ни попадя, правильно на неправильно исправляют (ибо в предыдущей версии такого не было). Приходится всё за них переделывать.

Итак, у кого кривая навигация в dokuwiki наверху, смело применяем этот патч на файле inc/template.php:

diff -cr template.old template.php
*** template.old        2009-02-14 15:13:25.000000000 +0300
--- template.php        2009-03-14 17:29:19.000000000 +0300
***************
*** 875,885 ****
      // output
      echo $sep;
      if($exists){
!       $title = useHeading('navigation') ? p_get_first_heading($page) : $page;
!       if(!$title) $title = $parts[$i];
!       tpl_link(wl($page),hsc($title),'title="'.$page.'"');
      }else{
!       tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
      }
    }
 
--- 875,888 ----
      // output
      echo $sep;
      if($exists){
!       //$title = useHeading('navigation') ? p_get_first_heading($page) : $page;
!       //if(!$title) $title = $parts[$i];
!       //tpl_link(wl($page),hsc($title),'title="'.$page.'"');
!       $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i];
!       tpl_link(wl($page),hsc($title),'title="'.$page.'"');
      }else{
!       //tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
!         tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
      }
    }
 
***************
*** 889,897 ****
    if($page == $conf['start']) return;
    echo $sep;
    if(page_exists($page)){
!     $title = useHeading('navigation') ? p_get_first_heading($page) : $page;
!     if(!$title) $title = $parts[$i];
!     tpl_link(wl($page),hsc($title),'title="'.$page.'"');
    }else{
      tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
    }
--- 892,902 ----
    if($page == $conf['start']) return;
    echo $sep;
    if(page_exists($page)){
!     //$title = useHeading('navigation') ? p_get_first_heading($page) : $page;
!     //if(!$title) $title = $parts[$i];
!     //tpl_link(wl($page),hsc($title),'title="'.$page.'"');
!       $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i];
!       tpl_link(wl($page),hsc($title),'title="'.$page.'"');
    }else{
      tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
    }

UPD1:
Чтобы увидеть работу патча, привожу скриншоты.
Это панель навигации до патча:
wiki-before-patch

А вот так она выглядит после патча:
wiki-after-patch

UPD2:
Для недовольных выкладываю патч в universal-формате:

diff -ruN template.old template.php
--- template.old        2009-02-14 15:13:25.000000000 +0300
+++ template.php        2009-03-14 17:29:19.000000000 +0300
@@ -875,11 +875,14 @@
     // output
     echo $sep;
     if($exists){
-      $title = useHeading('navigation') ? p_get_first_heading($page) : $page;
-      if(!$title) $title = $parts[$i];
-      tpl_link(wl($page),hsc($title),'title="'.$page.'"');
+      //$title = useHeading('navigation') ? p_get_first_heading($page) : $page;
+      //if(!$title) $title = $parts[$i];
+      //tpl_link(wl($page),hsc($title),'title="'.$page.'"');
+       $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i];
+       tpl_link(wl($page),hsc($title),'title="'.$page.'"');
     }else{
-      tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
+      //tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
+        tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
     }
   }
 
@@ -889,9 +892,11 @@
   if($page == $conf['start']) return;
   echo $sep;
   if(page_exists($page)){
-    $title = useHeading('navigation') ? p_get_first_heading($page) : $page;
-    if(!$title) $title = $parts[$i];
-    tpl_link(wl($page),hsc($title),'title="'.$page.'"');
+    //$title = useHeading('navigation') ? p_get_first_heading($page) : $page;
+    //if(!$title) $title = $parts[$i];
+    //tpl_link(wl($page),hsc($title),'title="'.$page.'"');
+       $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i];
+       tpl_link(wl($page),hsc($title),'title="'.$page.'"');
   }else{
     tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
   }

UPD 3:
Обсуждение патча на багзилле DokuWiki.

Реклама

7 комментариев

  1. df:

    сначала научитесь пользоваться diff’ом.
    единственный человеко-читаемый формат патча получается с ключом -u.

  2. А вы неспособны применить patch?

  3. Было бы здорово, если бы Вы отправили патч к ним в багзиллу. Может быть, они исправят недочеты со следующим релизом.

    Кстати, а что с навигацией не так? Интересно увидеть скриншот.

  4. Обновил запись

  5. О, супер! Спасибо за скриншоты и патч в багзилле!

    Теперь я понимаю, почему не видел такой навигации. У меня стоят такие опции: «показывать первый заголовок» включено и «вы находитесь здесь» отключено.

    Вообще, мне кажется, оба представления имеют право на существование. Просто надо дать пользователю выбор (в настройках вики).

  6. Да не за что! Рад, что обратили внимание.
    А вы один из разработчиков?

  7. Нет, но активно пользуюсь, поэтому заинтересовало. Правда, один раз побаловался, написал плагинчик для своих нужд (он доступен у меня на сайте под GPL-2), но не более, времени нет. :)

Добавить комментарий

Blue Captcha Image
Refresh

*