54 lines
2.2 KiB
JavaScript
54 lines
2.2 KiB
JavaScript
/**
|
|
* 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;
|
|
});
|