MediaWiki: редактирование страницы разрешено только создателем или с разрешения - PullRequest
6 голосов
/ 16 февраля 2011

Я пытаюсь ограничить редактирование в Wiki (используя MediaWiki), которое я создаю как внутренний проект для моей компании.

Мы хотели бы, чтобы создатели страниц могли не указывать ни один, илиодин из двух следующих вариантов:

  • Никто, кроме создателя этой страницы, не может редактировать содержимое этой страницы
  • Любой может редактировать содержимое этой страницы, но должен бытьодобрение создателем страницы до того, как изменения станут видны (будь то по почте, в вики или напрямую или что-то еще - не имеет значения).

Если создатель не указывает ни одного2 варианта, любой может редактировать страницу, и изменения сразу видны (поведение по умолчанию).

Я просматривал сеть, но не нашел готового решения для этого.Нам удалось сделать несколько замечательных пользовательских вещей благодаря редакции файла LocalSettings, но не этой.

Есть ли решение для этой функции?

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Я не знаю расширения, которое сделало бы это простым.

Я думаю, вы могли бы взять расширение, например Помеченные версии или Одобренные версии , и сделать так, чтобы вместо использования групп в качестве определяющего элемента статуса утверждения использует имя пользователя. Это не может быть слишком сложно. Имеет ли это смысл?

0 голосов
/ 10 июня 2011

У меня была та же проблема, что и у вас, и теперь я исправил ее, вот решение:

Я использую http://www.mediawiki.org/wiki/Extension%3aApproved_Revs для защиты статьи, но он не удовлетворял мою потребность, он позволилПользователь изменил текущую утвержденную редакцию статьи, поэтому изменение было немедленно отражено на главной странице, поэтому я немного его взломал, в основном вам нужно только одно изменение

. Перейдите в ApprovedRevs / ApprovedRevs.hooks.php *.1007 *

и найдите следующий код:

static public function setLatestAsApproved( &$article , &$user, $text,
        $summary, $flags, $unused1, $unused2, &$flags, $revision,
        &$status, $baseRevId ) {

это объявление функции сразу после добавления следующего кода:

return false;

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

...