mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-20 07:55:06 +00:00
Merge pull request #764 from haiwen/wopi
use office web to preview office document
This commit is contained in:
commit
43e67758f6
@ -122,3 +122,9 @@ if HAS_OFFICE_CONVERTER:
|
|||||||
urlpatterns += patterns('',
|
urlpatterns += patterns('',
|
||||||
url(r'^office-convert/generate/repos/(?P<repo_id>[-0-9-a-f]{36})/$', OfficeGenerateView.as_view()),
|
url(r'^office-convert/generate/repos/(?P<repo_id>[-0-9-a-f]{36})/$', OfficeGenerateView.as_view()),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from seahub import settings
|
||||||
|
if getattr(settings, 'ENABLE_OFFICE_WEB_APP', False):
|
||||||
|
urlpatterns += patterns('',
|
||||||
|
(r'^wopi/', include('seahub_extra.wopi.urls')),
|
||||||
|
)
|
||||||
|
52
seahub/templates/view_wopi_file.html
Normal file
52
seahub/templates/view_wopi_file.html
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
|
||||||
|
<!-- Enable IE Standards mode -->
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
|
||||||
|
<title></title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow:hidden;
|
||||||
|
}
|
||||||
|
#office_frame {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: none;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form id="office_form" name="office_form" target="office_frame" action="{{action_url}}" method="post">
|
||||||
|
<input name="access_token" value="{{access_token}}" type="hidden"/>
|
||||||
|
<input name="access_token_ttl" value="{{access_token_ttl}}" type="hidden"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<span id="frameholder"></span>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var frameholder = document.getElementById('frameholder');
|
||||||
|
var office_frame = document.createElement('iframe');
|
||||||
|
office_frame.name = 'office_frame';
|
||||||
|
office_frame.id ='office_frame';
|
||||||
|
frameholder.appendChild(office_frame);
|
||||||
|
document.getElementById('office_form').submit();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -74,6 +74,17 @@ if HAS_OFFICE_CONVERTER:
|
|||||||
import seahub.settings as settings
|
import seahub.settings as settings
|
||||||
from seahub.settings import FILE_ENCODING_LIST, FILE_PREVIEW_MAX_SIZE, \
|
from seahub.settings import FILE_ENCODING_LIST, FILE_PREVIEW_MAX_SIZE, \
|
||||||
FILE_ENCODING_TRY_LIST, USE_PDFJS, MEDIA_URL, SITE_ROOT
|
FILE_ENCODING_TRY_LIST, USE_PDFJS, MEDIA_URL, SITE_ROOT
|
||||||
|
|
||||||
|
try:
|
||||||
|
from seahub.settings import ENABLE_OFFICE_WEB_APP
|
||||||
|
except ImportError:
|
||||||
|
ENABLE_OFFICE_WEB_APP = False
|
||||||
|
|
||||||
|
try:
|
||||||
|
from seahub.settings import OFFICE_WEB_APP_FILE_EXTENSION
|
||||||
|
except ImportError:
|
||||||
|
OFFICE_WEB_APP_FILE_EXTENSION = ()
|
||||||
|
|
||||||
from seahub.views import is_registered_user, check_repo_access_permission, \
|
from seahub.views import is_registered_user, check_repo_access_permission, \
|
||||||
get_unencry_rw_repos_by_user, get_file_access_permission
|
get_unencry_rw_repos_by_user, get_file_access_permission
|
||||||
|
|
||||||
@ -366,6 +377,19 @@ def _file_view(request, repo_id, path):
|
|||||||
if not user_perm:
|
if not user_perm:
|
||||||
return render_permission_error(request, _(u'Unable to view file'))
|
return render_permission_error(request, _(u'Unable to view file'))
|
||||||
|
|
||||||
|
# check if use wopi host page according to filetype
|
||||||
|
if ENABLE_OFFICE_WEB_APP and fileext in OFFICE_WEB_APP_FILE_EXTENSION:
|
||||||
|
try:
|
||||||
|
from seahub_extra.wopi.utils import get_wopi_dict
|
||||||
|
except ImportError:
|
||||||
|
wopi_dict = None
|
||||||
|
else:
|
||||||
|
wopi_dict = get_wopi_dict(username, repo_id, path)
|
||||||
|
|
||||||
|
if wopi_dict:
|
||||||
|
return render_to_response('view_wopi_file.html', wopi_dict,
|
||||||
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
# check if the user is the owner or not, for 'private share'
|
# check if the user is the owner or not, for 'private share'
|
||||||
if is_org_context(request):
|
if is_org_context(request):
|
||||||
repo_owner = seafile_api.get_org_repo_owner(repo.id)
|
repo_owner = seafile_api.get_org_repo_owner(repo.id)
|
||||||
|
Loading…
Reference in New Issue
Block a user