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
f5eb32da
Commit
f5eb32da
authored
Sep 12, 2015
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#12029
parent
5bce628f
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
333 additions
and
129 deletions
+333
-129
core/nb-configuration.xml
core/nb-configuration.xml
+1
-0
core/src/main/java/org/b3log/solo/model/Option.java
core/src/main/java/org/b3log/solo/model/Option.java
+30
-3
core/src/main/java/org/b3log/solo/processor/console/PreferenceConsole.java
...a/org/b3log/solo/processor/console/PreferenceConsole.java
+113
-33
war/src/main/resources/lang_en_US.properties
war/src/main/resources/lang_en_US.properties
+2
-1
war/src/main/resources/lang_zh_CN.properties
war/src/main/resources/lang_zh_CN.properties
+2
-1
war/src/main/webapp/admin-preference.ftl
war/src/main/webapp/admin-preference.ftl
+50
-2
war/src/main/webapp/js/admin/latkeAdmin.js
war/src/main/webapp/js/admin/latkeAdmin.js
+67
-44
war/src/main/webapp/js/admin/latkeAdmin.min.js
war/src/main/webapp/js/admin/latkeAdmin.min.js
+1
-1
war/src/main/webapp/js/admin/preference.js
war/src/main/webapp/js/admin/preference.js
+67
-44
No files found.
core/nb-configuration.xml
View file @
f5eb32da
...
...
@@ -33,6 +33,7 @@ Without this configuration present, some functionality in the IDE may be limited
<word>
Pluginable
</word>
<word>
Plugins
</word>
<word>
plugins
</word>
<word>
Qiniu
</word>
<word>
servlet
</word>
<word>
servlets
</word>
<word>
sitemap
</word>
...
...
core/src/main/java/org/b3log/solo/model/Option.java
View file @
f5eb32da
...
...
@@ -15,12 +15,11 @@
*/
package
org
.
b3log
.
solo
.
model
;
/**
* This class defines option model relevant keys.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
0.0.0, Apr 15, 2013
* @version 1.
1.0.0, Sep 12, 2015
* @since 0.6.0
*/
public
final
class
Option
{
...
...
@@ -44,19 +43,47 @@ public final class Option {
* Key of option category.
*/
public
static
final
String
OPTION_CATEGORY
=
"optionCategory"
;
// oId constants
/**
* Key of broadcast chance expiration time.
*/
public
static
final
String
ID_C_BROADCAST_CHANCE_EXPIRATION_TIME
=
"broadcastChanceExpirationTime"
;
/**
* Key of Qiniu access key.
*/
public
static
final
String
ID_C_QINIU_ACCESS_KEY
=
"qiniuAccessKey"
;
/**
* Key of Qiniu secret key.
*/
public
static
final
String
ID_C_QINIU_SECRET_KEY
=
"qiniuSecretKey"
;
/**
* Key of Qiniu domain.
*/
public
static
final
String
ID_C_QINIU_DOMAIN
=
"qiniuDomain"
;
/**
* Key of Qiniu bucket.
*/
public
static
final
String
ID_C_QINIU_BUCKET
=
"qiniuBucket"
;
// Category constants
/**
* Broadcast.
*/
public
static
final
String
CATEGORY_C_BROADCAST
=
"broadcast"
;
/**
* Qiniu.
*/
public
static
final
String
CATEGORY_C_QINIU
=
"qiniu"
;
/**
* Private constructor.
*/
private
Option
()
{}
private
Option
()
{
}
}
core/src/main/java/org/b3log/solo/processor/console/PreferenceConsole.java
View file @
f5eb32da
...
...
@@ -15,7 +15,6 @@
*/
package
org
.
b3log
.
solo
.
processor
.
console
;
import
javax.inject.Inject
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -30,8 +29,10 @@ 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.model.Option
;
import
org.b3log.solo.model.Preference
;
import
org.b3log.solo.model.Sign
;
import
org.b3log.solo.service.OptionMgmtService
;
import
org.b3log.solo.service.PreferenceMgmtService
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.service.UserQueryService
;
...
...
@@ -39,12 +40,11 @@ import org.b3log.solo.util.QueryResults;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
/**
* Preference console request processing.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
0.0.6, May 17, 2013
* @version 1.
1.0.6, Sep 12, 2015
* @since 0.4.0
*/
@RequestProcessor
...
...
@@ -67,6 +67,12 @@ public class PreferenceConsole {
@Inject
private
PreferenceMgmtService
preferenceMgmtService
;
/**
* Option management service.
*/
@Inject
private
OptionMgmtService
optionMgmtService
;
/**
* User query service.
*/
...
...
@@ -141,8 +147,7 @@ public class PreferenceConsole {
/**
* Updates reply template.
*
* @param request the specified http servlet request, for example,
* <pre>
* @param request the specified http servlet request, for example, <pre>
* {
* "replyNotificationTemplate": {
* "subject": "",
...
...
@@ -150,6 +155,7 @@ public class PreferenceConsole {
* }
* }
* </pre>
*
* @param response the specified http servlet response
* @param context the specified http request context
* @throws Exception exception
...
...
@@ -345,8 +351,7 @@ public class PreferenceConsole {
/**
* Updates the preference by the specified request.
*
* @param request the specified http servlet request, for example,
* <pre>
* @param request the specified http servlet request, for example, <pre>
* {
* "preference": {
* "mostViewArticleDisplayCount": int,
...
...
@@ -380,6 +385,7 @@ public class PreferenceConsole {
* }
* }, see {@link org.b3log.solo.model.Preference} for more details
* </pre>
*
* @param response the specified http servlet response
* @param context the specified http request context
* @throws Exception exception
...
...
@@ -423,6 +429,80 @@ public class PreferenceConsole {
}
}
/**
* Updates the Qiniu preference by the specified request.
*
* @param request the specified http servlet request, for example, <pre>
* {
* "qiniuAccessKey": "",
* "qiniuSecretKey": "",
* "qiniuDomain": "",
* "qiniuBucket": ""
* }, see {@link org.b3log.solo.model.Option} for more details
* </pre>
*
* @param response the specified http servlet response
* @param context the specified http request context
* @throws Exception exception
*/
@RequestProcessing
(
value
=
PREFERENCE_URI_PREFIX
+
"qiniu"
,
method
=
HTTPRequestMethod
.
PUT
)
public
void
updateQiniu
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
throws
Exception
{
if
(!
userQueryService
.
isAdminLoggedIn
(
request
))
{
response
.
sendError
(
HttpServletResponse
.
SC_FORBIDDEN
);
return
;
}
final
JSONRenderer
renderer
=
new
JSONRenderer
();
context
.
setRenderer
(
renderer
);
try
{
final
JSONObject
requestJSONObject
=
Requests
.
parseRequestJSONObject
(
request
,
response
);
final
String
accessKey
=
requestJSONObject
.
optString
(
Option
.
ID_C_QINIU_ACCESS_KEY
);
final
String
secretKey
=
requestJSONObject
.
optString
(
Option
.
ID_C_QINIU_SECRET_KEY
);
final
String
domain
=
requestJSONObject
.
optString
(
Option
.
ID_C_QINIU_DOMAIN
);
final
String
bucket
=
requestJSONObject
.
optString
(
Option
.
ID_C_QINIU_BUCKET
);
final
JSONObject
ret
=
new
JSONObject
();
renderer
.
setJSONObject
(
ret
);
final
JSONObject
accessKeyOpt
=
new
JSONObject
();
accessKeyOpt
.
put
(
Keys
.
OBJECT_ID
,
Option
.
ID_C_QINIU_ACCESS_KEY
);
accessKeyOpt
.
put
(
Option
.
OPTION_CATEGORY
,
Option
.
CATEGORY_C_QINIU
);
accessKeyOpt
.
put
(
Option
.
OPTION_VALUE
,
accessKey
);
final
JSONObject
secretKeyOpt
=
new
JSONObject
();
secretKeyOpt
.
put
(
Keys
.
OBJECT_ID
,
Option
.
ID_C_QINIU_SECRET_KEY
);
secretKeyOpt
.
put
(
Option
.
OPTION_CATEGORY
,
Option
.
CATEGORY_C_QINIU
);
secretKeyOpt
.
put
(
Option
.
OPTION_VALUE
,
secretKey
);
final
JSONObject
domainOpt
=
new
JSONObject
();
domainOpt
.
put
(
Keys
.
OBJECT_ID
,
Option
.
ID_C_QINIU_DOMAIN
);
domainOpt
.
put
(
Option
.
OPTION_CATEGORY
,
Option
.
CATEGORY_C_QINIU
);
domainOpt
.
put
(
Option
.
OPTION_VALUE
,
domain
);
final
JSONObject
bucketOpt
=
new
JSONObject
();
bucketOpt
.
put
(
Keys
.
OBJECT_ID
,
Option
.
ID_C_QINIU_BUCKET
);
bucketOpt
.
put
(
Option
.
OPTION_CATEGORY
,
Option
.
CATEGORY_C_QINIU
);
bucketOpt
.
put
(
Option
.
OPTION_VALUE
,
bucket
);
optionMgmtService
.
addOrUpdateOption
(
accessKeyOpt
);
optionMgmtService
.
addOrUpdateOption
(
secretKeyOpt
);
optionMgmtService
.
addOrUpdateOption
(
domainOpt
);
optionMgmtService
.
addOrUpdateOption
(
bucketOpt
);
ret
.
put
(
Keys
.
STATUS_CODE
,
true
);
ret
.
put
(
Keys
.
MSG
,
langPropsService
.
get
(
"updateSuccLabel"
));
}
catch
(
final
ServiceException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
e
.
getMessage
(),
e
);
final
JSONObject
jsonObject
=
QueryResults
.
defaultResult
();
renderer
.
setJSONObject
(
jsonObject
);
jsonObject
.
put
(
Keys
.
MSG
,
e
.
getMessage
());
}
}
/**
* Checks whether the specified preference is invalid and sets the specified response object.
*
...
...
war/src/main/resources/lang_en_US.properties
View file @
f5eb32da
...
...
@@ -16,12 +16,13 @@
#
# Description: Solo language configurations(en_US).
# Version: 2.
3.2.3, Aug 8
, 2015
# Version: 2.
4.2.3, Sep 12
, 2015
# Author: Liang Ding
# Author: Liyuan Li
# Author: Dongxu Wang
#
qiniuLabel
=
Qiniu
contributorsLabel
=
Contributors
developersLabel
=
Developers
staticErrorLabel
=
<h1>staticServePath Error</h1><a target='_blank' href='https://github.com/b3log/solo/wiki/usr_faq#1-init'>https://github.com/b3log/solo/wiki/usr_faq</a>
...
...
war/src/main/resources/lang_zh_CN.properties
View file @
f5eb32da
...
...
@@ -16,12 +16,13 @@
#
# Description: Solo default language configurations(zh_CN).
# Version: 2.
3.4.11, Aug 8
, 2015
# Version: 2.
4.4.11, Sep 12
, 2015
# Author: Liang Ding
# Author: Liyuan Li
# Author: Dongxu Wang
#
qiniuLabel
=
\u
4e03
\u
725b
contributorsLabel
=
\u
8d21
\u
732e
\u8005
developersLabel
=
\u
5f00
\u
53d1
\u8005
staticErrorLabel
=
<h1>staticServePath
\u
914d
\u
7f6e
\u9519\u
8bef</h1>
\u
8bf7
\u
67e5
\u
770b <a target='_blank' href='https://github.com/b3log/solo/wiki/usr_faq#1-init'>https://github.com/b3log/solo/wiki/usr_faq</a>
...
...
war/src/main/webapp/admin-preference.ftl
View file @
f5eb32da
...
...
@@ -20,6 +20,11 @@
<a href="#tools/preference/setting">${paramSettingsLabel}</a>
</div>
</li>
<li>
<div id="tabPreference_qiniu">
<a href="#toos/preference/qiniu">${qiniuLabel}</a>
</div>
</li>
<li>
<div id="tabPreference_solo">
<a href="#tools/preference/solo">B3log</a>
...
...
@@ -111,8 +116,8 @@
<input id="keyOfSolo" class="normalInput" type="text" readonly="readonly"/>
</td>
<td>
<!-- <button onclick="admin.preference.update()">${updateLabel}</button>-->
<label></label>
<!-- <button onclick="admin.preference.update()">${updateLabel}</button>-->
<label></label>
</td>
</tr>
</tbody>
...
...
@@ -343,5 +348,48 @@
</tbody>
</table>
</div>
<div id="tabPreferencePanel_qiniu" class="none">
<table class="form" width="98%" cellpadding="0" cellspacing="9px">
<tbody>
<tr>
<th colspan="2">
<button onclick="admin.preference.updateQiniu()">${updateLabel}</button>
</th>
</tr>
<tr>
<th>
<label for="qiniuAccessKey">AccessKey</label>
</th>
<td>
<input id="qiniuAccessKey" class="normalInput" type="text"/>
</td>
</tr>
<tr>
<th>
<label for="qiniuSecretKey">SecretKey</label>
</th>
<td>
<input id="qiniuSecretKey" class="normalInput" type="text"/>
</td>
</tr>
<tr>
<th>
<label for="qiniuDomain">Domain</label>
</th>
<td>
<input id="qiniuDomain" class="normalInput" type="text"/>
</td>
</tr>
<tr>
<th>
<label for="qiniuBucket">Bucket</label>
</th>
<td>
<input id="qiniuBucket" class="normalInput" type="text"/>
</td>
</tr>
</tbody>
</table>
</div>
</div>
${plugins}
\ No newline at end of file
war/src/main/webapp/js/admin/latkeAdmin.js
View file @
f5eb32da
...
...
@@ -2833,14 +2833,13 @@ admin.register["link-list"] = {
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
0.1.8, May 28, 2013
* @version 1.
1.1.8, Sep 12, 2015
*/
/* preference 相关操作 */
admin
.
preference
=
{
locale
:
""
,
editorType
:
""
,
/*
* 初始化
*/
...
...
@@ -2851,7 +2850,7 @@ admin.preference = {
url
:
latkeConfig
.
servePath
+
"
/console/preference/
"
,
type
:
"
GET
"
,
cache
:
false
,
success
:
function
(
result
,
textStatus
)
{
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
if
(
!
result
.
sc
)
{
$
(
"
#loadMsg
"
).
text
(
""
);
...
...
@@ -2891,7 +2890,7 @@ admin.preference = {
for
(
var
i
=
0
;
i
<
skins
.
length
;
i
++
)
{
var
selectedClass
=
""
;
if
(
skins
[
i
].
skinName
===
preference
.
skinName
&&
skins
[
i
].
skinDirName
===
preference
.
skinDirName
)
{
&&
skins
[
i
].
skinDirName
===
preference
.
skinDirName
)
{
selectedClass
+=
"
selected
"
;
}
skinsHTML
+=
"
<div title='
"
+
skins
[
i
].
skinDirName
...
...
@@ -2931,7 +2930,6 @@ admin.preference = {
}
});
},
/*
* @description 参数校验
*/
...
...
@@ -2975,7 +2973,6 @@ admin.preference = {
}
return
true
;
},
/*
* @description 更新
*/
...
...
@@ -3037,7 +3034,7 @@ admin.preference = {
type
:
"
PUT
"
,
cache
:
false
,
data
:
JSON
.
stringify
(
requestJSONObject
),
success
:
function
(
result
,
textStatus
)
{
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
if
(
!
result
.
sc
)
{
$
(
"
#loadMsg
"
).
text
(
""
);
...
...
@@ -3059,6 +3056,32 @@ admin.preference = {
signs
[
i
].
signHTML
===
""
?
Label
.
signIsNullLabel
:
signs
[
i
].
signHTML
.
replace
(
/
\n
/g
,
""
).
replace
(
/<script.*<
\/
script>/ig
,
""
));
}
$
(
"
#loadMsg
"
).
text
(
""
);
}
});
},
/*
* @description 更新 Qiniu 参数
*/
updateQiniu
:
function
()
{
$
(
"
#tipMsg
"
).
text
(
""
);
$
(
"
#loadMsg
"
).
text
(
Label
.
loadingLabel
);
var
requestJSONObject
=
{
"
qiniuAccessKey
"
:
$
(
"
#qiniuAccessKey
"
).
val
(),
"
qiniuSecretKey
"
:
$
(
"
#qiniuSecretKey
"
).
val
(),
"
qiniuDomain
"
:
$
(
"
#qiniuDomain
"
).
val
(),
"
qiniuBucket
"
:
$
(
"
#qiniuBucket
"
).
val
()
};
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/preference/qiniu
"
,
type
:
"
PUT
"
,
cache
:
false
,
data
:
JSON
.
stringify
(
requestJSONObject
),
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
$
(
"
#loadMsg
"
).
text
(
""
);
}
});
...
...
war/src/main/webapp/js/admin/latkeAdmin.min.js
View file @
f5eb32da
This source diff could not be displayed because it is too large. You can
view the blob
instead.
war/src/main/webapp/js/admin/preference.js
View file @
f5eb32da
...
...
@@ -18,14 +18,13 @@
*
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
0.1.8, May 28, 2013
* @version 1.
1.1.8, Sep 12, 2015
*/
/* preference 相关操作 */
admin
.
preference
=
{
locale
:
""
,
editorType
:
""
,
/*
* 初始化
*/
...
...
@@ -36,7 +35,7 @@ admin.preference = {
url
:
latkeConfig
.
servePath
+
"
/console/preference/
"
,
type
:
"
GET
"
,
cache
:
false
,
success
:
function
(
result
,
textStatus
)
{
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
if
(
!
result
.
sc
)
{
$
(
"
#loadMsg
"
).
text
(
""
);
...
...
@@ -76,7 +75,7 @@ admin.preference = {
for
(
var
i
=
0
;
i
<
skins
.
length
;
i
++
)
{
var
selectedClass
=
""
;
if
(
skins
[
i
].
skinName
===
preference
.
skinName
&&
skins
[
i
].
skinDirName
===
preference
.
skinDirName
)
{
&&
skins
[
i
].
skinDirName
===
preference
.
skinDirName
)
{
selectedClass
+=
"
selected
"
;
}
skinsHTML
+=
"
<div title='
"
+
skins
[
i
].
skinDirName
...
...
@@ -116,7 +115,6 @@ admin.preference = {
}
});
},
/*
* @description 参数校验
*/
...
...
@@ -160,7 +158,6 @@ admin.preference = {
}
return
true
;
},
/*
* @description 更新
*/
...
...
@@ -222,7 +219,7 @@ admin.preference = {
type
:
"
PUT
"
,
cache
:
false
,
data
:
JSON
.
stringify
(
requestJSONObject
),
success
:
function
(
result
,
textStatus
)
{
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
if
(
!
result
.
sc
)
{
$
(
"
#loadMsg
"
).
text
(
""
);
...
...
@@ -244,6 +241,32 @@ admin.preference = {
signs
[
i
].
signHTML
===
""
?
Label
.
signIsNullLabel
:
signs
[
i
].
signHTML
.
replace
(
/
\n
/g
,
""
).
replace
(
/<script.*<
\/
script>/ig
,
""
));
}
$
(
"
#loadMsg
"
).
text
(
""
);
}
});
},
/*
* @description 更新 Qiniu 参数
*/
updateQiniu
:
function
()
{
$
(
"
#tipMsg
"
).
text
(
""
);
$
(
"
#loadMsg
"
).
text
(
Label
.
loadingLabel
);
var
requestJSONObject
=
{
"
qiniuAccessKey
"
:
$
(
"
#qiniuAccessKey
"
).
val
(),
"
qiniuSecretKey
"
:
$
(
"
#qiniuSecretKey
"
).
val
(),
"
qiniuDomain
"
:
$
(
"
#qiniuDomain
"
).
val
(),
"
qiniuBucket
"
:
$
(
"
#qiniuBucket
"
).
val
()
};
$
.
ajax
({
url
:
latkeConfig
.
servePath
+
"
/console/preference/qiniu
"
,
type
:
"
PUT
"
,
cache
:
false
,
data
:
JSON
.
stringify
(
requestJSONObject
),
success
:
function
(
result
,
textStatus
)
{
$
(
"
#tipMsg
"
).
text
(
result
.
msg
);
$
(
"
#loadMsg
"
).
text
(
""
);
}
});
...
...
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