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

[backbone] Show new file popup

This commit is contained in:
lian
2015-01-30 19:47:17 +08:00
committed by Daniel Pan
parent bd98ae8330
commit f856507077
3 changed files with 114 additions and 48 deletions

View File

@@ -16,6 +16,8 @@ define([
el: $('#dir-view'), el: $('#dir-view'),
path_bar_template: _.template(PathBarTemplate), path_bar_template: _.template(PathBarTemplate),
dir_op_bar_template: _.template(DirOpBarTemplate), dir_op_bar_template: _.template(DirOpBarTemplate),
newDirTemplate: _.template($("#add-new-dir-form-template").html()),
newFileTemplate: _.template($("#add-new-file-form-template").html()),
initialize: function(options) { initialize: function(options) {
this.$dirent_list = this.$('.repo-file-list tbody'); this.$dirent_list = this.$('.repo-file-list tbody');
@@ -57,29 +59,29 @@ define([
}, },
renderPath: function() { renderPath: function() {
var dir = this.dir; var dir = this.dir,
var path = dir.path, path = dir.path,
obj = { obj = {path: path, repo_name: dir.repo_name};
path: path,
repo_name: dir.repo_name,
};
if (path != '/') { if (path != '/') {
$.extend(obj, { $.extend(obj, {
path_list: path.substr(1).split('/'), path_list: path.substr(1).split('/'),
repo_id: dir.repo_id, repo_id: dir.repo_id
}); });
} }
this.$path_bar.html(this.path_bar_template(obj)); this.$path_bar.html(this.path_bar_template(obj));
}, },
renderDirOpBar: function() { renderDirOpBar: function() {
var dir = this.dir; var dir = this.dir,
var user_perm = dir.user_perm; user_perm = dir.user_perm;
this.$dir_op_bar.html($.trim(this.dir_op_bar_template({ this.$dir_op_bar.html($.trim(this.dir_op_bar_template({
user_perm: user_perm, user_perm: user_perm,
encrypted: dir.encrypted, encrypted: dir.encrypted,
path: dir.path, path: dir.path,
repo_id: dir.repo_id, repo_id: dir.repo_id
}))); })));
}, },
@@ -99,47 +101,95 @@ define([
}, },
newDir: function() { newDir: function() {
var form = $('#add-new-dir-form'), var form = $(this.newDirTemplate()),
form_id = form.attr('id'); form_id = form.attr('id'),
form.modal({appendTo:'#main'}); dir = this.dir,
$('#simplemodal-container').css({'height':'auto'}); dirView = this;
var dir = this.dir;
var dirView = this; form.modal({appendTo:'#main'});
form.submit(function() { $('#simplemodal-container').css({'height':'auto'});
var dirent_name = $.trim($('input[name="name"]', form).val());
if (!dirent_name) { form.submit(function() {
//apply_form_error(form_id, "{% trans "It is required." %}"); var dirent_name = $.trim($('input[name="name"]', form).val()),
//apply_form_error(form_id, "It is required."); post_data = {'dirent_name': dirent_name},
return false; post_url = Common.getUrl({name: "new_dir", repo_id: dir.repo_id})
} + '?parent_dir=' + encodeURIComponent(dir.path);
var post_data = {'dirent_name': dirent_name};
var post_url = Common.getUrl({name: "new_dir", repo_id: dir.repo_id}) if (!dirent_name) {
+ '?parent_dir=' + encodeURIComponent(dir.path); Common.showFormError(form_id, gettext("It is required."));
var after_op_success = function(data) { return false;
$.modal.close(); };
var now = new Date().getTime()/1000;
var new_dirent = dir.add({ var after_op_success = function(data) {
'is_dir': true, $.modal.close();
'obj_name': data['name'],
'last_modified': now, var new_dirent = dir.add({
//'last_update': "{% trans "Just now" %}", 'is_dir': true,
'last_update': "Just now", 'obj_name': data['name'],
'p_dpath': data['p_dpath'], 'last_modified': new Date().getTime() / 1000,
}, {silent:true}); 'last_update': gettext("Just now"),
var view = new DirentView({model: new_dirent, dirView: dirView}); 'p_dpath': data['p_dpath']
$('tr:first', dirView.$dirent_list).before(view.render().el); // put the new dir as the first one }, {silent:true});
};
Common.ajaxPost({ var view = new DirentView({model: new_dirent, dirView: dirView});
'form': form, $('tr:first', dirView.$dirent_list).before(view.render().el); // put the new dir as the first one
'post_url': post_url, };
'post_data': post_data,
'after_op_success': after_op_success, Common.ajaxPost({
'form_id': form_id 'form': form,
'post_url': post_url,
'post_data': post_data,
'after_op_success': after_op_success,
'form_id': form_id
});
return false;
}); });
return false;
});
}, },
newFile: function() {
var form = $(this.newFileTemplate()),
form_id = form.attr('id'),
file_name = form.find('input[name="name"]'),
dir = this.dir,
dirView = this;
form.modal({appendTo:'#main'});
$('#simplemodal-container').css({'height':'auto'});
form.find('.set-file-type').on('click', function() {
file_name.val('.' + $(this).data('filetype'));
Common.setCaretPos(file_name[0], 0);
file_name.focus();
});
form.submit(function() {
var dirent_name = $.trim(file_name.val()),
post_data = {'dirent_name': dirent_name},
post_url = Common.getUrl({name: "new_file", repo_id: dir.repo_id})
+ '?parent_dir=' + encodeURIComponent(dir.path);
if (!dirent_name) {
Common.showFormError(form_id, gettext("It is required."));
return false;
};
var after_op_success = function(data) {
location.href = Common.getUrl({name: "repo_new_file", repo_id: dir.repo_id})
+ '?p=' + encodeURIComponent(dir.path) + encodeURIComponent(data['name']);
};
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 DirView; return DirView;

View File

@@ -53,6 +53,7 @@ define([
case 'cp_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/cp/'; case 'cp_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/cp/';
case 'new_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/new/'; case 'new_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/new/';
case 'new_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/new/'; case 'new_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/new/';
case 'repo_new_file': return siteRoot + 'repo/' + options.repo_id + '/files/';
case 'del_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/delete/'; case 'del_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/delete/';
case 'mv_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/move/'; case 'mv_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/move/';
case 'cp_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/copy/'; case 'cp_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/copy/';
@@ -118,6 +119,17 @@ define([
btn.attr('disabled', 'disabled').addClass('btn-disabled'); btn.attr('disabled', 'disabled').addClass('btn-disabled');
}, },
setCaretPos: function(inputor, pos) {
var range;
if (document.selection) {
range = inputor.createTextRange();
range.move("character", pos);
return range.select();
} else {
return inputor.setSelectionRange(pos, pos);
}
},
prepareCSRFToken: function(xhr, settings) { prepareCSRFToken: function(xhr, settings) {
function getCookie(name) { function getCookie(name) {
var cookieValue = null; var cookieValue = null;

View File

@@ -1,5 +1,6 @@
{% load i18n %} {% load i18n %}
<script type="text/template" id="add-new-dir-form-template">
<form id="add-new-dir-form" action="" method="post" class="hide">{% csrf_token %} <form id="add-new-dir-form" action="" method="post" class="hide">{% csrf_token %}
<h3>{% trans "New Directory" %}</h3> <h3>{% trans "New Directory" %}</h3>
<label>{% trans "Directory Name" %}</label><br /> <label>{% trans "Directory Name" %}</label><br />
@@ -8,7 +9,9 @@
<button type="submit" class="submit">{% trans "Submit" %}</button> <button type="submit" class="submit">{% trans "Submit" %}</button>
<button class="simplemodal-close">{% trans "Cancel" %}</button> <button class="simplemodal-close">{% trans "Cancel" %}</button>
</form> </form>
</script>
<script type="text/template" id="add-new-file-form-template">
<form id="add-new-file-form" action="" method="post" class="hide">{% csrf_token %} <form id="add-new-file-form" action="" method="post" class="hide">{% csrf_token %}
<h3>{% trans "New File" %}</h3> <h3>{% trans "New File" %}</h3>
<div id="featured-filetype"> <div id="featured-filetype">
@@ -32,6 +35,7 @@
<button type="submit" class="submit">{% trans "Submit" %}</button> <button type="submit" class="submit">{% trans "Submit" %}</button>
<button class="simplemodal-close">{% trans "Cancel" %}</button> <button class="simplemodal-close">{% trans "Cancel" %}</button>
</form> </form>
</script>
<script type="text/template" id="rename-form-template"> <script type="text/template" id="rename-form-template">
<form id="rename-form" action="" method="post" class="hide">{% csrf_token %} <form id="rename-form" action="" method="post" class="hide">{% csrf_token %}