forked from Transparency/kgroad-frontend2
Compare commits
14
Commits
release007
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9f5542e02 | ||
|
|
6ae37e3bc3 | ||
|
|
8c5b82b943 | ||
|
|
1e276fe15b | ||
|
|
eb84fa2db4 | ||
|
|
a755c9125a | ||
|
|
7daa197649 | ||
|
|
775e238e77 | ||
|
|
5eff43ef61 | ||
|
|
3c810dad82 | ||
|
|
b10ab93bf1 | ||
|
|
cbe5c0656c | ||
|
|
1a606f4ecd | ||
|
|
19397689b1 |
No files matched your search
+6
-14
@@ -23,6 +23,7 @@
|
|||||||
"navigation": "Navigation",
|
"navigation": "Navigation",
|
||||||
"contacts": "Contacts",
|
"contacts": "Contacts",
|
||||||
"download_our_app": "Download our app",
|
"download_our_app": "Download our app",
|
||||||
|
"socials": "Stay Connected",
|
||||||
"back": "Back",
|
"back": "Back",
|
||||||
"save": "Save",
|
"save": "Save",
|
||||||
"saving": "Saving",
|
"saving": "Saving",
|
||||||
@@ -73,15 +74,11 @@
|
|||||||
"read_more": "Read More"
|
"read_more": "Read More"
|
||||||
},
|
},
|
||||||
"about_us": {
|
"about_us": {
|
||||||
"name": "Transparency International-Kyrgyzstan",
|
"name": "About us KGROAD",
|
||||||
"description": "Branch of the international organization Transparency International in the Kyrgyz Republic.",
|
"description1": "Transparency International is a global independent organization that studies and fights against corruption both internationally and within individual countries, one of the goals of which is to achieve greater transparency and accountability of government.",
|
||||||
"mission": "Promoting effective public policy and good governance to prevent corruption and strengthen democracy in the country.",
|
"description2": "The team of Transparency International Kyrgyzstan has developed a platform for monitoring road construction and repair, containing an interactive map to provide access to information on roads and streets repaired in recent years, including cost of works, contractor details, warranty periods, links to procurement documents and other information on works, as well as generalized statistics on road works (e.g. road works performed by the same contractor). ",
|
||||||
"goals_and_priorities": {
|
"description3": "The platform will also provide users with the opportunity to promptly report defects on roads and the need to fix them, vote on the priority of road repairs and provide feedback in a convenient format that will allow citizens to independently analyze and monitor the use of execution of state road contracts. Information on road construction and repairs is collected from public data from the state procurement portal and the Ministry of Justice.",
|
||||||
"anti-corruption_education": "Anti-corruption education of the population, raising public awareness of the importance and significance of the fight against corruption in Kyrgyzstan;",
|
"description4":"In addition to the web platform, there are two mobile applications for iOS and Android platforms with functions similar to the website."
|
||||||
"study_of_corruption_practices": "Organization of the study of the practice and theory of combating corruption and the participation of civil society structures in Kyrgyzstan and other countries;",
|
|
||||||
"supporting_citizens_and_organizations": "Assistance to citizens and organizations in the implementation of their constitutional rights and freedoms;",
|
|
||||||
"international_experience": "Preferential orientation to international experience in reducing corruption, mastering its technologies and resources, as well as involving civil society structures in the international dialogue on combating corruption."
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"volunteers": {
|
"volunteers": {
|
||||||
"activists": "Activists",
|
"activists": "Activists",
|
||||||
@@ -220,10 +217,5 @@
|
|||||||
"p17": "Users have the right to send their requests to the Operator, including requests regarding the use of their personal data, sending a withdrawal of consent to the processing of personal data in writing to the address specified in the General Provisions section of this regulation, or in the form of an electronic document sent via the feedback form. The Operator undertakes to review and send a response to the User's request within 30 days from the date of receipt of the request.",
|
"p17": "Users have the right to send their requests to the Operator, including requests regarding the use of their personal data, sending a withdrawal of consent to the processing of personal data in writing to the address specified in the General Provisions section of this regulation, or in the form of an electronic document sent via the feedback form. The Operator undertakes to review and send a response to the User's request within 30 days from the date of receipt of the request.",
|
||||||
"p18":"OTHER",
|
"p18":"OTHER",
|
||||||
"p19":"A visitor to the Organization's website who provides his personal data and information thereby agrees to the provisions of this Privacy Policy. We reserve the right to make any changes to the Policy at any time at our discretion in order to further improve the system of protection against unauthorized access to personal data reported by Users without the User's consent. When we make significant changes to the Privacy Policy, a corresponding notification is posted on our website along with the updated version of the Privacy Policy.This Policy does not apply to the actions and Internet resources of third parties."
|
"p19":"A visitor to the Organization's website who provides his personal data and information thereby agrees to the provisions of this Privacy Policy. We reserve the right to make any changes to the Policy at any time at our discretion in order to further improve the system of protection against unauthorized access to personal data reported by Users without the User's consent. When we make significant changes to the Privacy Policy, a corresponding notification is posted on our website along with the updated version of the Privacy Policy.This Policy does not apply to the actions and Internet resources of third parties."
|
||||||
},
|
|
||||||
"AboutUs" : {
|
|
||||||
"p1" : "Transparency International ̶ это глобальная независимая организация по изучению и борьбе с коррупцией как в международном масштабе, так и в масштабе отдельных стран, одна из целей которой добиться большей прозрачности и подотчетности власти.",
|
|
||||||
"p2" : "Команда Трансперенси Интернешнл Кыргызстан разработала платформу для мониторинга строительства и ремонта дорог, содержащая интерактивную карту по обеспечению доступа к информации о дорогах и улицах, отремонтированных за последние годы, включая стоимость работ, данные организации-подрядчика, гарантийные сроки, ссылки на закупочную документацию и другую информация о работах, а также обобщенная статистика по дорожным работам (например, дорожные работы, выполненные одним и тем же подрядчиком). Платформа также предоставит пользователям возможность оперативно сообщать о дефектах на дорогах и необходимости их устранения, голосовать за приоритетность ремонта дорог и предоставлять обратную связь в удобном формате, которые позволят гражданам самостоятельно анализировать и контролировать использование исполнения государственных дорожных контрактов. Информация по дорожным строительствам и ремонтам собирается из открытых данных портала госзакупок и Минюста. ",
|
|
||||||
"p3" : "Помимо веб-платформы имеются два мобильных приложения для платформ iOS и Android с функциями, аналогичными веб-сайту."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
-5
@@ -23,6 +23,7 @@
|
|||||||
"navigation": "Навигация",
|
"navigation": "Навигация",
|
||||||
"contacts": "Байланыш",
|
"contacts": "Байланыш",
|
||||||
"download_our_app": "Биздин колдонмону жүктөңүз",
|
"download_our_app": "Биздин колдонмону жүктөңүз",
|
||||||
|
"socials": "Социалдык тармактар",
|
||||||
"back": "Артка",
|
"back": "Артка",
|
||||||
"save": "Сактоо",
|
"save": "Сактоо",
|
||||||
"saving": "Сакталат",
|
"saving": "Сакталат",
|
||||||
@@ -53,6 +54,13 @@
|
|||||||
"profile": "Профиль",
|
"profile": "Профиль",
|
||||||
"login": "Кирүү"
|
"login": "Кирүү"
|
||||||
},
|
},
|
||||||
|
"about_us": {
|
||||||
|
"name": "Биз жөнүндө",
|
||||||
|
"description1": "Transparency International ̶ это глобальная независимая организация по изучению и борьбе с коррупцией как в международном масштабе, так и в масштабе отдельных стран, одна из целей которой добиться большей прозрачности и подотчетности власти.",
|
||||||
|
"description2": "Команда Трансперенси Интернешнл Кыргызстан разработала платформу для мониторинга строительства и ремонта дорог, содержащая интерактивную карту по обеспечению доступа к информации о дорогах и улицах, отремонтированных за последние годы, включая стоимость работ, данные организации-подрядчика, гарантийные сроки, ссылки на закупочную документацию и другую информация о работах, а также обобщенная статистика по дорожным работам (например, дорожные работы, выполненные одним и тем же подрядчиком). ",
|
||||||
|
"description3": "Платформа также предоставит пользователям возможность оперативно сообщать о дефектах на дорогах и необходимости их устранения, голосовать за приоритетность ремонта дорог и предоставлять обратную связь в удобном формате, которые позволят гражданам самостоятельно анализировать и контролировать использование исполнения государственных дорожных контрактов. Информация по дорожным строительствам и ремонтам собирается из открытых данных портала госзакупок и Минюста.",
|
||||||
|
"description4":"Помимо веб-платформы имеются два мобильных приложения для платформ iOS и Android с функциями, аналогичными веб-сайту."
|
||||||
|
},
|
||||||
"home": {
|
"home": {
|
||||||
"title": "Кыргызстандын жолдору",
|
"title": "Кыргызстандын жолдору",
|
||||||
"subtitle": "Жолдорду коопсуз кылалы!",
|
"subtitle": "Жолдорду коопсуз кылалы!",
|
||||||
@@ -221,11 +229,6 @@
|
|||||||
"p17":"Колдонуучулар Операторго өздөрүнүн суроо-талаптарын, анын ичинде алардын жеке маалыматтарын колдонууга, жеке маалыматтарды иштетүүгө макулдукту жокко чыгарууга байланыштуу суроо-талаптарды ушул жобонун Жалпы жоболор бөлүмүндө көрсөтүлгөн дарек боюнча жазуу жүзүндө же пикир билдирүү формасы аркылуу жөнөтүлгөн электрондук документ формасында жөнөтүүгө укуктуу. Оператор суроо-талапты алган күндөн тартып 30 күндүн ичинде Колдонуучунун суроо-талабын карап чыгууга жана ага жооп жөнөтүүгө милдеттенет.",
|
"p17":"Колдонуучулар Операторго өздөрүнүн суроо-талаптарын, анын ичинде алардын жеке маалыматтарын колдонууга, жеке маалыматтарды иштетүүгө макулдукту жокко чыгарууга байланыштуу суроо-талаптарды ушул жобонун Жалпы жоболор бөлүмүндө көрсөтүлгөн дарек боюнча жазуу жүзүндө же пикир билдирүү формасы аркылуу жөнөтүлгөн электрондук документ формасында жөнөтүүгө укуктуу. Оператор суроо-талапты алган күндөн тартып 30 күндүн ичинде Колдонуучунун суроо-талабын карап чыгууга жана ага жооп жөнөтүүгө милдеттенет.",
|
||||||
"p18":"БАШКАЛАР",
|
"p18":"БАШКАЛАР",
|
||||||
"p19":"Уюмдун веб-сайтына өзүнүн жеке маалыматтарын жана маалыматын берген конок ушул Купуялык саясатынын жоболоруна макул болот. Колдонуучунун макулдугусуз Колдонуучулар тарабынан билдирилген жеке маалыматтарга уруксатсыз кирүүдөн коргоо тутумун андан ары өркүндөтүү максатында, биз каалаган убакта ушул Саясатка өзгөртүүлөрдү киргизүү укугун сактайбыз. Купуялык саясатыбызга олуттуу өзгөртүүлөрдү киргизгенде, биз Купуялык саясатыбыздын жаңыртылган версиясы менен бирге веб-сайтыбызга билдирүү жарыялайбыз. Бул Саясат үчүнчү жактардын аракеттерине жана интернет-ресурстарына жайылтылбайт."
|
"p19":"Уюмдун веб-сайтына өзүнүн жеке маалыматтарын жана маалыматын берген конок ушул Купуялык саясатынын жоболоруна макул болот. Колдонуучунун макулдугусуз Колдонуучулар тарабынан билдирилген жеке маалыматтарга уруксатсыз кирүүдөн коргоо тутумун андан ары өркүндөтүү максатында, биз каалаган убакта ушул Саясатка өзгөртүүлөрдү киргизүү укугун сактайбыз. Купуялык саясатыбызга олуттуу өзгөртүүлөрдү киргизгенде, биз Купуялык саясатыбыздын жаңыртылган версиясы менен бирге веб-сайтыбызга билдирүү жарыялайбыз. Бул Саясат үчүнчү жактардын аракеттерине жана интернет-ресурстарына жайылтылбайт."
|
||||||
},
|
|
||||||
"AboutUs" : {
|
|
||||||
"p1" : "Transparency International ̶ это глобальная независимая организация по изучению и борьбе с коррупцией как в международном масштабе, так и в масштабе отдельных стран, одна из целей которой добиться большей прозрачности и подотчетности власти.",
|
|
||||||
"p2" : "Команда Трансперенси Интернешнл Кыргызстан разработала платформу для мониторинга строительства и ремонта дорог, содержащая интерактивную карту по обеспечению доступа к информации о дорогах и улицах, отремонтированных за последние годы, включая стоимость работ, данные организации-подрядчика, гарантийные сроки, ссылки на закупочную документацию и другую информация о работах, а также обобщенная статистика по дорожным работам (например, дорожные работы, выполненные одним и тем же подрядчиком). Платформа также предоставит пользователям возможность оперативно сообщать о дефектах на дорогах и необходимости их устранения, голосовать за приоритетность ремонта дорог и предоставлять обратную связь в удобном формате, которые позволят гражданам самостоятельно анализировать и контролировать использование исполнения государственных дорожных контрактов. Информация по дорожным строительствам и ремонтам собирается из открытых данных портала госзакупок и Минюста. ",
|
|
||||||
"p3" : "Помимо веб-платформы имеются два мобильных приложения для платформ iOS и Android с функциями, аналогичными веб-сайту."
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+6
-14
@@ -23,6 +23,7 @@
|
|||||||
"navigation": "Навигация",
|
"navigation": "Навигация",
|
||||||
"contacts": "Контакты",
|
"contacts": "Контакты",
|
||||||
"download_our_app": "Скачивай наше приложение",
|
"download_our_app": "Скачивай наше приложение",
|
||||||
|
"socials": "Социальные сети",
|
||||||
"back": "Назад",
|
"back": "Назад",
|
||||||
"save": "Сохранить",
|
"save": "Сохранить",
|
||||||
"saving": "Сохранение",
|
"saving": "Сохранение",
|
||||||
@@ -73,15 +74,11 @@
|
|||||||
"read_more": "Читать"
|
"read_more": "Читать"
|
||||||
},
|
},
|
||||||
"about_us": {
|
"about_us": {
|
||||||
"name": "Transparency International-Кыргызстан",
|
"name": "О нас",
|
||||||
"description": "Филиал международной организации Transparency International в Кыргызской Республике.",
|
"description1": "Transparency International ̶ это глобальная независимая организация по изучению и борьбе с коррупцией как в международном масштабе, так и в масштабе отдельных стран, одна из целей которой добиться большей прозрачности и подотчетности власти.",
|
||||||
"mission": "Продвижение эффективной общественной политики и надлежащего управления в целях предотвращения коррупции и усиления демократии в стране.",
|
"description2": "Команда Трансперенси Интернешнл Кыргызстан разработала платформу для мониторинга строительства и ремонта дорог, содержащая интерактивную карту по обеспечению доступа к информации о дорогах и улицах, отремонтированных за последние годы, включая стоимость работ, данные организации-подрядчика, гарантийные сроки, ссылки на закупочную документацию и другую информация о работах, а также обобщенная статистика по дорожным работам (например, дорожные работы, выполненные одним и тем же подрядчиком). ",
|
||||||
"goals_and_priorities": {
|
"description3": "Платформа также предоставит пользователям возможность оперативно сообщать о дефектах на дорогах и необходимости их устранения, голосовать за приоритетность ремонта дорог и предоставлять обратную связь в удобном формате, которые позволят гражданам самостоятельно анализировать и контролировать использование исполнения государственных дорожных контрактов. Информация по дорожным строительствам и ремонтам собирается из открытых данных портала госзакупок и Минюста.",
|
||||||
"anti-corruption_education": "Антикоррупционное просвещение населения, повышение общественного осознания значимости и важности борьбы с коррупцией в Кыргызстане;",
|
"description4":"Помимо веб-платформы имеются два мобильных приложения для платформ iOS и Android с функциями, аналогичными веб-сайту."
|
||||||
"study_of_corruption_practices": "Организация изучения практики и теории борьбы с коррупцией и участия в ней структур гражданского общества в Кыргызстане и других странах;",
|
|
||||||
"supporting_citizens_and_organizations": "Содействие гражданам и организациям в реализации их конституционных прав и свобод;",
|
|
||||||
"international_experience": "Преимущественная ориентация на международный опыт уменьшения коррупции, освоение его технологий, ресурсов, а также включение структур гражданского общества в международный диалог борьбы с коррупцией."
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"volunteers": {
|
"volunteers": {
|
||||||
"activists": "Активисты",
|
"activists": "Активисты",
|
||||||
@@ -220,10 +217,5 @@
|
|||||||
"p17":"Пользователи вправе направлять Оператору свои запросы, в том числе запросы относительно использования их персональных данных, направления отзыва согласия на обработку персональных данных в письменной форме по адресу, указанному в разделе Общие положения настоящего положения, или в форме электронного документа, отправленного посредством формы обратной связи. Оператор обязуется рассмотреть и направить ответ на поступивший запрос Пользователя в течение 30 дней с момента поступления обращения.",
|
"p17":"Пользователи вправе направлять Оператору свои запросы, в том числе запросы относительно использования их персональных данных, направления отзыва согласия на обработку персональных данных в письменной форме по адресу, указанному в разделе Общие положения настоящего положения, или в форме электронного документа, отправленного посредством формы обратной связи. Оператор обязуется рассмотреть и направить ответ на поступивший запрос Пользователя в течение 30 дней с момента поступления обращения.",
|
||||||
"p18":"ДРУГОЕ",
|
"p18":"ДРУГОЕ",
|
||||||
"p19": "Посетитель сайта Организации, предоставляющий свои персональные данные и информацию, тем самым соглашается с положениями данной Политики Конфиденциальности. Мы оставляем за собой право вносить любые изменения в Политику в любое время по своему усмотрению с целью дальнейшего совершенствования системы защиты от несанкционированного доступа к сообщаемым Пользователями персональным данным без согласия Пользователя. Когда мы вносим существенные изменения в Политику Конфиденциальности, на нашем сайте размещается соответствующее уведомление вместе с обновлённой версией Политики Конфиденциальности. Действие настоящей Политики не распространяется на действия и интернет-ресурсы третьих лиц."
|
"p19": "Посетитель сайта Организации, предоставляющий свои персональные данные и информацию, тем самым соглашается с положениями данной Политики Конфиденциальности. Мы оставляем за собой право вносить любые изменения в Политику в любое время по своему усмотрению с целью дальнейшего совершенствования системы защиты от несанкционированного доступа к сообщаемым Пользователями персональным данным без согласия Пользователя. Когда мы вносим существенные изменения в Политику Конфиденциальности, на нашем сайте размещается соответствующее уведомление вместе с обновлённой версией Политики Конфиденциальности. Действие настоящей Политики не распространяется на действия и интернет-ресурсы третьих лиц."
|
||||||
},
|
|
||||||
"AboutUs" : {
|
|
||||||
"p1" : "Transparency International ̶ это глобальная независимая организация по изучению и борьбе с коррупцией как в международном масштабе, так и в масштабе отдельных стран, одна из целей которой добиться большей прозрачности и подотчетности власти.",
|
|
||||||
"p2" : "Команда Трансперенси Интернешнл Кыргызстан разработала платформу для мониторинга строительства и ремонта дорог, содержащая интерактивную карту по обеспечению доступа к информации о дорогах и улицах, отремонтированных за последние годы, включая стоимость работ, данные организации-подрядчика, гарантийные сроки, ссылки на закупочную документацию и другую информация о работах, а также обобщенная статистика по дорожным работам (например, дорожные работы, выполненные одним и тем же подрядчиком). Платформа также предоставит пользователям возможность оперативно сообщать о дефектах на дорогах и необходимости их устранения, голосовать за приоритетность ремонта дорог и предоставлять обратную связь в удобном формате, которые позволят гражданам самостоятельно анализировать и контролировать использование исполнения государственных дорожных контрактов. Информация по дорожным строительствам и ремонтам собирается из открытых данных портала госзакупок и Минюста. ",
|
|
||||||
"p3" : "Помимо веб-платформы имеются два мобильных приложения для платформ iOS и Android с функциями, аналогичными веб-сайту."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Generated
+1161
-432
File diff suppressed because it is too large.
Load diff
+2
-1
@@ -3,7 +3,7 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev -p 8003",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"start": "next start -p 8003",
|
"start": "next start -p 8003",
|
||||||
"lint": "next lint"
|
"lint": "next lint"
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
"@next/third-parties": "^14.1.0",
|
"@next/third-parties": "^14.1.0",
|
||||||
"axios": "^1.6.5",
|
"axios": "^1.6.5",
|
||||||
"dotenv": "^16.4.1",
|
"dotenv": "^16.4.1",
|
||||||
|
"html-react-parser": "^5.1.15",
|
||||||
"leaflet": "^1.9.4",
|
"leaflet": "^1.9.4",
|
||||||
"next": "^14.1.0",
|
"next": "^14.1.0",
|
||||||
"next-auth": "^4.24.5",
|
"next-auth": "^4.24.5",
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import BreadCrumbs from "@/features/BreadCrumbs/BreadCrumbs";
|
|||||||
import { apiInstance } from "@/shared/config/apiConfig";
|
import { apiInstance } from "@/shared/config/apiConfig";
|
||||||
import { IMetatag } from "@/shared/types/metatag-type";
|
import { IMetatag } from "@/shared/types/metatag-type";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export async function generateMetadata(): Promise<Metadata> {
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
|
||||||
const data = await apiInstance
|
const data = await apiInstance
|
||||||
.get<IMetatag[]>("/metatags/")
|
.get<IMetatag[]>("/metatags/")
|
||||||
.then((res) => res.data)
|
.then((res) => res.data)
|
||||||
@@ -52,18 +50,19 @@ export async function generateMetadata(): Promise<Metadata> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const AboutUs = () => {
|
const AboutUs = () => {
|
||||||
|
const t = useTranslations("about_us");
|
||||||
const tAboutUs = useTranslations("AboutUs");
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="about-us page-padding">
|
<div className="about-us page-padding">
|
||||||
<BreadCrumbs homeRequired />
|
<BreadCrumbs homeRequired />
|
||||||
<Typography element="h2">О нас</Typography>
|
<Typography element="h2">{t("name")}</Typography>
|
||||||
|
|
||||||
<div className="about-us__descriptions">
|
<div className="about-us__descriptions">
|
||||||
<p>{tAboutUs("p1")}</p>
|
<h3>
|
||||||
<p>{tAboutUs("p2")}</p>
|
{t("description1")}
|
||||||
<p>{tAboutUs("p3")}</p>
|
</h3>
|
||||||
|
<h3>{t("description2")}
|
||||||
|
{t("description3")}</h3>
|
||||||
|
<h3>{t("description4")}</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import Navbar from "@/widgets/Navbar/Navbar";
|
|||||||
import Footer from "@/widgets/Footer/Footer";
|
import Footer from "@/widgets/Footer/Footer";
|
||||||
import { NextIntlClientProvider, useMessages } from "next-intl";
|
import { NextIntlClientProvider, useMessages } from "next-intl";
|
||||||
import { Providers } from "./Providers";
|
import { Providers } from "./Providers";
|
||||||
import { GoogleAnalytics } from '@next/third-parties/google'
|
|
||||||
|
|
||||||
export default function LocaleLayout({
|
export default function LocaleLayout({
|
||||||
children,
|
children,
|
||||||
@@ -26,7 +25,6 @@ export default function LocaleLayout({
|
|||||||
</Providers>
|
</Providers>
|
||||||
</NextIntlClientProvider>
|
</NextIntlClientProvider>
|
||||||
</body>
|
</body>
|
||||||
{<GoogleAnalytics gaId={process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS || ""} />}
|
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ import calendar from "./icons/calendar.svg";
|
|||||||
import ReviewSection from "@/widgets/ReviewSection/ReviewSection";
|
import ReviewSection from "@/widgets/ReviewSection/ReviewSection";
|
||||||
import BreadCrumbs from "@/features/BreadCrumbs/BreadCrumbs";
|
import BreadCrumbs from "@/features/BreadCrumbs/BreadCrumbs";
|
||||||
import { Metadata } from "next";
|
import { Metadata } from "next";
|
||||||
|
import parse from "html-react-parser";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
params,
|
params,
|
||||||
@@ -26,21 +27,26 @@ export async function generateMetadata({
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
function convertLinksToHtml(text: string) {
|
||||||
|
const urlPattern =
|
||||||
|
/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[-A-Z0-9+&@#\/%=~_|$])[\s.,;]?/gi;
|
||||||
|
return text.replace(urlPattern, (url) => {
|
||||||
|
const href = url.trim();
|
||||||
|
return `<a href="${href}" target="_blank" rel="noopener noreferrer">${href}</a>`;
|
||||||
|
});
|
||||||
|
}
|
||||||
const formatDescription = (text: string) => {
|
const formatDescription = (text: string) => {
|
||||||
return text.replace(/(\r\n|\n|\r)/g, "<br />");
|
return text.replace(/(\r\n|\n|\r)/g, "<br />");
|
||||||
};
|
};
|
||||||
|
|
||||||
//<<<<<<< HEAD:src/app/[locale]/news/[id]/page.tsx
|
|
||||||
const NewsDetails = async ({
|
const NewsDetails = async ({
|
||||||
params,
|
params,
|
||||||
}: {
|
}: {
|
||||||
params: { id: string; новость: string };
|
params: { id: string; новость: string };
|
||||||
}) => {
|
}) => {
|
||||||
//=======
|
|
||||||
//const NewsDetails = async ({ params }: { params: { id: string } }) => {
|
|
||||||
//>>>>>>> master:src/app/news/[id]/page.tsx
|
|
||||||
const getNewsById = async () => {
|
const getNewsById = async () => {
|
||||||
const response = await apiInstance.get<INews>(`/news/${params.id}/`);
|
const response = await apiInstance.get<INews>(`/news/${params.id}/`);
|
||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -60,7 +66,8 @@ const NewsDetails = async ({
|
|||||||
"11": "Ноябрь",
|
"11": "Ноябрь",
|
||||||
"12": "Декабрь",
|
"12": "Декабрь",
|
||||||
};
|
};
|
||||||
|
const htmlContentWithLinks = convertLinksToHtml(data.description);
|
||||||
|
const formattedHtmlContent = formatDescription(htmlContentWithLinks);
|
||||||
return (
|
return (
|
||||||
<div className="news-details page-padding">
|
<div className="news-details page-padding">
|
||||||
<BreadCrumbs />
|
<BreadCrumbs />
|
||||||
@@ -89,12 +96,9 @@ const NewsDetails = async ({
|
|||||||
|
|
||||||
<div className="news-details__text">
|
<div className="news-details__text">
|
||||||
<h3>{data.title}</h3>
|
<h3>{data.title}</h3>
|
||||||
<div
|
<div className="news-details__description">
|
||||||
className="news-details__description"
|
{parse(formattedHtmlContent)}
|
||||||
dangerouslySetInnerHTML={{
|
</div>
|
||||||
__html: formatDescription(data.description),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ReviewSection endpoint="news" id={data.id} />
|
<ReviewSection endpoint="news" id={data.id} />
|
||||||
|
|||||||
@@ -29,10 +29,7 @@ const NewsCard: React.FC<INewsCard> = ({
|
|||||||
return title;
|
return title;
|
||||||
};
|
};
|
||||||
const sliceDate = (date: string) => {
|
const sliceDate = (date: string) => {
|
||||||
return `${date.slice(8, 10)}/${date.slice(5, 7)}/${date.slice(
|
return `${date.slice(8, 10)}/${date.slice(5, 7)}/${date.slice(0, 4)}`;
|
||||||
0,
|
|
||||||
4
|
|
||||||
)}`;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const sliceDescription = (description: string) => {
|
const sliceDescription = (description: string) => {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
|
|||||||
@@ -5,12 +5,25 @@ export const LINKS = () => {
|
|||||||
|
|
||||||
const LINKS = [
|
const LINKS = [
|
||||||
{ id: 1, pagename: t("home"), pathname: "/" },
|
{ id: 1, pagename: t("home"), pathname: "/" },
|
||||||
{ id: 2, pagename: t("about_us"), pathname: "/about-us" },
|
// { id: 2, pagename: t("about_us"), pathname: "/about-us" },
|
||||||
{ id: 3, pagename: t("privacy"), pathname: "/privacy" },
|
// { id: 3, pagename: t("privacy"), pathname: "/privacy" },
|
||||||
{ id: 3, pagename: t("support"), pathname: "/support" },
|
// { id: 4, pagename: t("support"), pathname: "/support" },
|
||||||
{ id: 4, pagename: t("statistics"), pathname: "/statistics" },
|
{ id: 5, pagename: t("statistics"), pathname: "/statistics" },
|
||||||
{ id: 5, pagename: t("news"), pathname: "/news" },
|
{ id: 6, pagename: t("news"), pathname: "/news" },
|
||||||
{ id: 6, pagename: t("volunteers"), pathname: "/volunteers" },
|
{ id: 7, pagename: t("volunteers"), pathname: "/volunteers" },
|
||||||
|
];
|
||||||
|
|
||||||
|
return LINKS;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const LINKS2 = () => {
|
||||||
|
const t = useTranslations("navigation");
|
||||||
|
|
||||||
|
const LINKS = [
|
||||||
|
|
||||||
|
{ id: 2, pagename: t("about_us"), pathname: "/about-us" },
|
||||||
|
{ id: 3, pagename: t("privacy"), pathname: "/privacy" },
|
||||||
|
{ id: 4, pagename: t("support"), pathname: "/support" },
|
||||||
];
|
];
|
||||||
|
|
||||||
return LINKS;
|
return LINKS;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
.footer {
|
.footer {
|
||||||
padding: 48px 80px;
|
padding: 48px 80px;
|
||||||
display: grid;
|
// display: flex;
|
||||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
// grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||||
gap: 30px;
|
gap: 30px;
|
||||||
background-color: rgb(15, 23, 42);
|
background-color: rgb(15, 23, 42);
|
||||||
|
|
||||||
@@ -16,7 +16,19 @@
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&__copyright {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: auto;
|
||||||
|
}
|
||||||
|
.top-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
// gap: 30px;
|
||||||
|
}
|
||||||
|
.bottom-div {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
a,
|
a,
|
||||||
li,
|
li,
|
||||||
h4 {
|
h4 {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import "./Footer.scss";
|
import "./Footer.scss";
|
||||||
import logo from "../../shared/assets/logo.svg";
|
import logo from "../../shared/assets/logo.svg";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { LINKS } from "@/shared/variables/links_footer";
|
import { LINKS, LINKS2 } from "@/shared/variables/links_footer";
|
||||||
import youtube from "./icons/youtube.svg";
|
import youtube from "./icons/youtube.svg";
|
||||||
import facebook from "./icons/facebook.svg";
|
import facebook from "./icons/facebook.svg";
|
||||||
import instagram from "./icons/instagram.svg";
|
import instagram from "./icons/instagram.svg";
|
||||||
@@ -9,39 +9,44 @@ import app_store_btn from "./icons/app-store-btn.svg";
|
|||||||
import play_market_btn from "./icons/play-market-btn.svg";
|
import play_market_btn from "./icons/play-market-btn.svg";
|
||||||
import { Link } from "@/shared/config/navigation";
|
import { Link } from "@/shared/config/navigation";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
import NetKgTracker from "@/widgets/NetKgTracker/NetKgTracker";
|
//import NetKgTracker from "@/widgets/NetKgTracker/NetKgTracker";
|
||||||
import GoogleAnalyticsWidget from "@/widgets/GoogleAnalyticsWidget/GoogleAnalyticsWidget";
|
//import GoogleAnalyticsWidget from "@/widgets/GoogleAnalyticsWidget/GoogleAnalyticsWidget";
|
||||||
|
|
||||||
const Footer = () => {
|
const Footer = () => {
|
||||||
const t = useTranslations("general");
|
const t = useTranslations("general");
|
||||||
const tDisclaimer = useTranslations("disclaimer");
|
const tDisclaimer = useTranslations("disclaimer");
|
||||||
const tRights = useTranslations("rights");
|
const tRights = useTranslations("rights");
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<footer className="footer">
|
<footer className="footer">
|
||||||
|
<div className="top-row">
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
<div className="footer__logo">
|
<div className="footer__logo">
|
||||||
{/* <Link href="/">
|
{/* <Link href="/">
|
||||||
<Image src={logo} alt="Logo" />
|
<Image src={logo} alt="Logo" />
|
||||||
</Link> */}
|
</Link> */}
|
||||||
<p>© {tRights("text")}</p>
|
{/* <p>© {tRights("text")}</p>
|
||||||
<p>{tDisclaimer("text")}</p>
|
<p>{tDisclaimer("text")}</p> */}
|
||||||
</div>
|
</div>
|
||||||
<div className="footer__links">
|
<div className="footer__links">
|
||||||
<h4>{t("navigation")}</h4>
|
<h4>{t("navigation")}</h4>
|
||||||
<ul>
|
<ul>
|
||||||
{LINKS().map((link) => (
|
{LINKS().map((link) => (
|
||||||
<li key={link.id}>
|
<li key={link.id}>
|
||||||
<Link href={link.pathname} key={link.id}>
|
<Link href={link.pathname}>{link.pagename}</Link>
|
||||||
{link.pagename}
|
|
||||||
</Link>
|
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
<NetKgTracker />
|
{/* Only for production
|
||||||
|
<NetKgTracker />*/}
|
||||||
<div className="footer__logo">
|
<div className="footer__logo">
|
||||||
<GoogleAnalyticsWidget />
|
{/* <GoogleAnalyticsWidget /> */} {/* hide total amount*/}
|
||||||
</div>
|
</div>
|
||||||
|
*
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="footer__contacts">
|
<div className="footer__contacts">
|
||||||
@@ -49,29 +54,59 @@ const Footer = () => {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>admin@kgroad.org</li>
|
<li>admin@kgroad.org</li>
|
||||||
<li>+9960312394038</li>
|
<li>+9960312394038</li>
|
||||||
|
{LINKS2().map((link) => (
|
||||||
<li>
|
<li key={link.id}>
|
||||||
{[youtube, facebook, instagram].map((net, i) => (
|
<Link href={link.pathname}>{link.pagename}</Link>
|
||||||
<Link key={i} href="#">
|
</li>
|
||||||
<Image src={net} alt="Net Icon" key={net} />
|
))}
|
||||||
</Link>
|
|
||||||
))}
|
|
||||||
</li>
|
|
||||||
<li>Photo By ThomasG, CC BY-SA 3.0</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="footer__apps">
|
<div className="footer__apps">
|
||||||
|
<h4>{t("socials")}</h4>
|
||||||
|
<li>
|
||||||
|
{[
|
||||||
|
{ src: youtube, url: "https://www.youtube.com/@TransparencyKyrgyzstan" },
|
||||||
|
{ src: facebook, url: "https://www.facebook.com/tikyrgyzstan" },
|
||||||
|
{ src: instagram, url: "https://www.instagram.com/transparencyinternational_kg?igsh=cTc2MHEwOW5vNDh2" }
|
||||||
|
].map((net, i) => (
|
||||||
|
<Link key={i} href={net.url} target="_blank" rel="noopener noreferrer">
|
||||||
|
<Image src={net.src} alt="Net Icon" />
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</li>
|
||||||
<h4>{t("download_our_app")}</h4>
|
<h4>{t("download_our_app")}</h4>
|
||||||
|
|
||||||
<div className="footer__apps-btns">
|
<div className="footer__apps-btns">
|
||||||
{[app_store_btn, play_market_btn].map((app, i) => (
|
{[
|
||||||
<Link key={i} href="#">
|
{ src: app_store_btn, url: "https://apps.apple.com/us/app/kg-road/id6484317991" },
|
||||||
<Image src={app} alt="App Button" key={app} />
|
{ src: play_market_btn, url: "https://play.google.com/store/apps/details?id=kg.transparency.kgroad" }
|
||||||
|
].map((app, i) => (
|
||||||
|
<Link key={i} href={app.url} target="_blank" rel="noopener noreferrer">
|
||||||
|
<Image src={app.src} alt="App Button" />
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="bottom-div">
|
||||||
|
<div className="footer__copyright">
|
||||||
|
<hr style={{ margin: "0", color: "white" }} />
|
||||||
|
<p className="text" style={{ margin: "0", color: "white" }}>
|
||||||
|
{"© Copyright " +
|
||||||
|
new Date().getFullYear() +
|
||||||
|
" - " +
|
||||||
|
tRights("text")}
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
{tDisclaimer("text")}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
min-width: 130px;
|
min-width: 130px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 120%;
|
top: 120%;
|
||||||
|
z-index: 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__option,
|
&__option,
|
||||||
|
|||||||
Reference in new issue
Block a user