1
19
20 package com.liferay.portal.editor.fckeditor.receiver.impl;
21
22 import com.liferay.portal.editor.fckeditor.command.CommandArgument;
23 import com.liferay.portal.editor.fckeditor.exception.FCKException;
24 import com.liferay.portal.kernel.servlet.ImageServletTokenUtil;
25 import com.liferay.portal.kernel.util.StringPool;
26 import com.liferay.portal.kernel.util.Validator;
27 import com.liferay.portal.model.Group;
28 import com.liferay.portal.model.Image;
29 import com.liferay.portal.service.ImageLocalServiceUtil;
30 import com.liferay.portal.theme.ThemeDisplay;
31 import com.liferay.portlet.imagegallery.model.IGFolder;
32 import com.liferay.portlet.imagegallery.model.IGImage;
33 import com.liferay.portlet.imagegallery.model.impl.IGFolderImpl;
34 import com.liferay.portlet.imagegallery.service.IGFolderServiceUtil;
35 import com.liferay.portlet.imagegallery.service.IGImageServiceUtil;
36
37 import java.io.File;
38
39 import java.util.List;
40 import java.util.StringTokenizer;
41
42 import org.w3c.dom.Document;
43 import org.w3c.dom.Element;
44 import org.w3c.dom.Node;
45
46
52 public class ImageCommandReceiver extends BaseCommandReceiver {
53
54 protected String createFolder(CommandArgument arg) {
55 try {
56 Group group = arg.getCurrentGroup();
57
58 IGFolder folder = _getFolder(
59 group.getGroupId(), StringPool.SLASH + arg.getCurrentFolder());
60
61 long plid = arg.getPlid();
62 long parentFolderId = folder.getFolderId();
63 String name = arg.getNewFolder();
64 String description = StringPool.BLANK;
65 boolean addCommunityPermissions = true;
66 boolean addGuestPermissions = true;
67
68 IGFolderServiceUtil.addFolder(
69 plid, parentFolderId, name, description,
70 addCommunityPermissions, addGuestPermissions);
71 }
72 catch (Exception e) {
73 throw new FCKException(e);
74 }
75
76 return "0";
77 }
78
79 protected String fileUpload(
80 CommandArgument arg, String fileName, File file, String extension) {
81
82 try {
83 Group group = arg.getCurrentGroup();
84
85 IGFolder folder = _getFolder(
86 group.getGroupId(), arg.getCurrentFolder());
87
88 long folderId = folder.getFolderId();
89 String name = fileName;
90 String description = StringPool.BLANK;
91 String contentType = extension.toLowerCase();
92 String[] tagsEntries = null;
93 boolean addCommunityPermissions = true;
94 boolean addGuestPermissions = true;
95
96 IGImageServiceUtil.addImage(
97 folderId, name, description, file, contentType, tagsEntries,
98 addCommunityPermissions, addGuestPermissions);
99 }
100 catch (Exception e) {
101 throw new FCKException(e);
102 }
103
104 return "0";
105 }
106
107 protected void getFolders(CommandArgument arg, Document doc, Node root) {
108 try {
109 _getFolders(arg, doc, root);
110 }
111 catch (Exception e) {
112 throw new FCKException(e);
113 }
114 }
115
116 protected void getFoldersAndFiles(
117 CommandArgument arg, Document doc, Node root) {
118
119 try {
120 _getFolders(arg, doc, root);
121 _getFiles(arg, doc, root);
122 }
123 catch (Exception e) {
124 throw new FCKException(e);
125 }
126 }
127
128 private void _getFiles(CommandArgument arg, Document doc, Node root)
129 throws Exception {
130
131 Element filesEl = doc.createElement("Files");
132
133 root.appendChild(filesEl);
134
135 if (Validator.isNull(arg.getCurrentGroupName())) {
136 return;
137 }
138
139 Group group = arg.getCurrentGroup();
140
141 IGFolder folder = _getFolder(
142 group.getGroupId(), arg.getCurrentFolder());
143
144 List<IGImage> images = IGImageServiceUtil.getImages(
145 folder.getFolderId());
146
147 for (IGImage image : images) {
148 long largeImageId = image.getLargeImageId();
149
150 Image portalImage = ImageLocalServiceUtil.getImageOrDefault(
151 largeImageId);
152
153 Element fileEl = doc.createElement("File");
154
155 filesEl.appendChild(fileEl);
156
157 fileEl.setAttribute("name", image.getNameWithExtension());
158 fileEl.setAttribute("desc", image.getNameWithExtension());
159 fileEl.setAttribute("size", getSize(portalImage.getSize()));
160
161 StringBuilder url = new StringBuilder();
162
163 ThemeDisplay themeDisplay = arg.getThemeDisplay();
164
165 url.append(themeDisplay.getPathImage());
166 url.append("/image_gallery?uuid=");
167 url.append(image.getUuid());
168 url.append("&groupId=");
169 url.append(folder.getGroupId());
170 url.append("&t=");
171 url.append(ImageServletTokenUtil.getToken(largeImageId));
172
173 fileEl.setAttribute("url", url.toString());
174 }
175 }
176
177 private IGFolder _getFolder(long groupId, String folderName)
178 throws Exception {
179
180 IGFolder folder = new IGFolderImpl();
181
182 folder.setFolderId(IGFolderImpl.DEFAULT_PARENT_FOLDER_ID);
183
184 if (folderName.equals(StringPool.SLASH)) {
185 return folder;
186 }
187
188 StringTokenizer st = new StringTokenizer(folderName, StringPool.SLASH);
189
190 while (st.hasMoreTokens()) {
191 String curFolderName = st.nextToken();
192
193 List<IGFolder> folders = IGFolderServiceUtil.getFolders(
194 groupId, folder.getFolderId());
195
196 for (IGFolder curFolder : folders) {
197 if (curFolder.getName().equals(curFolderName)) {
198 folder = curFolder;
199
200 break;
201 }
202 }
203 }
204
205 return folder;
206 }
207
208 private void _getFolders(CommandArgument arg, Document doc, Node root)
209 throws Exception {
210
211 Element foldersEl = doc.createElement("Folders");
212
213 root.appendChild(foldersEl);
214
215 if (arg.getCurrentFolder().equals(StringPool.SLASH)) {
216 getRootFolders(arg, doc, foldersEl);
217 }
218 else {
219 Group group = arg.getCurrentGroup();
220
221 IGFolder folder = _getFolder(
222 group.getGroupId(), arg.getCurrentFolder());
223
224 List<IGFolder> folders = IGFolderServiceUtil.getFolders(
225 group.getGroupId(), folder.getFolderId());
226
227 for (IGFolder curFolder : folders) {
228 Element folderEl = doc.createElement("Folder");
229
230 foldersEl.appendChild(folderEl);
231
232 folderEl.setAttribute("name", curFolder.getName());
233 }
234 }
235 }
236
237 }