diff --git a/app/assets/javascripts/discourse/components/home-logo.js.es6 b/app/assets/javascripts/discourse/components/home-logo.js.es6
index c0846e268b8..c1e39a437c3 100644
--- a/app/assets/javascripts/discourse/components/home-logo.js.es6
+++ b/app/assets/javascripts/discourse/components/home-logo.js.es6
@@ -1,32 +1,28 @@
import DiscourseURL from 'discourse/lib/url';
-import { setting } from 'discourse/lib/computed';
+import { iconHTML } from 'discourse/helpers/fa-icon';
+import { observes } from 'ember-addons/ember-computed-decorators';
export default Ember.Component.extend({
- classNames: ["title"],
+ widget: 'home-logo',
+ showMobileLogo: null,
+ linkUrl: null,
+ classNames: ['title'],
- targetUrl: function() {
- // For overriding by customizations
- return '/';
- }.property(),
+ init() {
+ this._super();
+ this.showMobileLogo = this.site.mobileView && !Ember.isEmpty(this.siteSettings.mobile_logo_url);
+ this.linkUrl = this.get('targetUrl') || '/';
+ },
- linkUrl: function() {
- return Discourse.getURL(this.get('targetUrl'));
- }.property('targetUrl'),
+ @observes('minimized')
+ _updateLogo() {
+ // On mobile we don't minimize the logo
+ if (!this.site.mobileView) {
+ this.rerender();
+ }
+ },
- showSmallLogo: function() {
- return !this.site.mobileView && this.get("minimized");
- }.property("minimized"),
-
- showMobileLogo: function() {
- return this.site.mobileView && !Ember.isBlank(this.get('mobileBigLogoUrl'));
- }.property(),
-
- smallLogoUrl: setting('logo_small_url'),
- bigLogoUrl: setting('logo_url'),
- mobileBigLogoUrl: setting('mobile_logo_url'),
- title: setting('title'),
-
- click: function(e) {
+ click(e) {
// if they want to open in a new tab, let it so
if (e.shiftKey || e.metaKey || e.ctrlKey || e.which === 2) { return true; }
@@ -34,5 +30,29 @@ export default Ember.Component.extend({
DiscourseURL.routeTo(this.get('targetUrl'));
return false;
+ },
+
+ render(buffer) {
+ const { siteSettings } = this;
+ const logoUrl = siteSettings.logo_url || '';
+ const title = siteSettings.title;
+
+ buffer.push(``);
+ if (!this.site.mobileView && this.get('minimized')) {
+ const logoSmallUrl = siteSettings.logo_small_url || '';
+ if (logoSmallUrl.length) {
+ buffer.push(`
`);
+ } else {
+ buffer.push(iconHTML('home'));
+ }
+ } else if (this.showMobileLogo) {
+ buffer.push(`
`);
+ } else if (logoUrl.length) {
+ buffer.push(`
`);
+ } else {
+ buffer.push(`${title}
`);
+ }
+ buffer.push('');
}
+
});
diff --git a/app/assets/javascripts/discourse/components/mount-widget.js.es6 b/app/assets/javascripts/discourse/components/mount-widget.js.es6
index 8958cfd057c..b7a8fdb0207 100644
--- a/app/assets/javascripts/discourse/components/mount-widget.js.es6
+++ b/app/assets/javascripts/discourse/components/mount-widget.js.es6
@@ -56,6 +56,8 @@ export default Ember.Component.extend({
rerenderWidget() {
Ember.run.cancel(this._timeout);
if (this._rootNode) {
+ const t0 = new Date().getTime();
+
const opts = { model: this.get('model') };
const newTree = new this._widgetClass(this.get('args'), this.container, opts);
@@ -86,6 +88,10 @@ export default Ember.Component.extend({
}
renderedKey('*');
+ if (this.profileWidget) {
+ console.log(new Date().getTime() - t0);
+ }
+
}
}
diff --git a/app/assets/javascripts/discourse/templates/components/home-logo.hbs b/app/assets/javascripts/discourse/templates/components/home-logo.hbs
deleted file mode 100644
index 8cb81d9c4b9..00000000000
--- a/app/assets/javascripts/discourse/templates/components/home-logo.hbs
+++ /dev/null
@@ -1,19 +0,0 @@
-
- {{#if showSmallLogo}}
- {{#if smallLogoUrl}}
-
- {{else}}
-
- {{/if}}
- {{else}}
- {{#if showMobileLogo}}
-
- {{else}}
- {{#if bigLogoUrl}}
-
- {{else}}
- {{unbound title}}
- {{/if}}
- {{/if}}
- {{/if}}
-
diff --git a/test/javascripts/components/home-logo-test.js.es6 b/test/javascripts/components/home-logo-test.js.es6
index 770343d4994..60eefd94b9f 100644
--- a/test/javascripts/components/home-logo-test.js.es6
+++ b/test/javascripts/components/home-logo-test.js.es6
@@ -17,6 +17,7 @@ componentTest('basics', {
},
test(assert) {
+ assert.ok(this.$('.title').length === 1);
assert.ok(this.$('a[data-auto-route]').length === 1);
assert.ok(this.$('img#site-logo.logo-big').length === 1);
@@ -55,29 +56,22 @@ componentTest('no logo', {
});
componentTest('mobile logo', {
- template: "{{home-logo minimized=minimized}}",
+ template: "{{home-logo}}",
setup() {
this.siteSettings.mobile_logo_url = mobileLogo;
this.siteSettings.logo_small_url= smallLogo;
- this.set('minimized', true);
this.site.mobileView = true;
},
test(assert) {
assert.ok(this.$('img#site-logo.logo-big').length === 1);
assert.equal(this.$('#site-logo').attr('src'), mobileLogo);
-
- this.set('minimized', true);
- andThen(() => {
- assert.equal(this.$('#site-logo').attr('src'), mobileLogo);
- });
}
});
componentTest('mobile without logo', {
- template: "{{home-logo minimized=minimized}}",
+ template: "{{home-logo}}",
setup() {
- this.set('minimized', true);
this.siteSettings.logo_url = bigLogo;
this.site.mobileView = true;
},