diff --git a/media/scripts/app/views/dir.js b/media/scripts/app/views/dir.js
index d2380b6a3c..2169caf96a 100644
--- a/media/scripts/app/views/dir.js
+++ b/media/scripts/app/views/dir.js
@@ -82,9 +82,10 @@ define([
showDir: function(category, repo_id, path) {
this.$el.show();
this.$dirent_list.empty();
- var loading_tip = this.$('.loading-tip').show(),
- dir = this.dir;
+ var loading_tip = this.$('.loading-tip').show();
+ var dir = this.dir;
dir.setPath(category, repo_id, path);
+ var _this = this;
dir.fetch({
reset: true,
data: {'p': path},
@@ -95,8 +96,46 @@ define([
loading_tip.hide();
}
},
- error: function () { // todo
+ error: function (collection, response, opts) {
loading_tip.hide();
+ var $el_con = _this.$('.repo-file-list-topbar, .repo-file-list').hide();
+ var $error = _this.$('.error');
+ var err_msg;
+ if (response.responseText) {
+ err_msg = response.responseJSON.error;
+ } else {
+ err_msg = gettext('Please check the network.');
+ }
+ $error.html(err_msg).show();
+
+ if (response.responseJSON.lib_need_decrypt) {
+ var form = $($('#repo-decrypt-form-template').html());
+ _this.$el.append(form);
+ form.submit(function() {
+ var passwd = $.trim($('[name="password"]', form).val());
+ if (!passwd) {
+ $('.error', form).html(gettext("Password is required.")).removeClass('hide');
+ return false;
+ }
+ Common.ajaxPost({
+ form: form,
+ form_id: form.attr('id'),
+ post_url: Common.getUrl({'name':'repo_set_password'}),
+ post_data: {
+ repo_id: repo_id,
+ password: passwd,
+ username: app.pageOptions.username
+ },
+ after_op_success: function() {
+ form.remove();
+ $error.html('').hide();
+ $el_con.show();
+ _this.showDir(category, repo_id, path);
+ }
+ });
+ return false;
+ });
+ }
}
});
},
diff --git a/media/scripts/app/views/dirent.js b/media/scripts/app/views/dirent.js
index e962442ce8..829e42f168 100644
--- a/media/scripts/app/views/dirent.js
+++ b/media/scripts/app/views/dirent.js
@@ -16,7 +16,6 @@ define([
tagName: 'tr',
template: _.template(direntTemplate),
- shareTemplate: _.template($("#share-popup-template").html()),
renameTemplate: _.template($("#rename-form-template").html()),
mvcpTemplate: _.template($("#mvcp-form-template").html()),
mvProgressTemplate: _.template($("#mv-progress-popup-template").html()),
diff --git a/media/scripts/common.js b/media/scripts/common.js
index f76a068f02..5fdd4fc1f0 100644
--- a/media/scripts/common.js
+++ b/media/scripts/common.js
@@ -99,6 +99,8 @@ define([
case 'set_notices_seen': return siteRoot + 'ajax/set_notices_seen/';
case 'get_unseen_notices_num': return siteRoot + 'ajax/unseen-notices-count/';
case 'set_notice_seen_by_id': return siteRoot + 'ajax/set_notice_seen_by_id/';
+
+ case 'repo_set_password': return siteRoot + 'repo/set_password/';
}
},
diff --git a/seahub/templates/js/dir-view.html b/seahub/templates/js/dir-view.html
index feb971cc19..8b8e68edde 100644
--- a/seahub/templates/js/dir-view.html
+++ b/seahub/templates/js/dir-view.html
@@ -1,26 +1,26 @@
{% load i18n %}
-
-
-

+
+
+

+
-
diff --git a/seahub/templates/js/lib-op-popups.html b/seahub/templates/js/lib-op-popups.html
index 067cad69d6..ffacf55717 100644
--- a/seahub/templates/js/lib-op-popups.html
+++ b/seahub/templates/js/lib-op-popups.html
@@ -103,28 +103,12 @@
-
-
{% trans "Update %(file_name)s" %}
-
-
-
diff --git a/seahub/templates/myhome.html b/seahub/templates/myhome.html
index d05d9aadb0..28f5a7f22c 100644
--- a/seahub/templates/myhome.html
+++ b/seahub/templates/myhome.html
@@ -203,6 +203,7 @@ app["pageOptions"] = {
{% endfor %}
return groups;
})(),
+ username: "{{request.user.username}}",
repo_password_min_length: {{ repo_password_min_length }},
enable_upload_folder: {% if enable_upload_folder %} true {% else %} false {% endif %},
max_upload_file_size: {% if max_upload_file_size %} {{ max_upload_file_size }} {% else %} '' {% endif %},
diff --git a/seahub/views/ajax.py b/seahub/views/ajax.py
index 3fad725897..bee03f3d56 100644
--- a/seahub/views/ajax.py
+++ b/seahub/views/ajax.py
@@ -424,7 +424,7 @@ def list_lib_dir(request, repo_id):
if repo.encrypted \
and not seafile_api.is_password_set(repo.id, username):
err_msg = _(u'Library is encrypted.')
- return HttpResponse(json.dumps({'error': err_msg}),
+ return HttpResponse(json.dumps({'error': err_msg, 'lib_need_decrypt': True}),
status=403, content_type=content_type)
head_commit = get_commit(repo.id, repo.version, repo.head_cmmt_id)