diff --git a/seahub/templates/sysadmin/sys_publink_admin.html b/seahub/templates/sysadmin/sys_publink_admin.html
index e17f13d1b4..a7af4a673a 100644
--- a/seahub/templates/sysadmin/sys_publink_admin.html
+++ b/seahub/templates/sysadmin/sys_publink_admin.html
@@ -13,7 +13,7 @@
-
- {% trans "Download Links" %}
+ {% trans "Share Links" %}
-
{% trans "Upload Links" %}
diff --git a/seahub/templates/sysadmin/sys_upload_link_admin.html b/seahub/templates/sysadmin/sys_upload_link_admin.html
index 1e63aab2bc..f39efa8099 100644
--- a/seahub/templates/sysadmin/sys_upload_link_admin.html
+++ b/seahub/templates/sysadmin/sys_upload_link_admin.html
@@ -7,7 +7,7 @@
-
- {% trans "Download Links" %}
+ {% trans "Share Links" %}
-
{% trans "Upload Links" %}
diff --git a/seahub/views/ajax.py b/seahub/views/ajax.py
index dda7835a86..7bec5329bf 100644
--- a/seahub/views/ajax.py
+++ b/seahub/views/ajax.py
@@ -34,6 +34,7 @@ from seahub.share.models import UploadLinkShare, ExtraSharePermission, ExtraGrou
from seahub.signals import upload_file_successful
from seahub.views import get_unencry_rw_repos_by_user, \
get_diff, check_folder_permission
+from seahub.views.file import can_preview_file
from seahub.group.utils import is_group_member, is_group_admin_or_owner, \
get_group_member_info
import seahub.settings as settings
@@ -321,6 +322,9 @@ def list_lib_dir(request, repo_id):
if fpath in starred_files:
dirent.starred = True
+ can_preview, err_msg = can_preview_file(dirent.obj_name, file_size, repo)
+ dirent.can_preview = can_preview
+
file_list.append(dirent)
if is_org_context(request):
@@ -390,6 +394,7 @@ def list_lib_dir(request, repo_id):
f_['file_size'] = filesizeformat(f.file_size)
f_['obj_id'] = f.obj_id
f_['perm'] = f.permission # perm for file in current dir
+ f_['can_preview'] = f.can_preview # if user can preview current file
if not repo.encrypted and ENABLE_THUMBNAIL:
# used for providing a way to determine
diff --git a/seahub/views/file.py b/seahub/views/file.py
index afa6274bcc..713fdb9fdc 100644
--- a/seahub/views/file.py
+++ b/seahub/views/file.py
@@ -329,6 +329,13 @@ def can_preview_file(file_name, file_size, repo=None):
file_type, file_ext = get_file_type_and_ext(file_name)
+
+ if ENABLE_OFFICE_WEB_APP and file_ext in OFFICE_WEB_APP_FILE_EXTENSION:
+ return (True, None)
+
+ if ENABLE_ONLYOFFICE and file_ext in ONLYOFFICE_FILE_EXTENSION:
+ return (True, None)
+
if repo and repo.encrypted and (file_type in (DOCUMENT, SPREADSHEET)):
return (False, _(u'The library is encrypted, can not open file online.'))
diff --git a/static/scripts/app/views/dirent-grid.js b/static/scripts/app/views/dirent-grid.js
index a80808aad0..9571b70a8f 100644
--- a/static/scripts/app/views/dirent-grid.js
+++ b/static/scripts/app/views/dirent-grid.js
@@ -201,10 +201,12 @@ define([
share: function() {
var dir = this.dir,
+ can_preview = this.model.get('can_preview'),
obj_name = this.model.get('obj_name'),
dirent_path = this.model.getPath();
var options = {
+ 'can_preview': can_preview,
'is_repo_owner': dir.is_repo_owner,
'is_virtual': dir.is_virtual,
'user_perm': this.model.get('perm'),
diff --git a/static/scripts/app/views/dirent.js b/static/scripts/app/views/dirent.js
index 8293e02dbc..727364932e 100644
--- a/static/scripts/app/views/dirent.js
+++ b/static/scripts/app/views/dirent.js
@@ -371,9 +371,11 @@ define([
this.hideMobileMenu();
var dir = this.dir,
obj_name = this.model.get('obj_name'),
+ can_preview = this.model.get('can_preview'),
dirent_path = Common.pathJoin([dir.path, obj_name]);
var options = {
+ 'can_preview': can_preview,
'is_repo_owner': dir.is_repo_owner,
'is_virtual': dir.is_virtual,
'user_perm': this.model.get('perm'),
diff --git a/static/scripts/app/views/share.js b/static/scripts/app/views/share.js
index 26a14323e6..f0e37c29e6 100644
--- a/static/scripts/app/views/share.js
+++ b/static/scripts/app/views/share.js
@@ -30,6 +30,7 @@ define([
this.dirent_path = options.dirent_path;
this.obj_name = options.obj_name;
this.is_dir = options.is_dir;
+ this.can_preview = options.can_preview;
// share to user/group
var enable_dir_private_share = false;
@@ -88,17 +89,21 @@ define([
// show 'can edit' perm option for download link or not
var show_link_edit_perm_option = false;
+ var show_link_preview_only_perm_option = true;
var file_ext = '';
if (!this.is_dir && this.obj_name.lastIndexOf('.') != -1) {
file_ext = this.obj_name.substr(this.obj_name.lastIndexOf('.') + 1)
.toLowerCase();
}
- if (app.pageOptions.is_pro &&
+ if (this.user_perm == 'rw' && !this.is_dir &&
(app.pageOptions.enable_office_web_app ||
app.pageOptions.enable_onlyoffice) &&
(file_ext == 'docx' || file_ext == 'xlsx' || file_ext == 'pptx')) {
show_link_edit_perm_option = true;
}
+ if (!this.is_dir && !this.can_preview) {
+ show_link_preview_only_perm_option = false;
+ }
this.$el.html(this.template({
title: gettext("Share {placeholder}")
@@ -110,6 +115,7 @@ define([
show_admin_perm_option: show_admin_perm_option,
show_link_edit_perm_option: show_link_edit_perm_option,
+ show_link_preview_only_perm_option: show_link_preview_only_perm_option,
user_perm: this.user_perm,
repo_id: this.repo_id,