001
014
015 package com.liferay.portlet.journal.util;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.templateparser.BaseTransformerListener;
020 import com.liferay.portal.kernel.util.StringBundler;
021 import com.liferay.portal.kernel.util.StringPool;
022 import com.liferay.portal.kernel.util.StringUtil;
023
024 import java.util.Map;
025
026
029 public class ViewCounterTransformerListener extends BaseTransformerListener {
030
031 @Override
032 public String onOutput(
033 String output, String languageId, Map<String, String> tokens) {
034
035 if (_log.isDebugEnabled()) {
036 _log.debug("onOutput");
037 }
038
039 return replace(output, tokens);
040 }
041
042
047 protected String replace(String s, Map<String, String> tokens) {
048 if (!s.contains(_COUNTER_TOKEN)) {
049 return s;
050 }
051
052 String articleResourcePK = tokens.get("article_resource_pk");
053
054 StringBundler sb = new StringBundler(8);
055
056 sb.append("<script type=\"text/javascript\">");
057 sb.append("Liferay.Service.Asset.AssetEntry.incrementViewCounter");
058 sb.append("({userId:0, className:'");
059 sb.append("com.liferay.portlet.journal.model.JournalArticle', ");
060 sb.append("classPK:");
061 sb.append(articleResourcePK);
062 sb.append("});");
063 sb.append("</script>");
064
065 s = StringUtil.replace(s, _COUNTER_TOKEN, sb.toString());
066
067 return s;
068 }
069
070 private static final String _COUNTER_TOKEN =
071 StringPool.AT + "view_counter" + StringPool.AT;
072
073 private static final Log _log = LogFactoryUtil.getLog(
074 ViewCounterTransformerListener.class);
075
076 }