Gogs 3 tygodni temu
rodzic
commit
5013253b12

+ 10 - 2
README.md

@@ -5,6 +5,12 @@
 
 # применяй правила:
 
+## оформление ссылок
+a(href="[ссылка]") - не правильно
+router-link(to="[ссылка]") - не правильно
+app-link(to="[ссылка]") - правильно (должен быть подключен компанент: 'app-link':   require 'app/shared/AppLink')
+
+
 ## Корневой каталог и мета данные
 Важно: мета данные добавляются через app/temp.coffe
 базовым тегоьм для vuejs является body, app/index.pug начинается с div,
@@ -108,12 +114,14 @@ globalThis.EventBus = new AppEventBus()
 следи за строгим соблюдением синтаксиса используемых языков (coffeescript, pug, stylus)
 в pug не используй многострочные вычисляемые атрибуты
 
-## работа с консолью
+## работа с консолью и текстовыми константами/переменными
 используй для вывода в консоль debug.log
-
 console.log "переменная temp = #{temp}" - не правильно
 debug.log "переменная temp = "+temp     - правильно
 
+shareUrl = "https://twitter.com/intent/tweet?text=#{text}" - не правильно
+shareUrl = "https://twitter.com/intent/tweet?text="+text   - правильно
+
 ## Цвета и управление темами
 во всех *.styl файлах используй цвета в виде переменных, определённых в файле tailwind.config.js
 

+ 2 - 2
vue/app/pages/Events/index.coffee

@@ -198,11 +198,11 @@ module.exports =
       @selectedEvent = event
       @showEventModal = true
       # Можно также сразу перейти к покупке
-      console.log 'Бронирование билета на:', event.title
+      debug.log 'Бронирование билета на:', event.title
 
     handleTicketBooking: (event) ->
       # Логика обработки покупки билетов
