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

BugTrack-plugin/120

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

ページ編集後に元のURLへ戻る

  • 投稿者: KG
  • カテゴリ: 修正
  • 優先度: 低
  • 状態: 提案
  • 日時: 2004年05月13日 02時14分45秒

 内容

ページの編集後には必ずそのページを表示するようになっていますがこれを、編集前のURLを表示するように改良します。この改良により、カレンダーでの新規ページ作成後やメニューの編集、パート編集等でも、元のページに戻れるようになります。

また、編集ページには『元のURLへ戻る』というチェックボックスを追加していますので既存の動作もできるようにしてあります。

 変更箇所

プラグイン core 内の EditPage.pm とテンプレートの editform.tmpl を修正しています。

EditPage.pm のパッチ
--- EditPage.pm.org	2004-05-20 07:26:53.000000000 +0900
+++ EditPage.pm	2004-05-30 23:12:55.734804800 +0900
@@ -29,6 +29,8 @@
 	my $template = $cgi->param("template");
 	my $artno    = $cgi->param("artno");
 	my $time     = $wiki->get_last_modified($pagename);
+	my $referer    = $cgi->param("referer");
+	my $refererurl = $cgi->param("refererurl");
 	
 	my $buf = "";
 	my $login = $wiki->get_login_info();
@@ -69,14 +71,20 @@
 			$wiki->save_page($pagename,$save_content,$sage);
 			
 			if($content ne ""){
+				# 編集前のURLへ戻る
+				if($referer eq 1 && $refererurl ne ""){
+					$wiki->redirectURL($refererurl);
+				}
 				$wiki->redirect($pagename);
 			} else {
 				if($artno eq ""){
 					$wiki->set_title($pagename."を削除しました");
-					return $cgi->escapeHTML($pagename)."を削除しました。";
+					return $cgi->escapeHTML($pagename)."を削除しました。".
+					       "<p><a href=\"".$refererurl."\">戻る</a>";
 				} else {
 					$wiki->set_title($pagename."のパートを削除しました");
-					return $cgi->escapeHTML($pagename)."のパートを削除しました。";
+					return $cgi->escapeHTML($pagename)."のパートを削除しました。".
+					       "<p><a href=\"".$refererurl."\">戻る</a>";
 				}
 			}
 		}
@@ -110,7 +118,11 @@
 		#テンプレートを指定された場合
 		$content = $wiki->get_page($template);
 	}
-	
+	#--------------------------------------------------------------------------
+	# プレビュー処理以外の場合に編集前のURLを取得
+	if($cgi->param("preview") eq ""){
+		$refererurl = $ENV{"HTTP_REFERER"};
+	}
 	#--------------------------------------------------------------------------
 	# 入力フォーム
 	$wiki->set_title($pagename."の編集",1);
@@ -123,6 +135,8 @@
 				  CONTENT       => $wiki->convert_from_fswiki($content,$format),
 				  LAST_MODIFIED => $time,
 				  ACTION        => 'EDIT',
+				  REFERER       => $referer,
+				  REFERER_URL   => $refererurl,
 				  EXISTS_PAGE   => $wiki->page_exists($pagename),
 				  SAGE          => $sage});
 	
editform.tmpl のパッチ
--- editform.tmpl.org	2004-05-20 07:26:53.000000000 +0900
+++ editform.tmpl	2004-05-30 23:16:25.536484800 +0900
@@ -9,11 +9,19 @@
       <!--TMPL_IF NAME="SAGE"-->checked<!--/TMPL_IF-->
     >タイムスタンプを更新しない
   <!--/TMPL_IF-->
+  <!--TMPL_IF NAME="REFERER_URL"-->
+    <input type="checkbox" name="referer" value="1"
+      <!--TMPL_IF NAME="REFERER"-->checked<!--/TMPL_IF-->
+    >保存後に元のURLに戻る
+  <!--/TMPL_IF-->
   <input type="submit"   name="save"         value=" 保 存 ">
   <input type="submit"   name="preview"      value="プレビュー">
   <input type="hidden"   name="action"       value="<!--TMPL_VAR NAME="ACTION"-->">
   <input type="hidden"   name="lastmodified" value="<!--TMPL_VAR NAME="LAST_MODIFIED"-->">
   <input type="hidden"   name="page"         value="<!--TMPL_VAR NAME="PAGE_NAME" ESCAPE="HTML"-->">
+  <!--TMPL_IF NAME="REFERER_URL"-->
+    <input type="hidden"   name="refererurl"   value="<!--TMPL_VAR NAME="REFERER_URL"-->">
+  <!--/TMPL_IF-->
   <!--TMPL_LOOP NAME="OPTIONAL_PARAMS"-->
     <input type="hidden" name ="<!--TMPL_VAR NAME="NAME" ESCAPE="HTML"-->"
                          value="<!--TMPL_VAR NAME="VALUE" ESCAPE="HTML"-->">

 コメント

  • セキュリティ関連ソフト(Norton Internet Security等)の影響で HTTP_REFERER 値が取得できない場合には『元のURLに戻る』のチェックボックスを表示しないように修正しました。 - KG (2004年05月14日 10時17分26秒)
  • オリジナルのソースをいじりまくってるので、diff -uの結果がありがたいです・・・(どこに挿入したらいいかわからないです) - 紅猫 (2004年05月30日 22時46分25秒)
  • diff -u の実行結果を添付しました。拡張子が diffu の方です。こっちの方がいいですね。 - KG (2004年05月30日 23時20分57秒)
  • さっそくありがとうございます。助かります。 - 紅猫 (2004年05月31日 00時44分39秒)
お名前: コメント:
EditPage.pm.diff EditPage.pm.diffu editform.tmpl.diff editform.tmpl.diffu

最終更新時間:2009年01月17日 02時21分50秒