View Javadoc

1   /*
2    * Copyright 2000-2001,2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.jetspeed.modules.actions.portlets.designer;
17  
18  import java.io.File;
19  import java.io.FileInputStream;
20  import java.io.FileOutputStream;
21  import java.util.Hashtable;
22  import java.util.Properties;
23  
24  import org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction;
25  
26  import org.apache.jetspeed.portal.portlets.VelocityPortlet;
27  import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
28  import org.apache.jetspeed.services.logging.JetspeedLogger;
29  import org.apache.turbine.services.resources.TurbineResources;
30  import org.apache.turbine.util.RunData;
31  import org.apache.turbine.util.upload.FileItem;
32  import org.apache.velocity.context.Context;
33  
34  /***
35   * Header Action
36   * 
37   * @author <a href="mailto:jlim@gluecode.com">Jonas Lim</a>
38   * @version $Id: HeaderAction.java,v 1.2 2004/03/22 22:26:58 taylor Exp $
39   */
40  public class HeaderAction extends VelocityPortletAction
41  {
42      private static final JetspeedLogger log = JetspeedLogFactoryService.getLogger(HeaderAction.class.getName());
43      private static final String IMAGES_DIRECTORY = "images/designer/";
44      private static final String DEFAULT_CSS = "css/default.css";
45  
46      private String fileTypes[] =
47      { "image/jpg", 
48        "image/gif", 
49        "image/jpeg",
50         "application/x-shockwave-flash",
51         "image/png",
52         "image/x-png"
53      };
54      
55      
56      protected void buildNormalContext(VelocityPortlet portlet, Context context,
57              RunData rundata) throws Exception
58      {
59  
60      }
61  
62      public void doUpload(RunData rundata, Context context)
63      {
64          Hashtable ht = new Hashtable();
65  
66          boolean setLogo = rundata.getParameters().getBoolean("setLogo");
67          boolean setBgImage = rundata.getParameters().getBoolean("setBgImage");
68          boolean setBgColor = rundata.getParameters().getBoolean("setBgColor");
69          boolean setFontFace = rundata.getParameters().getBoolean("setFontFace");
70          boolean setFontSize = rundata.getParameters().getBoolean("setFontSize");
71          boolean setFontColor = rundata.getParameters().getBoolean(
72                  "setFontColor");
73          boolean setTitle = rundata.getParameters().getBoolean("setTitle");
74  
75          FileItem fileLogo = null;
76          FileItem fileBgImage = null;
77          String bgColor = "";
78          String fontFace = "";
79          String fontSize = "";
80          String fontColor = "";
81          String bgImage = "";
82          String title = "";
83  
84          if (setLogo)
85          {
86              fileLogo = rundata.getParameters().getFileItem("imgLogo");
87          }
88  
89          if (setBgImage)
90          {
91              String sampleBg = rundata.getParameters()
92                      .getString("sampleBgImage").trim();
93              if (sampleBg != null && sampleBg.length() != 0)
94              {
95                  bgImage = IMAGES_DIRECTORY + sampleBg;
96              } else
97              {
98                  fileBgImage = rundata.getParameters().getFileItem("bgImage");
99              }
100         }
101 
102         if (setBgColor)
103         {
104             bgColor = rundata.getParameters().getString("bgColor").trim();
105         }
106         if (setFontFace)
107         {
108             fontFace = rundata.getParameters().getString("fontFace").trim();
109         }
110         if (setFontSize)
111         {
112             fontSize = rundata.getParameters().getString("fontSize").trim();
113         }
114         if (setFontColor)
115         {
116             fontColor = rundata.getParameters().getString("fontColor").trim();
117         }
118         if (setTitle)
119         {
120             title = rundata.getParameters().getString("portalTitle").trim();
121         }
122 
123         log.info("fontColor : " + fontColor);
124 
125         String message = "";
126         try
127         {
128             String logo = "";
129 
130             String slash = System.getProperty("file.separator");
131             String imagePath = FormatPath.normalizeDirectoryPath(rundata
132                     .getServletContext().getRealPath("/" + IMAGES_DIRECTORY));
133 
134             if (fileLogo != null)
135             {
136                 File file = new File(fileLogo.getFileName());
137                 logo = file.getName();
138 
139                 int index = logo.lastIndexOf("//");
140                 int index2 = logo.lastIndexOf("//");
141 
142                 if (index > 0)
143                 {
144                     logo = logo.substring(index + 1);
145                 }
146 
147                 if (index2 > 0)
148                 {
149                     logo = logo.substring(index2 + 1);
150                 }
151 
152                 File f = new File(imagePath + logo);
153                 if (f.exists()) 
154                 {
155                     f.delete();//nik
156                 }
157                 FileUploader fu = new FileUploader();
158                 boolean hasUploaded = fu.upload(fileLogo, imagePath, fileTypes);
159                 //String filename = fu.getFilename(fileLogo, imagePath,
160                 // fileTypes);
161 
162                 if (hasUploaded == true)
163                 {
164                     logo = IMAGES_DIRECTORY + logo;
165                 } else
166                 {
167                     context
168                             .put(
169                                     "logoStatus",
170                                     "Error occurred while uploading "
171                                             + logo
172                                             + ". Only gif, jpg, and jpeg image files can be uploaded. ");
173                     logo = "";
174                 }
175 
176                 //context.put("logoFile", filename);
177 
178             }
179 
180             if (fileBgImage != null)
181             {
182                 File file1 = new File(fileBgImage.getFileName());
183                 bgImage = file1.getName();
184 
185                 int index = bgImage.lastIndexOf("//");
186                 int index2 = bgImage.lastIndexOf("//");
187 
188                 if (index > 0)
189                 {
190                     bgImage = bgImage.substring(index + 1);
191                 }
192 
193                 if (index2 > 0)
194                 {
195                     bgImage = bgImage.substring(index2 + 1);
196                 }
197 
198                 File f = new File(imagePath + bgImage);
199                 if (f.exists()) f.delete();//nik
200                 FileUploader fu = new FileUploader();
201                 boolean hasUploaded = fu.upload(fileBgImage, imagePath,
202                         fileTypes);
203                 log.info("hasUploaded : " + hasUploaded);
204 
205                 if (hasUploaded == true)
206                     bgImage = IMAGES_DIRECTORY + bgImage;
207                 else
208                 {
209                     context
210                             .put(
211                                     "bgStatus",
212                                     "Error while uploading "
213                                             + bgImage
214                                             + ". Only gif, jpg, and jpeg image files can be uploaded. ");
215                     bgImage = "";
216                 }
217 
218             }
219 
220             boolean hasColor = (bgColor == null || bgColor.length() < 1);
221             boolean hasFontFace = (fontFace == null || fontFace.length() < 1);
222             boolean hasFontSize = (fontSize == null || fontSize.length() < 1);
223             boolean hasFontColor = (fontColor == null || fontColor.length() < 1);
224 
225             if (hasColor)
226             {
227                 bgColor = "white";
228             }
229             if (hasFontFace)
230             {
231                 fontFace = "verdana";
232             }
233             if (hasFontSize)
234             {
235                 fontSize = "12";
236             }
237             if (hasFontColor)
238             {
239                 fontColor = "black";
240             }
241 
242             ht.put("logo", logo);
243             ht.put("BgImage", bgImage);
244             ht.put("BgColor", bgColor);
245             ht.put("FontFace", fontFace);
246             ht.put("FontSize", fontSize);
247             ht.put("FontColor", fontColor);
248             ht.put("PortalTitle", title);
249             ht.put("SetLogo", String.valueOf(setLogo));
250             ht.put("SetBgImage", String.valueOf(setBgImage));
251             ht.put("SetBgColor", String.valueOf(setBgColor));
252             ht.put("SetFontFace", String.valueOf(setFontFace));
253             ht.put("SetFontSize", String.valueOf(setFontSize));
254             ht.put("SetFontColor", String.valueOf(setFontColor));
255             ht.put("SetTitle", String.valueOf(setTitle));
256 
257             editHeader(rundata, context, ht);
258 
259         } catch (Exception ee)
260         {
261             message = ee.getMessage();
262         }
263     }
264 
265     public void editHeader(RunData rundata, Context context, Hashtable ht)
266             throws Exception
267     {
268         try
269         {
270             String logo = (String) ht.get("logo");
271             String bgImage = (String) ht.get("BgImage");
272             String bgColor = (String) ht.get("BgColor");
273             String fontSize = (String) ht.get("FontSize");
274             String fontColor = (String) ht.get("FontColor");
275             String title = (String) ht.get("PortalTitle");
276 
277             boolean setLogo = Boolean.valueOf((String) ht.get("SetLogo")).booleanValue();
278             boolean setBgImage = Boolean.valueOf((String) ht.get("SetBgImage"))
279                     .booleanValue();
280             boolean setBgColor = Boolean.valueOf((String) ht.get("SetBgColor"))
281                     .booleanValue();
282             boolean setFontSize = Boolean.valueOf((String) ht.get("SetFontSize"))
283                     .booleanValue();
284             boolean setFontColor = Boolean.valueOf((String) ht.get("SetFontColor"))
285                     .booleanValue();
286             boolean setPortalTitle = Boolean.valueOf((String) ht.get("SetTitle"))
287                     .booleanValue();
288 
289             String DEFAULT_ROOT = File.separator + "WEB-INF" + File.separator
290                     + "conf" + File.separator;
291             String root = rundata.getServletConfig().getServletContext()
292                     .getRealPath(DEFAULT_ROOT)
293                     + File.separator;
294 
295             Properties prop = new Properties();
296             prop.clear();
297             prop.load(new FileInputStream(root + "JetspeedResources.properties"));
298 
299             TurbineResources trProp = (TurbineResources) TurbineResources
300                     .getResources(root + "JetspeedResources.properties");
301 
302             int counter = 0;
303             if (setBgImage && !setBgColor && (counter == 0))
304             {
305                 setBgColor = true;
306                 bgColor = "FFFFFF";
307                 counter = 1;
308             }
309             if (!setBgImage && setBgColor && (counter == 0))
310             {
311                 setBgImage = true;
312                 bgImage = "";
313                 counter = 1;
314             }
315             if (setBgImage && setBgColor && (counter == 0))
316             {
317                 setBgColor = true;
318                 bgColor = "FFFFFF";
319                 counter = 1;
320             }
321 
322             if (setLogo)
323             {
324                 TurbineResources.setProperty("topnav.logo.file", logo);
325                 prop.setProperty("topnav.logo.file", logo);
326             }
327             if (setBgImage)
328             {
329                 TurbineResources.setProperty("topnav.bg.image", bgImage);
330                 prop.setProperty("topnav.bg.image", bgImage);
331             }
332             if (setBgColor)
333             {
334                 TurbineResources.setProperty("topnav.bg.color", bgColor);
335                 prop.setProperty("topnav.bg.color", bgColor);
336             }
337             if (setFontSize)
338             {
339                 TurbineResources.setProperty("topnav.font.size", fontSize);
340                 prop.setProperty("topnav.font.size", fontSize);
341             }
342             if (setFontColor)
343             {
344                 TurbineResources.setProperty("topnav.font.color", fontColor);
345                 prop.setProperty("topnav.font.color", fontColor);
346             }
347             if (setPortalTitle)
348             {
349                 TurbineResources.setProperty("portal.title", title);
350                 prop.setProperty("portal.title", title);
351             }
352             	
353             FileOutputStream stream = new FileOutputStream(root + "JetspeedResources.properties");
354             prop.store(stream, "topnav.logo.file");
355             prop.store(stream, "topnav.bg.image");
356             prop.store(stream, "topnav.bg.color");
357             prop.store(stream, "topnav.font.size");
358             prop.store(stream, "topnav.font.color");
359             stream.close();
360             
361             String logoJR = prop.getProperty("topnav.logo.file");
362             String bgImageJR = prop.getProperty("topnav.bg.image");
363             String bgColorJR = prop.getProperty("topnav.bg.color");
364             String fontSizeJR = prop.getProperty("topnav.font.size");
365             String fontColorJR = prop.getProperty("topnav.font.color");
366 
367             log.info("new Logo : " + logoJR);
368             log.info("new bgImageJR : " + bgImageJR);
369             log.info("new bgColorJR : " + bgColorJR);
370             log.info("new fontSizeJR : " + fontSizeJR);
371             log.info("new fontColorJR : " + fontColorJR);
372 
373             prop = null;
374             System.gc();
375 
376             context.put("settingStatus", "Successfully changed settings.");
377         } catch (Exception e)
378         {
379             context.put("settingStatus",
380                     "Error occurred while changing settings.");
381             log.error(e);
382         }
383     }
384 
385     public void doDefault(RunData rundata, Context context) throws Exception
386     {
387         try
388         {
389             String logo = IMAGES_DIRECTORY + "jetspeed-logo.gif";
390             String bgImage = "";
391             String fontSize = "10";
392             String title = "Jakarta Jetspeed";
393 
394             String DEFAULT_ROOT = File.separator + "WEB-INF" + File.separator
395                     + "conf" + File.separator;
396             String root = rundata.getServletConfig().getServletContext()
397                     .getRealPath(DEFAULT_ROOT)
398                     + File.separator;
399 
400             Properties prop = new Properties();
401             prop
402                     .load(new FileInputStream(root
403                             + "JetspeedResources.properties"));
404             prop.clone();
405 
406             TurbineResources trProp = (TurbineResources) TurbineResources
407                     .getResources(root + "JetspeedResources.properties");
408 
409             TurbineResources.setProperty("portal.title", title);
410             prop.setProperty("portal.title", title);
411             TurbineResources.setProperty("topnav.logo.file", logo);
412             prop.setProperty("topnav.logo.file", logo);
413             TurbineResources.setProperty("topnav.bg.image","");
414             prop.setProperty("topnav.bg.image","");
415             TurbineResources.setProperty("topnav.bg.color", "");
416             prop.setProperty("topnav.bg.color", ""); 
417       
418             TurbineResources.setProperty("topnav.font.size", ""); 
419             prop.setProperty("topnav.font.size", "");
420       
421             TurbineResources.setProperty("topnav.font.color", ""); 
422 	    prop.setProperty("topnav.font.color", "");  
423 
424 
425             FileOutputStream stream = new FileOutputStream(root + "JetspeedResources.properties");
426                         
427             prop.save(stream, "topnav.logo.file");
428             
429             prop.save(stream, "portal.title");
430             prop.save(stream, "topnav.bg.image");
431             prop.save(stream, "topnav.bg.color");
432             prop.save(stream, "ptopnav.font.size");
433             prop.save(stream, "ptopnav.font.size");
434             stream.close();
435             
436             context.put("settingStatus",
437                     "Successfully changed to default settings.");
438         } catch (Exception e)
439         {
440             context.put("settingStatus",
441                     "Error occurred while changing to default settings. ");
442             log.error(e);
443         }
444     }
445     
446     
447     // Methods used by the portlet designer. Not yet implemented 
448     /*
449     public void doScheme(RunData rundata, Context context)
450     {
451         Registry reg = org.apache.jetspeed.services.Registry
452                 .get("PortletControl");
453 
454         //parameters for border design and skin
455         String portletTheme = rundata.getParameters().getString("PortletTheme");
456         String tabTheme = rundata.getParameters().getString("TabTheme");
457         //conditions for changing portlet settings
458         boolean setPBgImage = rundata.getParameters().getBoolean(
459                 "setPortletBgImage");
460         boolean setPBgColor = rundata.getParameters().getBoolean(
461                 "setPortletBgColor");
462         boolean setPFontFace = rundata.getParameters().getBoolean(
463                 "setPortletFontFace");
464         boolean setPFontColor = rundata.getParameters().getBoolean(
465                 "setPortletFontColor");
466 
467         try
468         {
469             if (setPBgImage || setPBgColor || setPFontFace || setPFontColor)
470             {
471                 Hashtable ht = new Hashtable();
472                 ht.put("setPBgImage", Boolean.valueOf(setPBgImage));
473                 ht.put("setPBgColor", Boolean.valueOf(setPBgColor));
474                 ht.put("setPFontFace", Boolean.valueOf(setPFontFace));
475                 ht.put("setPFontColor", Boolean.valueOf(setPFontColor));
476 
477                 editPortlet(rundata, context, ht);
478             }
479 
480             if (!portletTheme.equalsIgnoreCase("none"))
481             {
482                 BasePortletControlEntry bpce = (BasePortletControlEntry) reg
483                         .getEntry("TitlePortletControl");
484                 Parameter paramName = bpce.getParameter("theme");
485                 String theme = paramName.getValue();
486                 log.info("portletTheme : " + theme);
487                 log.info("!portletTheme.equals('none') : "
488                         + !portletTheme.equals("none"));
489                 log.info("new portletTheme : " + portletTheme);
490 
491                 bpce.removeParameter("theme");
492                 bpce.addParameter("theme", portletTheme);
493             }
494 
495             if (!tabTheme.equalsIgnoreCase("none"))
496             {
497                 BasePortletControlEntry bpce = (BasePortletControlEntry) reg
498                         .getEntry("TabControl");
499                 Parameter paramName = bpce.getParameter("theme");
500                 String theme = paramName.getValue();
501                 log.info("tabTheme : " + theme);
502                 log.info("!tabTheme.equals('none') : "
503                         + !tabTheme.equals("none"));
504                 log.info("new tabTheme : " + tabTheme);
505 
506                 bpce.removeParameter("theme");
507                 bpce.addParameter("theme", tabTheme);
508 
509                 bpce = (BasePortletControlEntry) reg
510                         .getEntry("PanedPortletControl");
511                 paramName = bpce.getParameter("theme");
512                 theme = paramName.getValue();
513                 log.info("tabtheme : " + theme);
514                 log.info("new tabTheme : " + tabTheme);
515 
516                 bpce.removeParameter("theme");
517                 bpce.addParameter("theme", tabTheme);
518 
519                 //setting for menu pane.
520                 String menuTheme = "";
521                 if (tabTheme.indexOf("blue") != -1)
522                         menuTheme = "jetspeed-menu_blue.vm";
523                 if (tabTheme.indexOf("gray") != -1)
524                         menuTheme = "jetspeed-menu_gray.vm";
525                 if (tabTheme.indexOf("green") != -1)
526                         menuTheme = "jetspeed-menu_green.vm";
527                 if (tabTheme.indexOf("red") != -1)
528                         menuTheme = "jetspeed-menu_red.vm";
529                 if (tabTheme.equals("jetspeed-tab.vm"))
530                         menuTheme = "jetspeed-menu.vm";
531 
532                 bpce = (BasePortletControlEntry) reg.getEntry("MenuControl");
533                 paramName = bpce.getParameter("theme");
534                 theme = paramName.getValue();
535 
536                 bpce.removeParameter("theme");
537                 bpce.addParameter("theme", menuTheme);
538 
539             }
540             context.put("settingPStatus",
541                     "Successfully changed to new settings.");
542         } catch (Exception e)
543         {
544             context.put("settingPStatus",
545                     "Error occurred while changing settings.");
546             log.error(e);
547         }
548     }
549 
550     public void editPortlet(RunData rundata, Context context, Hashtable ht)
551     {
552         try
553         {
554             boolean setPBgImage = false;
555             boolean setPBgColor = false;
556             boolean setPFontFace = false;
557             boolean setPFontColor = false;
558 
559             if (ht != null || ht.size() > 0)
560             {
561                 setPBgImage = ((Boolean) ht.get("setPBgImage")).booleanValue();
562                 setPBgColor = ((Boolean) ht.get("setPBgColor")).booleanValue();
563                 setPFontFace = ((Boolean) ht.get("setPFontFace"))
564                         .booleanValue();
565                 setPFontColor = ((Boolean) ht.get("setPFontColor"))
566                         .booleanValue();
567             }
568 
569             FileItem filePBgImage = null;
570             String pBgColor = "";
571             String pFontFace = "";
572             String pFontSize = "";
573             String pFontColor = "";
574 
575             String pBgImage = "";
576 
577             if (setPBgImage)
578             {
579                 String sampleBg = rundata.getParameters().getString(
580                         "samplePBgImage").trim();
581                 log.info("samplePBgImage : " + sampleBg);
582 
583                 if (sampleBg != null && sampleBg.length() != 0)
584                 {
585                     pBgImage = IMAGES_DIRECTORY + sampleBg;
586                 } else
587                 {
588                     filePBgImage = rundata.getParameters().getFileItem(
589                             "portletBgImage");
590                 }
591             }
592 
593             if (setPBgColor)
594             {
595                 pBgColor = rundata.getParameters().getString("portletBgColor")
596                         .trim();
597             }
598             if (setPFontFace)
599             {
600                 pFontFace = rundata.getParameters()
601                         .getString("portletFontFace").trim();
602             }
603             if (setPFontColor)
604             {
605                 pFontColor = rundata.getParameters().getString(
606                         "portletFontColor").trim();
607             }
608 
609             String slash = System.getProperty("file.separator");
610             String imagePath = FormatPath.normalizeDirectoryPath(rundata.getServletContext().getRealPath("/" + IMAGES_DIRECTORY));
611                     
612             String cssFullPath = FormatPath.normalizeDirectoryPath(rundata.getServletContext().getRealPath("/" + DEFAULT_CSS));
613 
614             if (filePBgImage != null)
615             {
616                 log.info("Entering uploadBgImage");
617                 File file1 = new File(filePBgImage.getFileName());
618                 pBgImage = file1.getName();
619 
620                 int index = pBgImage.lastIndexOf("//");
621                 int index2 = pBgImage.lastIndexOf("//");
622 
623                 if (index > 0)
624                 {
625                     pBgImage = pBgImage.substring(index + 1);
626                 }
627 
628                 if (index2 > 0)
629                 {
630                     pBgImage = pBgImage.substring(index2 + 1);
631                 }
632 
633                 log.info("File2 : " + pBgImage);
634 
635                 //filePBgImage.write(imagePath + pBgImage);
636                 FileUploader fu = new FileUploader();
637                 boolean hasUploaded = fu.upload(filePBgImage, imagePath,
638                         fileTypes);
639 
640                 if (hasUploaded == true)
641                     pBgImage = IMAGES_DIRECTORY + pBgImage;
642                 else
643                 {
644                     context
645                             .put(
646                                     "bgPStatus",
647                                     "Error occurred while uploading "
648                                             + pBgImage
649                                             + ". Only gif, jpg, and jpeg image files can be uploaded. ");
650                     pBgImage = "";
651                 }
652 
653                 log.info("writing : " + imagePath + pBgImage);
654             }
655 
656             boolean hasPColor = (pBgColor == null || pBgColor.length() < 1);
657             boolean hasPFontFace = (pFontFace == null || pFontFace.length() < 1);
658             boolean hasPFontSize = (pFontSize == null || pFontSize.length() < 1);
659             boolean hasPFontColor = (pFontColor == null || pFontColor.length() < 1);
660 
661             if (hasPColor)
662             {
663                 pBgColor = "white";
664             }
665             if (hasPFontFace)
666             {
667                 pFontFace = "verdana";
668             }
669             if (hasPFontSize)
670             {
671                 pFontSize = "12";
672             }
673             if (hasPFontColor)
674             {
675                 pFontColor = "000000";
676             }
677 
678             String DEFAULT_ROOT = File.separator + "WEB-INF" + File.separator
679                     + "conf" + File.separator;
680             String root = rundata.getServletConfig().getServletContext()
681                     .getRealPath(DEFAULT_ROOT)
682                     + File.separator;
683 
684             Properties prop = new Properties();
685             prop.clear();
686             prop
687                     .load(new FileInputStream(root
688                             + "JetspeedResources.properties"));
689 
690             TurbineResources trProp = (TurbineResources) TurbineResources
691                     .getResources(root + "JetspeedResources.properties");
692 
693             int counter = 0;
694             if (setPBgImage && !setPBgColor && (counter == 0))
695             {
696                 setPBgColor = true;
697                 pBgColor = "FFFFFF";
698                 counter = 1;
699             }
700             if (!setPBgImage && setPBgColor && (counter == 0))
701             {
702                 setPBgImage = true;
703                 pBgImage = "";
704                 counter = 1;
705             }
706             if (setPBgImage && setPBgColor && (counter == 0))
707             {
708                 setPBgColor = true;
709                 pBgColor = "FFFFFF";
710                 counter = 1;
711             }
712 
713             if (setPBgImage)
714             {
715                 trProp.setProperty("portlet.bg.image", pBgImage);
716                 prop.setProperty("portlet.bg.image", pBgImage);
717             }
718             if (setPBgColor)
719             {
720                 trProp.setProperty("portlet.bg.color", pBgColor);
721                 prop.setProperty("portlet.bg.color", pBgColor);
722             }
723             if (setPFontFace)
724             {
725                 trProp.setProperty("portlet.font.face", pFontFace);
726                 prop.setProperty("portlet.font.face", pFontFace);
727             }
728             if (setPFontColor)
729             {
730                 trProp.setProperty("portlet.font.color", pFontColor);
731                 prop.setProperty("portlet.font.color", pFontColor);
732             }
733 
734             FileOutputStream stream = new FileOutputStream(root + "JetspeedResources.properties");                      
735             prop.save(stream, "portlet.logo.file");
736             prop.save(stream, "portlet.bg.image");
737             prop.save(stream, "portlet.bg.color");
738             prop.save(stream, "portlet.font.face");
739             prop.save(stream, "portlet.font.color");
740             stream.close();
741             String pbgImageJR = prop.getProperty("portlet.bg.image");
742             String pbgColorJR = prop.getProperty("portlet.bg.color");
743             String pfontFaceJR = prop.getProperty("portlet.font.face");
744             //String pfontSizeJR = prop.getProperty("portlet.font.size");
745             String pfontColorJR = prop.getProperty("portlet.font.color");
746 
747             CSSTemplate.buildTemplate(cssFullPath, pfontFaceJR, pfontColorJR);
748 
749             log.info("new bgImageJR : " + pbgImageJR);
750             log.info("new bgColorJR : " + pbgColorJR);
751             log.info("new fontFaceJR : " + pfontFaceJR);
752             log.info("new fontColorJR : " + pfontColorJR);
753 
754             context.put("settingPStatus",
755                     "Successfully change to new settings.");
756 
757         } catch (Exception e)
758         {
759             context.put("settingPStatus",
760                     "Error occured while changing settings.");
761             log.error(e);
762         }
763     }
764 
765     public void doPdefault(RunData rundata, Context context)
766     {
767         try
768         {
769             //change to default for tab and menu theme
770             String portletTheme = "jetspeed.vm";
771             String tabTheme = "jetspeed-tab.vm";
772             String menuTheme = "jetspeed-menu.vm";
773 
774             Registry reg = org.apache.jetspeed.services.Registry
775                     .get("PortletControl");
776 
777             //for portletTheme
778             BasePortletControlEntry bpce = (BasePortletControlEntry) reg
779                     .getEntry("TitlePortletControl");
780             Parameter paramName = bpce.getParameter("theme");
781             String theme = paramName.getValue();
782             log.info("portletTheme : " + theme);
783             log.info("!portletTheme.equals('none') : "
784                     + !portletTheme.equals("none"));
785             log.info("new portletTheme : " + portletTheme);
786 
787             bpce.removeParameter("theme");
788             bpce.addParameter("theme", portletTheme);
789 
790             //for tabTheme
791             bpce = (BasePortletControlEntry) reg.getEntry("TabControl");
792             paramName = bpce.getParameter("theme");
793             theme = paramName.getValue();
794             log.info("tabTheme : " + theme);
795             log.info("!tabTheme.equals('none') : " + !tabTheme.equals("none"));
796             log.info("new tabTheme : " + tabTheme);
797 
798             bpce.removeParameter("theme");
799             bpce.addParameter("theme", tabTheme);
800 
801             bpce = (BasePortletControlEntry) reg
802                     .getEntry("PanedPortletControl");
803             paramName = bpce.getParameter("theme");
804             theme = paramName.getValue();
805             log.info("tabtheme : " + theme);
806             log.info("new tabTheme : " + tabTheme);
807 
808             bpce.removeParameter("theme");
809             bpce.addParameter("theme", tabTheme);
810 
811             //for menuTheme
812             bpce = (BasePortletControlEntry) reg.getEntry("MenuControl");
813             paramName = bpce.getParameter("theme");
814             theme = paramName.getValue();
815 
816             bpce.removeParameter("theme");
817             bpce.addParameter("theme", menuTheme);
818 
819             //change to default for font face and size, background,
820             String slash = System.getProperty("file.separator");
821             String cssFullPath = FormatPath.normalizeDirectoryPath(rundata.getServletContext().getRealPath("/" + DEFAULT_CSS));
822             
823             CSSTemplate.buildTemplate(cssFullPath, "verdana", "000000");
824 
825             String bgImage = "";
826             String bgColor = "white";
827 
828             String DEFAULT_ROOT = File.separator + "WEB-INF" + File.separator
829                     + "conf" + File.separator;
830             String root = rundata.getServletConfig().getServletContext()
831                     .getRealPath(DEFAULT_ROOT)
832                     + File.separator;
833 
834             Properties prop = new Properties();
835             prop.clear();
836             
837             FileInputStream istream = new FileInputStream(root + "JetspeedResources.properties");
838                         
839             prop.load(istream);
840             istream.close();
841             
842             TurbineResources trProp = (TurbineResources) TurbineResources
843                     .getResources(root + "JetspeedResources.properties");
844 
845             trProp.setProperty("portlet.bg.image", bgImage);
846             prop.setProperty("portlet.bg.image", bgImage);
847             trProp.setProperty("portlet.bg.color", bgColor);
848             prop.setProperty("portlet.bg.color", bgColor);
849             trProp.setProperty("portlet.font.color", "000000");
850             prop.setProperty("portlet.font.color", "000000");
851             trProp.setProperty("portlet.font.face", "verdana");
852             prop.setProperty("portlet.font.face", "verdana");
853 
854             FileOutputStream stream = new FileOutputStream(root + "JetspeedResources.properties");
855             
856             prop.store(stream, "portlet.bg.image");
857             prop.store(stream, "portlet.bg.color");
858             stream.close();
859             context.put("settingPStatus",
860                     "Successfully changed to default settings.");
861         } catch (Exception e)
862         {
863             context.put("settingPStatus",
864                     "Error occurred while changing to default settings.");
865             log.error(e);
866         }
867     }
868    */ 
869 
870 }
871