diff --git a/app/assets/javascripts/discourse-common/lib/helpers.js.es6 b/app/assets/javascripts/discourse-common/lib/helpers.js.es6
index 470ae264fed..df588aa4a13 100644
--- a/app/assets/javascripts/discourse-common/lib/helpers.js.es6
+++ b/app/assets/javascripts/discourse-common/lib/helpers.js.es6
@@ -55,12 +55,6 @@ function resolveParams(ctx, options) {
}
export function registerUnbound(name, fn) {
- if (Ember.Helper) {
- _helpers[name] = Ember.Helper.helper(function() {
- // TODO: Allow newer ember to use helpers
- });
- return;
- }
const func = function(property, options) {
if (options.types && (options.types[0] === "ID" || options.types[0] === "PathExpression")) {
@@ -70,6 +64,14 @@ export function registerUnbound(name, fn) {
return fn.call(this, property, resolveParams(this, options));
};
+ if (Ember.Helper) {
+ _helpers[name] = Ember.Helper.extend({
+ compute: (params, args) => fn(params[0], args)
+ });
+ Handlebars.registerHelper(name, func);
+ return;
+ }
+
Handlebars.registerHelper(name, func);
Ember.Handlebars.registerHelper(name, func);
}
diff --git a/app/assets/javascripts/discourse-common/resolver.js.es6 b/app/assets/javascripts/discourse-common/resolver.js.es6
index e874b5a7336..90e4b23ad52 100644
--- a/app/assets/javascripts/discourse-common/resolver.js.es6
+++ b/app/assets/javascripts/discourse-common/resolver.js.es6
@@ -132,6 +132,12 @@ export function buildResolver(baseName) {
},
resolveTemplate(parsedName) {
+ let fullName = parsedName.fullNameWithoutType;
+ if (fullName.indexOf('.raw') !== -1) {
+ return Ember.TEMPLATES[fullName] ||
+ Ember.TEMPLATES[fullName.replace(/\.raw$/, '')];
+ }
+
return this.findPluginMobileTemplate(parsedName) ||
this.findPluginTemplate(parsedName) ||
this.findMobileTemplate(parsedName) ||
diff --git a/app/assets/javascripts/discourse/helpers/raw.js.es6 b/app/assets/javascripts/discourse/helpers/raw.js.es6
index 506822b797e..630cc2383a1 100644
--- a/app/assets/javascripts/discourse/helpers/raw.js.es6
+++ b/app/assets/javascripts/discourse/helpers/raw.js.es6
@@ -1,17 +1,27 @@
import { registerUnbound } from 'discourse-common/lib/helpers';
-// see: https://github.com/emberjs/ember.js/issues/12634
-var missingViews = {};
+let _injections;
-function renderRaw(ctx, template, templateName, params) {
+function renderRaw(ctx, container, template, templateName, params) {
params.parent = params.parent || ctx;
- if (!params.view && !missingViews[templateName]) {
- var viewClass = Discourse.__container__.lookupFactory('view:' + templateName);
- if (viewClass) {
- params.view = viewClass.create(params);
- } else {
- missingViews[templateName] = true;
+ if (!params.view) {
+ if (!_injections) {
+ _injections = {
+ siteSettings: container.lookup('site-settings:main'),
+ currentUser: container.lookup('currentUser:main'),
+ site: container.lookup('site:main'),
+ session: container.lookup('session:main'),
+ topicTrackingState: container.lookup('topic-tracking-state:main')
+ };
+ }
+
+ const module = `discourse/views/${templateName}`;
+ if (requirejs.entries[module]) {
+ const viewClass = require(module, null, null, true);
+ if (viewClass && viewClass.default) {
+ params.view = viewClass.default.create(params, _injections);
+ }
}
}
@@ -19,10 +29,13 @@ function renderRaw(ctx, template, templateName, params) {
}
registerUnbound('raw', function(templateName, params) {
- var template = Discourse.__container__.lookup('template:' + templateName + '.raw');
+ templateName = templateName.replace('.', '/');
+
+ const container = Discourse.__container__;
+ var template = container.lookup('template:' + templateName + '.raw');
if (!template) {
Ember.warn('Could not find raw template: ' + templateName);
return;
}
- return renderRaw(this, template, templateName, params);
+ return renderRaw(this, container, template, templateName, params);
});
diff --git a/app/assets/javascripts/discourse/templates/application.hbs b/app/assets/javascripts/discourse/templates/application.hbs
index a01b222b001..bc8c9c5e341 100644
--- a/app/assets/javascripts/discourse/templates/application.hbs
+++ b/app/assets/javascripts/discourse/templates/application.hbs
@@ -1,4 +1,3 @@
-
{{site-header canSignUp=canSignUp
showCreateAccount="showCreateAccount"
showLogin="showLogin"
diff --git a/app/assets/javascripts/discourse/templates/list/activity-column.raw.hbs b/app/assets/javascripts/discourse/templates/list/activity-column.raw.hbs
index f6d485f55ef..56a994a5510 100644
--- a/app/assets/javascripts/discourse/templates/list/activity-column.raw.hbs
+++ b/app/assets/javascripts/discourse/templates/list/activity-column.raw.hbs
@@ -1 +1 @@
-<{{this.tagName}} class="{{class}} {{cold-age-class topic.createdAt startDate=topic.bumpedAt class=""}} activity" title="{{{topic.bumpedAtTitle}}}">{{format-date topic.bumpedAt format="tiny" noTitle="true"}}{{this.tagName}}>
+<{{tagName}} class="{{class}} {{cold-age-class topic.createdAt startDate=topic.bumpedAt class=""}} activity" title="{{{topic.bumpedAtTitle}}}">{{format-date topic.bumpedAt format="tiny" noTitle="true"}}{{tagName}}>
diff --git a/app/assets/javascripts/discourse/views/topic-list-header-column.js.es6 b/app/assets/javascripts/discourse/views/topic-list-header-column.js.es6
index 72316011582..781fdc131b3 100644
--- a/app/assets/javascripts/discourse/views/topic-list-header-column.js.es6
+++ b/app/assets/javascripts/discourse/views/topic-list-header-column.js.es6
@@ -1,5 +1,4 @@
export default Ember.Object.extend({
-
localizedName: function(){
if(this.forceName){
return this.forceName;
diff --git a/lib/freedom_patches/raw_handlebars.rb b/lib/freedom_patches/raw_handlebars.rb
index ea643aa7829..888e99e4138 100644
--- a/lib/freedom_patches/raw_handlebars.rb
+++ b/lib/freedom_patches/raw_handlebars.rb
@@ -54,6 +54,18 @@ end
class Ember::Handlebars::Template
include Discourse::Ember::Handlebars::Helper
+ def precompile_handlebars(string, input=nil)
+ "require('discourse-common/lib/raw-handlebars').template(#{Barber::Precompiler.compile(string)});"
+ end
+
+ def compile_handlebars(string, input=nil)
+ "require('discourse-common/lib/raw-handlebars').compile(#{indent(string).inspect});"
+ end
+
+ def global_template_target(namespace, module_name, config)
+ "#{namespace}[#{template_path(module_name, config).inspect}]"
+ end
+
# FIXME: Previously, ember-handlebars-templates uses the logical path which incorrectly
# returned paths with the `.raw` extension and our code is depending on the `.raw`
# to find the right template to use.