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