/* * $Id: ListArticlesBlock.java,v 1.18 2009/05/27 16:10:06 valdas Exp $ * * Copyright (C) 2004 Idega. All Rights Reserved. * * This software is the proprietary information of Idega. * Use is subject to license terms. * */ package com.idega.block.article.component; import java.io.IOException; import java.io.Serializable; import java.util.Locale; import javax.faces.component.UIComponent; import javax.faces.component.html.HtmlInputText; import javax.faces.component.html.HtmlPanelGrid; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.faces.event.ActionListener; import com.idega.block.article.IWBundleStarter; import com.idega.block.article.bean.ArticleItemBean; import com.idega.content.bean.ManagedContentBeans; import com.idega.content.data.ContentItemCase; import com.idega.presentation.IWBaseComponent; import com.idega.webface.WFComponentSelector; import com.idega.webface.WFContainer; import com.idega.webface.WFMessages; import com.idega.webface.WFList; import com.idega.webface.WFPanelUtil; import com.idega.webface.WFPlainOutputText; import com.idega.webface.WFUtil; import com.idega.webface.convert.WFDateConverter; /** * Block for listing articles. * <p> * Last modified: $Date: 2009/05/27 16:10:06 $ by $Author: valdas $ * * @author Anders Lindman * @version $Revision: 1.18 $ */ public class ListArticlesBlock extends IWBaseComponent implements ManagedContentBeans, ActionListener, Serializable { private static final long serialVersionUID = 1565601375826103620L; public final static String LIST_ARTICLES_BLOCK_ID = "list_articles_block"; public final static String LIST_ARTICLES_BEAN_ID = "listArticlesBeanOld"; private final static String P = "list_articles_block_"; // Id prefix private final static String SEARCH_PUBLISHED_FROM_ID = P + "search_published_from"; private final static String SEARCH_PUBLISHED_TO_ID = P + "search_published_to"; //private final static String SEARCH_CATEGORY_ID = P + "search_category"; private final static String RESULT_LIST_ID = P + "result_list"; //private final static String LOCALE_ID = P + "locale_id"; private final static String LIST_BUTTON_ID = P + "list_button"; private final static String VIEW_ARTICLE_BACK_BUTTON_ID = P + "view_back_button"; private final static String LIST_PANEL_ID = P + "list_panel"; private final static String VIEW_ARTICLE_PANEL_ID = P + "view_article_panel"; private final static String DISPLAY_SELECTOR_ID = P + "selector"; /** * Constructs a ListArticlesBlock with the specified title key. */ public ListArticlesBlock() { WFUtil.invoke(LIST_ARTICLES_BEAN_ID, "setArticleLinkListener", this, ActionListener.class); } @Override protected void initializeComponent(FacesContext context) { setId(LIST_ARTICLES_BLOCK_ID); WFComponentSelector cs = new WFComponentSelector(); cs.setId(DISPLAY_SELECTOR_ID); cs.add(getListPanel()); cs.add(getViewArticlePanel()); cs.setSelectedId(LIST_PANEL_ID, true); cs.setSelectedId(VIEW_ARTICLE_PANEL_ID, false); add(cs); } /* * Creates a search form panel. */ private UIComponent getListPanel() { WFContainer listPanel = new WFContainer(); listPanel.setId(LIST_PANEL_ID); listPanel.add(getSearchPanel()); listPanel.add(WFUtil.getBreak()); listPanel.add(getSearchResultList()); return listPanel; } /* * Creates a search form panel. */ private UIComponent getSearchPanel() { String ref = LIST_ARTICLES_BEAN_ID + "."; String bid = IWBundleStarter.BUNDLE_IDENTIFIER; WFContainer mainContainer = new WFContainer(); WFMessages em = new WFMessages(); em.addMessageToDisplay(SEARCH_PUBLISHED_FROM_ID); em.addMessageToDisplay(SEARCH_PUBLISHED_TO_ID); mainContainer.add(em); HtmlPanelGrid p = WFPanelUtil.getFormPanel(3); p.getChildren().add(WFUtil.group(WFUtil.getTextVB(bid, "published_from"), WFUtil.getText(":"))); p.getChildren().add(WFUtil.group(WFUtil.getTextVB(bid, "published_to"), WFUtil.getText(":"))); p.getChildren().add(WFUtil.group(WFUtil.getTextVB(bid, "category"), WFUtil.getText(":"))); HtmlInputText searchPublishedFromInput = WFUtil.getInputText(SEARCH_PUBLISHED_FROM_ID, ref + "searchPublishedFrom"); searchPublishedFromInput.setSize(20); searchPublishedFromInput.setConverter(new WFDateConverter()); p.getChildren().add(searchPublishedFromInput); HtmlInputText searchPublishedToInput = WFUtil.getInputText(SEARCH_PUBLISHED_TO_ID, ref + "searchPublishedTo"); searchPublishedToInput.setSize(20); searchPublishedToInput.setConverter(new WFDateConverter()); p.getChildren().add(searchPublishedToInput); //HtmlSelectOneMenu searchCategoryMenu = WFUtil.getSelectOneMenu(SEARCH_CATEGORY_ID, ref + "categories", ref + "searchCategoryId"); //searchCategoryMenu.setConverter(new IntegerConverter()); //p.getChildren().add(searchCategoryMenu); mainContainer.add(p); mainContainer.add(WFUtil.getText(" ")); p = WFPanelUtil.getPlainFormPanel(1); p.getChildren().add(WFUtil.getButtonVB(LIST_BUTTON_ID, bid, "list", this)); mainContainer.add(p); return mainContainer; } /* * Returns the article list. */ private UIComponent getSearchResultList() { WFList l = new WFList(LIST_ARTICLES_BEAN_ID, 0, 5); l.setRowClasses(null); l.setId(RESULT_LIST_ID); l.setNavigationBelowList(true); return l; } /* * Returns the view article panel. */ private UIComponent getViewArticlePanel() { String ref = ARTICLE_ITEM_BEAN_ID + "."; String bid = IWBundleStarter.BUNDLE_IDENTIFIER; WFContainer c = new WFContainer(); c.setStyleAttribute("padding", "10px"); c.setId(VIEW_ARTICLE_PANEL_ID); c.add(WFUtil.getTextVB(ref + "case.publishedFromDate")); c.add(new WFPlainOutputText("  ")); //HtmlSelectOneMenu localeMenu = WFUtil.getSelectOneMenu(LOCALE_ID, ref + "allLocales", ref + "localeId"); //localeMenu.setOnchange("document.forms[0].submit();"); //c.add(localeMenu); c.add(WFUtil.getBreak(2)); c.add(WFUtil.getLinkVB("", ref + "headline", null)); c.add(WFUtil.getBreak(2)); WFPlainOutputText t = new WFPlainOutputText(); WFUtil.setValueBinding(t, "value", ref + "body"); c.add(t); c.add(WFUtil.getBreak(2)); c.add(WFUtil.getButtonVB(VIEW_ARTICLE_BACK_BUTTON_ID, bid, "back", this)); return c; } /** * javax.faces.event.ActionListener#processAction() */ public void processAction(ActionEvent event) { if (event.getComponent().getId().equals(LIST_BUTTON_ID)) { WFUtil.invoke(LIST_ARTICLES_BEAN_ID, "list"); return; } else if (event.getComponent().getId().equals(VIEW_ARTICLE_BACK_BUTTON_ID)) { WFComponentSelector cs = (WFComponentSelector) event.getComponent().findComponent(DISPLAY_SELECTOR_ID); cs.setSelectedId(LIST_PANEL_ID, true); cs.setSelectedId(VIEW_ARTICLE_PANEL_ID, false); return; } UIComponent link = event.getComponent(); String id = WFUtil.getParameter(link, "id"); ArticleItemBean articleItem = new ArticleItemBean(); try { articleItem.setResourcePath(id); articleItem.load(); ArticleItemBean bean = getArticleItemBean(); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "clear"); bean.clear(); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setLocaleId", "en"); Locale locale = new Locale("en"); bean.setLocale(locale); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setHeadline", notNull(articleItem.getHeadline())); bean.setHeadline(articleItem.getHeadline()); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setTeaser", notNull(articleItem.getTeaser())); bean.setTeaser(articleItem.getTeaser()); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setBody", notNull(articleItem.getBody())); bean.setBody(articleItem.getBody()); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setAuthor", notNull(articleItem.getAuthor())); bean.setAuthor(articleItem.getAuthor()); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setComment", notNull(articleItem.getComment())); bean.setComment(articleItem.getComment()); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setDescription", notNull(articleItem.getDescription())); bean.setDescription(articleItem.getDescription()); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setStatus", // articleItem.getStatus() // ContentItemCase.STATUS_PUBLISHED // ); bean.setStatus(ContentItemCase.STATUS_PUBLISHED); // WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setMainCategoryId", new Integer(3)); // WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setFolderLocation", notNull(articleItem.getFolderLocation())); bean.setBaseFolderLocation(articleItem.getBaseFolderLocation()); //WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setLocaleId", "sv"); //And one more time since it won't work after just setting the params once... /*WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setHeadline", notNull(articleItem.getHeadline())); WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setTeaser", notNull(articleItem.getTeaser())); WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setBody", notNull(articleItem.getBody())); WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setAuthor", notNull(articleItem.getAuthor())); WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setFolderLocation", notNull(articleItem.getBaseFolderLocation())); */ bean.setHeadline(articleItem.getHeadline()); bean.setTeaser(articleItem.getTeaser()); bean.setBody(articleItem.getBody()); bean.setAuthor(articleItem.getAuthor()); bean.setBaseFolderLocation(articleItem.getBaseFolderLocation()); WFComponentSelector cs = (WFComponentSelector) event.getComponent().getParent().getParent().getParent().findComponent(DISPLAY_SELECTOR_ID); cs.setSelectedId(LIST_PANEL_ID, false); cs.setSelectedId(VIEW_ARTICLE_PANEL_ID, true); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /*private String notNull(String str) { if(null==str) { return "<Empty>"; } return str; }*/ public ArticleItemBean getArticleItemBean(){ return (ArticleItemBean) WFUtil.getBeanInstance(ARTICLE_ITEM_BEAN_ID); } }