84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
var cdb = require('cartodb.js-v3');
|
|
var UserSettingsView = require('../public_common/user_settings_view');
|
|
var UserIndustriesView = require('../public_common/user_industries_view');
|
|
|
|
var LOGIN_URL = '/login';
|
|
var HOME_URL = '/';
|
|
|
|
module.exports = cdb.core.View.extend({
|
|
initialize: function () {
|
|
this.template = cdb.templates
|
|
.getTemplate('public/views/public_header_shared');
|
|
|
|
this._initModels();
|
|
this._initBindings();
|
|
},
|
|
|
|
render: function () {
|
|
this.clearSubViews();
|
|
|
|
this.$el.html(this.template({
|
|
isHosted: this.isHosted,
|
|
loginUrl: this.loginUrl,
|
|
currentUser: this.currentUser
|
|
}));
|
|
|
|
this._renderLogoLink();
|
|
this._updateUserSettings();
|
|
|
|
return this;
|
|
},
|
|
|
|
_initModels: function () {
|
|
this.currentUser = this.options.currentUser;
|
|
this.isHosted = this.options.isHosted;
|
|
|
|
this.loginUrl = this.currentUser
|
|
? this.currentUser.get('base_url')
|
|
: LOGIN_URL;
|
|
|
|
this.homeUrl = this.currentUser
|
|
? this.currentUser.get('base_url')
|
|
: HOME_URL;
|
|
|
|
this.googleEnabled = this.currentUser
|
|
? this.currentUser.featureEnabled('google_maps')
|
|
: false;
|
|
},
|
|
|
|
_initBindings: function () {
|
|
var authenticatedUser = new cdb.open.AuthenticatedUser();
|
|
authenticatedUser.bind('change', this._updateUserSettings, this);
|
|
this.add_related_model(authenticatedUser);
|
|
},
|
|
|
|
_renderLogoLink: function () {
|
|
var template = cdb.templates.getTemplate('common/views/dashboard_header/logo');
|
|
|
|
this.$('.js-logo').html(
|
|
template({
|
|
homeUrl: this.homeUrl,
|
|
googleEnabled: this.googleEnabled
|
|
})
|
|
);
|
|
},
|
|
|
|
_updateUserSettings: function () {
|
|
if (this.currentUser && this.currentUser.get('username')) {
|
|
this.userSettingsView = new UserSettingsView({
|
|
el: this.$('.js-user-settings'),
|
|
model: this.currentUser
|
|
});
|
|
this.addView(this.userSettingsView);
|
|
|
|
this.userSettingsView.render();
|
|
this.currentUser.fetch();
|
|
}
|
|
|
|
this.userIndustriesView = new UserIndustriesView({
|
|
el: this.$('.js-user-industries')
|
|
});
|
|
this.addView(this.userIndustriesView);
|
|
}
|
|
});
|