Compare commits

..

73 Commits

Author SHA1 Message Date
df236f4bfd add phpunit dependencies 2025-03-03 13:50:51 +01:00
2af2e3bbcc update version number 2025-01-02 10:45:02 +01:00
ba123ad789 code cleanup 2024-12-19 16:28:29 +01:00
889f721279 add support for OXID 7.2 | update version number | update changelog 2024-12-19 16:28:10 +01:00
0f6c3c41af update old module installation commands 2024-12-19 16:26:23 +01:00
a4bd6d5bfd add support for OXID 7.2 2024-12-19 15:31:35 +01:00
2b0a3dc2a1 use new templaterenderer because old can't be used 2024-12-19 14:21:49 +01:00
47a0759ced import "field" | change return type declaration 2024-12-17 15:14:51 +01:00
2838ab70be add missing entry 2024-12-17 14:06:18 +01:00
3a34f0e5f5 re-add missing function 2024-12-17 13:53:15 +01:00
07224f9530 parse manufacturer longdesc through Smarty 2024-12-09 06:35:42 +01:00
b278f8a185 generate field long name by shop method, assert return type 2024-12-09 06:35:17 +01:00
bb6b465445 remove unused assignment 2024-12-09 06:34:33 +01:00
6f7acce537 remove unset logo variable 2024-12-03 09:56:42 +01:00
ed92b443f9 [Changed] Changelog 2024-11-22 22:19:09 +01:00
cb0bd3fc0b [Fixed] method usage to get setting and missing closing tag 2024-11-22 22:13:54 +01:00
3d2cb0e94b [Removed] unnecessary config get 2024-11-22 22:13:28 +01:00
99854e9409 [Fixed] wrong img 2024-11-22 22:06:04 +01:00
a790ebcb07 [Added] missing twig translation 2024-11-22 22:05:56 +01:00
ef5f4039d0 [Changed] extension of Config instead of ArticleDetails; [Fixed] wrong usage of modSetting getter
more general, global take
2024-11-22 22:00:04 +01:00
eb489933c9 [Fixed] unnecessary use 2024-11-22 21:44:06 +01:00
ce4a96c279 [Added] manufacturer to details; Component\ArticleDetails extension
method to call the settings on the details page
2024-11-22 21:38:55 +01:00
beb67d992e [Added] manufacturer longdesc to details page 2024-11-22 21:14:52 +01:00
13ee1b7340 [Changed] metadata && changelog 2024-11-22 20:20:31 +01:00
8bbe6262af rename incorrect language files by mistake ¯\(°_o)/¯ 2024-11-22 20:16:50 +01:00
ca9f9141ce change logo 2024-11-22 20:16:50 +01:00
5a6f8a1577 make displaying manufacturer information on manufacturer list page configurable 2024-11-22 20:16:40 +01:00
fcecc396df decode longdesc for manufacturer list page 2024-11-22 20:15:34 +01:00
dfdc0b1ecd [Added] 2.x changelog entries 2024-11-22 20:15:32 +01:00
7d5eeb59d2 fix links in changelog 2024-11-22 20:12:50 +01:00
bd9b8b6515 improve manufacturer block content 2024-11-22 20:12:25 +01:00
27cb316b74 fix WYSIWYG editor content 2024-11-22 20:08:47 +01:00
c99a7bc93c fix CHANGELOG 2024-11-22 20:07:59 +01:00
d7865aebe4 [Changed] potential solution manufacturer longdesc 2024-11-21 00:31:01 +01:00
febe1e7f8c [Fixed] tab pane styling; wrong config-variable 2024-11-21 00:00:31 +01:00
45e719d9f3 [Changed] clear code 2024-11-21 00:00:07 +01:00
d269745dac [Removed] unnecessary extension 2024-11-20 23:59:51 +01:00
77cb1d4594 [Changed] metadata && changelog 2024-11-20 19:28:47 +01:00
449f901976 [Added] new setting adjustments for twig 2024-11-20 19:11:15 +01:00
8794a005d7 [Fixed] missing translations 2024-11-20 18:54:00 +01:00
4c374ff39c [Fixed] empty var 2024-11-20 18:51:50 +01:00
8f046ed231 [Changed] php cs fixer adjustments 2024-11-20 18:50:18 +01:00
8d3421450b [Added] php cs fixer 2024-11-20 18:12:10 +01:00
b46175f5ab [Changed] property name to lower-case 2024-11-20 17:52:46 +01:00
99ea814987 [Added] php cs fixer 2024-11-20 17:51:07 +01:00
38b12bc3c0 add noencode 2024-11-20 17:49:43 +01:00
ebb9450812 [Fixed] dont hite "save" button on larger input form 2024-11-20 17:49:26 +01:00
64a70921c5 [Fixed] show no content on empty elements 2024-11-20 17:47:12 +01:00
ab0ea6cea7 [Fixed] installation instructions 2024-11-20 17:46:25 +01:00
fe7f3aa621 [Fixed] html entity code 2024-11-20 17:45:00 +01:00
2882aac57e make displaying manufacturer tab on details page configurable 2024-11-20 17:41:53 +01:00
8eaa97d889 display manufacturer content as additional tab on article details page 2024-11-20 17:41:28 +01:00
2ef3223e86 show manufacturer on article details page if manufacturer hasn't an icon 2024-11-20 17:40:58 +01:00
58663d9918 [Changed] readme 2024-11-20 17:40:32 +01:00
b5b4268335 [Fixed] readme 2024-11-18 19:17:13 +01:00
dfd4367066 [Added] extension 2024-11-18 19:16:05 +01:00
e61438f937 [Added] list block extension 2024-11-18 19:15:28 +01:00
1c2ee9f4f0 [Changed] README 2024-11-16 18:30:42 +01:00
1dc39f4fdd [Changed] changelog 2024-11-16 18:28:18 +01:00
c9ac21c4bb [Changed] deprecated method names 2024-11-16 18:14:54 +01:00
21e6d764cc [Changed] improved dynamization of the code 2024-11-16 17:45:20 +01:00
bf30cf85dc [Added] intellisense connection 2024-11-16 17:43:44 +01:00
56d8bbdd72 [Fixed] used stylesheet 2024-11-16 17:27:30 +01:00
c215ef5eef [Changed] to OXID 7 functionality 2024-11-16 17:27:17 +01:00
ce264a357e [Fixed] migration-yaml 2024-11-16 16:07:24 +01:00
75beb308d8 [Added] twig admin template 2024-11-16 16:03:22 +01:00
00a8017731 [Changed] template names 2024-11-16 16:03:12 +01:00
67f7bcb77f [Changed] deprecated code 2024-11-16 16:02:54 +01:00
6e960b34b2 [Added] twig admin lang files 2024-11-16 15:56:32 +01:00
67240260b2 [Fixed] missing namespace entry 2024-11-16 14:36:17 +01:00
58ef4bb533 [Fixed] missing namespace entry 2024-11-16 14:35:43 +01:00
3e30e0491b [Changed] rework for OXID 7 2024-11-16 14:33:16 +01:00
a7dfae8c5d [Changed] rework for OXID 7 2024-11-16 13:50:58 +01:00
24 changed files with 465 additions and 140 deletions

