From 5659b93c71b92f2c2d6fc97881a3c8c86bf3bf74 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 10 Dec 2014 11:34:00 -0500 Subject: [PATCH] Many fixes for Ember 1.9.0 --- Gemfile | 4 +- Gemfile.lock | 10 +- .../components/basic-topic-list.js.es6 | 8 - .../discourse/ember/resolver.js.es6 | 9 +- .../discourse/helpers/application_helpers.js | 22 +- .../discourse/helpers/category-link.js.es6 | 5 +- .../discourse/helpers/custom-html.js.es6 | 3 +- .../discourse/helpers/format-date.js.es6 | 31 +- .../discourse/helpers/i18n_helpers.js | 25 +- .../javascripts/discourse/helpers/raw.js.es6 | 5 +- .../discourse/helpers/register-unbound.js.es6 | 26 + .../discourse/helpers/topic-link.js.es6 | 6 +- .../discourse/helpers/user-avatar.js.es6 | 9 +- .../templates/components/basic-topic-list.hbs | 30 +- .../discourse/templates/discovery/topics.hbs | 2 +- .../discourse/templates/group/index.hbs | 2 +- .../discourse/templates/modal/modal.hbs | 4 +- .../discourse/templates/user-card.hbs | 8 +- .../discourse/templates/user/badges.hbs | 4 +- .../templates/user/notifications.hbs | 8 +- .../discourse/templates/user/posts.hbs | 4 +- .../discourse/templates/user/stream.hbs | 28 +- .../discourse/templates/user/user.hbs | 4 +- app/assets/javascripts/env.js | 7 +- app/assets/javascripts/main_include.js | 1 + .../better_handlebars_errors.rb | 16 + .../assets/javascripts/development/ember.js | 7888 +++++++++-------- vendor/assets/javascripts/handlebars.js | 1689 ++-- vendor/assets/javascripts/production/ember.js | 7623 ++++++++-------- 29 files changed, 9429 insertions(+), 8052 deletions(-) create mode 100644 app/assets/javascripts/discourse/helpers/register-unbound.js.es6 create mode 100644 lib/freedom_patches/better_handlebars_errors.rb diff --git a/Gemfile b/Gemfile index 10d3088d624..e5837a1af71 100644 --- a/Gemfile +++ b/Gemfile @@ -104,8 +104,8 @@ end gem 'onebox' gem 'ember-rails' -gem 'ember-source', '1.6.0.beta.2' -gem 'handlebars-source', '1.3.0' +gem 'ember-source', '1.9.0.beta.4' +gem 'handlebars-source', '2.0.0' gem 'barber' gem 'message_bus' diff --git a/Gemfile.lock b/Gemfile.lock index dc78e8f6d11..7a108e0c436 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -77,8 +77,8 @@ GEM handlebars-source jquery-rails (>= 1.0.17) railties (>= 3.1) - ember-source (1.6.0.beta.2) - handlebars-source (~> 1.0) + ember-source (1.9.0.beta.4) + handlebars-source (~> 2.0) erubis (2.7.0) eventmachine (1.0.3) excon (0.39.6) @@ -129,7 +129,7 @@ GEM given_core (3.5.4) sorcerer (>= 0.3.7) guess_html_encoding (0.0.9) - handlebars-source (1.3.0) + handlebars-source (2.0.0) hashie (3.3.1) highline (1.6.21) hike (1.2.3) @@ -414,7 +414,7 @@ DEPENDENCIES certified email_reply_parser ember-rails - ember-source (= 1.6.0.beta.2) + ember-source (= 1.9.0.beta.4) eventmachine fabrication (= 2.9.8) fakeweb (~> 1.3.0) @@ -426,7 +426,7 @@ DEPENDENCIES fog (= 1.22.1) foreman gctools - handlebars-source (= 1.3.0) + handlebars-source (= 2.0.0) highline hiredis htmlentities diff --git a/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 b/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 index 1b505c6130b..a570ca13db7 100644 --- a/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 +++ b/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 @@ -1,11 +1,3 @@ -/** - This view is used for rendering a basic list of topics. - - @class BasicTopicListComponent - @extends Discourse.View - @namespace Discourse - @module Discourse -**/ export default Ember.Component.extend({ loading: Ember.computed.not('loaded'), diff --git a/app/assets/javascripts/discourse/ember/resolver.js.es6 b/app/assets/javascripts/discourse/ember/resolver.js.es6 index edc98dff7c2..f4de49eacc4 100644 --- a/app/assets/javascripts/discourse/ember/resolver.js.es6 +++ b/app/assets/javascripts/discourse/ember/resolver.js.es6 @@ -4,9 +4,9 @@ var classify = Ember.String.classify; var get = Ember.get; var LOADING_WHITELIST = ['badges', 'userActivity', 'userPrivateMessages', 'admin', 'adminFlags', - 'user', 'preferences', 'adminEmail', 'adminUsersList'], - _dummyRoute, - _loadingView; + 'user', 'preferences', 'adminEmail', 'adminUsersList']; +var _dummyRoute; +var _loadingView; function loadingResolver(cb) { return function(parsedName) { @@ -150,8 +150,7 @@ export default Ember.DefaultResolver.extend({ // Try to find a template with slash instead of first underscore, e.g. foo_bar_baz => foo/bar_baz findSlashedTemplate: function(parsedName) { var decamelized = parsedName.fullNameWithoutType.decamelize(); - var slashed = decamelized.replace("_", "/"); - return Ember.TEMPLATES[slashed]; + return Ember.TEMPLATES[decamelized.replace("_", "/")] || Ember.TEMPLATES[decamelized.replace('.', '/')]; }, // Try to find a template within a special admin namespace, e.g. adminEmail => admin/templates/email diff --git a/app/assets/javascripts/discourse/helpers/application_helpers.js b/app/assets/javascripts/discourse/helpers/application_helpers.js index ea80064b8a9..923b7ce5afb 100644 --- a/app/assets/javascripts/discourse/helpers/application_helpers.js +++ b/app/assets/javascripts/discourse/helpers/application_helpers.js @@ -1,5 +1,8 @@ var safe = Handlebars.SafeString; +// TODO: Remove me when ES6ified +var registerUnbound = require('discourse/helpers/register-unbound', null, null, true).default; + /** Bound avatar helper. @@ -56,25 +59,18 @@ Handlebars.registerHelper('age-with-tooltip', function(property, options) { return new safe(Discourse.Formatter.autoUpdatingRelativeAge(dt, {title: true})); }); -/** - Display logic for numbers. - - @method number - @for Handlebars -**/ -Handlebars.registerHelper('number', function(property, options) { - - var orig = parseInt(Ember.Handlebars.get(this, property, options), 10); +registerUnbound('number', function(orig, params) { + orig = parseInt(orig, 10); if (isNaN(orig)) { orig = 0; } var title = orig; - if (options.hash.numberKey) { - title = I18n.t(options.hash.numberKey, { number: orig }); + if (params.numberKey) { + title = I18n.t(params.numberKey, { number: orig }); } var classNames = 'number'; - if (options.hash['class']) { - classNames += ' ' + Ember.Handlebars.get(this, options.hash['class'], options); + if (params['class']) { + classNames += ' ' + params['class']; } var result = "" + title + ""); }); diff --git a/app/assets/javascripts/discourse/helpers/user-avatar.js.es6 b/app/assets/javascripts/discourse/helpers/user-avatar.js.es6 index 95a220b542b..61448048122 100644 --- a/app/assets/javascripts/discourse/helpers/user-avatar.js.es6 +++ b/app/assets/javascripts/discourse/helpers/user-avatar.js.es6 @@ -1,3 +1,5 @@ +import registerUnbound from 'discourse/helpers/register-unbound'; + export function renderAvatar(user, options) { options = options || {}; @@ -39,9 +41,6 @@ export function renderAvatar(user, options) { } } -Handlebars.registerHelper('avatar', function(user, options) { - if (typeof user === 'string') { - user = Ember.Handlebars.get(this, user, options); - } - return new Handlebars.SafeString(renderAvatar.call(this, user, options.hash)); +registerUnbound('avatar', function(user, params) { + return new Handlebars.SafeString(renderAvatar.call(this, user, params)); }); diff --git a/app/assets/javascripts/discourse/templates/components/basic-topic-list.hbs b/app/assets/javascripts/discourse/templates/components/basic-topic-list.hbs index 1cd3fbc1ca7..f831ebf7862 100644 --- a/app/assets/javascripts/discourse/templates/components/basic-topic-list.hbs +++ b/app/assets/javascripts/discourse/templates/components/basic-topic-list.hbs @@ -17,34 +17,34 @@ - {{#each topics}} - + {{#each t in topics}} + - {{topic-status topic=this}} - {{{unbound fancy_title}}} - {{topic-post-badges unread=unread - newPosts=new_posts - unseen=unseen - url=lastUnreadUrl}} + {{topic-status topic=t}} + {{{unbound t.fancy_title}}} + {{topic-post-badges unread=t.unread + newPosts=t.new_posts + unseen=t.unseen + url=t.lastUnreadUrl}} - {{raw "list/category-column" hideCategory=controller.hideCategory category=category}} + {{raw "list/category-column" hideCategory=controller.hideCategory category=t.category}} - {{posts-count-column topic=this class="num" action="clickedPosts"}} + {{posts-count-column topic=t class="num" action="clickedPosts"}} {{#if controller.showParticipants}} - {{#each participants}} - {{avatar this usernamePath="user.username" imageSize="small"}} + {{#each p in t.participants}} + {{avatar p usernamePath="user.username" imageSize="small"}} {{/each}} {{/if}} - - {{number views numberKey="views_long"}} + + {{number t.views numberKey="views_long"}} - {{raw "list/activity-column" topic=this class="num" tagName="td"}} + {{raw "list/activity-column" topic=t class="num" tagName="td"}} {{/each}} diff --git a/app/assets/javascripts/discourse/templates/discovery/topics.hbs b/app/assets/javascripts/discourse/templates/discovery/topics.hbs index 82ad64c58ff..23878a1a541 100644 --- a/app/assets/javascripts/discourse/templates/discovery/topics.hbs +++ b/app/assets/javascripts/discourse/templates/discovery/topics.hbs @@ -64,7 +64,7 @@ - {{each topics itemController="topic-list-item" itemView="topic-list-item"}} + {{each content in topics itemController="topic-list-item" itemView="topic-list-item"}} {{/if}} diff --git a/app/assets/javascripts/discourse/templates/group/index.hbs b/app/assets/javascripts/discourse/templates/group/index.hbs index aee834721e6..bf99e6fddc7 100644 --- a/app/assets/javascripts/discourse/templates/group/index.hbs +++ b/app/assets/javascripts/discourse/templates/group/index.hbs @@ -3,7 +3,7 @@
{{#link-to 'user' user class="avatar-link"}}
{{avatar user imageSize="large" extraClasses="actor" ignoreTitle="true"}}
{{/link-to}} - {{format-date path="created_at" leaveAgo="true"}} + {{format-date created_at leaveAgo="true"}} {{unbound title}} diff --git a/app/assets/javascripts/discourse/templates/modal/modal.hbs b/app/assets/javascripts/discourse/templates/modal/modal.hbs index e52ad63b138..b7340453c78 100644 --- a/app/assets/javascripts/discourse/templates/modal/modal.hbs +++ b/app/assets/javascripts/discourse/templates/modal/modal.hbs @@ -11,10 +11,10 @@ {{outlet "modalBody"}} - {{#each errors}} + {{#each error in errors}}
- {{this}} + {{error}}
{{/each}} diff --git a/app/assets/javascripts/discourse/templates/user-card.hbs b/app/assets/javascripts/discourse/templates/user-card.hbs index de62551daa3..0274f04dd7b 100644 --- a/app/assets/javascripts/discourse/templates/user-card.hbs +++ b/app/assets/javascripts/discourse/templates/user-card.hbs @@ -58,15 +58,15 @@ {{#if user}} {{/if}} {{#if showBadges}}
- {{#each user.featured_user_badges}} - {{user-badge badge=badge}} + {{#each ub in user.featured_user_badges}} + {{user-badge badge=ub.badge}} {{/each}} {{#if showMoreBadges}} {{#link-to 'user.badges' user class="btn more-user-badges"}} diff --git a/app/assets/javascripts/discourse/templates/user/badges.hbs b/app/assets/javascripts/discourse/templates/user/badges.hbs index 897e46c3f74..60e5b3e5632 100644 --- a/app/assets/javascripts/discourse/templates/user/badges.hbs +++ b/app/assets/javascripts/discourse/templates/user/badges.hbs @@ -1,5 +1,5 @@
- {{#each}} - {{user-badge badge=badge count=count}} + {{#each ub in model}} + {{user-badge badge=ub.badge count=ub.count}} {{/each}}
diff --git a/app/assets/javascripts/discourse/templates/user/notifications.hbs b/app/assets/javascripts/discourse/templates/user/notifications.hbs index 1fe55c95f65..e1e51542b34 100644 --- a/app/assets/javascripts/discourse/templates/user/notifications.hbs +++ b/app/assets/javascripts/discourse/templates/user/notifications.hbs @@ -14,11 +14,11 @@
{{/if}} -{{#each itemController="notification"}} -
- {{notification-item notification=this scope=scope}} +{{#each n in model itemController="notification"}} +
+ {{notification-item notification=n scope=n.scope}} - {{format-date path="created_at" leaveAgo="true"}} + {{format-date n.created_at leaveAgo="true"}}
{{/each}} diff --git a/app/assets/javascripts/discourse/templates/user/posts.hbs b/app/assets/javascripts/discourse/templates/user/posts.hbs index 4dc27bb7d6c..6645e640a5f 100644 --- a/app/assets/javascripts/discourse/templates/user/posts.hbs +++ b/app/assets/javascripts/discourse/templates/user/posts.hbs @@ -7,7 +7,7 @@
- {{format-date path="created_at" leaveAgo="true"}} + {{format-date created_at leaveAgo="true"}} {{unbound topic_title}} @@ -17,7 +17,7 @@ {{#if deleted}} - {{avatar deleted_by imageSize="tiny" extraClasses="actor" ignoreTitle="true"}} {{format-date path="deleted_at" leaveAgo="true"}} + {{avatar deleted_by imageSize="tiny" extraClasses="actor" ignoreTitle="true"}} {{format-date deleted_at leaveAgo="true"}} {{/if}}
diff --git a/app/assets/javascripts/discourse/templates/user/stream.hbs b/app/assets/javascripts/discourse/templates/user/stream.hbs index ccb0df55747..0d1f07c2f74 100644 --- a/app/assets/javascripts/discourse/templates/user/stream.hbs +++ b/app/assets/javascripts/discourse/templates/user/stream.hbs @@ -1,25 +1,25 @@ -{{#each model.content}} -