fix: создания креатива
This commit is contained in:
@@ -3,6 +3,7 @@ package screens
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"example.com/m/adapter/backend"
|
"example.com/m/adapter/backend"
|
||||||
@@ -473,17 +474,9 @@ func (s *AddCreative) extractCreativeFromMessage(message *echotron.Message) {
|
|||||||
func (s *AddCreative) generateCreativeName() string {
|
func (s *AddCreative) generateCreativeName() string {
|
||||||
// Если есть текст, берем первые слова
|
// Если есть текст, берем первые слова
|
||||||
if s.Text != nil && *s.Text != "" {
|
if s.Text != nil && *s.Text != "" {
|
||||||
// Удаляем HTML теги для генерации названия
|
// Удаляем ВСЕ HTML теги с помощью regex
|
||||||
cleanText := strings.ReplaceAll(*s.Text, "<b>", "")
|
re := regexp.MustCompile(`<[^>]*>`)
|
||||||
cleanText = strings.ReplaceAll(cleanText, "</b>", "")
|
cleanText := re.ReplaceAllString(*s.Text, "")
|
||||||
cleanText = strings.ReplaceAll(cleanText, "<i>", "")
|
|
||||||
cleanText = strings.ReplaceAll(cleanText, "</i>", "")
|
|
||||||
cleanText = strings.ReplaceAll(cleanText, "<u>", "")
|
|
||||||
cleanText = strings.ReplaceAll(cleanText, "</u>", "")
|
|
||||||
cleanText = strings.ReplaceAll(cleanText, "<s>", "")
|
|
||||||
cleanText = strings.ReplaceAll(cleanText, "</s>", "")
|
|
||||||
cleanText = strings.ReplaceAll(cleanText, "<code>", "")
|
|
||||||
cleanText = strings.ReplaceAll(cleanText, "</code>", "")
|
|
||||||
|
|
||||||
// Берем первые 50 символов
|
// Берем первые 50 символов
|
||||||
runes := []rune(strings.TrimSpace(cleanText))
|
runes := []rune(strings.TrimSpace(cleanText))
|
||||||
@@ -499,6 +492,14 @@ func (s *AddCreative) generateCreativeName() string {
|
|||||||
return "Новый креатив"
|
return "Новый креатив"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// escapeHTML экранирует HTML-символы для безопасного вывода
|
||||||
|
func escapeHTML(s string) string {
|
||||||
|
s = strings.ReplaceAll(s, "&", "&")
|
||||||
|
s = strings.ReplaceAll(s, "<", "<")
|
||||||
|
s = strings.ReplaceAll(s, ">", ">")
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
// showCreativeConfirmation показывает превью креатива + панель с предложением добавить
|
// showCreativeConfirmation показывает превью креатива + панель с предложением добавить
|
||||||
func (s *AddCreative) showCreativeConfirmation(b *bot.Bot) {
|
func (s *AddCreative) showCreativeConfirmation(b *bot.Bot) {
|
||||||
|
|
||||||
@@ -510,11 +511,13 @@ func (s *AddCreative) showCreativeConfirmation(b *bot.Bot) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Формируем текст панели управления
|
// 2. Формируем текст панели управления
|
||||||
|
// Экранируем HTML-символы в названии для безопасного вывода
|
||||||
|
escapedName := escapeHTML(*s.Name)
|
||||||
confirmText := fmt.Sprintf(`<b>➕ Добавляем этот креатив?</b>
|
confirmText := fmt.Sprintf(`<b>➕ Добавляем этот креатив?</b>
|
||||||
|
|
||||||
<b>Название креатива:</b> %s
|
<b>Название креатива:</b> %s
|
||||||
|
|
||||||
<i>Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.</i>`, *s.Name)
|
<i>Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.</i>`, escapedName)
|
||||||
|
|
||||||
// 3. Показываем панель с кнопками редактирования + сохранения
|
// 3. Показываем панель с кнопками редактирования + сохранения
|
||||||
var buttons [][]echotron.InlineKeyboardButton
|
var buttons [][]echotron.InlineKeyboardButton
|
||||||
|
|||||||
Reference in New Issue
Block a user