1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-06-28 07:57:50 +00:00
seahub/static/scripts/app/views/repo-shared-link.js
2016-04-12 15:53:51 +08:00

97 lines
2.8 KiB
JavaScript

define([
'jquery',
'underscore',
'backbone',
'common'
], function($, _, Backbone, Common) {
'use strict';
var View = Backbone.View.extend({
tagName: 'tr',
template: _.template($('#repo-shared-link-tmpl').html()),
events: {
'mouseenter': 'highlight',
'mouseleave': 'rmHighlight',
'click .rm-link': 'removeLink'
},
initialize: function(options) {
this.data = {};
$.extend(this.data, options);
},
render: function() {
var obj = {};
var path = this.model.get('path'),
_path = path,
formattedSize = ''; // no 'size' for dir item
$.extend(obj, this.model.attributes);
// no 'share_type' in upload link model
if (this.data.link_type == 'upload') {
$.extend(obj, {
'share_type': 'd' // 'd': dir
});
}
if (obj.share_type == 'd') {
// path is ended with '/'
_path = path.substring(0, path.length - 1);
} else {
formattedSize = Common.fileSizeFormat(this.model.get('size'), 1);
}
$.extend(obj, {
'repo_id': this.data.repo_id,
'formattedSize': formattedSize,
'encoded_path': Common.encodePath(_path)
});
this.$el.html(this.template(obj));
return this;
},
highlight: function() {
this.$el.addClass('hl').find('.op-icon').removeClass('vh');
},
rmHighlight: function() {
this.$el.removeClass('hl').find('.op-icon').addClass('vh');
},
removeLink: function() {
var url = Common.getUrl({
name: this.data.link_type == 'download' ? 'repo_shared_download_link' : 'repo_shared_upload_link',
repo_id: this.data.repo_id,
token: this.model.get('token')
});
var _this = this;
$.ajax({
url: url,
type: 'delete',
dataType: 'json',
beforeSend: Common.prepareCSRFToken,
success: function() {
_this.remove();
},
error: function(xhr) {
var err_msg;
if (xhr.responseText) {
err_msg = $.parseJSON(response.responseText).error_msg;
} else {
err_msg = gettext('Please check the network.');
}
_this.data.$error.html(err_msg).show();
}
});
return false;
}
});
return View;
});