Warning: リポジトリと同期できません (サポートされていないバージョンコントロールシステム "svn です。 Python のライブラリに "svn" が正しくインストールされているか確認してください。)
- 更新日時:
-
2006/04/23 11:51:00 (19 年 前)
- 更新者:
-
weekbuild (IP アドレス: 59.147.202.119)
- コメント:
-
--
-
v2
|
v3
|
|
1 | 1 | {{{ |
2 | 2 | #!trachtml |
3 | | <h1>TracのMarkupClassについて</h1> |
4 | | <br /> <br /> 今回はTracの内部の話です。プラグインや、マクロを作る人むけ。<br /> <br />Trac 0.9.3で、クロスサイトスクリプティングを防ぐために、Markupというクラスが作られました。<br /> (詳しく知りたい人は、Tracサイトのチケット!#2473、チェンジセット![2724]あたりを参照。)<br /> 0.9.3以降のプラグインやマクロを開発する際には、ほとんどの場合(嫌でも)Markupクラスを使う必要があります。<br /> これにより、0.9.2以前用に作られたPluginやマクロは、ほとんど動かなくなっちゃっいました。<br /> <blockquote>TinyMCEPluginも公開直前に0.9.4で試したら、<br /> やたらと文字化けするようになってすげ-困りました。(・_・?) <br /> タグを生成しないならいいんですが、メニュー表示の際に既にタグを使わざるを得ないし。。<br /> </blockquote> <br /> Markupクラスは、「このテキストに含まれるHTMLタグは、エスケープしないでね」という宣言をするための<br /> strクラスのラッパーです。Markupクラスを通してない(かつHTMLタグを含む)文字列をHDFに入れると、<br /> 全て勝手にエスケープされてしまいます。<br /> <pre>eq.hdf[xxx] = '<b>強調</b>'<br /></pre> <blockquote> <p>×: <b>強調</b><br /> </p> </blockquote> <p>文字として"<b>あ</b>"と表示したいのではなく、"<strong>あ</strong>"とタグとして表示したい場合<br /> は、Markupクラスを使う必要があります。<br /> </p> <pre>req.hdf[xxx] = Markup'<b>強調</b>'<br /></pre> <blockquote> <p>○: <strong>強調</strong></p> </blockquote> <p>■Markupの使い方と実験<br /> タグをHDFに入れるには、<br /> </p> <pre>req.hdf[xxx] = Markup('<b>強調</b>')<br /></pre> <blockquote>○:<strong>強調</strong><br /> </blockquote> <p>Markupされた文字同士をつなげるには、<br /> </p> <pre>req.hdf[xxx] = Markup('<b>強調</b>')+Markup('<b>強調</b>')<br /></pre> <blockquote> <p>○:<strong>強調強調</strong><br /> </p> </blockquote> <p> ただし、Markupしてない文字列とつなげると、エスケープされちゃいます。<br /> </p> <pre>req.hdf[xxx] = '<b>強調</b>'+Markup('<b>強調</b>')+Markup('<b>強調</b>')<br /></pre> <blockquote> <p>×:<b>強調</b><b>強調</b><b>強調</b><br /> </p> </blockquote> <p> wiki_to_htmlなど、Markupを済ませた値を返すメソッドもあり、注意が必要です。<br /> </p> <pre>req.hdf[xxx] = wiki_to_oneliner("'''強調'''", self.env, db,<br /> shorten=True)+Markup(Markup('<b>強調</b>'))<br /></pre> ○:<strong>強調強調</strong> <p> まあ、2重にMarkupしてもよいので、とりあえずMarkupで囲っておけば大丈夫かも。<br /> </p> <pre>req.hdf[xxx] = Markup('<b>強調</b>'+Markup('<b>強調</b>'))<br /></pre> <blockquote> ○:<strong>強調強調</strong></blockquote> <p> </p> |
| 3 | <h1 id="TracのMarkupClassについて">TracのMarkupClassについて</h1>[[VisitCounter(TracDoc/MarkupClass)]]<br /> <br /> 今回はTracの内部の話です。プラグインや、マクロを作る人むけ。<br /> <br />Trac 0.9.3で、クロスサイトスクリプティングを防ぐために、Markupというクラスが作られました。<br /> (詳しく知りたい人は、Tracサイトのチケット!#2473、チェンジセット![2724]あたりを参照。)<br /> 0.9.3以降のプラグインやマクロを開発する際には、ほとんどの場合(嫌でも)Markupクラスを使う必要があります。<br /> これにより、0.9.2以前用に作られたPluginやマクロは、ほとんど動かなくなっちゃっいました。<br /> <blockquote>TinyMCEPluginも公開直前に0.9.4で試したら、<br /> やたらと文字化けするようになってすげ-困りました。(・_・?) <br /> タグを生成しないならいいんですが、メニュー表示の際に既にタグを使わざるを得ないし。。<br /> </blockquote> <br /> Markupクラスは、「このテキストに含まれるHTMLタグは、エスケープしないでね」という宣言をするための<br /> strクラスのラッパーです。Markupクラスを通してない(かつHTMLタグを含む)文字列をHDFに入れると、<br /> 全て勝手にエスケープされてしまいます。<br /> <pre>eq.hdf[xxx] = '<b>強調</b>'<br /></pre> <blockquote> <p>×: <b>強調</b><br /> </p> </blockquote> <p>文字として"<b>あ</b>"と表示したいのではなく、"<strong>あ</strong>"とタグとして表示したい場合<br /> は、Markupクラスを使う必要があります。<br /> </p> <pre>req.hdf[xxx] = Markup'<b>強調</b>'<br /></pre> <blockquote> <p>○: <strong>強調</strong></p> </blockquote> <p>■Markupの使い方と実験<br /> タグをHDFに入れるには、<br /> </p> <pre>req.hdf[xxx] = Markup('<b>強調</b>')<br /></pre> <blockquote>○:<strong>強調</strong><br /> </blockquote> <p>Markupされた文字同士をつなげるには、<br /> </p> <pre>req.hdf[xxx] = Markup('<b>強調</b>')+Markup('<b>強調</b>')<br /></pre> <blockquote> <p>○:<strong>強調強調</strong><br /> </p> </blockquote> <p> ただし、Markupしてない文字列とつなげると、エスケープされちゃいます。<br /> </p> <pre>req.hdf[xxx] = '<b>強調</b>'+Markup('<b>強調</b>')+Markup('<b>強調</b>')<br /></pre> <blockquote> <p>×:<b>強調</b><b>強調</b><b>強調</b><br /> </p> </blockquote> <p> wiki_to_htmlなど、Markupを済ませた値を返すメソッドもあり、注意が必要です。<br /> </p> <pre>req.hdf[xxx] = wiki_to_oneliner("'''強調'''", self.env, db,<br /> shorten=True)+Markup(Markup('<b>強調</b>'))<br /></pre> ○:<strong>強調強調</strong> <p> まあ、2重にMarkupしてもよいので、とりあえずMarkupで囲っておけば大丈夫かも。<br /> </p> <pre>req.hdf[xxx] = Markup('<b>強調</b>'+Markup('<b>強調</b>'))<br /></pre> <blockquote> ○:<strong>強調強調</strong></blockquote> <p> </p> |
5 | 4 | }}} |