mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-04 00:20:07 +00:00
view pdf in flash for ie
This commit is contained in:
@@ -2,7 +2,11 @@
|
||||
<script type="text/javascript" src="{{MEDIA_URL}}codemirror/codemirror.js"></script>
|
||||
{% endif %}
|
||||
{% if filetype == 'PDF' %}
|
||||
<script type="text/javascript" src="{{MEDIA_URL}}js/pdf.js"></script>
|
||||
{% if pdf_use_flash %}
|
||||
<script type="text/javascript" src="{{MEDIA_URL}}flexpaper/js/flexpaper_flash.js"></script>
|
||||
{% else %}
|
||||
<script type="text/javascript" src="{{MEDIA_URL}}js/pdf.js"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if filetype == 'Document' %}
|
||||
<script type="text/javascript" src="{{MEDIA_URL}}flexpaper/js/flexpaper_flash.js"></script>
|
||||
|
@@ -36,10 +36,8 @@
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
{% if filetype == 'PDF' %}
|
||||
if (!$.browser.mozilla && !$.browser.safari) {
|
||||
$('#file-view').html('<p>在线查看:请使用firefox 或 chrome。</p>').addClass('file-view-tip');
|
||||
} else {
|
||||
{% if filetype == 'PDF' and not pdf_use_flash %}
|
||||
// Use pdf.js to view pdf in firefox/chrome
|
||||
PDFJS.workerSrc = '{{MEDIA_URL}}js/pdf.js';
|
||||
$('#file-view').html('<div id="pdf"><img src="{{ MEDIA_URL }}pdf_full_view/images/loading-icon.gif" alt="加载中..." id="pdf-loading" style="margin-top:20px;" /><div id="pdf-op-bar" class="vh"><button id="prev">上一页</button><button id="next">下一页</button><span id="pdf-page"><label for="page-number">第</label> <input type="number" id="page-number" value="1" min="1"></input> / <span id="page-nums"></span> 页</span><button id="full-screen">全屏</button></div><canvas data="{{ raw_path }}" id="pdf-view" class="vh"></canvas></div>').css({'text-align':'center'});
|
||||
$('#pdf-op-bar').append($('#file-op').html());
|
||||
@@ -89,7 +87,6 @@ if (!$.browser.mozilla && !$.browser.safari) {
|
||||
window.open('{{ SITE_ROOT }}pdf_full_view/?repo_id={{ repo.id }}&obj_id={{obj_id}}&file_name=' + e('{{ file_name }}'));
|
||||
});
|
||||
});
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
{% if filetype == 'Markdown' %}
|
||||
@@ -108,7 +105,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
|
||||
$('#file-view').html('<p>该类型文件无法在线查看。</p>').addClass('file-view-tip');
|
||||
{% endif %}
|
||||
|
||||
{% if filetype == 'Document' %}
|
||||
{% if filetype == 'Document' or filetype == 'PDF' and pdf_use_flash %}
|
||||
{% if err %}
|
||||
$('#file-view').html('<p class="error">{{ err }}</p>').addClass('file-view-tip');
|
||||
{% else %}
|
||||
@@ -144,7 +141,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
|
||||
$('#file-view').children('object').prepend('<param name="wmode" value="opaque">'); //allow popup to show on top of the flash
|
||||
}
|
||||
|
||||
{% if document_swf_exists %}
|
||||
{% if swf_exists %}
|
||||
load_flexpaper();
|
||||
{% else %}
|
||||
function check_status () {
|
||||
@@ -176,7 +173,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
|
||||
},
|
||||
error: function(xhr, ajaxOptions, thrownError) {
|
||||
var jsonVal = jQuery.parseJSON(xhr.responseText);
|
||||
$('#file-view').html('<p class="error">' + jsonVal[0]['error'] + '</p>');
|
||||
$('#file-view').html('<p class="error">' + jsonVal['error'] + '</p>');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
38
views.py
38
views.py
@@ -1025,11 +1025,16 @@ def repo_view_file(request, repo_id):
|
||||
# get file content
|
||||
err = ''
|
||||
file_content = ''
|
||||
document_swf_exists = False
|
||||
swf_exists = False
|
||||
pdf_use_flash = False
|
||||
if filetype == 'Text' or filetype == 'Markdown':
|
||||
err, file_content, encoding, newline_mode = repo_file_get(raw_path)
|
||||
elif filetype == 'Document':
|
||||
err, document_swf_exists = document_prepare(raw_path, obj_id, fileext)
|
||||
err, swf_exists = flash_prepare(raw_path, obj_id, fileext)
|
||||
elif filetype == 'PDF':
|
||||
pdf_use_flash = use_flash_for_pdf(request)
|
||||
if pdf_use_flash:
|
||||
err, swf_exists = flash_prepare(raw_path, obj_id, 'pdf')
|
||||
|
||||
# file share link
|
||||
l = FileShare.objects.filter(repo_id=repo_id).filter(\
|
||||
@@ -1093,7 +1098,8 @@ def repo_view_file(request, repo_id):
|
||||
'groups': groups,
|
||||
'comments': comments,
|
||||
'comment_open':comment_open,
|
||||
'document_swf_exists': document_swf_exists,
|
||||
'swf_exists': swf_exists,
|
||||
'pdf_use_flash': pdf_use_flash,
|
||||
'DOCUMENT_CONVERTOR_ROOT': DOCUMENT_CONVERTOR_ROOT,
|
||||
'contributors': contributors,
|
||||
'latest_contributor': latest_contributor,
|
||||
@@ -2192,8 +2198,16 @@ def view_shared_file(request, token):
|
||||
# get file content
|
||||
err = ''
|
||||
file_content = ''
|
||||
swf_exists = False
|
||||
pdf_use_flash = False
|
||||
if filetype == 'Text' or filetype == 'Markdown':
|
||||
err, file_content, encoding, newline_mode = repo_file_get(raw_path)
|
||||
elif filetype == 'Document':
|
||||
err, swf_exists = flash_prepare(raw_path, obj_id, fileext)
|
||||
elif filetype == 'PDF':
|
||||
pdf_use_flash = use_flash_for_pdf(request)
|
||||
if pdf_use_flash:
|
||||
err, swf_exists = flash_prepare(raw_path, obj_id, 'pdf')
|
||||
|
||||
# Increase file shared link view_cnt, this operation should be atomic
|
||||
fileshare = FileShare.objects.get(token=token)
|
||||
@@ -2213,6 +2227,9 @@ def view_shared_file(request, token):
|
||||
'username': username,
|
||||
'err': err,
|
||||
'file_content': file_content,
|
||||
'swf_exists': swf_exists,
|
||||
'pdf_use_flash': pdf_use_flash,
|
||||
'DOCUMENT_CONVERTOR_ROOT': DOCUMENT_CONVERTOR_ROOT,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@@ -2284,7 +2301,7 @@ def send_shared_link(request):
|
||||
return HttpResponseBadRequest(json.dumps(form.errors),
|
||||
content_type=content_type)
|
||||
|
||||
def document_prepare(raw_path, obj_id, doctype):
|
||||
def flash_prepare(raw_path, obj_id, doctype):
|
||||
curl = DOCUMENT_CONVERTOR_ROOT + 'convert'
|
||||
data = {'doctype': doctype,
|
||||
'file_id': obj_id,
|
||||
@@ -2300,3 +2317,16 @@ def document_prepare(raw_path, obj_id, doctype):
|
||||
return ret_dict['error'], False
|
||||
else:
|
||||
return None, ret_dict['exists']
|
||||
|
||||
def use_flash_for_pdf(request):
|
||||
"""Decide whether to use flash to view pdf file, according to the current
|
||||
browser type and version.
|
||||
|
||||
"""
|
||||
ua = request.META.get('HTTP_USER_AGENT', '')
|
||||
if 'MSIE' in ua:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user