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.kernel.util.Validator;
31 import com.liferay.portal.model.Group;
32 import com.liferay.portal.model.Image;
33 import com.liferay.portal.service.impl.ImageLocalUtil;
34 import com.liferay.portal.theme.ThemeDisplay;
35 import com.liferay.portlet.imagegallery.model.IGFolder;
36 import com.liferay.portlet.imagegallery.model.IGImage;
37 import com.liferay.portlet.imagegallery.model.impl.IGFolderImpl;
38 import com.liferay.portlet.imagegallery.service.IGFolderLocalServiceUtil;
39 import com.liferay.portlet.imagegallery.service.IGFolderServiceUtil;
40 import com.liferay.portlet.imagegallery.service.IGImageServiceUtil;
41
42 import java.io.File;
43
44 import java.util.List;
45 import java.util.StringTokenizer;
46
47 import org.w3c.dom.Document;
48 import org.w3c.dom.Element;
49 import org.w3c.dom.Node;
50
51
57 public class ImageCommandReceiver extends BaseCommandReceiver {
58
59 protected String createFolder(CommandArgument arg) {
60 try {
61 Group group = arg.getCurrentGroup();
62
63 IGFolder folder = _getFolder(
64 group.getGroupId(), StringPool.SLASH + arg.getCurrentFolder());
65
66 long plid = arg.getPlid();
67 long parentFolderId = folder.getFolderId();
68 String name = arg.getNewFolder();
69 String description = StringPool.BLANK;
70 boolean addCommunityPermissions = true;
71 boolean addGuestPermissions = true;
72
73 IGFolderServiceUtil.addFolder(
74 plid, parentFolderId, name, description,
75 addCommunityPermissions, addGuestPermissions);
76 }
77 catch (Exception e) {
78 throw new FCKException(e);
79 }
80
81 return "0";
82 }
83
84 protected String fileUpload(
85 CommandArgument arg, String fileName, File file, String extension) {
86
87 try {
88 Group group = arg.getCurrentGroup();
89
90 IGFolder folder = _getFolder(
91 group.getGroupId(), arg.getCurrentFolder());
92
93 long folderId = folder.getFolderId();
94 String name = fileName;
95 String description = StringPool.BLANK;
96 String contentType = extension.toLowerCase();
97 String[] tagsEntries = null;
98 boolean addCommunityPermissions = true;
99 boolean addGuestPermissions = true;
100
101 IGImageServiceUtil.addImage(
102 folderId, name, description, file, contentType, tagsEntries,
103 addCommunityPermissions, addGuestPermissions);
104 }
105 catch (Exception e) {
106 throw new FCKException(e);
107 }
108
109 return "0";
110 }
111
112 protected void getFolders(CommandArgument arg, Document doc, Node root) {
113 try {
114 _getFolders(arg, doc, root);
115 }
116 catch (Exception e) {
117 throw new FCKException(e);
118 }
119 }
120
121 protected void getFoldersAndFiles(
122 CommandArgument arg, Document doc, Node root) {
123
124 try {
125 _getFolders(arg, doc, root);
126 _getFiles(arg, doc, root);
127 }
128 catch (Exception e) {
129 throw new FCKException(e);
130 }
131 }
132
133 private void _getFiles(CommandArgument arg, Document doc, Node root)
134 throws Exception {
135
136 Element filesEl = doc.createElement("Files");
137
138 root.appendChild(filesEl);
139
140 if (Validator.isNull(arg.getCurrentGroupName())) {
141 return;
142 }
143
144 Group group = arg.getCurrentGroup();
145
146 IGFolder folder = _getFolder(
147 group.getGroupId(), arg.getCurrentFolder());
148
149 List<IGImage> images = IGImageServiceUtil.getImages(
150 folder.getFolderId());
151
152 for (IGImage image : images) {
153 long largeImageId = image.getLargeImageId();
154
155 Image portalImage = ImageLocalUtil.getImageOrDefault(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 StringMaker url = new StringMaker();
166
167 ThemeDisplay themeDisplay = arg.getThemeDisplay();
168
169 url.append(themeDisplay.getPathContext());
170 url.append("/image/image_gallery?img_id=");
171 url.append(largeImageId);
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 = IGFolderLocalServiceUtil.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 = IGFolderLocalServiceUtil.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 }