ざっくりと。
ということで, 一度でもPreviewしないと投稿できない ようにしてみました。
comment_formの「POSTボタン」を以下のようにdtml-ifで囲んでみた。いやー,Zopeは簡単だ。。。
<dtml-if "REQUEST.form.has_key('previewComment')"> <input type="submit" name="addComment:method" value=" POST " /> </dtml-if>
ってこれじゃ直接コメント投稿用のURLにPOSTされておんなじじゃんか。いかにも頭悪そうだ(苦笑)。。。
自分の浅はかさを深く深く反省して,以下のようにすればOKかな?
1) SecurityでAnonymousのコメント追加をブロック
2) DTML Methodを作って,コメント追加時のPOST先として設定,コメントを追加できる権限を持ったユーザを作り,Proxyを設定
3) Preview時にcookieとかsessionにキーを設定
<dtml-if "REQUEST.form.has_key('previewComment')"> <dtml-call "RESPONSE.setCookie('postkey', 'Put some unique string here.', expires='Wed, 19 Feb 2020 14:28:00 GMT')"> <input type="submit" name="addComment_dt:method" value=" POST " /> </dtml-if>
4) POST先のDTML Methodでキーを判定。合っていればコメントとしてポスト,合っていなければPreviewに戻す
んー,大丈夫か。あとで確認して内容をアップデートとします。