Skip to content

Commit

Permalink
Merge branch 'master' into magento2.3.x
Browse files Browse the repository at this point in the history
  • Loading branch information
thomas-kl1 committed Dec 23, 2020
2 parents 56d7378 + 9b98839 commit 5a09d88
Show file tree
Hide file tree
Showing 10 changed files with 119 additions and 51 deletions.
55 changes: 55 additions & 0 deletions Model/View/Page/Config/Renderer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php
/**
* Copyright © OpenGento, All rights reserved.
* See LICENSE bundled with this library for license details.
*/
declare(strict_types=1);

namespace Opengento\Gdpr\Model\View\Page\Config;

use Magento\Framework\View\Asset\AssetInterface;
use Magento\Framework\View\Asset\GroupedCollection;
use Magento\Framework\View\Asset\PropertyGroup;
use Magento\Framework\View\Page\Config\Renderer as ViewRenderer;
use function file_get_contents;
use function sprintf;
use const PHP_EOL;

class Renderer extends ViewRenderer
{
protected function renderAssetHtml(PropertyGroup $group): string
{
$assets = $this->processMerge($group->getAll(), $group);
$attributes = $this->getGroupAttributes($group);
$result = '';

/** @var $asset AssetInterface */
foreach ($assets as $asset) {
$result .= $this->inlineHtml(
$group->getProperty(GroupedCollection::PROPERTY_CONTENT_TYPE),
$asset->getUrl(),
$this->addDefaultAttributes($this->getAssetContentType($asset), $attributes)
);
}

return $result;
}

private function inlineHtml(string $contentType, string $src, ?string $attributes): string
{
switch ($contentType) {
case 'js':
$result = '<script ' . $attributes . '>' . file_get_contents($src) . '</script>';
break;

case 'css':
$result = '<style ' . $attributes . '>' . file_get_contents($src) . '</style>';
break;
default:
$result = sprintf($this->getAssetTemplate($contentType, $attributes), $src);
break;
}

return $result . PHP_EOL;
}
}
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ Languages:

- [x] en_US ; English
- [x] de_DE ; German
- [x] fr_FR ; French (partial)
- [ ] nl_NL ; Dutch (partial)
- [x] fr_FR ; French
- [x] nl_NL ; Dutch
- [ ] it_IT ; Italian (partial)

## Settings
Expand Down
14 changes: 5 additions & 9 deletions Service/Export/Renderer/HtmlRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@
use Magento\Framework\View\Element\Template;
use Magento\Framework\View\FileSystem as ViewFileSystem;
use Magento\Framework\View\Page\Config;
use Magento\Framework\View\Page\Config\Renderer;
use Magento\Framework\View\Page\Config\RendererFactory;
use Magento\Framework\View\Page\Config\RendererInterface;
use Opengento\Gdpr\Model\View\Page\Config\RendererFactory;
use Opengento\Gdpr\Service\Export\Renderer\HtmlRenderer\LayoutInitiatorInterface;
use function array_keys;
use function extract;
use function ob_end_clean;
use function ob_get_clean;
Expand All @@ -31,7 +32,7 @@ final class HtmlRenderer extends AbstractRenderer
private $layoutInitiator;

/**
* @var Renderer
* @var RendererInterface
*/
private $pageConfigRenderer;

