diff --git a/seahub/templates/js/templates.html b/seahub/templates/js/templates.html
index e3293114ed..d278b3af3f 100644
--- a/seahub/templates/js/templates.html
+++ b/seahub/templates/js/templates.html
@@ -898,7 +898,7 @@
<% if (user_perm == 'rw' && !repo_encrypted && can_generate_upload_link) { %>
<% } else { %>
@@ -1039,7 +1039,9 @@
|
@@ -1086,16 +1088,12 @@
<%- name %> |
- <% if (is_admin) { %>
+ <% if (app.pageOptions.is_pro && is_admin) { %>
+ <% } %>
|
- <% } else { %>
-
-
- |
- <% } %>
<%= size_formatted %> |
<%= mtime_relative %> |
<%- owner_nickname %> |
@@ -1297,32 +1295,42 @@
- <% if (is_admin) { %>
- {% trans "Admin" %}
- <% } else { %>
- <% if (permission == 'rw') { %>
- {% trans "Read-Write" %}
+ <% if (show_admin && is_admin) { %>
+ {% trans "Admin" %}
<% } else { %>
- {% trans "Read-Only" %}
+ <% if (permission == 'rw') { %>
+ {% trans "Read-Write" %}
+ <% } else { %>
+ {% trans "Read-Only" %}
+ <% } %>
<% } %>
- <% } %>
diff --git a/seahub/views/ajax.py b/seahub/views/ajax.py
index 5ca7126431..32c964a3df 100644
--- a/seahub/views/ajax.py
+++ b/seahub/views/ajax.py
@@ -30,7 +30,7 @@ from seahub.forms import RepoRenameDirentForm
from seahub.options.models import UserOptions, CryptoOptionNotSetError
from seahub.notifications.models import UserNotification
from seahub.notifications.views import add_notice_from_info
-from seahub.share.models import UploadLinkShare
+from seahub.share.models import UploadLinkShare, ExtraSharePermission
from seahub.signals import upload_file_successful
from seahub.views import get_unencry_rw_repos_by_user, \
get_diff, check_folder_permission
@@ -50,6 +50,7 @@ from seahub.thumbnail.utils import get_thumbnail_src
from seahub.utils.file_types import IMAGE, VIDEO
from seahub.base.templatetags.seahub_tags import translate_seahub_time, \
email2nickname, tsstr_sec
+from seahub.constants import PERMISSION_ADMIN
# Get an instance of a logger
logger = logging.getLogger(__name__)
@@ -309,6 +310,9 @@ def list_lib_dir(request, repo_id):
except Exception as e:
logger.error(e)
+ # for shared repo
+ result["is_admin"] = ExtraSharePermission.objects.get_user_permission(repo_id, username) == PERMISSION_ADMIN
+
result["is_virtual"] = repo.is_virtual
result["repo_name"] = repo.name
result["user_perm"] = user_perm
diff --git a/static/scripts/app/collections/dirents.js b/static/scripts/app/collections/dirents.js
index 369db8b049..0b356b97b3 100644
--- a/static/scripts/app/collections/dirents.js
+++ b/static/scripts/app/collections/dirents.js
@@ -27,6 +27,7 @@ define([
this.has_been_shared_out = data.has_been_shared_out;
this.dirent_more = data.dirent_more;
this.more_start = data.more_start;
+ this.is_admin = data.is_admin;
return data.dirent_list; // return the array
},
diff --git a/static/scripts/app/models/repo.js b/static/scripts/app/models/repo.js
index 51e06ef446..3922fc6715 100644
--- a/static/scripts/app/models/repo.js
+++ b/static/scripts/app/models/repo.js
@@ -16,8 +16,7 @@ define([
encrypted: false,
owner: "-",
owner_nickname: "-",
- permission: "rw",
- is_admin: false
+ permission: "rw"
},
parse: function(response) {
diff --git a/static/scripts/app/views/dir.js b/static/scripts/app/views/dir.js
index 7425840b6e..02fe0af31c 100644
--- a/static/scripts/app/views/dir.js
+++ b/static/scripts/app/views/dir.js
@@ -824,6 +824,9 @@ define([
'dirent_path': path,
'obj_name': path == '/' ? dir.repo_name : path.substr(path.lastIndexOf('/') + 1)
};
+ if (app.pageOptions.is_pro) {
+ options.is_admin = dir.is_admin;
+ }
new ShareView(options);
},
diff --git a/static/scripts/app/views/dirent-grid.js b/static/scripts/app/views/dirent-grid.js
index 436b97960b..5e77dc069a 100644
--- a/static/scripts/app/views/dirent-grid.js
+++ b/static/scripts/app/views/dirent-grid.js
@@ -203,6 +203,10 @@ define([
'dirent_path': dirent_path,
'obj_name': obj_name
};
+ if (app.pageOptions.is_pro) {
+ options.is_admin = dir.is_admin;
+ }
+
new ShareView(options);
this.closeMenu();
return false;
diff --git a/static/scripts/app/views/dirent.js b/static/scripts/app/views/dirent.js
index 033f9dfde5..cca9eb6284 100644
--- a/static/scripts/app/views/dirent.js
+++ b/static/scripts/app/views/dirent.js
@@ -361,6 +361,10 @@ define([
'dirent_path': dirent_path,
'obj_name': obj_name
};
+ if (app.pageOptions.is_pro) {
+ options.is_admin = dir.is_admin;
+ }
+
new ShareView(options);
this._hideMenu();
diff --git a/static/scripts/app/views/folder-share-item.js b/static/scripts/app/views/folder-share-item.js
index 2851fdaaad..10ce010f85 100644
--- a/static/scripts/app/views/folder-share-item.js
+++ b/static/scripts/app/views/folder-share-item.js
@@ -20,11 +20,17 @@ define([
this.repo_id = options.repo_id;
this.path = options.path;
+ // show info about 'is_admin'
+ this.show_admin = false;
+ if (app.pageOptions.is_pro && this.path == '/' && this.item_data.for_user) {
+ this.show_admin = true;
+ }
+
this.render();
},
render: function () {
- this.$el.html(this.template(this.item_data));
+ this.$el.html(this.template($.extend({}, this.item_data, {'show_admin': this.show_admin})));
return this;
},
diff --git a/static/scripts/app/views/myhome-shared-repos.js b/static/scripts/app/views/myhome-shared-repos.js
index 45ac0551b7..00cde31e3f 100644
--- a/static/scripts/app/views/myhome-shared-repos.js
+++ b/static/scripts/app/views/myhome-shared-repos.js
@@ -4,7 +4,7 @@ define([
'backbone',
'common',
'app/collections/repos',
- 'app/views/shared-repo',
+ 'app/views/shared-repo'
], function($, _, Backbone, Common, RepoCollection, SharedRepoView) {
'use strict';
diff --git a/static/scripts/app/views/share.js b/static/scripts/app/views/share.js
index b3a2ec9a21..0b8d00cd07 100644
--- a/static/scripts/app/views/share.js
+++ b/static/scripts/app/views/share.js
@@ -14,6 +14,8 @@ define([
initialize: function(options) {
this.is_repo_owner = options.is_repo_owner;
+ // for shared repo
+ this.is_admin = options.is_admin; // true or undefined
this.is_virtual = options.is_virtual;
this.user_perm = options.user_perm;
this.repo_id = options.repo_id;
@@ -44,7 +46,7 @@ define([
if (this.user_perm == 'rw' && !this.repo_encrypted && app.pageOptions.can_generate_upload_link) {
this.uploadLinkPanelInit();
}
- if (!this.is_virtual && this.is_repo_owner) {
+ if (!this.is_virtual && (this.is_repo_owner || this.is_admin)) {
this.dirUserSharePanelInit();
this.dirGroupSharePanelInit();
@@ -66,12 +68,14 @@ define([
.replace('{placeholder}', '' + Common.HTMLescape(this.obj_name) + ''),
is_dir: this.is_dir,
is_repo_owner: this.is_repo_owner,
+ is_admin: this.is_admin,
is_virtual: this.is_virtual,
user_perm: this.user_perm,
repo_id: this.repo_id,
can_generate_share_link: app.pageOptions.can_generate_share_link,
can_generate_upload_link: app.pageOptions.can_generate_upload_link,
- repo_encrypted: this.repo_encrypted
+ repo_encrypted: this.repo_encrypted,
+ dirent_path: this.dirent_path
}));
return this;
@@ -576,8 +580,8 @@ define([
"user_email": item.user_info.name,
"user_name": item.user_info.nickname,
"permission": item.permission,
- 'for_user': true,
- 'is_admin': item.is_admin
+ 'is_admin': item.is_admin,
+ 'for_user': true
}
});
$add_item.after(new_item.el);
@@ -757,15 +761,15 @@ define([
"user_email": item.user_info.name,
"user_name": item.user_info.nickname,
"permission": item.permission,
- 'for_user': true,
- 'is_admin': item.is_admin
+ 'is_admin': item.is_admin,
+ 'for_user': true
}
});
$add_item.after(new_item.el);
});
emails_input.select2("val", "");
+ $('option', $perm).removeAttr('selected');
$('[value="rw"]', $perm).attr('selected', 'selected');
- $('[value="rw"]', $perm).nextAll().removeAttr('selected');
$error.addClass('hide');
}
if (data.failed.length > 0) {
diff --git a/static/scripts/app/views/shared-repo.js b/static/scripts/app/views/shared-repo.js
index 47097b1cfc..3eceaf0d69 100644
--- a/static/scripts/app/views/shared-repo.js
+++ b/static/scripts/app/views/shared-repo.js
@@ -4,7 +4,7 @@ define([
'backbone',
'common',
'app/views/widgets/hl-item-view',
- 'app/views/share',
+ 'app/views/share'
], function($, _, Backbone, Common, HLItemView, ShareView) {
'use strict';
@@ -16,7 +16,7 @@ define([
events: {
'click .unshare-btn': 'removeShare',
- 'click .repo-share-btn': 'share',
+ 'click .repo-share-btn': 'share'
},
initialize: function() {
@@ -25,7 +25,9 @@ define([
share: function() {
var options = {
- 'is_repo_owner': true,
+ 'is_repo_owner': false,
+ 'is_admin': true, // only for shared repo
+ 'is_virtual': false,
'user_perm': 'rw',
'repo_id': this.model.get('id'),
'repo_encrypted': this.model.get('encrypted'),
@@ -33,6 +35,7 @@ define([
'dirent_path': '/',
'obj_name': this.model.get('name')
};
+
new ShareView(options);
return false;
},
|