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.StringMaker;
29 import com.liferay.portal.kernel.util.StringPool;
30 import com.liferay.portal.model.Group;
31 import com.liferay.portal.model.Image;
32 import com.liferay.portal.service.GroupLocalServiceUtil;
33 import com.liferay.portal.service.GroupServiceUtil;
34 import com.liferay.portal.service.impl.ImageLocalUtil;
35 import com.liferay.portal.theme.ThemeDisplay;
36 import com.liferay.portlet.imagegallery.model.IGFolder;
37 import com.liferay.portlet.imagegallery.model.IGImage;
38 import com.liferay.portlet.imagegallery.model.impl.IGFolderImpl;
39 import com.liferay.portlet.imagegallery.service.IGFolderLocalServiceUtil;
40 import com.liferay.portlet.imagegallery.service.IGFolderServiceUtil;
41 import com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil;
42 import com.liferay.portlet.imagegallery.service.IGImageServiceUtil;
43 import com.liferay.util.dao.hibernate.QueryUtil;
44
45 import java.io.File;
46
47 import java.util.LinkedHashMap;
48 import java.util.List;
49 import java.util.StringTokenizer;
50
51 import org.w3c.dom.Document;
52 import org.w3c.dom.Element;
53 import org.w3c.dom.Node;
54
55
61 public class ImageCommandReceiver extends BaseCommandReceiver {
62
63 protected String createFolder(CommandArgument arg) {
64 try {
65 Group group = GroupServiceUtil.getGroup(
66 arg.getCompanyId(), arg.getCurrentGroupName());
67
68 IGFolder folder = _getFolder(
69 group.getGroupId(), "/" + arg.getCurrentFolder());
70
71 IGFolderServiceUtil.addFolder(
72 arg.getPlid(), folder.getFolderId(), arg.getNewFolder(),
73 StringPool.BLANK, true, true);
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 = GroupServiceUtil.getGroup(
87 arg.getCompanyId(), arg.getCurrentGroupName());
88
89 IGFolder folder = _getFolder(
90 group.getGroupId(), arg.getCurrentFolder());
91
92 IGImageServiceUtil.addImage(
93 folder.getFolderId(), fileName, file, extension, new String[0],
94 true, true);
95 }
96 catch (Exception e) {
97 throw new FCKException(e);
98 }
99
100 return "0";
101 }
102
103 protected void getFolders(CommandArgument arg, Node root, Document doc) {
104 try {
105 _getFolders(arg, root, doc);
106 }
107 catch (Exception e) {
108 throw new FCKException(e);
109 }
110 }
111
112 protected void getFoldersAndFiles(
113 CommandArgument arg, Node root, Document doc) {
114
115 try {
116 _getFolders(arg, root, doc);
117 _getFiles(arg, root, doc);
118 }
119 catch (Exception e) {
120 throw new FCKException(e);
121 }
122 }
123
124 private void _getFiles(CommandArgument arg, Node root, Document doc)
125 throws Exception {
126
127 Element filesEl = doc.createElement("Files");
128
129 root.appendChild(filesEl);
130
131 if (!arg.getCurrentGroupName().equals("")) {
132 Group group = GroupServiceUtil.getGroup(
133 arg.getCompanyId(), arg.getCurrentGroupName());
134
135 IGFolder folder = _getFolder(
136 group.getGroupId(), arg.getCurrentFolder());
137
138 List images = IGImageLocalServiceUtil.getImages(
139 folder.getFolderId());
140
141 for (int i = 0; i < images.size(); i++) {
142 IGImage image = (IGImage)images.get(i);
143
144 long largeImageId = image.getLargeImageId();
145
146 Image portalImage = ImageLocalUtil.getImageOrDefault(
147 largeImageId);
148
149 Element fileEl = doc.createElement("File");
150
151 filesEl.appendChild(fileEl);
152
153 fileEl.setAttribute("name", String.valueOf(image.getImageId()));
154 fileEl.setAttribute("desc", image.getDescription());
155 fileEl.setAttribute("size", getSize(portalImage.getSize()));
156
157 StringMaker url = new StringMaker();
158
159 ThemeDisplay themeDisplay = arg.getThemeDisplay();
160
161 url.append(themeDisplay.getPathContext());
162 url.append("/image/image_gallery?img_id=");
163 url.append(largeImageId);
164 url.append("&t=");
165 url.append(ImageServletTokenUtil.getToken(largeImageId));
166
167 fileEl.setAttribute("url", url.toString());
168 }
169 }
170 }
171
172 private IGFolder _getFolder(long groupId, String folderName)
173 throws Exception {
174
175 IGFolder folder = new IGFolderImpl();
176
177 folder.setFolderId(IGFolderImpl.DEFAULT_PARENT_FOLDER_ID);
178
179 if (!folderName.equals("/")) {
180 StringTokenizer st = new StringTokenizer(folderName, "/");
181
182 while (st.hasMoreTokens()) {
183 String curFolderName = (String)st.nextToken();
184
185 List folders = IGFolderLocalServiceUtil.getFolders(
186 groupId, folder.getFolderId());
187
188 for (int i = 0; i < folders.size(); i++) {
189 IGFolder curFolder = (IGFolder)folders.get(i);
190
191 if (curFolder.getName().equals(curFolderName)) {
192 folder = curFolder;
193
194 break;
195 }
196 }
197 }
198 }
199
200 return folder;
201 }
202
203 private void _getFolders(CommandArgument arg, Node root, Document doc)
204 throws Exception {
205
206 Element foldersEl = doc.createElement("Folders");
207
208 root.appendChild(foldersEl);
209
210 if (arg.getCurrentFolder().equals("/")) {
211 LinkedHashMap groupParams = new LinkedHashMap();
212
213 groupParams.put("usersGroups", new Long(arg.getUserId()));
214
215 List groups = GroupLocalServiceUtil.search(
216 arg.getCompanyId(), null, null, groupParams, QueryUtil.ALL_POS,
217 QueryUtil.ALL_POS);
218
219 for (int i = 0; i < groups.size(); ++i) {
220 Group group = (Group)groups.get(i);
221
222 Element folderEl = doc.createElement("Folder");
223
224 foldersEl.appendChild(folderEl);
225
226 folderEl.setAttribute("name", group.getName());
227 }
228 }
229 else {
230 Group group = GroupServiceUtil.getGroup(
231 arg.getCompanyId(), arg.getCurrentGroupName());
232
233 IGFolder folder = _getFolder(
234 group.getGroupId(), arg.getCurrentFolder());
235
236 List folders = IGFolderLocalServiceUtil.getFolders(
237 group.getGroupId(), folder.getFolderId());
238
239 for (int i = 0; i < folders.size(); i++) {
240 folder = (IGFolder) folders.get(i);
241
242 Element folderEl = doc.createElement("Folder");
243
244 foldersEl.appendChild(folderEl);
245
246 folderEl.setAttribute("name", folder.getName());
247 }
248 }
249 }
250
251 }