001
014
015 package com.liferay.portlet.journal.social;
016
017 import com.liferay.portal.kernel.util.Validator;
018 import com.liferay.portal.model.Layout;
019 import com.liferay.portal.security.permission.ActionKeys;
020 import com.liferay.portal.security.permission.PermissionChecker;
021 import com.liferay.portal.service.ServiceContext;
022 import com.liferay.portal.util.PortalUtil;
023 import com.liferay.portlet.journal.model.JournalArticle;
024 import com.liferay.portlet.journal.model.JournalArticleConstants;
025 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
026 import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
027 import com.liferay.portlet.journal.service.permission.JournalFolderPermission;
028 import com.liferay.portlet.social.model.BaseSocialActivityInterpreter;
029 import com.liferay.portlet.social.model.SocialActivity;
030 import com.liferay.portlet.social.model.SocialActivityConstants;
031
032
036 public class JournalArticleActivityInterpreter
037 extends BaseSocialActivityInterpreter {
038
039 @Override
040 public String[] getClassNames() {
041 return _CLASS_NAMES;
042 }
043
044 @Override
045 protected String getPath(
046 SocialActivity activity, ServiceContext serviceContext)
047 throws Exception {
048
049 JournalArticle article =
050 JournalArticleLocalServiceUtil.getLatestArticle(
051 activity.getClassPK());
052
053 Layout layout = article.getLayout();
054
055 if (layout != null) {
056 String groupFriendlyURL = PortalUtil.getGroupFriendlyURL(
057 layout.getLayoutSet(), serviceContext.getThemeDisplay());
058
059 return groupFriendlyURL.concat(
060 JournalArticleConstants.CANONICAL_URL_SEPARATOR).concat(
061 article.getUrlTitle());
062 }
063
064 return null;
065 }
066
067 @Override
068 protected String getTitlePattern(
069 String groupName, SocialActivity activity) {
070
071 int activityType = activity.getType();
072
073 if (activityType == JournalActivityKeys.ADD_ARTICLE) {
074 if (Validator.isNull(groupName)) {
075 return "activity-journal-article-add-web-content";
076 }
077 else {
078 return "activity-journal-article-add-web-content-in";
079 }
080 }
081 else if (activityType == JournalActivityKeys.UPDATE_ARTICLE) {
082 if (Validator.isNull(groupName)) {
083 return "activity-journal-article-update-web-content";
084 }
085 else {
086 return "activity-journal-article-update-web-content-in";
087 }
088 }
089 else if (activityType == SocialActivityConstants.TYPE_MOVE_TO_TRASH) {
090 if (Validator.isNull(groupName)) {
091 return "activity-journal-article-move-to-trash";
092 }
093 else {
094 return "activity-journal-article-move-to-trash-in";
095 }
096 }
097 else if (activityType ==
098 SocialActivityConstants.TYPE_RESTORE_FROM_TRASH) {
099
100 if (Validator.isNull(groupName)) {
101 return "activity-journal-article-restore-from-trash";
102 }
103 else {
104 return "activity-journal-article-restore-from-trash-in";
105 }
106 }
107
108 return null;
109 }
110
111 @Override
112 protected boolean hasPermissions(
113 PermissionChecker permissionChecker, SocialActivity activity,
114 String actionId, ServiceContext serviceContext)
115 throws Exception {
116
117 int activityType = activity.getType();
118
119 if (activityType == JournalActivityKeys.ADD_ARTICLE) {
120 JournalArticle article =
121 JournalArticleLocalServiceUtil.getLatestArticle(
122 activity.getClassPK());
123
124 return JournalFolderPermission.contains(
125 permissionChecker, article.getGroupId(), article.getFolderId(),
126 ActionKeys.ADD_ARTICLE);
127 }
128 else if (activityType == JournalActivityKeys.UPDATE_ARTICLE) {
129 return JournalArticlePermission.contains(
130 permissionChecker, activity.getClassPK(), ActionKeys.UPDATE);
131 }
132
133 return JournalArticlePermission.contains(
134 permissionChecker, activity.getClassPK(), actionId);
135 }
136
137 private static final String[] _CLASS_NAMES =
138 {JournalArticle.class.getName()};
139
140 }