Package org.infoglue.cms.applications.managementtool.actions

Source Code of org.infoglue.cms.applications.managementtool.actions.WYSIWYGPropertiesAction

/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/

package org.infoglue.cms.applications.managementtool.actions;

import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentVersionController;
import org.infoglue.cms.entities.content.ContentVersionVO;
import org.infoglue.cms.io.FileHelper;
import org.infoglue.cms.util.CmsPropertyHandler;
import org.infoglue.deliver.util.VelocityTemplateProcessor;

import com.opensymphony.module.propertyset.PropertySet;
import com.opensymphony.module.propertyset.PropertySetManager;

/**
* This class/action returns the WYSIWYG configuration in full.
*
* @author Mattias Bogeblad
*/

public class WYSIWYGPropertiesAction extends InfoGlueAbstractAction
{
    private final static Logger logger = Logger.getLogger(WYSIWYGPropertiesAction.class.getName());

  private static final long serialVersionUID = 1L;

  private Integer repositoryId = null;

  private String WYSIWYGProperties = "";
  private String StylesXML = "";
 
    public String doExecute() throws Exception
    {
      return "success";
    }

    public String doViewStylesXML() throws Exception
    {
      return "successStylesXML";
    }

  /**
   * This method gets the WYSIWYG Properties
   */
 
  public String getWYSIWYGProperties() throws Exception
  {
      try
      {
        this.WYSIWYGProperties = getPrincipalPropertyValue("WYSIWYGConfig", false, false, true);
        logger.info("WYSIWYGProperties:" + WYSIWYGProperties);
        if(this.WYSIWYGProperties == null || this.WYSIWYGProperties.equalsIgnoreCase("") && this.repositoryId != null)
        {
            logger.info("Getting WYSIWYGProperties for repository...");
        Map args = new HashMap();
          args.put("globalKey", "infoglue");
          PropertySet ps = PropertySetManager.getInstance("jdbc", args);
         
          byte[] WYSIWYGConfigBytes = ps.getData("repository_" + this.repositoryId + "_WYSIWYGConfig");
          logger.info("WYSIWYGConfigBytes:" + WYSIWYGConfigBytes);
          if(WYSIWYGConfigBytes != null)
          {
            this.WYSIWYGProperties = new String(WYSIWYGConfigBytes, "UTF-8");
            if(!this.WYSIWYGProperties.trim().equals(""))
            {
              this.WYSIWYGProperties = this.WYSIWYGProperties + "//Repo properties: " + this.repositoryId;
            }
          }
        }
        
        logger.info("this.WYSIWYGProperties:" + this.WYSIWYGProperties);
      }
      catch(Exception e)
      {
          logger.error("Could not fetch WYSIWYG Configuration: " + e.getMessage(), e);
      }
      finally
      {
          try
            {
                if(this.WYSIWYGProperties == null || this.WYSIWYGProperties.equals(""))
                {
                    this.WYSIWYGProperties = FileHelper.getFileAsString(new File(CmsPropertyHandler.getContextRootPath() + "cms/contenttool/WYSIWYGConfig.js"));
            this.WYSIWYGProperties = this.WYSIWYGProperties + "//File properties";
                }
            }
            catch (Exception e1)
            {
                e1.printStackTrace();
            }
         
      }

      try
      {
        Map parameters = new HashMap();
        parameters.put("request", this.getRequest());
      if(this.getRequest().getParameter("contentVersionId") == null)
      {
        logger.info("No content version sent in.. we fetch latest instead");
        String contentId = this.getRequest().getParameter("contentId");
        String languageId = this.getRequest().getParameter("languageId");
        logger.info("contentId:" + contentId);
        logger.info("languageId:" + languageId);
        if(contentId != null && !contentId.equals("-1") && languageId != null && !languageId.equals("-1"))
        {
          ContentVersionVO cvo = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(new Integer(contentId), new Integer(languageId));
          if(cvo != null)
            parameters.put("contentVersionId", cvo.getId());
        }
      }
      else
      {
        parameters.put("contentVersionId", this.getRequest().getParameter("contentVersionId"));
      }
 
      String languageCode = CmsPropertyHandler.getPreferredLanguageCode(getInfoGluePrincipal().getName());
      parameters.put("principalLanguageCode", languageCode);
     
      StringWriter tempString = new StringWriter();
      PrintWriter pw = new PrintWriter(tempString);
      logger.info("this.WYSIWYGProperties:" + this.WYSIWYGProperties);
      VelocityTemplateProcessor vtp = new VelocityTemplateProcessor();
      vtp.renderTemplate(parameters, pw, this.WYSIWYGProperties, true);
      this.WYSIWYGProperties = tempString.toString();
       
        this.getResponse().setContentType("text/javascript");
      }
      catch (Throwable t1)
        {
            logger.error("Error parsing WYSIWYGProperties:" + t1.getMessage());
            logger.warn("Error parsing WYSIWYGProperties:" + t1.getMessage(), t1);
        }
     
      return this.WYSIWYGProperties;
  }

