1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-17 15:53:28 +00:00

Update dirent del function

This commit is contained in:
Daniel Pan
2016-02-24 17:11:15 +08:00
parent f49547bbfe
commit e5766ec06e
4 changed files with 56 additions and 17 deletions

View File

@@ -1,8 +1,9 @@
define([ define([
'jquery',
'underscore', 'underscore',
'backbone', 'backbone',
'common' 'common'
], function(_, Backbone, Common) { ], function($, _, Backbone, Common) {
'use strict'; 'use strict';
var Dirent = Backbone.Model.extend({ var Dirent = Backbone.Model.extend({
@@ -41,6 +42,37 @@ define([
return app.config.siteRoot + "lib/" + dir.repo_id return app.config.siteRoot + "lib/" + dir.repo_id
+ "/file" + Common.encodePath(dirent_path) + "?dl=1"; + "/file" + Common.encodePath(dirent_path) + "?dl=1";
} }
},
// We can't use Backbone.sync() here because the URL for a dirent
// is not a standard RESTful one
deleteFromServer: function(options) {
var dir = this.collection;
var path = this.getPath();
var model = this;
var opts = {
repo_id: dir.repo_id,
name: this.get('is_dir') ? 'del_dir' : 'del_file'
};
$.ajax({
url: Common.getUrl(opts) + '?p=' + encodeURIComponent(path),
type: 'DELETE',
dataType: 'json',
beforeSend: Common.prepareCSRFToken,
success: function(data) {
// We don't understand how the event actually work in Backbone
// It is safer to call dir.remove() directly.
dir.remove(model);
// this.trigger('destroy');
if (options.success)
options.success(data);
},
error: function(xhr) {
if (options.error)
options.error(xhr);
}
});
} }
}); });

View File

@@ -133,8 +133,27 @@ define([
}); });
// TODO: bind operations here // TODO: bind operations here
this.$('.grid-item-op .delete').on('click', { view: this }, this.del);
return false; return false;
},
del: function(event) {
var _this = event.data.view;
var dirent_name = _this.model.get('obj_name');
_this.model.deleteFromServer({
success: function(data) {
var msg = gettext("Successfully deleted %(name)s")
.replace('%(name)s', Common.HTMLescape(dirent_name));
Common.feedback(msg, 'success');
},
error: function(xhr) {
Common.ajaxErrorHandler(xhr);
} }
});
return false;
},
}); });

View File

@@ -183,20 +183,8 @@ define([
del: function() { del: function() {
var dirent_name = this.model.get('obj_name'); var dirent_name = this.model.get('obj_name');
var dir = this.dir; this.model.deleteFromServer({
var options = {
repo_id: dir.repo_id,
name: this.model.get('is_dir') ? 'del_dir' : 'del_file'
};
var model = this.model;
$.ajax({
url: Common.getUrl(options) + '?parent_dir=' + encodeURIComponent(dir.path)
+ '&name=' + encodeURIComponent(dirent_name),
type: 'POST',
dataType: 'json',
beforeSend: Common.prepareCSRFToken,
success: function(data) { success: function(data) {
dir.remove(model);
var msg = gettext("Successfully deleted %(name)s") var msg = gettext("Successfully deleted %(name)s")
.replace('%(name)s', Common.HTMLescape(dirent_name)); .replace('%(name)s', Common.HTMLescape(dirent_name));
Common.feedback(msg, 'success'); Common.feedback(msg, 'success');

View File

@@ -68,8 +68,8 @@ define([
case 'list_lib_dir': return siteRoot + 'ajax/lib/' + options.repo_id + '/dir/'; case 'list_lib_dir': return siteRoot + 'ajax/lib/' + options.repo_id + '/dir/';
case 'star_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/star/'; case 'star_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/star/';
case 'unstar_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/unstar/'; case 'unstar_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/unstar/';
case 'del_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/delete/'; case 'del_dir': return siteRoot + 'api2/repos/' + options.repo_id + '/dir/';
case 'del_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/delete/'; case 'del_file': return siteRoot + 'api2/repos/' + options.repo_id + '/file/';
case 'rename_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/rename/'; case 'rename_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/rename/';
case 'rename_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/rename/'; case 'rename_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/rename/';
case 'mv_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/mv/'; case 'mv_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/mv/';