Skip to content
Merged

Beta #29

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"require": {
"php": "^8.1",
"tweakwise/magento2-tweakwise-export": "^7.0",
"emico/m2-attributelanding": "^6.0",
"emico/m2-attributelanding": "^6.0.5",
"ext-simplexml": "*",
"ext-libxml": "*"
},
Expand Down
22 changes: 22 additions & 0 deletions src/Api/Data/Api/Response/Catalog/LanguageResponseInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

declare(strict_types=1);

namespace Tweakwise\TweakwiseJs\Api\Data\Api\Response\Catalog;

interface LanguageResponseInterface
{
public const LANGUAGES = 'languages';
public const LANGUAGE = 'language';

/**
* @return array
*/
public function getLanguages(): array;

/**
* @param array $languages
* @return self
*/
public function setLanguages(array $languages): self;
}
34 changes: 34 additions & 0 deletions src/Api/Data/Api/Type/LanguageTypeInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

declare(strict_types=1);

namespace Tweakwise\TweakwiseJs\Api\Data\Api\Type;

interface LanguageTypeInterface
{
public const NAME = 'name';

public const KEY = 'key';

/**
* @return string
*/
public function getName(): string;

/**
* @param string $name
* @return self
*/
public function setName(string $name): self;

/**
* @return string
*/
public function getLanguageId(): string;

/**
* @param string $languageId
* @return self
*/
public function setLanguageId(string $languageId): self;
}
33 changes: 0 additions & 33 deletions src/Controller/Adminhtml/Page/Save.php

This file was deleted.

24 changes: 24 additions & 0 deletions src/Model/Api/Request/Catalog/LanguageRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

declare(strict_types=1);

namespace Tweakwise\TweakwiseJs\Model\Api\Request\Catalog;

use Tweakwise\TweakwiseJs\Model\Api\Request;
use Tweakwise\TweakwiseJs\Model\Api\Response\Catalog\LanguageResponse;

class LanguageRequest extends Request
{
/**
* @var string
*/
protected string $path = 'catalog/languages';

/**
* @return string
*/
public function getResponseType(): string
{
return LanguageResponse::class;
}
}
76 changes: 76 additions & 0 deletions src/Model/Api/Response/Catalog/LanguageResponse.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?php

declare(strict_types=1);

namespace Tweakwise\TweakwiseJs\Model\Api\Response\Catalog;

use Magento\Framework\Data\Collection\AbstractDb;
use Magento\Framework\Model\Context;
use Magento\Framework\Model\ResourceModel\AbstractResource;
use Magento\Framework\Registry;
use Tweakwise\TweakwiseJs\Api\Data\Api\Response\Catalog\LanguageResponseInterface;
use Tweakwise\TweakwiseJs\Model\Api\Response;
use Tweakwise\TweakwiseJs\Model\Api\Type\LanguageType;
use Tweakwise\TweakwiseJs\Model\Api\Type\LanguageTypeFactory;

class LanguageResponse extends Response implements LanguageResponseInterface
{
/**
* @param Context $context
* @param Registry $registry
* @param LanguageTypeFactory $languageTypeFactory
* @param AbstractResource|null $resource
* @param AbstractDb|null $resourceCollection
* @param array $data
*/
public function __construct(
Context $context,
Registry $registry,
protected readonly LanguageTypeFactory $languageTypeFactory,
?AbstractResource $resource = null,
?AbstractDb $resourceCollection = null,
array $data = []
) {
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
}

/**
* @return array
*/
public function getLanguages(): array
{
$languages = $this->getData(self::LANGUAGES);
if ($languages) {
return $languages;
}

$language = $this->getData(self::LANGUAGE);
if ($language) {
if (isset($language['languageid']) && !isset($language[0])) {
$language = [$language];
}

$values = [];
foreach ($language as $value) {
if (!$value instanceof LanguageType) {
$value = $this->languageTypeFactory->create(['data' => $value]);
}

$values[] = $value;
}

$this->setLanguages($values);
}

return $this->getData(self::LANGUAGES);
}

/**
* @param array $languages
* @return LanguageResponse
*/
public function setLanguages(array $languages): LanguageResponseInterface
{
return $this->setData(self::LANGUAGES, $languages);
}
}
45 changes: 45 additions & 0 deletions src/Model/Api/Type/LanguageType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

declare(strict_types=1);

