Skip to content

Commit

Permalink
[office file view with Collabora Online] added a custom toolbar(same …
Browse files Browse the repository at this point in the history
…with onlyoffice) (#7015)
  • Loading branch information
llj authored Nov 9, 2024
1 parent 2cb8039 commit 2d005e9
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 2 deletions.
3 changes: 2 additions & 1 deletion frontend/config/webpack.entry.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ const entryFiles = {
viewFileText: '/view-file-text.js',
viewFileSdoc: '/view-file-sdoc.js',
viewFileDocument: '/view-file-document.js',
viewFileOnlyoffice: '/view-file-onlyoffice.js',
viewFileSpreadsheet: '/view-file-spreadsheet.js',
viewFileOnlyoffice: '/view-file-onlyoffice.js',
viewFileCollaboraOnline: '/view-file-collabora-online.js',
settings: '/settings.js',
repoHistory: '/repo-history.js',
repoSnapshot: '/repo-snapshot.js',
Expand Down
48 changes: 48 additions & 0 deletions frontend/src/view-file-collabora-online.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import React from 'react';
import ReactDom from 'react-dom';
import FileView from './components/file-view/file-view';
import FileViewTip from './components/file-view/file-view-tip';

const {
err,
fileName,
actionURL,
accessToken,
accessTokenTtl,
} = window.app.pageOptions;

class ViewFileCollaboraOnline extends React.Component {
render() {
return (
<FileView content={<FileContent />} isOnlyofficeFile={true} />
);
}
}

class FileContent extends React.Component {

componentDidMount() {
if (!err) {
document.getElementById('office-form').submit();
document.getElementById('office-frame').className = 'd-block w-100 h-100 border-0';
}
}

render() {
if (err) {
return <FileViewTip />;
}

return (
<div className="file-view-content flex-1 p-0 border-0">
<iframe title={fileName} id="office-frame" name="office_frame" className="d-none" allowFullScreen></iframe>
<form id="office-form" name="office_form" target="office_frame" action={actionURL} method="post">
<input name="access_token" value={accessToken} type="hidden" />
<input name="access_token_ttl" value={accessTokenTtl} type="hidden" />
</form>
</div>
);
}
}

ReactDom.render(<ViewFileCollaboraOnline />, document.getElementById('wrapper'));
17 changes: 17 additions & 0 deletions seahub/templates/wopi_file_view_react.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{% extends 'file_view_react.html' %}
{% load render_bundle from webpack_loader %}
{% load seahub_tags avatar_tags i18n static %}

{% block extra_style %}
{% render_bundle 'viewFileCollaboraOnline' 'css' %}
{% endblock %}

{% block extra_data %}
actionURL: '{{action_url}}',
accessToken: '{{access_token}}',
accessTokenTtl: '{{access_token_ttl}}',
{% endblock %}

{% block render_bundle %}
{% render_bundle 'viewFileCollaboraOnline' 'js' %}
{% endblock %}
2 changes: 1 addition & 1 deletion seahub/views/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@ def view_lib_file(request, repo_id, path):

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

Expand Down

0 comments on commit 2d005e9

Please sign in to comment.