ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#3784 closed defect (fixed)

フォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある

Reported by: kiwa Owned by: urabe
Priority: minor Milestone: OpenPNE2.13.8
Component: 指定しない Version: 2.12.x & 2.14.x
Keywords: Cc:

Description (last modified by kudo)

■現象

  1. 作成・編集などのフォーム画面を表示
  2. フォームに不備がある状態でsubmitボタンを押下
  3. エラーで1の画面に返される

携帯版で上のような流れを行った場合、手順3で返された画面に手順2で入力した内容が保持されていない画面がある。

■発見箇所

携帯版

  • 日記作成・編集
  • メッセージ作成
  • アルバム作成・編集

PC版

  • 日記編集
  • 下書きメッセージ編集
  • アルバム編集

■原因

投稿処理アクション(do)でエラーが出た際、openpne_redirectを使用しているため、クエリ情報が受け渡されていないため。openpne_redirectの代わりにopenpne_forwardを使えばいいかもしれない。

またそれに伴い、それぞれのpageも修正が必要。

■修正内容

携帯版とPC版で、発生原因が異なる。

携帯版は、openpne_redirect()の部分をopenpne_forward()に置き換え、コントローラ部では表示内容を直前のフォーム内容に置き換えた。

PC版は、ifの条件文に問題があったため、if文自体を削除した。

■関連情報

Change History (57)

comment:1 Changed 8 years ago by kiwa

  • 他のフォームでも同じ現象が出ていないか確認してください
  • 意図的な動作ではないか過去のチケットなども軽く確認してください

comment:2 Changed 8 years ago by fukamachi

Description: modified (diff)

comment:3 Changed 8 years ago by kiwa

Keywords: OpenPNE2.13.8 added
Milestone: OpenPNE2.12.10

comment:4 Changed 8 years ago by fukamachi

Owner: changed from nobody to fukamachi
Status: newassigned

comment:5 Changed 8 years ago by fukamachi

Description: modified (diff)
Summary: 携帯版でフォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所があるフォームの内容に不備がありリダイレクトされた場合、フォームに編集内容が保持されない場所がある

PC版の日記編集でも見つけたため、summaryを変更。 他にもリダイレクト時の値の保持について調べてみます

comment:6 Changed 8 years ago by fukamachi

Description: modified (diff)

修正方法がわかったのでDescriptionを追記。

ただし、仕様の疑問点として、ktai/templates/h_diary_edit.tplの上の部分

メールで投稿
写真を添付すると写真付き日記になります。
※メール投稿では絵文字が反映されません

の表示フラグが、

14    ({if !$target_c_diary.c_diary_id && !$target_c_diary.body})

になっており、"本文なし"のエラーでは表示されるが、"タイトルなし"のエラーの場合は表示されないという一貫性のない挙動をする点が気になります。これはこれで理由があるのでしょうか?

comment:7 Changed 8 years ago by fukamachi

redirectのまま、$requestsの内容を受け渡す形にしてテストしてみました。

--- h_diary_edit_insert_c_diary.php	(リビジョン 11320)
+++ h_diary_edit_insert_c_diary.php	(作業コピー)
@@ -23,12 +23,20 @@
         // ----------
 
         if (is_null($subject) || $subject === '') {
-            $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 2);
+            $p = array();
+            foreach ($requests as $key => $value) {
+                $p[$key] = $value;
+            }
+            $p['msg'] = 2;
             openpne_redirect('ktai', 'page_h_diary_edit', $p);
         }
 
         if (is_null($body) || $body === '') {
-            $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 1);
+            $p = array();
+            foreach ($requests as $key => $value) {
+                $p[$key] = $value;
+            }
+            $p['msg'] = 1;
             openpne_redirect('ktai', 'page_h_diary_edit', $p);
         }

すると、リダイレクト後に入力が文字化けしました。おそらく二重でエンコードされているせいだと思います。何かいい方法があればいいんですが・・

comment:8 in reply to:  7 Changed 8 years ago by fukamachi

値を受け渡すだけならarray_mergeでよかったです。

         if (is_null($subject) || $subject === '') {
             $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 2);
-            openpne_redirect('ktai', 'page_h_diary_edit', $p);
+            openpne_redirect('ktai', 'page_h_diary_edit', array_merge($requests, $p));
         }
 
         if (is_null($body) || $body === '') {
             $p = array('target_c_diary_id' => $target_c_diary_id, 'msg' => 1);
-            openpne_redirect('ktai', 'page_h_diary_edit', $p);
+            openpne_redirect('ktai', 'page_h_diary_edit', array_merge($requests, $p));
         }

comment:9 Changed 8 years ago by fukamachi

