Commit dbc30c2e authored by Liang Ding's avatar Liang Ding

Merge pull request #126 from b3log/0.5.5

0.5.5 同步到主干
parents ab9a3dfd 80f32731
...@@ -5,6 +5,29 @@ ...@@ -5,6 +5,29 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head> </head>
<body> <body>
<h2>Release 0.5.5 - Nov 24, 2012</h2>
<ul>
<li><a href="https://github.com/b3log/b3log-solo/issues/72">72 非管理员登录后 TopBar 无后台入口</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/73">73 支持 BAE 部署</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/74">74 跨版本升级提示</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/75">75 加入页面类型变量</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/78">78 MetaWeblog API 获取文章日期问题</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/80">80 MetaWeblog API 发布文章摘要问题</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/82">82 登录、初始化问题</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/85">85 配置文件按项目分离</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/86">86 Hello World 文章多语言</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/87">87 加入运行信息公共模版变量</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/88">88 登录页体验改进</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/99">99 404 页面加入登录入口</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/101">101 验证码改造</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/103">103 本地版数据库表前缀支持</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/104">104 升级到 GAE SDK 1.7.2</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/106">106 摘要编辑器改进</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/111">111 与社区同步</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/113">113 无文章首页不返回 404</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/125">125 Feed 输出加密文章</a></li>
</ul>
<h2>Release 0.5.0 - Aug 25, 2012</h2> <h2>Release 0.5.0 - Aug 25, 2012</h2>
<ul> <ul>
<li><a href="https://github.com/b3log/b3log-solo/issues/16">16 浏览数统计写配额优化</a></li> <li><a href="https://github.com/b3log/b3log-solo/issues/16">16 浏览数统计写配额优化</a></li>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Description: B3log Solo core. Description: B3log Solo core.
Version: 2.0.1.0, Aug 16, 2012 Version: 2.0.1.1, Nov 21, 2012
Author: Liang Ding Author: Liang Ding
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<parent> <parent>
<groupId>org.b3log</groupId> <groupId>org.b3log</groupId>
<artifactId>solo</artifactId> <artifactId>solo</artifactId>
<version>0.5.0</version> <version>0.5.5</version>
</parent> </parent>
<dependencies> <dependencies>
......
...@@ -53,7 +53,7 @@ import org.json.JSONObject; ...@@ -53,7 +53,7 @@ import org.json.JSONObject;
* B3log Solo servlet listener. * B3log Solo servlet listener.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.7.5, Aug 16, 2011 * @version 1.0.7.6, Nov 21, 2012
* @since 0.3.1 * @since 0.3.1
*/ */
public final class SoloServletListener extends AbstractServletListener { public final class SoloServletListener extends AbstractServletListener {
...@@ -61,7 +61,7 @@ public final class SoloServletListener extends AbstractServletListener { ...@@ -61,7 +61,7 @@ public final class SoloServletListener extends AbstractServletListener {
/** /**
* B3log Solo version. * B3log Solo version.
*/ */
public static final String VERSION = "0.5.0"; public static final String VERSION = "0.5.5";
/** /**
* Logger. * Logger.
*/ */
......
...@@ -42,7 +42,7 @@ import org.jsoup.Jsoup; ...@@ -42,7 +42,7 @@ import org.jsoup.Jsoup;
* Article receiver (from B3log Symphony). * Article receiver (from B3log Symphony).
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.1, Oct 12, 2012 * @version 1.0.0.2, Nov 19, 2012
* @since 0.5.5 * @since 0.5.5
*/ */
@RequestProcessor @RequestProcessor
...@@ -131,8 +131,12 @@ public final class ArticleReceiver { ...@@ -131,8 +131,12 @@ public final class ArticleReceiver {
article.put(Common.POST_TO_COMMUNITY, false); article.put(Common.POST_TO_COMMUNITY, false);
article.put(Article.ARTICLE_COMMENTABLE, true); article.put(Article.ARTICLE_COMMENTABLE, true);
article.put(Article.ARTICLE_VIEW_PWD, ""); article.put(Article.ARTICLE_VIEW_PWD, "");
String content = article.getString(Article.ARTICLE_CONTENT);
final String articleId = article.getString(Keys.OBJECT_ID);
content += "<br/><p><i>该文章同步自 <a href='http://symphony.b3log.org/article/" + articleId + "'>B3log 社区</a></i></p>";
article.put(Article.ARTICLE_CONTENT, content);
final String articleId = articleMgmtService.addArticle(requestJSONObject); articleMgmtService.addArticle(requestJSONObject);
ret.put(Keys.OBJECT_ID, articleId); ret.put(Keys.OBJECT_ID, articleId);
ret.put(Keys.MSG, "add article succ"); ret.put(Keys.MSG, "add article succ");
......
...@@ -65,7 +65,7 @@ import org.json.JSONObject; ...@@ -65,7 +65,7 @@ import org.json.JSONObject;
* Comment receiver (from B3log Symphony). * Comment receiver (from B3log Symphony).
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.1, Oct 17, 2012 * @version 1.0.0.2, Nov 19, 2012
* @since 0.5.5 * @since 0.5.5
*/ */
@RequestProcessor @RequestProcessor
...@@ -130,6 +130,7 @@ public final class CommentReceiver { ...@@ -130,6 +130,7 @@ public final class CommentReceiver {
* "comment": { * "comment": {
* "userB3Key": "", * "userB3Key": "",
* "oId": "", * "oId": "",
* "commentSymphonyArticleId": "",
* "commentOnArticleId": "", * "commentOnArticleId": "",
* "commentAuthorName": "", * "commentAuthorName": "",
* "commentAuthorEmail": "", * "commentAuthorEmail": "",
...@@ -177,12 +178,15 @@ public final class CommentReceiver { ...@@ -177,12 +178,15 @@ public final class CommentReceiver {
final String commentName = symphonyCmt.getString("commentAuthorName"); final String commentName = symphonyCmt.getString("commentAuthorName");
final String commentEmail = symphonyCmt.getString("commentAuthorEmail").trim().toLowerCase(); final String commentEmail = symphonyCmt.getString("commentAuthorEmail").trim().toLowerCase();
final String commentURL = "http://" + symphonyCmt.optString("commentAuthorURL"); final String commentURL = "http://" + symphonyCmt.optString("commentAuthorURL");
final String commentContent = symphonyCmt.getString(Comment.COMMENT_CONTENT); final String commentId = symphonyCmt.optString(Keys.OBJECT_ID);
String commentContent = symphonyCmt.getString(Comment.COMMENT_CONTENT);
commentContent += "<br/><p><i>该评论同步自 <a href='http://symphony.b3log.org/article/"
+ symphonyCmt.optString("commentSymphonyArticleId") + "#" + commentId + "'>B3log 社区</a></i></p>";
final String originalCommentId = symphonyCmt.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID); final String originalCommentId = symphonyCmt.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID);
// Step 1: Add comment // Step 1: Add comment
final JSONObject comment = new JSONObject(); final JSONObject comment = new JSONObject();
JSONObject originalComment = null; JSONObject originalComment = null;
final String commentId = symphonyCmt.optString(Keys.OBJECT_ID);
comment.put(Keys.OBJECT_ID, commentId); comment.put(Keys.OBJECT_ID, commentId);
comment.put(Comment.COMMENT_NAME, commentName); comment.put(Comment.COMMENT_NAME, commentName);
comment.put(Comment.COMMENT_EMAIL, commentEmail); comment.put(Comment.COMMENT_EMAIL, commentEmail);
......
...@@ -41,7 +41,7 @@ import org.json.JSONObject; ...@@ -41,7 +41,7 @@ import org.json.JSONObject;
* This listener is responsible for sending article to B3log Rhythm. * This listener is responsible for sending article to B3log Rhythm.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.2.2, Nov 2, 2012 * @version 1.0.2.3, Nov 19, 2012
* @since 0.3.1 * @since 0.3.1
*/ */
public final class ArticleSender extends AbstractEventListener<JSONObject> { public final class ArticleSender extends AbstractEventListener<JSONObject> {
...@@ -95,11 +95,11 @@ public final class ArticleSender extends AbstractEventListener<JSONObject> { ...@@ -95,11 +95,11 @@ public final class ArticleSender extends AbstractEventListener<JSONObject> {
} }
final String blogHost = preference.getString(Preference.BLOG_HOST).toLowerCase(); final String blogHost = preference.getString(Preference.BLOG_HOST).toLowerCase();
// if (blogHost.contains("localhost")) { if (blogHost.contains("localhost")) {
// LOGGER.log(Level.INFO, "Blog Solo runs on local server, so should not send this article[id={0}, title={1}] to Rhythm", LOGGER.log(Level.INFO, "Blog Solo runs on local server, so should not send this article[id={0}, title={1}] to Rhythm",
// new Object[]{originalArticle.getString(Keys.OBJECT_ID), originalArticle.getString(Article.ARTICLE_TITLE)}); new Object[]{originalArticle.getString(Keys.OBJECT_ID), originalArticle.getString(Article.ARTICLE_TITLE)});
// return; return;
// } }
final HTTPRequest httpRequest = new HTTPRequest(); final HTTPRequest httpRequest = new HTTPRequest();
httpRequest.setURL(ADD_ARTICLE_URL); httpRequest.setURL(ADD_ARTICLE_URL);
......
...@@ -40,7 +40,7 @@ import org.json.JSONObject; ...@@ -40,7 +40,7 @@ import org.json.JSONObject;
* This listener is responsible for sending comment to B3log Symphony. * This listener is responsible for sending comment to B3log Symphony.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.0, Oct 18, 2012 * @version 1.0.0.2, Nov 20, 2012
* @since 0.5.5 * @since 0.5.5
*/ */
public final class CommentSender extends AbstractEventListener<JSONObject> { public final class CommentSender extends AbstractEventListener<JSONObject> {
...@@ -60,7 +60,7 @@ public final class CommentSender extends AbstractEventListener<JSONObject> { ...@@ -60,7 +60,7 @@ public final class CommentSender extends AbstractEventListener<JSONObject> {
/** /**
* B3log Symphony address. * B3log Symphony address.
*/ */
public static final String B3LOG_SYMPHONY_ADDRESS = "http://symphony.b3log.org:8080"; public static final String B3LOG_SYMPHONY_ADDRESS = "http://symphony.b3log.org:80";
/** /**
* URL of adding comment to Symphony. * URL of adding comment to Symphony.
*/ */
...@@ -89,11 +89,11 @@ public final class CommentSender extends AbstractEventListener<JSONObject> { ...@@ -89,11 +89,11 @@ public final class CommentSender extends AbstractEventListener<JSONObject> {
} }
final String blogHost = preference.getString(Preference.BLOG_HOST).toLowerCase(); final String blogHost = preference.getString(Preference.BLOG_HOST).toLowerCase();
// if (blogHost.contains("localhost")) { if (blogHost.contains("localhost")) {
// LOGGER.log(Level.INFO, "Blog Solo runs on local server, so should not send this comment[id={0}] to Symphony", LOGGER.log(Level.INFO, "Blog Solo runs on local server, so should not send this comment[id={0}] to Symphony",
// new Object[]{orginalComment.getString(Keys.OBJECT_ID)}); new Object[]{originalComment.getString(Keys.OBJECT_ID)});
// return; return;
// } }
final HTTPRequest httpRequest = new HTTPRequest(); final HTTPRequest httpRequest = new HTTPRequest();
httpRequest.setURL(ADD_COMMENT_URL); httpRequest.setURL(ADD_COMMENT_URL);
...@@ -109,7 +109,7 @@ public final class CommentSender extends AbstractEventListener<JSONObject> { ...@@ -109,7 +109,7 @@ public final class CommentSender extends AbstractEventListener<JSONObject> {
requestJSONObject.put(Comment.COMMENT, comment); requestJSONObject.put(Comment.COMMENT, comment);
requestJSONObject.put("clientVersion", SoloServletListener.VERSION); requestJSONObject.put("clientVersion", SoloServletListener.VERSION);
requestJSONObject.put("clientRuntimeEnv", Latkes.getRuntimeEnv().name()); requestJSONObject.put("clientRuntimeEnv", Latkes.getRuntimeEnv().name());
requestJSONObject.put("clientnName", "B3log Solo"); requestJSONObject.put("clientName", "B3log Solo");
requestJSONObject.put("clientHost", blogHost); requestJSONObject.put("clientHost", blogHost);
requestJSONObject.put("clientAdminEmail", preference.optString(Preference.ADMIN_EMAIL)); requestJSONObject.put("clientAdminEmail", preference.optString(Preference.ADMIN_EMAIL));
requestJSONObject.put("userB3Key", preference.optString(Preference.KEY_OF_SOLO)); requestJSONObject.put("userB3Key", preference.optString(Preference.KEY_OF_SOLO));
......
...@@ -26,6 +26,9 @@ import javax.servlet.http.HttpServletResponse; ...@@ -26,6 +26,9 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringEscapeUtils;
import org.b3log.latke.Keys; import org.b3log.latke.Keys;
import org.b3log.latke.model.User; import org.b3log.latke.model.User;
import org.b3log.latke.repository.CompositeFilter;
import org.b3log.latke.repository.CompositeFilterOperator;
import org.b3log.latke.repository.Filter;
import org.b3log.latke.repository.FilterOperator; import org.b3log.latke.repository.FilterOperator;
import org.b3log.latke.repository.PropertyFilter; import org.b3log.latke.repository.PropertyFilter;
import org.b3log.latke.repository.Query; import org.b3log.latke.repository.Query;
...@@ -64,7 +67,7 @@ import org.json.JSONObject; ...@@ -64,7 +67,7 @@ import org.json.JSONObject;
* Feed (Atom/RSS) processor. * Feed (Atom/RSS) processor.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.1.0.1, Aug 2, 2012 * @version 1.1.0.2, Nov 15, 2012
* @since 0.3.1 * @since 0.3.1
*/ */
@RequestProcessor @RequestProcessor
...@@ -124,9 +127,12 @@ public final class FeedProcessor { ...@@ -124,9 +127,12 @@ public final class FeedProcessor {
feed.setLink("http://" + blogHost + "/blog-articles-feed.do"); feed.setLink("http://" + blogHost + "/blog-articles-feed.do");
feed.setId("http://" + blogHost + "/"); feed.setId("http://" + blogHost + "/");
final List<Filter> filters = new ArrayList<Filter>();
filters.add(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true));
filters.add(new PropertyFilter(Article.ARTICLE_VIEW_PWD, FilterOperator.EQUAL, ""));
final Query query = new Query().setCurrentPageNum(1). final Query query = new Query().setCurrentPageNum(1).
setPageSize(ENTRY_OUTPUT_CNT). setPageSize(ENTRY_OUTPUT_CNT).
setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)). setFilter(new CompositeFilter(CompositeFilterOperator.AND, filters)).
addSort(Article.ARTICLE_UPDATE_DATE, SortDirection.DESCENDING). addSort(Article.ARTICLE_UPDATE_DATE, SortDirection.DESCENDING).
setPageCount(1); setPageCount(1);
...@@ -249,7 +255,8 @@ public final class FeedProcessor { ...@@ -249,7 +255,8 @@ public final class FeedProcessor {
final JSONObject tagArticleRelation = tagArticleRelations.getJSONObject(i); final JSONObject tagArticleRelation = tagArticleRelations.getJSONObject(i);
final String articleId = tagArticleRelation.getString(Article.ARTICLE + "_" + Keys.OBJECT_ID); final String articleId = tagArticleRelation.getString(Article.ARTICLE + "_" + Keys.OBJECT_ID);
final JSONObject article = articleRepository.get(articleId); final JSONObject article = articleRepository.get(articleId);
if (article.getBoolean(Article.ARTICLE_IS_PUBLISHED)) { // Skips the unpublished article if (article.getBoolean(Article.ARTICLE_IS_PUBLISHED) // Skips the unpublished article
&& Strings.isEmptyOrNull(article.optString(Article.ARTICLE_VIEW_PWD))) { // Skips article with password
articles.add(article); articles.add(article);
} }
} }
...@@ -339,9 +346,12 @@ public final class FeedProcessor { ...@@ -339,9 +346,12 @@ public final class FeedProcessor {
channel.setLanguage(language + '-' + country); channel.setLanguage(language + '-' + country);
channel.setDescription(blogSubtitle); channel.setDescription(blogSubtitle);
final List<Filter> filters = new ArrayList<Filter>();
filters.add(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true));
filters.add(new PropertyFilter(Article.ARTICLE_VIEW_PWD, FilterOperator.EQUAL, ""));
final Query query = new Query().setCurrentPageNum(1). final Query query = new Query().setCurrentPageNum(1).
setPageSize(ENTRY_OUTPUT_CNT). setPageSize(ENTRY_OUTPUT_CNT).
setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)). setFilter(new CompositeFilter(CompositeFilterOperator.AND, filters)).
addSort(Article.ARTICLE_UPDATE_DATE, SortDirection.DESCENDING). addSort(Article.ARTICLE_UPDATE_DATE, SortDirection.DESCENDING).
setPageCount(1); setPageCount(1);
...@@ -467,7 +477,8 @@ public final class FeedProcessor { ...@@ -467,7 +477,8 @@ public final class FeedProcessor {
final JSONObject tagArticleRelation = tagArticleRelations.getJSONObject(i); final JSONObject tagArticleRelation = tagArticleRelations.getJSONObject(i);
final String articleId = tagArticleRelation.getString(Article.ARTICLE + "_" + Keys.OBJECT_ID); final String articleId = tagArticleRelation.getString(Article.ARTICLE + "_" + Keys.OBJECT_ID);
final JSONObject article = articleRepository.get(articleId); final JSONObject article = articleRepository.get(articleId);
if (article.getBoolean(Article.ARTICLE_IS_PUBLISHED)) { // Skips the unpublished article if (article.getBoolean(Article.ARTICLE_IS_PUBLISHED) // Skips the unpublished article
&& Strings.isEmptyOrNull(article.optString(Article.ARTICLE_VIEW_PWD))) { // Skips article with password
articles.add(article); articles.add(article);
} }
} }
......
...@@ -45,7 +45,7 @@ import org.json.JSONObject; ...@@ -45,7 +45,7 @@ import org.json.JSONObject;
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @author <a href="mailto:dongxv.vang@gmail.com">Dongxu Wang</a> * @author <a href="mailto:dongxv.vang@gmail.com">Dongxu Wang</a>
* @version 1.1.1.3, Aug 30, 2012 * @version 1.1.1.4, Nov 21, 2012
* @since 0.3.1 * @since 0.3.1
*/ */
@RequestProcessor @RequestProcessor
...@@ -123,10 +123,10 @@ public final class UpgradeProcessor { ...@@ -123,10 +123,10 @@ public final class UpgradeProcessor {
return; return;
} }
if ("0.4.6".equals(version)) { if ("0.5.0".equals(version)) {
v046ToV050(); v050ToV055();
} else { } else {
LOGGER.log(Level.WARNING, "Attempt to skip more than one version to upgrade. Expected: 0.4.6; Actually: {0}", version); LOGGER.log(Level.WARNING, "Attempt to skip more than one version to upgrade. Expected: 0.5.0; Actually: {0}", version);
if(!sent){ if(!sent){
notifyUserByEmail(); notifyUserByEmail();
sent = true; sent = true;
...@@ -141,12 +141,12 @@ public final class UpgradeProcessor { ...@@ -141,12 +141,12 @@ public final class UpgradeProcessor {
} }
/** /**
* Upgrades from version 046 to version 050. * Upgrades from version 050 to version 055.
* *
* @throws Exception upgrade fails * @throws Exception upgrade fails
*/ */
private void v046ToV050() throws Exception { private void v050ToV055() throws Exception {
LOGGER.info("Upgrading from version 046 to version 050...."); LOGGER.info("Upgrading from version 050 to version 055....");
articleRepository.setCacheEnabled(false); articleRepository.setCacheEnabled(false);
...@@ -157,25 +157,25 @@ public final class UpgradeProcessor { ...@@ -157,25 +157,25 @@ public final class UpgradeProcessor {
// Upgrades preference model // Upgrades preference model
final JSONObject preference = preferenceRepository.get(Preference.PREFERENCE); final JSONObject preference = preferenceRepository.get(Preference.PREFERENCE);
preference.put(Preference.VERSION, "0.5.0"); preference.put(Preference.VERSION, "0.5.5");
preferenceRepository.update(Preference.PREFERENCE, preference); preferenceRepository.update(Preference.PREFERENCE, preference);
LOGGER.log(Level.FINEST, "Updated preference");
transaction.commit(); transaction.commit();
LOGGER.log(Level.FINEST, "Updated preference");
} catch (final Exception e) { } catch (final Exception e) {
if (transaction.isActive()) { if (transaction.isActive()) {
transaction.rollback(); transaction.rollback();
} }
LOGGER.log(Level.SEVERE, "Upgrade failed.", e); LOGGER.log(Level.SEVERE, "Upgrade failed.", e);
throw new Exception("Upgrade failed from version 046 to version 050"); throw new Exception("Upgrade failed from version 050 to version 055");
} finally { } finally {
articleRepository.setCacheEnabled(true); articleRepository.setCacheEnabled(true);
} }
LOGGER.info("Upgraded from version 046 to version 050 successfully :-)"); LOGGER.info("Upgraded from version 050 to version 055 successfully :-)");
} }
/** /**
......
...@@ -246,6 +246,7 @@ public final class CommentMgmtService { ...@@ -246,6 +246,7 @@ public final class CommentMgmtService {
final String commentEmail = requestJSONObject.getString(Comment.COMMENT_EMAIL).trim().toLowerCase(); final String commentEmail = requestJSONObject.getString(Comment.COMMENT_EMAIL).trim().toLowerCase();
final String commentURL = requestJSONObject.optString(Comment.COMMENT_URL); final String commentURL = requestJSONObject.optString(Comment.COMMENT_URL);
String commentContent = requestJSONObject.getString(Comment.COMMENT_CONTENT).replaceAll("\\n", SoloServletListener.ENTER_ESC); String commentContent = requestJSONObject.getString(Comment.COMMENT_CONTENT).replaceAll("\\n", SoloServletListener.ENTER_ESC);
final String contentNoEsc = commentContent;
commentContent = StringEscapeUtils.escapeHtml(commentContent); commentContent = StringEscapeUtils.escapeHtml(commentContent);
final String originalCommentId = requestJSONObject.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID); final String originalCommentId = requestJSONObject.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID);
// Step 1: Add comment // Step 1: Add comment
...@@ -305,6 +306,7 @@ public final class CommentMgmtService { ...@@ -305,6 +306,7 @@ public final class CommentMgmtService {
// Step 5: Fire add comment event // Step 5: Fire add comment event
final JSONObject eventData = new JSONObject(); final JSONObject eventData = new JSONObject();
eventData.put(Comment.COMMENT, comment); eventData.put(Comment.COMMENT, comment);
comment.put(Comment.COMMENT_CONTENT, contentNoEsc);
eventData.put(Article.ARTICLE, article); eventData.put(Article.ARTICLE, article);
eventManager.fireEventSynchronously(new Event<JSONObject>(EventTypes.ADD_COMMENT_TO_ARTICLE, eventData)); eventManager.fireEventSynchronously(new Event<JSONObject>(EventTypes.ADD_COMMENT_TO_ARTICLE, eventData));
......
...@@ -16,11 +16,11 @@ ...@@ -16,11 +16,11 @@
# #
# Description: ease skin (mock for test). # Description: ease skin (mock for test).
# Version: 1.0.0.1, Aug 16, 2012 # Version: 1.0.0.2, Nov 21, 2012
# Author: Liang Ding # Author: Liang Ding
# #
name=ease name=ease
version=1.0.2 version=1.0.3
forSolo=0.5.0 forSolo=0.5.5
memo=\u56de\u5f52\u606c\u9759 memo=\u56de\u5f52\u606c\u9759
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Description: B3log Solo parent POM. Description: B3log Solo parent POM.
Version: 2.0.2.4, Sep 20, 2012 Version: 2.0.2.5, Nov 21, 2012
Author: Liang Ding Author: Liang Ding
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.b3log</groupId> <groupId>org.b3log</groupId>
<artifactId>solo</artifactId> <artifactId>solo</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>0.5.0</version> <version>0.5.5</version>
<name>B3log Solo</name> <name>B3log Solo</name>
<url>https://github.com/b3log/b3log-solo</url> <url>https://github.com/b3log/b3log-solo</url>
<description> <description>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<!-- Properties --> <!-- Properties -->
<properties> <properties>
<servlet.version>2.5</servlet.version> <servlet.version>2.5</servlet.version>
<org.b3log.solo.version>0.5.0</org.b3log.solo.version> <org.b3log.solo.version>0.5.5</org.b3log.solo.version>
<org.b3log.latke.version>0.5.0-SNAPSHOT</org.b3log.latke.version> <org.b3log.latke.version>0.5.0-SNAPSHOT</org.b3log.latke.version>
<org.b3log.latke-gae.version>0.5.0-SNAPSHOT</org.b3log.latke-gae.version> <org.b3log.latke-gae.version>0.5.0-SNAPSHOT</org.b3log.latke-gae.version>
<org.b3log.latke-bae.version>0.5.0-SNAPSHOT</org.b3log.latke-bae.version> <org.b3log.latke-bae.version>0.5.0-SNAPSHOT</org.b3log.latke-bae.version>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Description: B3log Solo BAE POM. Description: B3log Solo BAE POM.
Version: 1.0.1.0, Sep 5, 2012 Version: 1.0.1.1, Nov 21, 2012
Author: Liang Ding Author: Liang Ding
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<parent> <parent>
<groupId>org.b3log</groupId> <groupId>org.b3log</groupId>
<artifactId>solo-war</artifactId> <artifactId>solo-war</artifactId>
<version>0.5.0</version> <version>0.5.5</version>
</parent> </parent>
<properties> <properties>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Description: B3log Solo GAE POM. Description: B3log Solo GAE POM.
Version: 2.0.2.0, Sep 5, 2012 Version: 2.0.2.1, Nov 21, 2012
Author: Liang Ding Author: Liang Ding
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<parent> <parent>
<groupId>org.b3log</groupId> <groupId>org.b3log</groupId>
<artifactId>solo-war</artifactId> <artifactId>solo-war</artifactId>
<version>0.5.0</version> <version>0.5.5</version>
</parent> </parent>
<properties> <properties>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Description: B3log Solo (MySQL) standard Servlet container POM. Description: B3log Solo (MySQL) standard Servlet container POM.
Version: 1.0.1.0, Sep 5, 2012 Version: 1.0.1.1, Nov 21, 2012
Author: Liang Ding Author: Liang Ding
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<parent> <parent>
<groupId>org.b3log</groupId> <groupId>org.b3log</groupId>
<artifactId>solo-war</artifactId> <artifactId>solo-war</artifactId>
<version>0.5.0</version> <version>0.5.5</version>
</parent> </parent>
<properties> <properties>
......
#
# Copyright (c) 2009, 2010, 2011, 2012, B3log Team
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Description: B3log Solo mail configurations. Configures this file if B3log Solo
# runs on standard Servlet container, it is unnecessary to change
# this file if B3log Solo runs on Google App Engine.
# Version: 1.0.0.2, Sep 29, 2011
# Author: Liang Ding
#
mail.user=b3log.solo@gmail.com
mail.password=b3logsolo
mail.debug=false
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Description: B3log Solo WAR POM. Description: B3log Solo WAR POM.
Version: 2.0.1.4, Sep 4, 2012 Version: 2.0.1.5, Nov 21, 2012
Author: Liang Ding Author: Liang Ding
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<parent> <parent>
<groupId>org.b3log</groupId> <groupId>org.b3log</groupId>
<artifactId>solo</artifactId> <artifactId>solo</artifactId>
<version>0.5.0</version> <version>0.5.5</version>
</parent> </parent>
<modules> <modules>
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
# #
# Description: B3log Solo language configurations(en_US). # Description: B3log Solo language configurations(en_US).
# Version: 2.1.0.0, Sep 19, 2012 # Version: 2.1.0.1, Nov 14, 2012
# Author: Liang Ding # Author: Liang Ding
# Author: Liyuan Li # Author: Liyuan Li
# Author: Dongxu Wang # Author: Dongxu Wang
...@@ -257,7 +257,7 @@ abstractLabel=Abstract ...@@ -257,7 +257,7 @@ abstractLabel=Abstract
fullContentLabel=Full Content fullContentLabel=Full Content
author1Label=Author: author1Label=Author:
authorLabel=Author authorLabel=Author
keyOfSolo1Label=Solo Key: keyOfSolo1Label=B3log Key:
articleLabel=Article articleLabel=Article
tagArticlesLabel=Tag Articles tagArticlesLabel=Tag Articles
dateArticlesLabel=Archive Date Articles dateArticlesLabel=Archive Date Articles
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
# #
# Description: B3log Solo default language configurations(zh_CN). # Description: B3log Solo default language configurations(zh_CN).
# Version: 2.1.0.6, Sep 7, 2012 # Version: 2.1.0.7, Nov 14, 2012
# Author: Liang Ding # Author: Liang Ding
# Author: Liyuan Li # Author: Liyuan Li
# Author: Dongxu Wang # Author: Dongxu Wang
...@@ -257,7 +257,7 @@ abstractLabel=\u6458\u8981 ...@@ -257,7 +257,7 @@ abstractLabel=\u6458\u8981
fullContentLabel=\u5168\u6587 fullContentLabel=\u5168\u6587
author1Label=\u4f5c\u8005\uff1a author1Label=\u4f5c\u8005\uff1a
authorLabel=\u4f5c\u8005 authorLabel=\u4f5c\u8005
keyOfSolo1Label=Solo Key\uff1a keyOfSolo1Label=B3log Key\uff1a
articleLabel=\u6587\u7ae0 articleLabel=\u6587\u7ae0
tagArticlesLabel=\u6807\u7b7e\u6587\u7ae0\u5217\u8868 tagArticlesLabel=\u6807\u7b7e\u6587\u7ae0\u5217\u8868
dateArticlesLabel=\u5b58\u6863\u6587\u7ae0\u5217\u8868 dateArticlesLabel=\u5b58\u6863\u6587\u7ae0\u5217\u8868
......
...@@ -5,6 +5,29 @@ ...@@ -5,6 +5,29 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head> </head>
<body> <body>
<h2>Release 0.5.5 - Nov 24, 2012</h2>
<ul>
<li><a href="https://github.com/b3log/b3log-solo/issues/72">72 非管理员登录后 TopBar 无后台入口</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/73">73 支持 BAE 部署</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/74">74 跨版本升级提示</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/75">75 加入页面类型变量</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/78">78 MetaWeblog API 获取文章日期问题</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/80">80 MetaWeblog API 发布文章摘要问题</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/82">82 登录、初始化问题</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/85">85 配置文件按项目分离</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/86">86 Hello World 文章多语言</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/87">87 加入运行信息公共模版变量</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/88">88 登录页体验改进</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/99">99 404 页面加入登录入口</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/101">101 验证码改造</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/103">103 本地版数据库表前缀支持</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/104">104 升级到 GAE SDK 1.7.2</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/106">106 摘要编辑器改进</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/111">111 与社区同步</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/113">113 无文章首页不返回 404</a></li>
<li><a href="https://github.com/b3log/b3log-solo/issues/125">125 Feed 输出加密文章</a></li>
</ul>
<h2>Release 0.5.0 - Aug 25, 2012</h2> <h2>Release 0.5.0 - Aug 25, 2012</h2>
<ul> <ul>
<li><a href="https://github.com/b3log/b3log-solo/issues/16">16 浏览数统计写配额优化</a></li> <li><a href="https://github.com/b3log/b3log-solo/issues/16">16 浏览数统计写配额优化</a></li>
......
...@@ -20,12 +20,12 @@ ...@@ -20,12 +20,12 @@
Description: Web deployment descriptor on GAE. See Description: Web deployment descriptor on GAE. See
http://code.google.com/intl/en/appengine/docs/java/config/appconfig.html http://code.google.com/intl/en/appengine/docs/java/config/appconfig.html
for more details. for more details.
Version: 1.0.3.9, Aug 22, 2012 Version: 1.0.3.10, Nov 21, 2012
Author: Liang Ding Author: Liang Ding
--> -->
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>solo-demo</application> <application>solo-demo</application>
<version>050</version> <version>055</version>
<sessions-enabled>true</sessions-enabled> <sessions-enabled>true</sessions-enabled>
......
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
<a href="#tools/preference/setting">${paramSettingsLabel}</a> <a href="#tools/preference/setting">${paramSettingsLabel}</a>
</div> </div>
</li> </li>
<!--li> <li>
<div id="tabPreference_solo"> <div id="tabPreference_solo">
<a href="#tools/preference/solo">Solo</a> <a href="#tools/preference/solo">B3log</a>
</div> </div>
</li--> </li>
</ul> </ul>
</div> </div>
<div id="tabPreferencePanel" class="sub-tabs-main"> <div id="tabPreferencePanel" class="sub-tabs-main">
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
* *
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a> * @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.2.3, Aug 24, 2012 * @version 1.0.2.4, Nov 13, 2012
*/ */
/** /**
...@@ -234,23 +234,27 @@ var Util = { ...@@ -234,23 +234,27 @@ var Util = {
* @returns {String} 格式化后的时间 * @returns {String} 格式化后的时间
*/ */
toDate: function (time, format) { toDate: function (time, format) {
var dateTime = new Date(time), var dateTime = new Date(time);
formatDate; var o = {
var year = dateTime.getFullYear(), "M+" : dateTime.getMonth()+1, //month
month = dateTime.getMonth() + 1, "d+" : dateTime.getDate(), //day
date = dateTime.getDate(), "H+" : dateTime.getHours(), //hour
hour = dateTime.getHours() + 1, "m+" : dateTime.getMinutes(), //minute
minute = dateTime.getMinutes() + 1; "s+" : dateTime.getSeconds(), //second
"q+" : Math.floor((dateTime.getMonth()+3)/3), //quarter
"S" : dateTime.getMilliseconds() //millisecond
}
switch (format) { if(/(y+)/.test(format)) {
case "yy-MM-dd HH:mm": format = format.replace(RegExp.$1, (dateTime.getFullYear()+"").substr(4 - RegExp.$1.length));
formatDate = year.toString().substr(2) + "-" + month + "-" + date + " " + hour + ":" + minute;
break;
default:
break;
} }
return formatDate; for(var k in o) {
if(new RegExp("("+ k +")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
}
}
return format;
} }
}; };
......
...@@ -13,4 +13,4 @@ ...@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
var Util={error:function(){$("#tipMsg").text("Error: "+arguments[0]+" File: "+arguments[1]+"\nLine: "+arguments[2]+" please report this issue on https://github.com/b3log/b3log-solo/issues/new");$("#loadMsg").text("")},killIE:function(){if($.browser.msie){if($.browser.version==="6.0"||$.browser.version==="7.0"){window.location=latkeConfig.servePath+"/kill-browser.html";return}if(window.external&&window.external.twGetRunPath){var path=external.twGetRunPath();if(path&&path.toLowerCase().indexOf("360se")>-1&&window.location.href.indexOf("admin-index")>-1){window.location=latkeConfig.servePath+"/kill-browser.html";return}}}},replaceEmString:function(str){var commentSplited=str.split("[em");if(commentSplited.length===1){return str}str=commentSplited[0];for(var j=1;j<commentSplited.length;j++){var key=commentSplited[j].substr(0,2);str+="<img src='"+latkeConfig.staticServePath+"/skins/"+Label.skinDirName+"/images/emotions/em"+key+".png' alt='"+Label["em"+key+"Label"]+"' title='"+Label["em"+key+"Label"]+"'/>"+commentSplited[j].substr(3)}return str},proessURL:function(url){if(!/^\w+:\/\//.test(url)){url="http://"+url}return url},switchMobile:function(skin){Cookie.createCookie("btouch_switch_toggle",skin,365);setTimeout(function(){location.reload()},1250)},setTopBar:function(){var $top=$("#top");if($top.length===1){var $showTop=$("#showTop");$showTop.click(function(){$top.slideDown();$showTop.hide()});$("#hideTop").click(function(){$top.slideUp();$showTop.show()})}},goTop:function(){var acceleration=acceleration||0.1;var y=$(window).scrollTop();var speed=1+acceleration;window.scrollTo(0,Math.floor(y/speed));if(y>0){var invokeFunction="Util.goTop("+acceleration+")";window.setTimeout(invokeFunction,16)}},goBottom:function(bottom){if(!bottom){bottom=0}window.scrollTo(0,$("body").height()-$(window).height()-bottom)},init:function(){Util.killIE();Util.setTopBar()},clearCache:function(all){var data="";if(all==="all"){data='{"all": "all", "URI": ""}'}else{data='{"all": "all", "URI": "'+window.location.pathname+'"}'}$.ajax({type:"POST",url:latkeConfig.servePath+"/clear-cache.do",cache:false,contentType:"application/json",data:data,success:function(result){window.location.reload()}})},replaceSideEm:function(comments){for(var i=0;i<comments.length;i++){var $comment=$(comments[i]);$comment.html(Util.replaceEmString($comment.html()))}},buildTags:function(id){id=id||"tags";var classes=["tags1","tags2","tags3","tags4","tags5"],bList=$("#"+id+" b").get();var max=parseInt($("#"+id+" b").last().text());var distance=Math.ceil(max/classes.length);for(var i=0;i<bList.length;i++){var num=parseInt(bList[i].innerHTML);for(var j=0;j<classes.length;j++){if(num>j*distance&&num<=(j+1)*distance){bList[i].parentNode.className=classes[j];break}}}$("#"+id).html($("#"+id+" li").get().sort(function(a,b){var valA=$(a).find("span").text().toLowerCase();var valB=$(b).find("span").text().toLowerCase();return valA.localeCompare(valB)}))},toDate:function(time,format){var dateTime=new Date(time),formatDate;var year=dateTime.getFullYear(),month=dateTime.getMonth()+1,date=dateTime.getDate(),hour=dateTime.getHours()+1,minute=dateTime.getMinutes()+1;switch(format){case"yy-MM-dd HH:mm":formatDate=year.toString().substr(2)+"-"+month+"-"+date+" "+hour+":"+minute;break;default:break}return formatDate}};if(!Cookie){var Cookie={readCookie:function(name){var nameEQ=name+"=";var ca=document.cookie.split(";");for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==" "){c=c.substring(1,c.length)}if(c.indexOf(nameEQ)==0){return decodeURIComponent(c.substring(nameEQ.length,c.length))}}return""},eraseCookie:function(name){this.createCookie(name,"",-1)},createCookie:function(name,value,days){var expires="";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires="; expires="+date.toGMTString()}document.cookie=name+"="+encodeURIComponent(value)+expires+"; path=/"}}}; var Util={error:function(){$("#tipMsg").text("Error: "+arguments[0]+" File: "+arguments[1]+"\nLine: "+arguments[2]+" please report this issue on https://github.com/b3log/b3log-solo/issues/new");$("#loadMsg").text("")},killIE:function(){if($.browser.msie){if($.browser.version==="6.0"||$.browser.version==="7.0"){window.location=latkeConfig.servePath+"/kill-browser.html";return}if(window.external&&window.external.twGetRunPath){var path=external.twGetRunPath();if(path&&path.toLowerCase().indexOf("360se")>-1&&window.location.href.indexOf("admin-index")>-1){window.location=latkeConfig.servePath+"/kill-browser.html";return}}}},replaceEmString:function(str){var commentSplited=str.split("[em");if(commentSplited.length===1){return str}str=commentSplited[0];for(var j=1;j<commentSplited.length;j++){var key=commentSplited[j].substr(0,2);str+="<img src='"+latkeConfig.staticServePath+"/skins/"+Label.skinDirName+"/images/emotions/em"+key+".png' alt='"+Label["em"+key+"Label"]+"' title='"+Label["em"+key+"Label"]+"'/>"+commentSplited[j].substr(3)}return str},proessURL:function(url){if(!/^\w+:\/\//.test(url)){url="http://"+url}return url},switchMobile:function(skin){Cookie.createCookie("btouch_switch_toggle",skin,365);setTimeout(function(){location.reload()},1250)},setTopBar:function(){var $top=$("#top");if($top.length===1){var $showTop=$("#showTop");$showTop.click(function(){$top.slideDown();$showTop.hide()});$("#hideTop").click(function(){$top.slideUp();$showTop.show()})}},goTop:function(){var acceleration=acceleration||0.1;var y=$(window).scrollTop();var speed=1+acceleration;window.scrollTo(0,Math.floor(y/speed));if(y>0){var invokeFunction="Util.goTop("+acceleration+")";window.setTimeout(invokeFunction,16)}},goBottom:function(bottom){if(!bottom){bottom=0}window.scrollTo(0,$("body").height()-$(window).height()-bottom)},init:function(){Util.killIE();Util.setTopBar()},clearCache:function(all){var data="";if(all==="all"){data='{"all": "all", "URI": ""}'}else{data='{"all": "all", "URI": "'+window.location.pathname+'"}'}$.ajax({type:"POST",url:latkeConfig.servePath+"/clear-cache.do",cache:false,contentType:"application/json",data:data,success:function(result){window.location.reload()}})},replaceSideEm:function(comments){for(var i=0;i<comments.length;i++){var $comment=$(comments[i]);$comment.html(Util.replaceEmString($comment.html()))}},buildTags:function(id){id=id||"tags";var classes=["tags1","tags2","tags3","tags4","tags5"],bList=$("#"+id+" b").get();var max=parseInt($("#"+id+" b").last().text());var distance=Math.ceil(max/classes.length);for(var i=0;i<bList.length;i++){var num=parseInt(bList[i].innerHTML);for(var j=0;j<classes.length;j++){if(num>j*distance&&num<=(j+1)*distance){bList[i].parentNode.className=classes[j];break}}}$("#"+id).html($("#"+id+" li").get().sort(function(a,b){var valA=$(a).find("span").text().toLowerCase();var valB=$(b).find("span").text().toLowerCase();return valA.localeCompare(valB)}))},toDate:function(time,format){var dateTime=new Date(time);var o={"M+":dateTime.getMonth()+1,"d+":dateTime.getDate(),"H+":dateTime.getHours(),"m+":dateTime.getMinutes(),"s+":dateTime.getSeconds(),"q+":Math.floor((dateTime.getMonth()+3)/3),S:dateTime.getMilliseconds()};if(/(y+)/.test(format)){format=format.replace(RegExp.$1,(dateTime.getFullYear()+"").substr(4-RegExp.$1.length))}for(var k in o){if(new RegExp("("+k+")").test(format)){format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length))}}return format}};if(!Cookie){var Cookie={readCookie:function(name){var nameEQ=name+"=";var ca=document.cookie.split(";");for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==" "){c=c.substring(1,c.length)}if(c.indexOf(nameEQ)==0){return decodeURIComponent(c.substring(nameEQ.length,c.length))}}return""},eraseCookie:function(name){this.createCookie(name,"",-1)},createCookie:function(name,value,days){var expires="";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires="; expires="+date.toGMTString()}document.cookie=name+"="+encodeURIComponent(value)+expires+"; path=/"}}};
\ No newline at end of file \ No newline at end of file
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
"url(${staticServePath}/images/loader.gif) no-repeat scroll center center transparent"); "url(${staticServePath}/images/loader.gif) no-repeat scroll center center transparent");
$.ajax({ $.ajax({
url: "http://localhost:8080/apis/news", url: "http://symphony.b3log.org/apis/news",
type: "GET", type: "GET",
dataType:"jsonp", dataType:"jsonp",
jsonp: "callback", jsonp: "callback",
......
...@@ -16,12 +16,12 @@ ...@@ -16,12 +16,12 @@
# #
# Description: ease skin. # Description: ease skin.
# Version: 1.0.0.2, Aug 16, 2012 # Version: 1.0.0.3, Nov 21, 2012
# Author: Liyuan Li # Author: Liyuan Li
# Author: Liang Ding # Author: Liang Ding
# #
name=ease name=ease
version=1.0.2 version=1.0.3
forSolo=0.5.0 forSolo=0.5.5
memo=\u56de\u5f52\u606c\u9759 memo=\u56de\u5f52\u606c\u9759
...@@ -16,11 +16,11 @@ ...@@ -16,11 +16,11 @@
# #
# Description: Mobile skin. # Description: Mobile skin.
# Version: 1.0.0.4, Aug 16, 2012 # Version: 1.0.0.5, Nov 21, 2012
# Author: Liang Ding # Author: Liang Ding
# #
name=Mobile name=Mobile
version=0.1.3 version=0.1.4
forSolo=0.5.0 forSolo=0.5.5
memo=\u8bf7\u4e0d\u8981\u4ece\u90e8\u7f72\u76ee\u5f55\u4e2d\u5220\u9664\u8be5\u76ae\u80a4\uff0c\u5426\u5219\u79fb\u52a8\u8bbe\u5907\u8bbf\u95ee\u65f6\u535a\u5ba2\u5c06\u4e0d\u53ef\u7528\u3002 memo=\u8bf7\u4e0d\u8981\u4ece\u90e8\u7f72\u76ee\u5f55\u4e2d\u5220\u9664\u8be5\u76ae\u80a4\uff0c\u5426\u5219\u79fb\u52a8\u8bbe\u5907\u8bbf\u95ee\u65f6\u535a\u5ba2\u5c06\u4e0d\u53ef\u7528\u3002
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment