MantisにMarkdownとコードのハイライトを導入

Mantis1.2.17でQiitaのようにMarkdownを書きたかったのと、オプションでQiitaのようなコードのハイライトが提供されていたので導入しました。
まだテスト中ですが、現在のやり方を忘れないように記録しておきます。

＋αで使ってみた所感を書いて、公式の丸写し感を緩和させる！


# <i class="fa fa-cubes"></i> 概要

[MantisBT Markdown]のreadmeそのままです

Markdownを導入するために
* [MantisBT Markdown]プラグインの導入
* [MantisBT Markdown]プラグインの設定
* ([MantisBT KK Highlight]プラグインの導入)任意
* デフォルトの`MantisBT フォーマティング`プラグインの設定

# <i class="fa fa-file-text-o"></i> [MantisBT Markdown]プラグインの導入

[MantisBT Markdown]からzipファイルをダウンロードします。
~~Gitってなんですか~~

zipを解凍したら、`Markdown`というディレクトリができるはずなので、Mantisを設置しているサーバーに
`(mantisbt設置場所)/plugins/Markdown`[^1]
となるように設置します。(恐らく同階層に`MantisCoreFormatting`があると思います)

設置が済んだら、Mantisへブラウザから管理者権限でログインします。
その後、
管理 → プラグインの管理
へ移動します。

プラグインの一覧が表示されるので、下部の「利用できるプラグイン」に[MantisBT Markdown]があればファイルの設置は成功です。
このままではまだ有効ではないので、
[MantisBT Markdown]行の右端の操作カラムから、「追加」を選択します。
`CAUTION: Installing this plugin will disable the default MantisBT text formatting. `
という警告がでると思いますが、この設定は後で行うので無視して追加を選択。
「インストール済みプラグイン」へ移動されていれば、有効になっています。

## <i class="fa fa-file-text-o"></i> [MantisBT Markdown]プラグインの設定

