feat: add html editor for telegram messages
This commit is contained in:
@@ -96,6 +96,7 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
public function index(): void
|
||||
{
|
||||
$this->runMaintenanceTasks();
|
||||
$this->injectAssets();
|
||||
$this->injectVueJs();
|
||||
$this->showConfigPage();
|
||||
}
|
||||
@@ -112,7 +113,7 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
$data['themes'] = self::$themes;
|
||||
$data['telecart_module_version'] = module_version();
|
||||
$data['shop_base_url'] = HTTPS_CATALOG;
|
||||
|
||||
|
||||
$data['action'] = $this->url->link(
|
||||
'extension/module/tgshop',
|
||||
'user_token=' . $this->session->data['user_token'],
|
||||
@@ -272,4 +273,10 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
|
||||
return $log;
|
||||
}
|
||||
|
||||
private function injectAssets(): void
|
||||
{
|
||||
$this->document->addScript('view/javascript/summernote/summernote.js');
|
||||
$this->document->addStyle('view/javascript/summernote/summernote.css');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,4 +31,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="view/javascript/summernote/summernote.js"></script>
|
||||
<link href="view/javascript/summernote/summernote.css" rel="stylesheet" />
|
||||
{{ footer }}
|
||||
|
||||
@@ -69,9 +69,6 @@ class SendMessageHandler
|
||||
$this->telegramService->sendMessage(
|
||||
$telegramUserId,
|
||||
$message,
|
||||
[],
|
||||
\Openguru\OpenCartFramework\Telegram\Enums\ChatAction::TYPING,
|
||||
'' // Обычный текст без форматирования
|
||||
);
|
||||
|
||||
$this->logger->info('Message sent to Telegram user', [
|
||||
|
||||
@@ -7,6 +7,7 @@ use Exception;
|
||||
use GuzzleHttp\Exception\ClientException;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use Openguru\OpenCartFramework\Cache\CacheInterface;
|
||||
use Openguru\OpenCartFramework\Telegram\Enums\ChatAction;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Openguru\OpenCartFramework\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
@@ -15,33 +15,34 @@ return [
|
||||
'telegram' => [
|
||||
"bot_token" => "",
|
||||
"chat_id" => null,
|
||||
"owner_notification_template" => <<<TEXT
|
||||
*Новый заказ \#{order_id}* в магазине *{store_name}*
|
||||
"owner_notification_template" => <<<HTML
|
||||
📦 <b>Новый заказ №{order_id}</b>
|
||||
Магазин: <b>{store_name}</b>
|
||||
|
||||
*Покупатель:* {customer}
|
||||
*Email:* {email}
|
||||
*Телефон:* {phone}
|
||||
*IP:* {ip}
|
||||
<b>Покупатель</b>
|
||||
Имя: {customer}
|
||||
Email: {email}
|
||||
Телефон: {phone}
|
||||
IP: {ip}
|
||||
|
||||
*Адрес доставки:*
|
||||
{address}
|
||||
|
||||
*Комментарий:*
|
||||
<b>Комментарий к заказу</b>
|
||||
{comment}
|
||||
|
||||
*Сумма заказа:* {total}
|
||||
*Дата оформления:* {created_at}
|
||||
TEXT,
|
||||
"customer_notification_template" => <<<TEXT
|
||||
Спасибо за Ваш заказ в магазине *{store_name}*
|
||||
<b>Сумма заказа:</b> {total}
|
||||
<b>Дата оформления:</b> {created_at}
|
||||
HTML,
|
||||
"customer_notification_template" => <<<HTML
|
||||
✅ <b>Заказ оформлен</b>
|
||||
|
||||
*Номер заказа* \#{order_id}
|
||||
*Сумма заказа:* {total}
|
||||
*Дата оформления:* {created_at}
|
||||
Спасибо за ваш заказ в магазине <b>{store_name}</b>.
|
||||
|
||||
Мы свяжемся с вами при необходимости\.
|
||||
Хорошего дня\!
|
||||
TEXT,
|
||||
<b>Номер заказа:</b> №{order_id}
|
||||
<b>Сумма заказа:</b> {total}р.
|
||||
<b>Дата оформления:</b> {created_at}
|
||||
|
||||
Информация о заказе сохранена.
|
||||
При необходимости с вами свяжутся представители магазина.
|
||||
HTML,
|
||||
"mini_app_url" => "",
|
||||
],
|
||||
|
||||
|
||||
@@ -33,6 +33,6 @@ class StartCommand extends TelegramCommand
|
||||
],
|
||||
];
|
||||
|
||||
$this->telegram->sendMessage($chatId, $message, $buttons, ChatAction::TYPING, 'html');
|
||||
$this->telegram->sendMessage($chatId, $message, $buttons);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,21 +27,9 @@ class TelegramService
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function escapeTelegramMarkdownV2(string $text): string
|
||||
{
|
||||
$specials = ['_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!'];
|
||||
foreach ($specials as $char) {
|
||||
$text = str_replace($char, '\\' . $char, $text);
|
||||
}
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
public function prepareMessage(string $template, array $variables = []): string
|
||||
{
|
||||
$values = array_map([$this, 'escapeTelegramMarkdownV2'], array_values($variables));
|
||||
|
||||
return str_replace(array_keys($variables), $values, $template);
|
||||
return str_replace(array_keys($variables), array_values($variables), $template);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -54,7 +42,7 @@ class TelegramService
|
||||
string $text,
|
||||
array $replyMarkup = [],
|
||||
string $chatAction = ChatAction::TYPING,
|
||||
string $parseMode = 'MarkdownV2'
|
||||
string $parseMode = 'html'
|
||||
): void {
|
||||
if (! $this->botToken) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user