diff --git a/src/js/client/renderer.js b/src/js/client/renderer.js index b29b1f6..d6bd17f 100644 --- a/src/js/client/renderer.js +++ b/src/js/client/renderer.js @@ -87,6 +87,7 @@ // A "server aware" grade that depends on being able to communicate with an instance of // `gpii.handlebars.inlineTemplateBundlingMiddleware`. + fluid.defaults("gpii.handlebars.renderer.serverAware", { gradeNames: ["gpii.handlebars.renderer"], templateUrl: "/hbs", @@ -97,7 +98,13 @@ } }, events: { - "onTemplatesLoaded": null + "onTemplatesLoaded": null, + "onAllResourcesLoaded": { + events: { + // onMessagesLoaded: "onMessagesLoaded", + onTemplatesLoaded: "onTemplatesLoaded" + } + } }, listeners: { "onCreate.loadTemplates": { @@ -128,7 +135,7 @@ }; fluid.defaults("gpii.handlebars.renderer.serverMessageAware", { - gradeNames: ["gpii.handlebars.renderer.serverAware"], + gradeNames: ["gpii.handlebars.renderer.serverAware", "fluid.modelComponent"], messageUrl: "/messages", invokers: { "cacheMessages": { diff --git a/src/js/client/templateAware.js b/src/js/client/templateAware.js index 9391698..60957e0 100644 --- a/src/js/client/templateAware.js +++ b/src/js/client/templateAware.js @@ -130,7 +130,7 @@ type: "gpii.handlebars.renderer.serverAware", options: { listeners: { - "onTemplatesLoaded.renderMarkup": { + "onAllResourcesLoaded.renderMarkup": { func: "{gpii.handlebars.templateAware.serverAware}.renderInitialMarkup" } } diff --git a/src/js/client/templateManager.js b/src/js/client/templateManager.js index 94d2515..e6f0a94 100644 --- a/src/js/client/templateManager.js +++ b/src/js/client/templateManager.js @@ -14,12 +14,14 @@ gradeNames: ["fluid.component"], components: { renderer: { - type: "gpii.handlebars.renderer.serverAware" + // TODO sgithens This needs to be updated depending on the app from serverAware to + // serverMessageAware dynamically. + type: "gpii.handlebars.renderer.serverMessageAware" }, // All components that require a renderer should be added as children of the `requireRenderer` component // to ensure that they are created once the renderer is available. requireRenderer: { - createOnEvent: "{renderer}.events.onTemplatesLoaded", + createOnEvent: "{renderer}.events.onAllResourcesLoaded", type: "fluid.component" } }, diff --git a/src/js/common/messageHelper.js b/src/js/common/messageHelper.js index 43ef30d..7a0ec4e 100644 --- a/src/js/common/messageHelper.js +++ b/src/js/common/messageHelper.js @@ -12,19 +12,25 @@ var gpii = fluid.registerNamespace("gpii"); fluid.registerNamespace("gpii.handlebars.helper.messageHelper"); -gpii.handlebars.helper.messageHelper.getHelper = function () { +gpii.handlebars.helper.messageHelper.getHelper = function (that, serverAware) { return function (messageKey, dataOrRootContext, rootContext) { if (arguments.length < 2) { fluid.fail("You must call the 'messageHelper' helper with at least a message key."); } else { - // Pick up the message bundles from the root context, which is always the last argument. - var messages = fluid.get(rootContext || dataOrRootContext, "data.root.messages"); - + var messages; + if (serverAware) { + messages = fluid.get(serverAware, "model.messages"); + } + else { + // Currently, the server verion of the renderer is still storing the messages in it's + // options area, so if no serverAware is wired in, we'll assume this is running in node.js + messages = fluid.get(rootContext || dataOrRootContext, "data.root.messages"); + } // If we have a third argument, then the second argument is our "data". Otherwise, we use the root context (equivalent to passing "." as the variable). - var data = rootContext ? dataOrRootContext : fluid.get(dataOrRootContext, "data.root"); + // TODO var data = rootContext ? dataOrRootContext : fluid.get(dataOrRootContext, "data.root"); var resolver = fluid.messageResolver({ messageBase: messages }); - return resolver.resolve(messageKey, data); + return resolver.resolve(messageKey, {}); } }; }; @@ -35,7 +41,7 @@ fluid.defaults("gpii.handlebars.helper.messageHelper", { invokers: { "getHelper": { "funcName": "gpii.handlebars.helper.messageHelper.getHelper", - "args": ["{that}"] + "args": ["{that}", "{gpii.handlebars.renderer.serverAware}"] } } }); diff --git a/src/js/common/renderer.js b/src/js/common/renderer.js index 7a08e6f..fc04ba8 100644 --- a/src/js/common/renderer.js +++ b/src/js/common/renderer.js @@ -121,7 +121,8 @@ var Handlebars = Handlebars || {}; defaultLocale: "en_us", defaultLayout: "main", events: { - onTemplatesLoaded: null + onTemplatesLoaded: null, + onAllResourcesLoaded: null }, model: { messages: {},