「インストール済みプラグイン」からプラグイン名[MantisBT Markdown]が設定画面へのリンクになります。
設定は以下の画像のようにします。
![screenshot-2.png](https://qiita-image-store.s3.amazonaws.com/0/62354/6940bd0f-5432-e590-2555-e781d9b31019.png)

これでMarkdownが有効になりました。(まだ完全ではない)
後は好みでこの設定画面をいじってください。

# <i class="fa fa-css3"></i> [MantisBT KK Highlight]プラグインの導入

[Mantis highlightcodeプラグインのインストールと設定方法]が詳しいです。

[MantisBT KK Highlight]を導入すれば、Markdownで囲ったコードが、指定した言語に合わせてCSSで修飾されます。
可読性がよくなりますが、Markdownに必須というわけではありません。

[MantisBT Markdown]の導入と同じです。

[MantisBT Markdown]からzipファイルをダウンロードします。
~~Gitって~~

zipを解凍したら、`Highlight`というディレクトリができるはずなので、Mantisを設置しているサーバーに
`(mantisbt設置場所)/plugins/Highlight`[^1]

あとは[MantisBT Markdown]と同じですが、こちらは追加時に警告も出ませんし、設定もとくに不要です。
設定では色分けのテーマが選べますので、好みのものを。
余裕があれば、readmeを読んで、ハイライトできる言語を覚えておきましょう

余裕があるので書きます
詳しくはやっぱりreadme

| ハイライト可能            | 指定方法(小文字化でないものは太字) |
|:------------------------|:-----------|
| Python                  | python |
| Python profiler results | **profile** |
| Ruby                    | ruby |
| Perl                    | perl|
| PHP                     | php|
| XML                     | xml|
| HTML                    | html|
| CSS                     | css|
| Django                  | django|
| Javascript              | javascript|
| VBScript                | vbscript|
| Delphi                  | delphi|
| Java                    | java|
| C++                     | **cpp**|
| C#                      | **cs**|
| RenderMan RSL           | **rsl**|
| RenderMan RIB           | **rib**|
| Maya Embedded Language  | **mel**|
| SQL                     | sql|
| Smalltalk               | smalltalk|
| Lisp                    | lisp|
| Ini                     | ini|
| Apache                  | apache|
| DOS                     | dos|
| Bash                    | bash|
| Diff                    | diff|
| Axapta                  | axapta|
| 1C                      | 1c|
| AVR assembler           | **avrasm** |
| Parser3                 | parser3|


# <i class="fa fa-file-text"></i> `MantisBT フォーマティング`プラグインの設定

[MantisBT Markdown]インストール時の警告にしたがい、デフォルトプラグインによるテキスト処理をオフにします。

Mantisへブラウザから管理者権限でログインします。
その後、
管理 → プラグインの管理
へ移動します。

`MantisBT フォーマティング 1.0x`(xはアルファベット1文字)をクリックして、設定画面へ。
画像のようにテキスト処理をOFFにします。

![system2_2015-06-24_17-03-42.png](https://qiita-image-store.s3.amazonaws.com/0/62354/8fd22a1a-99bb-b67c-db78-96f54a869904.png)

以上で設定が完了です。完全にMarkdownが有効になりました。


# <i class="fa fa-exclamation-triangle"></i> 今後の運用および過去の課題への影響

課題=チケット、バグ報告

導入後、過去の課題を眺めた結果、いろいろと問題がありました。

## >を使った引用  

これは`<blockquote>`とCSSの問題だと思いますが、インデントされているだけで引用とわかりづらいし、Markdownの引用終了は空行のためちょっと癖がある(引用直下で解答や、空行含めた引用など)

引用直下記述が多く、引用に含まれているコメントなどがちらほらありました。


## 改行+タブorスペース4つ で`<pre><code>`されるパターン

ログの出力やコードのベタ貼りをしている箇所で、部分的にコード判定されハイライトされている箇所が見受けられました。
これはコード全体を「```」で囲めば解決しそうですが、
インデントするだけでコードと捉えられるのは誤爆が多そうです

## Linuxのコマンド

これもコードのベタ貼り問題です。

バグ再現用などのために、実行したコマンドが書かれることがありますが、
Linuxのコマンドであることを表そうと、ターミナルの`#`から記載すると見出しになってしまっています。

## ```lang:name 記法が使えない

これはQiitaが便利すぎ？
Qiita風に書いて脳内変換していた弊害です。  
:nameがあるとコードとみなされません。(:nameがなければlangは有効)

あと、Javascriptコードを「\`\`\`js」としてしまっていたり…
(Mantisでは`javascript`と非省略)

# 普通に書くにはエスケープが必要

\>や\#などを普通に使いたいとなると、`\`によるエスケープが必要になります。

# プレビューが見れない

Qiitaに毒されすぎ問題その２？
プレビューが見れないので実際の結果は更新するまでわかりません。

投稿→Markdownが変→修正
がかなり多くなりそうです。

課題の作成者・監視者には無駄な更新メールが飛びますし、
さらにうちでは課題の変更をSlackと連動して通知しているので無駄通知がログを汚します……


## `<code>`外のHTMLが有効

最後にして現在最大の問題

コードベタ貼り問題
`<code>`外のHTMLが有効になっているので、画面が崩れたり、フォームがちょくちょくあったりします。

これも`<code>`で囲めばいいと思いますが、もし変な`<script>`があったりしたら…どうなるんでしょうか。


***

思いの外Markdown化の影響が大きく、これはMantisを使う人はMarkdownの習得が必須になりそうな予感がします…
覚えれば便利なのですが、全員にその学習コストを支払わせ、Mantisへの参加ハードルを上げることはイマイチかなーて気がします。
建前は開発者以外も参加することになっているんで。

なのでプラグインによるMarkdown化はやめて、今までどおり自分だけMarkdownで書いて脳内変換…とするかもしれません。
Markdownのメリットは平でも読みやすくなんとなく意味は伝わりますし、「なんでそんな書き方してるの？」ってところからMarkdownに誘導して、広めて、プラグインの有効化へ、という道もアリじゃないかなぁ



[MantisBT Markdown]:https://github.com/mantisbt-plugins/Markdown
[MantisBT KK Highlight]:https://github.com/mantisbt-plugins/highlightcode

[Mantis highlightcodeプラグインのインストールと設定方法]:http://symfoware.blog68.fc2.com/blog-entry-1055.html

[^1]: zip解凍時に出来たzipファイル名のディレクトリは不要です