AipoのTest詳細画面でURLをリンク付で表示する方法
まずTest詳細画面がどのファイルに対応しているか検証を使って調べます。
networkを見ると対応するjavaファイルのヒントが出てくるので、eclipseのファイル検索を使って検索します。
portlets/html/ajax-test-detail.vmのファイルがhtmlとして表示していると言っているので
そこに行きます。。。
そこでメモ機能の記述を真似て
#ALtdcaption($l10n.TODO_MEMO) #ALtditem($!result.Detail.Note) +#ALtdcaption($l10n.TODO_URL) +#ALtditem($!result.Detail.Url)
$l10n.TODO_URLという変数がなにかを理解して無かったので、しときましょう。
さらにTODO_URLのテンプレを記載していないので
AipoLocalization_ja.propertiesで記載します。
ここで一旦実行してみると
$!result.Detail.Urlがそのまま表示されてしまいます。
先輩に尋ねると新手のハックのリンクを下さいました。
これを見ると上記のresultの働きが複雑になっていることがわかりました。
TestResultData.javaにコードを加えました。
一覧画面にURLの追加
方法が2パターンほどあるみたいです。
* タイトルの右側にURLを表示するパターン
* URLのリストをタイトルの右に作って表示するパターン
前者を選びました。
ajax-test-list.vmの87行目に
<th>#ALajaxsort('test_name' $l10n.TODO_URL $result 'TestListScreen')</th>
さらに99行目に
#ALtdcellheaderAtt('class="auiMTCaption"') <div> <a href="$record.Url"</a> </div> #ALtdcellfooter()
を追加しました。
そしてTestSelectData.javaのprotected Object getResultData(EipTTest record)内に
rd.setUrl(ALCommonUtils.compressString( record.getUrl(), getStrLength()));
を追加しました。
サムネイルの追加
ハックを見たり、先輩に教えてもらったりしてなんとかできました。
TestResultData クラス内getUrlOriginal() を追加しました。 ,br>
public String getUrlOriginal() { return url.getValue(); }
ajax-test-detail.vmの38行目に下記を記述しました。
#ALtdcaption($l10n.TODO_THUMBNAIL) <td><a target="_blank" href=$!{result.Detail.UrlOriginal}><img src="http://capture.heartrails.com/free/1440556126970?$!result.Detail.UrlOriginal" alt="$!result.Detail.UrlOriginal" width="200" height="300" /></a></td>
あとはテンプレTODO_THUMBNAIL=サムネイルを追加しました。
詳細画面のURLからドメインだけを抽出する機能を追加
こちらも方法が複数ありました。
* 正規表現を使う
* URIクラスを使う
などです。
参考ハック
https://hacknote.jp/archives/13258/
https://hacknote.jp/archives/17488/
https://hacknote.jp/archives/14639/
このハックをみてやりました。