Skip to content

Commit

Permalink
Merge master into magento2.3.x
Browse files Browse the repository at this point in the history
  • Loading branch information
thomas-kl1 committed Dec 24, 2020
2 parents 5a09d88 + c20cfac commit 8f6d2b8
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 27 deletions.
32 changes: 31 additions & 1 deletion Service/Export/Renderer/HtmlRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,32 @@

use Exception;
use InvalidArgumentException;
use Magento\Framework\App\Area;
use Magento\Framework\App\State;
use Magento\Framework\DataObject;
use Magento\Framework\Filesystem;
use Magento\Framework\Translate\InlineInterface;
use Magento\Framework\View\DesignInterface;
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\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;
use function ob_start;

final class HtmlRenderer extends AbstractRenderer
{
/**
* @var State
*/
private $appState;

private $design;

/**
* @var LayoutInitiatorInterface
*/
Expand All @@ -52,6 +61,8 @@ final class HtmlRenderer extends AbstractRenderer
private $template;

public function __construct(
State $appState,
DesignInterface $design,
Filesystem $filesystem,
LayoutInitiatorInterface $layoutInitiator,
Config $pageConfig,
Expand All @@ -60,6 +71,8 @@ public function __construct(
ViewFileSystem $viewFileSystem,
string $template
) {
$this->appState = $appState;
$this->design = $design;
$this->layoutInitiator = $layoutInitiator;
$this->pageConfigRenderer = $rendererFactory->create(['pageConfig' => $pageConfig]);
$this->translateInline = $translateInline;
Expand All @@ -74,6 +87,23 @@ public function __construct(
*/
public function render(array $data): string
{
return $this->appState->emulateAreaCode(
Area::AREA_FRONTEND,
function () use ($data): string { return $this->renderHtml($data); }
);
}

/**
* @param array $data
* @return string
* @throws Exception
*/
private function renderHtml(array $data): string
{
// Workaround for emulated area code
$this->design->setArea($this->design->getArea());
$this->design->setDefaultDesignTheme();

$layout = $this->layoutInitiator->createLayout();

/** @var Template $block */
Expand Down
6 changes: 0 additions & 6 deletions Service/Export/Renderer/HtmlRenderer/LayoutInitiator.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,7 @@ public function createLayout(): LayoutInterface
'generatorPool' => $this->layoutGeneratorPool,
]);

$layout->getUpdate()->addHandle('default');
$layout->getUpdate()->addHandle($this->defaultLayoutHandle);
/** @var Merge $update */
$update = $layout->getUpdate();
if ($update->isLayoutDefined()) {
$update->removeHandle('default');
}

return $this->addConfigLayout($layout);
}
Expand Down
16 changes: 12 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
"magento",
"magento2",
"gdpr",
"rgpd"
"rgpd",
"privacy"
],
"require": {
"php": ">=7.2",
"php": "^7.2",
"ext-zip": "*",
"mikehaertl/phpwkhtmltopdf": "^2.3.1",
"tecnickcom/tcpdf": "^6.3",
"magento/framework": "^102.0.0",
"magento/module-backend": "^101.0.0",
"magento/module-config": "^101.1.0",
Expand All @@ -25,7 +26,8 @@
"magento/module-theme": "^101.0.0"
},
"require-dev": {
"magento/marketplace-eqp": "^1.0.0",
"magento/magento-coding-standard": "^5",
"magento/marketplace-eqp": "^4.0",
"roave/security-advisories": "dev-master"
},
"type": "magento2-module",
Expand All @@ -39,6 +41,12 @@
"email": "[email protected]",
"homepage": "https://opengento.fr/",
"role": "lead"
},
{
"name": "Thomas Klein",
"email": "[email protected]",
"homepage": "https://www.linkedin.com/in/thomas-klein/",
"role": "maintainer"
}
],
"support": {
Expand Down
4 changes: 3 additions & 1 deletion view/base/layout/customer_privacy_export_personal_data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@
<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>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<css src="Opengento_Gdpr::css/export.css"/>
<title>My Personal Data</title>
</head>
<body>
<referenceContainer name="main">
<block name="main.content.customer.privacy.export.personal.data" template="Opengento_Gdpr::export/result.phtml" cacheable="false"/>
<block class="Magento\Framework\View\Element\Template" name="main.content.customer.privacy.export.personal.data" template="Opengento_Gdpr::export/result.phtml" cacheable="false"/>
</referenceContainer>
</body>
</page>
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
-->
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
<block class="Magento\Framework\View\Element\RendererList" name="opengento.gdpr.customer.privacy.export.renderers">
<block name="opengento.gdpr.customer.privacy.export.renderers.default" as="default"/>
<block class="Magento\Framework\View\Element\Template" name="opengento.gdpr.customer.privacy.export.renderers.default" as="default"/>
</block>
</layout>
42 changes: 33 additions & 9 deletions view/base/templates/export/renderer/default.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,42 @@ $escaper = $escaper ?? $block;
$rendererList = $block->getChildBlock('exportRenderer');
/** @var DataObject $viewModel */
$viewModel = $block->getData('viewModel');

$exportData = array_filter($viewModel->toArray());

if (!function_exists('formatLabel')) {
function formatLabel(string $label): string
{
return ucwords(str_replace('_', ' ', $label));
}
}
if (!function_exists('renderNestedItems')) {
function renderNestedItems(array $items, $escaper): string
{
$items = array_filter($items);
if (!$items) {
return '';
}

$html = '<ul class="items">';
foreach ($items as $key => $item) {
$html .= '<li class="item"><span class="label">' . $escaper->escapeHtml(formatLabel($key)) . '</span>: ';
$html .= is_array($item)
? renderNestedItems($item, $escaper)
: '<span class="value">' . $escaper->escapeHtml($item) .'</span>';
$html .= '</li>';
}
$html .= '</ul>';

return $html;
}
}
?>
<?php foreach ($viewModel->toArray() as $key => $value): ?>
<?php foreach ($exportData as $key => $value): ?>
<div class="fieldset info export-data-<?= $escaper->escapeHtmlAttr($key) ?>">
<div class="legend"><span><?= $escaper->escapeHtml($key) ?></span></div>
<div class="legend"><span><?= $escaper->escapeHtml(formatLabel($key)) ?></span></div>
<div class="field field-<?= $escaper->escapeHtmlAttr($key) ?>">
<?php if (is_array($value)): ?>
<pre>
<?= print_r($value, true) ?>
</pre>
<?php elseif ($value): ?>
<p><?= $escaper->escapeHtml($value) ?></p>
<?php endif; ?>
<?= renderNestedItems($value, $escaper) ?>
</div>
</div>
<?php endforeach; ?>
6 changes: 1 addition & 5 deletions view/base/templates/export/result.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,5 @@ $rendererList = $block->getLayout()->getBlock('opengento.gdpr.customer.privacy.e
$viewModel = $block->getData('viewModel');
?>
<?php foreach ($viewModel->toArray() as $key => $value): ?>
<?=
$rendererList->getRenderer($key, 'default', 'Opengento_Gdpr::export/renderer/default.phtml')
->setData('viewModel', new DataObject([$key => $value]))
->toHtml()
?>
<?= $rendererList->getRenderer($key, 'default', 'Opengento_Gdpr::export/renderer/default.phtml')->setData('viewModel', new DataObject([$key => $value]))->toHtml() ?>
<?php endforeach; ?>
22 changes: 22 additions & 0 deletions view/base/web/css/export.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/**
* Copyright © OpenGento, All rights reserved.
* See LICENSE bundled with this library for license details.
*/

.customer-privacy-export-personal-data {
.fieldset {
.legend {
font-weight: 600;
text-transform: capitalize;
}
}
.items {
.item {
.label {
font-weight: 600;
text-decoration: underline;
text-transform: capitalize;
}
}
}
}

0 comments on commit 8f6d2b8

Please sign in to comment.