/** * PagedXBlockContainerPage is a variant of XBlockContainerPage that supports Pagination. */ define(['jquery', 'underscore', 'gettext', 'js/views/pages/container', 'js/views/paged_container'], function($, _, gettext, XBlockContainerPage, PagedContainerView) { 'use strict'; var PagedXBlockContainerPage = XBlockContainerPage.extend({ events: _.extend({}, XBlockContainerPage.prototype.events, { 'click .toggle-preview-button': 'toggleChildrenPreviews' }), defaultViewClass: PagedContainerView, components_on_init: false, initialize: function(options) { this.page_size = options.page_size || 10; this.showChildrenPreviews = options.showChildrenPreviews || true; XBlockContainerPage.prototype.initialize.call(this, options); }, getViewParameters: function() { return _.extend(XBlockContainerPage.prototype.getViewParameters.call(this), { page_size: this.page_size, page: this }); }, refreshXBlock: function(element, block_added, is_duplicate) { var xblockElement = this.findXBlockElement(element), rootLocator = this.xblockView.model.id; if (xblockElement.length === 0 || xblockElement.data('locator') === rootLocator) { this.render({refresh: true, block_added: block_added}); } else { this.refreshChildXBlock(xblockElement, block_added, is_duplicate); } }, toggleChildrenPreviews: function(xblockElement) { xblockElement.preventDefault(); this.xblockView.togglePreviews(); }, updatePreviewButton: function(show_previews) { var text = (show_previews) ? gettext('Hide Previews') : gettext('Show Previews'), $button = $('.nav-actions .button-toggle-preview'); this.$('.preview-text', $button).text(text); this.$('.toggle-preview-button').removeClass('is-hidden'); } }); return PagedXBlockContainerPage; });