Commit 5c5c3906 authored by Liang Ding's avatar Liang Ding

Fix #12451

parent 33600fb2
......@@ -17,6 +17,7 @@
*/
package org.b3log.solo.processor;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.b3log.latke.Latkes;
import org.b3log.latke.ioc.inject.Inject;
......@@ -28,10 +29,12 @@ import org.b3log.latke.servlet.HTTPRequestContext;
import org.b3log.latke.servlet.HTTPRequestMethod;
import org.b3log.latke.servlet.annotation.RequestProcessing;
import org.b3log.latke.servlet.annotation.RequestProcessor;
import org.b3log.latke.servlet.renderer.TextXMLRenderer;
import org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer;
import org.b3log.latke.util.Strings;
import org.b3log.solo.model.Article;
import org.b3log.solo.model.Common;
import org.b3log.solo.model.Option;
import org.b3log.solo.processor.renderer.ConsoleRenderer;
import org.b3log.solo.processor.util.Filler;
import org.b3log.solo.service.ArticleQueryService;
......@@ -42,6 +45,7 @@ import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.util.Collections;
import java.util.List;
import java.util.Map;
......@@ -51,7 +55,7 @@ import java.util.Map;
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @version 1.0.1.0, Oct 11, 2017
* @version 1.1.0.0, May 29, 2018
* @since 2.4.0
*/
@RequestProcessor
......@@ -92,6 +96,30 @@ public class SearchProcessor {
@Inject
private Filler filler;
/**
* Shows opensearch.xml.
*
* @param context the specified context
*/
@RequestProcessing(value = "/opensearch.xml", method = HTTPRequestMethod.GET)
public void showOpensearchXML(final HTTPRequestContext context) {
final TextXMLRenderer renderer = new TextXMLRenderer();
context.setRenderer(renderer);
try {
final InputStream resourceAsStream = SearchProcessor.class.getResourceAsStream("/opensearch.xml");
String content = IOUtils.toString(resourceAsStream, "UTF-8");
final JSONObject preference = preferenceQueryService.getPreference();
content = StringUtils.replace(content, "${blogTitle}", Jsoup.clean(preference.optString(Option.ID_C_BLOG_TITLE), Whitelist.none()));
content = StringUtils.replace(content, "${blogSubtitle}", Jsoup.clean(preference.optString(Option.ID_C_BLOG_SUBTITLE), Whitelist.none()));
content = StringUtils.replace(content, "${servePath}", Latkes.getServePath());
renderer.setContent(content);
} catch (final Exception e) {
LOGGER.log(Level.ERROR, "Shows opensearch.xml failed", e);
}
}
/**
* Searches articles.
*
......
......@@ -24,9 +24,9 @@
Author: Liyuan Li
-->
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>Solo</ShortName>
<Description>一款漂亮、简约、稳定、极速的 Java 博客系统</Description>
<ShortName>${blogTitle}</ShortName>
<Description>${blogSubtitle}</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="32" height="32" type="image/x-icon">https://static.b3log.org/images/brand/solo-32.png</Image>
<Url type="text/html" method="get" template="http://demo.b3log.org/search?keyword={searchTerms}"></Url>
<Url type="text/html" method="get" template="${servePath}/search?keyword={searchTerms}"></Url>
</OpenSearchDescription>
\ No newline at end of file
......@@ -32,5 +32,6 @@
<link href="${servePath}/blog-articles-rss.do" title="RSS" type="application/rss+xml" rel="alternate" />
<link rel="icon" type="image/png" href="${servePath}/favicon.png" />
<link rel="manifest" href="${servePath}/manifest.json">
<link rel="search" type="application/opensearchdescription+xml" title="${title}" href="/opensearch.xml">
${htmlHead}
</#macro>
\ No newline at end of file
......@@ -30,6 +30,7 @@
<meta http-equiv="Window-target" content="_top" />
<link type="text/css" rel="stylesheet" href="${staticServePath}/skins/${skinDirName}/themes/default/style.css?${staticResourceVersion}" charset="utf-8" />
<link rel="manifest" href="${servePath}/manifest.json">
<link rel="search" type="application/opensearchdescription+xml" title="${title}" href="/opensearch.xml">
<style type="text/css">
#headerbar, #wptouch-login, #wptouch-search {
background: #000000 url(/skins/${skinDirName}/themes/core/core-images/head-fade-bk.png);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment