2017/11/25 03:21 JST


 2006/12/19 13:07 JST (参照数 8685回)  

状態: オフライン

kazuhiro

Forum User

Newbie
登録日: 2006/12/18
投稿数: 3

htmlモードで記事中に&のような実体参照を書いてから保存し、その後に編集しようとすると、フォーム上では実体参照が実体になってしまいます。

例えば「A & B」のように書いて保存します。 保存した記事を表示すると「A & B」の様に表示されます。 その記事を更に編集しようとすると、プレビューには「A & B」と表示されますが、フォームにも「A & B」と表示されてしまいます(「A & B」となって欲しい)。

原因はフォームのtextareaの初期値として{stroy_introtext}や{story_bodytext}等の変数を使用している事で、本来はこれらの表示用のテキストを更にhtmlspecialchars等でエスケープした内容を使用しなければならないように思います。

私は public_html/admin/story.php を改造して新たなテンプレート用の変数を用意し、テーマの admin/story/atoryeditor.thtml がそれらの変数を使用するようにする事で対処しました。 本家にも報告されていたようですが、意図が正しく伝わらないままにcloseされているように思われます。


 2006/12/19 21:16 JST  

状態: オフライン

mystral-kk

Site Admin

管理者
登録日: 2006/03/23
投稿数: 1022
場所:福岡県
1.4.0sr5で現象を確認しました。対処法としては,admin/story.phpの710行目付近にある
PHP Formatted Code

$story_templates->set_var('story_introtext', $newintro);
 
の直前に
PHP Formatted Code

if ($A['postmode'] != 'plaintext') {
    $newintro = htmlspecialchars($newintro, ENT_QUOTES);
}
 
を追加,718行目付近にある
PHP Formatted Code

$story_templates->set_var('story_bodytext', $newbody);
 
の直前に
PHP Formatted Code

if ($A['postmode'] != 'plaintext') {
    $newbody = htmlspecialchars($newbody, ENT_QUOTES);
}
 
を追加でいけそうです。
-- mystral-kk, "Every cloud has a silver lining."

 2006/12/19 21:23 JST  

状態: オフライン

mystral-kk

Site Admin

管理者
登録日: 2006/03/23
投稿数: 1022
場所:福岡県
ちなみに1.4.1beta1では,先ほどポストした内容の修正(htmlspecialchars())が行われていて,ご指摘の現象は起きないようです。
-- mystral-kk, "Every cloud has a silver lining."

 2006/12/19 22:28 JST  

状態: オフライン

kazuhiro

Forum User

Newbie
登録日: 2006/12/18
投稿数: 3

御教示いただいた方法にて改善する事を確認しました。それと同時に私がとった方法ではテキストモードにした時に問題が生じる事も気づかされました。どうもありがとうございました。


 2006/12/19 22:33 JST  

状態: オフライン

mystral-kk

Site Admin

管理者
登録日: 2006/03/23
投稿数: 1022
場所:福岡県
どういたしまして。また何かありましたら,気軽にどうぞ。
-- mystral-kk, "Every cloud has a silver lining."

 2006/12/20 14:52 JST  

状態: オフライン

kazuhiro

Forum User

Newbie
登録日: 2006/12/18
投稿数: 3
御教示いただいた修正による不具合に気づいたので報告します。1.4.1rc1でも再現しました。htmlモードで [code]>[/code] の様に書くと[code]と[/code]で囲まれた部分が過剰にエスケープされるようになってしまいました。すなわち、上記のように書いた記事を保存し、再度編集しようとすると [code]>[/code] に変化します。更にそのまま保存、再編集(あるいはプレビュー)すると [code]>[/code] になります。更に繰り返すとどんどんamp;が増殖します。 私自身は[code]タグは使用していませんが、ソースを眺めていたら存在に気づいて確認した次第です。 minimalな変更で済ますのであればhtmlspecialcharsを入れた少し前に[code]タグを生成しているところがあるので、ここで該当部分に対してCOM_handleCodeの逆操作を行えばよさそうです。

 2006/12/20 22:40 JST  

状態: オフライン

mystral-kk

Site Admin

管理者
登録日: 2006/03/23
投稿数: 1022
場所:福岡県
ご指摘ありがとうございます。おっしゃるとおり,[code]~[/code]内のコードが複数回エスケープされることになります。簡単な対処方法を思いつかないので,少し考えてみます。
-- mystral-kk, "Every cloud has a silver lining."

時刻はすべて JST , 現在の時刻は 03:21 AM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  • ゲストユーザの投稿を見る 
  • ゲストユーザ投稿可能 
  • 一部のHTMLを許可 
  • バッドワードをチェック