/*
* $Id: SearchArticleBlock.java,v 1.14 2007/06/07 10:15:44 eiki 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.Serializable;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import org.apache.myfaces.custom.calendar.HtmlInputCalendar;
import org.apache.myfaces.custom.stylesheet.Stylesheet;
import com.idega.content.bean.ManagedContentBeans;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWMainApplication;
import com.idega.presentation.Script;
import com.idega.webface.WFBlock;
import com.idega.webface.WFContainer;
import com.idega.webface.WFMessages;
import com.idega.webface.WFList;
import com.idega.webface.WFPanelUtil;
import com.idega.webface.WFUtil;
/**
* Block for searching articles.
* <p>
* Last modified: $Date: 2007/06/07 10:15:44 $ by $Author: eiki $
*
* @author Anders Lindman
* @version $Revision: 1.14 $
*/
public class SearchArticleBlock extends WFBlock implements ManagedContentBeans, ActionListener, Serializable {
private static final long serialVersionUID = 3256441400122814775L;
public final static String SEARCH_ARTICLE_BLOCK_ID = "search_article_block";
private final static String P = "search_article_block_"; // Id prefix
private final static String SEARCH_TEXT_ID = P + "search_text";
private final static String SEARCH_AUTHOR_ID = P + "search_author";
private final static String SEARCH_CATEGORY_ID = P + "search_category";
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_BUTTON_ID = P + "search_button";
private final static String RESULT_LIST_ID = P + "result_list";
/**
* Default contructor.
*/
public SearchArticleBlock() {
super("Article Search");
setId(SEARCH_ARTICLE_BLOCK_ID);
WFUtil.invoke(SEARCH_ARTICLE_BEAN_ID, "setArticleLinkListener", this, ActionListener.class);
}
/* (non-Javadoc)
* @see com.idega.presentation.IWBaseComponent#initializeContent()
*/
protected void initializeComponent(FacesContext context) {
add(getSearchPanel());
add(WFUtil.getBreak());
add(getSearchResultList());
add(WFUtil.getBreak());
}
/*
* Creates a search form panel.
*/
private UIComponent getSearchPanel() {
String ref = SEARCH_ARTICLE_BEAN_ID + ".";
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);
//adding myfaces component stuff
IWMainApplication iwma = IWMainApplication.getDefaultIWMainApplication();
IWBundle myfacesBundle = iwma.getBundle("org.apache.myfaces");
String jsPath = myfacesBundle.getResourcesVirtualPath()+"/popcalendar.js";
String styleSheet1Path = myfacesBundle.getResourcesVirtualPath()+"/style/WH/theme.css";
String styleSheet2Path = myfacesBundle.getResourcesVirtualPath()+"/style/DB/theme.css";
Stylesheet stylesheet = new Stylesheet();
stylesheet.setPath(styleSheet1Path);
stylesheet.setId("css1");
mainContainer.add(stylesheet);
Stylesheet stylesheet2 = new Stylesheet();
stylesheet2.setPath(styleSheet2Path);
stylesheet2.setId("css2");
mainContainer.add(stylesheet2);
Script script = new Script();
script.setScriptSource(jsPath);
mainContainer.add(script);
//myfaces done
p.getChildren().add(WFUtil.getText("Article text:"));
p.getChildren().add(WFUtil.getText("Author:"));
p.getChildren().add(WFUtil.getText("Category"));
HtmlInputText searchTextInput = WFUtil.getInputText(SEARCH_TEXT_ID, ref + "searchText");
searchTextInput.setSize(40);
p.getChildren().add(searchTextInput);
HtmlInputText searchAuthorInput = WFUtil.getInputText(SEARCH_AUTHOR_ID, ref + "searchAuthor");
searchAuthorInput.setSize(30);
p.getChildren().add(searchAuthorInput);
HtmlSelectOneMenu searchCategoryMenu = WFUtil.getSelectOneMenu(SEARCH_CATEGORY_ID, ref + "categories", ref + "searchCategory");
p.getChildren().add(searchCategoryMenu);
p.getChildren().add(WFUtil.getText("Published from:"));
p.getChildren().add(WFUtil.getText("Published to:"));
p.getChildren().add(WFUtil.getText(" "));
// HtmlInputText searchPublishedFromInput = WFUtil.getInputText(SEARCH_PUBLISHED_FROM_ID, ref + "searchPublishedFrom");
// searchPublishedFromInput.setSize(20);
// searchPublishedFromInput.setConverter(new WFDateConverter());
//
HtmlInputCalendar searchPublishedFromInput = new HtmlInputCalendar();
searchPublishedFromInput.setId("fromDate");
searchPublishedFromInput.setRenderAsPopup(true);
WFUtil.setValueBinding(searchPublishedFromInput,"value",ref + "searchPublishedFrom");
p.getChildren().add(searchPublishedFromInput);
// HtmlInputText searchPublishedToInput = WFUtil.getInputText(SEARCH_PUBLISHED_TO_ID, ref + "searchPublishedTo");
// searchPublishedToInput.setSize(20);
// searchPublishedToInput.setConverter(new WFDateConverter());
HtmlInputCalendar searchPublishedToInput = new HtmlInputCalendar();
searchPublishedToInput.setId("toDate");
searchPublishedToInput.setRenderAsPopup(true);
WFUtil.setValueBinding(searchPublishedToInput,"value",ref + "searchPublishedTo");
p.getChildren().add(searchPublishedToInput);
p.getChildren().add(WFUtil.getText(" "));
mainContainer.add(p);
p = WFPanelUtil.getPlainFormPanel(1);
p.getChildren().add(WFUtil.getText(" "));
p.getChildren().add(getButton());
mainContainer.add(p);
return mainContainer;
}
protected HtmlCommandButton getButton() {
return WFUtil.getButton(SEARCH_BUTTON_ID, "Search", this);
}
/**
* Returns the article list.
*/
protected UIComponent getSearchResultList() {
WFList l = new WFList(SEARCH_ARTICLE_BEAN_ID, 0, 0);
l.setId(RESULT_LIST_ID);
WFUtil.setValueBinding(l,"rendered",SEARCH_ARTICLE_BEAN_ID+".showSearchResults");
return l;
}
/**
* javax.faces.event.ActionListener#processAction()
*/
public void processAction(ActionEvent event) {
// String date = "no date";
// date = "" + WFUtil.getValue(SEARCH_ARTICLE_BEAN_ID, "searchPublishedFrom");
//
if (event.getComponent().getId().equals(SEARCH_BUTTON_ID)) {
WFUtil.invoke(SEARCH_ARTICLE_BEAN_ID, "search");
return;
}
// UIComponent link = event.getComponent();
// String id = WFUtil.getParameter(link, "id");
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "clear");
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setLocaleId", "sv");
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setHeadline", "search result, date =" + date);
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setTeaser", "Teaser");
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setBody", "Article " + id);
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setAuthor", "author");
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setComment", "comment");
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setDescription", "description");
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setStatus", ContentItemCase.STATUS_PUBLISHED);
//// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setMainCategoryId", new Integer(3));
// WFUtil.invoke(ARTICLE_ITEM_BEAN_ID, "setUpdated", new Boolean(true));
//
// WFUtil.setViewRoot("/cmspage.jsf");
}
}