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 {
...@@ -145,7 +145,7 @@ public final class PageCacheFilter implements Filter { ...@@ -145,7 +145,7 @@ public final class PageCacheFilter implements Filter {
try { try {
// If cached an article that has view password, dispatches the password form // If cached an article that has view password, dispatches the password form
if (langPropsService.get(PageTypes.ARTICLE.getLangeLabel()).equals(cachedType) if (langPropsService.get(PageTypes.ARTICLE.getLangeLabel()).equals(cachedType)
&& cachedPageContentObject.has(PageCaches.CACHED_PWD)) { && cachedPageContentObject.has(PageCaches.CACHED_PWD)) {
JSONObject article = new JSONObject(); JSONObject article = new JSONObject();
final String articleId = cachedPageContentObject.optString(PageCaches.CACHED_OID); final String articleId = cachedPageContentObject.optString(PageCaches.CACHED_OID);
...@@ -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);
...@@ -184,7 +184,7 @@ public final class PageCacheFilter implements Filter { ...@@ -184,7 +184,7 @@ public final class PageCacheFilter implements Filter {
final String cachedTitle = cachedPageContentObject.getString(PageCaches.CACHED_TITLE); final String cachedTitle = cachedPageContentObject.getString(PageCaches.CACHED_TITLE);
LOGGER.log(Level.FINEST, "Cached value[key={0}, type={1}, title={2}]", LOGGER.log(Level.FINEST, "Cached value[key={0}, type={1}, title={2}]",
new Object[]{pageCacheKey, cachedType, cachedTitle}); new Object[]{pageCacheKey, cachedType, cachedTitle});
statistics.incBlogViewCount((HttpServletRequest) request, (HttpServletResponse) response); statistics.incBlogViewCount((HttpServletRequest) request, (HttpServletResponse) response);
......
...@@ -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);
...@@ -153,7 +153,7 @@ public final class PermalinkFilter implements Filter { ...@@ -153,7 +153,7 @@ public final class PermalinkFilter implements Filter {
* @see HTTPRequestDispatcher#dispatch(org.b3log.latke.servlet.HTTPRequestContext) * @see HTTPRequestDispatcher#dispatch(org.b3log.latke.servlet.HTTPRequestContext)
*/ */
private void dispatchToArticleOrPageProcessor(final ServletRequest request, final ServletResponse response, private void dispatchToArticleOrPageProcessor(final ServletRequest request, final ServletResponse response,
final JSONObject article, final JSONObject page) final JSONObject article, final JSONObject page)
throws ServletException, IOException { throws ServletException, IOException {
final HTTPRequestContext context = new HTTPRequestContext(); final HTTPRequestContext context = new HTTPRequestContext();
context.setRequest((HttpServletRequest) request); context.setRequest((HttpServletRequest) request);
......
...@@ -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
...@@ -136,14 +125,10 @@ public final class ArticleProcessor { ...@@ -136,14 +125,10 @@ public final class ArticleProcessor {
*/ */
@RequestProcessing(value = "/console/article-pwd", method = HTTPRequestMethod.GET) @RequestProcessing(value = "/console/article-pwd", method = HTTPRequestMethod.GET)
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());
...@@ -193,7 +179,7 @@ public final class ArticleProcessor { ...@@ -193,7 +179,7 @@ public final class ArticleProcessor {
*/ */
@RequestProcessing(value = "/console/article-pwd", method = HTTPRequestMethod.POST) @RequestProcessing(value = "/console/article-pwd", method = HTTPRequestMethod.POST)
public void onArticlePwdForm(final HTTPRequestContext context, public void onArticlePwdForm(final HTTPRequestContext context,
final HttpServletRequest request, final HttpServletResponse response) throws Exception { final HttpServletRequest request, final HttpServletResponse response) throws Exception {
try { try {
final String articleId = request.getParameter("articleId"); final String articleId = request.getParameter("articleId");
final String pwdTyped = request.getParameter("pwdTyped"); final String pwdTyped = request.getParameter("pwdTyped");
...@@ -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());
}
} }
} }
...@@ -276,7 +258,7 @@ public final class ArticleProcessor { ...@@ -276,7 +258,7 @@ public final class ArticleProcessor {
*/ */
@RequestProcessing(value = "/article/id/*/relevant/articles", method = HTTPRequestMethod.GET) @RequestProcessing(value = "/article/id/*/relevant/articles", method = HTTPRequestMethod.GET)
public void getRelevantArticles(final HTTPRequestContext context, public void getRelevantArticles(final HTTPRequestContext context,
final HttpServletRequest request, final HttpServletResponse response) throws Exception { final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final JSONObject jsonObject = new JSONObject(); final JSONObject jsonObject = new JSONObject();
final JSONObject preference = preferenceQueryService.getPreference(); final JSONObject preference = preferenceQueryService.getPreference();
...@@ -566,7 +548,7 @@ public final class ArticleProcessor { ...@@ -566,7 +548,7 @@ public final class ArticleProcessor {
final String authorId = getAuthorId(requestURI); final String authorId = getAuthorId(requestURI);
LOGGER.log(Level.FINER, "Request author articles[requestURI={0}, authorId={1}]", LOGGER.log(Level.FINER, "Request author articles[requestURI={0}, authorId={1}]",
new Object[]{requestURI, authorId}); new Object[]{requestURI, authorId});
final int currentPageNum = getAuthorCurrentPageNum(requestURI, authorId); final int currentPageNum = getAuthorCurrentPageNum(requestURI, authorId);
if (-1 == currentPageNum) { if (-1 == currentPageNum) {
...@@ -575,7 +557,7 @@ public final class ArticleProcessor { ...@@ -575,7 +557,7 @@ public final class ArticleProcessor {
} }
LOGGER.log(Level.FINER, "Request author articles[authorId={0}, currentPageNum={1}]", LOGGER.log(Level.FINER, "Request author articles[authorId={0}, currentPageNum={1}]",
new Object[]{authorId, currentPageNum}); new Object[]{authorId, currentPageNum});
final JSONObject preference = preferenceQueryService.getPreference(); final JSONObject preference = preferenceQueryService.getPreference();
if (null == preference) { if (null == preference) {
...@@ -593,9 +575,9 @@ public final class ArticleProcessor { ...@@ -593,9 +575,9 @@ public final class ArticleProcessor {
request.setAttribute(PageCaches.CACHED_TYPE, langs.get(PageTypes.AUTHOR_ARTICLES.getLangeLabel())); request.setAttribute(PageCaches.CACHED_TYPE, langs.get(PageTypes.AUTHOR_ARTICLES.getLangeLabel()));
request.setAttribute(PageCaches.CACHED_OID, "No id"); request.setAttribute(PageCaches.CACHED_OID, "No id");
request.setAttribute(PageCaches.CACHED_TITLE, request.setAttribute(PageCaches.CACHED_TITLE,
langs.get(PageTypes.AUTHOR_ARTICLES.getLangeLabel()) + " [" langs.get(PageTypes.AUTHOR_ARTICLES.getLangeLabel()) + " ["
+ langs.get("pageNumLabel") + "=" + currentPageNum + ", " + langs.get("pageNumLabel") + "=" + currentPageNum + ", "
+ langs.get("authorLabel") + "=" + author.getString(User.USER_NAME) + "]"); + langs.get("authorLabel") + "=" + author.getString(User.USER_NAME) + "]");
request.setAttribute(PageCaches.CACHED_LINK, requestURI); request.setAttribute(PageCaches.CACHED_LINK, requestURI);
final String authorEmail = author.getString(User.USER_EMAIL); final String authorEmail = author.getString(User.USER_EMAIL);
...@@ -628,7 +610,7 @@ public final class ArticleProcessor { ...@@ -628,7 +610,7 @@ public final class ArticleProcessor {
filler.fillBlogHeader(request, dataModel, preference); filler.fillBlogHeader(request, dataModel, preference);
filler.fillSide(request, dataModel, preference); filler.fillSide(request, dataModel, preference);
Skins.fillSkinLangs(preference.optString(Preference.LOCALE_STRING), Skins.fillSkinLangs(preference.optString(Preference.LOCALE_STRING),
(String) request.getAttribute(Keys.TEMAPLTE_DIR_NAME), dataModel); (String) request.getAttribute(Keys.TEMAPLTE_DIR_NAME), dataModel);
} catch (final ServiceException e) { } catch (final ServiceException e) {
LOGGER.log(Level.SEVERE, e.getMessage(), e); LOGGER.log(Level.SEVERE, e.getMessage(), e);
...@@ -649,7 +631,7 @@ public final class ArticleProcessor { ...@@ -649,7 +631,7 @@ public final class ArticleProcessor {
*/ */
@RequestProcessing(value = "/archives/**", method = HTTPRequestMethod.GET) @RequestProcessing(value = "/archives/**", method = HTTPRequestMethod.GET)
public void showArchiveArticles(final HTTPRequestContext context, public void showArchiveArticles(final HTTPRequestContext context,
final HttpServletRequest request, final HttpServletResponse response) { final HttpServletRequest request, final HttpServletResponse response) {
final AbstractFreeMarkerRenderer renderer = new FrontRenderer(); final AbstractFreeMarkerRenderer renderer = new FrontRenderer();
context.setRenderer(renderer); context.setRenderer(renderer);
...@@ -669,7 +651,7 @@ public final class ArticleProcessor { ...@@ -669,7 +651,7 @@ public final class ArticleProcessor {
} }
LOGGER.log(Level.FINER, "Request archive date[string={0}, currentPageNum={1}]", LOGGER.log(Level.FINER, "Request archive date[string={0}, currentPageNum={1}]",
new Object[]{archiveDateString, currentPageNum}); new Object[]{archiveDateString, currentPageNum});
final JSONObject result = archiveDateQueryService.getByArchiveDateString(archiveDateString); final JSONObject result = archiveDateQueryService.getByArchiveDateString(archiveDateString);
if (null == result) { if (null == result) {
LOGGER.log(Level.WARNING, "Can not find articles for the specified archive date[string={0}]", archiveDateString); LOGGER.log(Level.WARNING, "Can not find articles for the specified archive date[string={0}]", archiveDateString);
...@@ -711,12 +693,12 @@ public final class ArticleProcessor { ...@@ -711,12 +693,12 @@ public final class ArticleProcessor {
final Map<String, Object> dataModel = renderer.getDataModel(); final Map<String, Object> dataModel = renderer.getDataModel();
Skins.fillSkinLangs(preference.optString(Preference.LOCALE_STRING), Skins.fillSkinLangs(preference.optString(Preference.LOCALE_STRING),
(String) request.getAttribute(Keys.TEMAPLTE_DIR_NAME), dataModel); (String) request.getAttribute(Keys.TEMAPLTE_DIR_NAME), dataModel);
final String cachedTitle = prepareShowArchiveArticles(preference, dataModel, articles, final String cachedTitle = prepareShowArchiveArticles(preference, dataModel, articles,
currentPageNum, currentPageNum,
pageCount, archiveDateString, pageCount, archiveDateString,
archiveDate); archiveDate);
dataModel.put(Keys.PAGE_TYPE, PageTypes.DATE_ARTICLES); dataModel.put(Keys.PAGE_TYPE, PageTypes.DATE_ARTICLES);
filler.fillBlogHeader(request, dataModel, preference); filler.fillBlogHeader(request, dataModel, preference);
...@@ -835,7 +817,7 @@ public final class ArticleProcessor { ...@@ -835,7 +817,7 @@ public final class ArticleProcessor {
filler.fillBlogFooter(dataModel, preference); filler.fillBlogFooter(dataModel, preference);
filler.fillSide(request, dataModel, preference); filler.fillSide(request, dataModel, preference);
Skins.fillSkinLangs(preference.optString(Preference.LOCALE_STRING), Skins.fillSkinLangs(preference.optString(Preference.LOCALE_STRING),
(String) request.getAttribute(Keys.TEMAPLTE_DIR_NAME), dataModel); (String) request.getAttribute(Keys.TEMAPLTE_DIR_NAME), dataModel);
} catch (final Exception e) { } catch (final Exception e) {
LOGGER.log(Level.SEVERE, e.getMessage(), e); LOGGER.log(Level.SEVERE, e.getMessage(), e);
...@@ -1015,12 +997,12 @@ public final class ArticleProcessor { ...@@ -1015,12 +997,12 @@ public final class ArticleProcessor {
* @throws ServiceException service exception * @throws ServiceException service exception
*/ */
private void prepareShowAuthorArticles(final List<Integer> pageNums, private void prepareShowAuthorArticles(final List<Integer> pageNums,
final Map<String, Object> dataModel, final Map<String, Object> dataModel,
final int pageCount, final int pageCount,
final int currentPageNum, final int currentPageNum,
final List<JSONObject> articles, final List<JSONObject> articles,
final JSONObject author, final JSONObject author,
final JSONObject preference) throws ServiceException { final JSONObject preference) throws ServiceException {
if (0 != pageNums.size()) { if (0 != pageNums.size()) {
dataModel.put(Pagination.PAGINATION_FIRST_PAGE_NUM, pageNums.get(0)); dataModel.put(Pagination.PAGINATION_FIRST_PAGE_NUM, pageNums.get(0));
dataModel.put(Pagination.PAGINATION_LAST_PAGE_NUM, pageNums.get(pageNums.size() - 1)); dataModel.put(Pagination.PAGINATION_LAST_PAGE_NUM, pageNums.get(pageNums.size() - 1));
...@@ -1062,12 +1044,12 @@ public final class ArticleProcessor { ...@@ -1062,12 +1044,12 @@ public final class ArticleProcessor {
* @throws Exception exception * @throws Exception exception
*/ */
private String prepareShowArchiveArticles(final JSONObject preference, private String prepareShowArchiveArticles(final JSONObject preference,
final Map<String, Object> dataModel, final Map<String, Object> dataModel,
final List<JSONObject> articles, final List<JSONObject> articles,
final int currentPageNum, final int currentPageNum,
final int pageCount, final int pageCount,
final String archiveDateString, final String archiveDateString,
final JSONObject archiveDate) throws Exception { final JSONObject archiveDate) throws Exception {
final int pageSize = preference.getInt(Preference.ARTICLE_LIST_DISPLAY_COUNT); final int pageSize = preference.getInt(Preference.ARTICLE_LIST_DISPLAY_COUNT);
final int windowSize = preference.getInt(Preference.ARTICLE_LIST_PAGINATION_WINDOW_SIZE); final int windowSize = preference.getInt(Preference.ARTICLE_LIST_PAGINATION_WINDOW_SIZE);
...@@ -1164,7 +1146,7 @@ public final class ArticleProcessor { ...@@ -1164,7 +1146,7 @@ public final class ArticleProcessor {
Stopwatchs.end(); Stopwatchs.end();
dataModel.put(Preference.EXTERNAL_RELEVANT_ARTICLES_DISPLAY_CNT, dataModel.put(Preference.EXTERNAL_RELEVANT_ARTICLES_DISPLAY_CNT,
preference.getInt(Preference.EXTERNAL_RELEVANT_ARTICLES_DISPLAY_CNT)); preference.getInt(Preference.EXTERNAL_RELEVANT_ARTICLES_DISPLAY_CNT));
dataModel.put(Preference.RANDOM_ARTICLES_DISPLAY_CNT, preference.getInt(Preference.RANDOM_ARTICLES_DISPLAY_CNT)); dataModel.put(Preference.RANDOM_ARTICLES_DISPLAY_CNT, preference.getInt(Preference.RANDOM_ARTICLES_DISPLAY_CNT));
dataModel.put(Preference.RELEVANT_ARTICLES_DISPLAY_CNT, preference.getInt(Preference.RELEVANT_ARTICLES_DISPLAY_CNT)); dataModel.put(Preference.RELEVANT_ARTICLES_DISPLAY_CNT, preference.getInt(Preference.RELEVANT_ARTICLES_DISPLAY_CNT));
} }
......
...@@ -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.
* *
...@@ -178,8 +156,8 @@ public final class Articles { ...@@ -178,8 +156,8 @@ public final class Articles {
if (null == ret) { if (null == ret) {
LOGGER.log(Level.WARNING, LOGGER.log(Level.WARNING,
"Gets author of article failed, assumes the administrator is the author of this article[id={0}]", "Gets author of article failed, assumes the administrator is the author of this article[id={0}]",
article.getString(Keys.OBJECT_ID)); article.getString(Keys.OBJECT_ID));
// This author may be deleted by admin, use admin as the author // This author may be deleted by admin, use admin as the author
// of this article // of this article
ret = userRepository.getAdmin(); ret = userRepository.getAdmin();
......
...@@ -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