экраны закупов и креативов
This commit is contained in:
@@ -34,38 +34,33 @@ func (s *ProjectDetails) Enter(b *bot.Bot, mode bot.RenderMode) {
|
||||
func (s *ProjectDetails) formatProjectDetails() string {
|
||||
p := s.Project
|
||||
|
||||
// Заголовок
|
||||
text := fmt.Sprintf(`<b>%s</b>`, p.Title)
|
||||
// Заголовок с названием проекта
|
||||
text := fmt.Sprintf("<b>%s</b>\n\n", p.Title)
|
||||
|
||||
// Информация о канале
|
||||
if p.Username != nil && *p.Username != "" {
|
||||
text += fmt.Sprintf(`
|
||||
<b>Канал:</b> @%s`, *p.Username)
|
||||
text += fmt.Sprintf("Telegram-канал: @%s\n", *p.Username)
|
||||
} else {
|
||||
text += `
|
||||
<b>Канал:</b> <i>не привязан</i>`
|
||||
text += "Telegram-канал: <i>не привязан</i>\n"
|
||||
}
|
||||
|
||||
// Статус проекта
|
||||
var statusText string
|
||||
switch p.Status {
|
||||
case "active":
|
||||
statusText = "Активный"
|
||||
statusText = "✓ Активный"
|
||||
case "inactive":
|
||||
statusText = "Неактивен"
|
||||
statusText = "○ Неактивен"
|
||||
case "archived":
|
||||
statusText = "Архивный"
|
||||
statusText = "▣ Архивный"
|
||||
case "paused":
|
||||
statusText = "Приостановлен"
|
||||
statusText = "⊙ Приостановлен"
|
||||
default:
|
||||
statusText = p.Status
|
||||
}
|
||||
text += fmt.Sprintf(`
|
||||
<b>Статус:</b> %s`, statusText)
|
||||
text += fmt.Sprintf("Статус: %s\n", statusText)
|
||||
|
||||
// ID проекта (для технических целей)
|
||||
text += fmt.Sprintf(`
|
||||
<b>ID:</b> <code>%s</code>`, p.ID)
|
||||
text += "\n<i>Управление проектом 👇</i>"
|
||||
|
||||
return text
|
||||
}
|
||||
@@ -76,7 +71,7 @@ func (s *ProjectDetails) buildKeyboard() echotron.InlineKeyboardMarkup {
|
||||
// Первый ряд: Креативы и Создать закуп
|
||||
buttons = append(buttons, bot.Row(
|
||||
bot.Button("Креативы", fmt.Sprintf("creatives:%s", s.Project.ID)),
|
||||
bot.Button("Создать закуп", fmt.Sprintf("create_purchase:%s", s.Project.ID)),
|
||||
bot.Button("Создать закуп", fmt.Sprintf("create_placement:%s", s.Project.ID)),
|
||||
))
|
||||
|
||||
// Второй ряд: План закупов
|
||||
@@ -84,41 +79,35 @@ func (s *ProjectDetails) buildKeyboard() echotron.InlineKeyboardMarkup {
|
||||
bot.Button("План закупов", fmt.Sprintf("purchase_plan:%s", s.Project.ID)),
|
||||
))
|
||||
|
||||
// Третий ряд: Тип ссылки по умолчанию
|
||||
// Третий ряд: Тип приглашений (с подтверждением)
|
||||
var linkTypeButtonText string
|
||||
if s.confirmingLinkTypeChange {
|
||||
// Показываем текст подтверждения с противоположным типом
|
||||
// Показываем подтверждение
|
||||
var newType string
|
||||
if s.Project.InviteLinkType == "public" {
|
||||
newType = "С одобрением"
|
||||
} else {
|
||||
newType = "Открытая"
|
||||
}
|
||||
linkTypeButtonText = fmt.Sprintf("Нажмите еще раз → %s", newType)
|
||||
linkTypeButtonText = fmt.Sprintf("Подтвердить → %s", newType)
|
||||
} else {
|
||||
// Показываем текущий тип
|
||||
// Показываем текущий тип приглашений
|
||||
var currentType string
|
||||
if s.Project.InviteLinkType == "public" {
|
||||
currentType = "Открытая"
|
||||
} else {
|
||||
currentType = "С одобрением"
|
||||
}
|
||||
linkTypeButtonText = fmt.Sprintf("Тип ссылки: %s", currentType)
|
||||
linkTypeButtonText = fmt.Sprintf("Приглашения: %s", currentType)
|
||||
}
|
||||
buttons = append(buttons, bot.Row(
|
||||
bot.Button(linkTypeButtonText, fmt.Sprintf("link_type:%s", s.Project.ID)),
|
||||
))
|
||||
|
||||
// Четвертый ряд: Команда и Архивировать
|
||||
// Нижний ряд: Назад и Архивировать
|
||||
buttons = append(buttons, bot.Row(
|
||||
bot.Button("👥 Команда", fmt.Sprintf("team:%s", s.Project.ID)),
|
||||
bot.Button("Архивировать", fmt.Sprintf("archive:%s", s.Project.ID)),
|
||||
))
|
||||
|
||||
// Пятый ряд: Назад и Главное меню
|
||||
buttons = append(buttons, bot.Row(
|
||||
bot.Button("Назад", "back_to_projects"),
|
||||
bot.Button("Главное меню", "main_menu"),
|
||||
bot.Button("← Назад", "back_to_projects"),
|
||||
bot.Button("≡ Архивировать", fmt.Sprintf("archive:%s", s.Project.ID)),
|
||||
))
|
||||
|
||||
return bot.Keyboard(buttons...)
|
||||
@@ -138,10 +127,6 @@ func (s *ProjectDetails) HandleCallback(b *bot.Bot, u *echotron.Update) {
|
||||
b.SetState(s.BackState, bot.EditMessage)
|
||||
}
|
||||
|
||||
case data == "main_menu":
|
||||
s.confirmingLinkTypeChange = false // Сбрасываем флаг подтверждения
|
||||
b.SetState(&MainMenu{}, bot.NewMessage)
|
||||
|
||||
case strings.HasPrefix(data, "creatives:"):
|
||||
s.confirmingLinkTypeChange = false // Сбрасываем флаг подтверждения
|
||||
b.SetState(&Creatives{
|
||||
@@ -150,6 +135,13 @@ func (s *ProjectDetails) HandleCallback(b *bot.Bot, u *echotron.Update) {
|
||||
BackState: s,
|
||||
}, bot.NewMessage)
|
||||
|
||||
case strings.HasPrefix(data, "create_placement:"):
|
||||
s.confirmingLinkTypeChange = false // Сбрасываем флаг подтверждения
|
||||
// TODO: реализовать создание закупа
|
||||
b.Edit("🚧 Создать закуп\n\nФункция в разработке", bot.Keyboard(
|
||||
bot.Row(bot.Button("← Назад", "back_to_project")),
|
||||
))
|
||||
|
||||
case data == "back_to_project":
|
||||
s.confirmingLinkTypeChange = false // Сбрасываем флаг подтверждения
|
||||
s.Enter(b, bot.EditMessage)
|
||||
|
||||
Reference in New Issue
Block a user