/* * $Id: ArticleUtil.java,v 1.25 2009/05/05 09:00:53 valdas Exp $ * Created on 7.2.2005 * * Copyright (C) 2005 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. */ package com.idega.block.article.business; import java.io.File; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.el.ValueExpression; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import org.apache.myfaces.custom.savestate.UISaveState; import com.idega.block.article.ArticleCacher; import com.idega.block.web2.business.Web2Business; import com.idega.content.business.ContentUtil; import com.idega.content.presentation.ContentItemViewer; import com.idega.core.builder.business.BuilderService; import com.idega.core.builder.business.BuilderServiceFactory; import com.idega.core.builder.data.ICPage; import com.idega.core.localisation.business.LocaleSwitcher; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.include.AtomLink; import com.idega.presentation.IWContext; import com.idega.util.CoreConstants; import com.idega.util.CoreUtil; import com.idega.util.PresentationUtil; import com.idega.util.StringHandler; import com.idega.util.StringUtil; import com.idega.util.expression.ELUtil; import com.idega.webface.WFUtil; /** * * Last modified: $Date: 2009/05/05 09:00:53 $ by $Author: valdas $ * * @author <a href="mailto:gummi@idega.com">Gudmundur Agust Saemundsson</a> * @version $Revision: 1.25 $ */ public class ArticleUtil { private static IWBundle bundle = null; public static IWBundle getBundle() { if (bundle == null) { setupBundle(); } return bundle; } private static void setupBundle() { FacesContext context = FacesContext.getCurrentInstance(); IWContext iwContext = IWContext.getIWContext(context); bundle = iwContext.getIWMainApplication().getBundle(ArticleConstants.IW_BUNDLE_IDENTIFIER); } public static String getContentRootPath(){ return ContentUtil.getContentBaseFolderPath(); } /** * <p> * This article returns the standard root or 'baseFolderPath' for articles.<br/> * By default this is /files/cms/article * </p> * @return */ public static String getArticleBaseFolderPath(){ return ContentUtil.getContentBaseFolderPath() + CoreConstants.ARTICLE_CONTENT_PATH; } public static String getFilenameFromPath(String path) { File file = new File(path); return file.getName(); } public static boolean isPageTypeBlog(IWContext iwc) { if (iwc == null) { return false; } int id = iwc.getCurrentIBPageID(); if (id < 0) { return false; } BuilderService builder = null; try { builder = BuilderServiceFactory.getBuilderService(iwc); } catch (RemoteException e) { e.printStackTrace(); return false; } return isPageTypeBlog(builder.getICPage(String.valueOf(id))); } public static boolean isPageTypeBlog(ICPage page) { if (page == null) { return false; } if ("blog".equals(page.getSubType())) { return true; } return false; } public static final List<String> getCSSFilesForArticle() { List<String> css = new ArrayList<String>(2); Web2Business web2 = ELUtil.getInstance().getBean(Web2Business.class); css.add(web2.getBundleURIToFancyBoxStyleFile()); // FancyBox css.add(ContentUtil.getBundle().getVirtualPathWithFileNameString("style/content-admin.css")); return css; } @SuppressWarnings("deprecation") public static final List<String> getJavaScriptFilesForArticle() { List<String> javaScript = new ArrayList<String>(); Web2Business web2 = ELUtil.getInstance().getBean(Web2Business.class); javaScript.add(CoreConstants.DWR_ENGINE_SCRIPT); javaScript.add("/dwr/interface/LucidEngine.js"); javaScript.add(web2.getBundleURIToJQueryLib()); // jQuery javaScript.addAll(web2.getBundleURIsToFancyBoxScriptFiles()); // FancyBox javaScript.add(ContentUtil.getBundle().getVirtualPathWithFileNameString("javascript/ContentAdmin.js")); javaScript.add(getBundle().getVirtualPathWithFileNameString("javascript/ArticleEditorHelper.js")); javaScript.add(getBundle().getVirtualPathWithFileNameString("javascript/ArticleCategoriesHelper.js")); return javaScript; } public static final String getArticleEditorInitializerAction(boolean executeOnLoad) { String action = "ArticleEditorHelper.initializeJavaScriptActionsForEditingAndCreatingArticles();"; if (executeOnLoad) { action = new StringBuilder("jQuery(window).load(function() {").append(action).append("});").toString(); } return action; } public static final String getSourcesAndActionForArticleEditor() { List<String> sources = new ArrayList<String>(); // CSS sources.addAll(getCSSFilesForArticle()); // JavaScript sources.addAll(getJavaScriptFilesForArticle()); return PresentationUtil.getJavaScriptAction(PresentationUtil.getJavaScriptLinesLoadedLazily(sources, getArticleEditorInitializerAction(false))); } public static UISaveState getBeanSaveState(String beanId) { UISaveState beanSaveState = new UISaveState(); ValueExpression binding = WFUtil.createValueExpression(CoreUtil.getIWContext().getELContext(), new StringBuilder("#{").append(beanId).append("}") .toString(), Object.class); beanSaveState.setId(new StringBuilder(beanId).append("SaveState").toString()); beanSaveState.setValueExpression("value", binding); return beanSaveState; } public static final boolean addArticleFeedFacet(IWContext iwc, Map<String, UIComponent> facets) { if (facets == null) { return false; } BuilderService bservice = null; try { bservice = BuilderServiceFactory.getBuilderService(iwc); } catch (RemoteException e) { e.printStackTrace(); } if (bservice == null) { return false; } String serverName = iwc.getServerURL(); String feedUri = null; try { feedUri = bservice.getCurrentPageURI(iwc); } catch (RemoteException e) { e.printStackTrace(); } if (StringUtil.isEmpty(feedUri)) { return false; } if (!feedUri.endsWith(CoreConstants.SLASH)) { feedUri = new StringBuilder(feedUri).append(CoreConstants.SLASH).toString(); } String linkToFeed = new StringBuilder(serverName).append("rss/article").append(feedUri).append("?").append(LocaleSwitcher.languageParameterString) .append(CoreConstants.EQ).append(iwc.getCurrentLocale().toString()).toString(); AtomLink atomFeed = new AtomLink(linkToFeed); PresentationUtil.addFeedLink(iwc, atomFeed); return true; } public static void removeLazyScript(IWContext iwc, UIComponent component) { if (iwc == null || component == null) { return; } ArticleCacher cacher = ArticleCacher.getInstance(iwc.getIWMainApplication()); if (cacher.existsInCache(component, iwc)) { String key = cacher.getCacheKey(component, iwc); String content = cacher.getCacheMap().get(key); if (!StringUtil.isEmpty(content)) { String lazyScript = ArticleUtil.getSourcesAndActionForArticleEditor(); content = StringHandler.remove(content, lazyScript); cacher.getCacheMap().put(key, content); } } if (component.getFacets().containsKey(ContentItemViewer.FACET_JAVA_SCRIPT)) { component.getFacets().remove(ContentItemViewer.FACET_JAVA_SCRIPT); } } }