Manual:ウォッチリスト
ウォッチリストは、利用者が変更を監視 (ウォッチ) するために選択したページの集合体です。 ウォッチリストはすべてのログイン利用者が利用でき、最近の更新の一覧などの変更一覧に特定の追加動作を引き起こします。 より広く言えば、利用者のウォッチリストは、彼らが興味を持っている変更を特定するのに役立ちます。 ウォッチするページ名が存在する必要はありません。
利用者のウォッチリストは、特権利用者が利用できるウォッチされていないページ報告などの集約に含まれている場合を除いて、他の利用者には表示されません。 利用者は、自分のウォッチリストを非公開に保つ自由があり、例えば特定のページの悪戯や望ましくない変更を監視するために他の人と共有することもできます。
ページをウォッチリストに登録
Users can add pages to their watchlist via the ウォッチ
link present on each page.
既定の外装では、これはページの上部にある操作タブで見つかります。
AJAX ウォッチが有効になっている場合、ウォッチリストに追加し、可能であればインターフェイスを更新するために AJAX リクエストが使用されます。
ページの編集中にもウォッチリストに追加でき、移動や削除を含む特定の操作を行う際にも追加できます。
この場合、操作を確認するときに、この切り替えを可能にするチェックボックスが提供されます。
この挙動は特別:個人設定の ウォッチリスト
タブでカスタマイズすることもできます。
MediaWiki 1.35 以降、ページをウォッチリストに登録する際に、有効期間を選択することもできます。
これは $wgWatchlistExpiry を有効にする必要があります。
このオプションは、ページを編集する際や、ウォッチ
リンクまたは action=watch
経由でページをウォッチリストに登録するよう選択した際に利用できます。
編集する際に利用できる有効期間は、MediaWiki:Watchlist-expiry-options システム メッセージでカスタマイズできます。
ウォッチリスト エディターを Raw モードで使用することで、ページをウォッチリストに一括追加することもできます。
ページのウォッチリストへの登録を解除
ウォッチリストからページを除去する操作は、追加する操作とほぼ同様の方法で行えます。ウォッチしているページを閲覧しているとき、ウォッチ
リンクが ウォッチ解除
リンクに置き換えられ、このリンクをクリックするとそのページがウォッチリストから除去されます。
ウォッチリストへの登録と同様に、可能な場合は AJAX リクエストが使用されます。
ウォッチリストからページを除去するには、以下で説明される 通常モードまたは Raw モードのウォッチリスト エディターを使用することもできます。
ウォッチリストの編集
ウォッチリスト エディターは、ウォッチリストの内容を管理するためのいくつかのモードを提供します。 利用者は、一度にウォッチリストから複数の項目を除去したり、ウォッチリスト全体を消去したり、生のウォッチページ一覧を編集したりできます。
通常モード
標準のウォッチリスト エディターは Special:Watchlist/edit
でアクセスでき、ウォッチしているページ名の一覧が表示されます。利用者はウォッチリストから除去したいページ名を選択し、操作を確定すると除去が実行されます。
Raw モード
ウォッチリストを編集する便利な方法として、Special:Watchlist/raw
からアクセスできる Raw 編集モードの使用があります。
これにより、ウォッチリストの全内容がプレーンテキストの一覧で表示され、1 行に 1 つのページ名が表示され、必要に応じて編集できます。
これにより、ウォッチリストから項目を一括追加または一括除去する便利な方法が提供され、ウォッチリストにアクセスして他のウィキにコピーしたり、他の利用者と共有したりできます。
変更の一覧
最近の更新
ウォッチリストに登録されているページは、Special:Recentchanges
や Special:Recentchangeslinked
などの変更一覧に表示される際に強調表示されます。
ウォッチリスト
Special:Watchlist
ページでは、ウォッチリスト内のページの最近の更新一覧が完全に表示され、さらに絞り込み機能を使用して特定の編集種類に絞り込めます。
このページの特定の挙動は、個人設定 でカスタマイズでき、Special:Preferences
の ウォッチリスト
タブからアクセスできます。カスタマイズ可能な項目には以下が含まれます:
- ウォッチリストに表示する期間の長さ、または最大編集数
- ページの最新の編集に制限するか、関連する変更をすべて表示するか
- ボットによる編集、細部の編集、自分自身の編集に対する既定の絞り込み設定
技術的な実装の詳細
ウォッチリストのコードは、以下の複数のファイルに散らばっています:
- /includes/actions
- WatchAction.php
- UnWatchAction.php
- /includes/user/User.php
- /includes/specials/SpecialEditWatchlist.php
- /includes/jobqueue/jobs/WatchlistExpiryJob.php
- /resources/src/mediawiki.page.watch.ajax.js
ただし、上記のすべては DB 関連の操作を実行するために WatchedItemStore.php を使用しています。これは WatchedItems のためのストレージ層クラスです。 WatchedItem クラスは、シンプルなウォッチ対象オブジェクト (利用者、ページ (LinkTarget オブジェクト)、通知タイムスタンプ、有効期限) を表します。
WatchedItemStore は以下を担当します:
- ページ (またはページ一覧) をウォッチリストに追加
- ページをウォッチリストから除去
- ウォッチリストに登録されている項目を数える
- 未読の通知の件数を数える
- ページがウォッチリストに登録しているか確認
- 通知タイムスタンプを設定/リセット/更新
- ウォッチリストに登録されている項目の有効期限を設定/更新
- 有効期限が切れたページをウォッチリストから除去
- ...
SpecialWatchlist.php クラスは Special:Watchlist が呼び出されたときに実行されます。
ページがウォッチリストにどのように追加されるか
- 利用者がページをウォッチリストに追加するようリクエストします。 これは以下の方法で行われます:
- 星をクリック
- ページを作成
- 編集後に
このページをウォッチ
をクリック Special:Watchlist/edit
またはSpecial:Watchlist/raw
を編集
- ページとトークページが利用者の
watchlist
テーブルに追加されます。
ページが編集されると何が起きるか
- ページが編集されます。
- WatchedItemStore の updateNotificationTimestamp 関数を呼び出すフックが実行されます。 これにより、ウォッチリスト ページの各ウォッチャー (編集者を除く) に対してページの通知タイムスタンプが更新されます。 (これは、ページを利用者の
watchlist
テーブルと結合することによって行われます。) - 利用者の
watchlist
テーブルの通知タイムスタンプはもはやNULL
ではなくなり、そのため未読の通知となります。 - $wgWatchlistPurgeRate に応じてジョブがキューに入れられ、期限切れの項目がウォッチリストから除去されます。
未読の通知がクリックされると何が起きるか
- 利用者が未読のウォッチリスト項目をクリック
- resetNotificationTimestamp 関数が WatchedItemStore から利用者とページ名をパラメーターにして呼び出されます。 これによりそのエントリの値が
NULL
にリセットされます。
期限切れの項目はウォッチリストからいつ除去されるか
- 各編集後に $wgWatchlistPurgeRate の値に応じて ジョブ がキューに入れられ、期限切れの項目がウォッチリストから除去されます。
- 小規模なウィキには、スケジュール可能な スクリプト があり、これによりウォッチリストから期限切れの項目が消去されます。
ウォッチリストには API があり、そのコードは APIQueryWatchlist に由来します。
このクラスは WatchedItemQueryService.php クラスを多用します。
このクラスは、Recentchanges および Watchlist のコードに関連する複雑なクエリを実行します。
利用者が Special:Watchlist
を読み込む際、項目を表示するために watchlist
テーブルが recentchanges
テーブルに結合されます。
これが、30日を超えるウォッチリスト項目を持てない理由です。
特別なウォッチリストのモード
- 拡張ウォッチリスト – これは
最新のものだけでなくすべての変更を表示するようにウォッチリストを拡張
を行うための個人設定のオプションです。 このオプションではすべてのページのすべての項目を表示します。 拡張ウォッチリストを表示しないように選択すると、ページごとに (最新の) 1 件のみが表示されます。 In both cases it joins on therecentchanges
table, but in the latter it only looks at the "page_latest" revision. - 強化されたウォッチリスト – これは
最近の更新とウォッチリストで、複数の変更をページごとにまとめる
を行うための個人設定のオプションです。 整形は EnhancedChangesList クラスによって JavaScript で行われます。