1

それは本当に簡単に思えます...しかし、これを行う拡張機能を見つけることができれば、私は気になります!!

私は Mediawiki 1.18 を使用していますが、私のウィキの誰もが自分の名前を投稿に表示せずに匿名でアイデアを投稿できるようにするための空白のページとして機能するメインのホームページからリンクするページが本当に欲しいのです! この機能は、自分の wiki の 1 ページにのみ必要です。結論として、匿名投稿が有効になっているページを 1 つ設定できるようにしたいだけです。

何か案は?(しゃれは意図されていません!)

4

1 に答える 1

0

参照によって渡されるパラメータを次のように変更することで、特定のページに対するすべての編集を存在しないユーザーに関連付ける PageContentSaveフックを作成できるはずです。$user

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 に追加すると、ページ "Project:Sandbox" ("Project:" はプロジェクトの名前空間名) に対するすべての編集が、存在しないユーザー "Anonymous" に帰属するようになります。

PageContentSave フックは、ごく最近、MediaWiki 1.21 で導入されたことに注意してください。MediaWiki の古いバージョンには、ほぼ同等のArticleSaveという名前のフックがあり、基本的に同じパラメーターを取り、基本的に同じことを行います。古いバージョンの MediaWiki をまだ実行している場合は、'PageContentSave上記の ' をに置き換えるだけ'ArticleSave'で問題ありません。

ArticleSave フックは MW 1.21 で廃止されましたが、下位互換性のために引き続き保持されているため、アップグレードしても機能し続けるはずです。ただし、MediaWiki の将来のバージョンでは、他の何かがこのトリックを破らないという保証はないことに注意してください:$userそのフック内のオブジェクトを置き換えると、編集の再帰属にはうまく機能するように見えますが、その特定のユース ケースは、明示的にサポートされているとは実際には文書化されていません。 . MediaWiki コードへの将来の変更により、多かれ少なかれ微妙に壊れる可能性があります。


Ps。私は自分の wiki でこれを試しました (まだ MW 1.20 を実行しているため、ArticleSave バージョンを使用しています)。ちょっと奇妙な副作用として、 でページに署名しようとすると~~~~、実際のユーザー名がプレビューに表示されますが、実際にページを保存すると「匿名」に置き換えられます。これを回避することは可能かもしれませんが、実際にプレビューで実行される他のフックを使用する必要があります。

于 2013-07-22T16:34:53.173 に答える