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
da0f217d
Unverified
Commit
da0f217d
authored
Sep 30, 2018
by
Van
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/2.9.5-dev' into 2.9.5-dev
parents
9f15c6ad
b70b43e0
Changes
101
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
101 changed files
with
521 additions
and
1088 deletions
+521
-1088
pom.xml
pom.xml
+2
-2
src/main/java/org/b3log/solo/SoloServletListener.java
src/main/java/org/b3log/solo/SoloServletListener.java
+10
-37
src/main/java/org/b3log/solo/api/B3ArticleReceiver.java
src/main/java/org/b3log/solo/api/B3ArticleReceiver.java
+1
-1
src/main/java/org/b3log/solo/api/B3CommentReceiver.java
src/main/java/org/b3log/solo/api/B3CommentReceiver.java
+1
-1
src/main/java/org/b3log/solo/api/MetaWeblogAPI.java
src/main/java/org/b3log/solo/api/MetaWeblogAPI.java
+1
-1
src/main/java/org/b3log/solo/cache/ArticleCache.java
src/main/java/org/b3log/solo/cache/ArticleCache.java
+6
-8
src/main/java/org/b3log/solo/cache/CommentCache.java
src/main/java/org/b3log/solo/cache/CommentCache.java
+4
-6
src/main/java/org/b3log/solo/cache/OptionCache.java
src/main/java/org/b3log/solo/cache/OptionCache.java
+5
-7
src/main/java/org/b3log/solo/cache/PageCache.java
src/main/java/org/b3log/solo/cache/PageCache.java
+4
-6
src/main/java/org/b3log/solo/cache/StatisticCache.java
src/main/java/org/b3log/solo/cache/StatisticCache.java
+1
-3
src/main/java/org/b3log/solo/cache/UserCache.java
src/main/java/org/b3log/solo/cache/UserCache.java
+6
-8
src/main/java/org/b3log/solo/event/ArticleCommentReplyNotifier.java
...ava/org/b3log/solo/event/ArticleCommentReplyNotifier.java
+5
-8
src/main/java/org/b3log/solo/event/B3ArticleSender.java
src/main/java/org/b3log/solo/event/B3ArticleSender.java
+3
-6
src/main/java/org/b3log/solo/event/B3ArticleUpdater.java
src/main/java/org/b3log/solo/event/B3ArticleUpdater.java
+3
-6
src/main/java/org/b3log/solo/event/B3CommentSender.java
src/main/java/org/b3log/solo/event/B3CommentSender.java
+3
-6
src/main/java/org/b3log/solo/event/PageCommentReplyNotifier.java
...n/java/org/b3log/solo/event/PageCommentReplyNotifier.java
+5
-8
src/main/java/org/b3log/solo/event/PluginRefresher.java
src/main/java/org/b3log/solo/event/PluginRefresher.java
+3
-6
src/main/java/org/b3log/solo/filter/InitCheckFilter.java
src/main/java/org/b3log/solo/filter/InitCheckFilter.java
+2
-3
src/main/java/org/b3log/solo/filter/PermalinkFilter.java
src/main/java/org/b3log/solo/filter/PermalinkFilter.java
+2
-3
src/main/java/org/b3log/solo/processor/ArticleProcessor.java
src/main/java/org/b3log/solo/processor/ArticleProcessor.java
+20
-21
src/main/java/org/b3log/solo/processor/BlogProcessor.java
src/main/java/org/b3log/solo/processor/BlogProcessor.java
+1
-1
src/main/java/org/b3log/solo/processor/CategoryProcessor.java
...main/java/org/b3log/solo/processor/CategoryProcessor.java
+7
-9
src/main/java/org/b3log/solo/processor/CommentProcessor.java
src/main/java/org/b3log/solo/processor/CommentProcessor.java
+3
-4
src/main/java/org/b3log/solo/processor/ErrorProcessor.java
src/main/java/org/b3log/solo/processor/ErrorProcessor.java
+6
-6
src/main/java/org/b3log/solo/processor/FeedProcessor.java
src/main/java/org/b3log/solo/processor/FeedProcessor.java
+1
-1
src/main/java/org/b3log/solo/processor/FileUploadProcessor.java
...in/java/org/b3log/solo/processor/FileUploadProcessor.java
+2
-3
src/main/java/org/b3log/solo/processor/IndexProcessor.java
src/main/java/org/b3log/solo/processor/IndexProcessor.java
+15
-81
src/main/java/org/b3log/solo/processor/InitProcessor.java
src/main/java/org/b3log/solo/processor/InitProcessor.java
+9
-9
src/main/java/org/b3log/solo/processor/LoginProcessor.java
src/main/java/org/b3log/solo/processor/LoginProcessor.java
+8
-10
src/main/java/org/b3log/solo/processor/OAuthGitHubProcessor.java
...n/java/org/b3log/solo/processor/OAuthGitHubProcessor.java
+1
-1
src/main/java/org/b3log/solo/processor/PageProcessor.java
src/main/java/org/b3log/solo/processor/PageProcessor.java
+6
-7
src/main/java/org/b3log/solo/processor/RepairProcessor.java
src/main/java/org/b3log/solo/processor/RepairProcessor.java
+5
-5
src/main/java/org/b3log/solo/processor/SearchProcessor.java
src/main/java/org/b3log/solo/processor/SearchProcessor.java
+8
-8
src/main/java/org/b3log/solo/processor/SitemapProcessor.java
src/main/java/org/b3log/solo/processor/SitemapProcessor.java
+3
-3
src/main/java/org/b3log/solo/processor/SkinRenderer.java
src/main/java/org/b3log/solo/processor/SkinRenderer.java
+9
-2
src/main/java/org/b3log/solo/processor/TagProcessor.java
src/main/java/org/b3log/solo/processor/TagProcessor.java
+9
-10
src/main/java/org/b3log/solo/processor/UserTemplateProcessor.java
.../java/org/b3log/solo/processor/UserTemplateProcessor.java
+8
-10
src/main/java/org/b3log/solo/processor/console/AdminConsole.java
...n/java/org/b3log/solo/processor/console/AdminConsole.java
+8
-9
src/main/java/org/b3log/solo/processor/console/ArticleConsole.java
...java/org/b3log/solo/processor/console/ArticleConsole.java
+1
-1
src/main/java/org/b3log/solo/processor/console/CategoryConsole.java
...ava/org/b3log/solo/processor/console/CategoryConsole.java
+1
-1
src/main/java/org/b3log/solo/processor/console/CommentConsole.java
...java/org/b3log/solo/processor/console/CommentConsole.java
+1
-1
src/main/java/org/b3log/solo/processor/console/ConsoleAdminAuthAdvice.java
.../b3log/solo/processor/console/ConsoleAdminAuthAdvice.java
+3
-6
src/main/java/org/b3log/solo/processor/console/ConsoleAuthAdvice.java
...a/org/b3log/solo/processor/console/ConsoleAuthAdvice.java
+2
-4
src/main/java/org/b3log/solo/processor/console/ConsoleRenderer.java
...ava/org/b3log/solo/processor/console/ConsoleRenderer.java
+9
-35
src/main/java/org/b3log/solo/processor/console/LinkConsole.java
...in/java/org/b3log/solo/processor/console/LinkConsole.java
+1
-1
src/main/java/org/b3log/solo/processor/console/PageConsole.java
...in/java/org/b3log/solo/processor/console/PageConsole.java
+2
-1
src/main/java/org/b3log/solo/processor/console/PluginConsole.java
.../java/org/b3log/solo/processor/console/PluginConsole.java
+1
-2
src/main/java/org/b3log/solo/processor/console/PreferenceConsole.java
...a/org/b3log/solo/processor/console/PreferenceConsole.java
+1
-1
src/main/java/org/b3log/solo/processor/console/TagConsole.java
...ain/java/org/b3log/solo/processor/console/TagConsole.java
+1
-1
src/main/java/org/b3log/solo/processor/console/UserConsole.java
...in/java/org/b3log/solo/processor/console/UserConsole.java
+1
-1
src/main/java/org/b3log/solo/processor/util/FillTagArticles.java
...n/java/org/b3log/solo/processor/util/FillTagArticles.java
+0
-95
src/main/java/org/b3log/solo/processor/util/TopBars.java
src/main/java/org/b3log/solo/processor/util/TopBars.java
+0
-156
src/main/java/org/b3log/solo/repository/impl/ArticleRepositoryImpl.java
...org/b3log/solo/repository/impl/ArticleRepositoryImpl.java
+1
-1
src/main/java/org/b3log/solo/repository/impl/CommentRepositoryImpl.java
...org/b3log/solo/repository/impl/CommentRepositoryImpl.java
+1
-1
src/main/java/org/b3log/solo/repository/impl/OptionRepositoryImpl.java
.../org/b3log/solo/repository/impl/OptionRepositoryImpl.java
+1
-1
src/main/java/org/b3log/solo/repository/impl/PageRepositoryImpl.java
...va/org/b3log/solo/repository/impl/PageRepositoryImpl.java
+1
-1
src/main/java/org/b3log/solo/repository/impl/TagRepositoryImpl.java
...ava/org/b3log/solo/repository/impl/TagRepositoryImpl.java
+1
-1
src/main/java/org/b3log/solo/repository/impl/UserRepositoryImpl.java
...va/org/b3log/solo/repository/impl/UserRepositoryImpl.java
+1
-1
src/main/java/org/b3log/solo/service/ArchiveDateQueryService.java
.../java/org/b3log/solo/service/ArchiveDateQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/ArticleMgmtService.java
src/main/java/org/b3log/solo/service/ArticleMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/ArticleQueryService.java
...main/java/org/b3log/solo/service/ArticleQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/CategoryMgmtService.java
...main/java/org/b3log/solo/service/CategoryMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/CategoryQueryService.java
...ain/java/org/b3log/solo/service/CategoryQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/CommentMgmtService.java
src/main/java/org/b3log/solo/service/CommentMgmtService.java
+3
-3
src/main/java/org/b3log/solo/service/CommentQueryService.java
...main/java/org/b3log/solo/service/CommentQueryService.java
+3
-3
src/main/java/org/b3log/solo/service/DataModelService.java
src/main/java/org/b3log/solo/service/DataModelService.java
+99
-107
src/main/java/org/b3log/solo/service/ExportService.java
src/main/java/org/b3log/solo/service/ExportService.java
+1
-1
src/main/java/org/b3log/solo/service/ImportService.java
src/main/java/org/b3log/solo/service/ImportService.java
+1
-1
src/main/java/org/b3log/solo/service/InitService.java
src/main/java/org/b3log/solo/service/InitService.java
+5
-11
src/main/java/org/b3log/solo/service/LinkMgmtService.java
src/main/java/org/b3log/solo/service/LinkMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/LinkQueryService.java
src/main/java/org/b3log/solo/service/LinkQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/OptionMgmtService.java
src/main/java/org/b3log/solo/service/OptionMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/OptionQueryService.java
src/main/java/org/b3log/solo/service/OptionQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/PageMgmtService.java
src/main/java/org/b3log/solo/service/PageMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/PageQueryService.java
src/main/java/org/b3log/solo/service/PageQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/PermalinkQueryService.java
...in/java/org/b3log/solo/service/PermalinkQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/PluginMgmtService.java
src/main/java/org/b3log/solo/service/PluginMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/PluginQueryService.java
src/main/java/org/b3log/solo/service/PluginQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/PreferenceMgmtService.java
...in/java/org/b3log/solo/service/PreferenceMgmtService.java
+2
-21
src/main/java/org/b3log/solo/service/PreferenceQueryService.java
...n/java/org/b3log/solo/service/PreferenceQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/StatisticMgmtService.java
...ain/java/org/b3log/solo/service/StatisticMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/StatisticQueryService.java
...in/java/org/b3log/solo/service/StatisticQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/TagMgmtService.java
src/main/java/org/b3log/solo/service/TagMgmtService.java
+1
-1
src/main/java/org/b3log/solo/service/TagQueryService.java
src/main/java/org/b3log/solo/service/TagQueryService.java
+1
-1
src/main/java/org/b3log/solo/service/UpgradeService.java
src/main/java/org/b3log/solo/service/UpgradeService.java
+4
-5
src/main/java/org/b3log/solo/service/UserMgmtService.java
src/main/java/org/b3log/solo/service/UserMgmtService.java
+9
-8
src/main/java/org/b3log/solo/service/UserQueryService.java
src/main/java/org/b3log/solo/service/UserQueryService.java
+1
-1
src/main/java/org/b3log/solo/util/JSONs.java
src/main/java/org/b3log/solo/util/JSONs.java
+0
-47
src/main/java/org/b3log/solo/util/Mails.java
src/main/java/org/b3log/solo/util/Mails.java
+0
-59
src/main/java/org/b3log/solo/util/Markdowns.java
src/main/java/org/b3log/solo/util/Markdowns.java
+5
-9
src/main/java/org/b3log/solo/util/Skins.java
src/main/java/org/b3log/solo/util/Skins.java
+60
-31
src/main/java/org/b3log/solo/util/Solos.java
src/main/java/org/b3log/solo/util/Solos.java
+56
-3
src/main/java/org/b3log/solo/util/Thumbnails.java
src/main/java/org/b3log/solo/util/Thumbnails.java
+0
-50
src/main/java/org/b3log/solo/util/TimeZones.java
src/main/java/org/b3log/solo/util/TimeZones.java
+0
-49
src/main/resources/latke.properties
src/main/resources/latke.properties
+2
-2
src/main/webapp/js/common.js
src/main/webapp/js/common.js
+3
-0
src/main/webapp/js/common.min.js
src/main/webapp/js/common.min.js
+1
-1
src/test/java/org/b3log/solo/AbstractTestCase.java
src/test/java/org/b3log/solo/AbstractTestCase.java
+5
-6
src/test/java/org/b3log/solo/processor/ArticleProcessorTestCase.java
...va/org/b3log/solo/processor/ArticleProcessorTestCase.java
+2
-2
src/test/java/org/b3log/solo/processor/PageProcessorTestCase.java
.../java/org/b3log/solo/processor/PageProcessorTestCase.java
+12
-9
src/test/java/org/b3log/solo/util/ThumbnailsTestCase.java
src/test/java/org/b3log/solo/util/ThumbnailsTestCase.java
+2
-2
No files found.
pom.xml
View file @
da0f217d
<?xml version="1.0" encoding="UTF-8"?>
<!--
Description: Solo POM.
Version: 3.18.3.2
3, Sep 25
, 2018
Version: 3.18.3.2
5, Sep 30
, 2018
Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a>
Author: <a href="http://vanessa.b3log.org">Vanessa</a>
...
...
@@ -75,7 +75,7 @@
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<org.b3log.latke.version>
2.4.1
6
</org.b3log.latke.version>
<org.b3log.latke.version>
2.4.1
8
</org.b3log.latke.version>
<servlet.version>
3.1.0
</servlet.version>
<slf4j.version>
1.7.5
</slf4j.version>
...
...
src/main/java/org/b3log/solo/SoloServletListener.java
View file @
da0f217d
...
...
@@ -20,8 +20,7 @@ package org.b3log.solo;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.event.EventManager
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.plugin.PluginManager
;
...
...
@@ -32,7 +31,6 @@ import org.b3log.latke.servlet.AbstractServletListener;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.Stopwatchs
;
import
org.b3log.latke.util.Strings
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.event.*
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.Skin
;
...
...
@@ -50,14 +48,12 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpSession
;
import
javax.servlet.http.HttpSessionEvent
;
import
java.util.Set
;
import
java.util.concurrent.locks.Lock
;
import
java.util.concurrent.locks.ReentrantLock
;
/**
* Solo Servlet listener.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.9.3.
39, Sep 25
, 2018
* @version 1.9.3.
41, Sep 27
, 2018
* @since 0.3.1
*/
public
final
class
SoloServletListener
extends
AbstractServletListener
{
...
...
@@ -75,12 +71,7 @@ public final class SoloServletListener extends AbstractServletListener {
/**
* Bean manager.
*/
private
LatkeBeanManager
beanManager
;
/**
* Request lock.
*/
private
Lock
requestLock
=
new
ReentrantLock
();
private
BeanManager
beanManager
;
@Override
public
void
contextInitialized
(
final
ServletContextEvent
servletContextEvent
)
{
...
...
@@ -89,7 +80,7 @@ public final class SoloServletListener extends AbstractServletListener {
super
.
contextInitialized
(
servletContextEvent
);
Stopwatchs
.
start
(
"Context Initialized"
);
beanManager
=
Lifecycle
.
getBeanManager
();
beanManager
=
BeanManager
.
getInstance
();
// Upgrade check https://github.com/b3log/solo/issues/12040
final
UpgradeService
upgradeService
=
beanManager
.
getReference
(
UpgradeService
.
class
);
...
...
@@ -101,9 +92,6 @@ public final class SoloServletListener extends AbstractServletListener {
JdbcRepository
.
dispose
();
// Set default skin, loads from preference later
Skins
.
setDirectoryForTemplateLoading
(
Option
.
DefaultPreference
.
DEFAULT_SKIN_DIR_NAME
);
final
OptionRepository
optionRepository
=
beanManager
.
getReference
(
OptionRepositoryImpl
.
class
);
final
Transaction
transaction
=
optionRepository
.
beginTransaction
();
try
{
...
...
@@ -147,8 +135,6 @@ public final class SoloServletListener extends AbstractServletListener {
@Override
public
void
requestInitialized
(
final
ServletRequestEvent
servletRequestEvent
)
{
requestLock
.
lock
();
final
HttpServletRequest
httpServletRequest
=
(
HttpServletRequest
)
servletRequestEvent
.
getServletRequest
();
Requests
.
log
(
httpServletRequest
,
Level
.
DEBUG
,
LOGGER
);
...
...
@@ -158,14 +144,12 @@ public final class SoloServletListener extends AbstractServletListener {
LOGGER
.
log
(
Level
.
DEBUG
,
"Request made from a search engine [User-Agent={0}]"
,
httpServletRequest
.
getHeader
(
"User-Agent"
));
httpServletRequest
.
setAttribute
(
Keys
.
HttpRequest
.
IS_SEARCH_ENGINE_BOT
,
true
);
}
else
{
// Gets the session of this request
final
HttpSession
session
=
httpServletRequest
.
getSession
();
LOGGER
.
log
(
Level
.
DEBUG
,
"Gets a session [id={0}, remoteAddr={1}, User-Agent={2}, isNew={3}]"
,
session
.
getId
(),
httpServletRequest
.
getRemoteAddr
(),
httpServletRequest
.
getHeader
(
"User-Agent"
),
session
.
isNew
());
// Online visitor count
final
StatisticMgmtService
statisticMgmtService
=
beanManager
.
getReference
(
StatisticMgmtService
.
class
);
statisticMgmtService
.
onlineVisitorCount
(
httpServletRequest
);
}
...
...
@@ -174,16 +158,12 @@ public final class SoloServletListener extends AbstractServletListener {
@Override
public
void
requestDestroyed
(
final
ServletRequestEvent
servletRequestEvent
)
{
try
{
Stopwatchs
.
end
();
Stopwatchs
.
end
();
LOGGER
.
log
(
Level
.
DEBUG
,
"Stopwatch: {0}{1}"
,
Strings
.
LINE_SEPARATOR
,
Stopwatchs
.
getTimingStat
());
Stopwatchs
.
release
();
LOGGER
.
log
(
Level
.
DEBUG
,
"Stopwatch: {0}{1}"
,
Strings
.
LINE_SEPARATOR
,
Stopwatchs
.
getTimingStat
());
Stopwatchs
.
release
();
super
.
requestDestroyed
(
servletRequestEvent
);
}
finally
{
requestLock
.
unlock
();
}
super
.
requestDestroyed
(
servletRequestEvent
);
}
/**
...
...
@@ -200,7 +180,6 @@ public final class SoloServletListener extends AbstractServletListener {
final
PreferenceQueryService
preferenceQueryService
=
beanManager
.
getReference
(
PreferenceQueryService
.
class
);
JSONObject
preference
;
try
{
preference
=
preferenceQueryService
.
getPreference
();
if
(
null
==
preference
)
{
...
...
@@ -211,7 +190,6 @@ public final class SoloServletListener extends AbstractServletListener {
}
final
PreferenceMgmtService
preferenceMgmtService
=
beanManager
.
getReference
(
PreferenceMgmtService
.
class
);
preferenceMgmtService
.
loadSkins
(
preference
);
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
e
.
getMessage
(),
e
);
...
...
@@ -260,16 +238,14 @@ public final class SoloServletListener extends AbstractServletListener {
*/
private
void
resolveSkinDir
(
final
HttpServletRequest
httpServletRequest
)
{
// https://github.com/b3log/solo/issues/12060
httpServletRequest
.
setAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
,
Option
.
DefaultPreference
.
DEFAULT_SKIN_DIR_NAME
);
final
Cookie
[]
cookies
=
httpServletRequest
.
getCookies
();
if
(
null
!=
cookies
)
{
for
(
final
Cookie
cookie
:
cookies
)
{
if
(
Skin
.
SKIN
.
equals
(
cookie
.
getName
()))
{
final
String
skin
=
cookie
.
getValue
();
final
Set
<
String
>
skinDirNames
=
Skins
.
getSkinDirNames
();
if
(
skinDirNames
.
contains
(
skin
))
{
Templates
.
MAIN_CFG
.
setServletContextForTemplateLoading
(
SoloServletListener
.
getServletContext
(),
"/skins/"
+
skin
);
httpServletRequest
.
setAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
,
skin
);
return
;
...
...
@@ -281,13 +257,11 @@ public final class SoloServletListener extends AbstractServletListener {
try
{
final
PreferenceQueryService
preferenceQueryService
=
beanManager
.
getReference
(
PreferenceQueryService
.
class
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
if
(
null
==
preference
)
{
// Did not initialize yet
if
(
null
==
preference
)
{
// Not initialize yet
return
;
}
final
String
requestURI
=
httpServletRequest
.
getRequestURI
();
String
desiredView
=
Requests
.
mobileSwitchToggle
(
httpServletRequest
);
if
(
desiredView
==
null
&&
!
Requests
.
mobileRequest
(
httpServletRequest
)
||
desiredView
!=
null
&&
desiredView
.
equals
(
"normal"
))
{
desiredView
=
preference
.
getString
(
Skin
.
SKIN_DIR_NAME
);
...
...
@@ -296,7 +270,6 @@ public final class SoloServletListener extends AbstractServletListener {
LOGGER
.
log
(
Level
.
DEBUG
,
"The request [URI={0}] via mobile device"
,
requestURI
);
}
Templates
.
MAIN_CFG
.
setServletContextForTemplateLoading
(
SoloServletListener
.
getServletContext
(),
"/skins/"
+
desiredView
);
httpServletRequest
.
setAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
,
desiredView
);
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Resolves skin failed"
,
e
);
...
...
src/main/java/org/b3log/solo/api/B3ArticleReceiver.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
api
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.ServiceException
;
...
...
src/main/java/org/b3log/solo/api/B3CommentReceiver.java
View file @
da0f217d
...
...
@@ -22,7 +22,7 @@ import org.apache.commons.lang.time.DateFormatUtils;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventManager
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.Transaction
;
...
...
src/main/java/org/b3log/solo/api/MetaWeblogAPI.java
View file @
da0f217d
...
...
@@ -24,7 +24,7 @@ import org.apache.commons.lang.time.DateFormatUtils;
import
org.apache.commons.lang.time.DateUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.User
;
...
...
src/main/java/org/b3log/solo/cache/ArticleCache.java
View file @
da0f217d
...
...
@@ -18,10 +18,9 @@
package
org
.
b3log
.
solo
.
cache
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.solo.model.Article
;
import
org.b3log.solo.util.
JSON
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
import
java.util.Map
;
...
...
@@ -34,7 +33,6 @@ import java.util.concurrent.ConcurrentHashMap;
* @version 1.2.0.1, Sep 25, 2018
* @since 2.3.0
*/
@Named
@Singleton
public
class
ArticleCache
{
...
...
@@ -60,7 +58,7 @@ public class ArticleCache {
return
null
;
}
return
JSON
s
.
clone
(
article
);
return
Solo
s
.
clone
(
article
);
}
/**
...
...
@@ -75,7 +73,7 @@ public class ArticleCache {
return
null
;
}
return
JSON
s
.
clone
(
article
);
return
Solo
s
.
clone
(
article
);
}
/**
...
...
@@ -84,8 +82,8 @@ public class ArticleCache {
* @param article the specified article
*/
public
void
putArticle
(
final
JSONObject
article
)
{
idCache
.
put
(
article
.
optString
(
Keys
.
OBJECT_ID
),
JSON
s
.
clone
(
article
));
permalinkCache
.
put
(
article
.
optString
(
Article
.
ARTICLE_PERMALINK
),
JSON
s
.
clone
(
article
));
idCache
.
put
(
article
.
optString
(
Keys
.
OBJECT_ID
),
Solo
s
.
clone
(
article
));
permalinkCache
.
put
(
article
.
optString
(
Article
.
ARTICLE_PERMALINK
),
Solo
s
.
clone
(
article
));
}
/**
...
...
src/main/java/org/b3log/solo/cache/CommentCache.java
View file @
da0f217d
...
...
@@ -18,9 +18,8 @@
package
org
.
b3log
.
solo
.
cache
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.solo.util.JSONs
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.solo.util.Solos
;
import
org.json.JSONObject
;
import
java.util.Map
;
...
...
@@ -33,7 +32,6 @@ import java.util.concurrent.ConcurrentHashMap;
* @version 1.1.0.1, Sep 25, 2018
* @since 2.3.0
*/
@Named
@Singleton
public
class
CommentCache
{
...
...
@@ -54,7 +52,7 @@ public class CommentCache {
return
null
;
}
return
JSON
s
.
clone
(
comment
);
return
Solo
s
.
clone
(
comment
);
}
/**
...
...
@@ -63,7 +61,7 @@ public class CommentCache {
* @param comment the specified comment
*/
public
void
putComment
(
final
JSONObject
comment
)
{
cache
.
put
(
comment
.
optString
(
Keys
.
OBJECT_ID
),
JSON
s
.
clone
(
comment
));
cache
.
put
(
comment
.
optString
(
Keys
.
OBJECT_ID
),
Solo
s
.
clone
(
comment
));
}
/**
...
...
src/main/java/org/b3log/solo/cache/OptionCache.java
View file @
da0f217d
...
...
@@ -18,10 +18,9 @@
package
org
.
b3log
.
solo
.
cache
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.util.
JSON
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
import
java.util.Map
;
...
...
@@ -34,7 +33,6 @@ import java.util.concurrent.ConcurrentHashMap;
* @version 1.1.0.1, Sep 25, 2018
* @since 2.3.0
*/
@Named
@Singleton
public
class
OptionCache
{
...
...
@@ -69,7 +67,7 @@ public class OptionCache {
return
null
;
}
return
JSON
s
.
clone
(
ret
);
return
Solo
s
.
clone
(
ret
);
}
/**
...
...
@@ -94,7 +92,7 @@ public class OptionCache {
return
null
;
}
return
JSON
s
.
clone
(
option
);
return
Solo
s
.
clone
(
option
);
}
/**
...
...
@@ -103,7 +101,7 @@ public class OptionCache {
* @param option the specified option
*/
public
void
putOption
(
final
JSONObject
option
)
{
cache
.
put
(
option
.
optString
(
Keys
.
OBJECT_ID
),
JSON
s
.
clone
(
option
));
cache
.
put
(
option
.
optString
(
Keys
.
OBJECT_ID
),
Solo
s
.
clone
(
option
));
final
String
category
=
option
.
optString
(
Option
.
OPTION_CATEGORY
);
removeCategory
(
category
);
...
...
src/main/java/org/b3log/solo/cache/PageCache.java
View file @
da0f217d
...
...
@@ -18,9 +18,8 @@
package
org
.
b3log
.
solo
.
cache
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.solo.util.JSONs
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.solo.util.Solos
;
import
org.json.JSONObject
;
import
java.util.Map
;
...
...
@@ -33,7 +32,6 @@ import java.util.concurrent.ConcurrentHashMap;
* @version 1.0.0.1, Sep 25, 2018
* @since 2.3.0
*/
@Named
@Singleton
public
class
PageCache
{
...
...
@@ -54,7 +52,7 @@ public class PageCache {
return
null
;
}
return
JSON
s
.
clone
(
page
);
return
Solo
s
.
clone
(
page
);
}
/**
...
...
@@ -65,7 +63,7 @@ public class PageCache {
public
void
putPage
(
final
JSONObject
page
)
{
final
String
pageId
=
page
.
optString
(
Keys
.
OBJECT_ID
);
cache
.
put
(
pageId
,
JSON
s
.
clone
(
page
));
cache
.
put
(
pageId
,
Solo
s
.
clone
(
page
));
}
/**
...
...
src/main/java/org/b3log/solo/cache/StatisticCache.java
View file @
da0f217d
...
...
@@ -17,8 +17,7 @@
*/
package
org
.
b3log
.
solo
.
cache
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.solo.model.Option
;
import
org.json.JSONObject
;
...
...
@@ -32,7 +31,6 @@ import java.util.concurrent.ConcurrentHashMap;
* @version 1.0.0.1, Sep 25, 2018
* @since 2.4.0
*/
@Named
@Singleton
public
class
StatisticCache
{
...
...
src/main/java/org/b3log/solo/cache/UserCache.java
View file @
da0f217d
...
...
@@ -18,11 +18,10 @@
package
org
.
b3log
.
solo
.
cache
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.model.Role
;
import
org.b3log.latke.model.User
;
import
org.b3log.solo.util.
JSON
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
import
java.util.Map
;
...
...
@@ -35,7 +34,6 @@ import java.util.concurrent.ConcurrentHashMap;
* @version 1.1.0.1, Sep 25, 2018
* @since 2.3.0
*/
@Named
@Singleton
public
class
UserCache
{
...
...
@@ -84,7 +82,7 @@ public class UserCache {
return
null
;
}
return
JSON
s
.
clone
(
user
);
return
Solo
s
.
clone
(
user
);
}
/**
...
...
@@ -99,7 +97,7 @@ public class UserCache {
return
null
;
}
return
JSON
s
.
clone
(
user
);
return
Solo
s
.
clone
(
user
);
}
/**
...
...
@@ -108,8 +106,8 @@ public class UserCache {
* @param user the specified user
*/
public
void
putUser
(
final
JSONObject
user
)
{
idCache
.
put
(
user
.
optString
(
Keys
.
OBJECT_ID
),
JSON
s
.
clone
(
user
));
emailCache
.
put
(
user
.
optString
(
User
.
USER_EMAIL
),
JSON
s
.
clone
(
user
));
idCache
.
put
(
user
.
optString
(
Keys
.
OBJECT_ID
),
Solo
s
.
clone
(
user
));
emailCache
.
put
(
user
.
optString
(
User
.
USER_EMAIL
),
Solo
s
.
clone
(
user
));
}
/**
...
...
src/main/java/org/b3log/solo/event/ArticleCommentReplyNotifier.java
View file @
da0f217d
...
...
@@ -22,10 +22,8 @@ import org.b3log.latke.Keys;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.event.AbstractEventListener
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.mail.MailService
;
...
...
@@ -38,7 +36,7 @@ import org.b3log.solo.model.Option;
import
org.b3log.solo.repository.CommentRepository
;
import
org.b3log.solo.repository.impl.CommentRepositoryImpl
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.util.
Mail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
/**
...
...
@@ -49,7 +47,6 @@ import org.json.JSONObject;
* @version 1.2.2.11, Sep 25, 2018
* @since 0.3.1
*/
@Named
@Singleton
public
class
ArticleCommentReplyNotifier
extends
AbstractEventListener
<
JSONObject
>
{
...
...
@@ -84,11 +81,11 @@ public class ArticleCommentReplyNotifier extends AbstractEventListener<JSONObjec
return
;
}
if
(!
Mail
s
.
isConfigured
())
{
if
(!
Solo
s
.
isConfigured
())
{
return
;
}
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
PreferenceQueryService
preferenceQueryService
=
beanManager
.
getReference
(
PreferenceQueryService
.
class
);
final
CommentRepository
commentRepository
=
beanManager
.
getReference
(
CommentRepositoryImpl
.
class
);
...
...
src/main/java/org/b3log/solo/event/B3ArticleSender.java
View file @
da0f217d
...
...
@@ -24,10 +24,8 @@ import org.b3log.latke.Latkes;
import
org.b3log.latke.event.AbstractEventListener
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.User
;
...
...
@@ -52,7 +50,6 @@ import org.json.JSONObject;
* @version 1.0.2.15, Sep 25, 2018
* @since 0.3.1
*/
@Named
@Singleton
public
class
B3ArticleSender
extends
AbstractEventListener
<
JSONObject
>
{
...
...
@@ -80,7 +77,7 @@ public class B3ArticleSender extends AbstractEventListener<JSONObject> {
return
;
}
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
PreferenceQueryService
preferenceQueryService
=
beanManager
.
getReference
(
PreferenceQueryService
.
class
);
final
ArticleQueryService
articleQueryService
=
beanManager
.
getReference
(
ArticleQueryService
.
class
);
...
...
src/main/java/org/b3log/solo/event/B3ArticleUpdater.java
View file @
da0f217d
...
...
@@ -24,10 +24,8 @@ import org.b3log.latke.Latkes;
import
org.b3log.latke.event.AbstractEventListener
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.User
;
...
...
@@ -51,7 +49,6 @@ import org.json.JSONObject;
* @version 1.0.1.5, Sep 25, 2018
* @since 0.6.0
*/
@Named
@Singleton
public
class
B3ArticleUpdater
extends
AbstractEventListener
<
JSONObject
>
{
...
...
@@ -78,7 +75,7 @@ public class B3ArticleUpdater extends AbstractEventListener<JSONObject> {
return
;
}
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
PreferenceQueryService
preferenceQueryService
=
beanManager
.
getReference
(
PreferenceQueryService
.
class
);
final
ArticleQueryService
articleQueryService
=
beanManager
.
getReference
(
ArticleQueryService
.
class
);
...
...
src/main/java/org/b3log/solo/event/B3CommentSender.java
View file @
da0f217d
...
...
@@ -23,10 +23,8 @@ import org.b3log.latke.Latkes;
import
org.b3log.latke.event.AbstractEventListener
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.util.Strings
;
...
...
@@ -44,7 +42,6 @@ import org.json.JSONObject;
* @version 1.0.1.3, Sep 25, 2018
* @since 0.5.5
*/
@Named
@Singleton
public
class
B3CommentSender
extends
AbstractEventListener
<
JSONObject
>
{
...
...
@@ -67,7 +64,7 @@ public class B3CommentSender extends AbstractEventListener<JSONObject> {
try
{
final
JSONObject
originalComment
=
data
.
getJSONObject
(
Comment
.
COMMENT
);
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
PreferenceQueryService
preferenceQueryService
=
beanManager
.
getReference
(
PreferenceQueryService
.
class
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
...
...
src/main/java/org/b3log/solo/event/PageCommentReplyNotifier.java
View file @
da0f217d
...
...
@@ -23,10 +23,8 @@ import org.b3log.latke.Latkes;
import
org.b3log.latke.event.AbstractEventListener
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.mail.MailService
;
...
...
@@ -39,7 +37,7 @@ import org.b3log.solo.model.Page;
import
org.b3log.solo.repository.CommentRepository
;
import
org.b3log.solo.repository.impl.CommentRepositoryImpl
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.util.
Mail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
/**
...
...
@@ -49,7 +47,6 @@ import org.json.JSONObject;
* @version 1.0.2.6, Sep 25, 2018
* @since 0.3.1
*/
@Named
@Singleton
public
class
PageCommentReplyNotifier
extends
AbstractEventListener
<
JSONObject
>
{
...
...
@@ -78,11 +75,11 @@ public class PageCommentReplyNotifier extends AbstractEventListener<JSONObject>
return
;
}
if
(!
Mail
s
.
isConfigured
())
{
if
(!
Solo
s
.
isConfigured
())
{
return
;
}
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
PreferenceQueryService
preferenceQueryService
=
beanManager
.
getReference
(
PreferenceQueryService
.
class
);
final
CommentRepository
commentRepository
=
beanManager
.
getReference
(
CommentRepositoryImpl
.
class
);
...
...
src/main/java/org/b3log/solo/event/PluginRefresher.java
View file @
da0f217d
...
...
@@ -19,10 +19,8 @@ package org.b3log.solo.event;
import
org.b3log.latke.event.AbstractEventListener
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.plugin.AbstractPlugin
;
...
...
@@ -41,7 +39,6 @@ import java.util.List;
* @version 1.0.0.2, Sep 25, 2018
* @since 0.3.1
*/
@Named
@Singleton
public
class
PluginRefresher
extends
AbstractEventListener
<
List
<
AbstractPlugin
>>
{
...
...
@@ -57,7 +54,7 @@ public class PluginRefresher extends AbstractEventListener<List<AbstractPlugin>>
LOGGER
.
log
(
Level
.
DEBUG
,
"Processing an event[type={0}, data={1}] in listener[className={2}]"
,
event
.
getType
(),
plugins
,
PluginRefresher
.
class
.
getName
());
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
PluginRepository
pluginRepository
=
beanManager
.
getReference
(
PluginRepositoryImpl
.
class
);
final
Transaction
transaction
=
pluginRepository
.
beginTransaction
();
...
...
src/main/java/org/b3log/solo/filter/InitCheckFilter.java
View file @
da0f217d
...
...
@@ -20,8 +20,7 @@ package org.b3log.solo.filter;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.servlet.DispatcherServlet
;
...
...
@@ -82,7 +81,7 @@ public final class InitCheckFilter implements Filter {
return
;
}
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
InitService
initService
=
beanManager
.
getReference
(
InitService
.
class
);
if
(
initService
.
isInited
())
{
chain
.
doFilter
(
request
,
response
);
...
...
src/main/java/org/b3log/solo/filter/PermalinkFilter.java
View file @
da0f217d
...
...
@@ -20,8 +20,7 @@ package org.b3log.solo.filter;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
@@ -96,7 +95,7 @@ public final class PermalinkFilter implements Filter {
JSONObject
article
;
JSONObject
page
=
null
;
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
try
{
final
ArticleRepository
articleRepository
=
beanManager
.
getReference
(
ArticleRepositoryImpl
.
class
);
...
...
src/main/java/org/b3log/solo/processor/ArticleProcessor.java
View file @
da0f217d
...
...
@@ -24,7 +24,7 @@ import org.b3log.latke.Latkes;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.event.EventManager
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
@@ -36,19 +36,18 @@ import org.b3log.latke.servlet.HTTPRequestMethod;
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.AbstractFreeMarkerRenderer
;
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.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.processor.console.ConsoleRenderer
;
import
org.b3log.solo.service.DataModelService
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.Skins
;
import
org.b3log.solo.util.
Thumbnail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
import
org.jsoup.Jsoup
;
...
...
@@ -94,10 +93,10 @@ public class ArticleProcessor {
private
CommentQueryService
commentQueryService
;
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Language service.
...
...
@@ -189,7 +188,7 @@ public class ArticleProcessor {
dataModel
.
put
(
Common
.
YEAR
,
String
.
valueOf
(
Calendar
.
getInstance
().
get
(
Calendar
.
YEAR
)));
Keys
.
fillRuntime
(
dataModel
);
filler
.
fillMinified
(
dataModel
);
dataModelService
.
fillMinified
(
dataModel
);
}
/**
...
...
@@ -379,7 +378,7 @@ public class ArticleProcessor {
requestJSONObject
.
put
(
Option
.
ID_C_ENABLE_ARTICLE_UPDATE_HINT
,
preference
.
optBoolean
(
Option
.
ID_C_ENABLE_ARTICLE_UPDATE_HINT
));
final
JSONObject
result
=
articleQueryService
.
getArticles
(
requestJSONObject
);
final
List
<
JSONObject
>
articles
=
org
.
b3log
.
latke
.
util
.
CollectionUtils
.
jsonArrayToList
(
result
.
getJSONArray
(
Article
.
ARTICLES
));
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
jsonObject
.
put
(
Keys
.
RESULTS
,
result
);
}
catch
(
final
Exception
e
)
{
...
...
@@ -414,7 +413,7 @@ public class ArticleProcessor {
final
int
currentPageNum
=
getTagArticlesPagedCurrentPageNum
(
request
.
getRequestURI
());
Stopwatchs
.
start
(
"Get Tag-Articles Paged[tagTitle="
+
tagTitle
+
", pageNum="
+
currentPageNum
+
']'
);
Stopwatchs
.
start
(
"Get Tag-Articles Paged
[tagTitle="
+
tagTitle
+
", pageNum="
+
currentPageNum
+
']'
);
try
{
jsonObject
.
put
(
Keys
.
STATUS_CODE
,
true
);
...
...
@@ -432,7 +431,7 @@ public class ArticleProcessor {
final
int
tagArticleCount
=
tag
.
getInt
(
Tag
.
TAG_PUBLISHED_REFERENCE_COUNT
);
final
int
pageCount
=
(
int
)
Math
.
ceil
((
double
)
tagArticleCount
/
(
double
)
pageSize
);
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
final
JSONObject
result
=
new
JSONObject
();
final
JSONObject
pagination
=
new
JSONObject
();
...
...
@@ -484,7 +483,7 @@ public class ArticleProcessor {
final
int
pageCount
=
(
int
)
Math
.
ceil
((
double
)
articleCount
/
(
double
)
pageSize
);
final
List
<
JSONObject
>
articles
=
articleQueryService
.
getArticlesByArchiveDate
(
archiveDateId
,
currentPageNum
,
pageSize
);
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
final
JSONObject
result
=
new
JSONObject
();
final
JSONObject
pagination
=
new
JSONObject
();
...
...
@@ -535,7 +534,7 @@ public class ArticleProcessor {
final
JSONObject
author
=
authorRet
.
getJSONObject
(
User
.
USER
);
final
List
<
JSONObject
>
articles
=
articleQueryService
.
getArticlesByAuthorId
(
authorId
,
currentPageNum
,
pageSize
);
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
final
int
articleCount
=
author
.
getInt
(
UserExt
.
USER_PUBLISHED_ARTICLE_COUNT
);
final
int
pageCount
=
(
int
)
Math
.
ceil
((
double
)
articleCount
/
(
double
)
pageSize
);
...
...
@@ -617,7 +616,7 @@ public class ArticleProcessor {
return
;
}
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
final
int
articleCount
=
author
.
getInt
(
UserExt
.
USER_PUBLISHED_ARTICLE_COUNT
);
final
int
pageCount
=
(
int
)
Math
.
ceil
((
double
)
articleCount
/
(
double
)
pageSize
);
...
...
@@ -625,7 +624,7 @@ public class ArticleProcessor {
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
prepareShowAuthorArticles
(
pageNums
,
dataModel
,
pageCount
,
currentPageNum
,
articles
,
author
);
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
(
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
),
dataModel
);
statisticMgmtService
.
incBlogViewCount
(
request
,
response
);
...
...
@@ -691,12 +690,12 @@ public class ArticleProcessor {
return
;
}
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
(
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
),
dataModel
);
prepareShowArchiveArticles
(
preference
,
dataModel
,
articles
,
currentPageNum
,
pageCount
,
archiveDateString
,
archiveDate
);
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
statisticMgmtService
.
incBlogViewCount
(
request
,
response
);
}
catch
(
final
Exception
e
)
{
...
...
@@ -769,7 +768,7 @@ public class ArticleProcessor {
if
(
StringUtils
.
isNotBlank
(
userAvatar
))
{
article
.
put
(
Common
.
AUTHOR_THUMBNAIL_URL
,
userAvatar
);
}
else
{
final
String
thumbnailURL
=
Thumbnail
s
.
getGravatarURL
(
author
.
optString
(
User
.
USER_EMAIL
),
"128"
);
final
String
thumbnailURL
=
Solo
s
.
getGravatarURL
(
author
.
optString
(
User
.
USER_EMAIL
),
"128"
);
article
.
put
(
Common
.
AUTHOR_THUMBNAIL_URL
,
thumbnailURL
);
}
...
...
@@ -777,7 +776,7 @@ public class ArticleProcessor {
prepareShowArticle
(
preference
,
dataModel
,
article
);
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
(
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
),
dataModel
);
if
(!
StatisticMgmtService
.
hasBeenServed
(
request
,
response
))
{
...
...
@@ -865,7 +864,7 @@ public class ArticleProcessor {
if
(
StringUtils
.
isNotBlank
(
userAvatar
))
{
dataModel
.
put
(
Common
.
AUTHOR_THUMBNAIL_URL
,
userAvatar
);
}
else
{
final
String
thumbnailURL
=
Thumbnail
s
.
getGravatarURL
(
author
.
optString
(
User
.
USER_EMAIL
),
"128"
);
final
String
thumbnailURL
=
Solo
s
.
getGravatarURL
(
author
.
optString
(
User
.
USER_EMAIL
),
"128"
);
dataModel
.
put
(
Common
.
AUTHOR_THUMBNAIL_URL
,
thumbnailURL
);
}
...
...
src/main/java/org/b3log/solo/processor/BlogProcessor.java
View file @
da0f217d
...
...
@@ -22,7 +22,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
import
org.b3log.latke.model.User
;
...
...
src/main/java/org/b3log/solo/processor/CategoryProcessor.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.processor;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
@@ -30,14 +30,13 @@ 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.
freemarker.
AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.util.Requests
;
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.DataModelService
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.Skins
;
import
org.json.JSONException
;
...
...
@@ -45,7 +44,6 @@ import org.json.JSONObject;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -66,10 +64,10 @@ public class CategoryProcessor {
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
CategoryProcessor
.
class
);
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Language service.
...
...
@@ -195,13 +193,13 @@ public class CategoryProcessor {
}
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
(
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
),
dataModel
);
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
final
List
<
Integer
>
pageNums
=
(
List
)
result
.
optJSONObject
(
Pagination
.
PAGINATION
).
opt
(
Pagination
.
PAGINATION_PAGE_NUMS
);
fillPagination
(
dataModel
,
pageCount
,
currentPageNum
,
articles
,
pageNums
);
dataModel
.
put
(
Common
.
PATH
,
"/category/"
+
URLEncoder
.
encode
(
categoryURI
,
"UTF-8"
));
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
statisticMgmtService
.
incBlogViewCount
(
request
,
response
);
}
catch
(
final
ServiceException
|
JSONException
e
)
{
...
...
src/main/java/org/b3log/solo/processor/CommentProcessor.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.processor;
import
freemarker.template.Template
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.User
;
...
...
@@ -29,7 +29,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.JSONRenderer
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.model.*
;
import
org.b3log.solo.service.CommentMgmtService
;
import
org.b3log.solo.service.PreferenceQueryService
;
...
...
@@ -160,7 +159,7 @@ public class CommentProcessor {
// https://github.com/b3log/solo/issues/12246
try
{
final
String
skinDirName
=
(
String
)
httpServletRequest
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
);
final
Template
template
=
Templates
.
MAIN_CFG
.
getTemplate
(
"common-comment.ftl"
);
final
Template
template
=
Skins
.
getSkinTemplate
(
httpServletRequest
,
"common-comment.ftl"
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
skinDirName
,
dataModel
);
Keys
.
fillServer
(
dataModel
);
...
...
@@ -255,7 +254,7 @@ public class CommentProcessor {
// https://github.com/b3log/solo/issues/12246
try
{
final
String
skinDirName
=
(
String
)
httpServletRequest
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
);
final
Template
template
=
Templates
.
MAIN_CFG
.
getTemplate
(
"common-comment.ftl"
);
final
Template
template
=
Skins
.
getSkinTemplate
(
httpServletRequest
,
"common-comment.ftl"
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
skinDirName
,
dataModel
);
Keys
.
fillServer
(
dataModel
);
...
...
src/main/java/org/b3log/solo/processor/ErrorProcessor.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
processor
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
@@ -28,8 +28,8 @@ import org.b3log.latke.servlet.annotation.RequestProcessing;
import
org.b3log.latke.servlet.annotation.RequestProcessor
;
import
org.b3log.latke.util.Locales
;
import
org.b3log.solo.model.Common
;
import
org.b3log.solo.processor.
renderer
.ConsoleRenderer
;
import
org.b3log.solo.
processor.util.Filler
;
import
org.b3log.solo.processor.
console
.ConsoleRenderer
;
import
org.b3log.solo.
service.DataModelService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.json.JSONObject
;
...
...
@@ -54,10 +54,10 @@ public class ErrorProcessor {
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
ArticleProcessor
.
class
);
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Preference query service.
...
...
@@ -103,7 +103,7 @@ public class ErrorProcessor {
final
Map
<
String
,
String
>
langs
=
langPropsService
.
getAll
(
Locales
.
getLocale
(
request
));
dataModel
.
putAll
(
langs
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModel
.
put
(
Common
.
LOGIN_URL
,
userQueryService
.
getLoginURL
(
Common
.
ADMIN_INDEX_URI
));
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
e
.
getMessage
(),
e
);
...
...
src/main/java/org/b3log/solo/processor/FeedProcessor.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.processor;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.User
;
...
...
src/main/java/org/b3log/solo/processor/FileUploadProcessor.java
View file @
da0f217d
...
...
@@ -31,8 +31,7 @@ import org.apache.commons.lang.ArrayUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.servlet.HTTPRequestContext
;
...
...
@@ -165,7 +164,7 @@ public class FileUploadProcessor {
final
String
date
=
DateFormatUtils
.
format
(
System
.
currentTimeMillis
(),
"yyyy/MM"
);
if
(
QN_ENABLED
)
{
try
{
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
OptionQueryService
optionQueryService
=
beanManager
.
getReference
(
OptionQueryService
.
class
);
qiniu
=
optionQueryService
.
getOptions
(
Option
.
CATEGORY_C_QINIU
);
if
(
null
==
qiniu
)
{
...
...
src/main/java/org/b3log/solo/processor/IndexProcessor.java
View file @
da0f217d
...
...
@@ -17,11 +17,10 @@
*/
package
org
.
b3log
.
solo
.
processor
;
import
freemarker.template.Template
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
@@ -32,18 +31,15 @@ import org.b3log.latke.servlet.HTTPRequestMethod;
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.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.DoNothingRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.util.Locales
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.SoloServletListener
;
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.processor.console.ConsoleRenderer
;
import
org.b3log.solo.service.DataModelService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.StatisticMgmtService
;
import
org.b3log.solo.util.Skins
;
...
...
@@ -52,18 +48,14 @@ import org.json.JSONObject;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
java.util.Map
;
import
java.util.Set
;
/**
* Index processor.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="mailto:385321165@qq.com">DASHU</a>
* @version 1.2.4.
7, Jun 22
, 2018
* @version 1.2.4.
8, Sep 26
, 2018
* @since 0.3.1
*/
@RequestProcessor
...
...
@@ -75,10 +67,10 @@ public class IndexProcessor {
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
IndexProcessor
.
class
);
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Preference query service.
...
...
@@ -134,17 +126,10 @@ public class IndexProcessor {
specifiedSkin
=
preference
.
optString
(
Option
.
ID_C_SKIN_DIR_NAME
);
}
final
Set
<
String
>
skinDirNames
=
Skins
.
getSkinDirNames
();
if
(
skinDirNames
.
contains
(
specifiedSkin
))
{
Templates
.
MAIN_CFG
.
setServletContextForTemplateLoading
(
SoloServletListener
.
getServletContext
(),
"/skins/"
+
specifiedSkin
);
request
.
setAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
,
specifiedSkin
);
}
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
(
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
),
dataModel
);
filler
.
fillIndexArticles
(
request
,
dataModel
,
currentPageNum
,
preference
);
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillIndexArticles
(
request
,
dataModel
,
currentPageNum
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModel
.
put
(
Pagination
.
PAGINATION_CURRENT_PAGE_NUM
,
currentPageNum
);
final
int
previousPageNum
=
currentPageNum
>
1
?
currentPageNum
-
1
:
0
;
...
...
@@ -183,19 +168,19 @@ public class IndexProcessor {
@RequestProcessing
(
value
=
"/kill-browser"
,
method
=
HTTPRequestMethod
.
GET
)
public
void
showKillBrowser
(
final
HTTPRequestContext
context
,
final
HttpServletRequest
request
,
final
HttpServletResponse
response
)
throws
Exception
{
final
AbstractFreeMarkerRenderer
renderer
=
new
KillBrowser
Renderer
();
final
AbstractFreeMarkerRenderer
renderer
=
new
Console
Renderer
();
context
.
setRenderer
(
renderer
);
renderer
.
setTemplateName
(
"kill-browser.ftl"
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
try
{
final
Map
<
String
,
String
>
langs
=
langPropsService
.
getAll
(
Locales
.
getLocale
(
request
));
dataModel
.
putAll
(
langs
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
Keys
.
fillServer
(
dataModel
);
Keys
.
fillRuntime
(
dataModel
);
filler
.
fillMinified
(
dataModel
);
dataModelService
.
fillMinified
(
dataModel
);
}
catch
(
final
ServiceException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
e
.
getMessage
(),
e
);
...
...
@@ -223,8 +208,8 @@ public class IndexProcessor {
final
Map
<
String
,
String
>
langs
=
langPropsService
.
getAll
(
Latkes
.
getLocale
());
dataModel
.
putAll
(
langs
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
filler
.
fillMinified
(
dataModel
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillMinified
(
dataModel
);
}
catch
(
final
ServiceException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
e
.
getMessage
(),
e
);
...
...
@@ -255,55 +240,4 @@ public class IndexProcessor {
return
Requests
.
getCurrentPageNum
(
pageNumString
);
}
/**
* Kill browser (kill-browser.ftl) HTTP response renderer.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.0, Sep 18, 2011
* @since 0.3.1
*/
private
static
final
class
KillBrowserRenderer
extends
AbstractFreeMarkerRenderer
{
/**
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
KillBrowserRenderer
.
class
);
@Override
public
void
render
(
final
HTTPRequestContext
context
)
{
final
HttpServletResponse
response
=
context
.
getResponse
();
response
.
setContentType
(
"text/html"
);
response
.
setCharacterEncoding
(
"UTF-8"
);
try
{
final
Template
template
=
ConsoleRenderer
.
TEMPLATE_CFG
.
getTemplate
(
"kill-browser.ftl"
);
final
PrintWriter
writer
=
response
.
getWriter
();
final
StringWriter
stringWriter
=
new
StringWriter
();
template
.
setOutputEncoding
(
"UTF-8"
);
template
.
process
(
getDataModel
(),
stringWriter
);
final
String
pageContent
=
stringWriter
.
toString
();
writer
.
write
(
pageContent
);
writer
.
flush
();
writer
.
close
();
}
catch
(
final
Exception
e
)
{
try
{
response
.
sendError
(
HttpServletResponse
.
SC_INTERNAL_SERVER_ERROR
);
}
catch
(
final
IOException
ex
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Can not send error 500!"
,
ex
);
}
}
}
@Override
protected
void
afterRender
(
final
HTTPRequestContext
context
)
{
throw
new
UnsupportedOperationException
(
"Not supported yet."
);
}
@Override
protected
void
beforeRender
(
final
HTTPRequestContext
context
)
{
throw
new
UnsupportedOperationException
(
"Not supported yet."
);
}
}
}
src/main/java/org/b3log/solo/processor/InitProcessor.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.processor;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Role
;
...
...
@@ -30,18 +30,18 @@ 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.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.JSONRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.util.Locales
;
import
org.b3log.latke.util.Sessions
;
import
org.b3log.latke.util.Strings
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.model.Common
;
import
org.b3log.solo.model.UserExt
;
import
org.b3log.solo.processor.
renderer
.ConsoleRenderer
;
import
org.b3log.solo.
processor.util.Filler
;
import
org.b3log.solo.processor.
console
.ConsoleRenderer
;
import
org.b3log.solo.
service.DataModelService
;
import
org.b3log.solo.service.InitService
;
import
org.b3log.solo.util.
Thumbnail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -72,10 +72,10 @@ public class InitProcessor {
private
InitService
initService
;
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Language service.
...
...
@@ -110,7 +110,7 @@ public class InitProcessor {
dataModel
.
put
(
Common
.
STATIC_RESOURCE_VERSION
,
Latkes
.
getStaticResourceVersion
());
dataModel
.
put
(
Common
.
YEAR
,
String
.
valueOf
(
Calendar
.
getInstance
().
get
(
Calendar
.
YEAR
)));
Keys
.
fillRuntime
(
dataModel
);
filler
.
fillMinified
(
dataModel
);
dataModelService
.
fillMinified
(
dataModel
);
}
/**
...
...
@@ -172,7 +172,7 @@ public class InitProcessor {
admin
.
put
(
User
.
USER_PASSWORD
,
userPassword
);
String
avatar
=
requestJSONObject
.
optString
(
UserExt
.
USER_AVATAR
);
if
(
StringUtils
.
isBlank
(
avatar
))
{
avatar
=
Thumbnail
s
.
getGravatarURL
(
userEmail
,
"128"
);
avatar
=
Solo
s
.
getGravatarURL
(
userEmail
,
"128"
);
}
admin
.
put
(
UserExt
.
USER_AVATAR
,
avatar
);
...
...
src/main/java/org/b3log/solo/processor/LoginProcessor.java
View file @
da0f217d
...
...
@@ -22,7 +22,7 @@ import org.apache.commons.lang.RandomStringUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.mail.MailService
;
...
...
@@ -37,18 +37,17 @@ 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.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.JSONRenderer
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.Sessions
;
import
org.b3log.solo.SoloServletListener
;
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.processor.console.ConsoleRenderer
;
import
org.b3log.solo.repository.OptionRepository
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.
Mail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
...
...
@@ -100,10 +99,10 @@ public class LoginProcessor {
private
LangPropsService
langPropsService
;
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Preference query service.
...
...
@@ -402,7 +401,7 @@ public class LoginProcessor {
message
.
setSubject
(
mailSubject
);
message
.
setHtmlBody
(
mailBody
);
if
(
Mail
s
.
isConfigured
())
{
if
(
Solo
s
.
isConfigured
())
{
mailService
.
send
(
message
);
}
else
{
LOGGER
.
log
(
Level
.
INFO
,
"Do not send mail caused by not configure mail.properties"
);
...
...
@@ -428,7 +427,6 @@ public class LoginProcessor {
private
void
renderPage
(
final
HTTPRequestContext
context
,
final
String
pageTemplate
,
final
String
destinationURL
,
final
HttpServletRequest
request
)
throws
JSONException
,
ServiceException
{
final
AbstractFreeMarkerRenderer
renderer
=
new
ConsoleRenderer
();
renderer
.
setTemplateName
(
pageTemplate
);
context
.
setRenderer
(
renderer
);
...
...
@@ -468,7 +466,7 @@ public class LoginProcessor {
}
Keys
.
fillRuntime
(
dataModel
);
filler
.
fillMinified
(
dataModel
);
dataModelService
.
fillMinified
(
dataModel
);
}
/**
...
...
src/main/java/org/b3log/solo/processor/OAuthGitHubProcessor.java
View file @
da0f217d
...
...
@@ -23,7 +23,7 @@ import org.apache.commons.lang.RandomStringUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Role
;
...
...
src/main/java/org/b3log/solo/processor/PageProcessor.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
processor
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
@@ -26,13 +26,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.
freemarker.
AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer
;
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.DataModelService
;
import
org.b3log.solo.service.CommentQueryService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.StatisticMgmtService
;
...
...
@@ -68,10 +67,10 @@ public class PageProcessor {
private
LangPropsService
langPropsService
;
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Preference query service.
...
...
@@ -143,7 +142,7 @@ public class PageProcessor {
Stopwatchs
.
end
();
}
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
statisticMgmtService
.
incBlogViewCount
(
request
,
response
);
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
e
.
getMessage
(),
e
);
...
...
src/main/java/org/b3log/solo/processor/RepairProcessor.java
View file @
da0f217d
...
...
@@ -18,8 +18,8 @@
package
org
.
b3log
.
solo
.
processor
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
Latke
BeanManager
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.mail.MailService
;
...
...
@@ -44,7 +44,7 @@ import org.b3log.solo.service.PreferenceMgmtService;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.StatisticMgmtService
;
import
org.b3log.solo.service.StatisticQueryService
;
import
org.b3log.solo.util.
Mail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
...
...
@@ -75,7 +75,7 @@ public class RepairProcessor {
* Bean manager.
*/
@Inject
private
Latke
BeanManager
beanManager
;
private
BeanManager
beanManager
;
/**
* Preference query service.
...
...
@@ -139,7 +139,7 @@ public class RepairProcessor {
renderer
.
setContent
(
"Restores signs succeeded."
);
// Sends the sample signs to developer
if
(!
Mail
s
.
isConfigured
())
{
if
(!
Solo
s
.
isConfigured
())
{
return
;
}
...
...
src/main/java/org/b3log/solo/processor/SearchProcessor.java
View file @
da0f217d
...
...
@@ -20,7 +20,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
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
@@ -29,14 +29,14 @@ 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.AbstractFreeMarkerRenderer
;
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.processor.
console
.ConsoleRenderer
;
import
org.b3log.solo.
service.DataModelService
;
import
org.b3log.solo.service.ArticleQueryService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.UserQueryService
;
...
...
@@ -91,10 +91,10 @@ public class SearchProcessor {
private
LangPropsService
langPropsService
;
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Shows opensearch.xml.
...
...
@@ -155,8 +155,8 @@ public class SearchProcessor {
try
{
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
filler
.
fillCommon
(
request
,
context
.
getResponse
(),
dataModel
,
preference
);
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
fillCommon
(
request
,
context
.
getResponse
(),
dataModel
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModel
.
put
(
Article
.
ARTICLES
,
articles
);
final
JSONObject
pagination
=
result
.
optJSONObject
(
Pagination
.
PAGINATION
);
...
...
src/main/java/org/b3log/solo/processor/SitemapProcessor.java
View file @
da0f217d
...
...
@@ -21,7 +21,7 @@ import org.apache.commons.lang.StringEscapeUtils;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.FilterOperator
;
...
...
@@ -55,7 +55,7 @@ import java.net.URLEncoder;
* Sitemap processor.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.2.
3, Sep 20
, 2018
* @version 1.0.2.
4, Sep 26
, 2018
* @since 0.3.1
*/
@RequestProcessor
...
...
@@ -122,7 +122,7 @@ public class SitemapProcessor {
LOGGER
.
log
(
Level
.
INFO
,
"Generated sitemap"
);
renderer
.
setContent
(
content
);
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Ge
t blog article feed error
"
,
e
);
LOGGER
.
log
(
Level
.
ERROR
,
"Ge
nerates sitemap failed
"
,
e
);
context
.
getResponse
().
sendError
(
HttpServletResponse
.
SC_SERVICE_UNAVAILABLE
);
}
...
...
src/main/java/org/b3log/solo/processor/
renderer/
SkinRenderer.java
→
src/main/java/org/b3log/solo/processor/SkinRenderer.java
View file @
da0f217d
...
...
@@ -15,7 +15,7 @@
* 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
;
package
org
.
b3log
.
solo
.
processor
;
import
freemarker.template.Template
;
import
org.apache.commons.lang.StringUtils
;
...
...
@@ -23,7 +23,8 @@ 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
org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer
;
import
org.b3log.solo.util.Skins
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.StringWriter
;
...
...
@@ -57,6 +58,11 @@ public final class SkinRenderer extends AbstractFreeMarkerRenderer {
this
.
request
=
request
;
}
@Override
protected
Template
getTemplate
()
{
return
Skins
.
getSkinTemplate
(
request
,
getTemplateName
());
}
/**
* Processes the specified FreeMarker template with the specified request, data model, pjax hacking.
*
...
...
@@ -66,6 +72,7 @@ public final class SkinRenderer extends AbstractFreeMarkerRenderer {
* @return generated HTML
* @throws Exception exception
*/
@Override
protected
String
genHTML
(
final
HttpServletRequest
request
,
final
Map
<
String
,
Object
>
dataModel
,
final
Template
template
)
throws
Exception
{
final
boolean
isPJAX
=
isPJAX
(
request
);
...
...
src/main/java/org/b3log/solo/processor/TagProcessor.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.processor;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
@@ -29,15 +29,14 @@ 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.
freemarker.
AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.util.Paginator
;
import
org.b3log.latke.util.Requests
;
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.DataModelService
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.Skins
;
import
org.json.JSONObject
;
...
...
@@ -65,10 +64,10 @@ public class TagProcessor {
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
TagProcessor
.
class
);
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Language service.
...
...
@@ -160,19 +159,19 @@ public class TagProcessor {
return
;
}
filler
.
setArticlesExProperties
(
request
,
articles
,
preference
);
dataModelService
.
setArticlesExProperties
(
request
,
articles
,
preference
);
final
int
tagArticleCount
=
tag
.
getInt
(
Tag
.
TAG_PUBLISHED_REFERENCE_COUNT
);
final
int
pageCount
=
(
int
)
Math
.
ceil
((
double
)
tagArticleCount
/
(
double
)
pageSize
);
LOGGER
.
log
(
Level
.
TRACE
,
"Paginate tag-articles[currentPageNum={0}, pageSize={1}, pageCount={2}, windowSize={3}]"
,
LOGGER
.
log
(
Level
.
TRACE
,
"Paginate tag-articles
[currentPageNum={0}, pageSize={1}, pageCount={2}, windowSize={3}]"
,
currentPageNum
,
pageSize
,
pageCount
,
windowSize
);
final
List
<
Integer
>
pageNums
=
Paginator
.
paginate
(
currentPageNum
,
pageSize
,
pageCount
,
windowSize
);
LOGGER
.
log
(
Level
.
TRACE
,
"tag-articles[pageNums={0}]"
,
pageNums
);
LOGGER
.
log
(
Level
.
TRACE
,
"tag-articles
[pageNums={0}]"
,
pageNums
);
fillPagination
(
dataModel
,
pageCount
,
currentPageNum
,
articles
,
pageNums
);
dataModel
.
put
(
Common
.
PATH
,
"/tags/"
+
URLEncoder
.
encode
(
tagTitle
,
"UTF-8"
));
dataModel
.
put
(
Keys
.
OBJECT_ID
,
tagId
);
dataModel
.
put
(
Tag
.
TAG
,
tag
);
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
statisticMgmtService
.
incBlogViewCount
(
request
,
response
);
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
e
.
getMessage
(),
e
);
...
...
src/main/java/org/b3log/solo/processor/UserTemplateProcessor.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.processor;
import
freemarker.template.Template
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
@@ -28,12 +28,10 @@ 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.
freemarker.
AbstractFreeMarkerRenderer
;
import
org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer
;
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.DataModelService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.StatisticMgmtService
;
import
org.b3log.solo.util.Skins
;
...
...
@@ -63,10 +61,10 @@ public class UserTemplateProcessor {
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
ArticleProcessor
.
class
);
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Preference query service.
...
...
@@ -108,7 +106,7 @@ public class UserTemplateProcessor {
renderer
.
setTemplateName
(
templateName
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
final
Template
template
=
Templates
.
getTemplate
((
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
)
,
templateName
);
final
Template
template
=
Skins
.
getSkinTemplate
(
request
,
templateName
);
if
(
null
==
template
)
{
response
.
sendError
(
HttpServletResponse
.
SC_NOT_FOUND
);
...
...
@@ -119,8 +117,8 @@ public class UserTemplateProcessor {
final
Map
<
String
,
String
>
langs
=
langPropsService
.
getAll
(
Locales
.
getLocale
(
request
));
dataModel
.
putAll
(
langs
);
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
filler
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
filler
.
fillUserTemplate
(
request
,
template
,
dataModel
,
preference
);
dataModelService
.
fillCommon
(
request
,
response
,
dataModel
,
preference
);
dataModelService
.
fillUserTemplate
(
request
,
template
,
dataModel
,
preference
);
Skins
.
fillLangs
(
preference
.
optString
(
Option
.
ID_C_LOCALE_STRING
),
(
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
),
dataModel
);
statisticMgmtService
.
incBlogViewCount
(
request
,
response
);
}
catch
(
final
Exception
e
)
{
...
...
src/main/java/org/b3log/solo/processor/console/AdminConsole.java
View file @
da0f217d
...
...
@@ -27,7 +27,7 @@ import org.b3log.latke.Latkes;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.event.EventManager
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Plugin
;
...
...
@@ -41,7 +41,7 @@ import org.b3log.latke.servlet.HTTPRequestMethod;
import
org.b3log.latke.servlet.annotation.Before
;
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.AbstractFreeMarkerRenderer
;
import
org.b3log.latke.util.Execs
;
import
org.b3log.latke.util.Strings
;
import
org.b3log.solo.SoloServletListener
;
...
...
@@ -49,13 +49,12 @@ import org.b3log.solo.model.Common;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.Skin
;
import
org.b3log.solo.model.UserExt
;
import
org.b3log.solo.processor.renderer.ConsoleRenderer
;
import
org.b3log.solo.processor.util.Filler
;
import
org.b3log.solo.service.DataModelService
;
import
org.b3log.solo.service.ExportService
;
import
org.b3log.solo.service.OptionQueryService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.b3log.solo.util.
Thumbnail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONObject
;
import
javax.servlet.ServletOutputStream
;
...
...
@@ -117,10 +116,10 @@ public class AdminConsole {
private
ExportService
exportService
;
/**
*
Filler
.
*
DataModelService
.
*/
@Inject
private
Filler
filler
;
private
DataModelService
dataModelService
;
/**
* Event manager.
...
...
@@ -159,7 +158,7 @@ public class AdminConsole {
if
(
StringUtils
.
isNotBlank
(
userAvatar
))
{
dataModel
.
put
(
Common
.
GRAVATAR
,
userAvatar
);
}
else
{
final
String
gravatar
=
Thumbnail
s
.
getGravatarURL
(
email
,
"128"
);
final
String
gravatar
=
Solo
s
.
getGravatarURL
(
email
,
"128"
);
dataModel
.
put
(
Common
.
GRAVATAR
,
gravatar
);
}
...
...
@@ -177,7 +176,7 @@ public class AdminConsole {
dataModel
.
put
(
Option
.
ID_C_EDITOR_TYPE
,
preference
.
getString
(
Option
.
ID_C_EDITOR_TYPE
));
dataModel
.
put
(
Skin
.
SKIN_DIR_NAME
,
preference
.
getString
(
Skin
.
SKIN_DIR_NAME
));
Keys
.
fillRuntime
(
dataModel
);
filler
.
fillMinified
(
dataModel
);
dataModelService
.
fillMinified
(
dataModel
);
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Admin index render failed"
,
e
);
}
...
...
src/main/java/org/b3log/solo/processor/console/ArticleConsole.java
View file @
da0f217d
...
...
@@ -21,7 +21,7 @@ import org.apache.commons.lang.StringEscapeUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
src/main/java/org/b3log/solo/processor/console/CategoryConsole.java
View file @
da0f217d
...
...
@@ -21,7 +21,7 @@ import org.apache.commons.lang.StringEscapeUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
src/main/java/org/b3log/solo/processor/console/CommentConsole.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.processor.console;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
src/main/java/org/b3log/solo/processor/console/ConsoleAdminAuthAdvice.java
View file @
da0f217d
...
...
@@ -18,10 +18,8 @@
package
org
.
b3log
.
solo
.
processor
.
console
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.servlet.HTTPRequestContext
;
import
org.b3log.latke.servlet.advice.BeforeRequestProcessAdvice
;
...
...
@@ -40,7 +38,6 @@ import java.util.Map;
* @version 1.0.1.1, Sep 25, 2018
* @since 2.9.5
*/
@Named
@Singleton
public
class
ConsoleAdminAuthAdvice
extends
BeforeRequestProcessAdvice
{
...
...
@@ -51,7 +48,7 @@ public class ConsoleAdminAuthAdvice extends BeforeRequestProcessAdvice {
@Override
public
void
doAdvice
(
final
HTTPRequestContext
context
,
final
Map
<
String
,
Object
>
args
)
throws
RequestProcessAdviceException
{
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
UserQueryService
userQueryService
=
beanManager
.
getReference
(
UserQueryService
.
class
);
final
HttpServletRequest
request
=
context
.
getRequest
();
...
...
src/main/java/org/b3log/solo/processor/console/ConsoleAuthAdvice.java
View file @
da0f217d
...
...
@@ -18,9 +18,8 @@
package
org
.
b3log
.
solo
.
processor
.
console
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Inject
;
import
org.b3log.latke.ioc.inject.Named
;
import
org.b3log.latke.ioc.inject.Singleton
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.ioc.Singleton
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Role
;
import
org.b3log.latke.model.User
;
...
...
@@ -41,7 +40,6 @@ import java.util.Map;
* @version 1.0.1.1, Sep 25, 2018
* @since 2.9.5
*/
@Named
@Singleton
public
class
ConsoleAuthAdvice
extends
BeforeRequestProcessAdvice
{
...
...
src/main/java/org/b3log/solo/processor/
renderer
/ConsoleRenderer.java
→
src/main/java/org/b3log/solo/processor/
console
/ConsoleRenderer.java
View file @
da0f217d
...
...
@@ -15,64 +15,38 @@
* 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
;
package
org
.
b3log
.
solo
.
processor
.
console
;
import
freemarker.template.Configuration
;
import
freemarker.template.Template
;
import
freemarker.template.TemplateExceptionHandler
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.servlet.HTTPRequestContext
;
import
org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer
;
import
org.b3log.solo.SoloServletListener
;
import
javax.servlet.ServletContext
;
import
java.io.IOException
;
import
org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer
;
import
org.b3log.solo.util.Skins
;
/**
* <a href="http://freemarker.org">FreeMarker</a> HTTP response renderer for administrator console and initialization
* rendering.
* <a href="http://freemarker.org">FreeMarker</a> HTTP response renderer for administrator console and initialization rendering.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.1.
4, May 14
, 2018
* @version 1.0.1.
5, Sep 26
, 2018
* @since 0.4.1
*/
public
final
class
ConsoleRenderer
extends
AbstractFreeMarkerRenderer
{
/**
* FreeMarker configuration.
*/
public
static
final
Configuration
TEMPLATE_CFG
;
/**
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
ConsoleRenderer
.
class
);
static
{
TEMPLATE_CFG
=
new
Configuration
(
Configuration
.
VERSION_2_3_28
);
TEMPLATE_CFG
.
setDefaultEncoding
(
"UTF-8"
);
final
ServletContext
servletContext
=
SoloServletListener
.
getServletContext
();
TEMPLATE_CFG
.
setServletContextForTemplateLoading
(
servletContext
,
""
);
TEMPLATE_CFG
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
TEMPLATE_CFG
.
setLogTemplateExceptions
(
false
);
}
@Override
protected
Template
getTemplate
(
final
String
templateDirName
,
final
String
templateName
)
{
try
{
return
TEMPLATE_CFG
.
getTemplate
(
templateName
);
}
catch
(
final
IOException
e
)
{
return
null
;
}
protected
Template
getTemplate
()
{
return
Skins
.
getTemplate
(
getTemplateName
());
}
@Override
protected
void
beforeRender
(
final
HTTPRequestContext
context
)
throws
Exception
{
protected
void
beforeRender
(
final
HTTPRequestContext
context
)
{
}
@Override
protected
void
afterRender
(
final
HTTPRequestContext
context
)
throws
Exception
{
protected
void
afterRender
(
final
HTTPRequestContext
context
)
{
}
}
src/main/java/org/b3log/solo/processor/console/LinkConsole.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.processor.console;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
src/main/java/org/b3log/solo/processor/console/PageConsole.java
View file @
da0f217d
...
...
@@ -20,7 +20,8 @@ package org.b3log.solo.processor.console;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.inject.Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
src/main/java/org/b3log/solo/processor/console/PluginConsole.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.processor.console;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Plugin
;
...
...
@@ -31,7 +31,6 @@ import org.b3log.latke.servlet.annotation.RequestProcessing;
import
org.b3log.latke.servlet.annotation.RequestProcessor
;
import
org.b3log.latke.servlet.renderer.JSONRenderer
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.solo.processor.renderer.ConsoleRenderer
;
import
org.b3log.solo.service.PluginMgmtService
;
import
org.b3log.solo.service.PluginQueryService
;
import
org.json.JSONObject
;
...
...
src/main/java/org/b3log/solo/processor/console/PreferenceConsole.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.processor.console;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
src/main/java/org/b3log/solo/processor/console/TagConsole.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
processor
.
console
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
...
...
src/main/java/org/b3log/solo/processor/console/UserConsole.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.processor.console;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Role
;
...
...
src/main/java/org/b3log/solo/processor/util/FillTagArticles.java
deleted
100644 → 0
View file @
9f15c6ad
/*
* Solo - A small and beautiful blogging system written in Java.
* 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
.
util
;
import
freemarker.template.TemplateMethodModelEx
;
import
freemarker.template.TemplateModelException
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.annotation.Service
;
import
org.b3log.solo.model.Tag
;
import
org.b3log.solo.service.ArticleQueryService
;
import
org.b3log.solo.service.TagQueryService
;
import
org.json.JSONObject
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Fill tag articles.
*
* @author <a href="mailto:385321165@qq.com">DASHU</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.2, Apr 12, 2017
* @since 0.6.1
*/
@Service
public
class
FillTagArticles
implements
TemplateMethodModelEx
{
/**
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
FillTagArticles
.
class
);
/**
* Arg size.
*/
private
static
final
int
ARG_SIZE
=
3
;
/**
* Tag query service.
*/
@Inject
private
TagQueryService
tagQueryService
;
/**
* Article query service.
*/
@Inject
private
ArticleQueryService
articleQueryService
;
@Override
public
Object
exec
(
final
List
arguments
)
throws
TemplateModelException
{
if
(
arguments
.
size
()
!=
ARG_SIZE
)
{
LOGGER
.
debug
(
"FillTagArticles with wrong arguments!"
);
throw
new
TemplateModelException
(
"Wrong arguments!"
);
}
final
String
tagTitle
=
(
String
)
arguments
.
get
(
0
);
final
int
currentPageNum
=
Integer
.
parseInt
((
String
)
arguments
.
get
(
1
));
final
int
pageSize
=
Integer
.
parseInt
((
String
)
arguments
.
get
(
2
));
try
{
final
JSONObject
result
=
tagQueryService
.
getTagByTitle
(
tagTitle
);
if
(
null
==
result
)
{
return
new
ArrayList
<
JSONObject
>();
}
final
JSONObject
tag
=
result
.
getJSONObject
(
Tag
.
TAG
);
final
String
tagId
=
tag
.
getString
(
Keys
.
OBJECT_ID
);
final
List
<
JSONObject
>
ret
=
articleQueryService
.
getArticlesByTag
(
tagId
,
currentPageNum
,
pageSize
);
return
ret
;
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Fill tag articles failed"
,
e
);
}
return
null
;
}
}
src/main/java/org/b3log/solo/processor/util/TopBars.java
deleted
100644 → 0
View file @
9f15c6ad
/*
* Solo - A small and beautiful blogging system written in Java.
* 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
.
util
;
import
freemarker.template.Template
;
import
freemarker.template.TemplateException
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.inject.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Role
;
import
org.b3log.latke.model.User
;
import
org.b3log.latke.service.LangPropsService
;
import
org.b3log.latke.service.ServiceException
;
import
org.b3log.latke.service.annotation.Service
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.Stopwatchs
;
import
org.b3log.solo.model.Common
;
import
org.b3log.solo.processor.renderer.ConsoleRenderer
;
import
org.b3log.solo.service.StatisticQueryService
;
import
org.b3log.solo.service.UserMgmtService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.StringWriter
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* Top bar utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="mailto:dongxu.wang@acm.org">Dongxu Wang</a>
* @version 1.0.1.6, Aug 2, 2018
* @since 0.3.5
*/
@Service
public
class
TopBars
{
/**
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
TopBars
.
class
);
/**
* User query service.
*/
@Inject
private
UserQueryService
userQueryService
;
/**
* Language service.
*/
@Inject
private
LangPropsService
langPropsService
;
/**
* User management service.
*/
@Inject
private
UserMgmtService
userMgmtService
;
/**
* Statistic query service.
*/
@Inject
private
StatisticQueryService
statisticQueryService
;
/**
* Generates top bar HTML.
*
* @param request the specified request
* @param response the specified response
* @return top bar HTML
* @throws ServiceException service exception
*/
public
String
getTopBarHTML
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
)
throws
ServiceException
{
Stopwatchs
.
start
(
"Gens Top Bar HTML"
);
try
{
final
Template
topBarTemplate
=
ConsoleRenderer
.
TEMPLATE_CFG
.
getTemplate
(
"top-bar.ftl"
);
final
StringWriter
stringWriter
=
new
StringWriter
();
final
Map
<
String
,
Object
>
topBarModel
=
new
HashMap
<
String
,
Object
>();
userMgmtService
.
tryLogInWithCookie
(
request
,
response
);
final
JSONObject
currentUser
=
userQueryService
.
getCurrentUser
(
request
);
Keys
.
fillServer
(
topBarModel
);
topBarModel
.
put
(
Common
.
IS_LOGGED_IN
,
false
);
topBarModel
.
put
(
Common
.
IS_MOBILE_REQUEST
,
Requests
.
mobileRequest
(
request
));
topBarModel
.
put
(
"mobileLabel"
,
langPropsService
.
get
(
"mobileLabel"
));
topBarModel
.
put
(
"onlineVisitor1Label"
,
langPropsService
.
get
(
"onlineVisitor1Label"
));
topBarModel
.
put
(
Common
.
ONLINE_VISITOR_CNT
,
StatisticQueryService
.
getOnlineVisitorCount
());
if
(
null
==
currentUser
)
{
topBarModel
.
put
(
Common
.
LOGIN_URL
,
userQueryService
.
getLoginURL
(
Common
.
ADMIN_INDEX_URI
));
topBarModel
.
put
(
"loginLabel"
,
langPropsService
.
get
(
"loginLabel"
));
topBarModel
.
put
(
"registerLabel"
,
langPropsService
.
get
(
"registerLabel"
));
topBarTemplate
.
process
(
topBarModel
,
stringWriter
);
return
stringWriter
.
toString
();
}
topBarModel
.
put
(
Common
.
IS_LOGGED_IN
,
true
);
topBarModel
.
put
(
Common
.
LOGOUT_URL
,
userQueryService
.
getLogoutURL
());
topBarModel
.
put
(
Common
.
IS_ADMIN
,
Role
.
ADMIN_ROLE
.
equals
(
currentUser
.
getString
(
User
.
USER_ROLE
)));
topBarModel
.
put
(
Common
.
IS_VISITOR
,
Role
.
VISITOR_ROLE
.
equals
(
currentUser
.
getString
(
User
.
USER_ROLE
)));
topBarModel
.
put
(
"adminLabel"
,
langPropsService
.
get
(
"adminLabel"
));
topBarModel
.
put
(
"logoutLabel"
,
langPropsService
.
get
(
"logoutLabel"
));
final
String
userName
=
currentUser
.
getString
(
User
.
USER_NAME
);
topBarModel
.
put
(
User
.
USER_NAME
,
userName
);
topBarTemplate
.
process
(
topBarModel
,
stringWriter
);
return
stringWriter
.
toString
();
}
catch
(
final
JSONException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Gens top bar HTML failed"
,
e
);
throw
new
ServiceException
(
e
);
}
catch
(
final
IOException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Gens top bar HTML failed"
,
e
);
throw
new
ServiceException
(
e
);
}
catch
(
final
TemplateException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Gens top bar HTML failed"
,
e
);
throw
new
ServiceException
(
e
);
}
finally
{
Stopwatchs
.
end
();
}
}
}
src/main/java/org/b3log/solo/repository/impl/ArticleRepositoryImpl.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
repository
.
impl
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.*
;
...
...
src/main/java/org/b3log/solo/repository/impl/CommentRepositoryImpl.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
repository
.
impl
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.*
;
...
...
src/main/java/org/b3log/solo/repository/impl/OptionRepositoryImpl.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
repository
.
impl
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.repository.*
;
import
org.b3log.latke.repository.annotation.Repository
;
import
org.b3log.solo.cache.OptionCache
;
...
...
src/main/java/org/b3log/solo/repository/impl/PageRepositoryImpl.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
repository
.
impl
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.repository.*
;
import
org.b3log.latke.repository.annotation.Repository
;
import
org.b3log.solo.cache.PageCache
;
...
...
src/main/java/org/b3log/solo/repository/impl/TagRepositoryImpl.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
repository
.
impl
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.repository.*
;
import
org.b3log.latke.repository.annotation.Repository
;
import
org.b3log.solo.model.Tag
;
...
...
src/main/java/org/b3log/solo/repository/impl/UserRepositoryImpl.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
repository
.
impl
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.model.Role
;
import
org.b3log.latke.model.User
;
import
org.b3log.latke.repository.*
;
...
...
src/main/java/org/b3log/solo/service/ArchiveDateQueryService.java
View file @
da0f217d
...
...
@@ -17,7 +17,7 @@
*/
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
src/main/java/org/b3log/solo/service/ArticleMgmtService.java
View file @
da0f217d
...
...
@@ -24,7 +24,7 @@ import org.b3log.latke.Keys;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventException
;
import
org.b3log.latke.event.EventManager
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
src/main/java/org/b3log/solo/service/ArticleQueryService.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
src/main/java/org/b3log/solo/service/CategoryMgmtService.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.*
;
...
...
src/main/java/org/b3log/solo/service/CategoryQueryService.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
src/main/java/org/b3log/solo/service/CommentMgmtService.java
View file @
da0f217d
...
...
@@ -24,7 +24,7 @@ import org.b3log.latke.Keys;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.event.Event
;
import
org.b3log.latke.event.EventManager
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.mail.MailService
;
...
...
@@ -171,7 +171,7 @@ public class CommentMgmtService {
final
JSONObject
comment
,
final
JSONObject
originalComment
,
final
JSONObject
preference
)
throws
Exception
{
if
(!
Mail
s
.
isConfigured
())
{
if
(!
Solo
s
.
isConfigured
())
{
return
;
}
...
...
@@ -777,7 +777,7 @@ public class CommentMgmtService {
}
// 2. Gravatar
String
thumbnailURL
=
Thumbnail
s
.
getGravatarURL
(
commentEmail
.
toLowerCase
(),
"128"
);
String
thumbnailURL
=
Solo
s
.
getGravatarURL
(
commentEmail
.
toLowerCase
(),
"128"
);
final
URL
gravatarURL
=
new
URL
(
thumbnailURL
);
int
statusCode
=
HttpServletResponse
.
SC_OK
;
...
...
src/main/java/org/b3log/solo/service/CommentQueryService.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
@@ -37,7 +37,7 @@ import org.b3log.solo.repository.CommentRepository;
import
org.b3log.solo.repository.PageRepository
;
import
org.b3log.solo.util.Emotions
;
import
org.b3log.solo.util.Markdowns
;
import
org.b3log.solo.util.
Thumbnail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
import
org.jsoup.Jsoup
;
...
...
@@ -246,7 +246,7 @@ public class CommentQueryService {
final
String
thumbnailURL
=
comment
.
optString
(
Comment
.
COMMENT_THUMBNAIL_URL
);
if
(
StringUtils
.
isBlank
(
thumbnailURL
))
{
comment
.
put
(
Comment
.
COMMENT_THUMBNAIL_URL
,
Thumbnail
s
.
getGravatarURL
(
email
,
"128"
));
comment
.
put
(
Comment
.
COMMENT_THUMBNAIL_URL
,
Solo
s
.
getGravatarURL
(
email
,
"128"
));
}
if
(
StringUtils
.
isNotBlank
(
comment
.
optString
(
Comment
.
COMMENT_ORIGINAL_COMMENT_ID
)))
{
...
...
src/main/java/org/b3log/solo/
processor/util/Filler
.java
→
src/main/java/org/b3log/solo/
service/DataModelService
.java
View file @
da0f217d
This diff is collapsed.
Click to expand it.
src/main/java/org/b3log/solo/service/ExportService.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Plugin
;
...
...
src/main/java/org/b3log/solo/service/ImportService.java
View file @
da0f217d
...
...
@@ -21,7 +21,7 @@ import org.apache.commons.io.FileUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.User
;
...
...
src/main/java/org/b3log/solo/service/InitService.java
View file @
da0f217d
...
...
@@ -24,7 +24,7 @@ import org.apache.commons.lang.time.DateFormatUtils;
import
org.apache.commons.lang.time.DateUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Role
;
...
...
@@ -38,17 +38,17 @@ import org.b3log.latke.service.LangPropsService;
import
org.b3log.latke.service.ServiceException
;
import
org.b3log.latke.service.annotation.Service
;
import
org.b3log.latke.util.Ids
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.model.*
;
import
org.b3log.solo.model.Option.DefaultPreference
;
import
org.b3log.solo.repository.*
;
import
org.b3log.solo.util.*
;
import
org.b3log.solo.util.Images
;
import
org.b3log.solo.util.Skins
;
import
org.b3log.solo.util.Solos
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
javax.servlet.ServletContext
;
import
java.text.ParseException
;
import
java.util.List
;
import
java.util.Set
;
...
...
@@ -478,7 +478,7 @@ public class InitService {
admin
.
put
(
UserExt
.
USER_PUBLISHED_ARTICLE_COUNT
,
0
);
String
avatar
=
requestJSONObject
.
optString
(
UserExt
.
USER_AVATAR
);
if
(
StringUtils
.
isBlank
(
avatar
))
{
avatar
=
Thumbnail
s
.
getGravatarURL
(
requestJSONObject
.
getString
(
User
.
USER_EMAIL
),
"128"
);
avatar
=
Solo
s
.
getGravatarURL
(
requestJSONObject
.
getString
(
User
.
USER_EMAIL
),
"128"
);
}
admin
.
put
(
UserExt
.
USER_AVATAR
,
avatar
);
...
...
@@ -800,12 +800,6 @@ public class InitService {
skinsOpt
.
put
(
Option
.
OPTION_VALUE
,
skinArray
.
toString
());
optionRepository
.
add
(
skinsOpt
);
final
ServletContext
servletContext
=
SoloServletListener
.
getServletContext
();
Templates
.
MAIN_CFG
.
setServletContextForTemplateLoading
(
servletContext
,
"/skins/"
+
skinDirName
);
TimeZones
.
setTimeZone
(
INIT_TIME_ZONE_ID
);
LOGGER
.
debug
(
"Initialized preference"
);
}
...
...
src/main/java/org/b3log/solo/service/LinkMgmtService.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.Transaction
;
...
...
src/main/java/org/b3log/solo/service/LinkQueryService.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
src/main/java/org/b3log/solo/service/OptionMgmtService.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.repository.Transaction
;
import
org.b3log.latke.service.ServiceException
;
import
org.b3log.latke.service.annotation.Service
;
...
...
src/main/java/org/b3log/solo/service/OptionQueryService.java
View file @
da0f217d
...
...
@@ -17,7 +17,7 @@
*/
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.repository.RepositoryException
;
import
org.b3log.latke.service.ServiceException
;
import
org.b3log.latke.service.annotation.Service
;
...
...
src/main/java/org/b3log/solo/service/PageMgmtService.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
src/main/java/org/b3log/solo/service/PageQueryService.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
src/main/java/org/b3log/solo/service/PermalinkQueryService.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
src/main/java/org/b3log/solo/service/PluginMgmtService.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Plugin
;
...
...
src/main/java/org/b3log/solo/service/PluginQueryService.java
View file @
da0f217d
...
...
@@ -17,7 +17,7 @@
*/
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
src/main/java/org/b3log/solo/service/PreferenceMgmtService.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.Transaction
;
...
...
@@ -27,30 +27,25 @@ import org.b3log.latke.service.ServiceException;
import
org.b3log.latke.service.annotation.Service
;
import
org.b3log.latke.util.Locales
;
import
org.b3log.latke.util.Stopwatchs
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.Skin
;
import
org.b3log.solo.repository.OptionRepository
;
import
org.b3log.solo.util.Skins
;
import
org.b3log.solo.util.TimeZones
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
import
javax.servlet.ServletContext
;
import
java.util.Iterator
;
import
java.util.Locale
;
import
java.util.Set
;
import
static
org
.
b3log
.
solo
.
model
.
Skin
.*;
import
static
org
.
b3log
.
solo
.
util
.
Skins
.
getSkinDirNames
;
import
static
org
.
b3log
.
solo
.
util
.
Skins
.
setDirectoryForTemplateLoading
;
/**
* Preference management service.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.3.2.1
5, Sep 17
, 2018
* @version 1.3.2.1
6, Sep 26
, 2018
* @since 0.4.0
*/
@Service
...
...
@@ -140,13 +135,6 @@ public class PreferenceMgmtService {
updatePreference
(
preference
);
}
setDirectoryForTemplateLoading
(
preference
.
getString
(
SKIN_DIR_NAME
));
final
String
localeString
=
preference
.
getString
(
Option
.
ID_C_LOCALE_STRING
);
if
(
"zh_CN"
.
equals
(
localeString
))
{
TimeZones
.
setTimeZone
(
"Asia/Shanghai"
);
}
LOGGER
.
debug
(
"Loaded skins...."
);
Stopwatchs
.
end
();
...
...
@@ -218,9 +206,6 @@ public class PreferenceMgmtService {
preference
.
put
(
Skin
.
SKINS
,
skinArray
.
toString
());
final
String
timeZoneId
=
preference
.
getString
(
Option
.
ID_C_TIME_ZONE_ID
);
TimeZones
.
setTimeZone
(
timeZoneId
);
preference
.
put
(
Option
.
ID_C_SIGNS
,
preference
.
get
(
Option
.
ID_C_SIGNS
).
toString
());
final
JSONObject
oldPreference
=
preferenceQueryService
.
getPreference
();
...
...
@@ -373,10 +358,6 @@ public class PreferenceMgmtService {
optionRepository
.
update
(
Option
.
ID_C_VERSION
,
versionOpt
);
transaction
.
commit
();
final
ServletContext
servletContext
=
SoloServletListener
.
getServletContext
();
Templates
.
MAIN_CFG
.
setServletContextForTemplateLoading
(
servletContext
,
"/skins/"
+
skinDirName
);
}
catch
(
final
Exception
e
)
{
if
(
transaction
.
isActive
())
{
transaction
.
rollback
();
...
...
src/main/java/org/b3log/solo/service/PreferenceQueryService.java
View file @
da0f217d
...
...
@@ -17,7 +17,7 @@
*/
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
src/main/java/org/b3log/solo/service/StatisticMgmtService.java
View file @
da0f217d
...
...
@@ -17,7 +17,7 @@
*/
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
src/main/java/org/b3log/solo/service/StatisticQueryService.java
View file @
da0f217d
...
...
@@ -17,7 +17,7 @@
*/
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.service.ServiceException
;
import
org.b3log.latke.service.annotation.Service
;
import
org.b3log.solo.model.Option
;
...
...
src/main/java/org/b3log/solo/service/TagMgmtService.java
View file @
da0f217d
...
...
@@ -18,7 +18,7 @@
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.RepositoryException
;
...
...
src/main/java/org/b3log/solo/service/TagQueryService.java
View file @
da0f217d
...
...
@@ -17,7 +17,7 @@
*/
package
org
.
b3log
.
solo
.
service
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.repository.Query
;
...
...
src/main/java/org/b3log/solo/service/UpgradeService.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.service;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.mail.MailService
;
...
...
@@ -43,8 +43,7 @@ import org.b3log.solo.repository.ArticleRepository;
import
org.b3log.solo.repository.CommentRepository
;
import
org.b3log.solo.repository.OptionRepository
;
import
org.b3log.solo.repository.UserRepository
;
import
org.b3log.solo.util.Mails
;
import
org.b3log.solo.util.Thumbnails
;
import
org.b3log.solo.util.Solos
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
...
...
@@ -263,7 +262,7 @@ public class UpgradeService {
for
(
int
i
=
0
;
i
<
users
.
length
();
i
++)
{
final
JSONObject
user
=
users
.
getJSONObject
(
i
);
final
String
email
=
user
.
optString
(
User
.
USER_EMAIL
);
user
.
put
(
UserExt
.
USER_AVATAR
,
Thumbnail
s
.
getGravatarURL
(
email
,
"128"
));
user
.
put
(
UserExt
.
USER_AVATAR
,
Solo
s
.
getGravatarURL
(
email
,
"128"
));
userRepository
.
update
(
user
.
optString
(
Keys
.
OBJECT_ID
),
user
);
LOGGER
.
log
(
Level
.
INFO
,
"Updated user[email={0}]"
,
email
);
...
...
@@ -387,7 +386,7 @@ public class UpgradeService {
* @throws Exception exception
*/
private
void
notifyUserByEmail
()
throws
Exception
{
if
(!
Mail
s
.
isConfigured
())
{
if
(!
Solo
s
.
isConfigured
())
{
return
;
}
...
...
src/main/java/org/b3log/solo/service/UserMgmtService.java
View file @
da0f217d
...
...
@@ -21,9 +21,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.inject.Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Role
;
...
...
@@ -40,7 +38,7 @@ import org.b3log.latke.util.Strings;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.UserExt
;
import
org.b3log.solo.repository.UserRepository
;
import
org.b3log.solo.util.
Thumbnail
s
;
import
org.b3log.solo.util.
Solo
s
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
...
...
@@ -95,6 +93,12 @@ public class UserMgmtService {
@Inject
private
OptionMgmtService
optionMgmtService
;
/**
* User query service.
*/
@Inject
private
UserQueryService
userQueryService
;
/**
* Tries to login with cookie.
*
...
...
@@ -122,9 +126,6 @@ public class UserMgmtService {
break
;
}
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
UserQueryService
userQueryService
=
beanManager
.
getReference
(
UserQueryService
.
class
);
final
JSONObject
userResult
=
userQueryService
.
getUser
(
userId
);
if
(
null
==
userResult
)
{
break
;
...
...
@@ -344,7 +345,7 @@ public class UserMgmtService {
String
userAvatar
=
requestJSONObject
.
optString
(
UserExt
.
USER_AVATAR
);
if
(
StringUtils
.
isBlank
(
userAvatar
))
{
userAvatar
=
Thumbnail
s
.
getGravatarURL
(
userEmail
,
"128"
);
userAvatar
=
Solo
s
.
getGravatarURL
(
userEmail
,
"128"
);
}
user
.
put
(
UserExt
.
USER_AVATAR
,
userAvatar
);
...
...
src/main/java/org/b3log/solo/service/UserQueryService.java
View file @
da0f217d
...
...
@@ -19,7 +19,7 @@ package org.b3log.solo.service;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
inject.
Inject
;
import
org.b3log.latke.ioc.Inject
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.model.Pagination
;
...
...
src/main/java/org/b3log/solo/util/JSONs.java
deleted
100644 → 0
View file @
9f15c6ad
/*
* Solo - A small and beautiful blogging system written in Java.
* 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
.
util
;
import
org.b3log.latke.util.CollectionUtils
;
import
org.json.JSONObject
;
/**
* JSON utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.0, Jul 16, 2017
* @since 2.3.0
*/
public
final
class
JSONs
{
/**
* Private constructor.
*/
private
JSONs
()
{
}
/**
* Clones a JSON object from the specified source object.
*
* @param src the specified source object
* @return cloned object
*/
public
static
JSONObject
clone
(
final
JSONObject
src
)
{
return
new
JSONObject
(
src
,
CollectionUtils
.
jsonArrayToArray
(
src
.
names
(),
String
[].
class
));
}
}
\ No newline at end of file
src/main/java/org/b3log/solo/util/Mails.java
deleted
100644 → 0
View file @
9f15c6ad
/*
* Solo - A small and beautiful blogging system written in Java.
* 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
.
util
;
import
org.apache.commons.lang.StringUtils
;
import
java.util.ResourceBundle
;
/**
* Mail utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.0, Jul 20, 2017
* @since 2.3.0
*/
public
final
class
Mails
{
/**
* Mail configuration (mail.properties).
*/
private
static
final
ResourceBundle
mailConf
=
ResourceBundle
.
getBundle
(
"mail"
);
/**
* Private constructor.
*/
private
Mails
()
{
}
/**
* Whether user configures the mail.properties.
*
* @return {@code true} if user configured, returns {@code false} otherwise
*/
public
static
boolean
isConfigured
()
{
try
{
return
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.user"
))
&&
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.password"
))
&&
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.smtp.host"
))
&&
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.smtp.port"
));
}
catch
(
final
Exception
e
)
{
return
false
;
}
}
}
src/main/java/org/b3log/solo/util/Markdowns.java
View file @
da0f217d
...
...
@@ -25,11 +25,10 @@ import org.apache.commons.codec.digest.DigestUtils;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.
LatkeBeanManagerImpl
;
import
org.b3log.latke.ioc.
BeanManager
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
import
org.b3log.latke.service.LangPropsServiceImpl
;
import
org.b3log.latke.util.Callstacks
;
import
org.b3log.latke.util.Stopwatchs
;
import
org.json.JSONObject
;
...
...
@@ -62,11 +61,6 @@ public final class Markdowns {
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
Markdowns
.
class
);
/**
* Language service.
*/
private
static
final
LangPropsService
LANG_PROPS_SERVICE
=
LatkeBeanManagerImpl
.
getInstance
().
getReference
(
LangPropsServiceImpl
.
class
);
/**
* Markdown cache.
*/
...
...
@@ -159,13 +153,15 @@ public final class Markdowns {
return
cachedHTML
;
}
final
LangPropsService
langPropsService
=
BeanManager
.
getInstance
().
getReference
(
LangPropsService
.
class
);
final
ExecutorService
pool
=
Executors
.
newSingleThreadExecutor
();
final
long
[]
threadId
=
new
long
[
1
];
final
Callable
<
String
>
call
=
()
->
{
threadId
[
0
]
=
Thread
.
currentThread
().
getId
();
String
html
=
LANG_PROPS_SERVICE
.
get
(
"contentRenderFailedLabel"
);
String
html
=
langPropsService
.
get
(
"contentRenderFailedLabel"
);
if
(
MARKED_AVAILABLE
)
{
html
=
toHtmlByMarked
(
markdownText
);
...
...
@@ -223,7 +219,7 @@ public final class Markdowns {
Stopwatchs
.
end
();
}
return
LANG_PROPS_SERVICE
.
get
(
"contentRenderFailedLabel"
);
return
langPropsService
.
get
(
"contentRenderFailedLabel"
);
}
private
static
String
toHtmlByMarked
(
final
String
markdownText
)
throws
Exception
{
...
...
src/main/java/org/b3log/solo/util/Skins.java
View file @
da0f217d
...
...
@@ -17,27 +17,28 @@
*/
package
org
.
b3log
.
solo
.
util
;
import
freemarker.template.Configuration
;
import
freemarker.template.Template
;
import
freemarker.template.TemplateExceptionHandler
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.service.LangPropsService
;
import
org.b3log.latke.service.LangPropsServiceImpl
;
import
org.b3log.latke.service.ServiceException
;
import
org.b3log.latke.util.Locales
;
import
org.b3log.latke.util.Requests
;
import
org.b3log.latke.util.Stopwatchs
;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.model.Option
;
import
org.b3log.solo.model.Skin
;
import
javax.servlet.ServletContext
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
...
...
@@ -47,7 +48,7 @@ import java.util.*;
* Skin utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.6.
0, Sep 23
, 2018
* @version 1.1.6.
1, Sep 26
, 2018
* @since 0.3.1
*/
public
final
class
Skins
{
...
...
@@ -57,6 +58,20 @@ public final class Skins {
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
Skins
.
class
);
/**
* FreeMarker configuration.
*/
public
static
final
Configuration
TEMPLATE_CFG
;
static
{
TEMPLATE_CFG
=
new
Configuration
(
Configuration
.
VERSION_2_3_28
);
TEMPLATE_CFG
.
setDefaultEncoding
(
"UTF-8"
);
final
ServletContext
servletContext
=
SoloServletListener
.
getServletContext
();
TEMPLATE_CFG
.
setServletContextForTemplateLoading
(
servletContext
,
""
);
TEMPLATE_CFG
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
TEMPLATE_CFG
.
setLogTemplateExceptions
(
false
);
}
/**
* Properties map.
*/
...
...
@@ -68,6 +83,42 @@ public final class Skins {
private
Skins
()
{
}
/**
* Gets a template with the specified template name.
*
* @param templateName the specified template name
* @return template, returns {@code null} if not found
*/
public
static
Template
getTemplate
(
final
String
templateName
)
{
try
{
return
Skins
.
TEMPLATE_CFG
.
getTemplate
(
templateName
);
}
catch
(
final
IOException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Gets console template ["
+
templateName
+
"] failed"
,
e
);
return
null
;
}
}
/**
* Gets a skins template with the specified request and template name.
*
* @param request the specified request
* @param templateName the specified template name
* @return template, returns {@code null} if not found
*/
public
static
Template
getSkinTemplate
(
final
HttpServletRequest
request
,
final
String
templateName
)
{
String
templateDirName
=
(
String
)
request
.
getAttribute
(
Keys
.
TEMAPLTE_DIR_NAME
);
if
(
StringUtils
.
isBlank
(
templateDirName
))
{
templateDirName
=
Option
.
DefaultPreference
.
DEFAULT_SKIN_DIR_NAME
;
}
try
{
return
Skins
.
TEMPLATE_CFG
.
getTemplate
(
"skins/"
+
templateDirName
+
"/"
+
templateName
);
}
catch
(
final
IOException
e
)
{
return
null
;
}
}
/**
* Fills the specified data model with the current skink's (WebRoot/skins/${skinName}/lang/lang_xx_XX.properties)
* and core language (WebRoot/WEB-INF/classes/lang_xx_XX.properties) configurations.
...
...
@@ -84,12 +135,11 @@ public final class Skins {
try
{
final
String
langName
=
currentSkinDirName
+
"."
+
localeString
;
Map
<
String
,
String
>
langs
=
LANG_MAP
.
get
(
langName
);
if
(
null
==
langs
)
{
LANG_MAP
.
clear
();
// Collect unused skin languages
LOGGER
.
log
(
Level
.
DEBUG
,
"Loading skin [dirName={0}, locale={1}]"
,
currentSkinDirName
,
localeString
);
langs
=
new
HashMap
<
String
,
String
>();
langs
=
new
HashMap
<>();
final
String
language
=
Locales
.
getLanguage
(
localeString
);
final
String
country
=
Locales
.
getCountry
(
localeString
);
...
...
@@ -99,24 +149,21 @@ public final class Skins {
"/skins/"
+
currentSkinDirName
+
"/lang/lang_"
+
language
+
'_'
+
country
+
".properties"
);
final
Properties
props
=
new
Properties
();
props
.
load
(
inputStream
);
final
Set
<
Object
>
keys
=
props
.
keySet
();
for
(
final
Object
key
:
keys
)
{
langs
.
put
((
String
)
key
,
props
.
getProperty
((
String
)
key
));
}
LANG_MAP
.
put
(
langName
,
langs
);
LOGGER
.
log
(
Level
.
DEBUG
,
"Loaded skin[dirName={0}, locale={1}, keyCount={2}]"
,
currentSkinDirName
,
localeString
,
langs
.
size
());
LOGGER
.
log
(
Level
.
DEBUG
,
"Loaded skin[dirName={0}, locale={1}, keyCount={2}]"
,
currentSkinDirName
,
localeString
,
langs
.
size
());
}
dataModel
.
putAll
(
langs
);
// Fills the current skin's language configurations
// Fills the core language configurations
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
LangPropsService
langPropsService
=
beanManager
.
getReference
(
LangPropsService
Impl
.
class
);
final
BeanManager
beanManager
=
BeanManager
.
getInstance
();
final
LangPropsService
langPropsService
=
beanManager
.
getReference
(
LangPropsService
.
class
);
dataModel
.
putAll
(
langPropsService
.
getAll
(
Latkes
.
getLocale
()));
}
catch
(
final
Exception
e
)
{
...
...
@@ -128,24 +175,6 @@ public final class Skins {
}
}
/**
* Sets the directory for template loading with the specified skin directory name, and sets the directory for mobile
* request template loading.
*
* @param skinDirName the specified skin directory name
*/
public
static
void
setDirectoryForTemplateLoading
(
final
String
skinDirName
)
{
final
ServletContext
servletContext
=
SoloServletListener
.
getServletContext
();
Templates
.
MAIN_CFG
.
setServletContextForTemplateLoading
(
servletContext
,
"/skins/"
+
skinDirName
);
Templates
.
MAIN_CFG
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
Templates
.
MAIN_CFG
.
setLogTemplateExceptions
(
false
);
Templates
.
MOBILE_CFG
.
setServletContextForTemplateLoading
(
servletContext
,
"/skins/"
+
Solos
.
MOBILE_SKIN
);
Templates
.
MOBILE_CFG
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
Templates
.
MOBILE_CFG
.
setLogTemplateExceptions
(
false
);
}
/**
* Gets all skin directory names. Scans the /skins/ directory, using the subdirectory of it as the skin directory
* name, for example,
...
...
src/main/java/org/b3log/solo/util/Solos.java
View file @
da0f217d
...
...
@@ -17,8 +17,13 @@
*/
package
org
.
b3log
.
solo
.
util
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.latke.util.CollectionUtils
;
import
org.b3log.solo.SoloServletListener
;
import
org.json.JSONObject
;
import
java.util.MissingResourceException
;
import
java.util.ResourceBundle
;
...
...
@@ -27,11 +32,21 @@ import java.util.ResourceBundle;
* Solo utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
2.0.0, Sep 17
, 2018
* @version 1.
3.0.0, Sep 28
, 2018
* @since 2.8.0
*/
public
final
class
Solos
{
/**
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
Solos
.
class
);
/**
* Mail configuration (mail.properties).
*/
private
static
final
ResourceBundle
mailConf
=
ResourceBundle
.
getBundle
(
"mail"
);
/**
* B3log Rhythm address.
*/
...
...
@@ -67,6 +82,7 @@ public final class Solos {
*/
public
static
final
String
USER_AGENT
=
"Solo/"
+
SoloServletListener
.
VERSION
+
"; +https://github.com/b3log/solo"
;
static
{
ResourceBundle
solo
;
try
{
...
...
@@ -85,15 +101,52 @@ public final class Solos {
}
UPLOAD_DIR_PATH
=
dir
;
String
mobileSkin
=
"
mobile
"
;
String
mobileSkin
=
"
Medium
"
;
try
{
mobileSkin
=
solo
.
getString
(
"mobile.skin"
);
}
catch
(
final
Exception
e
)
{
// ignored
LOGGER
.
log
(
Level
.
WARN
,
"Loads [mobile.skin] in solo.props failed ["
+
e
.
getMessage
()
+
"], using ["
+
mobileSkin
+
"] as the default mobile skin"
);
}
MOBILE_SKIN
=
mobileSkin
;
}
/**
* Whether user configures the mail.properties.
*
* @return {@code true} if user configured, returns {@code false} otherwise
*/
public
static
boolean
isConfigured
()
{
try
{
return
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.user"
))
&&
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.password"
))
&&
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.smtp.host"
))
&&
StringUtils
.
isNotBlank
(
mailConf
.
getString
(
"mail.smtp.port"
));
}
catch
(
final
Exception
e
)
{
return
false
;
}
}
/**
* Gets the Gravatar URL for the specified email with the specified size.
*
* @param email the specified email
* @param size the specified size
* @return the Gravatar URL
*/
public
static
String
getGravatarURL
(
final
String
email
,
final
String
size
)
{
return
GRAVATAR
+
DigestUtils
.
md5Hex
(
email
)
+
"?s="
+
size
;
}
/**
* Clones a JSON object from the specified source object.
*
* @param src the specified source object
* @return cloned object
*/
public
static
JSONObject
clone
(
final
JSONObject
src
)
{
return
new
JSONObject
(
src
,
CollectionUtils
.
jsonArrayToArray
(
src
.
names
(),
String
[].
class
));
}
/**
* Private constructor.
*/
...
...
src/main/java/org/b3log/solo/util/Thumbnails.java
deleted
100644 → 0
View file @
9f15c6ad
/*
* Solo - A small and beautiful blogging system written in Java.
* 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
.
util
;
import
org.apache.commons.codec.digest.DigestUtils
;
/**
* Thumbnail utilities.
* <p>
* By using <a href="http://gravatar.com">Gravatar</a> for user thumbnail.
* </p>
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.0.2, Aug 2, 2018
* @since 0.6.1
*/
public
final
class
Thumbnails
{
/**
* Gets the Gravatar URL for the specified email with the specified size.
*
* @param email the specified email
* @param size the specified size
* @return the Gravatar URL
*/
public
static
String
getGravatarURL
(
final
String
email
,
final
String
size
)
{
return
Solos
.
GRAVATAR
+
DigestUtils
.
md5Hex
(
email
)
+
"?s="
+
size
;
}
/**
* Private constructor.
*/
private
Thumbnails
()
{
}
}
src/main/java/org/b3log/solo/util/TimeZones.java
deleted
100644 → 0
View file @
9f15c6ad
/*
* Solo - A small and beautiful blogging system written in Java.
* 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
.
util
;
import
org.b3log.latke.util.freemarker.Templates
;
import
java.util.TimeZone
;
/**
* Time zone utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.6, Jan 5, 2014
*/
public
final
class
TimeZones
{
/**
* Sets time zone by the specified time zone id.
*
* @param timeZoneId the specified time zone id
*/
public
static
void
setTimeZone
(
final
String
timeZoneId
)
{
final
TimeZone
timeZone
=
TimeZone
.
getTimeZone
(
timeZoneId
);
Templates
.
MAIN_CFG
.
setTimeZone
(
timeZone
);
Templates
.
MOBILE_CFG
.
setTimeZone
(
timeZone
);
}
/**
* Private constructor.
*/
private
TimeZones
()
{
}
}
src/main/resources/latke.properties
View file @
da0f217d
...
...
@@ -35,5 +35,5 @@ cookieName=solo
cookieSecret
=
Beyond
#### Runtime Mode ####
#
runtimeMode=DEVELOPMENT
runtimeMode
=
PRODUCTION
runtimeMode
=
DEVELOPMENT
#
runtimeMode=PRODUCTION
src/main/webapp/js/common.js
View file @
da0f217d
...
...
@@ -75,6 +75,9 @@ var Util = {
storage
:
true
,
titleSuffix
:
''
,
filter
:
function
(
href
){
if
(
href
===
latkeConfig
.
servePath
+
'
/rss.xml
'
)
{
return
true
}
if
(
href
.
indexOf
(
latkeConfig
.
servePath
)
>
-
1
)
{
return
false
}
...
...
src/main/webapp/js/common.min.js
View file @
da0f217d
This diff is collapsed.
Click to expand it.
src/test/java/org/b3log/solo/AbstractTestCase.java
View file @
da0f217d
...
...
@@ -18,9 +18,8 @@
package
org
.
b3log
.
solo
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
import
org.b3log.latke.ioc.Lifecycle
;
import
org.b3log.latke.ioc.config.Discoverer
;
import
org.b3log.latke.ioc.BeanManager
;
import
org.b3log.latke.ioc.Discoverer
;
import
org.b3log.latke.repository.jdbc.util.Connections
;
import
org.b3log.latke.repository.jdbc.util.JdbcRepositories
;
import
org.b3log.solo.api.MetaWeblogAPI
;
...
...
@@ -46,7 +45,7 @@ public abstract class AbstractTestCase {
/**
* Bean manager.
*/
private
Latke
BeanManager
beanManager
;
private
BeanManager
beanManager
;
/**
* Before class.
...
...
@@ -63,8 +62,8 @@ public abstract class AbstractTestCase {
Latkes
.
setLocale
(
Locale
.
SIMPLIFIED_CHINESE
);
final
Collection
<
Class
<?>>
classes
=
Discoverer
.
discover
(
"org.b3log.solo"
);
Lifecycle
.
startApplication
(
classes
);
beanManager
=
Lifecycle
.
getBeanManager
();
BeanManager
.
start
(
classes
);
beanManager
=
BeanManager
.
getInstance
();
final
Connection
connection
=
Connections
.
getConnection
();
connection
.
createStatement
().
execute
(
"DROP ALL OBJECTS"
);
...
...
src/test/java/org/b3log/solo/processor/ArticleProcessorTestCase.java
View file @
da0f217d
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.processor;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
Lifecycle
;
import
org.b3log.latke.ioc.
BeanManager
;
import
org.b3log.latke.model.User
;
import
org.b3log.latke.repository.Query
;
import
org.b3log.latke.servlet.HTTPRequestContext
;
...
...
@@ -344,7 +344,7 @@ public class ArticleProcessorTestCase extends AbstractTestCase {
httpRequestContext
.
setRequest
(
request
);
httpRequestContext
.
setResponse
(
response
);
final
ArticleProcessor
articleProcessor
=
Lifecycle
.
getBeanManager
().
getReference
(
ArticleProcessor
.
class
);
final
ArticleProcessor
articleProcessor
=
BeanManager
.
getInstance
().
getReference
(
ArticleProcessor
.
class
);
articleProcessor
.
showArticle
(
httpRequestContext
,
request
,
response
);
final
Map
<
String
,
Object
>
dataModel
=
httpRequestContext
.
getRenderer
().
getRenderDataModel
();
...
...
src/test/java/org/b3log/solo/processor/PageProcessorTestCase.java
View file @
da0f217d
...
...
@@ -17,15 +17,9 @@
*/
package
org
.
b3log
.
solo
.
processor
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
java.util.Map
;
import
javax.servlet.ServletContext
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.ioc.
Lifecycle
;
import
org.b3log.latke.ioc.
BeanManager
;
import
org.b3log.latke.model.User
;
import
org.b3log.latke.servlet.HTTPRequestContext
;
import
org.b3log.solo.AbstractTestCase
;
...
...
@@ -36,10 +30,19 @@ import org.b3log.solo.service.InitService;
import
org.b3log.solo.service.PageMgmtService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.json.JSONObject
;
import
static
org
.
mockito
.
Mockito
.*;
import
org.testng.Assert
;
import
org.testng.annotations.Test
;
import
javax.servlet.ServletContext
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
java.util.Map
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
when
;
/**
* {@link PageProcessor} test case.
*
...
...
@@ -97,7 +100,7 @@ public class PageProcessorTestCase extends AbstractTestCase {
httpRequestContext
.
setRequest
(
request
);
httpRequestContext
.
setResponse
(
response
);
final
PageProcessor
pageProcessor
=
Lifecycle
.
getBeanManager
().
getReference
(
PageProcessor
.
class
);
final
PageProcessor
pageProcessor
=
BeanManager
.
getInstance
().
getReference
(
PageProcessor
.
class
);
pageProcessor
.
showPage
(
httpRequestContext
);
final
Map
<
String
,
Object
>
dataModel
=
httpRequestContext
.
getRenderer
().
getRenderDataModel
();
...
...
src/test/java/org/b3log/solo/util/ThumbnailsTestCase.java
View file @
da0f217d
This diff is collapsed.
Click to expand it.
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