1
2
3
4
5
6
7
8
9
10
11
12 package org.exoplatform.wcm.webui.search;
13
14 import org.exoplatform.ecm.resolver.JCRResourceResolver;
15 import org.exoplatform.portal.application.PortalRequestContext;
16 import org.exoplatform.portal.mop.SiteType;
17 import org.exoplatform.portal.webui.util.Util;
18 import org.exoplatform.resolver.ResourceResolver;
19 import org.exoplatform.services.cms.impl.DMSConfiguration;
20 import org.exoplatform.web.url.navigation.NavigationResource;
21 import org.exoplatform.web.url.navigation.NodeURL;
22 import org.exoplatform.webui.config.annotation.ComponentConfig;
23 import org.exoplatform.webui.config.annotation.EventConfig;
24 import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
25 import org.exoplatform.webui.event.Event;
26 import org.exoplatform.webui.event.EventListener;
27 import org.exoplatform.webui.form.UIForm;
28 import org.exoplatform.webui.form.UIFormStringInput;
29
30
31
32
33
34 @ComponentConfig(
35 lifecycle = UIFormLifecycle.class,
36 events = {
37 @EventConfig(listeners = UISearchBox.SearchActionListener.class)
38 }
39 )
40 public class UISearchBox extends UIForm {
41
42
43 private String templatePath;
44
45
46 public static final String KEYWORD_INPUT = "keywordInput";
47
48
49 public static final String PORTAL_NAME_PARAM = "portal";
50
51
52 public static final String KEYWORD_PARAM = "keyword";
53
54
55
56
57
58
59 public UISearchBox() throws Exception {
60 UIFormStringInput uiKeywordInput = new UIFormStringInput(KEYWORD_INPUT, KEYWORD_INPUT, null);
61 addChild(uiKeywordInput);
62 }
63
64
65
66
67
68
69 public void setTemplatePath(String templatePath) {
70 this.templatePath = templatePath;
71 }
72
73
74
75
76
77 public String getTemplate() {
78 return templatePath;
79 }
80
81 public ResourceResolver getTemplateResourceResolver() {
82 try {
83 DMSConfiguration dmsConfiguration = getApplicationComponent(DMSConfiguration.class);
84 String workspace = dmsConfiguration.getConfig().getSystemWorkspace();
85 return new JCRResourceResolver(workspace);
86 } catch (Exception e) {
87 return null;
88 }
89 }
90
91
92
93
94
95
96
97
98
99 public static class SearchActionListener extends EventListener<UISearchBox> {
100
101
102
103
104
105
106
107 public void execute(Event<UISearchBox> event) throws Exception {
108 UISearchBox uiSearchBox = event.getSource();
109 String keyword = uiSearchBox.getUIStringInput(UISearchBox.KEYWORD_INPUT).getValue();
110 String portalName = Util.getPortalRequestContext().getPortalOwner();
111 PortalRequestContext prContext = Util.getPortalRequestContext();
112 prContext.setResponseComplete(true);
113
114 NodeURL nodeURL = Util.getPortalRequestContext().createURL(NodeURL.TYPE);
115 NavigationResource resource = new NavigationResource(SiteType.PORTAL, portalName, "searchResult");
116 nodeURL.setResource(resource);
117 nodeURL.setQueryParameterValue(PORTAL_NAME_PARAM, portalName);
118 nodeURL.setQueryParameterValue(KEYWORD_PARAM, keyword);
119
120 prContext.getResponse().sendRedirect(nodeURL.toString());
121 }
122 }
123 }