KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opencms > defaults > A_CmsChannelBackoffice


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

24
25 package com.opencms.defaults;
26
27 import org.opencms.db.CmsDbUtil;
28 import org.opencms.file.CmsObject;
29 import org.opencms.file.CmsRequestContext;
30 import org.opencms.main.CmsException;
31 import org.opencms.main.OpenCms;
32
33 import com.opencms.core.I_CmsSession;
34 import com.opencms.defaults.master.CmsMasterContent;
35 import com.opencms.defaults.master.CmsMasterMedia;
36 import com.opencms.legacy.CmsXmlTemplateLoader;
37 import com.opencms.template.A_CmsXmlContent;
38 import com.opencms.template.CmsXmlTemplateFile;
39 import com.opencms.workplace.CmsXmlLanguageFile;
40
41 import java.util.Enumeration JavaDoc;
42 import java.util.Hashtable JavaDoc;
43 import java.util.StringTokenizer JavaDoc;
44 import java.util.Vector JavaDoc;
45
46 /**
47  * Backoffice class with channel functionality
48  * @author Michael Dernen
49  *
50  * @deprecated Will not be supported past the OpenCms 6 release.
51  */

52 public abstract class A_CmsChannelBackoffice extends A_CmsBackoffice {
53
54     /**
55      * UserMethod creates a selectBox for selected channels
56      *
57      * @param cms CmsObject Object for accessing system resources
58      * @param lang CmsXmlLanguageFile the language file
59      * @param values Vector for the values in the selectBox
60      * @param names Vector for the names in the selectBox
61      * @param parameters Hashtable with all template class parameters.
62      * @return Integer selected Index Value of selectBox
63      * @throws CmsException in case of unrecoverable errors
64      */

65     public Integer JavaDoc getSelectedChannels(CmsObject cms, CmsXmlLanguageFile lang, Vector JavaDoc values, Vector JavaDoc names, Hashtable JavaDoc parameters)
66                     throws CmsException {
67         int retValue = -1;
68         I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true);
69         CmsMasterContent cd = (CmsMasterContent)session.getValue(getContentDefinitionClass().getName());
70         Vector JavaDoc channels = cd.getSelectedChannels();
71         int size = channels.size();
72         for (int i=0; i < size; i++) {
73             values.add(channels.elementAt(i));
74             names.add(channels.elementAt(i));
75         }
76         return new Integer JavaDoc(retValue);
77     }
78
79     /**
80      * UserMethod creates a selectBox for available channels
81      *
82      * @param cms CmsObject Object for accessing system resources
83      * @param lang CmsXmlLanguageFile
84      * @param values Vector for the values in the selectBox
85      * @param names Vector for the names in the selectBox
86      * @param parameters Hashtable with all template class parameters.
87      * @return Integer selected Index Value of selectBox
88      * @throws org.opencms.main.CmsException in case of unrecoverable errors
89      */

90     public Integer JavaDoc getAvailableChannels(CmsObject cms, CmsXmlLanguageFile lang, Vector JavaDoc values, Vector JavaDoc names, Hashtable JavaDoc parameters)
91                     throws CmsException {
92         int retValue = -1;
93         I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true);
94         CmsMasterContent cd = (CmsMasterContent)session.getValue(getContentDefinitionClass().getName());
95         Vector JavaDoc channels = cd.getAvailableChannels(cms);
96         int size = channels.size();
97         for (int i=0; i < size; i++) {
98             values.add(channels.elementAt(i));
99             names.add(channels.elementAt(i));
100         }
101         return new Integer JavaDoc(retValue);
102     }
103
104     /**
105      * UserMethod creates a selectBox for selected channels
106      *
107      * @param cms CmsObject Object for accessing system resources
108      * @param lang CmsXmlLanguageFile
109      * @param values Vector for the values in the selectBox
110      * @param names Vector for the names in the selectBox
111      * @param parameters Hashtable with all template class parameters.
112      * @return Integer selected Index Value of selectBox
113      * @throws org.opencms.main.CmsException in case of unrecoverable errors
114      */

