KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jahia > views > administration > htmleditors > actions > HtmlEditorsAdminAction


1 package org.jahia.views.administration.htmleditors.actions;
2
3 import java.io.IOException JavaDoc;
4 import java.util.ArrayList JavaDoc;
5 import java.util.Arrays JavaDoc;
6 import java.util.Enumeration JavaDoc;
7 import java.util.Iterator JavaDoc;
8
9 import javax.servlet.ServletException JavaDoc;
10 import javax.servlet.http.HttpServletRequest JavaDoc;
11 import javax.servlet.http.HttpServletResponse JavaDoc;
12
13 import org.apache.struts.action.ActionErrors;
14 import org.apache.struts.action.ActionForm;
15 import org.apache.struts.action.ActionForward;
16 import org.apache.struts.action.ActionMapping;
17
18 import org.jahia.bin.JahiaErrorDisplay;
19 import org.jahia.data.JahiaData;
20 import org.jahia.exceptions.JahiaException;
21 import org.jahia.exceptions.JahiaForbiddenAccessException;
22 import org.jahia.params.ParamBean;
23 import org.jahia.registries.ServicesRegistry;
24 import org.jahia.resourcebundle.JahiaResourceBundle;
25 import org.jahia.services.htmlparser.*;
26 import org.jahia.services.sites.*;
27 import org.jahia.bin.AdminAction;
28
29
30 /**
31  *
32  * <p>Title: </p>
33  * <p>Description: </p>
34  * <p>Copyright: Copyright (c) 2002</p>
35  * <p>Company: </p>
36  * @author Khue Nguyen
37  * @version 1.0
38  */

