タイムラインの絞り込み機能

本日から実践編に取り掛かり始めました。 まずテンプレートファイルに「リンクシェア」、「ファイル添付」の項目を実装することにしました。 そのためには何がどの部分に対応しているのかを知る必要があるため、AipoLocalization_ja.propertiesをTIMELINで検索しました。 そうするとTIMELINE_ONLY_POSTING=投稿のみ、と記述してあったので、timelineのvmファイル内でTIMELINE_ONLY_POSTINGを検索しました。 検索したところajax-timeline-list.vm と ajax-timeline.vmが対応している事がわかりました。 まずajax-timeline-list.vmの中に元からあるコードを参考に以下の文章を追加しました。

#elseif("$!{result.TargetDisplayName}" == "link")
$!l10n.TIMELINE_ONLY_LINK
#elseif("$!{result.TargetDisplayName}" == "file")
$l10n.TIMELINE_ONLY_FILE

ちなみに、TIMELINE_ONLY_LINKとTIMELINE_ONLY_FILEの参照は、AipoLocalization_ja.propertiesの中に作りました。

次にajax-timeline.vmの中に以下の文をそれぞれ追加しました。

#elseif("$!{result.TargetDisplayName}" == "link")
$!l10n.TIMELINE_ONLY_LINK
#elseif("$!{result.TargetDisplayName}" == "file")
$l10n.TIMELINE_ONLY_FILE
#set($actionlink = $!utils.escapeXML($!jslink.getPortletById($!portlet.ID).addQueryData("template","TimelineScreen").addQueryData("target_display_name", "link")))
<li><a href="javascript:void(0)" class="PostName_$!{portlet.ID} #if("$!{result.TargetDisplayName}" == "link")selected#end" id="PostName_$!{portlet.ID}_$!{result.TargetDisplayName}" onclick="aipo.timeline.displayIndicator('${actionlink}', '$!{portlet.ID}', '$indicator_id3', '$!{result.TargetDisplayName}');">$l10n.TIMELINE_ONLY_LINK</a></li>

#set($actionfile = $!utils.escapeXML($!jslink.getPortletById($!portlet.ID).addQueryData("template","TimelineScreen").addQueryData("target_display_name", "file")))
<li><a href="javascript:void(0)" class="PostName_$!{portlet.ID} #if("$!{result.TargetDisplayName}" == "file")selected#end" id="PostName_$!{portlet.ID}_$!{result.TargetDisplayName}" onclick="aipo.timeline.displayIndicator('${actionfile}', '$!{portlet.ID}', '$indicator_id3', '$!{result.TargetDisplayName}');">$l10n.TIMELINE_ONLY_FILE</a></li>

これでテンプレートに「リンクシェア」と「ファイル添付」が追加されました。

次回から実際に絞り込み機能がつけられるように、Javaを書き換えていく作業に移ります。 そのために色々調べてみたところ、タイムラインはSQLという言語をつかって、データベースの値を元に絞り込みをしている事がわかりました。 次回までにSQLについて知識を身につけたうえで、本格的に作業に取りかかりたいと思います。