r11327で、携帯の日記の作成・編集の不備を修正しました。

comment:10 Changed 8 years ago by fukamachi

コミットするファイルを間違えました。

r11328

http://trac.openpne.jp/browser/OpenPNE/branches/work/fukamachi/form_redirect

comment:11 Changed 8 years ago by fukamachi

Description: modified (diff)
Keywords: 確認中 added

r11331で修正しました。

comment:12 Changed 8 years ago by kiwa

Keywords: 差し戻し added; 確認中 removed
Owner: changed from fukamachi to kiwa
Status: assignednew

2.12.xにマージします

comment:13 Changed 8 years ago by kiwa

Owner: changed from kiwa to nobody

一旦手放します

comment:14 Changed 8 years ago by nagasawa

Owner: changed from nobody to nagasawa

やります

comment:15 Changed 8 years ago by nagasawa

r11346 でマージしました。

comment:16 Changed 8 years ago by kiwa

Keywords: 確認中 added; 差し戻し removed

comment:17 Changed 8 years ago by imamura623

Keywords: 差し戻し added; 確認中 removed

動作確認いたしました。

2.12x系の問題点

  • 携帯で不備のある日記を新規投稿すると、内容が保持されない
  • 携帯で日記の編集をすると、内容が保持されない
  • 携帯で不備のあるメッセージを新規作成すると内容が保持されない
  • 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない
  • pcでアルバム編集しようとすると内容が保持されない
  • pcでアルバム編集しようとすると内容が保持されない
  • pcで日記編集しようとすると内容が保持されない
  • pcでメッセージ下書きを編集しようとすると内容が保持されない

2.13x系の問題点

  • アルバムの編集をすると内容が保持されない。
  • 携帯で日記の編集をすると、内容が保持されない
  • 携帯でメッセージの下書き編集をすると内容が保持されない
  • 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない
  • pcでアルバム編集しようとすると内容が保持されない
  • pcで日記編集しようとすると内容が保持されない
  • pcでメッセージ下書きを編集しようとすると内容が保持されない

以上、確認お願いします。

comment:18 Changed 8 years ago by fukamachi

Keywords: 確認中 added; 差し戻し removed
Owner: changed from nagasawa to fukamachi

大量にバグが残っていて申し訳ないです
r11366で修正しました。

comment:19 Changed 8 years ago by kiwa

Keywords: 差し戻し added; 確認中 removed

2.12の修正もお願いします。

comment:20 Changed 8 years ago by fukamachi

Keywords: 確認中 added; 差し戻し removed
Status: newassigned

r11369で2.12.xにも修正内容を反映しました

comment:21 Changed 8 years ago by Shintani@…

Keywords: 差し戻し added; 確認中 removed

動作確認いたしました。

2.12x系の問題点

  • 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
  • 携帯でメッセージを作成する際、Fatal errorになる。
    Fatal error: Smarty error: [in file:/hogdhogd/webapp/modules/ktai/templates/h_message_send.tpl line 22]: syntax error: unrecognized tag: form_val.subject (Smarty_Compiler.class.php, line 446) in /hogehoge/lib/include/Smarty/Smarty.class.php on line 1095
    
  • 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

2.13x系の問題点

  • 携帯で既存のアルバム編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
  • 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
  • 携帯でメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

comment:22 in reply to:  21 Changed 8 years ago by Shintani@…

Replying to Shintani@:

2.12x系の問題点

  • 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。

2.13x系の問題点

  • 携帯で既存のアルバム編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。
  • 携帯で日記の新規作成・編集の際、公開範囲を設定しないと、メンテナンス画面にとぶ。

#3837 上記のバグに関してはこっちで対応します。

comment:23 Changed 8 years ago by fukamachi

Keywords: 確認中 added; 差し戻し removed

以下のリビジョンで修正しました。

2.12.x
r11377

2.13.x
r11375, r11376

comment:24 Changed 8 years ago by Shintani@…

Keywords: 差し戻し added; 確認中 removed

動作確認いたしました

2.12x系の問題点

  • 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

2.13x系の問題点

  • 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

以上、確認をお願いします。

comment:25 Changed 8 years ago by fukamachi

Keywords: 確認中 added; 差し戻し removed

r11381(2.13.x), r11382(2.12.x)で修正しました。

doアクションのopenpne_redirectをopenpne_forwardに修正し忘れていたのが原因でした。申し訳ないです。

comment:26 Changed 8 years ago by imamura623

Keywords: 差し戻し added; 確認中 removed

動作確認いたしました

2.12x系の問題点

  • 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。
  • 携帯でフレンドのメンバーページより不備のあるメッセージを投稿すると内容が保持されない。

