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