refreshData: function() { var self = this; var configModel = new EditorConfigModel({_courseId: this.model.get('_id')}); // Ensure that the latest config model is always up-to-date when entering this screen configModel.fetch({ success: function(model, response, options) { Origin.editor.data.config = model; Origin.trigger('scaffold:updateSchemas', function() { self.setupExtensions(); }, this); } }); },
function routeAfterDataIsLoaded(route1, route2, route3, route4) { if (route2 === 'article' && route4 === 'edit') { var articleModel = new EditorArticleModel({_id: route3}); articleModel.fetch({ success: function() { var form = Origin.scaffold.buildForm({ model: articleModel }); Origin.trigger('location:title:update', {title: 'Editing article - ' + articleModel.get('title')}); Origin.sidebar.addView(new EditorArticleEditSidebarView({model: articleModel, form: form}).$el); Origin.editingOverlay.addView(new EditorArticleEditView({model: articleModel, form: form}).$el); } }); return; } if (route2 === 'block' && route4 === 'edit') { var blockModel = new EditorBlockModel({_id: route3}); blockModel.fetch({ success: function() { var form = Origin.scaffold.buildForm({ model: blockModel }); Origin.trigger('location:title:update', {title: 'Editing block - ' + blockModel.get('title')}); Origin.sidebar.addView(new EditorBlockEditSidebarView({model: blockModel, form: form}).$el); Origin.editingOverlay.addView(new EditorBlockEditView({model: blockModel, form: form}).$el); } }); return; } if (route2 === 'block' && route4 === 'add') { // If adding a new component // Find block so we can get layout options var containingBlock = Origin.editor.data.blocks.findWhere({_id: route3}); var layoutOptions = containingBlock.get('layoutOptions'); var componentSelectModel = new Backbone.Model({ title: window.polyglot.t('app.addcomponent'), body: window.polyglot.t('app.pleaseselectcomponent'), _parentId: route3, componentTypes: Origin.editor.data.componentTypes.toJSON(), layoutOptions: layoutOptions }); Origin.sidebar.addView(new EditorComponentListSidebarView({ model: componentSelectModel }).$el); Origin.editingOverlay.addView(new EditorComponentListView({ model: componentSelectModel }).$el); return; } if (route2 === 'component') { // Display editing a component var componentModel = new EditorComponentModel({_id: route3}); componentModel.fetch({ success: function() { var form = Origin.scaffold.buildForm({ model: componentModel }); var componentType = _.find(Origin.editor.data.componentTypes.models, function(componentTypeModel) { return componentTypeModel.get('_id') == componentModel.get('_componentType'); }); var componentDisplayName = (componentType) ? componentType.get('displayName').toLowerCase() : ''; Origin.trigger('location:title:update', {title: 'Editing ' + componentDisplayName + ' component - ' + componentModel.get('title')}); Origin.sidebar.addView(new EditorComponentEditSidebarView({model: componentModel, form:form}).$el); Origin.editingOverlay.addView(new EditorComponentEditView({model: componentModel, form:form}).$el); } }); return; } switch (route2) { case 'settings': var project = new ProjectModel({_id: route1}); project.fetch({ success: function() { var form = Origin.scaffold.buildForm({ model: project }); Origin.trigger('location:title:update', {title: 'Edit course'}); Origin.editingOverlay.addView(new ProjectDetailView({model: project, form: form}).$el); Origin.sidebar.addView(new ProjectDetailEditSidebarView({form: form}).$el); } }); break; case 'config': // route2 is the courseid // var collection = new EditorConfigCollection(); // collection.findWhere({_courseId: location}); var configModel = new EditorConfigModel({_courseId: route1}); configModel.fetch({ success: function() { var form = Origin.scaffold.buildForm({ model: configModel }); Origin.trigger('location:title:update', {title: 'Edit configuration'}); Origin.sidebar.addView(new EditorConfigEditSidebarView({form: form}).$el); Origin.editingOverlay.addView(new EditorConfigEditView({model: configModel, form: form}).$el); } }); break; case 'selecttheme': var configModel = new EditorConfigModel({_courseId: route1}); configModel.fetch({ success: function() { Origin.trigger('location:title:update', {title: 'Select theme'}); Origin.sidebar.addView(new EditorThemeCollectionSidebarView().$el); Origin.editingOverlay.addView(new EditorThemeCollectionView({model: configModel}).$el); } }); break; case 'extensions': Origin.trigger('location:title:update', {title: 'Manage extensions'}); var extensionsModel = new Backbone.Model({_id: route1}); // Setup back button breadcrumb // Check whether the user came from the page editor or menu editor var backButtonRoute = "/#/editor/" + route1 + "/menu"; var backButtonText = "Back to menu"; if (Origin.previousLocation.route2 === "page") { backButtonRoute = "/#/editor/" + route1 + "/page/" + Origin.previousLocation.route3; backButtonText = "Back to page"; } var optionsObject = { "backButtonText": backButtonText, "backButtonRoute": backButtonRoute }; Origin.sidebar.addView(new EditorExtensionsEditSidebarView().$el, optionsObject); Origin.editingOverlay.addView(new EditorExtensionsEditView({model: extensionsModel}).$el); break; case 'menusettings': var configModel = new EditorConfigModel({_courseId: route1}); configModel.fetch({ success: function() { Origin.trigger('location:title:update', {title: 'Select menu'}); Origin.sidebar.addView(new EditorMenuSettingsEditSidebarView().$el); Origin.editingOverlay.addView(new EditorMenuSettingsEditView({model: configModel}).$el); } }); break; case 'menu': // Edit the menu item if (route4 === "edit") { var contentObjectModel = new EditorContentObjectModel({_id: route3}); contentObjectModel.fetch({ success: function() { var form = Origin.scaffold.buildForm({ model: contentObjectModel }); Origin.trigger('location:title:update', {title: 'Editing menu - ' + contentObjectModel.get('title')}); Origin.sidebar.addView(new EditorPageEditSidebarView().$el); Origin.editingOverlay.addView(new EditorPageEditView({model: contentObjectModel, form: form}).$el); } }); } else { // If route3 is an id set it to the currentContentObjectId Origin.editor.currentContentObjectId = (route3) ? route3 : undefined; // Update page title Origin.trigger('location:title:update', {title: 'Menu editor'}); Origin.editor.scrollTo = 0; // Create Editor menu view Origin.router.createView(EditorView, { currentCourseId: route1, currentView: 'menu', currentPageId: (route3 || null) }); // update sidebar view Origin.sidebar.addView(new EditorMenuSidebarView().$el, { "backButtonText": "Back to courses", "backButtonRoute": Origin.dashboardRoute }); } break; case 'page': // Edit the page item if (route4 === "edit") { var contentObjectModel = new EditorContentObjectModel({_id: route3}); contentObjectModel.fetch({ success: function() { var form = Origin.scaffold.buildForm({ model: contentObjectModel }); Origin.trigger('location:title:update', {title: 'Editing page - ' + contentObjectModel.get('title')}); Origin.sidebar.addView(new EditorPageEditSidebarView().$el); Origin.editingOverlay.addView(new EditorPageEditView({model: contentObjectModel, form: form}).$el); } }); } else { // Update page title Origin.trigger('location:title:update', {title: 'Page editor'}); // Create Editor page view // Origin.editor.scrollTo = 0; Origin.router.createView(EditorView, { currentCourseId: route1, currentView: 'page', currentPageId: (route3 || null) }); // update sidebar view Origin.sidebar.addView(new EditorPageSidebarView().$el, { "backButtonText": "Back to course structure", "backButtonRoute": "/#/editor/" + route1 + "/menu" }); } break; } }