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