Skip to content

Commit

Permalink
This is a sub package to the klevu-smart-search-M2 repository.
Browse files Browse the repository at this point in the history
It is to enable indexing of products with Klevu Search. This is a mandatory package.

Please, see klevu-smart-search-M2/README.md for more information on how to install the overall extension.
  • Loading branch information
davidg-klevu committed Dec 6, 2021
1 parent 4bcabfe commit f54c20f
Show file tree
Hide file tree
Showing 62 changed files with 5,493 additions and 300 deletions.
108 changes: 55 additions & 53 deletions Block/Adminhtml/System/Config/Form/Field.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,31 @@

class Field extends \Magento\Config\Block\System\Config\Form\Field
{

private $_context;

private $storeManager;

private $_klevuHelperManager;

private $_context;

private $storeManager;

private $_klevuHelperManager;

public function __construct(
Template_Context $context,
Klevu_HelperManager $klevuHelperManager,
Klevu_HelperManager $klevuHelperManager,
array $data = []

) {
$this->_klevuHelperManager = $klevuHelperManager;
parent::__construct($context,$data);
$this->_context = $context;
$this->_context = $context;

}

/**
* Retrieve element HTML markup
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
*/
* Retrieve element HTML markup
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
*/
protected function _getElementHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element)
{
return $element->getElementHtml();
Expand All @@ -54,46 +54,46 @@ public function render(\Magento\Framework\Data\Form\Element\AbstractElement $ele
'klevu_search_cmscontent_excludecms_pages','klevu_search_secureurl_setting_enabled',
'klevu_search_image_setting_enabled','klevu_search_image_setting_image_width',
'klevu_search_image_setting_image_height','klevu_search_general_category_navigation_url',
'klevu_search_categorylanding_enabledcategorynavigation','klevu_search_categorylanding_max_no_of_products',
'klevu_search_categorylanding_klevu_cat_relevance','klevu_search_searchlanding_klevu_search_relevance');
$this->storeManager = $this->_context->getStoreManager();
$store_mode = $this->storeManager->isSingleStoreMode();
if( in_array( $element->getId(), $fieldToHide ) ) {
'klevu_search_categorylanding_max_no_of_products',
'klevu_search_categorylanding_klevu_cat_relevance','klevu_search_searchlanding_klevu_search_relevance');

$this->storeManager = $this->_context->getStoreManager();
$store_mode = $this->storeManager->isSingleStoreMode();

if( in_array( $element->getId(), $fieldToHide ) ) {
//Removing checkbox when SSM is off and view is Global or Websites
if(!$store_mode && $element->getScope() != "stores" ) {
$element->unsetData(null);
if(!$store_mode && $element->getScope() != "stores" ) {
$element->unsetData(null);
return;
}elseif (!$store_mode && ( $element->getScope() == "stores" || $element->getScope() == "websites") ){
$isCheckboxRequired = false;
}
}
}

// Disable element if value is inherited from other scope. Flag has to be set before the value is rendered.
if ($element->getInherit() == 1 && $isCheckboxRequired) {
$element->setDisabled(true);
}
$klevuConfig = $this->_klevuHelperManager->getConfigHelper();


$klevuConfig = $this->_klevuHelperManager->getConfigHelper();
$features = $klevuConfig->getFeaturesUpdate($element->getHtmlId());
if($store_mode) {
$labelsToHide = array('klevu_search_add_to_cart_enabled_info','klevu_search_attributes_info_attribute','klevu_search_cmscontent_enabledcmsfront_info','klevu_search_secureurl_setting_info_enabled','klevu_search_image_setting_info_enabled','klevu_search_categorylanding_enabledcategorynavigation_info');

if($store_mode) {
$labelsToHide = array('klevu_search_add_to_cart_enabled_info','klevu_search_attributes_info_attribute','klevu_search_cmscontent_enabledcmsfront_info','klevu_search_secureurl_setting_info_enabled','klevu_search_image_setting_info_enabled');
if(in_array($element->getId(),$labelsToHide) && $element->getType()=='label') {
$element->unsetData(null);
}
$jsApiValue = $klevuConfig->getJsApiKey($this->storeManager->getStore());
$jsRestValue = $klevuConfig->getRestApiKey($this->storeManager->getStore());
$cloudSearchURL = $klevuConfig->getCloudSearchUrl($this->storeManager->getStore());
$klevuConfig->setStoreConfig('klevu_search/general/js_api_key', $jsApiValue,$this->storeManager->getStore());
$klevuConfig->setStoreConfig('klevu_search/general/rest_api_key', $jsRestValue,$this->storeManager->getStore());
}


$jsApiValue = $klevuConfig->getJsApiKey($this->storeManager->getStore());
$jsRestValue = $klevuConfig->getRestApiKey($this->storeManager->getStore());
$cloudSearchURL = $klevuConfig->getCloudSearchUrl($this->storeManager->getStore());

$klevuConfig->setStoreConfig('klevu_search/general/js_api_key', $jsApiValue,$this->storeManager->getStore());
$klevuConfig->setStoreConfig('klevu_search/general/rest_api_key', $jsRestValue,$this->storeManager->getStore());

}
if (!empty($features)) {
$style = 'class="klevu-disabled"';
$upgrade_text = '';
Expand All @@ -111,13 +111,13 @@ public function render(\Magento\Framework\Data\Form\Element\AbstractElement $ele
$style = '';
$upgrade_text = '';
}

// Code added by klevu
if (!empty($features)) {
$element->setDisabled(true);
$element->setValue(0);
}

$html = '<td class="label"><label for="' .
$element->getHtmlId() .
'">' .
Expand Down Expand Up @@ -155,7 +155,7 @@ protected function _renderValue(\Magento\Framework\Data\Form\Element\AbstractEle
}
if ($element->getHtmlId() == "klevu_search_searchlanding_landenabled") {
$klevu_html ='';
$klevuConfig = $this->_klevuHelperManager->getConfigHelper();
$klevuConfig = $this->_klevuHelperManager->getConfigHelper();
$check_preserve = $klevuConfig->getFeatures();
if (!empty($check_preserve)) {
if (isset($check_preserve['disabled']) && !empty($check_preserve['disabled'])) {
Expand All @@ -166,16 +166,18 @@ protected function _renderValue(\Magento\Framework\Data\Form\Element\AbstractEle
if (!empty($check_preserve['preserve_layout_message'])) {
$klevu_html.=$check_preserve['preserve_layout_message'];
}

$klevu_html.="</div>";
}
}
} else {
$klevu_html = "Choose your Layout";
}
}

$html .= '<p class="note"><span>' . $klevu_html . '</span></p>';

if ($klevu_html) {
$html .= '<p class="note"><span>' . $klevu_html . '</span></p>';
} elseif ($element->getComment()) {
$html .= '<p class="note"><span>' . $element->getComment() . '</span></p>';
}
} else {
if ($element->getComment()) {
$html .= '<p class="note"><span>' . $element->getComment() . '</span></p>';
Expand Down Expand Up @@ -207,8 +209,8 @@ protected function _renderInheritCheckbox(\Magento\Framework\Data\Form\Element\A
$checkedHtml .
' onclick="toggleValueElements(this, Element.previous(this.parentNode))" /> ';
$html .= '<label for="' . $htmlId . '_inherit" class="inherit">' . $this->_getInheritCheckboxLabel(
$element
) . '</label>';
$element
) . '</label>';
$html .= '</td>';

return $html;
Expand Down Expand Up @@ -271,4 +273,4 @@ protected function _renderHint(\Magento\Framework\Data\Form\Element\AbstractElem
$html .= '</td>';
return $html;
}
}
}
140 changes: 140 additions & 0 deletions Block/Html/Head/ThemeV2/JsVariables.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
<?php

namespace Klevu\Search\Block\Html\Head\ThemeV2;

use Klevu\Search\Helper\Data as DataHelper;
use Klevu\Search\Helper\VersionReader;
use Klevu\Search\Service\ThemeV2\IsEnabledCondition;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;
use Magento\Store\Api\Data\StoreInterface;

class JsVariables extends Template
{
/**
* @var IsEnabledCondition
*/
private $isEnabledCondition;

/**
* @var DataHelper
*/
private $dataHelper;

/**
* @var DirectoryList
*/
private $directoryList;

/**
* @var VersionReader
*/
private $versionReader;

/**
* @var StoreInterface
*/
private $currentStore;

/**
* @param Context $context
* @param IsEnabledCondition $isEnabledCondition
* @param DataHelper $dataHelper
* @param DirectoryList $directoryList
* @param VersionReader $versionReader
* @param array $data
*/
public function __construct(
Context $context,
IsEnabledCondition $isEnabledCondition,
DataHelper $dataHelper,
DirectoryList $directoryList,
VersionReader $versionReader,
array $data = []
) {
parent::__construct($context, $data);

$this->isEnabledCondition = $isEnabledCondition;
$this->dataHelper = $dataHelper;
$this->directoryList = $directoryList;
$this->versionReader = $versionReader;
}

/**
* @return string
*/
public function getStoreLanguage()
{
return $this->dataHelper->getStoreLanguage($this->getCurrentStore());
}

/**
* @return string|null
*/
public function getCurrentCurrencyCode()
{
$return = null;
$store = $this->getCurrentStore();
if (method_exists($store, 'getCurrentCurrencyCode')) {
$return = $store->getCurrentCurrencyCode();
}

return $return;
}

/**
* @return string
*/
public function getCurrentCurrencyRates()
{
return $this->dataHelper->getCurrencyData($this->getCurrentStore());
}

/**
* @return bool
*/
public function isPubInUse()
{
return 'pub' === $this->directoryList->getUrlPath(DirectoryList::PUB);
}

/**
* @param string $moduleName
* @return string
*/
public function getModuleVersion($moduleName)
{
return (string)$this->versionReader->getVersionString($moduleName);
}

/**
* @return string
*/
protected function _toHtml()
{
$store = $this->getCurrentStore();
if (!$store || !$this->isEnabledCondition->execute((int)$store->getId())) {
return '';
}

return parent::_toHtml();
}

/**
* @return StoreInterface|null
*/
private function getCurrentStore()
{
if (null === $this->currentStore) {
try {
$this->currentStore = $this->_storeManager->getStore();
} catch (NoSuchEntityException $e) {
$this->_logger->error($e->getMessage());
}
}

return $this->currentStore;
}
}
62 changes: 62 additions & 0 deletions Block/Search/CssIncludes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

namespace Klevu\Search\Block\Search;

use Klevu\Search\Helper\Config as ConfigHelper;
use Klevu\Search\Model\Source\ThemeVersion;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;
use Magento\Store\Model\ScopeInterface;

class CssIncludes extends Template
{
/**
* @var ConfigHelper
*/
private $configHelper;

/**
* @param Context $context
* @param ConfigHelper $configHelper
* @param array $data
*/
public function __construct(
Context $context,
ConfigHelper $configHelper,
array $data = []
) {
parent::__construct($context, $data);

$this->configHelper = $configHelper;
}

/**
* {@inheritdoc}
* @return string
*/
protected function _toHtml()
{
try {
$store = $this->_storeManager->getStore();
$storeId = (int)$store->getId();
} catch (NoSuchEntityException $e) {
$this->_logger->error($e->getMessage());

return '';
}

$themeVersion = $this->_scopeConfig->getValue(
ConfigHelper::XML_PATH_THEME_VERSION,
ScopeInterface::SCOPE_STORES,
$storeId
);

if ((ThemeVersion::V2 === $themeVersion)
|| !$this->configHelper->isExtensionConfigured($storeId)) {
return '';
}

return parent::_toHtml();
}
}
Loading

0 comments on commit f54c20f

Please sign in to comment.