2013-07-22 2 views
1

Кажется, очень просто ... но я буду проклят, если найду расширение, которое это сделает!Страница Mediawiki для пользователей, чтобы оставить анонимные комментарии?

Я использую Mediawiki 1.18, и все, что я действительно хочу, это страница, которая ссылается с главной страницы, которая действует как пустая страница для ANYONE на моей вики, чтобы иметь возможность анонимно публиковать свои идеи БЕЗ их имен, отображаемых на их Сообщений Мне нужна эта функция только на одной странице моей вики. Поэтому, чтобы закончить, я просто хочу настроить 1 страницу с анонимной проводкой.

Любые идеи? (нет каламбур!)

+0

Предполагаете, вы имеете в виду, что имена пользователей/IP-адресов не должны отображаться в истории изменений этой страницы? Это (и недавние изменения) - это место, где MediaWiki автоматически записывает их. –

ответ

0

Должно быть возможно написать крючок PageContentSave, который привязывает все изменения к определенной странице несуществующему пользователю, изменив параметр , который передается по ссылке, примерно так:

function anonymizeSandboxEdits(&$wikiPage, &$user, &$content, &$summary, 
           $isMinor, $isWatch, $section) { 
    $title = $wikiPage->getTitle(); 
    if ($title->getNamespace() == NS_PROJECT && $title->getText() == 'Sandbox') { 
     $user = User::newFromName('Anonymous'); 
    } 
    return true; // keep running other hooks 
} 

$wgHooks['PageContentSave'][] = 'anonymizeSandboxEdits'; 
$wgReservedUsernames[] = 'Anonymous'; 

добавления этого кода в ваш LocalSettings.php должен вызывать все изменения на страницу «проект: Песочница» (где «проект:» ваше имя пространства имен проекта) следует отнести к несуществующему пользователю «Anonymous ».

Обратите внимание, что крюк PageContentSave был введен совсем недавно в MediaWiki 1.21. Предыдущие версии MediaWiki имеют в основном эквивалентный крюк с именем ArticleSave, который имеет по существу те же параметры и делает практически то же самое. Если вы все еще используете старую версию MediaWiki, просто замените 'PageContentSave 'выше на 'ArticleSave', и все будет в порядке.

Крючок ArticleSave устарел в MW 1.21, но по-прежнему сохраняется для обратной совместимости, поэтому он должен продолжать работать даже при обновлении. Тем не менее, я должен отметить, что нет никакой гарантии, чем что-то еще не нарушит этот трюк в будущих версиях MediaWiki: при замене объекта $user в этом хук кажется, чтобы хорошо работать для переопределения изменений, этот конкретный пример использования на самом деле не документирован как явно поддерживаются. Существует вероятность того, что будущие изменения в коде MediaWiki могут сломать его более или менее тонко.


Ps. Я попробовал это на своей собственной вики (все еще запущен MW 1.20, поэтому, используя версию ArticleSave), и, похоже, он работает нормально. Один из немного любопытных побочных эффектов заключается в том, что если вы попытаетесь подписать страницу с ~~~~, она покажет ваше реальное имя пользователя в предварительном просмотре, но заменит его «анонимным», когда вы действительно сохраните страницу. Возможно, обойти это можно, но для этого потребуется (также) использование другого крючка, который фактически запускается при предварительном просмотре.

+0

Правильно. Я не хочу, чтобы кто-либо из пользователей мог сказать, чье письмо написано, ТОЛЬКО на этой странице. Я добавил код, который вы упомянули в localsettings.php, и изменил pagecontentsave на «ArticleSave», и вики отлично работают, кроме того, что я не могу найти страницу «Project: Sandbox» для ее проверки! Нужно ли мне теперь входить и создавать \ редактировать эту страницу? какие переменные вы порекомендовали бы, чтобы я заменил его, чтобы сказать FREESPEECH как опцию Project: Sandbox и насколько легко заставить его отображать в навигационной панели слева? любая информация будет легендарной! – user1313051

+0

Да, вам нужно создать страницу. Если вы хотите, чтобы имя страницы было «FREESPEECH», вы заменили бы условие 'if' на' if ($ title-> getNamespace() == NS_MAIN && $ title-> getText() == 'FREESPEECH ') '. ([Здесь вы можете найти список констант 'NS_'.] (Http://www.mediawiki.org/wiki/Manual:Namespace_constants)) Что касается добавления его на боковой панели, вам необходимо отредактировать MediaWiki: Sidebar on ваша вики; [см. инструкции здесь.] (http: // www.mediawiki.org/wiki/Manual:Interface/Sidebar) –

+0

Добавлен следующий код: 'функция anonymizeSandboxEdits (& $ wikiPage, & $ user, & $ content, & summary $, $ isMinor, $ isWatch, $ section) { $ title = $ wikiPage-> getTitle(); if ($ title-> getNamespace() == NS_PROJECT && $ title-> getText() == 'FREESPEECH') { $ user = Пользователь :: newFromName ('Anonymous'); } return true; // продолжаем использовать другие перехватчики } $ wgHooks ['ArticleSave'] [] = 'anonymizeSandboxEdits'; $ wgReservedUsernames [] = 'Анонимный'; ' , но история версий все еще показывает мое имя :( – user1313051

Смежные вопросы