トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BBS-サポート掲示板/915

ページの作成や編集にはユーザ登録が必要です。

 deleteフックでページを取得した場合の挙動 - MRB (2009年09月28日 23時36分28秒)

たびたびお世話になっています。

下記に書いてある通りのことを実現したいのですが、詰まってしまいました。アドバイスをいただければ幸いです。

ページ構造

  • リンク元ページA(ページBへのリンクを記述。ページB?
  • リンク先ページB

プラグインの概要

ページBを削除したタイミングでwiki APIの「process_wiki」を使ってページAのHTMLソースを取得する、deleteフックプラグイン。

なお、リンク元ページAとリンク先ページBは固定ではありません。リンク先ページが削除されたタイミングで、リンク元ページを取得するようなプラグインです。

問題となっている事項

上記プラグインを動作させたとき、取得したページAのHTMLソースでは、ページBへのリンクが通常のリンク(a href〜)であり、ページが存在しない場合のリンク形式(span class="nopage"〜)になっていません。

リダイレクトページが表示されて後、ページAを表示させると「ページが存在しない場合のリンク形式」で表示されています(当然、HTMLソースもそうなっています)。

やりたいこと

リンク先ページが削除されたときにリンク元ページのHTMLソースを取得する。このとき、リンクは「ページが存在しない場合のリンク形式」となっていること。

そこで、2点教えていただきたく。

  1. 実現したいことのために使うフックはdeleteでは無いのでしょうか。
  2. deleteでは無い場合、どの時点で「process_wiki」を使用しHTMLソースを取得すると「ページが存在しない場合のリンク形式」になったHTMLソースを取得できるのでしょうか。
  • 使用するのは delete フックでよいと思います。lib/Wiki/DefaultStorage.pm の save_page() の最後の return の直前に次の一行を追加した場合、症状が改善するか否か試してみていただけますか? - 菜梨 (2009年09月29日 02時20分39秒)
--- ../wiki3_6_3_1/lib/Wiki/DefaultStorage.pm   2009-01-04 10:11:02.000000000 +0900
+++ lib/Wiki/DefaultStorage.pm  2009-09-29 02:14:31.000000000 +0900
@@ -170,6 +170,7 @@ sub save_page {

        rename($tmpfile, $wikifile);
        Util::file_unlock($wikifile);
+       delete $self->{exists_cache}->{":$page"}; # page_exists() のキャッシュをクリア。

        return 1;
 }
  • ありがとうございます。症状の改善を確認できました。本当に助かりました。 - MRB (2009年09月29日 21時47分40秒)
お名前: コメント:

最終更新時間:2009年09月29日 21時47分40秒