KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opencms > workplace > CmsAdminExtLinkGalleries


1 /*
2 * File : $Source: /usr/local/cvs/opencms/src-modules/com/opencms/workplace/CmsAdminExtLinkGalleries.java,v $
3 * Date : $Date: 2005/06/27 23:22:07 $
4 * Version: $Revision: 1.5 $
5 *
6 * This library is part of OpenCms -
7 * the Open Source Content Mananagement System
8 *
9 * Copyright (C) 2001 The OpenCms Group
10 *
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public
13 * License as published by the Free Software Foundation; either
14 * version 2.1 of the License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Lesser General Public License for more details.
20 *
21 * For further information about OpenCms, please see the
22 * OpenCms Website: http://www.opencms.org
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with this library; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 */

28
29 package com.opencms.workplace;
30
31 import org.opencms.file.CmsFolder;
32 import org.opencms.file.CmsObject;
33 import org.opencms.file.CmsPropertyDefinition;
34 import org.opencms.file.CmsResource;
35 import org.opencms.file.types.CmsResourceTypeFolder;
36 import org.opencms.file.types.CmsResourceTypePointer;
37 import org.opencms.main.CmsException;
38 import org.opencms.workplace.CmsWorkplace;
39
40 import com.opencms.core.I_CmsSession;
41 import com.opencms.legacy.CmsLegacyException;
42 import com.opencms.legacy.CmsXmlTemplateLoader;
43
44 import java.util.ArrayList JavaDoc;
45 import java.util.Collections JavaDoc;
46 import java.util.Hashtable JavaDoc;
47 import java.util.List JavaDoc;
48
49 /**
50  * Template Class for administration of picture galleries
51  * <p>
52  *
53  * @author Edna Falkenhan
54  * @version $Revision: 1.5 $ $Date: 2005/06/27 23:22:07 $
55  * @see com.opencms.workplace.CmsXmlWpTemplateFile
56  *
57  * @deprecated Will not be supported past the OpenCms 6 release.
58  */