39 public class HtmlEditorsAdminAction extends AdminAction {
40
41     private static final String JavaDoc HTTP_FILES = "/jsp/jahia/engines";
42
43     private static org.apache.log4j.Logger logger =
44             org.apache.log4j.Logger.getLogger(HtmlEditorsAdminAction.class);
45
46     static String JavaDoc alphabet =
47         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
48
49     /**
50      * Display the operation choices screen.
51      *
52      * @param mapping
53      * @param form
54      * @param request
55      * @param response
56      * @return
57      * @throws IOException
58      * @throws ServletException
59      */

60     public ActionForward showOperationChoices(ActionMapping mapping,
61                                          ActionForm form,
62                                          HttpServletRequest JavaDoc request,
63                                          HttpServletResponse JavaDoc response)
64     throws IOException JavaDoc, ServletException JavaDoc {
65
66         ActionForward forward = mapping.getInputForward();
67         ActionErrors errors = new ActionErrors();
68
69         try {
70             init(request,response);
71
72         } catch ( Throwable JavaDoc t ){
73             JahiaErrorDisplay.DisplayException(request, response,
74                     super.getServlet().getServletContext(), t);
75         }
76         return continueForward(mapping,request,errors,forward);
77     }
78
79     /**
80      * Reload the html editor configuration file.
81      *
82      * @param mapping
83      * @param form
84      * @param request
85      * @param response
86      * @return
87      * @throws IOException
88      * @throws ServletException
89      */

90     public ActionForward reloadHtmlEditorsConfigFile(ActionMapping mapping,
91                                          ActionForm form,
92                                          HttpServletRequest JavaDoc request,
93                                          HttpServletResponse JavaDoc response)
94     throws IOException JavaDoc, ServletException JavaDoc {
95
96         request.setAttribute("reloadHtmlEditorsList",Boolean.TRUE);
97         return displayHtmlEditorsList(mapping,form,request,response);
98     }
99
100     /**
101      * Display the html editors list.
102      *
103      * @param mapping
104      * @param form
105      * @param request
106      * @param response
107      * @return
108      * @throws IOException
109      * @throws ServletException
110      */

111     public ActionForward displayHtmlEditorsList(ActionMapping mapping,
112                                          ActionForm form,
113                                          HttpServletRequest JavaDoc request,
114                                          HttpServletResponse JavaDoc response)
115     throws IOException JavaDoc, ServletException JavaDoc {
116
117         ActionForward forward = mapping.findForward("displayHtmlEditorsList");
118         ActionErrors errors = new ActionErrors();
119         try {
120             init(request,response);
121
122             JahiaData jData = (JahiaData)request
123                             .getAttribute("org.jahia.data.JahiaData");
124
125             Enumeration JavaDoc editors = ServicesRegistry.getInstance()
126                                 .getHtmlEditorsService().getEditors();
127
128             if ( editors.hasMoreElements() ){
129                 request.setAttribute("editors",editors);
130             }
131
132             Boolean JavaDoc reloadHtmlEditors =
133                     (Boolean JavaDoc)request.getAttribute("reloadHtmlEditorsList");
134
135             int reloadHtmlEditorsStatus = 0;
136             if ( reloadHtmlEditors != null && reloadHtmlEditors.booleanValue() ){
137                 try {
138                     ServicesRegistry.getInstance().getHtmlEditorsService()
139                             .reloadConfigurationFile();
140                     reloadHtmlEditorsStatus = 1;
141                 } catch ( Throwable JavaDoc t ){
142                     reloadHtmlEditorsStatus = -1;
143                     logger.debug("Error reloading html editors config file",t);
144                 }
145             }
146             request.setAttribute("reloadHtmlEditorsStatus",
147                                  new Integer JavaDoc(reloadHtmlEditorsStatus));
148
149         } catch ( Throwable JavaDoc t ){
150             JahiaErrorDisplay.DisplayException(request, response,
151                     super.getServlet().getServletContext(), t);
152         }
153         return continueForward(mapping,request,errors,forward);
154     }
155
156     /**
157      * Display the list of markups to remove.
158      *
159      * @param mapping
160      * @param form
161      * @param request
162      * @param response
163      * @return
164      * @throws IOException
165      * @throws ServletException
166      */

167     public ActionForward showMarkupsToRemove(ActionMapping mapping,
168                                          ActionForm form,
169                                          HttpServletRequest JavaDoc request,
170                                          HttpServletResponse JavaDoc response)
171     throws IOException JavaDoc, ServletException JavaDoc {
172
173         ActionForward forward = mapping.findForward("showMarkupsToRemove");
174         ActionErrors errors = new ActionErrors();
175         try {
176             init(request,response);
177
178             JahiaData jData = (JahiaData)request
179                             .getAttribute("org.jahia.data.JahiaData");
180
181             deleteSelectedMarkups(request);
182
183             ArrayList JavaDoc markupsToRemove = getMarkupToRemove();
184             if ( markupsToRemove.size()>0 ){
185                 request.setAttribute("markupsToRemove",markupsToRemove);
186             }
187
188         } catch ( Throwable JavaDoc t ){
189             JahiaErrorDisplay.DisplayException(request, response,
190                     super.getServlet().getServletContext(), t);
191         }
192         return continueForward(mapping,request,errors,forward);
193     }
194
195     private ArrayList JavaDoc getMarkupToRemove(){
196         ArrayList JavaDoc vals = new ArrayList JavaDoc();
197         Iterator JavaDoc iterator = ServicesRegistry.getInstance()
198                           .getHtmlParserService()
199                     .getMarkupSettings(ToRemoveMarkupSetting.SETTING_TYPE);
200         while ( iterator.hasNext() ){
201             ToRemoveMarkupSetting trmSetting =
202                     new ToRemoveMarkupSetting((MarkupSetting)iterator.next());
203             if ( trmSetting.getMarkupDefinition() != null ){
204                 vals.add(trmSetting);
205             }
206         }
207         if ( vals.size()>1 ){
208
209             Object JavaDoc[] array = vals.toArray();
210
211             Arrays.sort(array,(ToRemoveMarkupSetting)array[0]);
212             vals = new ArrayList JavaDoc(Arrays.asList(array));
213         }
214         return vals;
215     }
216
217     /**
218      *
219      * @param request
220      */

221     private void deleteSelectedMarkups(HttpServletRequest JavaDoc request)
222     throws JahiaException{
223
224         HtmlParserService htmlPServ = ServicesRegistry.getInstance()
225                     .getHtmlParserService();
226
227        String JavaDoc[] vals = request.getParameterValues("markup");
228        if ( vals != null ){
229            int size = vals.length;
230            for ( int i=0 ; i<size; i++ ){
231                int id = Integer.parseInt((String JavaDoc)vals[i]);
232                MarkupSetting setting = htmlPServ.getMarkupSetting(id);
233                if ( setting != null ){
234                    try {
235                        htmlPServ.removeMarkupDefinition(setting.getMarkupDefId());
236                    } catch ( Throwable JavaDoc t ){
237                        logger.debug("Error deleting markup definition :"
238                                     + setting.getMarkupDefId(),t);
239                    }
240                    htmlPServ.removeMarkupSetting(id);
241                }
242            }
243        }
244     }
245
246     /**
247      * Display the add new markup view.
248      *
249      * @param mapping
250      * @param form
251      * @param request
252      * @param response
253      * @return
254      * @throws IOException
255      * @throws ServletException
256      */

257     public ActionForward displayAddMarkup(ActionMapping mapping,
258                                          ActionForm form,
259                                          HttpServletRequest JavaDoc request,
260                                          HttpServletResponse JavaDoc response)
261     throws IOException JavaDoc, ServletException JavaDoc {
262
263         ActionForward forward = mapping.findForward("displayAddMarkup");
264         ActionErrors errors = new ActionErrors();
265         try {
266             init(request,response);
267
268             JahiaData jData = (JahiaData)request
269                             .getAttribute("org.jahia.data.JahiaData");
270
271             String JavaDoc value = (String JavaDoc)request.getAttribute("markupName");
272             if ( value == null ){
273                 value = "";
274             }
275             request.setAttribute("markupName",value);
276
277         } catch ( Throwable JavaDoc t ){
278             JahiaErrorDisplay.DisplayException(request, response,
279                     super.getServlet().getServletContext(), t);
280         }
281         return continueForward(mapping,request,errors,forward);
282     }
283
284
285     /**
286      * Save Add markup.
287      *
288      * @param mapping
289      * @param form
290      * @param request
291      * @param response
292      * @return
293      * @throws IOException
294      * @throws ServletException
295      */

296     public ActionForward saveMarkup(ActionMapping mapping,
297                                          ActionForm form,
298                                          HttpServletRequest JavaDoc request,
299                                          HttpServletResponse JavaDoc response)
300     throws IOException JavaDoc, ServletException JavaDoc {
301
302         ActionForward forward = mapping.findForward("showMarkupsToRemove");
303         ActionErrors errors = new ActionErrors();
304         try {
305             init(request,response);
306
307             JahiaData jData = (JahiaData)request
308                             .getAttribute("org.jahia.data.JahiaData");
309
310             HtmlParserService htmlPServ = ServicesRegistry.getInstance()
311                         .getHtmlParserService();
312
313             String JavaDoc markupName = request.getParameter("markupName");
314             if ( checkMarkupName(markupName) ){
315                 markupName = markupName.toLowerCase();
316                 if ( htmlPServ.getMarkupDefinition(markupName) == null ){
317                     MarkupDefinition def = new MarkupDefinition(markupName);
318                     htmlPServ.saveMarkupDefinition(def);
319
320                     ToRemoveMarkupSetting setting =
321                             new ToRemoveMarkupSetting(def.getId());
322                     setting.setApplyToAllSite(true);
323                     htmlPServ.saveMarkupSetting(setting);
324
325                     ArrayList JavaDoc markupsToRemove = getMarkupToRemove();
326                     if ( markupsToRemove.size()>0 ){
327                         request.setAttribute("markupsToRemove",markupsToRemove);
328                     }
329                 } else {
330                     request.setAttribute("warningMsg","alreadyRegisteredMarkupName");
331                     request.setAttribute("markupName",markupName);
332                     return displayAddMarkup(mapping,form,request,response);
333                 }
334             } else {
335                 request.setAttribute("warningMsg","notValidMarkupName");
336                 request.setAttribute("markupName",markupName);
337                 return displayAddMarkup(mapping,form,request,response);
338             }
339         } catch ( Throwable JavaDoc t ){
340             JahiaErrorDisplay.DisplayException(request, response,
341                     super.getServlet().getServletContext(), t);
342         }
343         return continueForward(mapping,request,errors,forward);
344     }
345
346     /**
347      * Show site setting.
348      *
349      * @param mapping
350      * @param form
351      * @param request
352      * @param response
353      * @return
354      * @throws IOException
355      * @throws ServletException
356      */

357     public ActionForward showSiteSetting(ActionMapping mapping,
358                                          ActionForm form,
359                                          HttpServletRequest JavaDoc request,
360                                          HttpServletResponse JavaDoc response)
361     throws IOException JavaDoc, ServletException JavaDoc {
362
363         ActionForward forward = mapping.findForward("showSiteSetting");
364         ActionErrors errors = new ActionErrors();
365         try {
366             init(request,response);
367
368             JahiaData jData = (JahiaData)request
369                             .getAttribute("org.jahia.data.JahiaData");
370
371             JahiaSitesService sitesServ = ServicesRegistry.getInstance()
372                                         .getJahiaSitesService();
373
374             Enumeration JavaDoc sites = sitesServ.getSites();
375
376             request.setAttribute("sites",sites);
377
378         } catch ( Throwable JavaDoc t ){
379             JahiaErrorDisplay.DisplayException(request, response,
380                     super.getServlet().getServletContext(), t);
381         }
382         return continueForward(mapping,request,errors,forward);
383     }
384
385     /**
386      * Save site setting.
387      *
388      * @param mapping
389      * @param form
390      * @param request
391      * @param response
392      * @return
393      * @throws IOException
394      * @throws ServletException
395      */

396     public ActionForward saveSiteSetting(ActionMapping mapping,
397                                          ActionForm form,
398                                          HttpServletRequest JavaDoc request,
399                                          HttpServletResponse JavaDoc response)
400     throws IOException JavaDoc, ServletException JavaDoc {
401
402         ActionForward forward = mapping.findForward("showSiteSetting");
403         ActionErrors errors = new ActionErrors();
404         try {
405             init(request,response);
406
407             JahiaData jData = (JahiaData)request
408                             .getAttribute("org.jahia.data.JahiaData");
409
410             JahiaSitesService sitesServ = ServicesRegistry.getInstance()
411                                         .getJahiaSitesService();
412
413             String JavaDoc[] vals = request.getParameterValues("htmlCleanup");
414             if (vals == null ){
415                 vals = new String JavaDoc[0];
416             }
417             ArrayList JavaDoc htmlCleanup = new ArrayList JavaDoc(Arrays.asList(vals));
418
419             vals = request.getParameterValues("markupFiltering");
420             if (vals == null ){
421                 vals = new String JavaDoc[0];
422             }
423             ArrayList JavaDoc markupFiltering = new ArrayList JavaDoc(Arrays.asList(vals));
424
425             Enumeration JavaDoc sites = sitesServ.getSites();
426             while ( sites.hasMoreElements() ){
427                 JahiaSite site = (JahiaSite)sites.nextElement();
428                 String JavaDoc siteId = String.valueOf(site.getID());
429                 if ( htmlCleanup.contains(siteId) ){
430                     site.setHtmlCleanup(1);
431                 } else {
432                     site.setHtmlCleanup(0);
433                 }
434
435                 if ( markupFiltering.contains(siteId) ){
436                     site.setHtmlMarkupFiltering(1);
437                 } else {
438                     site.setHtmlMarkupFiltering(0);
439                 }
440                 sitesServ.updateSite(site);
441             }
442             sites = sitesServ.getSites();
443             request.setAttribute("sites",sites);
444
445         } catch ( Throwable JavaDoc t ){
446             JahiaErrorDisplay.DisplayException(request, response,
447                     super.getServlet().getServletContext(), t);
448         }
449         return continueForward(mapping,request,errors,forward);
450     }
451
452     /**
453      *
454      * @param request
455      * @param response
456      * @throws JahiaException
457      */

458     protected void init(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
459             throws JahiaException {
460
461         super.init(request,response);
462
463         JahiaData jData = (JahiaData)request.getAttribute("org.jahia.data.JahiaData");
464         if ( !jData.params().getUser().isRoot() ){
465             throw new JahiaForbiddenAccessException();
466         }
467
468         try {
469
470             // check null jsp bottom message, and fill in if necessary...
471
if( request.getAttribute("msg") == null ) {
472                 ParamBean jParams = null;
473                 if (jData != null) {
474                     jParams = jData.params ();
475                 }
476                 request.setAttribute("msg",
477                     JahiaResourceBundle.getAdminResource("org.jahia.admin.copyright",
478                         jParams, jParams.getLocale()));
479             }
480
481             if( request.getAttribute("focus") == null ) {
482                 request.setAttribute("focus", "-none-");
483             }
484
485             // check null configuration step title, and fill in if necessary...
486
if( request.getAttribute("title") == null ) {
487                 request.setAttribute("title", "Manage Html Editors");
488             }
489
490         } catch ( Throwable JavaDoc t ){
491             t.printStackTrace();
492             throw new JahiaException("Exception occured initializing engine's objects",
493                                      "Exception occured initializing engine's objects",
494                                      JahiaException.ENGINE_ERROR,
495                                      JahiaException.ENGINE_ERROR);
496         }
497     }
498
499     private boolean checkMarkupName(String JavaDoc name){
500         if ( name == null || "".equals(name.trim()) ){
501             return false;
502         }
503         char[] chars = name.toCharArray();
504         int size = chars.length;
505         for ( int i=0; i<size; i++ ){
506             if ( HtmlEditorsAdminAction.alphabet.indexOf(chars[i]) == -1 ){
507                 return false;
508             }
509         }
510         return true;
511     }
512
513 }
514
Popular Tags