Skip to content

Commit 745bc78

Browse files
committed
cms:search / cms:simplesearch / integrated list: Added macros %(query)
and %(locale) to the additionalsolrparams as suggested in GitHub issue #686. Note that the macros - like the whole additionalsolrparams must be provided url encoded, i.e. %25%28query%29 and %25%28locale%29.
1 parent baf1b36 commit 745bc78

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/org/opencms/jsp/search/controller/CmsSearchControllerCommon.java

+10
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import org.opencms.file.CmsObject;
3131
import org.opencms.i18n.CmsEncoder;
32+
import org.opencms.i18n.CmsLocaleManager;
3233
import org.opencms.jsp.search.config.I_CmsSearchConfigurationCommon;
3334
import org.opencms.jsp.search.state.CmsSearchStateCommon;
3435
import org.opencms.jsp.search.state.I_CmsSearchStateCommon;
@@ -52,6 +53,10 @@ public class CmsSearchControllerCommon implements I_CmsSearchControllerCommon {
5253
private static final String MACRO_VALUE = "value";
5354
/** Site root macro. */
5455
private static final String MACRO_SITE_ROOT = "site_root";
56+
/** Locale macro. */
57+
private static final String MACRO_LOCALE = "locale";
58+
/** Query macro. */
59+
private static final String MACRO_QUERY = "query";
5560
/** Configuration of common search options. */
5661
private final I_CmsSearchConfigurationCommon m_config;
5762
/** State of the common search options. */
@@ -116,13 +121,18 @@ public void addQueryParts(CmsSolrQuery query, CmsObject cms) {
116121
if ((null != currentSiteRoot) && !currentSiteRoot.endsWith("/")) {
117122
currentSiteRoot = currentSiteRoot + "/";
118123
}
124+
String currentLocale = (null == cms
125+
? CmsLocaleManager.getDefaultLocale()
126+
: cms.getRequestContext().getLocale()).toString();
119127
Map<String, String[]> extraParamsMap = CmsRequestUtil.createParameterMap(
120128
m_config.getExtraSolrParams(),
121129
true,
122130
null);
123131
for (String key : extraParamsMap.keySet()) {
124132
for (String value : Arrays.asList(extraParamsMap.get(key))) {
125133
value = resolveMacro(value, MACRO_SITE_ROOT, currentSiteRoot);
134+
value = resolveMacro(value, MACRO_LOCALE, currentLocale);
135+
value = resolveMacro(value, MACRO_QUERY, queryString);
126136
if (SET_VARIABLES.contains(key)) {
127137
if (key.equals(CommonParams.FL)) {
128138
query.setReturnFields(value);

0 commit comments

Comments
 (0)