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

Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#3709 closed enhancement (fixed)

日記コメント停止機能

Reported by: toraneko Owned by: toraneko
Priority: minor Milestone: OpenPNE2.13.7
Component: 指定しない Version:
Keywords: Cc:

Description (last modified by kudo)

■概要

  • 日記作成画面で[コメント可/コメント不可]にチェック、デフォルトはコメント可
  • 日記編集画面で[コメント可/コメント不可]を変更できる。
  • 管理画面でSNS毎にこの機能を[使用する/使用しない]を選択できる、デフォルトは使わない。

http://sns.openpne.jp/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=3937

■仕様

管理者画面のSNS設定によって日記のコメントが禁止できる運用を行えるようにする。 日記のコメントを禁止する運用で、日記作成時または編集時にコメントの禁止するか選択できるようにする。

(1)管理者がコメント禁止機能を無効に設定
・従来通りの運用

(2)管理者がコメント禁止機能を有効に設定
・日記作成・編集時にコメント許可「する/しない」のチェックボックス表示される

・新規日記作成時にコメント禁止設定が可能
 ・コメント許可しないで作成した日記・・・コメント書き込み欄が表示されない
 ・コメント許可するで作成した日記 ・・・コメント書き込み欄が表示される

・日記編集時にコメント禁止設定が可能
 ・コメント許可しないで作成した日記をコメント許可するに変更・・・コメント書き込み欄が表示される
 ・コメント許可するで作成した日記をコメント許可しないに変更・・・コメント書き込み欄が表示されない(変更前のコメントは表示される)

(3)管理者がコメント禁止機能を有効から無効に設定
・日記作成・編集時にコメント許可「する/しない」のチェックボックス表示されない(以前の日記も変更不可)

・コメント禁止機能有効時にコメント許可しないに設定した日記・・・コメント書き込み欄が表示されない
・コメント禁止機能有効時にコメント許可するに設定した日記 ・・・コメント書き込み欄が表示される(従来どおり)

(4)管理者がコメント禁止機能を無効から有効に設定(以前有効にしていた場合)
・日記作成・編集時にコメント許可「する/しない」のチェックボックス表示される(以前の日記も変更可)

・以前のコメント禁止機能有効時にコメント許可しないに設定した日記・・・コメント書き込み欄が表示されない
・以前のコメント禁止機能有効時にコメント許可するに設定した日記 ・・・コメント書き込み欄が表示される(従来どおり)

(補足)
コメント許可しないに設定した日記は、コメントメール投稿も不可にする。

■修正内容

(1) SNS設定の定義
以下の定義を追加
 定義名:   USE_DIARY_COMMENT
 デフォルト: false

(2) DB修正内容
日記テーブル[c_diary]に、以下のフィールドを追加する
    is_comment_input = 0 : コメントを許可しない
                       1 : コメントを許可する
デフォルト ・・・ 1:コメントを許可する

(3) SQL文
// update
ALTER TABLE c_diary ADD COLUMN is_comment_input tinyint(1) NOT NULL default 1;

(4) 管理画面
・SNS設定ページに、「日記コメント禁止機能使用設定」の「使用する/使用しない」の項目追加

(5) PC・携帯画面
・コメント禁止機能が有効な場合、日記作成または編集ページでコメント許可「する/しない」のチェックボックスを表示する
・コメント「許可しない」にチェックして日記作成または編集した場合、日記詳細ページのコメント書き込み欄を表示しない
・コメントありの日記をコメント「許可しない」に設定した場合は、設定前のコメントは表示し、以降のコメント書き込み不可にする
・管理者がコメント禁止機能を有効から無効にした場合は、変更以前のコメント許可「する/しない」設定は有効で
 以降のコメント許可「する/しない」設定の変更を不可にする

(6) コメントメール投稿
・コメント「許可しない」にチェックして日記作成または編集した日記にコメントメール投稿した場合、
 エラーにし、エラーメールを返信する。

(7) 備考
今回追加したフラグ、"is_comment_input"はコメント「許可する/許可しない」の設定のみに使用されます。
コメント数1000件超えの時に使用される既存のフラグ、"is_writable_comment"の値は今回の修正では影響されません。
ただし、フラグのチェックは"is_comment_input"の設定が優先されます。
そのため、コメント数1000件超えた日記のメッセージは下記のようになります。
・コメント許可しないに設定した場合: コメント許可しない時のメッセージが表示されます。
・コメント許可するに設定した場合 : コメント数1000件超えのメッセージが表示されます。

