001
014
015 package com.liferay.portlet.journal.action;
016
017 import com.liferay.portal.kernel.language.LanguageUtil;
018 import com.liferay.portal.kernel.upload.UploadServletRequest;
019 import com.liferay.portal.kernel.util.ArrayUtil;
020 import com.liferay.portal.kernel.util.Constants;
021 import com.liferay.portal.kernel.util.FileUtil;
022 import com.liferay.portal.kernel.util.ParamUtil;
023 import com.liferay.portal.kernel.util.StringPool;
024 import com.liferay.portal.kernel.util.StringUtil;
025 import com.liferay.portal.kernel.util.Validator;
026 import com.liferay.portal.kernel.xml.Document;
027 import com.liferay.portal.kernel.xml.Element;
028 import com.liferay.portal.kernel.xml.SAXReaderUtil;
029 import com.liferay.portal.model.User;
030 import com.liferay.portal.service.ImageLocalServiceUtil;
031 import com.liferay.portal.theme.ThemeDisplay;
032 import com.liferay.portal.util.PortalUtil;
033 import com.liferay.portal.util.WebKeys;
034 import com.liferay.portal.webserver.WebServerServletTokenUtil;
035 import com.liferay.portlet.journal.model.JournalArticle;
036 import com.liferay.portlet.journal.model.JournalArticleConstants;
037 import com.liferay.portlet.journal.model.impl.JournalArticleImpl;
038 import com.liferay.portlet.journal.service.JournalArticleImageLocalServiceUtil;
039 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
040 import com.liferay.portlet.journal.service.JournalArticleServiceUtil;
041 import com.liferay.portlet.journal.util.JournalUtil;
042
043 import java.io.File;
044
045 import java.util.Date;
046 import java.util.List;
047 import java.util.Map;
048
049 import javax.servlet.http.HttpServletRequest;
050 import javax.servlet.http.HttpServletResponse;
051
052 import org.apache.struts.action.Action;
053 import org.apache.struts.action.ActionForm;
054 import org.apache.struts.action.ActionForward;
055 import org.apache.struts.action.ActionMapping;
056
057
062 @Deprecated
063 public class ViewArticleContentAction extends Action {
064
065 @Override
066 public ActionForward execute(
067 ActionMapping actionMapping, ActionForm actionForm,
068 HttpServletRequest request, HttpServletResponse response)
069 throws Exception {
070
071 UploadServletRequest uploadServletRequest = null;
072
073 try {
074 String cmd = ParamUtil.getString(request, Constants.CMD);
075
076 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
077 WebKeys.THEME_DISPLAY);
078
079 long groupId = ParamUtil.getLong(request, "groupId");
080 String articleId = ParamUtil.getString(request, "articleId");
081 double version = ParamUtil.getDouble(
082 request, "version", JournalArticleConstants.VERSION_DEFAULT);
083
084 String languageId = LanguageUtil.getLanguageId(request);
085
086 String output = null;
087
088 if (cmd.equals(Constants.PREVIEW)) {
089 uploadServletRequest = PortalUtil.getUploadServletRequest(
090 request);
091
092 String title = ParamUtil.getString(
093 uploadServletRequest, "title");
094 String description = ParamUtil.getString(
095 uploadServletRequest, "description");
096 String type = ParamUtil.getString(uploadServletRequest, "type");
097 String structureId = ParamUtil.getString(
098 uploadServletRequest, "structureId");
099 String templateId = ParamUtil.getString(
100 uploadServletRequest, "templateId");
101
102 Date now = new Date();
103
104 Date createDate = now;
105 Date modifiedDate = now;
106 Date displayDate = now;
107
108 User user = PortalUtil.getUser(uploadServletRequest);
109
110 String xml = ParamUtil.getString(uploadServletRequest, "xml");
111
112 Document doc = SAXReaderUtil.read(xml);
113
114 Element root = doc.getRootElement();
115
116 String previewArticleId =
117 "PREVIEW_" + StringUtil.randomString(10);
118
119 format(
120 groupId, articleId, version, previewArticleId, root,
121 uploadServletRequest);
122
123 Map<String, String> tokens = JournalUtil.getTokens(
124 groupId, themeDisplay);
125
126 tokens.put("article_resource_pk", "-1");
127
128 JournalArticle article = new JournalArticleImpl();
129
130 article.setGroupId(groupId);
131 article.setCompanyId(user.getCompanyId());
132 article.setUserId(user.getUserId());
133 article.setUserName(user.getFullName());
134 article.setCreateDate(createDate);
135 article.setModifiedDate(modifiedDate);
136 article.setArticleId(articleId);
137 article.setVersion(version);
138 article.setTitle(title);
139 article.setDescription(description);
140 article.setContent(xml);
141 article.setType(type);
142 article.setStructureId(structureId);
143 article.setTemplateId(templateId);
144 article.setDisplayDate(displayDate);
145
146 output = JournalArticleLocalServiceUtil.getArticleContent(
147 article, templateId, null, languageId, themeDisplay);
148 }
149 else if (cmd.equals(Constants.VIEW)) {
150 JournalArticle article = JournalArticleServiceUtil.getArticle(
151 groupId, articleId, version);
152
153 output = JournalArticleLocalServiceUtil.getArticleContent(
154 article, article.getTemplateId(), null, languageId,
155 themeDisplay);
156 }
157 else {
158 output = JournalArticleServiceUtil.getArticleContent(
159 groupId, articleId, version, languageId, themeDisplay);
160 }
161
162 request.setAttribute(WebKeys.JOURNAL_ARTICLE_CONTENT, output);
163
164 if (output.startsWith("<?xml ")) {
165 return actionMapping.findForward(
166 "portlet.journal.raw_article_content");
167 }
168 else {
169 return actionMapping.findForward(
170 "portlet.journal.view_article_content");
171 }
172 }
173 catch (Exception e) {
174 PortalUtil.sendError(e, request, response);
175
176 return null;
177 }
178 finally {
179 if (uploadServletRequest != null) {
180 uploadServletRequest.cleanUp();
181 }
182 }
183 }
184
185 protected void format(
186 long groupId, String articleId, double version,
187 String previewArticleId, Element root,
188 UploadServletRequest uploadServletRequest)
189 throws Exception {
190
191 List<Element> elements = root.elements();
192
193 for (Element element : elements) {
194 Element dynamicContent = element.element("dynamic-content");
195
196 String elInstanceId = element.attributeValue(
197 "instance-id", StringPool.BLANK);
198 String elName = element.attributeValue("name", StringPool.BLANK);
199 String elType = element.attributeValue("type", StringPool.BLANK);
200 String elContent = StringPool.BLANK;
201 String elLanguage = StringPool.BLANK;
202
203 if (dynamicContent != null) {
204 elContent = dynamicContent.getTextTrim();
205
206 elLanguage = dynamicContent.attributeValue(
207 "language-id", StringPool.BLANK);
208
209 if (!elLanguage.equals(StringPool.BLANK)) {
210 elLanguage = "_" + elLanguage;
211 }
212 }
213
214 if (elType.equals("image") && Validator.isNull(elContent)) {
215 File file = uploadServletRequest.getFile(
216 "structure_image_" + elName + elLanguage);
217 byte[] bytes = FileUtil.getBytes(file);
218
219 if (ArrayUtil.isNotEmpty(bytes)) {
220 long imageId =
221 JournalArticleImageLocalServiceUtil.getArticleImageId(
222 groupId, previewArticleId, version, elInstanceId,
223 elName, elLanguage, true);
224
225 String token = WebServerServletTokenUtil.getToken(imageId);
226
227 dynamicContent.setText(
228 "/image/journal/article?img_id=" + imageId + "&t=" +
229 token);
230
231 ImageLocalServiceUtil.updateImage(imageId, bytes);
232 }
233 else {
234 if (Validator.isNotNull(articleId)) {
235 long imageId =
236 JournalArticleImageLocalServiceUtil.
237 getArticleImageId(
238 groupId, articleId, version, elInstanceId,
239 elName, elLanguage);
240
241 String token = WebServerServletTokenUtil.getToken(
242 imageId);
243
244 dynamicContent.setText(
245 "/image/journal/article?img_id=" + imageId +
246 "&t=" + token);
247 }
248 }
249 }
250
251 format(
252 groupId, articleId, version, previewArticleId, element,
253 uploadServletRequest);
254 }
255 }
256
257 }