Files
edx-platform/cms/static/js/certificates/views/certificate_details.js

88 lines
3.2 KiB
JavaScript

// Backbone Application View: Certificate Details
define([
'jquery',
'underscore',
'underscore.string',
'gettext',
'js/views/baseview',
'js/certificates/models/signatory',
'js/certificates/views/signatory_details',
'common/js/components/utils/view_utils',
'jquery.smoothScroll',
'text!templates/certificate-details.underscore'
],
function($, _, str, gettext, BaseView, SignatoryModel, SignatoryDetailsView, ViewUtils, smoothScroll,
certificateDetailsTemplate) {
'use strict';
var CertificateDetailsView = BaseView.extend({
tagName: 'div',
events: {
'click .edit': 'editCertificate'
},
className: function() {
// Determine the CSS class names for this model instance
return [
'collection',
'certificates',
'certificate-details'
].join(' ');
},
initialize: function() {
// Set up the initial state of the attributes set for this model instance
this.showDetails = true;
this.listenTo(this.model, 'change', this.render);
},
editCertificate: function(event) {
// Flip the model into 'editing' mode
if (event && event.preventDefault) { event.preventDefault(); }
var self = this;
if (this.model.get('is_active') === true) {
ViewUtils.confirmThenRunOperation(
gettext('Edit this certificate?'),
gettext('This certificate has already been activated and is live. Are you sure you want to continue editing?'),
gettext('Yes, allow edits to the active Certificate'),
function() {
return self.model.set('editing', true);
}
);
} else {
this.model.set('editing', true);
}
},
render: function(showDetails) {
// Assemble the details view for this model
// Expand to show all model data, if requested
var attrs = $.extend({}, this.model.attributes, {
index: this.model.collection.indexOf(this.model),
showDetails: this.showDetails || showDetails || false
});
// xss-lint: disable=javascript-jquery-html
this.$el.html(_.template(certificateDetailsTemplate)(attrs));
if (this.showDetails || showDetails) {
var self = this;
this.model.get('signatories').each(function(modelSignatory) {
var signatory_detail_view = new SignatoryDetailsView({model: modelSignatory});
// xss-lint: disable=javascript-jquery-append
self.$('div.signatory-details-list').append($(signatory_detail_view.render().$el));
});
}
if (this.model.collection.length > 0 && window.certWebPreview) {
window.certWebPreview.show();
}
$.smoothScroll({
offset: 0,
easing: 'swing',
speed: 1000
});
return this;
}
});
return CertificateDetailsView;
});