114 lines
3.2 KiB
JavaScript
114 lines
3.2 KiB
JavaScript
var CoreView = require('backbone/core-view');
|
|
var OptionsView = require('./settings/preview/preview-view');
|
|
var ScrollView = require('builder/components/scroll/scroll-view');
|
|
var Header = require('./editor-header.js');
|
|
var PublishView = require('builder/components/modals/publish/publish-view');
|
|
var ShareButtonView = require('./layers/share-button-view');
|
|
var PanelWithOptionsView = require('builder/components/view-options/panel-with-options-view');
|
|
var checkAndBuildOpts = require('builder/helpers/required-opts');
|
|
|
|
var REQUIRED_OPTS = [
|
|
'configModel',
|
|
'editorModel',
|
|
'mapDefinitionModel',
|
|
'mapcapsCollection',
|
|
'modals',
|
|
'overlaysCollection',
|
|
'privacyCollection',
|
|
'settingsCollection',
|
|
'userModel',
|
|
'visDefinitionModel'
|
|
];
|
|
|
|
module.exports = CoreView.extend({
|
|
|
|
module: 'editor:editor-settings-pane',
|
|
|
|
initialize: function (opts) {
|
|
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
|
|
|
|
this._editorModel.set('edition', false);
|
|
},
|
|
|
|
render: function () {
|
|
this.clearSubViews();
|
|
this.$el.empty();
|
|
|
|
var header = new Header({
|
|
userModel: this._userModel,
|
|
editorModel: this._editorModel,
|
|
configModel: this._configModel,
|
|
mapcapsCollection: this._mapcapsCollection,
|
|
modals: this._modals,
|
|
visDefinitionModel: this._visDefinitionModel,
|
|
privacyCollection: this._privacyCollection,
|
|
clickPrivacyAction: this._share.bind(this),
|
|
onRemoveMap: this._onRemoveMap.bind(this)
|
|
});
|
|
|
|
header.bind('export-image', function () {
|
|
this.trigger('export-image', this);
|
|
}, this);
|
|
|
|
this.$el.append(header.render().$el);
|
|
this.addView(header);
|
|
|
|
var view = new PanelWithOptionsView({
|
|
className: 'Editor-content',
|
|
editorModel: this._editorModel,
|
|
infoboxModel: this._infoboxModel,
|
|
infoboxCollection: this._infoboxCollection,
|
|
createContentView: function () {
|
|
return new ScrollView({
|
|
createContentView: function () {
|
|
return new OptionsView({
|
|
mapDefinitionModel: this._mapDefinitionModel,
|
|
settingsCollection: this._settingsCollection,
|
|
overlaysCollection: this._overlaysCollection
|
|
});
|
|
}.bind(this)
|
|
});
|
|
}.bind(this),
|
|
createActionView: function () {
|
|
return new ShareButtonView({
|
|
visDefinitionModel: this._visDefinitionModel,
|
|
onClickAction: this._share.bind(this)
|
|
});
|
|
}.bind(this)
|
|
});
|
|
|
|
this.$el.append(view.render().$el);
|
|
this.addView(view);
|
|
|
|
return this;
|
|
},
|
|
|
|
_share: function () {
|
|
var publishView = this._modals.create(function (modalModel) {
|
|
return new PublishView({
|
|
mapcapsCollection: this._mapcapsCollection,
|
|
modalModel: modalModel,
|
|
visDefinitionModel: this._visDefinitionModel,
|
|
privacyCollection: this._privacyCollection,
|
|
userModel: this._userModel,
|
|
configModel: this._configModel,
|
|
isOwner: this._isOwner()
|
|
});
|
|
}.bind(this), {
|
|
breadcrumbsEnabled: true
|
|
});
|
|
|
|
this.addView(publishView);
|
|
},
|
|
|
|
_onRemoveMap: function () {
|
|
window.location = this._userModel.get('base_url');
|
|
},
|
|
|
|
_isOwner: function () {
|
|
return this._visDefinitionModel
|
|
.getPermissionModel()
|
|
.isOwner(this._userModel);
|
|
}
|
|
});
|