refactor: move spa to frontend folder
This commit is contained in:
@@ -95,6 +95,7 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
if ($hasConfig) {
|
||||
$this->updateConfigFromDefaults();
|
||||
$this->cleanUpOldAssets();
|
||||
$this->injectVueJs();
|
||||
$this->config();
|
||||
} else {
|
||||
$this->init();
|
||||
@@ -107,7 +108,12 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
$this->document->setTitle($this->language->get('heading_title'));
|
||||
|
||||
if (($this->request->server['REQUEST_METHOD'] === 'POST') && $this->validate()) {
|
||||
$this->model_setting_setting->editSetting('module_tgshop', $this->request->post);
|
||||
$postData = $this->request->post;
|
||||
$postData['module_tgshop_mainpage_banners'] = [];
|
||||
if (! empty($_POST['module_tgshop_mainpage_banners'])) {
|
||||
$postData['module_tgshop_mainpage_banners'] = $_POST['module_tgshop_mainpage_banners'];
|
||||
}
|
||||
$this->model_setting_setting->editSetting('module_tgshop', $postData);
|
||||
|
||||
$this->session->data['success'] = $this->language->get('text_success');
|
||||
|
||||
@@ -130,6 +136,13 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
|
||||
$data['settings'] = $this->getSettingsConfig();
|
||||
|
||||
$data['banners'] = [];
|
||||
$banners = $this->config->get('module_tgshop_mainpage_banners');
|
||||
if ($banners) {
|
||||
$banners = html_entity_decode($banners);
|
||||
$data['banners'] = $banners;
|
||||
}
|
||||
|
||||
foreach ($data['settings'] as $configs) {
|
||||
foreach ($configs as $key => $config) {
|
||||
if ($config['type'] === 'image') {
|
||||
@@ -355,6 +368,7 @@ TEXT,
|
||||
'module_tgshop_text_no_more_products' => 'Это всё по текущему запросу. Попробуйте уточнить фильтры или поиск.',
|
||||
'module_tgshop_text_empty_cart' => 'Ваша корзина пуста',
|
||||
'module_tgshop_text_order_created_success' => 'Ваш заказ успешно оформлен и будет обработан в ближайшее время.',
|
||||
'module_tgshop_mainpage_banners' => '[]',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -535,14 +549,6 @@ HTML,
|
||||
],
|
||||
'help' => <<<HTML
|
||||
Позволяет покупателям использовать <a href="{$ocVouchersLink}" target="_blank">подарочные сертификаты OpenCart</a> при оформлении заказа.
|
||||
HTML,
|
||||
],
|
||||
|
||||
'module_tgshop_home_banner_id' => [
|
||||
'type' => 'select',
|
||||
'options' => $this->getBannersList(),
|
||||
'help' => <<<HTML
|
||||
<a href="{$ocBannersLink}" target="_blank">Стандартный OpenCart баннер</a> отображаемый на главной странице магазина. Рекомендуемое соотношение сторон для изображений - 2.5:1 (например 500×200).
|
||||
HTML,
|
||||
],
|
||||
],
|
||||
@@ -703,4 +709,17 @@ HTML,
|
||||
|
||||
return [null => 'Не показывать'] + $map;
|
||||
}
|
||||
|
||||
private function injectVueJs(): void
|
||||
{
|
||||
$appDir = rtrim(DIR_APPLICATION, '/');
|
||||
if (file_exists("$appDir/view/javascript/telecart/telecart.js")) {
|
||||
$this->document->addScript('view/javascript/telecart/telecart.js');
|
||||
$this->document->addStyle('view/javascript/telecart/telecart.css');
|
||||
} elseif (file_exists("$appDir/view/integration.js")) {
|
||||
$this->document->addScript('view/integration.js');
|
||||
} else {
|
||||
throw new RuntimeException('Unable to load Vuejs frontend.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
18
module/oc_telegram_shop/upload/admin/view/integration.js
Executable file
18
module/oc_telegram_shop/upload/admin/view/integration.js
Executable file
@@ -0,0 +1,18 @@
|
||||
(function() {
|
||||
function injectVueScript() {
|
||||
const script = document.createElement('script');
|
||||
script.type = 'module';
|
||||
//if (window.vueIntegration && window.vueIntegration.developmentEnv) {
|
||||
script.src = 'http://localhost:3000/src/main.js';
|
||||
//} else {
|
||||
// script.src = '/path/to/built/main.js';
|
||||
//}
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', injectVueScript);
|
||||
} else { // Документ уже загружен
|
||||
injectVueScript();
|
||||
}
|
||||
})();
|
||||
@@ -48,6 +48,11 @@
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li>
|
||||
<a href="#banners" data-toggle="tab">
|
||||
Баннеры
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
@@ -442,6 +447,16 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div id="banners" class="tab-pane">
|
||||
<script>
|
||||
window.TeleCart = {
|
||||
user_token: '{{ user_token }}',
|
||||
banners: '{{ banners }}',
|
||||
};
|
||||
</script>
|
||||
<div id="app">App Loading...</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user