Files
edx-platform/lms/static/js/certificates/views/certificate_invalidation_view.js
Syed Ali Abbas Zaidi 8480dbc228 chore: apply amnesty on existing not fixable issues (#32215)
* fix: eslint operator-linebreak issue

* fix: eslint quotes issue

* fix: react jsx indent and props issues

* fix: eslint trailing spaces issues

* fix: eslint line around directives issue

* fix: eslint semi rule

* fix: eslint newline per chain rule

* fix: eslint space infix ops rule

* fix: eslint space-in-parens issue

* fix: eslint space before function paren issue

* fix: eslint space before blocks issue

* fix: eslint arrow body style issue

* fix: eslint dot-location issue

* fix: eslint quotes issue

* fix: eslint quote props issue

* fix: eslint operator assignment issue

* fix: eslint new line after import issue

* fix: indent issues

* fix: operator assignment issue

* fix: all autofixable eslint issues

* fix: all react related fixable issues

* fix: autofixable eslint issues

* chore: remove all template literals

* fix: remaining autofixable issues

* chore: apply amnesty on all existing issues

* fix: failing xss-lint issues

* refactor: apply amnesty on remaining issues

* refactor: apply amnesty on new issues

* fix: remove file level suppressions

* refactor: apply amnesty on new issues
2023-08-07 19:13:19 +05:00

126 lines
5.8 KiB
JavaScript

// Backbone Application View: CertificateInvalidationView
/* global define, RequireJS */
(function(define) {
'use strict';
define(
['jquery', 'underscore', 'gettext', 'backbone', 'js/certificates/models/certificate_invalidation'],
function($, _, gettext, Backbone, CertificateInvalidationModel) {
return Backbone.View.extend({
el: '#certificate-invalidation',
messages: 'div.message',
events: {
'click #invalidate-certificate': 'invalidateCertificate',
'click .re-validate-certificate': 'reValidateCertificate'
},
initialize: function() {
this.listenTo(this.collection, 'change add remove', this.render);
},
render: function() {
var template = this.loadTemplate('certificate-invalidation');
this.$el.html(template({certificate_invalidations: this.collection.models}));
},
loadTemplate: function(name) {
var templateSelector = '#' + name + '-tpl',
templateText = $(templateSelector).text();
return _.template(templateText);
},
invalidateCertificate: function() {
var user = this.$('#certificate-invalidation-user').val();
var notes = this.$('#certificate-invalidation-notes').val();
var message = '';
var certificate_invalidation = new CertificateInvalidationModel(
{
user: user,
notes: notes
},
{
url: this.collection.url
}
);
if (this.collection.findWhere({user: user})) {
message = gettext('Certificate of <%= user %> has already been invalidated. Please check your spelling and retry.'); // eslint-disable-line max-len
this.escapeAndShowMessage(_.template(message)({user: user}));
} else if (certificate_invalidation.isValid()) {
var self = this;
certificate_invalidation.save(null, {
wait: true,
success: function(model) {
self.collection.add(model);
message = gettext('Certificate has been successfully invalidated for <%= user %>.');
self.escapeAndShowMessage(_.template(message)({user: user}));
},
error: function(model, response) {
try {
var response_data = JSON.parse(response.responseText);
self.escapeAndShowMessage(response_data.message);
} catch (exception) {
self.escapeAndShowMessage(
gettext('Server Error, Please refresh the page and try again.')
);
}
}
});
} else {
this.escapeAndShowMessage(certificate_invalidation.validationError);
}
},
reValidateCertificate: function(event) {
var certificate_invalidation = $(event.target).data();
var model = this.collection.get(certificate_invalidation),
self = this;
if (model) {
model.destroy({
success: function() {
self.escapeAndShowMessage(
gettext('The certificate for this learner has been re-validated and the system is re-running the grade for this learner.') // eslint-disable-line max-len
);
},
// eslint-disable-next-line no-shadow
error: function(model, response) {
try {
var response_data = JSON.parse(response.responseText);
self.escapeAndShowMessage(response_data.message);
} catch (exception) {
self.escapeAndShowMessage(
gettext('Server Error, Please refresh the page and try again.')
);
}
},
wait: true,
data: JSON.stringify(model.attributes)
});
} else {
self.escapeAndShowMessage(
gettext('Could not find Certificate Invalidation in the list. Please refresh the page and try again') // eslint-disable-line max-len
);
}
},
isEmailAddress: function validateEmail(email) {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
return re.test(email);
},
escapeAndShowMessage: function(message) {
$(this.messages + '>p').remove();
this.$(this.messages).removeClass('hidden').append('<p>' + _.escape(message) + '</p>');
}
});
}
);
}).call(this, define || RequireJS.define);