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