Add OnlyOfficeTemplates module
This commit is contained in:
54
layouts/v7/modules/OnlyOfficeTemplates/AddTemplate.tpl
Normal file
54
layouts/v7/modules/OnlyOfficeTemplates/AddTemplate.tpl
Normal file
@@ -0,0 +1,54 @@
|
||||
{strip}
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4 class="pull-left">{vtranslate('LBL_OOT_ADD_TEMPLATE', $MODULE_NAME)}</h4>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
{if $ERROR_MSG}
|
||||
<div class="alert alert-danger">{$ERROR_MSG|escape}</div>
|
||||
{/if}
|
||||
<form action="index.php" method="post" enctype="multipart/form-data" class="form-horizontal">
|
||||
<input type="hidden" name="module" value="OnlyOfficeTemplates" />
|
||||
<input type="hidden" name="action" value="UploadTemplate" />
|
||||
<input type="hidden" name="redirect" value="List" />
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3">{vtranslate('LBL_OOT_NAME', $MODULE_NAME)} <span class="redColor">*</span></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="name" class="form-control" required="required" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3">{vtranslate('LBL_OOT_MODULE', $MODULE_NAME)} <span class="redColor">*</span></label>
|
||||
<div class="col-sm-9">
|
||||
<select name="module_name" class="form-control" required="required">
|
||||
<option value="">-- {vtranslate('LBL_SELECT_OPTION','Vtiger')} --</option>
|
||||
{foreach from=$MODULES key=modName item=modLabel}
|
||||
<option value="{$modName}">{$modLabel}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3">{vtranslate('LBL_OOT_FILE', $MODULE_NAME)} (DOCX) <span class="redColor">*</span></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="file" name="file" accept=".docx" required="required" />
|
||||
<span class="help-block">{vtranslate('LBL_OOT_FILE_HINT', $MODULE_NAME)}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-3 col-sm-9">
|
||||
<button type="submit" class="btn btn-success">{vtranslate('LBL_SAVE', $MODULE_NAME)}</button>
|
||||
<a href="index.php?module=OnlyOfficeTemplates&view=List&app=TOOLS" class="btn btn-default">{vtranslate('LBL_CANCEL', $MODULE_NAME)}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/strip}
|
||||
76
layouts/v7/modules/OnlyOfficeTemplates/Edit.tpl
Normal file
76
layouts/v7/modules/OnlyOfficeTemplates/Edit.tpl
Normal file
@@ -0,0 +1,76 @@
|
||||
{strip}
|
||||
<div class="contents tabbable">
|
||||
<div class="row">
|
||||
<div class="col-xs-4 left-block" style="border-right: 1px solid #ddd;">
|
||||
<h4>{if $TEMPLATE.id gt 0}{vtranslate('LBL_OOT_EDIT_TEMPLATE', $MODULE_NAME)}{else}{vtranslate('LBL_OOT_ADD_TEMPLATE', $MODULE_NAME)}{/if}</h4>
|
||||
{if $ERROR_MSG}<div class="alert alert-danger">{$ERROR_MSG|escape}</div>{/if}
|
||||
<form id="ootMetadataForm" action="index.php" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="module" value="OnlyOfficeTemplates" />
|
||||
<input type="hidden" name="action" value="SaveMetadata" />
|
||||
<input type="hidden" name="templateid" value="{$TEMPLATE.id}" />
|
||||
<input type="hidden" name="redirect" value="Edit" />
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">{vtranslate('LBL_OOT_NAME', $MODULE_NAME)}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" name="name" class="form-control" value="{$TEMPLATE.name|escape}" required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">{vtranslate('LBL_OOT_MODULE', $MODULE_NAME)}</label>
|
||||
<div class="col-sm-8">
|
||||
<select name="module_name" class="form-control" required>
|
||||
<option value="">-- {vtranslate('LBL_SELECT_OPTION','Vtiger')} --</option>
|
||||
{foreach from=$MODULES key=modName item=modLabel}
|
||||
<option value="{$modName}" {if $TEMPLATE.module eq $modName}selected{/if}>{$modLabel}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-4 col-sm-8">
|
||||
<button type="submit" class="btn btn-success">{vtranslate('LBL_SAVE', $MODULE_NAME)}</button>
|
||||
<a href="index.php?module=OnlyOfficeTemplates&view=List&app=TOOLS" class="btn btn-default">{vtranslate('LBL_CANCEL', $MODULE_NAME)}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-xs-8" style="min-height: 600px;">
|
||||
{if $OOT_EDITOR_AVAILABLE}
|
||||
<p class="text-muted">{vtranslate('LBL_OOT_EDITOR_HINT', $MODULE_NAME)}</p>
|
||||
<div id="ootOnlyOfficeEditor" style="width:100%; height:700px;"></div>
|
||||
<script src="{$OOT_DOCUMENT_SERVER}/web-apps/apps/api/documents/api.js"></script>
|
||||
<script>
|
||||
(function() {
|
||||
var docKey = "{$OOT_DOC_KEY|escape:'javascript'}";
|
||||
var config = {
|
||||
document: {
|
||||
fileType: "docx",
|
||||
key: docKey,
|
||||
title: "{$OOT_DOC_TITLE|escape:'javascript'}",
|
||||
url: "{$OOT_DOCUMENT_URL|escape:'javascript'}"
|
||||
},
|
||||
documentType: "word",
|
||||
editorConfig: {
|
||||
callbackUrl: "{$OOT_CALLBACK_URL|escape:'javascript'}",
|
||||
mode: "edit",
|
||||
lang: "ru"
|
||||
},
|
||||
width: "100%",
|
||||
height: "100%"
|
||||
};
|
||||
if (typeof DocsAPI !== "undefined") {
|
||||
new DocsAPI.DocEditor("ootOnlyOfficeEditor", config);
|
||||
} else {
|
||||
document.getElementById("ootOnlyOfficeEditor").innerHTML = "<div class=\"alert alert-warning\">Не удалось загрузить OnlyOffice. Проверьте ONLYOFFICE_DOCUMENT_SERVER.</div>";
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
{else}
|
||||
<div class="alert alert-info">{$OOT_EDITOR_MESSAGE|escape}</div>
|
||||
<p>{vtranslate('LBL_OOT_EDITOR_FALLBACK', $MODULE_NAME)}</p>
|
||||
<a href="index.php?module=OnlyOfficeTemplates&view=AddTemplate&app=TOOLS" class="btn btn-primary">{vtranslate('LBL_OOT_ADD_VIA_UPLOAD', $MODULE_NAME)}</a>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/strip}
|
||||
@@ -0,0 +1,65 @@
|
||||
{*
|
||||
OnlyOfficeTemplates widget: template list, format (PDF/DOCX), Download / Save to Documents
|
||||
*}
|
||||
{if $CRM_TEMPLATES_EXIST eq 0}
|
||||
<li class="dropdown-header">
|
||||
<span class="fa fa-file-text-o"></span> {vtranslate('LBL_OOT_TEMPLATES','OnlyOfficeTemplates')}
|
||||
</li>
|
||||
<li class="oot-widget" data-record="{$ID}" data-module="{$MODULE}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{vtranslate('LBL_OOT_SELECT_TEMPLATE','OnlyOfficeTemplates')}</label>
|
||||
<select class="oot-template-id form-control input-sm">
|
||||
{foreach from=$CRM_TEMPLATES item=tpl}
|
||||
<option value="{$tpl.id}">{$tpl.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">{vtranslate('LBL_OOT_FORMAT','OnlyOfficeTemplates')}</label>
|
||||
<select class="oot-format form-control input-sm">
|
||||
<option value="pdf">{vtranslate('LBL_OOT_FORMAT_PDF','OnlyOfficeTemplates')}</option>
|
||||
<option value="docx">{vtranslate('LBL_OOT_FORMAT_DOCX','OnlyOfficeTemplates')}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group btn-group-justified">
|
||||
<a href="javascript:;" class="oot-download"><i class="fa fa-download"></i> {vtranslate('LBL_OOT_DOWNLOAD','OnlyOfficeTemplates')}</a>
|
||||
<a href="javascript:;" class="oot-save-to-docs"><i class="fa fa-save"></i> {vtranslate('LBL_OOT_SAVE_TO_DOCUMENTS','OnlyOfficeTemplates')}</a>
|
||||
</div>
|
||||
</li>
|
||||
{else}
|
||||
<li><span class="text-muted">{vtranslate('LBL_OOT_NO_TEMPLATES','OnlyOfficeTemplates')}</span></li>
|
||||
{/if}
|
||||
{if $CRM_TEMPLATES_EXIST eq 0}
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
var container = document.querySelector('.oot-widget');
|
||||
if (!container) return;
|
||||
container.addEventListener('click', function(e) {
|
||||
var t = e.target.closest('.oot-download, .oot-save-to-docs');
|
||||
if (!t) return;
|
||||
e.preventDefault();
|
||||
var record = container.getAttribute('data-record'), module = container.getAttribute('data-module');
|
||||
var sel = container.querySelector('.oot-template-id'), fmt = container.querySelector('.oot-format');
|
||||
var templateId = sel ? sel.value : '', format = fmt ? fmt.value : 'pdf';
|
||||
var mode = t.classList.contains('oot-download') ? 'download' : 'save_to_documents';
|
||||
var url = 'index.php?module=OnlyOfficeTemplates&action=CreateFromTemplate&record=' + encodeURIComponent(record) + '&source_module=' + encodeURIComponent(module) + '&template_id=' + encodeURIComponent(templateId) + '&format=' + encodeURIComponent(format) + '&mode=' + encodeURIComponent(mode);
|
||||
if (mode === 'download') {
|
||||
window.location.href = url;
|
||||
} else {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', url + '&ajax=1');
|
||||
xhr.onload = function() {
|
||||
var res = {};
|
||||
try { res = JSON.parse(xhr.responseText); } catch (err) {}
|
||||
if (res.success) {
|
||||
alert(res.message || 'Сохранено в Документы');
|
||||
} else {
|
||||
alert(res.error || 'Ошибка');
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
{/if}
|
||||
47
layouts/v7/modules/OnlyOfficeTemplates/List.tpl
Normal file
47
layouts/v7/modules/OnlyOfficeTemplates/List.tpl
Normal file
@@ -0,0 +1,47 @@
|
||||
{strip}
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4 class="pull-left">{vtranslate('LBL_OOT_TEMPLATES', $MODULE_NAME)}</h4>
|
||||
<a href="index.php?module=OnlyOfficeTemplates&action=CreateDraft&app=TOOLS" class="btn btn-success pull-right">
|
||||
<i class="fa fa-plus"></i> {vtranslate('LBL_OOT_ADD_TEMPLATE', $MODULE_NAME)}
|
||||
</a>
|
||||
<a href="index.php?module=OnlyOfficeTemplates&view=AddTemplate&app=TOOLS" class="btn btn-default pull-right" style="margin-right:8px;">
|
||||
{vtranslate('LBL_OOT_UPLOAD_FILE', $MODULE_NAME)}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
{if empty($TEMPLATES)}
|
||||
<div class="alert alert-info">{vtranslate('LBL_OOT_EMPTY_LIST', $MODULE_NAME)}</div>
|
||||
{else}
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{vtranslate('LBL_OOT_NAME', $MODULE_NAME)}</th>
|
||||
<th>{vtranslate('LBL_OOT_MODULE', $MODULE_NAME)}</th>
|
||||
<th>{vtranslate('LBL_OOT_FILE', $MODULE_NAME)}</th>
|
||||
<th>{vtranslate('LBL_OOT_CREATED_AT', $MODULE_NAME)}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$TEMPLATES item=TPL}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="index.php?module=OnlyOfficeTemplates&view=Edit&templateid={$TPL.id}&app=TOOLS">{$TPL.name|escape}</a>
|
||||
</td>
|
||||
<td>{$TPL.module|escape}</td>
|
||||
<td>{$TPL.file_name|escape}</td>
|
||||
<td>{$TPL.created_at|escape}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/strip}
|
||||
Reference in New Issue
Block a user