diff options
author | Vitaly Takmazov | 2017-05-04 12:10:26 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2017-05-05 12:07:19 +0300 |
commit | 9c2dfaa34c93ee5bf24093c95cff7d4b77b4ecb5 (patch) | |
tree | 62caf9ab22d9106aa1ffe86729a00b9c4536c7f5 /juick-www | |
parent | dc3f40eab5b9ab848964a1ff262227b8b61c9e61 (diff) |
juick-www: pebble message formatter extension
Diffstat (limited to 'juick-www')
6 files changed, 54 insertions, 3 deletions
diff --git a/juick-www/src/main/java/com/juick/www/configuration/WwwServletConfiguration.java b/juick-www/src/main/java/com/juick/www/configuration/WwwServletConfiguration.java index 944fbb80..43ca37db 100644 --- a/juick-www/src/main/java/com/juick/www/configuration/WwwServletConfiguration.java +++ b/juick-www/src/main/java/com/juick/www/configuration/WwwServletConfiguration.java @@ -1,6 +1,7 @@ package com.juick.www.configuration; import com.mitchellbosecke.pebble.PebbleEngine; +import com.mitchellbosecke.pebble.extension.FormatterExtension; import com.mitchellbosecke.pebble.loader.Loader; import com.mitchellbosecke.pebble.loader.ServletLoader; import com.mitchellbosecke.pebble.spring4.PebbleViewResolver; @@ -85,6 +86,7 @@ public class WwwServletConfiguration extends WebMvcConfigurationSupport { return new PebbleEngine.Builder() .loader(this.templateLoader()) .extension(springExtension()) + .extension(new FormatterExtension()) .strictVariables(true) .build(); } diff --git a/juick-www/src/main/java/com/mitchellbosecke/pebble/extension/FormatterExtension.java b/juick-www/src/main/java/com/mitchellbosecke/pebble/extension/FormatterExtension.java new file mode 100644 index 00000000..e26b5c20 --- /dev/null +++ b/juick-www/src/main/java/com/mitchellbosecke/pebble/extension/FormatterExtension.java @@ -0,0 +1,18 @@ +package com.mitchellbosecke.pebble.extension; + +import com.mitchellbosecke.pebble.extension.filters.FormatMessageFilter; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by vitalyster on 04.05.2017. + */ +public class FormatterExtension extends AbstractExtension { + @Override + public Map<String, Filter> getFilters() { + Map<String, Filter> filters = new HashMap<>(); + filters.put("formatMessage", new FormatMessageFilter()); + return filters; + } +} diff --git a/juick-www/src/main/java/com/mitchellbosecke/pebble/extension/filters/FormatMessageFilter.java b/juick-www/src/main/java/com/mitchellbosecke/pebble/extension/filters/FormatMessageFilter.java new file mode 100644 index 00000000..e7446431 --- /dev/null +++ b/juick-www/src/main/java/com/mitchellbosecke/pebble/extension/filters/FormatMessageFilter.java @@ -0,0 +1,31 @@ +package com.mitchellbosecke.pebble.extension.filters; + +import com.juick.Message; +import com.juick.util.MessageUtils; +import com.mitchellbosecke.pebble.extension.Filter; +import com.mitchellbosecke.pebble.extension.escaper.SafeString; + +import java.util.List; +import java.util.Map; + +/** + * Created by vitalyster on 04.05.2017. + */ +public class FormatMessageFilter implements Filter { + @Override + public Object apply(Object input, Map<String, Object> args) { + if (input instanceof Message) { + Message msg = (Message) input; + boolean isCode = msg.getTags().stream().anyMatch(t -> t.getName().equals("code")); + String formattedMessage = isCode ? MessageUtils.formatMessageCode(msg.getText()) + : MessageUtils.formatMessage(msg.getText()); + return new SafeString(formattedMessage); + } + throw new IllegalArgumentException("invalid input"); + } + + @Override + public List<String> getArgumentNames() { + return null; + } +} diff --git a/juick-www/src/main/webapp/WEB-INF/views/index.html b/juick-www/src/main/webapp/WEB-INF/views/index.html index da2117a5..a9d6d058 100644 --- a/juick-www/src/main/webapp/WEB-INF/views/index.html +++ b/juick-www/src/main/webapp/WEB-INF/views/index.html @@ -31,7 +31,7 @@ <img src="//i.juick.com/photos-512/{{ msg.getMid() }}.{{ msg.AttachmentType }}" alt=""/></a> </p> {% endif %} - <p>{{ msg.getText() | raw }}</p> + <p>{{ msg | formatMessage }}</p> {%if msg.AttachmentType is not empty %} <div class="irbr"></div> {% endif %} diff --git a/juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html b/juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html index fa339a25..d360a651 100644 --- a/juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html +++ b/juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html @@ -15,7 +15,7 @@ <div class="msg-ts">{{ msg.getDate() }}</div> </div> - <div class="msg-txt">{{ msg.getText() | raw }}</div> + <div class="msg-txt">{{ msg | formatMessage }}</div> {% if not readonly %} <form action="/pm/send" method="POST" enctype="multipart/form-data"> <input type="hidden" name="uname" value="{{ msg.getUser().getName() }}"/> diff --git a/juick-www/src/main/webapp/WEB-INF/views/pm_sent.html b/juick-www/src/main/webapp/WEB-INF/views/pm_sent.html index 872cd29f..5a3daa1d 100644 --- a/juick-www/src/main/webapp/WEB-INF/views/pm_sent.html +++ b/juick-www/src/main/webapp/WEB-INF/views/pm_sent.html @@ -23,7 +23,7 @@ </div> <div class="msg-ts">{{ msg.getDate() }}</div> </div> - <div class="msg-txt">{{ msg.getText() | raw }}</div> + <div class="msg-txt">{{ msg | formatMessage }}</div> </div> </li> {% endfor %} |