Title: [waffle-scm] [822] trunk/waffle-resources/src/main/resources/ftl/waffle: WAFFLE-94: Added FTL access to message resources, exposed via MessagesContext.

Diff

Modified: trunk/examples/freemarker-example/src/main/webapp/people/manage.ftl (821 => 822)

--- trunk/examples/freemarker-example/src/main/webapp/people/manage.ftl	2008-09-06 13:41:56 UTC (rev 821)
+++ trunk/examples/freemarker-example/src/main/webapp/people/manage.ftl	2008-09-09 09:45:57 UTC (rev 822)
@@ -1,4 +1,5 @@
 <#import "/ftl/waffle/form.ftl" as w>
+<#import "/ftl/waffle/i18n.ftl" as i>
 <?xml version="1.0" encoding="UTF-8"?>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
@@ -14,13 +15,13 @@
     <table>
         <tr>
             <th>Id</th>
-            <th>First Name</th>
-            <th>Last Name</th>
-            <th>Email</th>
-            <th>Date of Birth</th>
-            <th>Type</th>
-            <th>Skills</th>
-            <th>Select</th>
+            <th><@i.messageFor "firstName" "First"/></th>
+            <th><@i.messageFor "lastName" "Last"/></th>
+            <th><@i.messageFor "email" "Email"/></th>
+            <th><@i.messageFor "dateOfBirth" "Date of Birth"/></th>
+            <th><@i.messageFor "type" "Type"/></th>
+            <th><@i.messageFor "skills" "Skills"/></th>
+            <th><@i.messageFor "select" "Select"/></th>
         </tr>
         <#list people as person>
             <tr class="odd">

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java (821 => 822)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java	2008-09-06 13:41:56 UTC (rev 821)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java	2008-09-09 09:45:57 UTC (rev 822)
@@ -19,10 +19,16 @@
  */
 public class DefaultMessagesContext implements MessagesContext, Startable {
     private final HttpServletRequest request;
+    private final MessageResources resources;
     private final Map<String, String> messages = new HashMap<String, String>();
 
     public DefaultMessagesContext(HttpServletRequest request) {
+        this(request, new DefaultMessageResources());
+    }
+
+    public DefaultMessagesContext(HttpServletRequest request, MessageResources resources) {
         this.request = request;
+        this.resources = resources;
     }
 
     public void addMessage(String key, String message) {
@@ -45,6 +51,10 @@
         messages.clear();
     }
 
+    public MessageResources getResources() {
+        return resources;
+    }
+
     public void start() {
         request.setAttribute(Constants.MESSAGES_KEY, this);
     }
@@ -52,4 +62,5 @@
     public void stop() {
         // do nothing
     }
+
 }

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java (821 => 822)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java	2008-09-06 13:41:56 UTC (rev 821)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java	2008-09-09 09:45:57 UTC (rev 822)
@@ -9,7 +9,7 @@
 /**
  * MessagesContext holds user business-level messages. Controllers can depend on it and use it to pass messages to the
  * view. It is not meant to display validation error messages, which are designed to be handled via the
- * [EMAIL PROTECTED] org.codehaus.waffle.validation.ErrorsContext}.
+ * [EMAIL PROTECTED] org.codehaus.waffle.validation.ErrorsContext}.  The MessagesContext also exposes to the view the MessageResources.
  * 
  * @author Mauro Talevi
  * @see org.codehaus.waffle.validation.ErrorsContext
@@ -26,5 +26,7 @@
 
     void clearMessages();
     
+    MessageResources getResources();
+    
 }
 

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java (821 => 822)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java	2008-09-06 13:41:56 UTC (rev 821)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java	2008-09-09 09:45:57 UTC (rev 822)
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.codehaus.waffle.i18n.MessageResources;
 import org.codehaus.waffle.i18n.MessagesContext;
 
 public class StubMessagesContext implements MessagesContext {
@@ -24,4 +25,8 @@
         return 0;
     }
 
+    public MessageResources getResources() {
+        return null;
+    }
+
 }

Added: trunk/waffle-resources/src/main/resources/ftl/waffle/i18n.ftl (0 => 822)

--- trunk/waffle-resources/src/main/resources/ftl/waffle/i18n.ftl	                        (rev 0)
+++ trunk/waffle-resources/src/main/resources/ftl/waffle/i18n.ftl	2008-09-09 09:45:57 UTC (rev 822)
@@ -0,0 +1,16 @@
+<#ftl strip_whitespace=true>
+<#--
+ * A collection of FTL (Freemarker Template Language) functions and macros for I18N
+ *
+ * @author Mauro Talevi
+ -->
+
+<#--
+ * Shows a message for the given key from the messages resources
+ *
+ * @param key the message key
+ * @param default the default message value if message resources or key are not found (defaults to "")
+ -->
+<#macro messageFor key default="">
+    <#if messages?exists && messages.resources?exists><#assign message=messages.resources.getMessageWithDefault(key,default)/><#else><#assign message=default/></#if>${message}
+</#macro>


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to