mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-06 09:21:54 +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>
|
<script type="text/javascript" src="{{MEDIA_URL}}codemirror/codemirror.js"></script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if filetype == 'PDF' %}
|
{% 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 %}
|
{% endif %}
|
||||||
{% if filetype == 'Document' %}
|
{% if filetype == 'Document' %}
|
||||||
<script type="text/javascript" src="{{MEDIA_URL}}flexpaper/js/flexpaper_flash.js"></script>
|
<script type="text/javascript" src="{{MEDIA_URL}}flexpaper/js/flexpaper_flash.js"></script>
|
||||||
|
@@ -36,10 +36,8 @@
|
|||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if filetype == 'PDF' %}
|
{% if filetype == 'PDF' and not pdf_use_flash %}
|
||||||
if (!$.browser.mozilla && !$.browser.safari) {
|
// Use pdf.js to view pdf in firefox/chrome
|
||||||
$('#file-view').html('<p>在线查看:请使用firefox 或 chrome。</p>').addClass('file-view-tip');
|
|
||||||
} else {
|
|
||||||
PDFJS.workerSrc = '{{MEDIA_URL}}js/pdf.js';
|
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'});
|
$('#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());
|
$('#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 }}'));
|
window.open('{{ SITE_ROOT }}pdf_full_view/?repo_id={{ repo.id }}&obj_id={{obj_id}}&file_name=' + e('{{ file_name }}'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if filetype == 'Markdown' %}
|
{% if filetype == 'Markdown' %}
|
||||||
@@ -108,7 +105,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
|
|||||||
$('#file-view').html('<p>该类型文件无法在线查看。</p>').addClass('file-view-tip');
|
$('#file-view').html('<p>该类型文件无法在线查看。</p>').addClass('file-view-tip');
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if filetype == 'Document' %}
|
{% if filetype == 'Document' or filetype == 'PDF' and pdf_use_flash %}
|
||||||
{% if err %}
|
{% if err %}
|
||||||
$('#file-view').html('<p class="error">{{ err }}</p>').addClass('file-view-tip');
|
$('#file-view').html('<p class="error">{{ err }}</p>').addClass('file-view-tip');
|
||||||
{% else %}
|
{% 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
|
$('#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();
|
load_flexpaper();
|
||||||
{% else %}
|
{% else %}
|
||||||
function check_status () {
|
function check_status () {
|
||||||
@@ -176,7 +173,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
|
|||||||
},
|
},
|
||||||
error: function(xhr, ajaxOptions, thrownError) {
|
error: function(xhr, ajaxOptions, thrownError) {
|
||||||
var jsonVal = jQuery.parseJSON(xhr.responseText);
|
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
|
# get file content
|
||||||
err = ''
|
err = ''
|
||||||
file_content = ''
|
file_content = ''
|
||||||
document_swf_exists = False
|
swf_exists = False
|
||||||
|
pdf_use_flash = False
|
||||||
if filetype == 'Text' or filetype == 'Markdown':
|
if filetype == 'Text' or filetype == 'Markdown':
|
||||||
err, file_content, encoding, newline_mode = repo_file_get(raw_path)
|
err, file_content, encoding, newline_mode = repo_file_get(raw_path)
|
||||||
elif filetype == 'Document':
|
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
|
# file share link
|
||||||
l = FileShare.objects.filter(repo_id=repo_id).filter(\
|
l = FileShare.objects.filter(repo_id=repo_id).filter(\
|
||||||
@@ -1093,7 +1098,8 @@ def repo_view_file(request, repo_id):
|
|||||||
'groups': groups,
|
'groups': groups,
|
||||||
'comments': comments,
|
'comments': comments,
|
||||||
'comment_open':comment_open,
|
'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,
|
'DOCUMENT_CONVERTOR_ROOT': DOCUMENT_CONVERTOR_ROOT,
|
||||||
'contributors': contributors,
|
'contributors': contributors,
|
||||||
'latest_contributor': latest_contributor,
|
'latest_contributor': latest_contributor,
|
||||||
@@ -2192,8 +2198,16 @@ def view_shared_file(request, token):
|
|||||||
# get file content
|
# get file content
|
||||||
err = ''
|
err = ''
|
||||||
file_content = ''
|
file_content = ''
|
||||||
|
swf_exists = False
|
||||||
|
pdf_use_flash = False
|
||||||
if filetype == 'Text' or filetype == 'Markdown':
|
if filetype == 'Text' or filetype == 'Markdown':
|
||||||
err, file_content, encoding, newline_mode = repo_file_get(raw_path)
|
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
|
# Increase file shared link view_cnt, this operation should be atomic
|
||||||
fileshare = FileShare.objects.get(token=token)
|
fileshare = FileShare.objects.get(token=token)
|
||||||
@@ -2213,6 +2227,9 @@ def view_shared_file(request, token):
|
|||||||
'username': username,
|
'username': username,
|
||||||
'err': err,
|
'err': err,
|
||||||
'file_content': file_content,
|
'file_content': file_content,
|
||||||
|
'swf_exists': swf_exists,
|
||||||
|
'pdf_use_flash': pdf_use_flash,
|
||||||
|
'DOCUMENT_CONVERTOR_ROOT': DOCUMENT_CONVERTOR_ROOT,
|
||||||
}, context_instance=RequestContext(request))
|
}, context_instance=RequestContext(request))
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@@ -2284,7 +2301,7 @@ def send_shared_link(request):
|
|||||||
return HttpResponseBadRequest(json.dumps(form.errors),
|
return HttpResponseBadRequest(json.dumps(form.errors),
|
||||||
content_type=content_type)
|
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'
|
curl = DOCUMENT_CONVERTOR_ROOT + 'convert'
|
||||||
data = {'doctype': doctype,
|
data = {'doctype': doctype,
|
||||||
'file_id': obj_id,
|
'file_id': obj_id,
|
||||||
@@ -2300,3 +2317,16 @@ def document_prepare(raw_path, obj_id, doctype):
|
|||||||
return ret_dict['error'], False
|
return ret_dict['error'], False
|
||||||
else:
|
else:
|
||||||
return None, ret_dict['exists']
|
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