Skip to content

Commit 2d005e9

Browse files
authored
[office file view with Collabora Online] added a custom toolbar(same with onlyoffice) (#7015)
1 parent 2cb8039 commit 2d005e9

File tree

4 files changed

+68
-2
lines changed

4 files changed

+68
-2
lines changed

frontend/config/webpack.entry.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ const entryFiles = {
3030
viewFileText: '/view-file-text.js',
3131
viewFileSdoc: '/view-file-sdoc.js',
3232
viewFileDocument: '/view-file-document.js',
33-
viewFileOnlyoffice: '/view-file-onlyoffice.js',
3433
viewFileSpreadsheet: '/view-file-spreadsheet.js',
34+
viewFileOnlyoffice: '/view-file-onlyoffice.js',
35+
viewFileCollaboraOnline: '/view-file-collabora-online.js',
3536
settings: '/settings.js',
3637
repoHistory: '/repo-history.js',
3738
repoSnapshot: '/repo-snapshot.js',
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import React from 'react';
2+
import ReactDom from 'react-dom';
3+
import FileView from './components/file-view/file-view';
4+
import FileViewTip from './components/file-view/file-view-tip';
5+
6+
const {
7+
err,
8+
fileName,
9+
actionURL,
10+
accessToken,
11+
accessTokenTtl,
12+
} = window.app.pageOptions;
13+
14+
class ViewFileCollaboraOnline extends React.Component {
15+
render() {
16+
return (
17+
<FileView content={<FileContent />} isOnlyofficeFile={true} />
18+
);
19+
}
20+
}
21+
22+
class FileContent extends React.Component {
23+
24+
componentDidMount() {
25+
if (!err) {
26+
document.getElementById('office-form').submit();
27+
document.getElementById('office-frame').className = 'd-block w-100 h-100 border-0';
28+
}
29+
}
30+
31+
render() {
32+
if (err) {
33+
return <FileViewTip />;
34+
}
35+
36+
return (
37+
<div className="file-view-content flex-1 p-0 border-0">
38+
<iframe title={fileName} id="office-frame" name="office_frame" className="d-none" allowFullScreen></iframe>
39+
<form id="office-form" name="office_form" target="office_frame" action={actionURL} method="post">
40+
<input name="access_token" value={accessToken} type="hidden" />
41+
<input name="access_token_ttl" value={accessTokenTtl} type="hidden" />
42+
</form>
43+
</div>
44+
);
45+
}
46+
}
47+
48+
ReactDom.render(<ViewFileCollaboraOnline />, document.getElementById('wrapper'));
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{% extends 'file_view_react.html' %}
2+
{% load render_bundle from webpack_loader %}
3+
{% load seahub_tags avatar_tags i18n static %}
4+
5+
{% block extra_style %}
6+
{% render_bundle 'viewFileCollaboraOnline' 'css' %}
7+
{% endblock %}
8+
9+
{% block extra_data %}
10+
actionURL: '{{action_url}}',
11+
accessToken: '{{access_token}}',
12+
accessTokenTtl: '{{access_token_ttl}}',
13+
{% endblock %}
14+
15+
{% block render_bundle %}
16+
{% render_bundle 'viewFileCollaboraOnline' 'js' %}
17+
{% endblock %}

seahub/views/file.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ def view_lib_file(request, repo_id, path):
835835

836836
if wopi_dict:
837837
send_file_access_msg(request, repo, path, 'web')
838-
return render(request, 'view_file_wopi.html', wopi_dict)
838+
return render(request, 'wopi_file_view_react.html', {**return_dict, **wopi_dict})
839839
else:
840840
return_dict['err'] = _('Error when prepare Office Online file preview page.')
841841

0 commit comments

Comments
 (0)