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.StringPool;
28 import com.liferay.portal.kernel.util.Validator;
29 import com.liferay.portal.model.Group;
30 import com.liferay.portal.security.permission.ActionKeys;
31 import com.liferay.portal.security.permission.PermissionChecker;
32 import com.liferay.portal.service.GroupLocalServiceUtil;
33 import com.liferay.portal.theme.ThemeDisplay;
34 import com.liferay.portlet.social.model.BaseSocialActivityInterpreter;
35 import com.liferay.portlet.social.model.SocialActivity;
36 import com.liferay.portlet.social.model.SocialActivityFeedEntry;
37 import com.liferay.portlet.tasks.model.TasksProposal;
38 import com.liferay.portlet.tasks.service.TasksProposalLocalServiceUtil;
39 import com.liferay.portlet.tasks.service.permission.TasksProposalPermission;
40
41
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[] {creatorUserName, groupName};
101 }
102 else if (activityType == TasksActivityKeys.ASSIGN_PROPOSAL) {
103 titlePattern = "activity-tasks-assign-proposal";
104
105 if (Validator.isNotNull(groupName)) {
106 titlePattern += "-in";
107 }
108
109 titleArguments = new Object[] {
110 creatorUserName, receiverUserName, groupName
111 };
112 }
113 else if (activityType == TasksActivityKeys.REVIEW_PROPOSAL) {
114 titlePattern = "activity-tasks-review-proposal";
115
116 if (Validator.isNotNull(groupName)) {
117 titlePattern += "-in";
118 }
119
120 titleArguments = new Object[] {
121 creatorUserName, receiverUserName, groupName
122 };
123 }
124
125 String title = themeDisplay.translate(titlePattern, titleArguments);
126
127
129 TasksProposal proposal = TasksProposalLocalServiceUtil.getProposal(
130 activity.getClassPK());
131
132 StringBuilder sb = new StringBuilder();
133
134 sb.append("<b>");
135 sb.append(proposal.getName());
136 sb.append("</b> (");
137 sb.append(
138 themeDisplay.translate(
139 "model.resource." + proposal.getClassName()));
140 sb.append(")<br />");
141 sb.append(themeDisplay.translate("description"));
142 sb.append(": ");
143 sb.append(proposal.getDescription());
144
145 if (activityType != TasksActivityKeys.ADD_PROPOSAL) {
146 int stage = extraData.getInt("stage");
147 boolean completed = extraData.getBoolean("completed");
148 boolean rejected = extraData.getBoolean("rejected");
149
150 sb.append("<br />");
151 sb.append(themeDisplay.translate("stage"));
152 sb.append(": ");
153 sb.append(stage);
154 sb.append("<br />");
155 sb.append(themeDisplay.translate("status"));
156 sb.append(": ");
157
158 if (completed && rejected) {
159 sb.append(themeDisplay.translate("rejected"));
160 }
161 else if (completed && !rejected) {
162 sb.append(themeDisplay.translate("approved"));
163 }
164 else {
165 sb.append(themeDisplay.translate("awaiting-approval"));
166 }
167 }
168
169 String body = sb.toString();
170
171 return new SocialActivityFeedEntry(title, body);
172 }
173
174 private static final String[] _CLASS_NAMES = new String[] {
175 TasksProposal.class.getName()
176 };
177
178 }