115     public Integer JavaDoc getMediaPosition(CmsObject cms, CmsXmlLanguageFile lang, Vector JavaDoc values, Vector JavaDoc names, Hashtable JavaDoc parameters)
116                     throws CmsException {
117         //get session
118
I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true);
119         //selected media content definition
120
//media_position
121
String JavaDoc media_position = null;
122         int media_positionInt=0;
123         //content of the select box
124
String JavaDoc selectBoxContent="";
125         //flag
126
boolean flag=false;
127         try {
128             //get the content
129
selectBoxContent=selectBoxContent(cms);
130         } catch (Exception JavaDoc e) {
131             e.printStackTrace(System.err);
132         }
133         StringTokenizer JavaDoc t = new StringTokenizer JavaDoc(selectBoxContent, ";");
134         while (t.hasMoreElements()) {
135             String JavaDoc s=t.nextToken();
136             if (s!=null && !s.equals("")) {
137                 int z=s.indexOf(":");
138                 values.add(s.substring(0, z));
139                 String JavaDoc name=s.substring(z+1);
140                 names.add(name);
141                 //if there is a 0 as position don't
142
if (name.equals("0")) {
143                   flag=true;
144                 }
145             }
146         }
147         //try to get the medias from session
148
try {
149                 media_position=(String JavaDoc)session.getValue("media_position");
150                 media_positionInt=Integer.parseInt(media_position);
151                 if (!flag) {
152                     media_positionInt=Integer.parseInt(media_position)-1;
153                 }
154         } catch (Exception JavaDoc e) {
155                 media_positionInt=0;
156         }
157         return new Integer JavaDoc(media_positionInt);
158     }
159
160      /**
161          * get the complete page to edit,delete and upload files and pictures
162          * <P>
163          * This method can be called using <code>&lt;METHOD name="getTitle"&gt;</code>
164          * in the template file.
165          *
166          * @param cms CmsObject Object for accessing system resources.
167          * @param tagcontent Unused in this special case of a user method. Can be ignored.
168          * @param doc Reference to the A_CmsXmlContent object of the initiating XLM document.
169          * @param userObject Hashtable with parameters.
170          * @return String or byte[] with the content of this subelement.
171          * @throws CmsException if something goes wrong
172          */