View File

@ -1,10 +1,10 @@
<?php <?php
$finder = PhpCsFixer\Finder::create() $finder = PhpCsFixer\Finder::create()
->in(__DIR__) ->in(__DIR__)
; ;
$header = <<<EOF $header = <<<EOF
Copyright (c) D3 Data Development (Inh. Thomas Dartsch) Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
For the full copyright and license information, please view For the full copyright and license information, please view
@ -17,18 +17,18 @@ https://www.d3data.de
@link https://www.oxidmodule.com @link https://www.oxidmodule.com
EOF; EOF;
$config = new PhpCsFixer\Config(); $config = new PhpCsFixer\Config();
return $config->setRules([ return $config->setRules([
'@PHP80Migration' => true, '@PHP80Migration' => true,
'@PSR12' => true, '@PSR12' => true,
'header_comment' => [ 'header_comment' => [
'comment_type' => 'PHPDoc', 'comment_type' => 'PHPDoc',
'header' => $header, 'header' => $header,
'location' => 'after_open', 'location' => 'after_open',
'separate' => 'both', 'separate' => 'both',
], ],
'php_unit_test_class_requires_covers' => true, 'php_unit_test_class_requires_covers' => true,
'doctrine_annotation_indentation' => true, 'doctrine_annotation_indentation' => true,
]) ])
->setFinder($finder) ->setFinder($finder)
; ;

View File