  /**
   * This method gets the Styles XML
   */
 
  public String getStylesXML()
  {
      try
      {
          this.StylesXML = getPrincipalPropertyValue("StylesXML", false);
        logger.info("this.StylesXML:" + this.StylesXML);
        if(this.StylesXML == null || this.StylesXML.equalsIgnoreCase("") && this.repositoryId != null)
        {
            logger.info("Getting StylesXML for repository...");
        Map args = new HashMap();
          args.put("globalKey", "infoglue");
          PropertySet ps = PropertySetManager.getInstance("jdbc", args);
         
          byte[] StylesXMLBytes = ps.getData("repository_" + this.repositoryId + "_StylesXML");
          if(StylesXMLBytes != null)
          {
            this.StylesXML = new String(StylesXMLBytes, "UTF-8");
          }
        }
      }
      catch(Exception e)
      {
          logger.error("Could not fetch Styles XML: " + e.getMessage(), e);
      }
      finally
      {
          try
            {
              if(this.StylesXML == null || this.StylesXML.equals(""))
                  this.StylesXML = FileHelper.getFileAsString(new File(CmsPropertyHandler.getContextRootPath() + "cms/contenttool/StylesXML.xml"));
            }
            catch (Exception e1)
            {
                e1.printStackTrace();
            }
      }
     
      this.getResponse().setContentType("text/xml");
      return this.StylesXML;
  }

  /**
   * This method gets the toolbar css.
   */
 
  public String doWYSIWYGToolbarComboPreviewCSS()
  {
    String WYSIWYGToolbarComboPreviewCSS = CmsPropertyHandler.getWYSIWYGToolbarComboPreviewCSS();
    try
    {
      this.getResponse().setContentType("text/css");
        this.getResponse().getWriter().println(WYSIWYGToolbarComboPreviewCSS);
        this.getResponse().getWriter().flush();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
   
      return NONE;
  }

  /**
   * This method gets the toolbar css.
   */
 
  public String doWYSIWYGEditorAreaCSS()
  {
    String WYSIWYGEditorAreaCSS = CmsPropertyHandler.getWYSIWYGEditorAreaCSS();
    try
    {
      this.getResponse().setContentType("text/css");
        this.getResponse().getWriter().println(WYSIWYGEditorAreaCSS);
        this.getResponse().getWriter().flush();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
   
      return NONE;
  }

  public String getWYSIWYGSettings()
  {
    try
    {
      return FileHelper.getFileAsString(new File(CmsPropertyHandler.getContextRootPath() + "cms/contenttool/WYSIWYGSettings.js"));
    }
    catch (Exception ex)
    {
      logger.error("Error when getting WYSIWYG settings. Message: " + ex.getMessage());
      logger.warn("Error when getting WYSIWYG settings.", ex);
      return "/* WYSIWYG settings threw an exception. Message: " + ex.getMessage() + " */";
    }
  }
 
    public void setRepositoryId(Integer repositoryId)
    {
        this.repositoryId = repositoryId;
    }
}
TOP

Related Classes of org.infoglue.cms.applications.managementtool.actions.WYSIWYGPropertiesAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.