WackoWiki : AlexanderNickolsky/ДополненияВики

Я не хочу делать ветку разработки, поскольку считаю что команда разработчиков WackoWiki does the excellent job и не стоит уходить далеко от их разработки.
Тем не менее, я постараюсь класть сюда дополнения, которые у меня появляются в процессе эксплуатации.

Backup / Restore


Сделал пока Backup в виде отдельной страницы на PHP. Сливает всю базу страниц непосредственно в указанный каталог на сервере, пакуя в gz. Кластеры сливаются в виде подкаталогов.
Нет проблем сделать заливку обратно, если только кто-то из знающих Wiki Internals скажет, какие заклинания надо сказать, чтобы имея текст страницы и ее название, залить это в базу.
<?php
        
// add page (revisions)
        
$body_r $this->SavePage($tag$body);

        
// now we render it internally so we can write the updated link table.
        
$this->ClearLinkTable();
        
$this->StartLinkTracking();
        
$dummy $this->Format($body_r"post_wacko"); //for R3.5 or older use post_links instead
        
$this->StopLinkTracking();
        
$this->WriteLinkTable();
        
$this->ClearLinkTable();
?>

Ну или я сам потихоньку разберусь. Плюс такого подхода: файлы просто постранично аплоадятся на сервер (напр. по ftp) и заливаются в базу. Права на заливку можно проверять стандартным способом или как-то еще.

YuriMakarov Возможно лучше было бы в XML (+gz если нужно) сливать. Разница не велика (только теги расставить), а универсальности сильно прибавится.
AlexanderNickolsky Мне в общем-то пофигу, куда сливать. Можно настройку сделать. Главное – потом залить, вот в чем проблема.

Cluster syntax removal


Что это и для чего – можно прочесть здесь. Длинная дискуссия, закончившаяся ничем.
Небольшое дополнение убирает ! / и прочие символы кластерной адресации из отображаемого текста.
В файл post_links.php или post_wacko.php добавляем такой текст:
if($text == $url)
     {
         $text = preg_replace("/^(\/.+\/)+/","",$text);
         $text = preg_replace("/^\!\//","",$text);
         $text=preg_replace("/^\.\.\//","",$text);
         $text=preg_replace("/^\//","",$text);
     }


после заклинания
if ($url)
     {
          $url = str_replace(" ", "", $url);
          $text=trim(preg_replace("/\xA4\xA4|__|\[\[|\(\(/","",$text));

(оно немного отличается в разных версиях, но найти его можно.)

В результате если ссылку поставить в скобки [[ или ((, то исчезает обозначение принадлежности страницы к кластеру. То есть вместо !/ПодСтраница отображается ПодСтраница, [[/СинтаксисФорматирования/Кластеры/ПодСтраница]] отображается как ПодСтраница

RomanIvanov: Теперь это делается гораздо проще. Шаблоны ссылок в вашем распоряжении.