2.13x系の問題点

  • 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。

以上、ご確認お願いいたします。

comment:27 Changed 8 years ago by fukamachi

Keywords: 確認中 added; 差し戻し removed

r11388, r11389で修正しました。

comment:28 Changed 8 years ago by shingo

Keywords: 差し戻し added; 確認中 removed
  • 他の箇所の記述に合わせる
    webapp/modules/ktai/page/h_message_send.php(2.13)
    
     32             if ($requests['msg']) { // 内容の不備によるリダイレクト時
    
  • 他とあわせて「"」を使ってください
    webapp/modules/ktai/page/h_message_send.php(2.12)
    
     26         $this->set("form_val", $form_val);
    
    webapp/modules/ktai/page/h_message_send.php(2.13)
    
     36                     $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($tar 42                     $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($c_message['c_member_id_to'])
    
  • 重複した処理を共通化して簡潔に記述してください
    webapp/modules/ktai/page/h_message_send.php(2.13)
    
     32             if ($requests['msg']) { // 内容の不備によるリダイレクト時
     33                 $form_val['subject'] = $subject;
     34                 $form_val['body'] = $body;
     35                 if ($target_c_member_id) {
     36                     $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($target_c_member_id));
     37                 }
     38             } else {
     39                 $form_val['subject'] = $c_message['subject'];
     40                 $form_val['body'] = $c_message['body'];
     41                 if (isset($c_message['c_member_id_to'])) {
     42                     $this->set("target_c_member", db_member_c_member4c_member_id_LIGHT($c_message['c_member_id_to'])    );
     43                 }
     44             }
    

comment:29 in reply to:  28 Changed 8 years ago by fukamachi

Keywords: 確認中 added; 差し戻し removed

Replying to shingo:

r11396(2.13.x)、r11397で修正しました。

comment:30 Changed 8 years ago by shingo

Keywords: 差し戻し added; 確認中 removed
  • 重複している以下の記述を共通化する
    webapp/modules/ktai/page/h_album_edit.php
    
     33             $this->set('target_c_album', $c_album);
    
  • webapp/modules/ktai/page/h_diary_edit.php も同様
  • webapp/modules/ktai/page/h_message_send.php も同様
  • 「'」を使う
    webapp/modules/ktai/page/h_album_edit.php
    
     37             $c_album['public_flag'] = $public_flag ? $public_flag : "public";
    
  • デフォルト値を指定した方がいいです
    webapp/modules/ktai/validate/page/h_diary_edit.ini
    
    11	[public_flag] 
    12	type = "string" 
    
  • 重複部を共通化できそうです
    webapp/modules/pc/page/f_message_send.php
    
    $tmplist = db_message_c_message4c_message_id($form_val['target_c_message_id']);
    $form_val['target_c_message_id'] = $tmplist['c_message_id'];
    
  • ※内容の不備が無い時に以下の処理が行われなくなっています
    96	        if ($public_flag) { 
    97	            $c_diary['public_flag'] = util_cast_public_flag_diary($public_flag); 
    98	        } 
    

comment:31 Changed 8 years ago by kiwa

追加です。

安定版に入れるには根が深く、すこし様子をみたいので、

  • 開発版 - 2.13.8対応
  • 安定版 - 2.12.11対応(次回)

にしましょう。2.12の変更を取り消してください。

comment:32 Changed 8 years ago by urabe

Owner: changed from fukamachi to urabe
Status: assignednew

comment:33 Changed 8 years ago by urabe

Keywords: 確認中 added; 差し戻し removed

r11406 でコミットしました。

comment:34 Changed 8 years ago by shingo

Keywords: 差し戻し added; 確認中 removed
  • 「$c_album」を初期化しておく必要があります
    webapp/modules/ktai/page/h_album_edit.php
    
     33         } else {
     34             $c_album['subject'] = $subject;
     35             $c_album['description'] = $description;
     36             $c_album['public_flag'] = $public_flag ? $public_flag : 'public';
     37         }
    
  • webapp/modules/ktai/page/h_diary_edit.php も同様です
  • webapp/modules/ktai/page/h_message_send.php も同様です
  • webapp/modules/ktai/page/h_diary_edit.php も同様です
  • webapp/modules/pc/page/f_message_send.php も同様です
  • webapp/modules/pc/page/h_diary_add.php も同様です
  • 他の箇所にも同様の不具合がないかの確認が必要です
  • 以下の変更は「target_c_message_id」のリクエスト値がない場合に問題があります
    webapp/modules/pc/page/f_message_send.php
    
     28         $c_message = db_message_c_message4c_message_id($form_val['target_c_message_id']);
     29         if ($form_val['target_c_message_id']) {
    
  • 記述に改善の余地があります
    webapp/modules/pc/page/f_message_send.php
    
     28         $c_message = db_message_c_message4c_message_id($form_val['target_c_message_id']);
     29         if ($form_val['target_c_message_id']) {
     30             if ($c_message['c_member_id_from'] != $u) {
     31                 if ($c_message['c_member_id_to'] != $u || !$c_message['is_send']) {
     32                     handle_kengen_error();
     33                 }
     34             }
     35         }
    

comment:35 Changed 8 years ago by ShogoKawahara

2.12.x への変更取り消し作業やります。

comment:36 Changed 8 years ago by ShogoKawahara

r11408

  • 2.12.xについて変更を取り消しました。

comment:37 in reply to:  36 Changed 8 years ago by ShogoKawahara

Replying to kawahara:

r11408

  • 2.12.xについて変更を取り消しました。

上のコミットについてコミットログのチケット番号が間違っています。

× #3794#3784

ご迷惑おかけします。

comment:38 Changed 8 years ago by urabe

r11410 で一旦戻し、修正をやりなおします。

comment:39 Changed 8 years ago by urabe

何度もすみません。戻っていないので r11411 で再度コミットしました。

comment:40 in reply to:  36 Changed 8 years ago by shingo

comment:36 2.12.xにの変更を取り消しを確認しました。

comment:41 Changed 8 years ago by kiwa

Keywords: OpenPNE2.13.8 removed
Milestone: OpenPNE2.12.10OpenPNE2.13.8
Type: defectenhancement

2.12を軽く動作確認したところ、変更の解消に問題無かったようです。2.12.10のリリースから外して、開発版で先行対応させる不具合にします。

comment:42 Changed 8 years ago by urabe

Keywords: 確認中 added; 差し戻し removed

r11414 で再度コミットしました。何度もすみません。

comment:43 Changed 8 years ago by urabe

問題がありましたので、 r11418 で再度コミットしました。

comment:44 Changed 8 years ago by shingo

Keywords: テスト待ち added; 確認中 removed

確認しました。

comment:45 Changed 8 years ago by Shintani@…

Keywords: 差し戻し added; テスト待ち removed

動作テストいたしました。

2.12系

  • 携帯でpage_h_message_sendより不備のあるメッセージを投稿すると内容が保持されない。
  • 携帯でpage_f_message_sendより不備のあるメッセージを投稿すると内容が保持されない。

2.13系

  • 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。

以上の確認お願いします。

comment:46 Changed 8 years ago by kiwa

2.12系は今回対応していないので、2.13の不具合のみ確認と修正をお願いします。

comment:47 Changed 8 years ago by urabe

Keywords: 確認中 added; 差し戻し removed

r11446 でコミットしました。

comment:48 Changed 8 years ago by nagasawa

Keywords: 差し戻し added; 確認中 removed

target_c_message_idにc_member_idを指定しているので
存在しないメッセージのために入力に不備がある状態で送信しようとするとhandle_kengen_errorになります。

comment:49 in reply to:  48 Changed 8 years ago by fukamachi

Replying to nagasawa:

r11514でメッセージIDを指定すべき場所で、メンバーIDを入力していたため権限エラーになる不具合を修正しました。

comment:50 Changed 8 years ago by fukamachi

Keywords: 確認中 added; 差し戻し removed

comment:51 Changed 8 years ago by nagasawa

Keywords: 差し戻し added; 確認中 removed

宛先が保持されていません。

comment:52 Changed 8 years ago by urabe

Keywords: 確認中 added; 差し戻し removed

r11554 でコミットしました。

  • データベースに情報が存在する場合も、空の情報で上書きされていた現象が発生していたので、修正

comment:53 Changed 8 years ago by imamura623

動作確認しました。

  • 携帯でh_message_sendより不備のあるメッセージを投稿すると宛先が保持されない。

がまだ修正されていないようです。差し戻します。

comment:54 Changed 8 years ago by urabe

r11555 で再度コミットしました。

  • target_c_member_id がバリデートに追加されていなかったので修正し、
  • フォーム配列に送信先の設定を追加
  • スマーティで情報が読み込まれるように変更

comment:55 Changed 8 years ago by urabe

r11558 で50人以上メンバーが存在する場合、不備の際にメンバーが表示されない現象を修正しました

comment:56 Changed 8 years ago by imamura623

Keywords: 確認中 removed
Resolution: fixed
Status: newclosed

動作確認いたしました。
問題無いようなので本チケットを閉じます。お疲れ様でした!

comment:57 Changed 8 years ago by kudo

Description: modified (diff)
Type: enhancementdefect
Note: See TracTickets for help on using tickets.