Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
f0f34f5d
Unverified
Commit
f0f34f5d
authored
Jun 22, 2018
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
#12459
parent
29e4779b
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
145 additions
and
36 deletions
+145
-36
src/main/java/org/b3log/solo/processor/ArticleProcessor.java
src/main/java/org/b3log/solo/processor/ArticleProcessor.java
+5
-5
src/main/java/org/b3log/solo/processor/CategoryProcessor.java
...main/java/org/b3log/solo/processor/CategoryProcessor.java
+3
-6
src/main/java/org/b3log/solo/processor/IndexProcessor.java
src/main/java/org/b3log/solo/processor/IndexProcessor.java
+3
-3
src/main/java/org/b3log/solo/processor/PageProcessor.java
src/main/java/org/b3log/solo/processor/PageProcessor.java
+3
-5
src/main/java/org/b3log/solo/processor/TagProcessor.java
src/main/java/org/b3log/solo/processor/TagProcessor.java
+11
-11
src/main/java/org/b3log/solo/processor/UserTemplateProcessor.java
.../java/org/b3log/solo/processor/UserTemplateProcessor.java
+6
-6
src/main/java/org/b3log/solo/processor/renderer/SkinRenderer.java
.../java/org/b3log/solo/processor/renderer/SkinRenderer.java
+114
-0
No files found.
src/main/java/org/b3log/solo/processor/ArticleProcessor.java
View file @
f0f34f5d
...
...
@@ -39,12 +39,12 @@ import org.b3log.latke.servlet.annotation.RequestProcessor;
import
org.b3log.latke.servlet.renderer.JSONRenderer
;
import
org.b3log.latke.servlet.renderer.TextHTMLRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.FreeMarkerRenderer
;
import
org.b3log.latke.util.*
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.event.EventTypes
;
import
org.b3log.solo.model.*
;
import
org.b3log.solo.processor.renderer.ConsoleRenderer
;
import
org.b3log.solo.processor.renderer.SkinRenderer
;
import
org.b3log.solo.processor.util.Filler
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.Skins
;
...
...
@@ -67,7 +67,7 @@ import java.util.*;
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://zephyr.b3log.org">Zephyr</a>
* @version 1.4.4.
1, Apr 13
, 2018
* @version 1.4.4.
2, Jun 22
, 2018
* @since 0.3.1
*/
@RequestProcessor
...
...
@@ -745,7 +745,7 @@ public class ArticleProcessor {
@RequestProcessing
(
value
=
"/authors/**"
,
method
=
HTTPRequestMethod
.
GET
)
public
void
showAuthorArticles
(
final
HTTPRequestContext
context
,
final
HttpServletRequest
request
,
final
HttpServletResponse
response
)
throws
IOException
,
JSONException
{
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
(
);
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
request
);
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
"author-articles.ftl"
);
...
...
@@ -838,7 +838,7 @@ public class ArticleProcessor {
@RequestProcessing
(
value
=
"/archives/**"
,
method
=
HTTPRequestMethod
.
GET
)
public
void
showArchiveArticles
(
final
HTTPRequestContext
context
,
final
HttpServletRequest
request
,
final
HttpServletResponse
response
)
{
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
(
);
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
request
);
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
"archive-articles.ftl"
);
...
...
@@ -961,7 +961,7 @@ public class ArticleProcessor {
LOGGER
.
log
(
Level
.
DEBUG
,
"Article[id={0}]"
,
articleId
);
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
(
);
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
request
);
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
"article.ftl"
);
...
...
src/main/java/org/b3log/solo/processor/CategoryProcessor.java
View file @
f0f34f5d
...
...
@@ -30,13 +30,13 @@ 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.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.FreeMarkerRenderer
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.Strings
;
import
org.b3log.solo.model.Article
;
import
org.b3log.solo.model.Category
;
import
org.b3log.solo.model.Common
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.processor.renderer.SkinRenderer
;
import
org.b3log.solo.processor.util.Filler
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.Skins
;
...
...
@@ -55,7 +55,7 @@ import java.util.Map;
* Category processor.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.1.
2, Apr 21, 2017
* @version 1.0.1.
3, Jun 22, 2018
* @since 2.0.0
*/
@RequestProcessor
...
...
@@ -149,10 +149,8 @@ public class CategoryProcessor {
*/
@RequestProcessing
(
value
=
"/category/**"
,
method
=
HTTPRequestMethod
.
GET
)
public
void
showCategoryArticles
(
final
HTTPRequestContext
context
)
throws
IOException
{
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
();
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
context
.
getRequest
());
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
"category-articles.ftl"
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
...
...
@@ -161,7 +159,6 @@ public class CategoryProcessor {
try
{
String
requestURI
=
request
.
getRequestURI
();
if
(!
requestURI
.
endsWith
(
"/"
))
{
requestURI
+=
"/"
;
}
...
...
src/main/java/org/b3log/solo/processor/IndexProcessor.java
View file @
f0f34f5d
...
...
@@ -32,7 +32,6 @@ import org.b3log.latke.servlet.URIPatternMode;
import
org.b3log.latke.servlet.annotation.RequestProcessing
;
import
org.b3log.latke.servlet.annotation.RequestProcessor
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.FreeMarkerRenderer
;
import
org.b3log.latke.util.Locales
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.freemarker.Templates
;
...
...
@@ -41,6 +40,7 @@ import org.b3log.solo.model.Common;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.Skin
;
import
org.b3log.solo.processor.renderer.ConsoleRenderer
;
import
org.b3log.solo.processor.renderer.SkinRenderer
;
import
org.b3log.solo.processor.util.Filler
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.StatisticMgmtService
;
...
...
@@ -61,7 +61,7 @@ import java.util.Set;
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="mailto:385321165@qq.com">DASHU</a>
* @version 1.2.4.
6, Jun 28, 2017
* @version 1.2.4.
7, Jun 22, 2018
* @since 0.3.1
*/
@RequestProcessor
...
...
@@ -117,7 +117,7 @@ public class IndexProcessor {
*/
@RequestProcessing
(
value
=
{
"/\\d*"
,
""
},
uriPatternsMode
=
URIPatternMode
.
REGEX
,
method
=
HTTPRequestMethod
.
GET
)
public
void
showIndex
(
final
HTTPRequestContext
context
,
final
HttpServletRequest
request
,
final
HttpServletResponse
response
)
{
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
(
);
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
request
);
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
"index.ftl"
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
...
...
src/main/java/org/b3log/solo/processor/PageProcessor.java
View file @
f0f34f5d
...
...
@@ -27,11 +27,11 @@ 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.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.FreeMarkerRenderer
;
import
org.b3log.latke.util.Stopwatchs
;
import
org.b3log.solo.model.Common
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.Page
;
import
org.b3log.solo.processor.renderer.SkinRenderer
;
import
org.b3log.solo.processor.util.Filler
;
import
org.b3log.solo.service.CommentQueryService
;
import
org.b3log.solo.service.PreferenceQueryService
;
...
...
@@ -51,7 +51,7 @@ import java.util.Map;
* Page processor.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.0.
6, Nov 8, 2016
* @version 1.1.0.
7, Jun 22, 2018
* @since 0.3.1
*/
@RequestProcessor
...
...
@@ -99,10 +99,8 @@ public class PageProcessor {
*/
@RequestProcessing
(
value
=
"/page"
,
method
=
HTTPRequestMethod
.
GET
)
public
void
showPage
(
final
HTTPRequestContext
context
)
{
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
();
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
context
.
getRequest
());
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
"page.ftl"
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
...
...
src/main/java/org/b3log/solo/processor/TagProcessor.java
View file @
f0f34f5d
...
...
@@ -30,7 +30,6 @@ 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.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.FreeMarkerRenderer
;
import
org.b3log.latke.util.Paginator
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.Strings
;
...
...
@@ -38,6 +37,7 @@ import org.b3log.solo.model.Article;
import
org.b3log.solo.model.Common
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.Tag
;
import
org.b3log.solo.processor.renderer.SkinRenderer
;
import
org.b3log.solo.processor.util.Filler
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.Skins
;
...
...
@@ -58,7 +58,7 @@ import java.util.Map;
* Tag processor.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.1.
4, Nov 20, 2015
* @version 1.1.1.
5, Jun 22, 2018
* @since 0.3.1
*/
@RequestProcessor
...
...
@@ -119,7 +119,7 @@ public class TagProcessor {
*/
@RequestProcessing
(
value
=
"/tags/**"
,
method
=
HTTPRequestMethod
.
GET
)
public
void
showTagArticles
(
final
HTTPRequestContext
context
)
throws
IOException
{
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
(
);
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
context
.
getRequest
()
);
context
.
setRenderer
(
renderer
);
...
...
src/main/java/org/b3log/solo/processor/UserTemplateProcessor.java
View file @
f0f34f5d
...
...
@@ -30,10 +30,10 @@ 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.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.FreeMarkerRenderer
;
import
org.b3log.latke.util.Locales
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.processor.renderer.SkinRenderer
;
import
org.b3log.solo.processor.util.Filler
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.StatisticMgmtService
;
...
...
@@ -58,7 +58,7 @@ import java.util.Map;
* </p>
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.
5, Nov 20, 2015
* @version 1.0.0.
6, Jun 22, 2018
* @since 0.4.5
*/
@RequestProcessor
...
...
@@ -110,7 +110,7 @@ public class UserTemplateProcessor {
templateName
=
StringUtils
.
substringBefore
(
templateName
,
"."
)
+
".ftl"
;
LOGGER
.
log
(
Level
.
DEBUG
,
"Shows page[requestURI={0}, templateName={1}]"
,
requestURI
,
templateName
);
final
AbstractFreeMarkerRenderer
renderer
=
new
FreeMarkerRenderer
(
);
final
AbstractFreeMarkerRenderer
renderer
=
new
SkinRenderer
(
request
);
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
templateName
);
...
...
src/main/java/org/b3log/solo/processor/renderer/SkinRenderer.java
0 → 100644
View file @
f0f34f5d
/*
* Solo - A beautiful, simple, stable, fast Java blogging system.
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package
org
.
b3log
.
solo
.
processor
.
renderer
;
import
freemarker.template.Template
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.servlet.HTTPRequestContext
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.StringWriter
;
import
java.util.Map
;
/**
* Skin renderer.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.0, Jun 22, 2018
* @since 2.9.1
*/
public
final
class
SkinRenderer
extends
AbstractFreeMarkerRenderer
{
/**
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
SkinRenderer
.
class
);
/**
* HTTP servlet request.
*/
private
final
HttpServletRequest
request
;
/**
* Constructs a skin renderer with the specified HTTP servlet request.
*
* @param request the specified HTTP servlet request
*/
public
SkinRenderer
(
final
HttpServletRequest
request
)
{
this
.
request
=
request
;
}
/**
* Processes the specified FreeMarker template with the specified request, data model, pjax hacking.
*
* @param request the specified request
* @param dataModel the specified data model
* @param template the specified FreeMarker template
* @return generated HTML
* @throws Exception exception
*/
protected
String
genHTML
(
final
HttpServletRequest
request
,
final
Map
<
String
,
Object
>
dataModel
,
final
Template
template
)
throws
Exception
{
final
boolean
isPJAX
=
isPJAX
(
request
);
dataModel
.
put
(
"pjax"
,
isPJAX
);
if
(!
isPJAX
)
{
return
super
.
genHTML
(
request
,
dataModel
,
template
);
}
final
StringWriter
stringWriter
=
new
StringWriter
();
template
.
setOutputEncoding
(
"UTF-8"
);
template
.
process
(
dataModel
,
stringWriter
);
final
long
endTimeMillis
=
System
.
currentTimeMillis
();
final
String
dateString
=
DateFormatUtils
.
format
(
endTimeMillis
,
"yyyy/MM/dd HH:mm:ss"
);
final
long
startTimeMillis
=
(
Long
)
request
.
getAttribute
(
Keys
.
HttpRequest
.
START_TIME_MILLIS
);
final
String
msg
=
String
.
format
(
"\n<!-- Generated by Latke (https://github.com/b3log/latke) in %1$dms, %2$s -->"
,
endTimeMillis
-
startTimeMillis
,
dateString
);
final
String
pjaxContainer
=
request
.
getHeader
(
"X-PJAX-Container"
);
return
StringUtils
.
substringBetween
(
stringWriter
.
toString
(),
"<!---- pjax {"
+
pjaxContainer
+
"} start ---->"
,
"<!---- pjax {"
+
pjaxContainer
+
"} end ---->"
)
+
msg
;
}
@Override
protected
void
beforeRender
(
final
HTTPRequestContext
context
)
{
}
@Override
protected
void
afterRender
(
final
HTTPRequestContext
context
)
{
}
/**
* Determines whether the specified request is sending with pjax.
*
* @param request the specified request
* @return {@code true} if it is sending with pjax, otherwise returns {@code false}
*/
private
static
boolean
isPJAX
(
final
HttpServletRequest
request
)
{
final
boolean
pjax
=
Boolean
.
valueOf
(
request
.
getHeader
(
"X-PJAX"
));
final
String
pjaxContainer
=
request
.
getHeader
(
"X-PJAX-Container"
);
return
pjax
&&
StringUtils
.
isNotBlank
(
pjaxContainer
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment