/*
* Copyright (C) 2003-2008 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even 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, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.faq.webui;
import java.util.List;
import org.exoplatform.container.PortalContainer;
import org.exoplatform.faq.service.FAQEventQuery;
import org.exoplatform.faq.service.FAQService;
import org.exoplatform.faq.service.FAQSetting;
import org.exoplatform.faq.service.ObjectSearchResult;
import org.exoplatform.faq.webui.popup.ResultQuickSearch;
import org.exoplatform.faq.webui.popup.UIAdvancedSearchForm;
import org.exoplatform.ks.common.UserHelper;
import org.exoplatform.ks.common.Utils;
import org.exoplatform.ks.common.webui.BaseUIForm;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
import org.exoplatform.webui.form.UIFormStringInput;
/**
* Created by The eXo Platform SARL
* Author : Truong Nguyen
* truong.nguyen@exoplatform.com
* Apr 24, 2008, 1:38:00 PM
*/
@ComponentConfig(
lifecycle = UIFormLifecycle.class,
template = "app:/templates/faq/webui/UIQuickSearch.gtmpl",
events = {
@EventConfig(listeners = UIQuickSearch.SearchActionListener.class),
@EventConfig(listeners = UIQuickSearch.AdvancedSearchActionListener.class)
}
)
public class UIQuickSearch extends BaseUIForm {
final static private String FIELD_SEARCHVALUE = "inputValue";
private FAQSetting faqSetting_ = new FAQSetting();
public UIQuickSearch() throws Exception {
addChild(new UIFormStringInput(FIELD_SEARCHVALUE, FIELD_SEARCHVALUE, null));
FAQService faqService_ = (FAQService) PortalContainer.getInstance().getComponentInstanceOfType(FAQService.class);
faqSetting_ = new FAQSetting();
String currentUser = FAQUtils.getCurrentUser();
FAQUtils.getPorletPreference(faqSetting_);
if (currentUser != null && currentUser.trim().length() > 0) {
if (faqSetting_.getIsAdmin() == null || faqSetting_.getIsAdmin().trim().length() < 1) {
if (faqService_.isAdminRole(currentUser))
faqSetting_.setIsAdmin("TRUE");
else
faqSetting_.setIsAdmin("FALSE");
}
faqService_.getUserSetting(currentUser, faqSetting_);
} else {
faqSetting_.setIsAdmin("FALSE");
}
}
static public class SearchActionListener extends EventListener<UIQuickSearch> {
public void execute(Event<UIQuickSearch> event) throws Exception {
UIQuickSearch uiQuickSearch = event.getSource();
UIFormStringInput formStringInput = uiQuickSearch.getUIStringInput(FIELD_SEARCHVALUE);
UIAnswersPortlet uiPortlet = uiQuickSearch.getAncestorOfType(UIAnswersPortlet.class);
String text = formStringInput.getValue();
if (text != null && text.trim().length() > 0) {
text = Utils.encodeSpecialCharInSearchTerm(text);
FAQService faqService = FAQUtils.getFAQService();
List<ObjectSearchResult> list = null;
FAQEventQuery eventQuery = new FAQEventQuery();
eventQuery.setAdmin(uiQuickSearch.faqSetting_.isAdmin());
eventQuery.setUserMembers(UserHelper.getAllGroupAndMembershipOfUser(FAQUtils.getCurrentUser()));
eventQuery.setUserId(FAQUtils.getCurrentUser());
eventQuery.setText(text);
eventQuery.setType("categoryAndQuestion");
try {
list = faqService.getSearchResults(eventQuery);
} catch (Exception e) {
uiQuickSearch.log.error("Can not run quick search, exception: " + e.getMessage());
uiQuickSearch.warning("UIQuickSearch.msg.failure");
return;
}
ResultQuickSearch result = uiQuickSearch.openPopup(uiPortlet, ResultQuickSearch.class, "UIResultQuickSearchs", 750, 0);
result.setSearchResults(list);
} else {
uiQuickSearch.warning("UIQuickSeach.msg.no-text-to-search");
return;
}
}
}
static public class AdvancedSearchActionListener extends EventListener<UIQuickSearch> {
public void execute(Event<UIQuickSearch> event) throws Exception {
UIQuickSearch uiForm = event.getSource();
UIAnswersPortlet uiPortlet = uiForm.getAncestorOfType(UIAnswersPortlet.class);
UIAdvancedSearchForm uiAdvancedSearchForm = uiForm.openPopup(uiPortlet, UIAdvancedSearchForm.class, "AdvanceSearchForm", 650, 0);
uiAdvancedSearchForm.setIsSearch(false, false);
}
}
}