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