1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-24 04:48:03 +00:00

[backbone] Implement delete, rename and add file-tree, partially implemented mvcp

This commit is contained in:
Daniel Pan
2015-01-26 20:54:39 +08:00
parent 9fbd7d7cce
commit fb76295140
6 changed files with 509 additions and 9 deletions

View File

@@ -3,11 +3,12 @@ define([
'underscore',
'backbone',
'common',
'file-tree',
'app/collections/dirents',
'app/views/dirents',
'text!' + app.config._tmplRoot + 'dir-op-bar.html',
'text!' + app.config._tmplRoot + 'path-bar.html',
], function($, _, Backbone, Common, DirentCollection, DirentView,
], function($, _, Backbone, Common, FileTree, DirentCollection, DirentView,
DirOpBarTemplate, PathBarTemplate) {
'use strict';
@@ -130,7 +131,6 @@ define([
var view = new DirentView({model: new_dirent, dirView: dirView});
$('tr:first', dirView.$dirent_list).before(view.render().el); // put the new dir as the first one
};
console.log("ajaxPost");
Common.ajaxPost({
'form': form,
'post_url': post_url,

View File

@@ -3,8 +3,9 @@ define([
'underscore',
'backbone',
'common',
'file-tree',
'text!' + app.config._tmplRoot + 'dirent.html'
], function($, _, Backbone, Common, direntsTemplate) {
], function($, _, Backbone, Common, FileTree, direntsTemplate) {
'use strict';
app = app || {};
@@ -14,6 +15,7 @@ define([
tagName: 'tr',
template: _.template(direntsTemplate),
renameTemplate: _.template($("#rename-form-template").html()),
initialize: function(options) {
this.options = options || {};
@@ -32,7 +34,7 @@ define([
this.$el.html(this.template({
dirent: this.model.attributes,
repo_id: this.dirView.dir.repo_id,
path: this.dirView.dir.path,
// dir_path: this.dirView.dir.path,
dirent_path: dirent_path,
user_perm: this.dirView.dir.user_perm,
repo_encrypted: this.dirView.dir.encrypted
@@ -147,6 +149,134 @@ define([
}
},
delete: function() {
var dirent_name = this.model.get('obj_name');
var options = {repo_id: this.dirView.dir.repo_id};
options.name = this.model.get('is_dir') ? 'del_dir' : 'del_file';
var url_main = Common.getUrl(options);
var el = this.$el;
$.ajax({
url: url_main + '?parent_dir=' + encodeURIComponent(this.dirView.dir.path)
+ '&name=' + encodeURIComponent(dirent_name),
dataType: 'json',
success: function(data) {
el.remove();
app.globalState.noFileOpPopup = true;// make other items can work normally when hover
var msg = gettext("Successfully deleted %(name)s");
msg = msg.replace('%(name)s', dirent_name);
Common.feedback(msg, 'success');
},
error: Common.ajaxErrorHandler
});
return false;
},
rename: function() {
var is_dir = this.model.get('is_dir');
//var hd_text = is_dir ? "{% trans "Rename Directory" %}" : "{% trans "Rename File" %}";
var title = is_dir ? gettext("Rename Directory") : gettext("Rename File");
//var op_detail = $('.detail', form);
//op_detail.html(op_detail.html().replace('%(name)s', '<span class="op-target">' + dirent_name + '</span>'));
var dirent_name = this.model.get('obj_name');
var form = $(this.renameTemplate({
form_title: title,
dirent_name: dirent_name,
}));
form.modal();
var form_id = form.attr('id');
$('#simplemodal-container').css({'width':'auto', 'height':'auto'});
var _this = this;
var dir = this.dirView.dir;
form.submit(function() {
var new_name = $.trim($('[name="newname"]', form).val());
if (!new_name) {
Common.showFormError(form_id, gettext("It is required."));
return false;
}
if (new_name == dirent_name) {
Common.showFormError(form_id, gettext("You have not renamed it."));
return false;
}
var post_data = {'oldname': dirent_name, 'newname':new_name};
var options = { repo_id: dir.repo_id };
options.name = is_dir ? 'rename_dir' : 'rename_file';
var post_url = Common.getUrl(options) + '?parent_dir=' + encodeURIComponent(dir.path);
var after_op_success = function (data) {
new_name = data['newname'];
var now = new Date().getTime()/1000;
$.modal.close();
_this.model.set({ // it will trigger 'change' event
'obj_name': new_name,
'last_modified': now,
//'last_update': "{% trans "Just now" %}",
'last_update': "Just now",
'sharelink': '',
'sharetoken': ''
});
if (is_dir) {
} else {
_this.model.set({
'starred': false
});
}
};
Common.ajaxPost({
'form': form,
'post_url': post_url,
'post_data': post_data,
'after_op_success': after_op_success,
'form_id': form_id
});
return false;
});
return false;
},
mvcp: function() {
var el = event.target || event.srcElement,
op_type = $(el).hasClass('mv') ? 'mv':'cp',
op_detail,
dirent = this.$el,
obj_name = this.model.get('obj_name'),
obj_type = this.model.get('is_dir') ? 'dir':'file',
form = $('#mv-form'), form_hd;
form.modal({appendTo:'#main', autoResize:true, focus:false});
$('#simplemodal-container').css({'width':'auto', 'height':'auto'});
if (!this.dirView.dir.encrypted) {
$('#other-repos').show();
}
if (op_type == 'mv') {
//form_hd = obj_type == 'dir'? "{% trans "Move Directory" %}":"{% trans "Move File" %}";
form_hd = obj_type == 'dir'? "Move Directory" : "Move File";
} else {
//form_hd = obj_type == 'dir'? "{% trans "Copy Directory" %}":"{% trans "Copy File" %}";
form_hd = obj_type == 'dir'? "Copy Directory" : "Copy File";
}
//op_detail = op_type == 'mv' ? "{% trans "Move %(name)s to:" %}" : "{% trans "Copy %(name)s to:" %}";
op_detail = op_type == 'mv' ? "Move %(name)s to:" : "Copy %(name)s to:";
op_detail = op_detail.replace('%(name)s', '<span class="op-target">' + obj_name + '</span>');
form.prepend('<h3>' + form_hd + '</h3><h4>' + op_detail + '</h4>');
$('input[name="op"]', form).val(op_type);
$('input[name="obj_type"]', form).val(obj_type);
$('input[name="obj_name"]', form).val(obj_name);
form.data('op_obj', dirent);
FileTree.render_jstree_for_cur_path({
repo_name: this.dirView.dir.repo_name,
repo_id: this.dirView.dir.repo_id,
path: this.dirView.dir.path,
});
return false;
},
});
return DirentView;