Expand Down Expand Up @@ -75,20 +76,15 @@ public function render(array $data): string
{
$layout = $this->layoutInitiator->createLayout();

$addBlock = $layout->getBlock('head.additional');
$requireJs = $layout->getBlock('require.js');
/** @var Template $block */
$block = $layout->getBlock('main.content.customer.privacy.export.personal.data');
$block->setData('viewModel', new DataObject($data));

$output = $this->renderPage([
'requireJs' => $requireJs ? $requireJs->toHtml() : null,
'headContent' => $this->pageConfigRenderer->renderHeadContent(),//todo replace style to inline css
'headAdditional' => $addBlock ? $addBlock->toHtml() : null,
'headContent' => $this->pageConfigRenderer->renderHeadContent(),
'htmlAttributes' => $this->pageConfigRenderer->renderElementAttributes(Config::ELEMENT_TYPE_HTML),
'headAttributes' => $this->pageConfigRenderer->renderElementAttributes(Config::ELEMENT_TYPE_HEAD),
'bodyAttributes' => $this->pageConfigRenderer->renderElementAttributes(Config::ELEMENT_TYPE_BODY),
'loaderIcon' => 'images/loader-2.gif',//todo
'layoutContent' => $layout->getOutput(),
]);
$this->translateInline->processResponseBody($output);
Expand Down
40 changes: 5 additions & 35 deletions Service/Export/Renderer/PdfRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,19 @@

use Exception;
use Magento\Framework\Filesystem;
use mikehaertl\wkhtmlto\Pdf;
use mikehaertl\wkhtmlto\PdfFactory;
use RuntimeException;
use TCPDF;

final class PdfRenderer extends AbstractRenderer
{
/**
* @var PdfFactory
*/
private $pdfFactory;

/**
* @var HtmlRenderer
*/
private $htmlRenderer;

public function __construct(
Filesystem $filesystem,
PdfFactory $pdfFactory,
HtmlRenderer $htmlRenderer
) {
$this->pdfFactory = $pdfFactory;
$this->htmlRenderer = $htmlRenderer;
parent::__construct($filesystem, 'pdf');
}
Expand All @@ -41,31 +32,10 @@ public function __construct(
*/
public function render(array $data): string
{
/** @var Pdf $pdf */
$pdf = $this->pdfFactory->create([
'options' => [
'ignoreWarnings' => true,
'no-outline',
'enable-external-links',
'enable-internal-links',
'encoding' => 'UTF-8',
'margin-top' => 0,
'margin-right' => 0,
'margin-bottom' => 0,
'margin-left' => 0,
'dpi' => 300,
'zoom' => 1,
'disable-smart-shrinking',
'lowquality',
]
]);

$pdf->addPage($this->htmlRenderer->render($data));

if (($result = $pdf->toString()) === false) {
throw new RuntimeException('The PDF was not created successfully.');
}
$pdf = new TCPDF();
$pdf->AddPage('P', 'A4');
$pdf->writeHTML($this->htmlRenderer->render($data));

return $result;
return $pdf->Output('', 'S');
}
}
2 changes: 1 addition & 1 deletion etc/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1512,7 +1512,7 @@
<type name="Opengento\Gdpr\Service\Export\Renderer\HtmlRenderer">
<arguments>
<argument name="layoutInitiator" xsi:type="object">Opengento\Gdpr\Service\Export\Renderer\HtmlRenderer\LayoutInitiator</argument>
<argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>
<argument name="template" xsi:type="string">Opengento_Gdpr::root.phtml</argument>
</arguments>
</type>
<type name="Opengento\Gdpr\Service\Export\RendererFactory">
Expand Down
5 changes: 2 additions & 3 deletions view/base/layout/customer_privacy_export_personal_data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@
* See LICENSE bundled with this library for license details.
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="empty" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="customer_privacy_export" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<update handle="customer_privacy_export_personal_data_renderers"/>
<head>
<title>My Personal Data</title>
</head>
<body>
<referenceContainer name="main">
<block class="Magento\Framework\View\Element\Template" name="main.content.customer.privacy.export.personal.data" template="Opengento_Gdpr::export/result.phtml" cacheable="false"/>
<block name="main.content.customer.privacy.export.personal.data" template="Opengento_Gdpr::export/result.phtml" cacheable="false"/>
</referenceContainer>
<move element="opengento.gdpr.customer.privacy.export.renderers" destination="main.content.customer.privacy.export.personal.data" as="exportRenderer"/>
</body>
</page>
12 changes: 12 additions & 0 deletions view/base/layouts.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © OpenGento, All rights reserved.
* See LICENSE bundled with this library for license details.
*/
-->
<page_layouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/PageLayout/etc/layouts.xsd">
<layout id="customer_privacy_export">
<label>Customer Privacy Export Personal Data</label>
</layout>
</page_layouts>
20 changes: 20 additions & 0 deletions view/base/page_layout/customer_privacy_export.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_layout.xsd">
<container name="root">
<container name="page.wrapper" as="page_wrapper" htmlTag="div" htmlClass="page-wrapper">
<container name="main.content" htmlTag="main" htmlId="maincontent" htmlClass="page-main">
<container name="columns.top" label="Before Main Columns"/>
<container name="columns" htmlTag="div" htmlClass="columns">
<container name="main" label="Main Content Container" htmlTag="div" htmlClass="column main"/>
</container>
</container>
<container name="page.bottom.container" as="page_bottom_container" label="Before Page Footer Container" after="main.content" htmlTag="div" htmlClass="page-bottom"/>
</container>
</container>
</layout>
2 changes: 1 addition & 1 deletion view/base/templates/export/result.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use Magento\Framework\View\Element\Template;
/** @var Template $block */

/** @var RendererList $rendererList */
$rendererList = $block->getChildBlock('exportRenderer');
$rendererList = $block->getLayout()->getBlock('opengento.gdpr.customer.privacy.export.renderers');
/** @var DataObject $viewModel */
$viewModel = $block->getData('viewModel');
?>
Expand Down
16 changes: 16 additions & 0 deletions view/base/templates/root.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php
/**
* Copyright © OpenGento, All rights reserved.
* See LICENSE bundled with this library for license details.
*/
declare(strict_types=1);
?>
<!doctype html>
<html <?= $htmlAttributes ?? '' ?>>
<head <?= $headAttributes ?? '' ?>>
<?= $headContent ?? '' ?>
</head>
<body data-container="body" <?= $bodyAttributes ?? '' ?>>
<?= $layoutContent ?? '' ?>
</body>
</html>

0 comments on commit 5a09d88

Please sign in to comment.