1
14
15 package com.liferay.portlet.tasks.social;
16
17 import com.liferay.portal.kernel.json.JSONFactoryUtil;
18 import com.liferay.portal.kernel.json.JSONObject;
19 import com.liferay.portal.kernel.util.HtmlUtil;
20 import com.liferay.portal.kernel.util.StringBundler;
21 import com.liferay.portal.kernel.util.StringPool;
22 import com.liferay.portal.kernel.util.Validator;
23 import com.liferay.portal.model.Group;
24 import com.liferay.portal.security.permission.ActionKeys;
25 import com.liferay.portal.security.permission.PermissionChecker;
26 import com.liferay.portal.service.GroupLocalServiceUtil;
27 import com.liferay.portal.theme.ThemeDisplay;
28 import com.liferay.portlet.social.model.BaseSocialActivityInterpreter;
29 import com.liferay.portlet.social.model.SocialActivity;
30 import com.liferay.portlet.social.model.SocialActivityFeedEntry;
31 import com.liferay.portlet.tasks.model.TasksProposal;
32 import com.liferay.portlet.tasks.service.TasksProposalLocalServiceUtil;
33 import com.liferay.portlet.tasks.service.permission.TasksProposalPermission;
34
35
40 public class TasksActivityInterpreter extends BaseSocialActivityInterpreter {
41
42 public String[] getClassNames() {
43 return _CLASS_NAMES;
44 }
45
46 protected SocialActivityFeedEntry doInterpret(
47 SocialActivity activity, ThemeDisplay themeDisplay)
48 throws Exception {
49
50 PermissionChecker permissionChecker =
51 themeDisplay.getPermissionChecker();
52
53 if (!TasksProposalPermission.contains(
54 permissionChecker, activity.getClassPK(), ActionKeys.VIEW)) {
55
56 return null;
57 }
58
59 String creatorUserName = getUserName(
60 activity.getUserId(), themeDisplay);
61 String receiverUserName = getUserName(
62 activity.getReceiverUserId(), themeDisplay);
63
64 int activityType = activity.getType();
65
66 JSONObject extraData = null;
67
68 if (Validator.isNotNull(activity.getExtraData())) {
69 extraData = JSONFactoryUtil.createJSONObject(
70 activity.getExtraData());
71 }
72
73
75 String groupName = StringPool.BLANK;
76
77 if (activity.getGroupId() != themeDisplay.getScopeGroupId()) {
78 Group group = GroupLocalServiceUtil.getGroup(activity.getGroupId());
79
80 groupName = group.getDescriptiveName();
81 }
82
83 String titlePattern = null;
84 Object[] titleArguments = null;
85
86 if (activityType == TasksActivityKeys.ADD_PROPOSAL) {
87 titlePattern = "activity-tasks-add-proposal";
88
89 if (Validator.isNotNull(groupName)) {
90 titlePattern += "-in";
91 }
92
93 titleArguments = new Object[] {
94 creatorUserName, HtmlUtil.escape(groupName)
95 };
96 }
97 else if (activityType == TasksActivityKeys.ASSIGN_PROPOSAL) {
98 titlePattern = "activity-tasks-assign-proposal";
99
100 if (Validator.isNotNull(groupName)) {
101 titlePattern += "-in";
102 }
103
104 titleArguments = new Object[] {
105 creatorUserName, receiverUserName, HtmlUtil.escape(groupName)
106 };
107 }
108 else if (activityType == TasksActivityKeys.REVIEW_PROPOSAL) {
109 titlePattern = "activity-tasks-review-proposal";
110
111 if (Validator.isNotNull(groupName)) {
112 titlePattern += "-in";
113 }
114
115 titleArguments = new Object[] {
116 creatorUserName, receiverUserName, HtmlUtil.escape(groupName)
117 };
118 }
119
120 String title = themeDisplay.translate(titlePattern, titleArguments);
121
122
124 TasksProposal proposal = TasksProposalLocalServiceUtil.getProposal(
125 activity.getClassPK());
126
127 StringBundler sb = new StringBundler();
128
129 sb.append("<b>");
130 sb.append(HtmlUtil.escape(proposal.getName()));
131 sb.append("</b> (");
132 sb.append(
133 themeDisplay.translate(
134 "model.resource." + proposal.getClassName()));
135 sb.append(")<br />");
136 sb.append(themeDisplay.translate("description"));
137 sb.append(": ");
138 sb.append(HtmlUtil.escape(proposal.getDescription()));
139
140 if (activityType != TasksActivityKeys.ADD_PROPOSAL) {
141 int stage = extraData.getInt("stage");
142 boolean completed = extraData.getBoolean("completed");
143 boolean rejected = extraData.getBoolean("rejected");
144
145 sb.append("<br />");
146 sb.append(themeDisplay.translate("stage"));
147 sb.append(": ");
148 sb.append(stage);
149 sb.append("<br />");
150 sb.append(themeDisplay.translate("status"));
151 sb.append(": ");
152
153 if (completed && rejected) {
154 sb.append(themeDisplay.translate("rejected"));
155 }
156 else if (completed && !rejected) {
157 sb.append(themeDisplay.translate("approved"));
158 }
159 else {
160 sb.append(themeDisplay.translate("awaiting-approval"));
161 }
162 }
163
164 String body = sb.toString();
165
166 return new SocialActivityFeedEntry(title, body);
167 }
168
169 private static final String[] _CLASS_NAMES = new String[] {
170 TasksProposal.class.getName()
171 };
172
173 }