mirror of https://github.com/interlegis/sapl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
4.6 KiB
123 lines
4.6 KiB
{% extends "base.html" %}
|
|
{% load i18n %}
|
|
{% load static %}
|
|
|
|
{% block base_content %}
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<h2>{% trans "Editor de Texto - Confirmação de Proposição" %}</h2>
|
|
<hr>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="alert alert-info">
|
|
<strong>{% trans "Tipo:" %}</strong> {{ proposicao.tipo }}<br>
|
|
<strong>{% trans "Ementa:" %}</strong> {{ proposicao.descricao }}<br>
|
|
<strong>{% trans "Autor:" %}</strong> {{ proposicao.autor }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div id="onlyoffice-placeholder" style="height: 600px; border: 1px solid #ccc;">
|
|
<div class="text-center" style="padding-top: 250px;">
|
|
<i class="fa fa-spinner fa-spin fa-3x"></i>
|
|
<p>{% trans "Carregando editor..." %}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mt-3">
|
|
<div class="col-12">
|
|
<button id="btn-salvar-voltar" class="btn btn-success" onclick="salvarEVoltar()">
|
|
<i class="fa fa-save"></i> {% trans "Salvar e Voltar" %}
|
|
</button>
|
|
<a href="{{ voltar_url }}" class="btn btn-secondary">
|
|
<i class="fa fa-arrow-left"></i> {% trans "Voltar sem Salvar" %}
|
|
</a>
|
|
<div class="alert alert-info mt-3">
|
|
<i class="fa fa-info-circle"></i>
|
|
{% trans "Use o botão 'Salvar e Voltar' para garantir que o documento seja salvo antes de sair. Se usar Ctrl+S, aguarde a confirmação de salvamento antes de sair." %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/javascript" src="{{ onlyoffice_url }}/web-apps/apps/api/documents/api.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
var docEditor = null;
|
|
var documentSaved = false;
|
|
var returnUrl = "{{ voltar_url }}";
|
|
|
|
function salvarEVoltar() {
|
|
var btn = document.getElementById('btn-salvar-voltar');
|
|
btn.disabled = true;
|
|
btn.innerHTML = '<i class="fa fa-spinner fa-spin"></i> Salvando...';
|
|
|
|
if (docEditor) {
|
|
// Força o salvamento do documento
|
|
docEditor.requestClose();
|
|
}
|
|
|
|
// Aguarda um tempo para o callback ser processado e redireciona
|
|
setTimeout(function() {
|
|
window.location.href = returnUrl;
|
|
}, 3000);
|
|
}
|
|
|
|
// Carrega a configuração do OnlyOffice
|
|
fetch('{{ config_url }}')
|
|
.then(response => response.json())
|
|
.then(config => {
|
|
console.log('OnlyOffice Config:', config);
|
|
|
|
// Adiciona eventos à configuração
|
|
config.events = {
|
|
'onDocumentReady': function() {
|
|
console.log('Documento pronto para edição');
|
|
},
|
|
'onError': function(event) {
|
|
console.error('Erro no OnlyOffice:', event);
|
|
alert('Ocorreu um erro ao carregar o editor. Por favor, tente novamente.');
|
|
},
|
|
'onWarning': function(event) {
|
|
console.warn('Aviso do OnlyOffice:', event);
|
|
},
|
|
'onDocumentStateChange': function(event) {
|
|
// event.data = true quando há alterações não salvas
|
|
console.log('Estado do documento:', event.data ? 'Alterações pendentes' : 'Salvo');
|
|
documentSaved = !event.data;
|
|
},
|
|
'onRequestClose': function() {
|
|
console.log('Editor fechado, redirecionando...');
|
|
}
|
|
};
|
|
|
|
// Inicializa o editor
|
|
docEditor = new DocsAPI.DocEditor("onlyoffice-placeholder", config);
|
|
})
|
|
.catch(error => {
|
|
console.error('Erro ao carregar configuração:', error);
|
|
document.getElementById('onlyoffice-placeholder').innerHTML =
|
|
'<div class="alert alert-danger m-5">' +
|
|
'<strong>Erro:</strong> Não foi possível carregar o editor. ' +
|
|
'Verifique se o servidor OnlyOffice está rodando.' +
|
|
'</div>';
|
|
});
|
|
|
|
// Aviso antes de sair se houver alterações não salvas
|
|
window.addEventListener('beforeunload', function(e) {
|
|
if (!documentSaved && docEditor) {
|
|
e.preventDefault();
|
|
e.returnValue = 'Você tem alterações não salvas. Deseja realmente sair?';
|
|
return e.returnValue;
|
|
}
|
|
});
|
|
</script>
|
|
{% endblock %}
|
|
|