@ -17,11 +17,12 @@ declare(strict_types=1);
namespace D3\ManufacturerInformation\Application\Controller\Admin; namespace D3\ManufacturerInformation\Application\Controller\Admin;
use D3\ManufacturerInformation\Application\Model\Constants;
use D3\ManufacturerInformation\Modules\Application\Model\D3ManufacturerLongDesc; use D3\ManufacturerInformation\Modules\Application\Model\D3ManufacturerLongDesc;
use Exception;
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController; use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
use OxidEsales\Eshop\Application\Model\Manufacturer; use OxidEsales\Eshop\Application\Model\Manufacturer;
use OxidEsales\Eshop\Core\Registry; use OxidEsales\Eshop\Core\Registry;
use stdClass;
class ManufacturerInfoLongdesc extends AdminDetailsController class ManufacturerInfoLongdesc extends AdminDetailsController
{ {
@ -32,12 +33,13 @@ class ManufacturerInfoLongdesc extends AdminDetailsController
{ {
parent::render(); parent::render();
$this->_aViewData['edit'] = $oManufacturer = oxNew(\OxidEsales\Eshop\Application\Model\Manufacturer::class); /** @var Manufacturer|D3ManufacturerLongDesc $oManufacturer */
$this->_aViewData['edit'] = $oManufacturer = oxNew(Manufacturer::class);
$sOXID = $this->_aViewData["oxid"] = $this->getEditObjectId(); $sOXID = $this->_aViewData["oxid"] = $this->getEditObjectId();
if (isset($sOXID) && $sOXID != "-1") { if (isset($sOXID) && $sOXID != "-1") {
// load object // load object
$d3manufacturerlang = \OxidEsales\Eshop\Core\Registry::getConfig()->getRequestParameter("catlang"); $d3manufacturerlang = Registry::getRequest()->getRequestEscapedParameter("catlang");
if (!isset($d3manufacturerlang)) { if (!isset($d3manufacturerlang)) {
$d3manufacturerlang = $this->_iEditLang; $d3manufacturerlang = $this->_iEditLang;
@ -52,28 +54,28 @@ class ManufacturerInfoLongdesc extends AdminDetailsController
$this->_aViewData['readonly'] = true; $this->_aViewData['readonly'] = true;
} }
foreach (\OxidEsales\Eshop\Core\Registry::getLang()->getLanguageNames() as $id => $language) { foreach (Registry::getLang()->getLanguageNames() as $id => $language) {
$oLang = new \stdClass(); $oLang = new stdClass();
$oLang->sLangDesc = $language; $oLang->sLangDesc = $language;
$oLang->selected = ($id == $this->_iEditLang); $oLang->selected = ($id == $this->_iEditLang);
$this->_aViewData["otherlang"][$id] = clone $oLang; $this->_aViewData["otherlang"][$id] = clone $oLang;
} }
} }
$this->_aViewData["editor"] = $this->generateTextEditor("100%", 280, $oManufacturer, "oxmanufacturers__d3description", "list.tpl.css"); $this->_aViewData["editor"] = $this->generateTextEditor("100%", 280, $oManufacturer, $oManufacturer->getD3LongDescTableColumnName(), "list.css");
return "d3manufacturerlongdesc.tpl"; return "@d3manufacturerinformation/admin/d3manufacturerlongdesc";
} }
/** /**
* @return void * @return void
* @throws \Exception * @throws Exception
*/ */
public function save() public function save(): void
{ {
parent::save(); parent::save();
$iManufacturerLang = intval(\OxidEsales\Eshop\Core\Registry::getConfig()->getRequestParameter("catlang")); $iManufacturerLang = intval(Registry::getRequest()->getRequestEscapedParameter("catlang"));
$sOXID = $this->getEditObjectId(); $sOXID = $this->getEditObjectId();
$this->setEditObjectId($sOXID); $this->setEditObjectId($sOXID);
@ -92,8 +94,8 @@ class ManufacturerInfoLongdesc extends AdminDetailsController
$aParams = Registry::getRequest()->getRequestEscapedParameter("editval"); $aParams = Registry::getRequest()->getRequestEscapedParameter("editval");
$oManufacturer->assign($aParams); $oManufacturer->assign($aParams);
if (false === is_null($this->d3GetLongdescParamValue())) { if (false === is_null($this->d3GetLongdescParamValue($oManufacturer))) {
$oManufacturer->d3SetLongdesc($this->d3GetLongdescParamValue()); $oManufacturer->d3SetLongdesc($this->d3GetLongdescParamValue($oManufacturer));
$oManufacturer->save(); $oManufacturer->save();
} }
} }
@ -101,7 +103,7 @@ class ManufacturerInfoLongdesc extends AdminDetailsController
/** /**
* @return string * @return string
*/ */
public function d3GetLongdescParamValue(): string public function d3GetLongdescParamValue(Manufacturer $oManufacturer): string
{ {
return (string) Registry::getRequest()->getRequestEscapedParameter("editval")['oxmanufacturers__d3description']; return (string) Registry::getRequest()->getRequestEscapedParameter("editval")['oxmanufacturers__d3description'];
} }
@ -114,7 +116,7 @@ class ManufacturerInfoLongdesc extends AdminDetailsController
* *
* @return mixed * @return mixed
*/ */
protected function _processLongDesc($sValue) protected function processLongDesc($sValue): mixed
{ {
$aSearch = ['&amp;nbsp;', '&amp;', '&quot;', '&lang=', '<p>&nbsp;</p>', '<p>&nbsp; </p>']; $aSearch = ['&amp;nbsp;', '&amp;', '&quot;', '&lang=', '<p>&nbsp;</p>', '<p>&nbsp; </p>'];
$aReplace = ['&nbsp;', '&', '"', '&amp;lang=', '', '']; $aReplace = ['&nbsp;', '&', '"', '&amp;lang=', '', ''];

View File

@ -18,10 +18,10 @@ $sLangName = "Deutsch";
// RESOURCE IDENTITFIER = STRING // RESOURCE IDENTITFIER = STRING
// ------------------------------- // -------------------------------
$aLang = [ $aLang = [
'charset' => 'UTF-8', 'charset' => 'UTF-8',
'mxd3manufacturerinfolongdesc' => 'Text', 'mxd3manufacturerinfolongdesc' => 'Langtext',
'SHOP_MODULE_GROUP_d3manufacturerinformation_main' => 'Settings', 'SHOP_MODULE_GROUP_d3manufacturerinformation_main' => 'Einstellungen',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnDetailsPage' => 'show existing manufacturer texts on item details page as a tab', 'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnDetailsPage' => 'vorhandene Herstellertexte auf Artikeldetails als Tab anzeigen',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnManufacturerPage' => 'show manufacturer texts on manufacturer page', 'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnManufacturerPage' => 'Herstellertexte auf Herstellerseite anzeigen',
]; ];

View File

@ -18,10 +18,10 @@ $sLangName = "Deutsch";
// RESOURCE IDENTITFIER = STRING // RESOURCE IDENTITFIER = STRING
// ------------------------------- // -------------------------------
$aLang = [ $aLang = [
'charset' => 'UTF-8', 'charset' => 'UTF-8',
'mxd3manufacturerinfolongdesc' => 'Langtext', 'mxd3manufacturerinfolongdesc' => 'Text',
'SHOP_MODULE_GROUP_d3manufacturerinformation_main' => 'Einstellungen', 'SHOP_MODULE_GROUP_d3manufacturerinformation_main' => 'Settings',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnDetailsPage' => 'vorhandene Herstellertexte auf Artikeldetails als Tab anzeigen', 'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnDetailsPage' => 'show existing manufacturer texts on item details page as a tab',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnManufacturerPage' => 'Herstellertexte auf Herstellerseite anzeigen', 'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnManufacturerPage' => 'show manufacturer texts on manufacturer page',
]; ];

View File

@ -0,0 +1,27 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Max Buhe, Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
$sLangName = "Deutsch";
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = [
'charset' => 'UTF-8',
'mxd3manufacturerinfolongdesc' => 'Langtext',
'SHOP_MODULE_GROUP_d3manufacturerinformation_main' => 'Einstellungen',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnDetailsPage' => 'vorhandene Herstellertexte auf Artikeldetails als Tab anzeigen',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnManufacturerPage' => 'Herstellertexte auf Herstellerseite anzeigen',
];

View File

@ -0,0 +1,27 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Max Buhe, Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
$sLangName = "Deutsch";
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = [
'charset' => 'UTF-8',
'mxd3manufacturerinfolongdesc' => 'Text',
'SHOP_MODULE_GROUP_d3manufacturerinformation_main' => 'Settings',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnDetailsPage' => 'display existing manufacturer texts on item details as a tab',
'SHOP_MODULE_d3manufacturerinformation_showManufacturertextOnManufacturerPage' => 'show manufacturer texts on manufacturer page',
];

View File

@ -1,18 +1,20 @@
[{$smarty.block.parent}] [{$smarty.block.parent}]
[{assign var="registry" value="\OxidEsales\Eshop\Core\Registry"|@oxNew}]
[{assign var="oConfig" value=$registry->getConfig()}]
[{assign var="oManufacturer" value=$oView->getManufacturer()}] [{assign var="oManufacturer" value=$oView->getManufacturer()}]
[{if $oManufacturer && $oManufacturer->getId()}] [{if $oManufacturer && $oManufacturer->getId()}]
[{assign var="oConfig" value=$oViewConf->getConfig()}]
[{assign var="sShopURL" value=$oConfig->getConfigParam('sShopURL')}] [{assign var="sShopURL" value=$oConfig->getConfigParam('sShopURL')}]
[{assign var="description" value=$oManufacturer->d3GetLongdesc()}] [{assign var="description" value=$oManufacturer->d3GetLongdesc()}]
[{if $oConfig->getConfigParam('d3manufacturerinformation_showManufacturertextOnDetailsPage') && $description->rawValue|strip_tags|trim}] [{if $oConfig->d3GetBoolModuleSettingByName('_showManufacturertextOnDetailsPage') && $description|strip_tags|trim}]
[{capture append="tabs"}]<a href="#manufacturertab" class="nav-link[{if $blFirstTab}] active[{/if}]" data-toggle="tab">[{oxmultilang ident="D3_MANUFACTURERINFO_TAB"}]</a>[{/capture}] [{capture append="tabs"}]<a href="#manufacturertab" class="nav-link[{if $blFirstTab}] active[{/if}]" data-toggle="tab">[{oxmultilang ident="D3_MANUFACTURERINFO_TAB"}]</a>[{/capture}]
[{capture append="tabsContent"}] [{capture append="tabsContent"}]
<div id="manufacturertab" class="tab-pane[{if $blFirstTab}] active[{/if}]"> <div id="manufacturertab" class="tab-pane[{if $blFirstTab}] active[{/if}]">
[{oxeval var=$description}] [{oxeval var=$description}]
</div> </div>
[{assign var="blFirstTab" value=false}] [{assign var="blFirstTab" value=false}]
[{/capture}] [{/capture}]
[{/if}] [{/if}]
[{/if}] [{/if}]

View File

@ -4,35 +4,52 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [unreleased](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.4.1...rel_1.1.x) ## [unreleased](https://git.d3data.de/D3Private/manufacturer-information/compare/2.1.0.0...rel_2.x)
## [1.1.4.1](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.4.0...1.1.4.1) - 2024-12-12 ## [2.0.3.0](https://git.d3data.de/D3Private/manufacturer-information/compare/2.0.2.0...2.0.3.0) - 2024-12-19
### Added
- Dynamic Template Renderer Support
- Support for OXID 7.2
## [2.0.2.0](https://git.d3data.de/D3Private/manufacturer-information/compare/2.0.1.0...2.0.2.0) - 2024-11-22
### Fixed ### Fixed
- fix wrong admin menu section - template code
- module image file
### Added
- Config method and extension
- missing twig translation
## [1.1.4.0](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.3.1...1.1.4.0) - 2024-12-05 ## [2.0.1.0](https://git.d3data.de/D3Private/manufacturer-information/compare/2.0.0.0...2.0.1.0) - 2024-11-20
### Fixed
- show hidden save button
- installation instructions
- show manufacturer link on article details page, if manufacturer hasn't an icon
- prevent encoding HTML entities
### Added ### Added
- longdesc will parsed by Smarty - display manufacturer content as additional tab on article details page
- make displaying manufacturer tab on details page configurable
## [1.1.3.1](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.3.0...1.1.3.1) - 2024-11-26 - hide empty HTML elements content
### Fixed
- rename language files
### Changed
- switch to open source
## [1.1.3.0](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.2.1...1.1.3.0) - 2024-11-22
### Fixed
- content encoding on manufacturers list page
## [2.0.0.0](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.2.1...2.0.0.0) - 2024-11-16
### Added ### Added
- displaying content on manufacturers list page configurable - installability OXID 7.0 - 7.1
## [1.1.2.1](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.2.0...1.1.2.1) - 2024-11-21 ## [1.1.2.1](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.2.0...1.1.2.1) - 2024-11-21
### Fixed ### Fixed
- tab class for Wave based theme - show hidden save button
- encoding error when using the WYSIWYG editor - installation instructions
- show manufacturer link on article details page, if manufacturer hasn't an icon
- prevent encoding HTML entities
### Added
- display manufacturer content as additional tab on article details page
- make displaying manufacturer tab on details page configurable
- hide empty HTML elements content
## [2.0.0.0](https://git.d3data.de/D3Public/MyModule/compare/1.0.0.0...1.1.0.0) - 2024-11-16
### Added
- installability OXID 7.0 - 7.1
## [1.1.2.0](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.1.0...1.1.2.0) - 2024-11-19 ## [1.1.2.0](https://git.d3data.de/D3Private/manufacturer-information/compare/1.1.1.0...1.1.2.0) - 2024-11-19
### Fixed ### Fixed

View File

@ -16,8 +16,22 @@
namespace D3\ManufacturerInformation\Modules\Application\Model{ namespace D3\ManufacturerInformation\Modules\Application\Model{
use OxidEsales\Eshop\Application\Model\Manufacturer; use OxidEsales\Eshop\Application\Model\Manufacturer;
use OxidEsales\Eshop\Application\Model\ManufacturerList;
class D3ManufacturerLongDesc_parent extends Manufacturer class D3ManufacturerLongDesc_parent extends Manufacturer
{ {
} }
class ManufacturerInfoList_parent extends ManufacturerList
{
}
}
namespace D3\ManufacturerInformation\Modules\Core{
use OxidEsales\Eshop\Core\Config;
class ManufacturerConfig_parent extends Config
{
}
} }

View File

@ -18,7 +18,6 @@ declare(strict_types=1);
namespace D3\ManufacturerInformation\Modules\Application\Model; namespace D3\ManufacturerInformation\Modules\Application\Model;
use D3\ManufacturerInformation\Application\Model\Constants; use D3\ManufacturerInformation\Application\Model\Constants;
use OxidEsales\Eshop\Application\Model\Manufacturer;
use OxidEsales\Eshop\Core\Field; use OxidEsales\Eshop\Core\Field;
use OxidEsales\Eshop\Core\Registry; use OxidEsales\Eshop\Core\Registry;
@ -26,7 +25,7 @@ class D3ManufacturerLongDesc extends D3ManufacturerLongDesc_parent
{ {
/** /**
* @param string $sValue * @param string $sValue
* @return void * @return bool
*/ */
public function d3SetLongdesc(string $sValue): bool public function d3SetLongdesc(string $sValue): bool
{ {
@ -43,11 +42,20 @@ class D3ManufacturerLongDesc extends D3ManufacturerLongDesc_parent
} }
/** /**
* @return Field * @return field
*/ */
public function d3GetLongdesc(): Field public function d3GetLongdesc(): field
{ {
$longName = $this->_getFieldLongName(Constants::D3_OXMANUFACTURERS_LONGDESC_FIELDNAME); $longName = $this->getFieldLongName(Constants::D3_OXMANUFACTURERS_LONGDESC_FIELDNAME);
return $this->$longName ?: oxNew(Field::class); return $this->$longName ?: oxNew(Field::class);
} }
/**
* @return string
*/
public function getD3LongDescTableColumnName(): string
{
return $this->getViewName(true).'__'.Constants::D3_OXMANUFACTURERS_LONGDESC_FIELDNAME;
}
} }

View File

@ -17,11 +17,15 @@ declare(strict_types=1);
namespace D3\ManufacturerInformation\Modules\Application\Model; namespace D3\ManufacturerInformation\Modules\Application\Model;
use D3\ManufacturerInformation\Application\Model\Constants;
use OxidEsales\Eshop\Application\Model\Manufacturer; use OxidEsales\Eshop\Application\Model\Manufacturer;
use OxidEsales\Eshop\Application\Model\ManufacturerList;
use OxidEsales\Eshop\Core\Field; use OxidEsales\Eshop\Core\Field;
use OxidEsales\Eshop\Core\Registry; use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Core\UtilsView;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use OxidEsales\EshopCommunity\Internal\Framework\Module\Facade\ModuleSettingService;
use OxidEsales\EshopCommunity\Internal\Framework\Module\Facade\ModuleSettingServiceInterface;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererBridgeInterface;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererInterface;
class ManufacturerInfoList extends ManufacturerInfoList_parent class ManufacturerInfoList extends ManufacturerInfoList_parent
{ {
@ -29,27 +33,33 @@ class ManufacturerInfoList extends ManufacturerInfoList_parent
* @param Manufacturer|D3ManufacturerLongDesc $oManufacturer * @param Manufacturer|D3ManufacturerLongDesc $oManufacturer
* @return void * @return void
*/ */
protected function _addCategoryFields($oManufacturer) protected function addCategoryFields($oManufacturer): void
{ {
parent::_addCategoryFields($oManufacturer); parent::addCategoryFields($oManufacturer);
if (Registry::getConfig()->getConfigParam('d3manufacturerinformation_showManufacturertextOnManufacturerPage')) { /** @var ModuleSettingService $setting */
/** @var \OxidEsales\Eshop\Core\UtilsView $oUtilsView */ $setting = ContainerFactory::getInstance()->getContainer()->get(ModuleSettingServiceInterface::class);
if ($setting->getBoolean('d3manufacturerinformation_showManufacturertextOnManufacturerPage', 'd3manufacturerinformation')) {
/** @var UtilsView $oUtilsView */
$oUtilsView = Registry::getUtilsView(); $oUtilsView = Registry::getUtilsView();
$longdesc = $oManufacturer->d3GetLongdesc( )->getRawValue() ?? '';
$longdesc = $oManufacturer->d3GetLongdesc()->getRawValue() ?? '';
$deactivateSmarty = Registry::getConfig()->getConfigParam('deactivateSmartyForCmsContent'); $deactivateSmarty = Registry::getConfig()->getConfigParam('deactivateSmartyForCmsContent');
$processLongDescriptions = Registry::getConfig()->getConfigParam('bl_perfParseLongDescinSmarty'); $processLongDescriptions = Registry::getConfig()->getConfigParam('bl_perfParseLongDescinSmarty');
if (!$deactivateSmarty && $processLongDescriptions) { if (!$deactivateSmarty && $processLongDescriptions) {
$longdesc = $oUtilsView->parseThroughSmarty( $longdesc = $this->getRenderer()->renderFragment(
$longdesc, $longdesc,
$oManufacturer->getId() . $oManufacturer->getLanguage(), $oManufacturer->getId() . $oManufacturer->getLanguage(),
null, [],
true true
) ?? ''; ) ?? '';
} }
$oManufacturer->oxcategories__oxlongdesc = new Field(html_entity_decode($longdesc), Field::T_RAW); $oManufacturer->oxcategories__oxlongdesc = new Field(html_entity_decode($longdesc), Field::T_RAW);
} }
} }
private function getRenderer(): TemplateRendererInterface
{
return $this->getContainer()->get(TemplateRendererBridgeInterface::class)->getTemplateRenderer();
}
} }

View File

@ -0,0 +1,36 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Max Buhe, Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\ManufacturerInformation\Modules\Core;
use D3\ManufacturerInformation\Application\Model\Constants;
use OxidEsales\EshopCommunity\Core\Di\ContainerFacade;
use OxidEsales\EshopCommunity\Internal\Framework\Module\Facade\ModuleSettingServiceInterface;
class ManufacturerConfig extends ManufacturerConfig_parent
{
/**
* @param string $sName
* @return bool
*/
public function d3GetBoolModuleSettingByName(string $sName): bool
{
$moduleSettingService = ContainerFacade::get(ModuleSettingServiceInterface::class);
return $moduleSettingService->getBoolean(Constants::OXID_MODULE_ID.$sName, Constants::OXID_MODULE_ID);
}
}

View File

@ -2,10 +2,7 @@
# ![D3 Logo](https://logos.oxidmodule.com/d3logo_24x24.svg) Herstellerinformationen fĂĽr OXID eShop # ![D3 Logo](https://logos.oxidmodule.com/d3logo_24x24.svg) Herstellerinformationen fĂĽr OXID eShop
Fügt die Möglichkeit zur Langtextbeschreibung den Herstellern hinzu. Die Anzeige der Informationen erfolgt einstellbar auf der Herstellerübersicht und/oder als Infotab an den Artikeln der Herstellers. Fügt die Möglichkeit zur Langtextbeschreibung den Hersteller hinzu
**Diese Software wird unter einer kommerziellen Lizenz vertrieben.**
Kontaktieren Sie uns fĂĽr eine Nutzungslizenz vor der Installation.
## Inhaltsverzeichnis ## Inhaltsverzeichnis
@ -18,9 +15,10 @@ Dieses Paket erfordert einen mit Composer installierten OXID eShop in einer in d
Ă–ffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). FĂĽhren Sie die folgenden Befehle aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an. Ă–ffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). FĂĽhren Sie die folgenden Befehle aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an.
```bash ```bash
composer config repositories.d3manufacturerinformation vcs https://git.d3data.de/D3Public/manufacturer-information.git composer config repositories.d3manufacturerinformation vcs https://git.d3data.de/D3Public/manufacturer-information.git
composer require d3/manufacturerinformation:"~1.1.0" composer require d3/manufacturerinformation:"~2.0.0"
``` ```
Sofern nötig, bestätigen Sie bitte, dass Sie `package-name` erlauben, Code auszuführen. Sofern nötig, bestätigen Sie bitte, dass Sie `package-name` erlauben, Code auszuführen.
@ -28,17 +26,18 @@ Sofern nötig, bestätigen Sie bitte, dass Sie `package-name` erlauben, Code aus
```bash ```bash
./vendor/bin/oe-eshop-db_migrate migrations:migrate d3manufacturerinformation ./vendor/bin/oe-eshop-db_migrate migrations:migrate d3manufacturerinformation
./vendor/bin/oe-console o:m:i source/modules/d3/manufacturerinformation ./vendor/bin/oe-console oe:module:install source/modules/d3/manufacturerinformation
./vendor/bin/oe-console o:m:deact d3manufacturerinformation ./vendor/bin/oe-console oe:module:deactivate d3manufacturerinformation
./vendor/bin/oe-console o:m:act d3manufacturerinformation ./vendor/bin/oe-console oe:module:activate d3manufacturerinformation
./vendor/bin/oe-eshop-db_views_generate ./vendor/bin/oe-eshop-db_views_generate
``` ```
Leeren Sie anschlieĂźend den Temp Ordner des Shops. Leeren Sie anschlieĂźend den Temp Ordner des Shops.
## Lizenz ## Lizenz
(Stand: 13.11.2024) (Stand: 19.12.2024)
``` ```
Copyright (c) D3 Data Development (Inh. Thomas Dartsch) Copyright (c) D3 Data Development (Inh. Thomas Dartsch)

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -6,7 +6,9 @@
"oxid", "oxid",
"modules", "modules",
"eShop", "eShop",
"d3" "d3",
"manufacturer",
"information"
], ],
"authors": [ "authors": [
{ {
@ -24,30 +26,21 @@
"proprietary" "proprietary"
], ],
"require": { "require": {
"php": "~7.1 || ~8.0", "php": "^8.0",
"oxid-esales/oxideshop-ce": "v6.6.0 - v6.14.3" "oxid-esales/oxideshop-ce": "7.0 - 7.2"
}, },
"require-dev": { "require-dev": {
"oxid-esales/oxideshop-ce": "~6.14.0", "friendsofphp/php-cs-fixer": "^3.9",
"friendsofphp/php-cs-fixer": "^3.9" "phpunit/phpunit": "^9.1.1"
},
"extra": {
"oxideshop": {
"blacklist-filter": [
"*.md",
"composer.json",
".php-cs-fixer.php",
"*.neon"
],
"target-directory": "d3/manufacturerinformation"
}
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"D3\\ManufacturerInformation\\": "../../../source/modules/d3/manufacturerinformation" "D3\\ManufacturerInformation\\": ""
} }
}, },
"scripts": { "scripts": {
"phpunit": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --config=vendor/d3/manufacturerinformation/Tests/ --no-coverage",
"phpunit-coverage": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --config=vendor/d3/manufacturerinformation/Tests/ --coverage-html=vendor/d3/manufacturerinformation/tests/result/coverage",
"php-cs-fixer_audit": "./vendor/bin/php-cs-fixer list-files --config=./vendor/d3/manufacturerinformation/.php-cs-fixer.php", "php-cs-fixer_audit": "./vendor/bin/php-cs-fixer list-files --config=./vendor/d3/manufacturerinformation/.php-cs-fixer.php",
"php-cs-fixer_fix": "./vendor/bin/php-cs-fixer fix --config=./vendor/d3/manufacturerinformation/.php-cs-fixer.php" "php-cs-fixer_fix": "./vendor/bin/php-cs-fixer fix --config=./vendor/d3/manufacturerinformation/.php-cs-fixer.php"
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-15"?> <?xml version="1.0" encoding="ISO-8859-15"?>
<OX> <OX>
<OXMENU id="NAVIGATION_ESHOPADMIN"> <OXMENU id="NAVIGATION_ESHOPADMIN">
<MAINMENU id="mxmainmenu"> <MAINMENU id="mxuadmin">
<SUBMENU id="mxmanufacturer" cl="manufacturer" list="manufacturer_list"> <SUBMENU id="mxmanufacturer" cl="manufacturer" list="manufacturer_list">
<TAB id="mxd3manufacturerinfolongdesc" cl="d3manufacturerinfolongdesc" /> <TAB id="mxd3manufacturerinfolongdesc" cl="d3manufacturerinfolongdesc" />
</SUBMENU> </SUBMENU>

View File

@ -19,40 +19,43 @@ use D3\ManufacturerInformation\Application\Controller\Admin\ManufacturerInfoLong
use D3\ManufacturerInformation\Application\Model\Constants; use D3\ManufacturerInformation\Application\Model\Constants;
use D3\ManufacturerInformation\Modules\Application\Model\D3ManufacturerLongDesc; use D3\ManufacturerInformation\Modules\Application\Model\D3ManufacturerLongDesc;
use D3\ManufacturerInformation\Modules\Application\Model\ManufacturerInfoList; use D3\ManufacturerInformation\Modules\Application\Model\ManufacturerInfoList;
use D3\ManufacturerInformation\Modules\Core\ManufacturerConfig;
use OxidEsales\Eshop\Application\Model\Manufacturer as OEManufacturer; use OxidEsales\Eshop\Application\Model\Manufacturer as OEManufacturer;
use OxidEsales\Eshop\Application\Model\ManufacturerList as OEManufacturerList; use OxidEsales\Eshop\Application\Model\ManufacturerList as OEManufacturerList;
use OxidEsales\Eshop\Core\Config as OEConfig;
$sMetadataVersion = '2.1'; $sMetadataVersion = '2.1';
$sModuleId = Constants::OXID_MODULE_ID; $sModuleId = Constants::OXID_MODULE_ID;
$logo = '<img src="https://logos.oxidmodule.com/d3logo.svg" alt="(D3)" style="height:1em;width:1em">';
/** /**
* Module information * Module information
*/ */
$aModule = [ $aModule = [
'id' => $sModuleId, 'id' => $sModuleId,
'title' => $logo.' Herstellerinformationen', 'title' => [
'description' => [ 'de' => '(D3) Herstellerinformationen',
'en' => '(D3) Manufacturer information',
],
'description' => [
'de' => 'fĂĽgt Informationen der Hersteller zur Artikelliste hinzu', 'de' => 'fĂĽgt Informationen der Hersteller zur Artikelliste hinzu',
'en' => 'adds manufacturer information to the article list', 'en' => 'adds manufacturer information to the article list',
], ],
'thumbnail' => 'picture.svg', 'thumbnail' => 'picture.svg',
'version' => '1.1.4.1', 'version' => '2.0.3.0',
'author' => $logo.' Data Development (Inh.: Thomas Dartsch)', 'author' => '(D3) Data Development (Inh.: Thomas Dartsch)',
'email' => 'support@shopmodule.com', 'email' => 'support@shopmodule.com',
'url' => 'https://www.oxidmodule.com/', 'url' => 'https://www.oxidmodule.com/',
'controllers' => [ 'controllers' => [
"d3manufacturerinfolongdesc" => ManufacturerInfoLongdesc::class, "d3manufacturerinfolongdesc" => ManufacturerInfoLongdesc::class,
], ],
'extend' => [ 'extend' => [
OEManufacturer::class => D3ManufacturerLongDesc::class, OEManufacturer::class => D3ManufacturerLongDesc::class,
OEManufacturerList::class => ManufacturerInfoList::class, OEManufacturerList::class => ManufacturerInfoList::class,
OEConfig::class => ManufacturerConfig::class,
], ],
'templates' => [ 'templates' => [
'd3manufacturerlongdesc.tpl' => 'd3/manufacturerinformation/Application/views/admin/tpl/d3manufacturer_longdesc.tpl', '@' . Constants::OXID_MODULE_ID . '/admin/d3manufacturerlongdesc.tpl' => 'views/smarty/admin/d3manufacturerlongdesc.tpl',
], ],
'settings' => [ 'settings' => [
[ [
'group' => $sModuleId.'_main', 'group' => $sModuleId.'_main',
'name' => $sModuleId.'_showManufacturertextOnDetailsPage', 'name' => $sModuleId.'_showManufacturertextOnDetailsPage',
@ -66,7 +69,7 @@ $aModule = [
'value' => true, 'value' => true,
], ],
], ],
'blocks' => [ 'blocks' => [
[ [
'template' => 'page/details/inc/productmain.tpl', 'template' => 'page/details/inc/productmain.tpl',
'block' => 'details_productmain_manufacturersicon', 'block' => 'details_productmain_manufacturersicon',

View File

@ -28,7 +28,7 @@ final class Version20241023154223 extends AbstractMigration
{ {
public function getDescription(): string public function getDescription(): string
{ {
return 'Add the D3 manufacturer longdesc column'; return 'Adds the D3 manufacturer longdesc column';
} }
public function up(Schema $schema): void public function up(Schema $schema): void

View File

@ -28,7 +28,7 @@ final class Version20241028172608 extends AbstractMigration
{ {
public function getDescription(): string public function getDescription(): string
{ {
return 'Add multilang tables for the D3 manufacturer longdesc'; return 'Adds multilang tables for the D3 manufacturer longdesc';
} }
public function up(Schema $schema): void public function up(Schema $schema): void

View File

@ -1,4 +1,4 @@
name: D3 manufacturerinformation table_storage:
migrations_namespace: D3\ManufacturerInformation\Migrations table_name: d3migrations_manufacturerinformation
table_name: d3migrations_manufacturerinformation migrations_paths:
migrations_directory: data 'D3\ManufacturerInformation\Migrations': data

View File

@ -25,7 +25,7 @@
<input type="hidden" name="editlanguage" value="[{$editlanguage}]"> <input type="hidden" name="editlanguage" value="[{$editlanguage}]">
</form> </form>
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post" onSubmit="copyLongDesc( 'oxmanufacturers__d3description' );" style="padding: 0;margin: 0;height:0;"> <form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post" onSubmit="copyLongDesc( 'oxmanufacturers__d3description' );" style="padding: 0px;margin: 0px;height:0px;">
[{$oViewConf->getHiddenSid()}] [{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="d3manufacturerinfolongdesc"> <input type="hidden" name="cl" value="d3manufacturerinfolongdesc">
<input type="hidden" name="fnc" value=""> <input type="hidden" name="fnc" value="">

View File

@ -0,0 +1,41 @@
{% include "headitem.html.twig" with {title: "GENERAL_ADMIN_TITLE"|translate} %}
<script type="text/javascript">
function loadLang(obj)
{
var langvar = document.getElementById("catlang");
if (langvar != null )
langvar.value = obj.value;
document.myedit.submit();
}
</script>
{% if readonly %}
{% set readonly = "readonly disabled" %}
{% else %}
{% set readonly = "" %}
{% endif %}
<form name="transfer" id="transfer" action="{{ oViewConf.getSelfLink() }}" method="post">
{{ oViewConf.getHiddenSid()|raw }}
<input type="hidden" name="oxid" value="{{ oxid }}">
<input type="hidden" name="cl" value="d3manufacturerinfolongdesc">
<input type="hidden" name="editlanguage" value="{{ editlanguage }}">
</form>
<form name="myedit" id="myedit" action="{{ oViewConf.getSelfLink() }}" method="post" onSubmit="copyLongDesc( 'oxmanufacturers__d3description' );" style="padding: 0px;margin: 0px;height:0px;">
{{ oViewConf.getHiddenSid()|raw }}
<input type="hidden" name="cl" value="d3manufacturerinfolongdesc">
<input type="hidden" name="fnc" value="">
<input type="hidden" name="oxid" value="{{ oxid }}">
<input type="hidden" name="voxid" value="{{ oxid }}">
<input type="hidden" name="editval[oxmanufacturers__oxid]" value="{{ oxid }}">
<input type="hidden" name="catlang" value="{{ catlang }}">
<input type="hidden" name="editval[oxmanufacturers__d3description]" value="">
{% include "include/category_text_editor.html.twig" %}
</form>
{% include "bottomnaviitem.html.twig" %}
{% include "bottomitem.html.twig" %}

View File

@ -0,0 +1,20 @@
{% extends "page/details/inc/accordeon.html.twig" %}
{% block details_longdescription %}
{{ parent() }}
{% set oManufacturer = oView.getManufacturer() %}
{% set sShopURL = config.getConfigParam('sShopURL') %}
{% set description = oManufacturer.d3GetLongdesc() %}
{% if oManufacturer and config.d3GetBoolModuleSettingByName('_showManufacturertextOnDetailsPage') and description|striptags|trim %}
<div class="col-12 col-md-6">
<div id="manufacturer-collapsible" class="h4" data-bs-target="#manufacturer" data-bs-toggle="collapse" role="button" aria-expanded="false" aria-controls="manufacturer">
{{ translate({ ident: "D3_MANUFACTURERINFO_TAB" }) }}
</div>
<div id="manufacturer" class="collapse" aria-labelledby="manufacturer-collapsible">
{{ include(template_from_string(description)) }}
</div>
</div>
{% endif %}
{% endblock %}

View File

@ -0,0 +1,126 @@
{% extends "page/list/list.html.twig" %}
{% block page_list_listhead %}
{% if listType=='manufacturer' or listType=='vendor'%}
<div class="bg-white list-header mb-4">
<div class="container-xxl">
<div class="row">
<div class="col-12{% if actCategory.getIconUrl() %} col-md-6 order-2 order-md-1 {% endif %}">
{% if showPopBreadcrump %}
<div class="row">
{% include "widget/breadcrumb.html.twig" %}
</div>
{% endif %}
<h1{% if actCategory.oxcategories__oxthumb.value and actCategory.getThumbUrl() %} class="text-white"{% endif %}>
{{ actCategory.getTitle() }}
</h1>
{% if actCategory and actCategory.getShortDescription() and oPageNavigation.actPage == 1 %}
<div id="catDescLocator" class="categoryDescription pb-5">
{{ actCategory.getShortDescription()|raw() }}
</div>
{% endif %}
{% if actCategory.oxcategories__oxlongdesc.value and oPageNavigation.actPage == 1 %}
{% block d3_page_list_long_desc %}
<div id="d3catLongDescLocator" class="categoryDescription">
{{ include(template_from_string(actCategory.oxcategories__oxlongdesc)) }}
</div>
{% endblock %}
{% endif %}
</div>
{% if actCategory.getIconUrl() %}
<div class="col-12 col-md-6 order-1 order-md-1 py-4">
<img src="{{ actCategory.getIconUrl()|raw }}" alt="{{ translate({ ident: "MANUFACTURER_IMAGE_ALT", args: actCategory.getTitle() }) }}">
</div>
{% endif %}
</div>
</div>
</div>
{% else %}
<div class="bg-white list-header mb-4">
<div class="container-xxl">
<div class="row">
<div class="col-12{% if actCategory.oxcategories__oxthumb.value and actCategory.getThumbUrl() %} col-md-6 order-2 order-md-1 {% endif %}">
{% if showPopBreadcrump %}
<div class="row">
{% include "widget/breadcrumb.html.twig" %}
</div>
{% endif %}
<h1 class="h2">
{{ oView.getTitle() }}
</h1>
{% if actCategory and actCategory.getShortDescription() and oPageNavigation.actPage == 1 %}
<div id="catDescLocator" class="categoryDescription pb-3">
{{ actCategory.getShortDescription()|raw() }}
</div>
{% endif %}
{% if actCategory.oxcategories__oxlongdesc.value and oPageNavigation.actPage == 1 %}
{% block page_list_long_desc %}
<div id="catLongDescLocator" class="categoryDescription">
{{ include(template_from_string(actCategory.oxcategories__oxlongdesc)) }}
</div>
{% endblock %}
{% endif %}
</div>
{% if actCategory.oxcategories__oxthumb.value and actCategory.getThumbUrl() %}
<div class="col-12 col-md-6 order-1 order-md-1 py-4 text-right">
<img src="{{ actCategory.getThumbUrl()|raw }}" alt="{{ translate({ ident: "CATEGORY_IMAGE_ALT", args: actCategory.oxcategories__oxtitle.value }) }}" class="w-100 img-fluid">
</div>
{% endif %}
</div>
</div>
</div>
{% endif %}
{% if oView.hasVisibleSubCats() %}
<div class="container-xxl">
{% set iSubCategoriesCount = 0 %}
<div class="cat-list mb-4 pb-3">
{% for category in oView.getSubCatList() %}
{% if category.getIsVisible() %}
{% set iSubCategoriesCount = iSubCategoriesCount+1 %}
{% set iconUrl = category.getIconUrl() %}
{% if listType=='manufacturer' or listType=='vendor' %}
{% set iconAltAttribute = translate({ ident: "MANUFACTURER_IMAGE_ALT", args: category.oxcategories__oxtitle.value }) %}
{% else %}
{% set iconAltAttribute = translate({ ident: "CATEGORY_IMAGE_ALT", args: category.oxcategories__oxtitle.value }) %}
{% endif %}
<a href="{{ category.getLink()|raw }}" class="cat-list-item">
{% if iconUrl %}
<img loading="lazy" src="{{ category.getIconUrl()|raw }}" alt="{{ iconAltAttribute }}" class="cat-list-item-img">
{% else %}
<img loading="lazy" src="{{ oViewConf.getImageUrl('subcat-placeholder.png')|raw }}" alt="{{ iconAltAttribute }}" class="cat-list-item-img">
{% endif %}
<span class="cat-list-item-name">
{{ category.oxcategories__oxtitle.value }}
{% if oView.showCategoryArticlesCount() and (category.getNrOfArticles() > 0) %}
<span class="text-muted">({{ category.getNrOfArticles() }})</span>
{% endif %}
</span>
</a>
{% endif %}
{% if category.getContentCats() %}
{% for ocont in category.getContentCats() %}
<a href="{{ ocont.getLink()|raw }}" class="cat-list-item">
{% if listType=='manufacturer' or listType=='vendor' %}
{% set iconAltAttribute = translate({ ident: "MANUFACTURER_IMAGE_ALT", args: category.oxcategories__oxtitle.value }) %}
{% else %}
{% set iconAltAttribute = translate({ ident: "CATEGORY_IMAGE_ALT", args: category.oxcategories__oxtitle.value }) %}
{% endif %}
<img loading="lazy" src="{{ oViewConf.getImageUrl('subcat-placeholder.png')|raw }}" alt="{{ iconAltAttribute }}" class="cat-list-item-img">
<span class="cat-list-item-name">
{{ ocont.oxcontents__oxtitle.value }}
</span>
</a>
{% endfor %}
{% endif %}
{% endfor %}
</div>
</div>
{% endif %}
{% endblock %}