Files
edx-platform/cms/static/js/views/asset.js
Syed Ali Abbas Zaidi f1fb38ed83 fix: multi lines and spaces issues (#31885)
* fix: multi lines and spaces issues

* fix: eslint operator-linebreak issue

* fix: eslint quotes issue

* fix: remaining quotes issues

* fix: eslint object curly newline issue

* fix: eslint object curly spacing issue

* fix: eslint brace-style issues

* fix: react jsx indent and props issues

* fix: eslint trailing spaces issues

* fix: eslint linbreak style issue

* fix: eslint space unary operator issue

* fix: eslint line around directives issue

* fix: void and typeof space unary ops issue
2023-05-03 12:22:46 +05:00

98 lines
4.0 KiB
JavaScript

define(['js/views/baseview', 'underscore', 'gettext', 'common/js/components/views/feedback_prompt',
'common/js/components/views/feedback_notification', 'edx-ui-toolkit/js/utils/html-utils'],
function(BaseView, _, gettext, PromptView, NotificationView, HtmlUtils) {
'use strict';
var AssetView = BaseView.extend({
initialize: function() {
this.template = this.loadTemplate('asset');
this.listenTo(this.model, 'change:locked', this.updateLockState);
},
tagName: 'tr',
events: {
'click .remove-asset-button': 'confirmDelete',
'click .lock-checkbox': 'lockAsset'
},
render: function() {
var uniqueId = _.uniqueId('lock_asset_');
var attributes = {
display_name: this.model.get('display_name'),
thumbnail: this.model.get('thumbnail'),
date_added: this.model.get('date_added'),
url: this.model.get('url'),
external_url: this.model.get('external_url'),
portable_url: this.model.get('portable_url'),
static_full_url: this.model.get('static_full_url'),
asset_type: this.model.get_extension(),
uniqueId: uniqueId
};
this.$el.html(HtmlUtils.HTML(this.template(attributes)).toString());
this.updateLockState();
return this;
},
updateLockState: function() {
var lockedClass = 'is-locked';
// Add a class of "locked" to the tr element if appropriate,
// and toggle locked state of hidden checkbox.
if (this.model.get('locked')) {
this.$el.addClass(lockedClass);
this.$el.find('.lock-checkbox').attr('checked', 'checked');
} else {
this.$el.removeClass(lockedClass);
this.$el.find('.lock-checkbox').removeAttr('checked');
}
},
confirmDelete: function(e) {
var asset = this.model;
if (e && e.preventDefault) { e.preventDefault(); }
new PromptView.Warning({
title: gettext('Delete File Confirmation'),
message: gettext('Are you sure you wish to delete this item. It cannot be reversed!\n\nAlso any content that links/refers to this item will no longer work (e.g. broken images and/or links)'), // eslint-disable-line max-len
actions: {
primary: {
text: gettext('Delete'),
click: function(view) {
view.hide();
asset.destroy({
wait: true, // Don't remove the asset from the collection until successful.
success: function() {
new NotificationView.Confirmation({
title: gettext('Your file has been deleted.'),
closeIcon: false,
maxShown: 2000
}).show();
}
});
}
},
secondary: {
text: gettext('Cancel'),
click: function(view) {
view.hide();
}
}
}
}).show();
},
lockAsset: function() {
var asset = this.model;
var saving = new NotificationView.Mini({
title: gettext('Saving')
}).show();
asset.save({locked: !asset.get('locked')}, {
wait: true, // This means we won't re-render until we get back the success state.
success: function() {
saving.hide();
}
});
}
});
return AssetView;
}); // end define()