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