(8) ソース
OpenPNE2.13.6ベースで作成

■関連情報

  • #3826:日記コメント停止機能のコード改善

Change History (23)

comment:1 Changed 9 years ago by toraneko

r10959で一旦コミットしました。 当初、追加カラムを"is_write_comment"としていたのですが、コメント数1000件越えのケースで似たような変数"is_writable_comment"があり、混乱するので別の名前にしましたが、いまいちピンと来ていません。 アドバイスお願いします。

comment:2 Changed 9 years ago by BW

Description: modified (diff)

comment:3 Changed 9 years ago by BW

Description: modified (diff)

comment:4 Changed 9 years ago by BW

Description: modified (diff)

comment:5 Changed 9 years ago by BW

Description: modified (diff)

comment:6 Changed 9 years ago by kiwa

Milestone: OpenPNE2.13.7

2.13.7取り込み予定にします。

comment:7 Changed 9 years ago by nakasone

Keywords: 確認中 added

以下のリビジョンで取り込みました。

comment:8 Changed 9 years ago by kiwa

r11006 にてupdate sqlの連番を修正しました。

comment:9 Changed 9 years ago by kiwa

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

バグ報告

「日記コメント禁止機能使用設定」を「使用しない」にした状態で日記を作成するとコメントできない日記になります

仕様指摘

admin_page_edit_c_admin_configの「日記コメント禁止機能使用設定」にある説明文の「※」は不要ではないでしょうか?

「日記カテゴリ機能使用設定」に合わせたのかもしれないですが、「日記カテゴリ機能使用設定」の「※」も同様に不要だと思います。「日記カテゴリ機能使用設定」の「※」については対応するとしたら別チケットで行いましょう。

comment:10 Changed 9 years ago by fukamachi

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

r11161

修正しました

comment:11 Changed 9 years ago by fukamachi

r11162

携帯のほうも修正しました

comment:12 Changed 9 years ago by shingo

Keywords: 差し戻し added; 確認中 removed
  • ポスグレにはupdate文が必要。データがないので3番目のSQLでエラーが起こる
    setup/sql/postgres74/update/update09-for2.13.7-alter-c_diary-add-column-is_comment.sql
    

comment:13 Changed 9 years ago by shingo

