Commit 21772b2f authored by Liang Ding's avatar Liang Ding

Fixed #159

parent 0d7ef19f
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
*/ */
package org.b3log.solo.filter; package org.b3log.solo.filter;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.Filter; import javax.servlet.Filter;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
import javax.servlet.FilterConfig; import javax.servlet.FilterConfig;
...@@ -51,7 +51,7 @@ import org.json.JSONObject; ...@@ -51,7 +51,7 @@ import org.json.JSONObject;
* Page cache filter. * Page cache filter.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.0, Jul 16, 2012 * @version 1.0.1.1, Jan 8, 2013
* @since 0.3.1 * @since 0.3.1
*/ */
public final class PageCacheFilter implements Filter { public final class PageCacheFilter implements Filter {
...@@ -159,7 +159,7 @@ public final class PageCacheFilter implements Filter { ...@@ -159,7 +159,7 @@ public final class PageCacheFilter implements Filter {
final HttpServletResponse httpServletResponse = (HttpServletResponse) response; final HttpServletResponse httpServletResponse = (HttpServletResponse) response;
try { try {
httpServletResponse.sendRedirect(Latkes.getServePath() httpServletResponse.sendRedirect(Latkes.getServePath()
+ "/console/article-pwd" + articles.buildArticleViewPwdFormParameters(article)); + "/console/article-pwd?articleId=" + article.optString(Keys.OBJECT_ID));
return; return;
} catch (final Exception e) { } catch (final Exception e) {
httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND); httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
*/ */
package org.b3log.solo.filter; package org.b3log.solo.filter;
import java.io.IOException;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.io.IOException;
import javax.servlet.Filter; import javax.servlet.Filter;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
import javax.servlet.FilterConfig; import javax.servlet.FilterConfig;
...@@ -47,7 +47,7 @@ import org.json.JSONObject; ...@@ -47,7 +47,7 @@ import org.json.JSONObject;
* Article/Page permalink filter. * Article/Page permalink filter.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.6, May 17, 2012 * @version 1.0.1.7, Jan 8, 2013
* @since 0.3.1 * @since 0.3.1
* @see org.b3log.solo.processor.ArticleProcessor#showArticle(org.b3log.latke.servlet.HTTPRequestContext, * @see org.b3log.solo.processor.ArticleProcessor#showArticle(org.b3log.latke.servlet.HTTPRequestContext,
* javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
...@@ -129,7 +129,7 @@ public final class PermalinkFilter implements Filter { ...@@ -129,7 +129,7 @@ public final class PermalinkFilter implements Filter {
if (null != article && articles.needViewPwd(httpServletRequest, article)) { if (null != article && articles.needViewPwd(httpServletRequest, article)) {
try { try {
httpServletResponse.sendRedirect(Latkes.getServePath() httpServletResponse.sendRedirect(Latkes.getServePath()
+ "/console/article-pwd" + articles.buildArticleViewPwdFormParameters(article)); + "/console/article-pwd?articleId=" + article.optString(Keys.OBJECT_ID));
return; return;
} catch (final Exception e) { } catch (final Exception e) {
httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND); httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
......
...@@ -19,7 +19,7 @@ package org.b3log.solo.model; ...@@ -19,7 +19,7 @@ package org.b3log.solo.model;
* This class defines all article model relevant keys. * This class defines all article model relevant keys.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.5, Apr 29, 2012 * @version 1.0.1.6, Jan 8, 2013
* @since 0.3.1 * @since 0.3.1
*/ */
public final class Article { public final class Article {
...@@ -56,6 +56,10 @@ public final class Article { ...@@ -56,6 +56,10 @@ public final class Article {
* Key of update date. * Key of update date.
*/ */
public static final String ARTICLE_UPDATE_DATE = "articleUpdateDate"; public static final String ARTICLE_UPDATE_DATE = "articleUpdateDate";
/**
* Key of update time.
*/
public static final String ARTICLE_UPDATE_TIME = "articleUpdateTime";
/** /**
* Key of tags. * Key of tags.
*/ */
......
...@@ -15,28 +15,9 @@ ...@@ -15,28 +15,9 @@
*/ */
package org.b3log.solo.processor; package org.b3log.solo.processor;
import org.b3log.solo.processor.renderer.FrontRenderer;
import org.b3log.solo.processor.util.Filler;
import org.b3log.latke.util.Requests;
import org.b3log.solo.service.PreferenceQueryService;
import org.b3log.latke.model.Pagination;
import org.b3log.latke.util.Dates;
import org.b3log.latke.util.Locales;
import org.b3log.latke.util.Paginator;
import org.b3log.solo.model.ArchiveDate;
import java.util.Collections;
import org.b3log.solo.util.comparator.Comparators;
import org.json.JSONException;
import org.b3log.latke.Keys;
import org.b3log.latke.Latkes;
import org.b3log.latke.model.User;
import org.b3log.solo.model.Preference;
import org.jsoup.Jsoup;
import org.b3log.solo.util.Articles;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.*; import java.util.*;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
...@@ -44,38 +25,46 @@ import javax.servlet.http.HttpServletRequest; ...@@ -44,38 +25,46 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.Latkes;
import org.b3log.latke.cache.PageCaches;
import org.b3log.latke.model.Pagination;
import org.b3log.latke.model.User;
import org.b3log.latke.service.LangPropsService; import org.b3log.latke.service.LangPropsService;
import org.b3log.latke.service.ServiceException; import org.b3log.latke.service.ServiceException;
import org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer;
import org.b3log.latke.servlet.HTTPRequestContext; import org.b3log.latke.servlet.HTTPRequestContext;
import org.b3log.latke.servlet.HTTPRequestMethod; 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.JSONRenderer; import org.b3log.latke.servlet.renderer.JSONRenderer;
import org.b3log.latke.servlet.renderer.TextHTMLRenderer; import org.b3log.latke.servlet.renderer.TextHTMLRenderer;
import org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer;
import org.b3log.latke.util.Dates;
import org.b3log.latke.util.Locales;
import org.b3log.latke.util.Paginator;
import org.b3log.latke.util.Requests;
import org.b3log.latke.util.Stopwatchs; import org.b3log.latke.util.Stopwatchs;
import org.b3log.latke.util.Strings; import org.b3log.latke.util.Strings;
import org.b3log.solo.model.Article;
import org.b3log.solo.model.Common;
import org.b3log.solo.model.PageTypes;
import org.b3log.solo.service.ArticleQueryService;
import org.b3log.solo.service.CommentQueryService;
import org.b3log.solo.service.UserQueryService;
import org.b3log.solo.util.Skins;
import org.b3log.solo.util.Users;
import org.json.JSONObject;
import org.b3log.latke.cache.PageCaches;
import org.b3log.latke.servlet.URIPatternMode;
import org.b3log.latke.servlet.annotation.RequestProcessing;
import org.b3log.latke.servlet.annotation.RequestProcessor;
import org.b3log.solo.SoloServletListener; import org.b3log.solo.SoloServletListener;
import org.b3log.solo.model.*; import org.b3log.solo.model.*;
import org.b3log.solo.processor.renderer.ConsoleRenderer; import org.b3log.solo.processor.renderer.ConsoleRenderer;
import org.b3log.solo.processor.renderer.FrontRenderer;
import org.b3log.solo.processor.util.Filler;
import org.b3log.solo.service.*; import org.b3log.solo.service.*;
import org.b3log.solo.util.Articles;
import org.b3log.solo.util.Skins;
import org.b3log.solo.util.Users;
import org.b3log.solo.util.comparator.Comparators;
import org.json.JSONException;
import org.json.JSONObject;
import org.jsoup.Jsoup;
/** /**
* Article processor. * Article processor.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.1.2.5, Sep 6, 2012 * @version 1.1.2.6, Jan 7, 2013
* @since 0.3.1 * @since 0.3.1
*/ */
@RequestProcessor @RequestProcessor
...@@ -138,12 +127,8 @@ public final class ArticleProcessor { ...@@ -138,12 +127,8 @@ public final class ArticleProcessor {
public void showArticlePwdForm(final HTTPRequestContext context, public void showArticlePwdForm(final HTTPRequestContext context,
final HttpServletRequest request, final HttpServletResponse response) throws Exception { final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final String articleId = request.getParameter("articleId"); final String articleId = request.getParameter("articleId");
final String articlePermalink = request.getParameter("articlePermalink");
final String articleTitle = request.getParameter("articleTitle");
final String articleAbstract = request.getParameter("articleAbstract");
final String msg = request.getParameter(Keys.MSG);
if (Strings.isEmptyOrNull(articleId) || Strings.isEmptyOrNull(articlePermalink) || Strings.isEmptyOrNull(articleTitle)) { if (Strings.isEmptyOrNull(articleId)) {
response.sendError(HttpServletResponse.SC_NOT_FOUND); response.sendError(HttpServletResponse.SC_NOT_FOUND);
return; return;
} }
...@@ -161,11 +146,12 @@ public final class ArticleProcessor { ...@@ -161,11 +146,12 @@ public final class ArticleProcessor {
final Map<String, Object> dataModel = renderer.getDataModel(); final Map<String, Object> dataModel = renderer.getDataModel();
dataModel.put("articleId", articleId); dataModel.put("articleId", articleId);
dataModel.put("articlePermalink", articlePermalink); dataModel.put("articlePermalink", article.optString(Article.ARTICLE_PERMALINK));
dataModel.put("articleTitle", articleTitle); dataModel.put("articleTitle", article.optString(Article.ARTICLE_TITLE));
dataModel.put("articleAbstract", articleAbstract); dataModel.put("articleAbstract", article.optString(Article.ARTICLE_ABSTRACT));
final String msg = request.getParameter(Keys.MSG);
if (!Strings.isEmptyOrNull(msg)) { if (!Strings.isEmptyOrNull(msg)) {
dataModel.put(Keys.MSG, msg); dataModel.put(Keys.MSG, langPropsService.get("passwordNotMatchLabel"));
} }
final Map<String, String> langs = langPropsService.getAll(Latkes.getLocale()); final Map<String, String> langs = langPropsService.getAll(Latkes.getLocale());
...@@ -215,19 +201,15 @@ public final class ArticleProcessor { ...@@ -215,19 +201,15 @@ public final class ArticleProcessor {
} }
response.sendRedirect(Latkes.getServePath() + article.getString(Article.ARTICLE_PERMALINK)); response.sendRedirect(Latkes.getServePath() + article.getString(Article.ARTICLE_PERMALINK));
return; return;
} }
response.sendRedirect(Latkes.getServePath() + "/console/article-pwd" + articleUtils.buildArticleViewPwdFormParameters(article) response.sendRedirect(Latkes.getServePath() + "/console/article-pwd?articleId=" + article.optString(Keys.OBJECT_ID) + "&msg=1");
+ '&' + Keys.MSG + '=' + URLEncoder.encode(langPropsService.get("passwordNotMatchLabel"), "UTF-8"));
} catch (final Exception e) { } catch (final Exception e) {
LOGGER.log(Level.SEVERE, "Processes article view password form submits failed", e); LOGGER.log(Level.SEVERE, "Processes article view password form submits failed", e);
try {
response.sendError(HttpServletResponse.SC_NOT_FOUND); response.sendError(HttpServletResponse.SC_NOT_FOUND);
} catch (final IOException ex) {
LOGGER.severe(ex.getMessage());
}
} }
} }
......
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
*/ */
package org.b3log.solo.util; package org.b3log.solo.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -25,7 +23,6 @@ import java.util.logging.Level; ...@@ -25,7 +23,6 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.b3log.solo.model.Article;
import org.b3log.latke.Keys; import org.b3log.latke.Keys;
import org.b3log.latke.repository.*; import org.b3log.latke.repository.*;
import org.b3log.latke.service.ServiceException; import org.b3log.latke.service.ServiceException;
...@@ -33,6 +30,7 @@ import org.b3log.latke.user.UserService; ...@@ -33,6 +30,7 @@ import org.b3log.latke.user.UserService;
import org.b3log.latke.user.UserServiceFactory; import org.b3log.latke.user.UserServiceFactory;
import org.b3log.latke.util.CollectionUtils; import org.b3log.latke.util.CollectionUtils;
import org.b3log.latke.util.Strings; import org.b3log.latke.util.Strings;
import org.b3log.solo.model.Article;
import org.b3log.solo.model.Common; import org.b3log.solo.model.Common;
import org.b3log.solo.model.Preference; import org.b3log.solo.model.Preference;
import org.b3log.solo.repository.ArticleRepository; import org.b3log.solo.repository.ArticleRepository;
...@@ -47,7 +45,7 @@ import org.json.JSONObject; ...@@ -47,7 +45,7 @@ import org.json.JSONObject;
* Article utilities. * Article utilities.
* *
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a> * @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.2.8, May 6, 2012 * @version 1.0.2.9, Jan 8, 2013
* @since 0.3.1 * @since 0.3.1
*/ */
public final class Articles { public final class Articles {
...@@ -69,26 +67,6 @@ public final class Articles { ...@@ -69,26 +67,6 @@ public final class Articles {
*/ */
private UserService userService = UserServiceFactory.getUserService(); private UserService userService = UserServiceFactory.getUserService();
/**
* Builds article view password form parameters with the specified article.
*
* @param article the specified article
* @return parameters string, for example,
* <pre>
* "?articleId=xxx&articleTitle=xxx&articlePermalink=xxx&articleAbstract=xxx"
* </pre>
* @throws UnsupportedEncodingException if can not encode the arguments
*/
public String buildArticleViewPwdFormParameters(final JSONObject article) throws UnsupportedEncodingException {
final StringBuilder parametersBuilder =
new StringBuilder("?articleId=").append(article.optString(Keys.OBJECT_ID)).
append("&articleTitle=").append(URLEncoder.encode(article.optString(Article.ARTICLE_TITLE), "UTF-8")).
append("&articlePermalink=").append(URLEncoder.encode(article.optString(Article.ARTICLE_PERMALINK), "UTF-8")).
append("&articleAbstract=").append(URLEncoder.encode(article.optString(Article.ARTICLE_ABSTRACT, " "), "UTF-8"));
return parametersBuilder.toString();
}
/** /**
* Checks whether need password to view the specified article with the specified request. * Checks whether need password to view the specified article with the specified request.
* *
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<#if msg??> <#if msg??>
<div>${msg}</div> <div>${msg}</div>
</#if> </#if>
<form method="POST" action="${staticServePath}/console/article-pwd"> <form method="POST" action="${servePath}/console/article-pwd">
<label for="pwdTyped">访问密码:</label> <label for="pwdTyped">访问密码:</label>
<input type="password" id="pwdTyped" name="pwdTyped" /> <input type="password" id="pwdTyped" name="pwdTyped" />
<input type="hidden" name="articleId" value="${articleId}" /> <input type="hidden" name="articleId" value="${articleId}" />
......
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