Bug(バグ) #3413
未完了
管理画面のhtml挿入で,テキストモードからプレビューモードに切り替えた後,テキストモードに戻った時に入力内容が消える場合がある
誠二 天重 さんが約11年前に追加.
4年以上前に更新.
説明
管理画面のhtml挿入で,テキストモードで例のようなソースを入力し,プレビューモードに切り替えた後,テキストモードに戻った時に入力内容が消える。
例
<span><script src="http://hoge.com"></script></span>
<span><a href="/"></a></span>
現象が発生する条件としては,spanタグやdivタグ,pタグなどの中で,プレビュー時に出力内容を持たないようなソースを入力した場合に発生する。
spanではなくdivでくくった場合は,入力内容が
<div> </div>
になる。
再現手順¶
- 管理画面のhtml挿入画面に遷移
- テキストモードのhtml挿入テキストエリアに<span><script src="http://hoge.com"></script></span>と入力する
- プレビューモード切替用ラジオボタンにチェックを入れる
- テキストモード切替用ラジオボタンにチェックを入れる
->手順2の入力内容が消えている
※srcで指定するurlが実在しているかどうかは本現象にかかわらない。
- 関連している Bug(バグ) #2495: HTML挿入で テキストモード→プレビューモード→テキストモード の切り替えを行うとリンクの遷移先の指定が変更されてしまう場合がある を追加
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Akihiro KOBAYASHI にセット
lib/widget/opWidgetFormRichTextarea.class.phpにおいて
protected $tinyMCEConfigs = array( ...内に
'valid_elements' => 'script[src]',
を追加したところ、
<span><script src="http://hoge.com"></script></span>
は
<script src="http://hoge.com" type="text/javascript"></script>
と変換され、値が残るようになりました
これは属性値srcがある場合のみ値が保持されるためです
これに基づいて
'valid_elements' => '*[*]',
と変更する事で対処してみて、どのようになるか検証します
引き続き調査します
- 3.8 で発生するか を Unknown (未調査) から Yes (はい) に変更
- 関連している Bug(バグ) #2496: HTML挿入で テキストモード→プレビューモード→テキストモード の切り替えを行うと <hr> の color 属性が消える を追加
- 対象バージョン を OpenPNE 3.9.0-old にセット
lib/widget/opWidgetFormRichTextarea.class.php内に
tinymce.init{
...
'valid_elements' => '*[*]',
'extended_valid_elements' => '*[*]',
'convert_fonts_to_spans' => false,
'force_p_newlines' => false,
'forced_root_block' => '',
'remove_linebreaks' => false,
'preformatted' => true,
'apply_source_formatting' => false
を追加することで
<span><script src="http://hoge.com"></script></span>
<span><a href="/"></a></span>
の入力内容の保持に成功しました
ただ、
<div><script src="http://hoge.com"></script></div>
<div><a href="/"></a></div>
とした際に、
<div></div><div></div>
となり、div内の内容がすべて消えてしまうので、まだ調査が必要です
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
プルリクエストしました
https://github.com/openpne/OpenPNE3/pull/234
原因
tinymceの自動整形機能により、勝手にタグを削除してしまったりしている
対策
tinymceの設定を以下のように変更
valid_children' => 'div[*], ',
'valid_elements' => '[*]',
'extended_valid_elements' => '*[*]',
'convert_fonts_to_spans' => false,
'force_p_newlines' => false,
'forced_root_block' => '',
'remove_linebreaks' => false,
'preformatted' => true,
'apply_source_formatting' => false,
valid_childrenについては*[*]では対応できなかったものがあったため(<div><script src="http://hoge.com"></script></div><div><a href="/"></a></div> → <div></div<div></div)になってしまう)、特別にdiv[*]と明記して対処した
- 担当者 を削除 (
Akihiro KOBAYASHI)
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
'valid_elements' => '*[*]'
について、同じ変更が含まれている #2496 が影響範囲の大きさなどの理由で差し戻しとなっているため解決するまで当チケットも差し戻しの状態にします。
- 関連している Task(タスク) #4071: OpenPNEに同梱されている TinyMCE 3.4.4 が IE11 に対応していないため、バージョンアップについて調査する を追加
対象バージョン変更のため、修正内容の確認を行います。
- 対象バージョン を OpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更
- 対象バージョン を OpenPNE 3.9.0 から OpenPNE 3.10.x に変更
- 対象バージョン を OpenPNE 3.10.x から OpenPNE 3.11.x に変更
他の形式にエクスポート: Atom
PDF