--> -->

skimemo


skimemo - 日記/2018-09-09/最新のTracWysiwygでTracTicketTemplateが正常に動かない のバックアップソース(No.1)

#blog2navi()
*最新のTracWysiwygでTracTicketTemplateが正常に動かない [#xb4fdef4]

~サーバーを移行した際にtracのバージョンをyumの仰せの通り1.2にしたのですが、重要なプラグインTracWysiwygがちょっと不便な事になってしまったので対応した記録です。
----
* 問題 [#g168a66a]
++ TracTicketTemplateと組み合わせた時に一部正常動作しない
+++ Ticket編集画面でチケットのTypeを切り替えた際、wysiwygモードにしているとtextareaが更新されない
+++ TracTicketTemplateでtextareaが画面の下の方にずれる
++ (ついでに)遅い

* 原因 [#haa95374]
++ Ticket編集画面でチケットのTypeを切り替えた際、wysiwygモードにしているとtextareaが更新されない
~TracTicketTemplateはType切り替えの際にちゃんとTracWysiwygが入っているか見て動作を切り替えています。
 // for TracWysiwyg
 var wysiwyg_mode = $("#editor-wysiwyg-1:checked").length;
 if (wysiwyg_mode) {
   $("#editor-textarea-1").click();
 }
     :
 (textareaにテンプレートを書き込む処理
     :
 // for TracWysiwyg
 if (wysiwyg_mode) {
   $("#editor-wysiwyg-1").click();
 }
上記のように、id='editor-wysiwyg-1'が選択されていたらwysiwygモードと判定し、一旦textarea(wysiwygを使わないモード)に切り替え、textareaを書き換えた後、今度はid='editor-wysiwyg-1'をクリックしてwysiwygを使うモードに戻しています。~
wysiwygモードのままではtextareaを書き換えられないのでこのようにしているものと思われます。
~このようにTracTicketTemplateではTracWysiwygの事を気にしているにも関わらず、TracWysiwygの方は2016/11/2にこのidを削除してしまっています。(https://trac-hacks.org/changeset?reponame=&new=15670%40tracwysiwygplugin%2F0.12%2Ftracwysiwyg%2Fhtdocs%2Fwysiwyg.js&old=15668%40tracwysiwygplugin%2F0.12%2Ftracwysiwyg%2Fhtdocs%2Fwysiwyg.js)
~従って、この変更を元に戻してやれば良いわけです。対象ファイルは &color(black,lightgray){wysiwyg.js} になります。
ただし、過去の通りに戻しても上手くいかない(恐らく@を差し替える部分も削除されている)ので、以下のように修正します。
#code(javascript){{
var html = ''
    + '<label title="Links as you type (Ctrl-L)">'
    + '<input type="checkbox" checked="checked" />'
    + 'autolink</label> '
    + '<label for="editor-wysiwyg-1"><input id="editor-wysiwyg-1" type="radio" value="wysiwyg"'
    + (mode == "wysiwyg" ? ' checked="checked"' : '')
    + ' />wysiwyg</label> '
    + '<label for="editor-textarea-1"><input id="editor-textarea-1" type="radio" value="textarea"'
    + (mode == "textarea" ? ' checked="checked"' : '')
    + ' />textarea</label> '
    + '&nbsp; ';
}}
labelタグのforディレクティブと、inputタグのidディレクティブを設定しています。~
具体的な手順は以下の通りです。
~ソースを落としてくる
~展開して編集する
~サーバーに転送する
~インストール
 sudo python setup.py install
~apache再起動
 sudo systemctl restart httpd

#htmlinsert(twitterbutton.html)
RIGHT:Category: &#x5b;[[Linux>日記/Category/Linux]]&#x5d; - 08:41:21
----
RIGHT:&blog2trackback();
#comment(above)
#blog2navi()