173         public Object JavaDoc getContentMedia(CmsObject cms, String JavaDoc tagcontent, A_CmsXmlContent doc, Object JavaDoc userObject) throws CmsException {
174             //return value
175
String JavaDoc content="";
176             String JavaDoc row="";
177             //get the template
178
CmsXmlTemplateFile templateFile = (CmsXmlTemplateFile) doc;
179             I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true);
180             CmsMasterContent masterCD = (CmsMasterContent)session.getValue(getContentDefinitionClass().getName());
181             //get the parameter
182
Hashtable JavaDoc parameters = (Hashtable JavaDoc)userObject;
183             // get the action
184
String JavaDoc media_action = (String JavaDoc) parameters.get("media_action");
185             media_action=(media_action!=null?media_action.trim():"");
186             // get the media_name
187
String JavaDoc media_name = (String JavaDoc) parameters.get("media_name");
188             media_name=(media_name!=null?media_name.trim():"");
189             // get the alt_text
190
String JavaDoc media_title = (String JavaDoc) parameters.get("media_alt_text");
191             media_title=(media_title!=null?media_title.trim():"");
192             media_title = org.opencms.i18n.CmsEncoder.unescape(media_title,
193                 cms.getRequestContext().getEncoding());
194             // get the pos
195
String JavaDoc pos = (String JavaDoc) parameters.get("pos");
196             pos=(pos!=null?pos.trim():"");
197             if (pos.equals("")) {
198                 //if your are in the edit modus get another pos
199
pos = (String JavaDoc) parameters.get("posEdit");
200                 pos=(pos!=null?pos.trim():"");
201             }
202             int posInt=CmsDbUtil.UNKNOWN_ID;
203             if (!pos.equals("")) {
204                 try {
205                     posInt=Integer.parseInt(pos);
206                 } catch (Exception JavaDoc e) {
207                     posInt=CmsDbUtil.UNKNOWN_ID;
208                 }
209             }
210             // get the media_position
211
String JavaDoc media_position = (String JavaDoc) parameters.get("media_position");
212             media_position=(media_position!=null?media_position.trim():"");
213             int media_positionInt=0;
214             if (!media_position.equals("")) {
215                 try {
216                     media_positionInt=Integer.parseInt(media_position);
217                 } catch (Exception JavaDoc e) {
218                     media_positionInt=0;
219                 }
220             }
221             //the media_type
222
int media_type=0;
223             //the media_mimetype
224
String JavaDoc media_mimetype="";
225             //media content definition
226
CmsMasterMedia mediaCD=null;
227             //selected media content definition
228
CmsMasterMedia selectedmediaCD=null;
229             //get all media files from this content definition
230
Vector JavaDoc dbmedia = masterCD.getMedia();
231             //Vector
232
Vector JavaDoc media = null;
233             //try to get the medias from session
234
try {
235                     media=(Vector JavaDoc)session.getValue("media");
236             } catch (Exception JavaDoc e) {
237                     e.printStackTrace(System.err);
238             }
239             //get the selected CmsMasterMedia
240
if (dbmedia!=null) {
241             //if you are here for the fist time - get the medias from db
242
if (media==null) {
243                 //copy medias in your vector
244
media=new Vector JavaDoc();
245                     //media=(Vector)dbmedia.clone();
246
for (int i=0; i<dbmedia.size(); i++) {
247                         CmsMasterMedia cd = (CmsMasterMedia)dbmedia.elementAt(i);
248                         //if the type is == paragraph1
249
if (cd.getType()>=0) {
250                             media.add(cd);
251                         }
252                     }
253                 }
254                 for (int i=0; i<media.size(); i++) {
255                     if (posInt==i) {
256                         selectedmediaCD=(CmsMasterMedia)media.elementAt(i);
257                     }
258                 }
259             }
260             //delete media
261
if (media_action.equals("delPicture")) {
262                 if (selectedmediaCD!=null) {
263                     masterCD.deleteMedia(selectedmediaCD);
264                     //remove CD from vector
265
media.removeElementAt(posInt);
266                 }
267             } else if (media_action.equals("addPicture") && !media_name.equals("unknown")) {
268                     // get the picture file and/or file from the RequestContext if there is any
269
CmsRequestContext reqCont = cms.getRequestContext();
270                     Enumeration JavaDoc en = CmsXmlTemplateLoader.getRequest(reqCont).getFileNames();
271                     String JavaDoc filename = "";
272                     byte[] mediafile = null;
273                     //get the file
274
while (en.hasMoreElements()) {
275                         filename = (String JavaDoc) en.nextElement();
276                         if (!filename.equals("unknown")) {
277                             mediafile = CmsXmlTemplateLoader.getRequest(reqCont).getFile(filename);
278                             //set the media_mimetype
279
media_mimetype = OpenCms.getResourceManager().getMimeType(filename, null);
280                             //set the type
281
if (!media_mimetype.startsWith("image")) {
282                                 media_type=1;
283                             }
284                         }
285                     }
286                     if (mediafile!=null) {
287                         //new media
288
mediaCD=new CmsMasterMedia(media_positionInt, 0, 0, mediafile.length, media_mimetype, media_type, media_title, media_name, "default", mediafile);
289                         if (mediaCD!=null) {
290                             //add media
291
masterCD.addMedia(mediaCD);
292                             //add Cd to vector
293
media.addElement(mediaCD);
294                             //set media_position back to default
295
media_position="";
296                         }
297                     } else {
298                         //set new values
299
selectedmediaCD.setName(media_name);
300                         selectedmediaCD.setTitle(media_title);
301                         selectedmediaCD.setPosition(media_positionInt);
302                         //set media_position back to default
303
media_position="";
304                         //update media
305
masterCD.updateMedia(selectedmediaCD);
306                         //update the vector
307
media.insertElementAt(selectedmediaCD, posInt);
308                         //remove old CD
309
media.removeElementAt(posInt+1);
310                     }
311             }
312             //empty the input fields and select box
313
if (media_action.equals("clear")) {
314                 //set media_position back to default
315
media_position="";
316             }
317             //open window on reload
318
if (media_action.equals("prevPicture") && (selectedmediaCD != null)) {
319                 //set the url
320
templateFile.setData("sid", "" + masterCD.getSubId());
321                 templateFile.setData("cid", "" + selectedmediaCD.getMasterId());
322                 templateFile.setData("mid", "" + selectedmediaCD.getId());
323                 templateFile.setData("file", "" + selectedmediaCD.getName());
324
325                 templateFile.setData("preview", templateFile.getProcessedDataValue("media_preview", this));
326             } else {
327                 //set the url to default
328
templateFile.setData("preview", "");
329             }
330             //special template for edit
331
if (media_action.equals("editPicture") && (selectedmediaCD!=null)) {
332                 //set media_position back to default
333
media_position=""+selectedmediaCD.getPosition();
334                 //put the media_position in session
335
session.putValue("media_position", media_position);
336                 //fill the template
337
templateFile.setData("media_name", selectedmediaCD.getName());
338                 templateFile.setData("posEdit", pos);
339                 String JavaDoc title=selectedmediaCD.getTitle();
340                 title=org.opencms.i18n.CmsEncoder.unescape(title,
341                     cms.getRequestContext().getEncoding());
342                 templateFile.setData("media_alt_text", title);
343                 templateFile.setData("media_file", templateFile.getProcessedDataValue("media_edit", this));
344             } else {
345                 //put the media_position in session
346
session.putValue("media_position", media_position);
347                 //no edit - build normal template
348
templateFile.setData("media_file", templateFile.getProcessedDataValue("media_upload", this));
349             }
350             //fill the list
351
if (media!=null) {
352                 //content of the position select box
353
String JavaDoc selectBoxContent="";
354                 try {
355                     //get the content
356
selectBoxContent=selectBoxContent(cms);
357                 } catch (Exception JavaDoc e) {
358                 }
359                 for (int i=0; i<media.size(); i++) {
360                     mediaCD= (CmsMasterMedia)media.elementAt(i);
361                     templateFile.setData("pos", ""+i);
362                     templateFile.setData("media_row_name", mediaCD.getName());
363                     templateFile.setData("media_title", mediaCD.getTitle());
364                     //get the name to the value
365
String JavaDoc mediapos=""+mediaCD.getPosition();
366                     StringTokenizer JavaDoc t = new StringTokenizer JavaDoc(selectBoxContent, ";");
367                     while (t.hasMoreElements()) {
368                         String JavaDoc s=t.nextToken();
369                         if (s!=null && !s.equals("")) {
370                             int z=s.indexOf(":");
371                             String JavaDoc value=s.substring(0, z);
372                             String JavaDoc name=s.substring(z+1);
373                             if (mediapos.equals(name)) {
374                                 mediapos=value;
375                             }
376                         }
377                     }
378                     templateFile.setData("media_position", ""+mediapos);
379                     templateFile.setData("media_size", ""+mediaCD.getSize());
380                     templateFile.setData("media_type", ""+mediaCD.getType());
381                     //set String
382
row += templateFile.getProcessedDataValue("media_row", this);
383                     //set back
384
mediapos="";
385                 }
386                 templateFile.setData("media_line", row);
387             }
388             //build the content
389
content=templateFile.getProcessedDataValue("media_content", this);
390             //put the vector in session
391
if (media!=null) {
392                 session.putValue("media", media);
393             }
394             //put the vector in session
395
if (selectedmediaCD!=null) {
396                 session.putValue("selectedmediaCD", selectedmediaCD);
397             }
398             //return
399
return content;
400     }
401
402     /**
403      * Method to return option values for media-position selectbox
404      * has to be overriden to provide values and names for the selectbox
405      *
406      * @param cms CmsObject to access system resources
407      * @return the option values
408      */

409     protected String JavaDoc selectBoxContent(CmsObject cms) {
410         return "";
411     }
412 }
Popular Tags