OR条件は、他の箇所では「
」で記述していることが多い
  • r11161 / r11162 の修正
    221	({if !$smarty.const.USE_DIARY_COMMENT or $is_comment_input}) 
    
  • 今回追加した定数「USE_DIARY_COMMENT」に「OPENPNE_」をつけてください
  • デフォルトは「true」です。管理画面設定では「0」・「1」を設定してください
    169	            'USE_DIARY_COMMENT' => false, 
    
  • 以下のように修正してください
    • 「$is_comment_input = "1"」を「$is_comment_input = 1」にする
    • 「intval($is_comment_input),」をboolキャストに変更
    • 引数指定の記述の折り返しを無くす(1行が長くなりますが前後にある関数を見たところ許容範囲内だと思われます)
       983 function db_diary_insert_c_diary($c_member_id, $subject, $body, $public_flag,
       984     $is_comment_input = "1")
       985 {
       986     //function cacheの削除
       987     pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $c_member_id, 5);
       988 
       989     $data = array(
       990         'c_member_id' => intval($c_member_id),
       991         'subject' => $subject,
       992         'body' => $body,
       993         'public_flag' => util_cast_public_flag_diary($public_flag),
       994         'r_datetime' => db_now(),
       995         'r_date' => db_now(),
       996         'u_datetime' => db_now(),
       997         'is_checked' => 1,
       998         'image_filename_1' => '',
       999         'image_filename_2' => '',
      1000         'image_filename_3' => '',
      1001         'is_comment_input' => intval($is_comment_input),
      1002     );
      1003     return db_insert('c_diary', $data);
      1004 }
      
  • boolキャストの方がいいと思います
    webapp/lib/db/diary.php
    
    1021         'is_comment_input' => intval($is_comment_input),
    
  • シンプルに「!$c_diaryis_comment_input?」としてもかまいません
    webapp/lib/mail/sns.php
    
    518         if ($c_diary['is_comment_input'] == "0") {
    
  • 「この」の後の「、」が不要。「現在、」も必要かどうか要検討。
    webapp/lib/mail/sns.php
    
    519             $this->error_mail('現在、この、' . WORD_DIARY . 'にはコメントできません。');
    
  • ここで設定するといきなり日記全体のコメント書込みが禁止されると誤解される可能性があります。何らかの補足説明があっても良いのではないでしょうか?
    m=admin&a=page_edit_c_admin_config
    
    ※日記のコメント禁止機能を有効にするかどうかを設定します
    

comment:14 Changed 9 years ago by shingo

  • 日記新規登録時、エラーを出した時に値が保持されない(携帯・PC共に)
  • シンプルに「({if $target_c_diary.is_comment_input})」としても良い(PC版も同様)
    webapp/modules/ktai/templates/h_diary_edit.tpl
    
     48 <input type="checkbox" name="is_comment_input" value="1"({if $target_c_diary.is_comment_input == "1"}) checked="checked"({/if})>許可する<br>
    
  • webapp/modules/pc/templates/fh_diary.tpl
    • ページャの「<<」・「>>」が全角になっています
    • 他のテンプレートにも同様の誤表記があるようです
  • コメント書込み不可の時に以下の表示は必要でしょうか?
    	<p>現在、この({$WORD_DIARY_HALF})にはコメントできません。</p> 
    
  • シンプルに「({if $form_val.is_comment_input})」としても良い
    webapp/modules/pc/templates/h_diary_add_confirm.tpl
    
    59	({if $form_val.is_comment_input == "1"}) 
    
    • webapp/modules/pc/templates/h_diary_edit_confirm.tpl も同様
  • 確認ページのヴァリデーションで「is_comment_input」を「default = "0"」にしています。「default = "1"」で統一しない意図が良くわかりません。
  • 下記ファイルのみ [is_comment_input] にデフォルト値を設定していません。何故でしょう?
    webapp/modules/pc/validate/page/h_diary_edit.ini
    

comment:15 Changed 9 years ago by kiwa

ポスグレにはupdate文が必要。データがないので3番目のSQLでエラーが起こる

修正してください。

今回追加した定数「USE_DIARY_COMMENT」に「OPENPNE_」をつけてください

修正してください。

デフォルトは「true」です。管理画面設定では「0」・「1」を設定してください

修正してください。

日記新規登録時、エラーを出した時に値が保持されない(携帯・PC共に)

2.12でも起こりうる現象なので別チケットで対応します。

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

その他の指摘

致命的なものではないので次バージョンで対応しましょう。

#3826:日記コメント停止機能のコード改善

comment:16 Changed 9 years ago by kiwa

Owner: changed from nobody to kiwa
Status: newassigned

修正やります。

comment:17 Changed 9 years ago by kiwa

ポスグレにはupdate文が必要。データがないので3番目のSQLでエラーが起こる

r11312にてupdate文を追加しました。

今回追加した定数「USE_DIARY_COMMENT」に「OPENPNE_」をつけてください

r11311にて対応しました。

デフォルトは「true」です。管理画面設定では「0」・「1」を設定してください

未対応です。

comment:18 Changed 9 years ago by kiwa

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

デフォルトは「true」です。管理画面設定では「0」・「1」を設定してください

r11313でfalse→0にしました。

OPENPNE_USE_DIARY_COMMENTは「日記コメント使用するか否か」の項目ではなく「日記コメント停止機能を使用するか否か」の設定なので、デフォルトはfalseでOKです。定数名をわかりやすく改善するのは他のチケットで行いましょう。

  • #3827:日記コメント停止機能の設定に使用している定数名をわかりやすくする

comment:19 Changed 9 years ago by ShogoKawahara

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

comment:20 Changed 9 years ago by imamura623

Keywords: テスト待ち removed
Owner: changed from kiwa to toraneko
Status: assignednew

テスト完了。 問題なし。

comment:21 Changed 9 years ago by imamura623

Resolution: fixed
Status: newclosed

comment:22 Changed 9 years ago by kiwa

Description: modified (diff)

descriptionに改善チケットを追加しました。

comment:23 Changed 9 years ago by kudo

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