-      console.log 'Обработка покупки билета на:', event.title
+      debug.log 'Обработка покупки билета на:', event.title
       @$root.$emit('open-modal', {
         component: 'SuccessModal'
         props: {

+ 19 - 18
vue/app/pages/Home/index.coffee

@@ -31,30 +31,30 @@ module.exports =
     events: [
       {
         id: 1,
-        title: 'Концерт симфонического оркестра',
-        date: '15 октября 2025',
-        description: 'Произведения Чайковского и Рахманинова в исполнении Национального симфонического оркестра',
-        image: 'https://avesta.tj/wp-content/uploads/2023/10/photo_2023-10-09_13-20-44.jpg',
-        category: 'classical',
-        price: 'от 50 сомони'
+        title: 'ШОМИ ДӮСТӢ»-И ТОҶИКИСТОНУ ҚАЗОҚИСТОН',
+        date: '22 августа 2024',
+        description: 'Асосгузори сулҳу ваҳдати миллӣ — Пешвои миллат, Президенти Ҷумҳурии Тоҷикистон муҳтарам Эмомалӣ Раҳмон ва Раиси Маҷлиси миллии Маҷлиси Олии Ҷумҳурии Тоҷикистон, Раиси шаҳри Душанбе муҳтарам Рустам Эмомалӣ Президенти Ҷумҳурии Қазоқистон муҳтарам Қосим-Жомарт Токаев дар барномаи консертии «Шоми дӯстӣ» дар Маҷмааи давлатии «Кохи Борбад», ки дар доираи Рӯзҳои фарҳанги Қазоқистон баргузор мегардад, ҳузур доранд.',
+        image: 'https://borbad.s5l.ru/assets/borbad.s5l.ru/001.jpg',
+        category: '',
+        price: ''
       },
       {
         id: 2,
-        title: 'Вечер таджикской народной музыки',
-        date: '20 октября 2025', 
-        description: 'Выступление фольклорного ансамбля "Шашмаком"',
-        image: 'https://avatars.mds.yandex.net/get-altay/892711/2a0000018d08049ba81df206f02ee2ec7e1d/XXL_height',
-        category: 'folk',
-        price: 'от 30 сомони'
+        title: 'ШОМИ ДӮСТӢ»-И ТОҶИКИСТОНУ ҚИРҒИЗИСТОН',
+        date: '22 августа 2024', 
+        description: "Шоми 8 июл дар доираи сафари давлатии Президенти Қирғизистон ба Тоҷикистон дар толори бошукуҳи “Кохи Борбад” барномаи фарҳангии арбобони санъати Тоҷикистону Қирғизистон бо номи “Дӯстии абадӣ” баргузор гардид. Дар чорабинии фарҳангӣ Президенти мамлакат Эмомалӣ Раҳмон ва Президенти Қирғизистон Садир Жапаров иштирок намуданд.",
+        image: 'https://borbad.s5l.ru/assets/borbad.s5l.ru/002.jpg',
+        category: '',
+        price: ''
       },
       {
         id: 3,
-        title: 'Джазовый фестиваль',
-        date: '25 октября 2025',
-        description: 'Международные джазовые коллективы в уникальной акустике зала',
-        image: 'https://avatars.mds.yandex.net/get-altay/9822373/2a0000019377c5d52c95d3175340aab4a35a/XXL_height',
-        category: 'jazz', 
-        price: 'от 70 сомони'
+        title: 'ШОМИ ДӮСТӢ»-И ТОҶИКИСТОНУ ӮЗБЕКИСТОН',
+        date: '22 августа 2024',
+        description: '10 июн Президенти Ҷумҳурии Тоҷикистон муҳтарам Эмомалӣ Раҳмон бо Президенти Ҷумҳурии Ӯзбекистон муҳтарам Шавкат Мирзиёев дар консерти тантанавии ходимони фарҳангу санъати Тоҷикистон ва Ӯзбекистон таҳти унвони “Шоми дӯстӣ”, ки дар Кохи Борбад баргузор шуд, иштирок намуданд.',
+        image: 'https://borbad.s5l.ru/assets/borbad.s5l.ru/003.jpg',
+        category: '', 
+        price: ''
       }
     ]
     eventFilters: [
@@ -81,6 +81,7 @@ module.exports =
     handleSortChange: (sortedItems) ->
       @filteredEvents = sortedItems
     openEventModal: (event) ->
+      debug.log event
       @$root.$emit('open-modal', {
         component: 'EventDetailModal',
         props: { event }

+ 1 - 1
vue/app/pages/Home/index.pug

@@ -25,7 +25,7 @@ section
                     :class="'animation-delay-' + (($index % 6) * 100)"
                     @click="openEventModal(event)"
                 )
-                    img(:src="event.image" :alt="event.title" class="w-full h-48 object-cover")
+                    img(:src="event.image" :alt="event.title" class="w-full h-96 object-cover")
                     div(class="p-6")
                         h3(class="text-xl font-bold text-gray-800 dark:text-white mb-2") {{ event.title }}
                         p(class="text-gray-600 dark:text-gray-300 mb-4") {{ event.date }}

+ 5 - 0
vue/app/shared/MultiLevelMenu/index.coffee

@@ -14,10 +14,12 @@ module.exports =
             {
                 id: 1
                 title: 'Мероприятия'
+                path: '/events'
                 children: [
                     {
                         id: 11
                         title: 'Концерты'
+                        path: '/events?category=pop'
                         children: [
                             { id: 111, title: 'Классическая музыка', path: '/events?category=classical' }
                             { id: 112, title: 'Фольклорные концерты', path: '/events?category=folk' }
@@ -28,6 +30,7 @@ module.exports =
                     {
                         id: 12
                         title: 'Фестивали'
+                        path: '/events?category=pop'
                         children: [
                             { id: 121, title: 'Музыкальные фестивали', path: '/events?type=festival' }
                             { id: 122, title: 'Международные события', path: '/events?type=international' }
@@ -39,6 +42,7 @@ module.exports =
             {
                 id: 2
                 title: 'О зале'
+                path: '/about'
                 children: [
                     { id: 21, title: 'История', path: '/about#history' }
                     { id: 22, title: 'Архитектура', path: '/about#architecture' }
@@ -49,6 +53,7 @@ module.exports =
             {
                 id: 3
                 title: 'Посетителям'
+                path: '/contacts'
                 children: [
                     { id: 31, title: 'Как добраться', path: '/contacts#location' }
                     { id: 32, title: 'Правила посещения', path: '/contacts#rules' }

+ 16 - 10
vue/app/shared/MultiLevelMenu/index.pug

@@ -12,7 +12,8 @@ nav(class="relative")
                 :class="getMenuItemClasses(item)"
                 :aria-expanded="openSubmenu === item.id"
             )
-                span {{ item.title }}
+                router-link(:to="item.path")
+                   span {{ item.title }}
                 svg(
                     v-if="item.children"
                     class="w-4 h-4 ml-1 transition-transform duration-200"
@@ -41,7 +42,8 @@ nav(class="relative")
                             :class="{'rounded-lg': !child.children}"
                             @click="handleMenuClick(child)"
                         )
-                            span {{ child.title }}
+                            router-link(:to="child.path")
+                                span {{ child.title }}
                             svg(
                                 v-if="child.children"
                                 class="w-4 h-4 transition-transform duration-200"
@@ -62,7 +64,8 @@ nav(class="relative")
                                     :key="subchild.id"
                                     class="px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer transition-colors duration-200"
                                     @click="handleMenuClick(subchild)"
-                                ) {{ subchild.title }}
+                                ) 
+                                    router-link(:to="subchild.path") {{ subchild.title }}
 
     button(
         class="md:hidden p-2 rounded-md text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors"
@@ -74,14 +77,14 @@ nav(class="relative")
 
     div(
         v-if="isMobileMenuOpen"
-        class="fixed inset-0 z-50 md:hidden"
+        class="fixed inset-0 z-50 md:hidden min-h-max"
     )
         div(
             class="fixed inset-0 bg-black bg-opacity-50"
             @click="closeMobileMenu"
         )
         div(
-            class="fixed inset-y-0 left-0 w-64 bg-white dark:bg-gray-800 shadow-xl transform transition-transform duration-300 ease-in-out"
+            class="fixed inset-y-0 left-0 w-64 bg-white dark:bg-gray-800 shadow-xl transform transition-transform duration-300 ease-in-out" min-h-max
             :class="{'translate-x-0': isMobileMenuOpen, '-translate-x-full': !isMobileMenuOpen}"
         )
             div(class="flex flex-col h-full")
@@ -95,8 +98,8 @@ nav(class="relative")
                         svg(class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24")
                             path(stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12")
                 
-                div(class="flex-1 overflow-y-auto")
-                    div(class="py-2")
+                div(class="flex-1 overflow-y-auto min-h-max")
+                    div(class="py-2 min-h-max")
                         div(
                             v-for="item in menuItems"
                             :key="item.id"
@@ -106,7 +109,8 @@ nav(class="relative")
                                 class="flex items-center justify-between px-4 py-3 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer transition-colors"
                                 @click="toggleMobileSubmenu(item)"
                             )
-                                span(class="font-medium") {{ item.title }}
+                                router-link(:to="item.path")
+                                     span(class="font-medium") {{ item.title }}
                                 svg(
                                     v-if="item.children"
                                     class="w-4 h-4 transition-transform duration-200"
@@ -130,7 +134,8 @@ nav(class="relative")
                                         class="flex items-center justify-between px-6 py-3 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer transition-colors"
                                         @click="toggleMobileSubsubmenu(child)"
                                     )
-                                        span {{ child.title }}
+                                        router-link(:to="child.path")
+                                            span {{ child.title }}
                                         svg(
                                             v-if="child.children"
                                             class="w-4 h-4 transition-transform duration-200"
@@ -150,4 +155,5 @@ nav(class="relative")
                                             :key="subchild.id"
                                             class="px-8 py-2 text-gray-500 dark:text-gray-500 hover:bg-gray-200 dark:hover:bg-gray-600 cursor-pointer transition-colors"
                                             @click="handleMobileMenuClick(subchild)"
-                                        ) {{ subchild.title }}
+                                        ) 
+                                            router-link(:to="subchild.path") {{ subchild.title }}

+ 1 - 0
vue/app/temp.coffee

@@ -243,6 +243,7 @@ app = Vue.createApp
         'filtersort':     require 'app/shared/FilterSort'
         'eventdetailmodal': require 'app/shared/EventDetailModal'
         'successmodal':   require 'app/shared/SuccessModal'
+        'applink':   require 'app/shared/AppLink'
 
 app.use(VueRouter.createRouter({
     routes: routes

+ 10 - 5
vue/app/temp.pug

@@ -4,7 +4,8 @@ div(id="app" class="min-h-full bg-gray-50 dark:bg-gray-900 transition-colors dur
                 header(class="bg-primary text-white shadow-lg")
                     div(class="container mx-auto px-4 py-4")
                         div(class="flex justify-between items-center")
-                            a(href="/" class="text-2xl font-bold text-accent") Кохи Борбад
+                            div
+                                router-link(to="/" class="text-2xl font-bold text-accent") Кохи Борбад
                             div(class="flex items-center space-x-4")
                                 MultiLevelMenu
                                 ThemeToggle
@@ -21,14 +22,18 @@ div(id="app" class="min-h-full bg-gray-50 dark:bg-gray-900 transition-colors dur
                                 h3(class="text-xl font-bold text-accent mb-4") Контакты
                                 p пр. И. Сомони, 26, Душанбе
                                 p Телефон: +992 372 27 09 46
-                                p Email: info@kohi-borbad.tj
+                                p Email: info@borbad.tj
+                                br
+                                p
+                                    img(src="https://borbad.s5l.ru/assets/borbad.s5l.ru/000.png")
                             
                             div(class="footer-section")
                                 h3(class="text-xl font-bold text-accent mb-4") Быстрые ссылки
                                 div(class="flex flex-col space-y-2")
-                                    a(href="/events" class="hover:text-accent transition-colors") Мероприятия
-                                    a(href="/about" class="hover:text-accent transition-colors") О зале
-                                    a(href="/contacts" class="hover:text-accent transition-colors") Контакты
+                                    router-link(to="/events" class="hover:text-accent transition-colors") Мероприятия
+                                    router-link(to="/about" class="hover:text-accent transition-colors") О зале
+                                    router-link(to="/contacts" class="hover:text-accent transition-colors") Контакты
+                                    
                             
                             div(class="footer-section")
                                 h3(class="text-xl font-bold text-accent mb-4") Подписка