aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2017-05-04 12:10:26 +0300
committerGravatar Vitaly Takmazov2017-05-05 12:07:19 +0300
commit9c2dfaa34c93ee5bf24093c95cff7d4b77b4ecb5 (patch)
tree62caf9ab22d9106aa1ffe86729a00b9c4536c7f5
parentdc3f40eab5b9ab848964a1ff262227b8b61c9e61 (diff)
juick-www: pebble message formatter extension
-rw-r--r--juick-www/src/main/java/com/juick/www/configuration/WwwServletConfiguration.java2
-rw-r--r--juick-www/src/main/java/com/mitchellbosecke/pebble/extension/FormatterExtension.java18
-rw-r--r--juick-www/src/main/java/com/mitchellbosecke/pebble/extension/filters/FormatMessageFilter.java31
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/index.html2
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html2
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/pm_sent.html2
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 %}