mirror of
https://github.com/Karaka-Management/oms-Editor.git
synced 2026-01-11 17:18:42 +00:00
fixes
This commit is contained in:
parent
757930be9c
commit
09698caa0a
|
|
@ -27,6 +27,7 @@ use Modules\Media\Models\CollectionMapper;
|
|||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\Media\Models\NullMedia;
|
||||
use Modules\Media\Models\PathSettings;
|
||||
use Modules\Admin\Models\SettingsEnum as AdminSettingsEnum;
|
||||
use Modules\Media\Models\Reference;
|
||||
use Modules\Media\Models\ReferenceMapper;
|
||||
use Modules\Tag\Models\NullTag;
|
||||
|
|
@ -37,7 +38,9 @@ use phpOMS\Message\NotificationLevel;
|
|||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
use phpOMS\Model\Message\FormValidation;
|
||||
use phpOMS\System\MimeType;
|
||||
use phpOMS\Utils\Parser\Markdown\Markdown;
|
||||
use phpOMS\Views\View;
|
||||
|
||||
/**
|
||||
* Calendar controller class.
|
||||
|
|
@ -624,4 +627,87 @@ final class ApiController extends Controller
|
|||
|
||||
return [];
|
||||
}
|
||||
|
||||
public function apiEditorExport(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
{
|
||||
/** @var \Modules\Editor\Models\EditorDoc $doc */
|
||||
$doc = EditorDocMapper::get()
|
||||
->with('media')
|
||||
->where('id', (int) $request->getData('id'))
|
||||
->execute();
|
||||
|
||||
$type = $request->getDataString('type');
|
||||
$mimes = $type === null ? $request->header->get('content-type') : [$type];
|
||||
|
||||
foreach ($mimes as $mime) {
|
||||
if ($mime === MimeType::M_TEXT) {
|
||||
$response->header->set('Content-Type', $mime);
|
||||
$response->set('', $doc->plain);
|
||||
|
||||
return;
|
||||
} elseif ($mime === MimeType::M_HTML) {
|
||||
$response->header->set('Content-Type', $mime);
|
||||
$response->set('', Markdown::parse($doc->plain));
|
||||
|
||||
return;
|
||||
} elseif ($mime === MimeType::M_PDF) {
|
||||
$response->header->set('Content-Type', $mime);
|
||||
|
||||
require_once __DIR__ . '/../../../Resources/tcpdf/tcpdf.php';
|
||||
|
||||
$view = new View($this->app->l11nManager, $request, $response);
|
||||
$view->setTemplate('/Modules/Editor/Theme/Api/editor-pdf');
|
||||
|
||||
/** @var \Model\Setting[] $settings */
|
||||
$settings = $this->app->appSettings->get(null,
|
||||
[
|
||||
AdminSettingsEnum::DEFAULT_TEMPLATES,
|
||||
AdminSettingsEnum::DEFAULT_ASSETS,
|
||||
],
|
||||
unit: $this->app->unitId,
|
||||
module: 'Admin'
|
||||
);
|
||||
|
||||
if (empty($settings)) {
|
||||
/** @var \Model\Setting[] $settings */
|
||||
$settings = $this->app->appSettings->get(null,
|
||||
[
|
||||
AdminSettingsEnum::DEFAULT_TEMPLATES,
|
||||
AdminSettingsEnum::DEFAULT_ASSETS,
|
||||
],
|
||||
unit: null,
|
||||
module: 'Admin'
|
||||
);
|
||||
}
|
||||
|
||||
/** @var \Modules\Media\Models\Collection $defaultTemplates */
|
||||
$defaultTemplates = CollectionMapper::get()
|
||||
->with('sources')
|
||||
->where('id', (int) $settings[AdminSettingsEnum::DEFAULT_TEMPLATES]->content)
|
||||
->execute();
|
||||
|
||||
/** @var \Modules\Media\Models\Collection $defaultAssets */
|
||||
$defaultAssets = CollectionMapper::get()
|
||||
->with('sources')
|
||||
->where('id', (int) $settings[AdminSettingsEnum::DEFAULT_ASSETS]->content)
|
||||
->execute();
|
||||
|
||||
$view->setData('defaultTemplates', $defaultTemplates);
|
||||
$view->setData('defaultAssets', $defaultAssets);
|
||||
$view->setData('pdf', $pdf);
|
||||
$view->setData('doc', $doc);
|
||||
|
||||
$response->set('', $view->render());
|
||||
|
||||
return;
|
||||
} elseif ($mime === MimeType::M_DOC || $mime === MimeType::M_DOCX) {
|
||||
$response->header->set('Content-Type', $mime);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$response->header->set('Content-Type', MimeType::M_TEXT);
|
||||
$response->set('', $doc->plain);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
41
Theme/Api/editor-doc.tpl.php
Normal file
41
Theme/Api/editor-doc.tpl.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\Media
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Modules\Editor\Models\NullEditorDoc;
|
||||
use phpOMS\Utils\Parser\Markdown\Markdown;
|
||||
|
||||
/** @var \phpOMS\Views\View $this */
|
||||
require_once $this->getData('defaultTemplates')
|
||||
->findFile('.pdf.php')
|
||||
->getAbsolutePath();
|
||||
|
||||
/** @var \Modules\Editor\Models\EditorDoc $doc */
|
||||
$doc = $this->getData('doc') ?? new NullEditorDoc();
|
||||
|
||||
// Set up default pdf template
|
||||
/** @phpstan-import-type DefaultPdf from ../../../../Admin/Install/Media/PdfDefaultTemplate/pdfTemplate.pdf.php */
|
||||
$word = new DefaultWord();
|
||||
$section = $word->createFirstPage();
|
||||
|
||||
\PhpOffice\PhpWord\Shared\Html::addHtml($section, Markdown::parse($doc->plain));
|
||||
|
||||
$file = \tempnam(\sys_get_temp_dir(), 'oms_');
|
||||
$word->save($file, 'Word2007');
|
||||
|
||||
$content = \file_get_contents($file);
|
||||
if ($content !== false) {
|
||||
echo $content;
|
||||
}
|
||||
|
||||
\unlink($file);
|
||||
72
Theme/Api/editor-pdf.tpl.php
Normal file
72
Theme/Api/editor-pdf.tpl.php
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\Media
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Modules\Editor\Models\NullEditorDoc;
|
||||
use phpOMS\Utils\Parser\Markdown\Markdown;
|
||||
|
||||
/** @var \phpOMS\Views\View $this */
|
||||
require_once $this->getData('defaultTemplates')
|
||||
->findFile('.pdf.php')
|
||||
->getAbsolutePath();
|
||||
|
||||
/** @var \Modules\Editor\Models\EditorDoc $doc */
|
||||
$doc = $this->getData('doc') ?? new NullEditorDoc();
|
||||
|
||||
// Set up default pdf template
|
||||
/** @phpstan-import-type DefaultPdf from ../../../../Admin/Install/Media/PdfDefaultTemplate/pdfTemplate.pdf.php */
|
||||
$pdf = new DefaultPdf();
|
||||
|
||||
$pdf->setHeaderData(
|
||||
$this->getData('defaultTemplates')->findFile('logo.png')->getAbsolutePath(), 15,
|
||||
$this->getData('logo_name') ?? 'Jingga',
|
||||
$this->getData('slogan') ?? 'Business solutions made simple.'
|
||||
);
|
||||
$pdf->setCreator($this->getData('creator') ?? 'Jingga');
|
||||
$pdf->setAuthor($this->getData('creator') ?? 'Jingga');
|
||||
$pdf->setTitle($this->getData('title') ?? $bill->type->getL11n());
|
||||
$pdf->setSubject($this->getData('subtitle') ?? '');
|
||||
$pdf->setKeywords(\implode(', ', $this->getData('keywords') ?? []));
|
||||
$pdf->language = $bill->getLanguage();
|
||||
|
||||
$pdf->attributes['legal_name'] = $this->getData('legal_company_name') ?? 'Jingga e.K.';
|
||||
$pdf->attributes['address'] = $this->getData('company_address') ?? 'Gartenstr. 26';
|
||||
$pdf->attributes['city'] = $this->getData('company_city') ?? '61206 Woellstadt';
|
||||
|
||||
$pdf->attributes['ceo'] = $this->getData('company_ceo') ?? 'Dennis Eichhorn';
|
||||
$pdf->attributes['tax_office'] = $this->getData('company_tax_office') ?? 'HRB ???';
|
||||
$pdf->attributes['tax_number'] = $this->getData('company_tax_id') ?? '123456789';
|
||||
|
||||
$pdf->attributes['bank_name'] = $this->getData('company_bank_name') ?? 'Volksbank Mittelhessen';
|
||||
$pdf->attributes['swift'] = $this->getData('company_swift') ?? '.....';
|
||||
$pdf->attributes['bank_account'] = $this->getData('company_bank_account') ?? '.....';
|
||||
|
||||
$pdf->attributes['website'] = $this->getData('company_website') ?? 'www.jingga.app';
|
||||
$pdf->attributes['email'] = $this->getData('company_email') ?? 'info@jingga.app';
|
||||
$pdf->attributes['phone'] = $this->getData('company_phone') ?? '+49 0152 ????';
|
||||
|
||||
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
|
||||
|
||||
// add a page
|
||||
$pdf->AddPage();
|
||||
$topPos = $pdf->getY();
|
||||
|
||||
$doc = $this->getData('doc') ?? new NullEditorDoc();
|
||||
|
||||
$pdf->writeHTML(Markdown::parse($doc->plain));
|
||||
|
||||
//Close and output PDF document
|
||||
$pdf->Output(
|
||||
$this->getData('path') ?? ($doc->createdAt->format('Y-m-d') . '_' . $doc->id . '.pdf'),
|
||||
'I'
|
||||
);
|
||||
Loading…
Reference in New Issue
Block a user