namespace Tweakwise\TweakwiseJs\Model\Api\Type;

use Magento\Framework\Model\AbstractModel;
use Tweakwise\TweakwiseJs\Api\Data\Api\Type\LanguageTypeInterface;

class LanguageType extends AbstractModel implements LanguageTypeInterface
{
/**
* @return string
*/
public function getName(): string
{
return $this->getData(self::NAME);
}

/**
* @param string $name
* @return LanguageTypeInterface
*/
public function setName(string $name): LanguageTypeInterface
{
return $this->setData(self::NAME, $name);
}

/**
* @return string
*/
public function getLanguageId(): string
{
return $this->getData(self::KEY);
}

/**
* @param string $languageId
* @return LanguageTypeInterface
*/
public function setLanguageId(string $languageId): LanguageTypeInterface
{
return $this->setData(self::KEY, $languageId);
}
}
19 changes: 19 additions & 0 deletions src/Model/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ class Config

private const XML_PATH_MERCHANDISING_ENABLED = 'tweakwise/tweakwisejs/merchandising/enabled';

private const XML_PATH_UI_LANGUAGE = 'tweakwise/tweakwisejs/general/uilanguage';
private const XML_PATH_LANGUAGE = 'tweakwise/tweakwisejs/general/language';

private const XML_PATH_SEARCH_TYPE = 'tweakwise/tweakwisejs/search/type';
private const XML_PATH_EVENTS_ENABLED = 'tweakwise/tweakwisejs/events/enabled';
private const XML_PATH_EVENTS_COOKIE_NAME = 'tweakwise/tweakwisejs/events/cookie_name';
Expand Down Expand Up @@ -76,4 +79,20 @@ public function getEventsCookieName(): string
{
return $this->scopeConfig->getValue(self::XML_PATH_EVENTS_COOKIE_NAME, ScopeInterface::SCOPE_STORE);
}

/**
* @return string|null
*/
public function getUiLanguage(): ?string
{
return $this->scopeConfig->getValue(self::XML_PATH_UI_LANGUAGE, ScopeInterface::SCOPE_STORE);
}

/**
* @return string|null
*/
public function getLanguage(): ?string
{
return $this->scopeConfig->getValue(self::XML_PATH_LANGUAGE, ScopeInterface::SCOPE_STORE);
}
}
56 changes: 56 additions & 0 deletions src/Model/Config/Source/Language.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

declare(strict_types=1);

namespace Tweakwise\TweakwiseJs\Model\Config\Source;

use Tweakwise\TweakwiseJs\Exception\ApiException;
use Tweakwise\TweakwiseJs\Model\Api\Client;
use Tweakwise\TweakwiseJs\Model\Api\RequestFactory;
use Tweakwise\TweakwiseJs\Model\Api\Response\Catalog\LanguageResponse;
use Magento\Framework\Data\OptionSourceInterface;

class Language implements OptionSourceInterface
{
/**
* @param RequestFactory $requestFactory
* @param Client $apiClient
*/
public function __construct(
private readonly Client $apiClient,
private readonly RequestFactory $requestFactory,
) {
}

/**
* @return array
*/
public function toOptionArray()
{
$options = [
[
'label' => __('Default language'),
'value' => ''
]
];

try {
$request = $this->requestFactory->create();
/** @var LanguageResponse $response */
$response = $this->apiClient->request($request);

$languages = $response->getLanguages();

foreach ($languages as $language) {
$options[] = [
'label' => $language->getName(),
'value' => $language->getLanguageId()
];
}
} catch (ApiException $e) {
//do nothing
}

return $options;
}
}
29 changes: 29 additions & 0 deletions src/Model/Config/Source/UiLanguage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

declare(strict_types=1);

namespace Tweakwise\TweakwiseJs\Model\Config\Source;

use Magento\Framework\Data\OptionSourceInterface;

class UiLanguage implements OptionSourceInterface
{
/**
* @return array
*/
public function toOptionArray()
{
return [
[
'label' => __('Default language'),
'value' => ''
],
['value' => 'en', 'label' => __('English')],
['value' => 'nl', 'label' => __('Dutch')],
['value' => 'de', 'label' => __('German')],
['value' => 'fr', 'label' => __('French')],
['value' => 'es', 'label' => __('Spanish')],
['value' => 'it', 'label' => __('Italian')],
];
}
}
Loading
Loading