59
60 public class CmsAdminExtLinkGalleries extends CmsAdminGallery {
61
62     /**
63      * This method must be implemented by all galleries.
64      * It must return the path to the gallery root folder.<p>
65      */

66     public String JavaDoc getGalleryPath() {
67         return CmsWorkplaceDefault.C_VFS_GALLERY_EXTERNALLINKS;
68     }
69     
70     /**
71      * This method must return the path to the gallery icon.<p>
72      *
73      * The gallery image is displayed in the list of available galleries.
74      *
75      * @param cms The current CmsObject
76      * @return The path to the gallery icon
77      * @throws CmsException In case of problem accessing system resources
78      */

79     public String JavaDoc getGalleryIconPath(CmsObject cms) throws CmsException {
80         CmsXmlWpConfigFile config = this.getConfigFile(cms);
81         return config.getWpPicturePath() + "ic_file_extlinkgallery.gif";
82     }
83         
84     /**
85      * Default XMLTemplate method called to build the output,
86      *
87      * @param cms CmsObject for accessing system resources
88      * @param templateFile Filename of the template file
89      * @param elementName Element name of this template in our parent template
90      * @param parameters Hashtable with all template class parameters
91      * @param templateSelector template section that should be processed
92      *
93      * @return A HTML String converted to bytes that contains the generated output
94      */

95     public byte[] getContent(CmsObject cms, String JavaDoc templateFile, String JavaDoc elementName,
96             Hashtable JavaDoc parameters, String JavaDoc templateSelector) throws CmsException {
97                 
98         I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true);
99         CmsXmlWpTemplateFile xmlTemplateDocument = (CmsXmlWpTemplateFile)getOwnTemplateFile(cms,
100                 templateFile, elementName, parameters, templateSelector);
101
102         // Get the URL to which we need to return when we're done
103
String JavaDoc lasturl = getLastUrl(cms, parameters);
104         
105         // Check if this is the inital call to the page
106
String JavaDoc initial = getInitial(session, parameters) ;
107         
108         // Get the folder for the gallery
109
String JavaDoc foldername = getGalleryPath(cms, session, parameters);
110         CmsFolder thefolder = cms.readFolder(foldername);
111         
112         // Check if we must redirect to head_1
113
if(foldername.equals(CmsWorkplaceDefault.C_VFS_GALLERY_EXTERNALLINKS) && templateFile.endsWith("administration_head_extlinkgalleries2")) {
114             // we are in the wrong head - use the first one
115
xmlTemplateDocument = (CmsXmlWpTemplateFile)getOwnTemplateFile(cms, CmsWorkplace.VFS_PATH_WORKPLACE + "administration/externallinksgallery/administration_head_extlinkgalleries1", elementName, parameters, templateSelector);
116         }
117         
118         // Check if we must redirect to head_2
119
try {
120             String JavaDoc parent = CmsResource.getParentFolder(cms.getSitePath(thefolder));
121             if(foldername.startsWith(CmsWorkplaceDefault.C_VFS_GALLERY_EXTERNALLINKS) && (parent.equals(CmsWorkplaceDefault.C_VFS_GALLERY_EXTERNALLINKS)) && templateFile.endsWith("administration_head_extlinkgalleries1")) {
122                 // we are in the wrong head - use the second one
123
xmlTemplateDocument = (CmsXmlWpTemplateFile)getOwnTemplateFile(cms, CmsWorkplace.VFS_PATH_WORKPLACE + "administration/htmlgallery/administration_head_extlinkgalleries2", elementName, parameters, templateSelector);
124             }
125         }
126         catch(Exception JavaDoc e) {}
127
128         // Now read further parameters
129
String JavaDoc action = (String JavaDoc)parameters.get("action");
130         String JavaDoc title = (String JavaDoc)parameters.get("TITLE"); // both for gallery and file
131
String JavaDoc step = (String JavaDoc)parameters.get("step");
132         
133         
134         if(foldername == null) {
135             foldername = "";
136         }
137         if("new".equals(action)) {
138             String JavaDoc galleryname = (String JavaDoc)parameters.get("NAME");
139             String JavaDoc group = (String JavaDoc)parameters.get("GROUP");
140             if(galleryname != null && group != null && galleryname != "" && group != "") {
141 // boolean read = parameters.get("READ") != null;
142
// boolean write = parameters.get("WRITE") != null;
143
try {
144
145                     // create the folder
146
CmsResource folder = cms.createResource(CmsWorkplaceDefault.C_VFS_GALLERY_EXTERNALLINKS + galleryname, CmsResourceTypeFolder.RESOURCE_TYPE_ID);
147                     if(title != null) {
148                         cms.writeProperty(cms.getSitePath(folder), CmsPropertyDefinition.PROPERTY_TITLE, title);
149                     }
150                     // TODO: check how to set the appropriate access using acl
151
/*
152                     cms.chgrp(cms.readAbsolutePath(folder), group);
153                     int flag = folder.getAccessFlags();
154
155                     // set the access rights for 'other' users
156                     if(read != ((flag & C_ACCESS_PUBLIC_READ) != 0)) {
157                         flag ^= C_ACCESS_PUBLIC_READ;
158                     }
159                     if(write != ((flag & C_ACCESS_PUBLIC_WRITE) != 0)) {
160                         flag ^= C_ACCESS_PUBLIC_WRITE;
161                     }
162                     if((flag & C_ACCESS_GROUP_READ) == 0){
163                         flag ^= C_ACCESS_GROUP_READ;
164                     }
165                     if((flag & C_ACCESS_GROUP_WRITE) == 0){
166                         flag ^= C_ACCESS_GROUP_WRITE;
167                     }
168                     if((flag & C_ACCESS_GROUP_VISIBLE) == 0){
169                         flag ^= C_ACCESS_GROUP_VISIBLE;
170                     }
171                     if((flag & C_PERMISSION_READ ) == 0){
172                         flag ^= C_PERMISSION_READ;
173                     }
174                     if((flag & C_PERMISSION_WRITE) == 0){
175                         flag ^= C_PERMISSION_WRITE;
176                     }
177                     if((flag & C_PERMISSION_VIEW) == 0){
178                         flag ^= C_PERMISSION_VIEW;
179                     }
180                     if((flag & C_ACCESS_PUBLIC_VISIBLE) == 0){
181                         flag ^= C_ACCESS_PUBLIC_VISIBLE;
182                     }
183                     cms.chmod(cms.readAbsolutePath(folder), flag);
184                     */

185                     cms.unlockResource(cms.getSitePath(folder));
186                 }
187                 catch(CmsException ex) {
188                     xmlTemplateDocument.setData("ERRORDETAILS", CmsException.getStackTraceAsString(ex));
189                     templateSelector = "error";
190                 }
191             } else {
192                 templateSelector = "datamissing";
193             }
194         } else {
195             if("newlink".equals(action)) {
196                 boolean checkurl = true;
197                 String JavaDoc error = "";
198                 if(initial != null) {
199                     // remove all session values
200
session.removeValue("extlink.filename");
201                     session.removeValue("extlink.linkurl");
202                     session.removeValue("lasturl");
203                 }
204
205                 // get the parameters for the link file
206
String JavaDoc filename = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getParameter(CmsWorkplaceDefault.C_PARA_RESOURCE);
207                 if(filename != null) {
208                     session.putValue("extlink.filename", filename);
209                 } else {
210                     // try to get the value from the session, e.g. after an error
211
filename = (String JavaDoc)session.getValue("extlink.filename")!=null?(String JavaDoc)session.getValue("extlink.filename"):"";
212                 }
213                 String JavaDoc link = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getParameter(CmsWorkplaceDefault.C_PARA_LINK);
214                 if(link != null) {
215                     session.putValue("extlink.linkurl", link);
216                 } else {
217                     // try to get the value from the session, e.g. after an error
218
link = (String JavaDoc)session.getValue("extlink.linkurl")!=null?(String JavaDoc)session.getValue("extlink.linkurl"):"";
219                 }
220
221                 // set the values e.g. after an error
222
xmlTemplateDocument.setData("LINKNAME", filename);
223                 xmlTemplateDocument.setData("LINKVALUE", link);
224
225                 // get the current phase of this wizard
226
if(step != null) {
227                     // step 1 - show the final selection screen
228
if(step.equals("1") || step.equals("2")) {
229                         // step 1 - create the link
230
// step 2 - create the link without checking url
231
// get folder- and filename
232
foldername = (String JavaDoc)session.getValue(CmsWorkplaceDefault.C_PARA_FOLDER);
233                         if(foldername == null) {
234                             foldername = cms.getSitePath(cms.readFolder("/"));
235                         }
236                         CmsXmlLanguageFile lang = xmlTemplateDocument.getLanguageFile();
237                         String JavaDoc firstTitlePart = lang.getLanguageValue("explorer.linkto") + " " + link;
238                         
239                         List JavaDoc properties = null;
240                         if (firstTitlePart != null) {
241                             properties = new ArrayList JavaDoc();
242                             properties.add(new org.opencms.file.CmsProperty(CmsPropertyDefinition.PROPERTY_TITLE, firstTitlePart, null));
243                         } else {
244                             properties = Collections.EMPTY_LIST;
245                         }
246                         
247                         try{
248                             if(step.equals("1")){
249                                 // TODO: write some better link check which will not fail if there is
250
// no access to the internet
251
//checkurl = CmsLinkCheck.checkUrl(link);
252
}
253                             if(checkurl){
254                                 cms.createResource(foldername+filename, CmsResourceTypePointer.getStaticTypeId(), link.getBytes(), properties);
255                             }
256                         } catch (CmsException e){
257                             error = e.getMessage();
258                         }
259                     }
260
261                     if(checkurl && ("".equals(error.trim()))){
262                         // remove values from session
263
session.removeValue("extlink.filename");
264                         session.removeValue("extlink.linkurl");
265                         // now return to appropriate filelist
266
try {
267                             if(lasturl != null) {
268                                 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendRedirect(lasturl);
269                             } else {
270                                 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendCmsRedirect(getConfigFile(cms).getWorkplaceAdministrationPath()
271                                     + "/externallinkgallery/");
272                             }
273                         } catch(Exception JavaDoc e) {
274                             throw new CmsLegacyException("Redirect fails :" + getConfigFile(cms).getWorkplaceAdministrationPath()
275                                 + "/externallinkgallery/", e);
276                         }
277                         return null;
278                     }
279                 } else {
280                     session.removeValue("extlink.filename");
281                     session.removeValue("extlink.linkurl");
282                 }
283
284                 if(lasturl == null) {
285                     lasturl = CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest());
286                 }
287                 xmlTemplateDocument.setData("lasturl", lasturl);
288                 // set the template for url check if check failed
289
if(!checkurl){
290                     xmlTemplateDocument.setData("folder", foldername);
291                     session.putValue("extlink.linkurl", link);
292                     session.putValue("extlink.filename", filename);
293                     templateSelector = "errorcheckurl";
294                 }
295                 // for all other errors show the errorpage
296
if(!"".equals(error.trim())){
297                     xmlTemplateDocument.setData("errordetails", error);
298                     session.putValue("extlink.linkurl", link);
299                     session.putValue("extlink.filename", filename);
300                     templateSelector = "error";
301                 }
302             }
303         }
304
305         xmlTemplateDocument.setData("link_value", foldername);
306         xmlTemplateDocument.setData("lasturl", lasturl);
307         xmlTemplateDocument.setData("galleryRootFolder", CmsWorkplaceDefault.C_VFS_GALLERY_EXTERNALLINKS);
308         
309         // Finally start the processing
310
return startProcessing(cms, xmlTemplateDocument, elementName, parameters,
311                 templateSelector);
312     }
313 }
314
Popular Tags