ゲストブックエントリのコメントと評価を有効にする
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
UIへのアセット機能の追加
手順5/5
アセットフレームワークにより、ユーザーはアセットにコメントして評価できます。 タグ、カテゴリ、および関連するアセットと同様に、これらの機能を公開するにはユーザーインターフェイスを更新する必要があります。 アプリケーションを適切に設計するには、ユーザーがアセットを評価およびコメントできる[表示]ページが必要です。 ゲストブックエントリでコメントと評価を有効にするには、次の手順に従います。
-
guestbook-web
モジュールプロジェクトの/ guestbookwebportlet
フォルダーにview_entry.jsp
という新しいファイルを作成します。 -
作成したファイルにJavaスクリプトレットを追加します。 このスクリプトレットでは、
entryId
リクエスト属性を使用してエントリオブジェクトを取得します。 セキュリティ上の理由から、このオブジェクトを前述の手順 Asset Assetでカスタムアセットを表示するためのJSPを作成するで説明したエスケープモデルに変換します。<%@ include file="../init.jsp"%> <% long entryId = ParamUtil.getLong(renderRequest, "entryId"); long guestbookId = ParamUtil.getLong(renderRequest, "guestbookId"); Entry entry = null; if (entryId > 0) { entry = EntryLocalServiceUtil.getEntry(entryId); entryId = entry.getEntryId(); } entry = EntryLocalServiceUtil.getEntry(entryId); entry = entry.toEscapedModel(); AssetEntry assetEntry = AssetEntryLocalServiceUtil.getEntry(Entry.class.getName(), entry.getEntryId());
-
次に、現在のエントリの名前でブレッドクラムエントリを更新します。
String currentURL = PortalUtil.getCurrentURL(request); PortalUtil.addPortletBreadcrumbEntry(request, entry.getMessage(), currentURL);
-
スクリプトレットの最後に、現在のエントリの既存のアセットタグの名前をキーワードとしてポータルページに追加します。 これらのタグ名は、ポータルページの
<head>
セクションの<meta content="[tag names here]" lang="en-US" name="keywords" />
要素に表示されます。 これらのキーワードは、検索エンジンがページを見つけてインデックスを作成するのに役立ちます。PortalUtil.setPageSubtitle(entry.getMessage(), request); PortalUtil.setPageDescription(entry.getMessage(), request); List<AssetTag> assetTags = AssetTagLocalServiceUtil.getTags(Entry.class.getName(), entry.getEntryId()); PortalUtil.setPageKeywords(ListUtil.toString(assetTags, "name"), request); %>
-
スクリプトレットの後に、ページおよびバックリンクのURLを指定します。
<liferay-portlet:renderURL varImpl="viewEntryURL"> <portlet:param name="mvcPath" value="/guestbookwebportlet/view_entry.jsp" /> <portlet:param name="entryId" value="<%=String.valueOf(entryId)%>" /> </liferay-portlet:renderURL> <liferay-portlet:renderURL varImpl="viewURL"> <portlet:param name="mvcPath" value="/guestbookwebportlet/view.jsp" /> </liferay-portlet:renderURL> <liferay-ui:header backURL="<%=viewURL.toString()%>" title="<%=entry.getName()%>" />
-
次に、ページのメインコンテンツを定義します。 ゲストブックの名前を表示し、エントリの名前とメッセージと
<dl>
、<dt>
、及び<dd>
タグ:- ゲストブック
- <%=GuestbookLocalServiceUtil.getGuestbook(entry.getGuestbookId()).getName()%>
- 名前
- <%=entry.getName()%>
- メッセージ
- <%=entry.getMessage()%>
This is the same way you defined the page’s main content in
/guestbookwebportlet/full_content.jsp
. -
次に、
<liferay-ui:panel-container>
タグを使用してパネルコンテナを作成します。 このタグ内で、<liferay-ui:panel>
タグを使用して、コメントと評価コンポーネントを表示するパネルを作成します。<liferay-ui:panel-container extended="<%=false%>" id="guestbookCollaborationPanelContainer" persistState="<%=true%>"> <liferay-ui:panel collapsible="<%=true%>" extended="<%=true%>" id="guestbookCollaborationPanel" persistState="<%=true%>" title="Collaboration">
-
<liferay-ui:ratings>
タグで評価コンポーネントを追加します。<liferay-ui:ratings className="<%=Entry.class.getName()%>" classPK="<%=entry.getEntryId()%>" type="stars" /> <br />
-
次に、コメントディスカッションオブジェクトを取得するスクリプトレットを追加する必要があります。
<% Discussion discussion = CommentManagerUtil.getDiscussion(user.getUserId(), scopeGroupId, Entry.class.getName(), entry.getEntryId(), new ServiceContextFunction(request)); %>
-
その下に、コメントの数を追跡するためのタグを追加します。 <c:if test=“<%= discussion != null %>”> <liferay-ui:message arguments="<%= discussion.getDiscussionCommentsCount() %>"key = ’\ <%=(discussion.getDiscussionCommentsCount()== 1)? “x-comment”: “x-comments”%> ’>
-
liferay-comment:discussion
タグを作成します。これにより、コメントフォーム、 返信 ボタンが作成され、ディスカッションコンテンツが取得されます。 また、ポートレットアクションURLを作成することなく、コメントを投稿するフォームアクションを処理します。<pre><code> <liferay-comment:discussion className="<%= Entry.class.getName() %>" classPK ="<%= entry.getEntryId()%>" Discussion ="<%=ディスカッション%>" formName =" fm2 " ratingsEnabled =" true " redirect ="<%= currentURL %>" はuserId ="<%= entry.getUserId()%>" />
</liferay-ui:panel> </liferay-ui:panel-container>
-
ログインしているユーザーへのコメントや評価のアクセスを制限するために、パネル全体の容器をラップで
<c:if>
式テストタグ)themeDisplay.isSignedInを(
:<c:if test="<%= themeDisplay.isSignedIn() %>">
… パネルコンテナ… </c:if>
終了 </liferay-ui:panel-container>
タグの後に必ず終了 </c:if>
タグを追加してください。
<p spaces-before="0">
| <strong x-id="1">注:</strong> ディスカッション(コメント)は、メッセージボードメッセージとして実装されます。 で| <code>MBMessage</code> テーブルには、 <code>classPK</code> 列があります。 この <code>classPK</code> 表します|ゲストブックエントリの <code>entryId</code>、コメントをゲストブックにリンクします。 評価| <code>RatingsEntry</code> テーブルに保存されます。 同様に、 <code>RatingsEntry</code> テーブル|ゲストブックのエントリを評価にリンクする <code>classPK</code> 列が含まれています。 使用する|別の主キーを表す1つのテーブルの <code>classPK</code> 外部キー|テーブルはLiferay DXP全体で共通のパターンです。
</p>
<p spaces-before="0">
次に、新しいビューを使用するようにゲストブックアクションを更新します。
</p>
エントリアクションの更新JSP
view_entry.jsp
ページは現在孤立しています。 これを修正するには、[アクション]メニューに[ ビュー ]オプションを追加します。 開く /guestbookwebportlet/entry_actions.jsp
:次の行と検索
<liferay-ui:icon-menu>
その下に次の行を追加:
<portlet:renderURL var="viewEntryURL">
<portlet:param name="entryId"
value="<%= String.valueOf(entry.getEntryId()) %>"/>
<portlet:param name="mvcPath"
value="/guestbookwebportlet/view_entry.jsp" />
</portlet:renderURL>
<liferay-ui:icon message="View" url="<%= viewEntryURL.toString() %>" />
ここでは、 view_entry.jsp
を指すURLを作成します。 ゲストブックエントリの[アクション]メニューで[ ビュー ]オプションを選択して、このリンクをテストします。 次に、コメントと評価をテストします。
すばらしい\! ゲストブックおよびゲストブックエントリエンティティをアセット対応にし、両方のエンティティのタグ、カテゴリ、および関連アセットを有効にしました。 ゲストブックエントリエンティティのコメントと評価も有効にしました\! よくやった\!
次のタスクはWebサービスの生成です。 これにより、Guestbookアプリケーション用に他のクライアント(モバイルアプリケーションなど)を作成できます。