25 Commits
Author SHA1 Message Date
Vladislav Khorev c2282ee5b0 Production 2024-09-11 10:19:13 +00:00
anime 775e238e77 z-index for nav-language 2024-09-11 16:00:27 +06:00
anime 5eff43ef61 Fix error in footer 2024-09-11 15:55:18 +06:00
Vladislav Khorev 3c810dad82 Remove netkg tracker for uat 2024-09-10 17:39:02 +00:00
Vladislav Khorev b10ab93bf1 Merge 2024-09-10 17:37:17 +00:00
Vladislav Khorev 49cb64a368 fixing minor issues 2024-09-10 17:35:22 +00:00
Vladislav Khorev cbe5c0656c Remove netkg tracker from uat 2024-09-10 16:25:58 +00:00
anime 1a606f4ecd Fix news details 2024-09-09 22:23:59 +06:00
anime 19397689b1 Fix news details 2024-09-09 21:39:48 +06:00
Vladislav Khorev 922d8386c6 Merge 2024-09-08 14:16:41 +00:00
Vladislav Khorev dcac729914 merge 2024-09-08 14:15:44 +00:00
Vladislav Khorev ecd3848ec3 package lock added 2024-09-08 14:14:22 +00:00
Vladislav Khorev 32761ce479 Merge 2024-09-08 14:14:05 +00:00
anime 54ec09afe0 Fix description for news 2024-09-03 11:35:13 +06:00
anime ea58e4f2d1 fix dates of news 2024-09-03 10:58:38 +06:00
Vladislav Khorev c3697c9e55 Update readme 2024-07-28 21:01:16 +00:00
anime b85d1e8f30 fixing navbar 2024-07-09 09:41:47 +06:00
Vladislav Khorev 1363519e75 fixing translations 2024-07-03 17:52:47 +00:00
altynai bea7ec82c2 Merge pull request 'updated navbar, fixed map' (#3) from kg-road-fix into ali
Reviewed-on: http://gitea.fishrungames.com/Transparency/kgroad-frontend2/pulls/3
2024-06-13 11:41:41 +00:00
anime 6508bc0258 updated navbar, fixed map 2024-06-13 17:36:48 +06:00
vladislav.khorev 981c5863ee Merge pull request 'fix' (#1) from fix into ali
Reviewed-on: http://gitea.fishrungames.com/Transparency/kgroad-frontend2/pulls/1
2024-05-30 10:34:32 +00:00
anime 5b5feaa43f added name surname to volunteers page 2024-05-29 15:51:41 +06:00
anime 545285f1c3 added kg text, removed image from about, added links in descriptions of posts 2024-05-29 15:27:00 +06:00
Vlad aa4bf468cd fix date 2024-05-24 17:11:43 +06:00
Vladislav Khorev 4f26c31c36 Working on translations 2024-05-24 08:47:59 +00:00
33 changed files with 4628 additions and 742 deletions

No files matched your search

+9
View File
@@ -1,3 +1,12 @@
## TL;DR
```
git pull
yarn install
yarn build
yarn start
```
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
## Getting Started
+30
View File
@@ -190,5 +190,35 @@
},
"rights": {
"text": "All rights reserved"
},
"PrivacyPolicy":{
"titel0":"Privacy policy",
"title1": "General provisions",
"title2": "Collection of personal data",
"title3": "Storage and use of personal data",
"title4": "Transfer of personal data",
"title5": "Destruction of personal data",
"title6": "Protection of personal data",
"title7": "User requests",
"p1": "These Privacy Policy Regulations define the procedure for processing and protecting information about individuals (hereinafter referred to as Users) using the mailing list, the feedback form of the site, and e-mail addresses located on the domain name ",
"p1o":" (hereinafter referred to as the Website). We have developed a Privacy Policy that describes how we process personal data — any actions (operations) or a set of actions (operations) performed using automation tools or without using such tools with personal data, including collection, recording, systematization, accumulation, storage, clarification (updating, modification), extraction, use, transfer (distribution, provision, access), depersonalization, blocking, deletion, destruction of personal data. The relations related to the processing of personal data and information about the users of the Website are governed by this Regulation. This Privacy Policy regulates any type of processing of personal data and personal information (any personally identifiable information and any other related information) about individuals who are users of the Website. This Policy applies to the processing of personal, personal data collected by any means, both active and passive, both via the Internet and without its use, from persons located anywhere in the world.",
"p2": "The purpose of processing personal data is to fulfill the Operator's obligations to Users regarding the use of the Website and its services. The processing of personal data of users is carried out with the consent of the personal data subject to the processing of his personal data. Personal data refers to any information relating directly or indirectly to a specific or identifiable individual (the subject of personal data) and which can be used to identify or communicate with a particular person. We may request your first name, last name, patronymic and e-mail address to include you in the mailing list with your consent and to respond to you if you have contacted us through the feedback form on the Website.",
"p3": "Users' personal data is stored exclusively on electronic media and processed using automated systems.",
"p4": "HOW WE USE YOUR PERSONAL INFORMATION",
"p5": "The personal data we collect allows us to send you e-mail notifications about news and various events in the field of anti-corruption. Your personal data may also be used when responding to your request sent via the feedback form or to our e-mail address located on the Website. If you do not wish to be included in our mailing list, you can unsubscribe at any time by informing us at the specified contacts for feedback.",
"p6":"COLLECTION AND USE OF NON-PERSONAL INFORMATION",
"p7":"We also collect personal data that is not personal − data that does not allow us to directly associate it with any person. We may collect, use, transfer and disclose non-personal information for any purpose. The following are examples of non-personal information that we collect and how we can use it. We may collect personal data, such as: the source of the link to the Website, the characteristics of user behavior on the Website, the number of pages viewed on the Website. Such data is depersonalized and is not personal. This data is collected in order to better understand what information is of interest to Website visitors and improve the quality of the content.",
"p8": "Personal data of Users is not transferred to any third parties. Users who have submitted their personal data to us before the entry into force of these Rules automatically agree to the use of their personal data. At the same time, they can always withdraw their consent to the use of personal data through the feedback form. The Operator blocks personal data related to the relevant User from the moment of the request or request of the User or his legal representative, in case of identification of false personal data or illegal actions.",
"p9": "The user's personal data is destroyed when the personal data subject withdraws consent to the processing of personal data.",
"p10":"IDENTIFICATION FILES (COOKIES) AND OTHER TECHNOLOGIES",
"p11":"The Website, interactive services and applications, e-mail messages and any other communications on our behalf may use identification cookies and other technologies such as pixel tags, web beacons. Accordingly, when using the website and other services, a pop-up window may appear on your device notifying you about the use of cookies. These technologies help us better understand user behavior, tell us which sections of our site have been visited by users, and measure the effectiveness of advertising and online searches. We consider the information collected by cookies and other technologies as non-personal information. You can control cookies by following the instructions of your browser or device. As a rule, you can change your cookie settings in the 'Settings' or 'System Settings' section. As with most websites, we collect some information automatically and store it in statistics files. Such information includes the Internet Protocol address (IP address), browser type and language, information about the Internet service provider, sending and exiting pages, information about the operating system, date and time stamp, as well as information about visits. We use such information to understand and analyze trends, administer the website, study user behavior on it, and collect demographic information about our core user base. The organization may use such information for its own marketing purposes. In some of our e-mail messages, we use interactive links to information posted on the Website. When users follow such links, before they get to the destination page on our website, their requests go through a separate registration. We track such 'passing' data to help us identify interest in individual topics and measure the effectiveness of our communications with users. If you prefer that your requests are not tracked in this way, you should not follow text or image links in e-mail messages. Pixel labels allow us to send e-mail messages in a format that is readable by consumers and tell us whether such messages have been read. We may use such information to limit the number of messages sent to consumers or to stop sending them.",
"p12": "We take precautions to ensure the protection of your personal data in order to ensure the protection of the User's personal data from unauthorized or accidental access to it, destruction, modification, blocking, copying, distribution, as well as from other illegal actions of third parties.",
"p13":"INTEGRITY AND PRESERVATION OF PERSONAL INFORMATION",
"p14":"We will store your personal data and information for as long as necessary to fulfill the purposes described in this Privacy Policy. We do not collect personal data about minors. If we become aware that we have received personal data about a minor, we will take measures to delete such information as soon as possible. We strongly recommend that parents and other persons under whose supervision minors are (legal representatives — parents, adoptive parents or guardians) monitor the use of websites by minors. The Operator is not responsible for the actions of third parties who have gained access to User information as a result of using the Internet or the Website's Services and for the consequences of using data and information that, due to the nature of the Website, are available to any Internet user.",
"p15":"QUESTIONS ABOUT PRIVACY",
"p16":"If you have any questions regarding this Privacy Policy or data processing, you can contact us using the feedback contacts kyrgyzstan@transparency.org.",
"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",
"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."
}
}
+132 -100
View File
@@ -3,7 +3,7 @@
"date": "Күн",
"address": "Дарек",
"status": "Статус",
"description": "Сүрөт",
"description": "Көйгөй",
"reviews": "Комментарийлер",
"rating": "Рейтинг",
"review": "Комментарий",
@@ -11,19 +11,19 @@
"search": "Издөө",
"search_for": "Издөө",
"city": "Шаар",
"added_roads": "Кошулган жолдор",
"broken_roads": "Тас тастаган жолдор",
"accident_hotspots": "Авариялуу жерлер",
"local_defects": "Жерги дефекттер",
"repair_plans": "Түзөө планттары",
"repaired": "Түзөлгөн",
"fixed_local_defects": "Жерги дефекттерди түзөлгөн",
"added_roads": "Белгилөөлөр",
"broken_roads": "Бузулган жолдор",
"accident_hotspots": "Авариялык абалда",
"local_defects": "Жергиликтүү кемчиликтер",
"repair_plans": "Ремонттоо планында",
"repaired": "Ремонттолгон",
"fixed_local_defects": "Жергиликтүү оңдолгон жолдор",
"news": "Жаңылыктар",
"details": "Эчти маалымат",
"details": "Кененирээк маалымат",
"navigation": "Навигация",
"contacts": "Контакттар",
"download_our_app": "Биздин приложениямызды жүктөп алыңыз",
"back": "Кайтуу",
"contacts": "Байланыш",
"download_our_app": "Биздин колдонмону жүктөңүз",
"back": "Артка",
"save": "Сактоо",
"saving": "Сакталат",
"cancel": "Жокко чыгаруу",
@@ -33,72 +33,72 @@
"receive": "Алуу",
"delete": "Жок кылуу",
"show_on_map": "Картада көрсөтүү",
"author_of_appeal": "Өтүнчүнүн автору",
"enter_city": "Шаарды киргизиңиз",
"page_not_found": "Бет табылган эмес (404)",
"incorrect_address_or_nonexistent_page": "Туура эмес дарек же бет жок",
"author_of_appeal": "Өтүнүчтүн автору",
"enter_city": "Жерликти киргизиңиз",
"page_not_found": "Барак табылган жок (404)",
"incorrect_address_or_nonexistent_page": "Дарек туура эмес же баракча жок",
"home": "Башкы бет",
"first_name": "Аты",
"first_name": "Аты-жөнү",
"last_name": "Фамилия",
"email": "Электрондук почта"
},
"navigation": {
"home": "Башкы бет",
"about_us": "Биз тууралуу",
"about_us": "Биз жөнүндө",
"privacy": "Купуялык саясаты",
"support": "Колдоо",
"statistics": "Статистика",
"news": "Жаңылыктар",
"volunteers": "Волонтёрлер",
"volunteers": "Ыктыярчылар",
"profile": "Профиль",
"login": "Кириш"
"login": "Кирүү"
},
"home": {
"title": "Кыргызстандын жолдору",
"subtitle": "Жолдорду бекемделүү жасаңыз!",
"info": "Жолдордун жаңы күйү",
"report_broken_road": "Тас тастаган жолду турганды таратуу",
"subtitle": "Жолдорду коопсуз кылалы!",
"info": "Жолдун абалы боюнча акыркы маалымат",
"report_broken_road": "Бузулган жолду белгилөө",
"road_map": "Жол картасы",
"latest_news": "Трафик, өндүрүү жана тапшыруудагы соңгосу турган жаңылыктардан кабардар болуңуз!",
"enter_location": "Шаар, айыл жана регионду киргизиңиз",
"broken_roads": "Жол кирпич",
"accident_hotspots": "Авариянын жатактоо жерлери",
"local_defects": "Жерги дефект",
"repair_plans": "Тозгоондоо жатактоо планында",
"repaired": "Тозотулду",
"fixed_local_defects": "Тозотулган жерги дефект",
"latest_news": "Жол кыймылы, жасалып жатканы ж.б. тууралуу акыркы жаңылыктардан кабардар болуңуз!",
"enter_location": "Шаар, айыл же аймакты киргизиңиз",
"broken_roads": "Бузулган жол",
"accident_hotspots": "Авариялык абалда",
"local_defects": "Жергиликтүү дефект",
"repair_plans": "Ремонттоо планында",
"repaired": "Оңдолгон",
"fixed_local_defects": "Оңдолгон жергиликтүү дефект",
"rating": "Рейтинг",
"road_discussions": "Жолдорду талкуулоо: рейтинг, тажрыйба, жолдоо боюнча комфорт!",
"road_discussions": "Жолдорду талкуулоо: рейтинг, жеке тажрыйба, ылайык айдоо!",
"enter_address": "Даректи киргизиңиз",
"read_more": "Көбүрөөк окуу"
"read_more": "Көбүрөөк маалымат"
},
"transparency_international_kyrgyzstan": {
"name": "Транспаренттыктык Интернационал-Кыргызстан",
"description": "Транспаренттыктык Интернационалдын Кыргызстан Республикасы бөлүмү.",
"mission": "Коррупциянын ыкмасы менен демократияны күтүтүп, эффективдүү жамааттык саясат жана жакшы мамлекеттүү башкаруунун бириктирилүү үчүн.",
"name": "Транспаренси Интернешнл-Кыргызстан",
"description": "Transparency International эл аралык уюмунун Кыргыз Республикасындагы бөлүмү.",
"mission": "Коррупциянын алдын алуу жана өлкөдө демократияны чыңдоо үчүн эффективдүү мамлекеттик саясатты жана ак ниет башкарууну алдыга жылдыруу.",
"goals_and_priorities": {
"anti-corruption_education": "Коррупция менен борбордук бийикти ашуу, Кыргызстанда коррупцияга каршы болгондоо маанилүүдүн жана азаттыктардын маанилүүлүгү үчүн жалпы айткынуу;",
"study_of_corruption_practices": "Коррупцияга каршы борбордукты тартуу жана учуруу теориясы менен, Кыргызстан менен башка өлкөлердеги кызмат көрсөтүүсү үчүн азаттыктыктын долбоорлорун жана каттоого жаткантыруу;",
"supporting_citizens_and_organizations": "Граждандар менен биздин же компаниялардын конституциялык башкаруу менен жандуулаткануу;",
"international_experience": "Коррупциянын аздоого чейинки жыйынтыкты башкаруу үчүн көздөр тартуу, улуттуктары менен биргелеп, коррупцияга каршы көрсөткүчтөрдү мамлекеттик диалогга киргизүү."
"anti-corruption_education": "Кыргызстандын калкын коррупцияга каршы күрөштүн мааниси жана зарылчылыгы жөнүндө коомчулуктун маалымдуулугун жогорулатуу;",
"study_of_corruption_practices": "Кыргызстанда жана башка өлкөлөрдө коррупция менен күрөшүүнүн тажрыйбасы жана теориясын изилдөөнү уюштуруу жана ага жарандык коом структураларынын катышуусу;",
"supporting_citizens_and_organizations": "Жарандарга жана уюмдарга алардын конституциялык укуктарын жана эркиндиктерин ишке ашырууга жардам көрсөтүү;",
"international_experience": "Коррупцияны азайтуу боюнча эл аралык тажрыйбага, анын технологияларын, ресурстарын колдонууга, ошондой эле коррупцияга каршы эл аралык диалогго жарандык коомдун түзүмдөрүн кошууга басымдуулук кылуу."
}
},
"volunteers": {
"activists": "Активисттер",
"received_votes": "Алынган баллдар",
"left_votes": "Калган баллдар",
"received_votes": "Алынган добуштар",
"left_votes": "Калтырылган добуштар",
"rating": "Рейтинг"
},
"profile": {
"personal_cabinet": "Жеке кабинет",
"personal_data": "Жеке дайындар",
"my_appeals": "Менин жардам кылган жалпылыгым",
"personal_data": "Жеке маалымат",
"my_appeals": "Менин кайрылууларым",
"logout": "Чыгуу",
"write_appeal": "Жардам кылуу",
"profile_photo": "Профиль сүрөтү",
"others_identification": "Профиль сүрөтү аркылуу башка адамдар сизди танышат, жана сизге кирген аккаунтту тандашуу өттүрүлгөн болот.",
"write_appeal": "Кайрылуу",
"profile_photo": "Сүрөт",
"others_identification": "Профиль сүрөтү аркылуу башка адамдар сизди тааный алышат, жана сиз кайсы аккаунтка киргениңиз белгилүү болот.",
"add_profile_photo": "Профиль сүрөтү кошуу",
"profile_photo_updated": "Профиль сүрөтү жаңыртылды",
"profile_photo_updated": "Сүрөттү жаңырланытуу",
"delete": "Жок кылуу",
"change": "Өзгөртүү"
},
@@ -108,87 +108,119 @@
"enter_old_password": "Эски сыр сөздү киргизиңиз",
"new_password": "Жаңы сыр сөз",
"enter_new_password": "Жаңы сыр сөздү киргизиңиз",
"confirm_new_password": "Жаңы сыр сөздү растоо",
"confirm_new_password_prompt": "Жаңы сыр сөздү растоо, аны кайра чалыңыз",
"confirm_new_password": "Жаңы сыр сөздү ырастоо",
"confirm_new_password_prompt": "Сураныч, жаңы сыр сөздү ырастоо зарыл",
"password": "Сыр сөз",
"forgot_password": "Сыр сөздү унуттуңузбу?",
"login": "Кириш",
"register": "Тизмеге кирүү",
"register": "Каттоо",
"sign_in_account": "Аккаунтка кириңиз",
"enter_credentials": "Киргизген дайындарыңызды киргизиңиз",
"login_via_google": "Google аркылуу кириңиз",
"enter_credentials": "Сураныч, киргизиңиз",
"login_via_google": "Google аркылуу кирүү",
"enter_password": "Сыр сөздү киргизиңиз",
"password_requirements": "Минимум 8 белги, 1 башкы буюк тамга жана 1 сандар",
"no_account_yet": "Өйткені, аккаунт жоок? Тизмеге кирүү",
"registration": "Тизмеге кирүү",
"register_now": "Азыр тизмеге кирүү",
"already_have_account": "Аккаунт бар болсо, кириңиз",
"no_account_yet": "Аккаунтуңуз жокпу? Катталыңыз",
"registration": "Каттоо",
"register_now": "Каттоо",
"already_have_account": "Аккаунтуңуз барбы? Кириңиз",
"enter_email": "Электрондук почтаны киргизиңиз",
"enter_email_for_code": "Электрондук почта киргизиңиз, биз сизге сыр сөздү калыпта тапшыруу үчүн код жөнөтөт",
"enter_email_for_code": "Электрондук почтаны киргизиңиз, биз сизге сыр сөздү жөнөтөбүз",
"send_code": "Код жөнөтүү",
"confirm_code": "Кодду растоо",
"confirm_code": "Кодту ырастоо",
"enter_code": "Кодду киргизиңиз",
"enter_reset_code": "Сыр сөздү өзгөртүп жаңыртуу үчүн кодду киргизиңиз",
"enter_reset_code": "Сыр сөздү өзгөртүп жаңыртуу үчүн кодту киргизиңиз",
"reset_code": "Сыр сөздү өзгөртүү коду",
"reset_password": "Сыр сөздү өзгөртүү",
"check_email": "Почтаны текшериңиз",
"code_sent_to": "Биз кодду name@gmail.com почтасына жөнөттүк",
"confirmation_code": "Тастыгы код",
"confirm": "Растоо",
"resend_code_in": "Кодду кайталап жөнөтүү",
"resend_code": "Кодду кайталап жөнөтүү"
"confirmation_code": "Ырастоо коду",
"confirm": "Ырастоо",
"resend_code_in": "Кодду кайра жөнөтүү",
"resend_code": "Кодду кайра жөнөтүү"
},
"send_report": {
"how_to_mark_road_section": "Жол бөлүмүн белгилөө үчүн",
"mark_road_instructions": "Чек салып, жол бөлүмүн белгилөөгө ээсиңиз (ал булактардан турат).",
"remove_segment_instruction": "Жол бөлүмүн каттоо үчүн бир маандын жакшысына басыңыз.",
"add_problem_description": "Проблеманын сүрөтүн кошуңуз",
"how_to_mark_road_section": "Жол бөлүмүн белгилөө",
"mark_road_instructions": "Төйнөгүчтү коюп, жолдун бир бөлүгүн тарта баштаңыз (ал каалаган сандагы сынык сызыктардан турушу мүмкүн).",
"remove_segment_instruction": "Жол бөлүгүн алып таштоо үчүн коюлган төйнөгүчтү кайра басыңыз.",
"add_problem_description": "Көйгөйдү сүрөттөңүз",
"enter_description": "Сүрөттөмөнү киргизиңиз",
"add_photos": "Фотографияларды кошуңуз",
"upload_photos_instructions": "Жолдун байланышты 5 фотосун жүктөп алыңыз, анткени жататат жана туура түшүнүүдү макул болот.",
"attach_file": "Файлды тиштөө (5 МБга чейин)",
"add_photos": "Сүрөт салыңыз",
"upload_photos_instructions": "Көйгөйдү ырастоо үчүн жолго тиешелүү 5 сүрөткө чеийн киргизсеңиз болот.",
"attach_file": "Сүрөт тиркөө (5 МБга чейин)",
"submit_for_moderation": "Модерацияга жиберүү",
"appeal_submitted": "Сиздин жалпылыгыңыз жиберилди",
"thanks_for_appeal": "Сиздин жалпылыгыңуз үчүн рахмат. Азырынча аны модерацияда.",
"view_my_appeals": "Менин жалпылыгымдарымды көрүү"
"appeal_submitted": "Сиздин кайрылууңуз жиберилди",
"thanks_for_appeal": "Кайрылууңуз үчүн рахмат. Азырынча ал модерацияда.",
"view_my_appeals": "Менин кайрылууларымды көрүү"
},
"months": {
"january": "Жанварь",
"february": "Февраль",
"march": "Март",
"april": "Апрель",
"may": "Май",
"june": "Июнь",
"july": "Июль",
"august": "Август",
"september": "Сентябрь",
"october": "Октябрь",
"november": "Ноябрь",
"december": "Декабрь"
"january": "Үчтүн айы",
"february": "Бирдин айы",
"march": "Жалган куран",
"april": "Чын куран",
"may": "Бугу",
"june": "Кулжа",
"july": "Теке",
"august": "Баш оона",
"september": "Аяк оона",
"october": "Тогуздун айы",
"november": "Жетинин айы",
"december": "Бештин айы"
},
"validation_errors": {
"invalid_email_format": "Туура эмес электрондук почта форматы.",
"passwords_do_not_match": "Сыр сөздөрдүн туура келмейт.",
"required_field_not_filled": "Милдеттүү талаа толтурулган жок.",
"exceeded_maximum_length": "Талаанын эң ылдам узундугу өткөнчү болду.",
"login_required_before_commenting": "Комментарий бир ар каайыпты таштоо алганда, ал кайталап киргизиңиз же тизмеге киргизиңиз.",
"login_required_before_like": "Лайк койгондо, кайталап киргизиңиз же тизмеге киргизиңиз керек."
"invalid_email_format": "Электрондук почтанын форматы туура эмес.",
"passwords_do_not_match": "Сыр сөздөрү туура келбейт.",
"required_field_not_filled": "Талап кылынган жер толтурулган эмес.",
"exceeded_maximum_length": "Тамгалардын максималдуу узундугу ашып кетти.",
"login_required_before_commenting": "Комментарий калтырыш үчүн жеке кабинетиңизге кириңиз же каттоодон өтүңүз.",
"login_required_before_like": "Лайк коюш үчүн жеке кабинетиңизге кириңиз же каттоодон өтүңүз."
},
"server_errors": {
"invalid_email_or_password": "Туура эмес почта же сыр сөз.",
"server_error_auth_attempt": "Авторизация учуруу учурастыктан кайталап сервердеги ката.",
"login_failed": "Кирүүгө мүмкүн болгон эмес. Негизги нече кайталап уруксат бериңиз.",
"account_already_exists": "Бул почтага ар бир аккаунт бар.",
"invalid_email_or_password": "Почта же сыр сөз туура эмес.",
"server_error_auth_attempt": "Авторизация аракетинде сервердеги ката.",
"login_failed": "Кирүүгө мүмкүн эмес. Кийинчирээк кайталап көрүңүз.",
"account_already_exists": "Бул почта катталган.",
"account_not_found": "Аккаунт табылган жок.",
"invalid_activation_code": "Четке калган иштеш коду.",
"invalid_activation_code_reset": "Сыр сөздү калыпта тапшыруу үчүн четке калган иштеш коду.",
"invalid_password_reset_code": "Сыр сөздү өзгөртүү коду четке калган эмес.",
"invalid_code": "Четке калган иштеш коду."
"invalid_activation_code": "Код жараксыз.",
"invalid_activation_code_reset": "Активация коду жараксыз.",
"invalid_password_reset_code": "Сыр сөздү өзгөртүү коду жараксыз.",
"invalid_code": "Туура эмес код."
},
"disclaimer": {
"text": "Бул веб-сайт Европа Биримдиги тарабынан каржыланат. Анын мазмуну үчүн Трансперенси Интернешнл Кыргызстан гана жоопкерчиликтүү жана ал Европа Биримдигинин көз карашын сөзсүз түрдө чагылдырбайт."
},
"rights": {
"text": "Бардык укуктар корголгон"
},
"PrivacyPolicy":{
"titel0":"Купуялык саясаты",
"title1": "Жалпы жоболор",
"title2": "Жеке маалыматтарды чогултуу",
"title3": "Жеке маалыматтарды сактоо жана пайдалануу",
"title4": "Жеке маалыматтарды өткөрүп берүү",
"title5": "Жеке маалыматтарды жок кылуу",
"title6": "Жеке маалыматтарды коргоо",
"title7": "Колдонуучунун кайрылуулары",
"p1":"Бул Купуялык саясатынын билдирүүсү почта тизмесин, сайттын пикир формасын жана домендик аталышта жайгашкан электрондук почта даректерин колдонгон жеке адамдар (мындан ары - Колдонуучулар) жөнүндө маалыматты иштеп чыгуу жана коргоо тартибин аныктайт.",
"p1o":" (мындан ары Сайт деп аталат) домендик аталышта жайгашкан почталык таркатма, сайттын пикир билдирүү формасын жана электрондук почта даректерин колдонгон жеке адамдар (мындан ары - Колдонуучулар) жөнүндө маалыматты колдонуу жана коргоо тартибин аныктайт. Биз жеке маалыматтарды кантип иштетээрибизди сүрөттөгөн Купуялык саясатын иштеп чыктык - автоматташтыруу куралдарын колдонуу менен же мындай куралдарды колдонбостон аткарылган ар кандай аракеттер (операциялар) же аракеттердин (операциялардын) жыйындысы, анын ичинде жеке маалыматтарды чогултуу, жазып алуу, системалаштыруу, топтоо, сактоо, тактоо (жаңыртуу, өзгөртүү),  чыгаруу, пайдалануу, берүү (тараттуу,  көрсөтүү, жетүү),  өздүксүздөндүрүү,  жаап коюу,  өчүрүү, жок кылуу. Жеке маалыматтарды жана Сайттын колдонуучулары жөнүндө маалыматтарды иштетүүгө байланышкан мамилелер ушул Жобо менен жөнгө салынат. Бул Купуялык саясаты Сайттын колдонуучулары болуп саналган адамдар жөнүндө персоналдык маалыматтарды жана жеке мүнөздөгү маалыматтарды ( өздүктү тактаганга мүмкүндүк берген каалаган маалымат жана ага байланыштуу каалаган башка маалымат) иштетүүнүн бардык түрүн жөнгө салат. Бул Саясат дүйнөнүн каалаган жеринде жайгашкан адамдардан Интернет аркылуу да, аны колдонбостон да активдүү жана пассивдүү ар кандай каражаттар менен чогултулган жеке, персоналдык маалыматтарды иштетүүгө карата колдонулат.",
"p2":"Жеке маалыматтарды  иштетүүнүн максаты Оператор тарабынан Сайтты жана анын кызматтарын пайдалануу боюнча Колдонуучулардын алдындагы милдеттерин аткаруу болуп саналат. Колдонуучунун жеке маалыматтарын иштетүү жеке маалыматтар субъектинин анын жеке маалыматтарын иштетүүгө макулдугу менен жүзөгө ашырылат. Жеке маалыматтар  деп, аныкталган же аныкталуучу адамга (жеке маалыматтар субъектисине) түздөн-түз же кыйыр түрдө тиешелүү жана аныкталган адамды идентификациялоо же аны менен байланыштыруу үчүн колдонулушу мүмкүн болгон  каалаган  маалымат. Сиздин макулдугуңуз менен сизди почталык таркатмага киргизүү, ошондой эле Сайттагы пикир билдирүү формасы аркылуу биз менен байланышсаңыз, сизге жооп берүү үчүн атыңызды, фамилияңызды, атаңыздын атыңыздын жана электрондук почта дарегиңизди сурашыбыз мүмкүн.",
"p3": "Колдонуучулардын жеке маалыматтары электрондук алып жүрүүчүлөрдө гана сакталат жана автоматташтырылган системалардын жардамы менен иштетилет.",
"p4": "БИЗ СИЗДИН ЖЕКЕ МААЛЫМАТТАРЫНЫЗДЫ КАНТИП КОЛДОНОБУЗ",
"p5":"Биз чогулткан жеке маалыматтар бизге коррупцияга каршы күрөшүү тармагындагы жаңылыктар жана ар кандай окуялар жөнүндө электрондук почта билдирүүлөрүн жөнөтүүгө мүмкүндүк берет. Ошондой эле, сиздин жеке маалыматтарыңыз пикир билдирүү формасы аркылуу же Сайтта жайгашкан биздин электрондук почта дарегибизге жөнөтүлгөн сурооңузга жооп берүү учурунда колдонулушу мүмкүн. Эгерде сиз биздин почта таркатма тизмебизге кирүүнү каалабасаңыз, анда көрсөтүлгөн пикир билдирүү байланыштар аркылуу бизге маалымдоо аркылуу жазылууну каалаган убакта баш тартсаңыз болот.",
"p6":"ЖЕКЕ ЭМЕС МААЛЫМАТТАРДЫ ЧОГУЛТУУ ЖАНА КОЛДОНУУ",
"p7":"Биз ошондой эле жеке эмес саналган персоналдык маалыматтарды чогултабыз - кандайдыр бир аныкталган адам менен түздөн-түз байланышта болбогон маалымат. Биз ар кандай максатта жеке эмес маалыматты чогултабыз, колдонобуз, өткөрүп бере алабыз жана ачып бере алабыз. Төмөндө биз чогулткан жеке эмес маалыматтын мисалдары жана биз аны кантип колдонорубуз көрсөтүлгөн. Биз Сайтка өтүүнүн булагы, Сайттагы колдонуучунун жүрүм-турум өзгөчүлүктөрү, Сайтта каралган барактардын саны сыяктуу персоналдык маалыматтарды чогултушубуз мүмкүн. Мындай маалыматтар анонимдүү жана жеке эмес. Бул маалыматтар Сайттын конокторун кандай маалымат кызыктырарын жакшыраак түшүнүү жана мазмундун сапатын жакшыртуу максатында чогултулат.",
"p8":"Колдонуучулардын жеке маалыматтары үчүнчү жактарга берилбейт. Ушул Эрежелер күчүнө киргенге чейин бизге өздөрүнүн жеке маалыматтарын берген колдонуучулар автоматтык түрдө өздөрүнүн жеке маалыматтарын пайдаланууга макул болушат. Ошол эле учурда алар ар дайым пикир билдирүү формасы аркылуу жеке маалыматтарды колдонууга макулдугун кайта чакырып ала алышат. Оператор  Колдонуучудан же анын мыйзамдуу өкүлүнөн арыз же суроо-талап түшкөн учурдан тартып, такталбаган жеке маалыматтар же мыйзамсыз аракеттер аныкталган учурда  тиешелүү Колдонуучуга таандык жеке маалыматтарды жаап коет.",
"p9": "Жеке маалыматтардын субъекти жеке маалыматтарды иштетүүгө макулдугун  кайта чакырып алса, колдонуучунун жеке маалыматтары жок кылынат.",
"p10":"ИДЕНФИКАЦИЯЛЫК ФАЙЛДАР (КУКИ) ЖАНА БАШКА ТЕХНОЛОГИЯЛАР",
"p11":"Вебсайт, интерактивдүү кызматтар жана тиркемелер, электрондук почта билдирүүлөрү жана биздин атыбыздан башка коммуникациялар идентификациялык куки файлдарын (cookies) жана башка пиксел энбелгилерин (pixel tags), веб-маяктар (web beacons) сыяктуу башка технологияларды колдонушу мүмкүн. Демек, веб-сайтты жана башка кызматтарды колдонууда, сиздин түзмөгүңүздө кукилерди колдонуу жөнүндө эскерткен калкыма терезе пайда болушу мүмкүн. Бул технологиялар бизге колдонуучунун жүрүм-турумун жакшыраак түшүнүүгө, биздин сайттын кайсы бөлүктөрүнө колдонуучулар киргенин айтып берүүгө жана жарнаманын жана онлайн издөөлөрдүн натыйжалуулугун өлчөөгө жардам берет. Биз кукилер жана башка технологиялар тарабынан чогултулган маалыматты жеке эмес маалымат деп эсептейбиз. Сиз браузериңиздеги же түзмөгүңүздөгү нускамаларды аткаруу менен cookie файлдарын көзөмөлдөй аласыз. Адатта, сиз куки жөндөөлөрүңүздү 'Жөндөөлөр' же 'Система жөндөөлөрү' бөлүмүнөн өзгөртө аласыз. Көпчүлүк веб-сайттардагыдай эле, биз кээ бир маалыматты автоматтык түрдө чогултуп, статистикалык файлдарда сактайбыз. Бул маалыматка Интернет Протоколунун (IP) дареги, браузердин түрү жана тили, Интернет-кызмат провайдери, шилтеме берүү жана чыгуу баракчалары, операциялык тутум маалыматы, дата жана убакыт маалыматы жана кирип чыгуу маалыматы кирет. Биз мындай маалыматты тенденцияларды түшүнүү жана талдоо, сайтты башкаруу, сайттагы колдонуучунун жүрүм-турумун изилдөө жана жалпы колдонуучуларыбыз жамааты жөнүндө демографиялык маалыматты чогултуу үчүн колдонобуз. Уюм мындай маалыматты өзүнүн маркетингдик максаттары үчүн колдоно алат. Кээ бир электрондук почта билдирүүлөрүндө биз Сайтта жайгаштырылган маалыматка интерактивдүү шилтемелерди колдонобуз. Колдонуучулар биздин веб-сайттагы көздөгөн бетке жеткенге чейин мындай шилтемелер боюнча өткөндө, алардын суроо-талаптары өзүнчө катталат. Биз белгилүү бир темаларга болгон кызыгууну аныктоого жана колдонуучулар менен болгон байланышыбыздын натыйжалуулугун өлчөөгө жардам берүү үчүн бул 'өтүү' маалыматына көз салабыз. Эгер сиз өзүңүздүн байланыштарыңызга ушундай жол менен көз салууну каалабасаңыз, электрондук почта билдирүүлөрүндөгү тексттик же сүрөт шилтемелерин боюнча өтпөшүңүз керек . Пиксел энбелгилери бизге электрондук почта билдирүүлөрүн керектөөчү окуй турган форматта жеткирүүгө жана мындай билдирүүлөр окулгандыгы жөнүндө маалымат берет. Биз мындай маалыматты керектөөчүлөргө жөнөткөн байланыштарды чектөө же токтотуу үчүн колдонушубуз мүмкүн.",
"p12":"Колдонуучунун жеке маалыматтарын уруксатсыз же кокустан  жетүүдөн, жок кылуудан, өзгөртүүдөн,  жаап коюудан, көчүрүүдөн, жайылтуудан, ошондой эле үчүнчү жактардын башка мыйзамсыз аракеттеринен коргоону камсыз кылуу үчүн биз сиздин жеке маалыматтарыңыздын корголушун камсыз кылуу боюнча чараларды көрөбүз.",
"p13":"ЖЕКЕ МААЛЫМАТТАРДЫН БҮТҮНДҮГҮ ЖАНА САКТАЛЫШЫ",
"p14":"Биз сиздин жеке маалыматтарыңызды ушул Купуялык саясатында сүрөттөлгөн максаттарды аткаруу үчүн зарыл болгон мезгил ичинде сактайбыз. Биз жашы жете электердин жеке маалыматын чогултпайбыз. Эгер биз жашы жете элек бала жөнүндө жеке маалыматты чогултканыбызды билсек, биз мындай маалыматты мүмкүн болушунча тезирээк жок кылуу үчүн чараларды көрөбүз. Биз ата-энелерге жана көзөмөлүндө жашы жете элек балдар бар башка адамдарга (мыйзамдуу өкүлдөр - ата-энелер, асырап алуучулар же камкорчулар) жашы жете электердин веб-сайттарды колдонуусун көзөмөлдөөнү туруктуу сунуштайбыз. Оператор Интернетти же Сайттын Кызматтарын колдонуунун натыйжасында Колдонуучу жөнүндө маалыматка жетүү мүмкүнчүлүгүнө ээ болгон үчүнчү жактардын аракеттери үчүн жана Сайттын мүнөзүнө байланыштуу каалаган интернет колдонуучуга жеткиликтүү маалыматтарды колдонуунун кесепеттери үчүн жоопкерчилик тартпайт.",
"p15":"КУПУЯЛЫК ЖӨНҮНДӨ СУРООЛОРУ",
"p16":"Бул Купуялык саясатына же маалыматтарды иштетүүгө байланыштуу суроолоруңуз болсо, kyrgyzstan@transparency.org байланыш дареги аркылуу биз менен байланышсаңыз болот.",
"p17":"Колдонуучулар Операторго өздөрүнүн суроо-талаптарын, анын ичинде алардын жеке маалыматтарын колдонууга, жеке маалыматтарды иштетүүгө макулдукту жокко чыгарууга байланыштуу суроо-талаптарды ушул жобонун Жалпы жоболор бөлүмүндө көрсөтүлгөн дарек боюнча жазуу жүзүндө же пикир билдирүү формасы аркылуу жөнөтүлгөн электрондук документ формасында жөнөтүүгө укуктуу. Оператор суроо-талапты алган күндөн тартып 30 күндүн ичинде Колдонуучунун суроо-талабын карап чыгууга жана ага жооп жөнөтүүгө милдеттенет.",
"p18":"БАШКАЛАР",
"p19":"Уюмдун веб-сайтына өзүнүн жеке маалыматтарын жана маалыматын берген конок ушул Купуялык саясатынын жоболоруна макул болот. Колдонуучунун макулдугусуз Колдонуучулар тарабынан билдирилген жеке маалыматтарга уруксатсыз кирүүдөн коргоо тутумун андан ары өркүндөтүү максатында, биз каалаган убакта ушул Саясатка өзгөртүүлөрдү киргизүү укугун сактайбыз. Купуялык саясатыбызга олуттуу өзгөртүүлөрдү киргизгенде, биз Купуялык саясатыбыздын жаңыртылган версиясы менен бирге веб-сайтыбызга билдирүү жарыялайбыз. Бул Саясат үчүнчү жактардын аракеттерине жана интернет-ресурстарына жайылтылбайт."
}
}
+30
View File
@@ -190,5 +190,35 @@
},
"rights": {
"text": "Все права защищены"
},
"PrivacyPolicy":{
"titel0":"Политика конфиденциальности",
"title1": "Общие положения",
"title2": "Сбор персональных данных",
"title3": "Хранение и использование персональных данных",
"title4": "Передача персональных данных",
"title5": "Уничтожение персональных данных",
"title6": "Защита персональных данных",
"title7": "Обращения пользователей ",
"p1":"Настоящее Положение о политике конфиденциальности определяет порядок обработки и защиты информации о физических лицах (далее — Пользователи), пользующихся почтовой рассылкой, формой обратной связи сайта, электронными почтовыми адресами, расположенными на доменном имени ",
"p1o":" (далее — Сайт). Мы разработали Политику Конфиденциальности, которая описывает, как мы осуществляем обработку персональных данных — любые действия (операции) или совокупность действий (операций), совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных данных. Отношения, связанные с обработкой персональных данных и информации о пользователях Сайта, регулируются настоящим Положением. Настоящая Политика Конфиденциальности регулирует любой вид обработки персональных данных и информации личного характера (любой информации, позволяющей установить личность, и любой иной информации, связанной с этим) о физических лицах, которые являются пользователями Сайта. Настоящая Политика распространяется на обработку личных, персональных данных, собранных любыми средствами, как активными, так и пассивными, как через Интернет, так и без его использования, от лиц, находящихся в любой точке мира.",
"p2": "Целью обработки персональных данных является выполнение обязательств Оператора перед Пользователями в отношении использования Сайта и его сервисов. Обработка персональных данных пользователей осуществляется с согласия субъекта персональных данных на обработку его персональных данных. Под персональными данными понимается любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных) и которая может быть использована для идентификации определенного лица либо связи с ним. Мы можем запросить у Вас имя, фамилию, отчество и адрес электронной почты для того, чтобы включить Вас в почтовую рассылку с Вашего согласия, а также для того, чтобы ответить Вам, если Вы обратились к нам через форму обратной связи на Сайте.",
"p3": "Персональные данные Пользователей хранятся исключительно на электронных носителях и обрабатываются с использованием автоматизированных систем. ",
"p4": "КАК МЫ ИСПОЛЬЗУЕМ ВАШУ ПЕРСОНАЛЬНУЮ ИНФОРМАЦИЮ",
"p5":"Собираемые нами персональные данные позволяют направлять Вам по электронной почте уведомления о новостях и различных событиях в сфере антикоррупции. Также ваши персональные данные могут быть использованы при ответе на ваше обращение, направленное через форму обратной связи или на наш адрес электронной почты, расположенные на Сайте. Если Вы не желаете быть включенным в наш список рассылки, Вы можете в любое время отказаться от рассылки путём информирования нас по указанным контактам для обратной связи.",
"p6":"СБОР И ИСПОЛЬЗОВАНИЕ ИНФОРМАЦИИ, НЕ ЯВЛЯЮЩЕЙСЯ ПЕРСОНАЛЬНОЙ",
"p7":"Мы также собираем персональные данные, не являющиеся персональными − данные, не позволяющие прямо ассоциировать их с каким-либо определённым лицом. Мы можем собирать, использовать, передавать и раскрывать информацию, не являющуюся персональной, для любых целей. Ниже приведены примеры информации, не являющейся персональной, которую мы собираем, и как мы можем её использовать. Мы можем собирать персональные данные, такие как: источник перехода на Сайт, особенности поведения пользователя на Сайте, количество просмотренных на Сайте страниц. Такие данные обезличены и не являются персональными. Эти данные собираются для того, чтобы лучше понимать, какая информация интересна посетителям Сайта и улучшать качество контента.",
"p8":"Персональные данные Пользователей не передаются каким-либо третьим лицам. Пользователи, которые передали нам свои персональные данные до вступления в силу настоящих Правил автоматически соглашаются на использование своих персональных данных. В тоже время, они всегда могут отозвать свое согласие на использование персональных данных через форму обратной связи. Оператор осуществляет блокирование персональных данных, относящихся к соответствующему Пользователю, с момента обращения или запроса Пользователя или его законного представителя, в случае выявления недостоверных персональных данных или неправомерных действий.",
"p9":"Персональные данные пользователя уничтожаются при отзыве субъектом персональных данных согласия на обработку персональных данных.",
"p10":"ИДЕНТИФИКАЦИОННЫЕ ФАЙЛЫ (СOOKIES) И ИНЫЕ ТЕХНОЛОГИИ",
"p11":"Веб-сайт, интерактивные услуги и приложения, сообщения электронной почты и любые иные коммуникации от нашего лица могут использовать идентификационные файлы cookies и иные технологии, такие как пиксельные ярлыки (pixel tags), веб-маяки (web beacons). Соответственно при пользовании веб-сайтом и иными услугами на Вашем устройстве может возникнуть всплывающее окно с уведомлением об использовании cookies. Указанные технологии помогают нам лучше понимать поведение пользователей, сообщают нам, какие разделы нашего сайта были посещены пользователями, и измеряют эффективность рекламы и сетевых поисков. Мы рассматриваем информацию, собираемую файлами cookies и иными технологиями как информацию, не являющуюся персональной. Вы можете контролировать cookies следуя инструкциям Вашего браузера или устройства. Как правило, Вы можете изменить настройки cookies в разделе «Настройки» или «Системные настройки». Как и в случае большинства веб-сайтов, мы собираем некоторую информацию автоматически и храним её в файлах статистики. Такая информация включает в себя адрес Интернет-протокола (IP-адрес), тип и язык браузера, информацию о поставщике Интернет-услуг, страницы отсылки и выхода, сведения об операционной системе, отметку даты и времени, а также сведения о посещениях. Мы используем такую информацию для понимания и анализа тенденций, администрирования сайта, изучения поведения пользователей на сайте и сбора демографической информации о нашем основном контингенте пользователей в целом. Организация может использовать такую информацию в своих маркетинговых целях. В некоторых наших сообщениях электронной почты мы используем интерактивные ссылки на информацию, размещённую на Сайте. Когда пользователи проходят по таким ссылкам, прежде чем они попадают на страницу назначения на нашем веб-сайте, их запросы проходят отдельную регистрацию. Мы отслеживаем такие «проходные» данные, для того чтобы помочь нам определить интерес к отдельным темам и измерить эффективность наших коммуникаций с пользователями. Если Вы предпочитаете, чтобы Ваши обращения не отслеживались подобным образом, Вы не должны проходить по текстовым или графическим ссылкам в сообщениях электронной почты. Пиксельные ярлыки позволяют нам направлять сообщения электронной почты в формате, читаемом потребителями, и сообщают нам, были ли такие сообщения прочитаны. Мы можем использовать такую информацию для ограничения количества направляемых потребителям сообщений или прекращения их направления.",
"p12":"Мы предпринимает меры предосторожности для обеспечения защиты Ваших персональных данных в целях обеспечения защиты персональных данных Пользователя от неправомерного или случайного доступа к ним, уничтожения, изменения, блокирования, копирования, распространения, а также от иных неправомерных действий третьих лиц.",
"p13":"ЦЕЛОСТНОСТЬ И СОХРАНЕНИЕ ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ",
"p14":"Мы будем хранить Ваши персональные данные и информацию в течение срока, необходимого для выполнения целей, описываемых в настоящей Политике Конфиденциальности. Мы не собираем персональные данные о несовершеннолетних. Если нам станет известно о том, что мы получили персональные данные о несовершеннолетнем, мы предпримем меры для удаления такой информации в максимально короткий срок. Мы настоятельно рекомендуем родителям и иным лицам, под чьим присмотром находятся несовершеннолетние (законные представители — родители, усыновители или попечители), контролировать использование несовершеннолетними веб-сайтов. Оператор не несет ответственности за действия третьих лиц, получивших в результате использования Интернета или Услуг Сайта доступ к информации о Пользователе и за последствия использования данных и информации, которые, в силу природы Сайта, доступны любому пользователю сети Интернет.",
"p15":"ВОПРОСЫ ОТНОСИТЕЛЬНО КОНФИДЕНЦИАЛЬНОСТИ",
"p16":"Если у вас возникнут вопросы в отношении настоящей Политики Конфиденциальности или обработки данных, Вы можете связаться с нами по контактам обратной связи kyrgyzstan@transparency.org.",
"p17":"Пользователи вправе направлять Оператору свои запросы, в том числе запросы относительно использования их персональных данных, направления отзыва согласия на обработку персональных данных в письменной форме по адресу, указанному в разделе Общие положения настоящего положения, или в форме электронного документа, отправленного посредством формы обратной связи. Оператор обязуется рассмотреть и направить ответ на поступивший запрос Пользователя в течение 30 дней с момента поступления обращения.",
"p18":"ДРУГОЕ",
"p19": "Посетитель сайта Организации, предоставляющий свои персональные данные и информацию, тем самым соглашается с положениями данной Политики Конфиденциальности. Мы оставляем за собой право вносить любые изменения в Политику в любое время по своему усмотрению с целью дальнейшего совершенствования системы защиты от несанкционированного доступа к сообщаемым Пользователями персональным данным без согласия Пользователя. Когда мы вносим существенные изменения в Политику Конфиденциальности, на нашем сайте размещается соответствующее уведомление вместе с обновлённой версией Политики Конфиденциальности. Действие настоящей Политики не распространяется на действия и интернет-ресурсы третьих лиц."
}
}
+1
View File
@@ -12,6 +12,7 @@
"@next/third-parties": "^14.1.0",
"axios": "^1.6.5",
"dotenv": "^16.4.1",
"html-react-parser": "^5.1.15",
"leaflet": "^1.9.4",
"next": "^14.1.0",
"next-auth": "^4.24.5",
+3589
View File
File diff suppressed because it is too large. Load diff
+8 -8
View File
@@ -1,9 +1,9 @@
.app {
padding-top: 78px;
}
// .app {
// padding-top: 78px;
// }
@media screen and (max-width: 768px) {
.app {
padding-top: 72px;
}
}
// @media screen and (max-width: 768px) {
// .app {
// padding-top: 72px;
// }
// }
-7
View File
@@ -1,7 +1,5 @@
import Typography from "@/shared/ui/components/Typography/Typography";
import "./AboutUs.scss";
import Image from "next/image";
import header from "./assets/header.svg";
import { Metadata } from "next";
import BreadCrumbs from "@/features/BreadCrumbs/BreadCrumbs";
import { apiInstance } from "@/shared/config/apiConfig";
@@ -57,11 +55,6 @@ const AboutUs = () => {
<BreadCrumbs homeRequired />
<Typography element="h2">О нас</Typography>
<Image
className="about-us__image"
src={header}
alt="Header Image"
/>
<div className="about-us__descriptions">
<h3>
Transparency International-Кыргызстан - филиал международной
+1 -4
View File
@@ -17,10 +17,7 @@ export default function LocaleLayout({
return (
<html lang={params.locale}>
<body>
<NextIntlClientProvider
locale={params.locale}
messages={messages}
>
<NextIntlClientProvider locale={params.locale} messages={messages}>
<Providers>
<Navbar />
<div className="app">{children}</div>
+22 -11
View File
@@ -8,15 +8,14 @@ import calendar from "./icons/calendar.svg";
import ReviewSection from "@/widgets/ReviewSection/ReviewSection";
import BreadCrumbs from "@/features/BreadCrumbs/BreadCrumbs";
import { Metadata } from "next";
import parse from "html-react-parser";
export async function generateMetadata({
params,
}: {
params: { id: string };
}): Promise<Metadata> {
const response = await apiInstance.get<INews>(
`/news/${params.id}/`
);
const response = await apiInstance.get<INews>(`/news/${params.id}/`);
return {
title: response.data.title,
@@ -28,6 +27,17 @@ 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) => {
return text.replace(/(\r\n|\n|\r)/g, "<br />");
};
const NewsDetails = async ({
params,
@@ -35,9 +45,7 @@ const NewsDetails = async ({
params: { id: string; новость: string };
}) => {
const getNewsById = async () => {
const response = await apiInstance.get<INews>(
`/news/${params.id}/`
);
const response = await apiInstance.get<INews>(`/news/${params.id}/`);
return response.data;
};
@@ -58,7 +66,8 @@ const NewsDetails = async ({
"11": "Ноябрь",
"12": "Декабрь",
};
const htmlContentWithLinks = convertLinksToHtml(data.description);
const formattedHtmlContent = formatDescription(htmlContentWithLinks);
return (
<div className="news-details page-padding">
<BreadCrumbs />
@@ -71,9 +80,9 @@ const NewsDetails = async ({
<Image src={calendar} alt="Calendar Icon" />
<p>
{months[data.created_at.slice(5, 7)]}{" "}
{data.created_at.slice(5, 7).slice(0, 1) === "0"
? data.created_at.slice(6, 7)
: data.created_at.slice(5, 7)}
{data.created_at.slice(8, 10) === "0"
? data.created_at.slice(9, 10)
: data.created_at.slice(8, 10)}
, {data.created_at.slice(0, 4)}
</p>
</div>
@@ -87,7 +96,9 @@ const NewsDetails = async ({
<div className="news-details__text">
<h3>{data.title}</h3>
<p>{data.description}</p>
<div className="news-details__description">
{parse(formattedHtmlContent)}
</div>
</div>
<ReviewSection endpoint="news" id={data.id} />
+33 -48
View File
@@ -6,6 +6,7 @@ import { Metadata } from "next";
import BreadCrumbs from "@/features/BreadCrumbs/BreadCrumbs";
import { apiInstance } from "@/shared/config/apiConfig";
import { IMetatag } from "@/shared/types/metatag-type";
import { useTranslations } from "next-intl";
export async function generateMetadata(): Promise<Metadata> {
const data = await apiInstance
@@ -52,60 +53,44 @@ export async function generateMetadata(): Promise<Metadata> {
}
const Privacy = () => {
const tPrivacyPolicy = useTranslations("PrivacyPolicy");
return (
<div className="privacy page-padding">
<BreadCrumbs homeRequired />
<Typography element="h2">Политика конфиденциальности</Typography>
<Typography element="h2">{tPrivacyPolicy("titel0")}</Typography>
<div className="privacy__descriptions">
<ol>
<li><span> Общие положения</span></li>
<h3><span>{tPrivacyPolicy("title1")}</span></h3>
</ol>
<p><span>Настоящие Положение о политике конфиденциальности определяет порядок обработки и защиты информации о физических лицах (далее — Пользователи), пользующихся почтовой рассылкой, формой обратной связи сайта, электронными почтовыми адресами, расположенными на доменном имени </span><a href="https://kgroad.org/"><span>https://kgroad.org/</span></a><span> (далее — Сайт).</span></p>
<p><span>Мы разработали Политику Конфиденциальности, которая описывает, как мы осуществляем обработку персональных данных — любые действия (операции) или совокупность действий (операций), совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных данных.</span></p>
<p><span>Отношения, связанные с обработкой персональных данных и информации о пользователях Сайта, регулируются настоящим Положением.</span></p>
<p><span>Настоящая Политика Конфиденциальности регулирует любой вид обработки персональных данных и информации личного характера (любой информации, позволяющей установить личность, и любой иной информации, связанной с этим) о физических лицах, которые являются пользователями Сайта.</span></p>
<p><span>Настоящая Политика распространяется на обработку личных, персональных данных, собранных любыми средствами, как активными, так и пассивными, как через Интернет, так и без его использования, от лиц, находящихся в любой точке мира.</span></p>
<p>2. Сбор персональных данных</p>
<p><span>Целью обработки персональных данных является выполнение обязательств Оператора перед Пользователями в отношении использования Сайта и его сервисов.</span></p>
<p><span>Обработка персональных данных пользователей осуществляется с согласия субъекта персональных данных на обработку его персональных данных.</span></p>
<p><span>Под персональными данными понимается любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных) и которая может быть использована для идентификации определенного лица либо связи с ним.</span></p>
<p><span>Мы можем запросить у Вас имя, фамилию, отчество и адрес электронной почты для того, чтобы включить Вас в почтовую рассылку с Вашего согласия, а также для того, чтобы ответить Вам, если Вы обратились к нам через форму обратной связи на Сайте.</span></p>
<p><span>3. Хранение и использование персональных данных</span></p>
<p><span>Персональные данные Пользователей хранятся исключительно на электронных носителях и обрабатываются с использованием автоматизированных систем.</span></p>
<p><span>КАК МЫ ИСПОЛЬЗУЕМ ВАШУ ПЕРСОНАЛЬНУЮ ИНФОРМАЦИЮ</span></p>
<p><span>Собираемые нами персональные данные позволяют направлять Вам по электронной почте уведомления о новостях, выходе новых антикоррупционных расследований и различных событиях. Также ваши персональные данные могут быть использованы при ответе на ваше обращение, направленное через форму обратной связи или на наш адрес электронной почты, расположенные на Сайте. Если Вы не желаете быть включенным в наш список рассылки, Вы можете в любое время отказаться от рассылки путём информирования нас по указанным контактам для обратной связи.</span></p>
<p><span>СБОР И ИСПОЛЬЗОВАНИЕ ИНФОРМАЦИИ, НЕ ЯВЛЯЮЩЕЙСЯ ПЕРСОНАЛЬНОЙ</span></p>
<p><span>Мы также собираем персональные данные, не являющиеся персональными − данные, не позволяющие прямо ассоциировать их с каким-либо определённым лицом. Мы можем собирать, использовать, передавать и раскрывать информацию, не являющуюся персональной, для любых целей. Ниже приведены примеры информации, не являющейся персональной, которую мы собираем, и как мы можем её использовать.</span></p>
<p><span>Мы можем собирать персональные данные, такие как: источник перехода на Сайт, особенности поведения пользователя на Сайте, количество просмотренных на Сайте страниц. Такие данные обезличены и не являются персональными. Эти данные собираются для того, чтобы лучше понимать, какая информация интересна посетителям Сайта и улучшать качество контента.</span></p>
<p>4. Передача персональных данных</p>
<p><span>Персональные данные Пользователей не передаются каким-либо третьим лицам. Пользователи, которые передали нам свои персональные данные до вступления в силу настоящих Правил автоматически соглашаются на использование свои персональных данных. В тоже время, они всегда могут отозвать свое согласие на использование персональных данных через форму обратной связи.</span></p>
<p><span>Оператор осуществляет блокирование персональных данных, относящихся к соответствующему Пользователю, с момента обращения или запроса Пользователя или его законного представителя, в случае выявления недостоверных персональных данных или неправомерных действий.</span></p>
<p>5. Уничтожение персональных данных</p>
<p><span>Персональные данные пользователя уничтожаются при отзыве субъектом персональных данных согласия на обработку персональных данных.</span></p>
<p><span>ИДЕНТИФИКАЦИОННЫЕ ФАЙЛЫ (СOOKIES) И ИНЫЕ ТЕХНОЛОГИИ</span></p>
<p><span>Веб-сайт, интерактивные услуги и приложения, сообщения электронной почты и любые иные коммуникации от нашего лица могут использовать</span><a href="https://www.re-store.ru/oferta/cookies/"> <span>идентификационные файлы cookies</span></a><span> и иные технологии, такие как пиксельные ярлыки (pixel tags), веб-маяки (web beacons). Соответственно при пользовании веб-сайтом и иными услугами на Вашем устройстве может возникнуть всплывающее окно с уведомлением об использовании cookies.</span></p>
<p><span>Указанные технологии помогают нам лучше понимать поведение пользователей, сообщают нам, какие разделы нашего сайта были посещены пользователями, и измеряют эффективность рекламы и сетевых поисков. Мы рассматриваем информацию, собираемую файлами cookies и иными технологиями как информацию, не являющуюся персональной.</span></p>
<p><span>Вы можете контролировать cookies следуя инструкциям Вашего браузера или устройства. Как правило, Вы можете изменить настройки cookies в разделе «Настройки» или «Системные настройки».</span></p>
<p><span>Как и в случае большинства веб-сайтов, мы собираем некоторую информацию автоматически и храним её в файлах статистики. Такая информация включает в себя адрес Интернет-протокола (IP-адрес), тип и язык браузера, информацию о поставщике Интернет-услуг, страницы отсылки и выхода, сведения об операционной системе, отметку даты и времени, а также сведения о посещениях. Мы используем такую информацию для понимания и анализа тенденций, администрирования сайта, изучения поведения пользователей на сайте и сбора демографической информации о нашем основном контингенте пользователей в целом. Организация может использовать такую информацию в своих маркетинговых целях.</span></p>
<p><span>В некоторых наших сообщениях электронной почты мы используем интерактивные ссылки на информацию, размещённую на Сайте. Когда пользователи проходят по таким ссылкам, прежде чем они попадают на страницу назначения на нашем веб-сайте, их запросы проходят отдельную регистрацию. Мы отслеживаем такие «проходные» данные, для того чтобы помочь нам определить интерес к отдельным темам и измерить эффективность наших коммуникаций с пользователями. Если Вы предпочитаете, чтобы Ваши обращения не отслеживались подобным образом, Вы не должны проходить по текстовым или графическим ссылкам в сообщениях электронной почты.</span></p>
<p><span>Пиксельные ярлыки позволяют нам направлять сообщения электронной почты в формате, читаемом потребителями, и сообщают нам, были ли такие сообщения прочитаны. Мы можем использовать такую информацию для ограничения количества направляемых потребителям сообщений или прекращения их направления.</span></p>
<p>6. Защита персональных данных</p>
<p><span>Мы предпринимает меры предосторожности для обеспечения защиты Ваших персональных данных в целях обеспечения защиты персональных данных Пользователя от неправомерного или случайного доступа к ним, уничтожения, изменения, блокирования, копирования, распространения, а также от иных неправомерных действий третьих лиц.</span></p>
<p><span>ЦЕЛОСТНОСТЬ И СОХРАНЕНИЕ ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ</span></p>
<p><span>Мы будем хранить Ваши персональные данные и информацию в течение срока, необходимого для выполнения целей, описываемых в настоящей Политике Конфиденциальности.</span></p>
<p><span>Мы не собираем персональные данные о несовершеннолетних. Если нам станет известно о том, что мы получили персональные данные о несовершеннолетнем, мы предпримем меры для удаления такой информации в максимально короткий срок.</span></p>
<p><span>Мы настоятельно рекомендуем родителям и иным лицам, под чьим присмотром находятся несовершеннолетние (законные представители — родители, усыновители или попечители), контролировать использование несовершеннолетними веб-сайтов.</span></p>
<p><span>Оператор не несет ответственности за действия третьих лиц, получивших в результате использования Интернета или Услуг Сайта доступ к информации о Пользователе и за последствия использования данных и информации, которые, в силу природы Сайта, доступны любому пользователю сети Интернет.</span></p>
<p><span>ВОПРОСЫ ОТНОСИТЕЛЬНО КОНФИДЕНЦИАЛЬНОСТИ</span></p>
<p><span>Если у вас возн</span><span>икнут вопросы в отношении настоящей Политики Конфиденциальности или обработки данных, Вы можете связаться с нами по контактам обратной связи office@ti-russia.org.</span></p>
<p><span>7. Обращения пользователей</span></p>
<p><span>Пользователи вправе направлять Оператору свои запросы, в том числе запросы относительно использования их персональных данных, направления отзыва согласия на обработку персональных данных в письменной форме по адресу, указанному в разделе Общие положения настоящего положения, или в форме электронного документа, отправленного посредством </span><a href="https://kgroad.org/ru/support/"><span>формы обратной связи.</span></a></p>
<p><span>Оператор обязуется рассмотреть и направить ответ на поступивший запрос Пользователя в течение 30 дней с момента поступления обращения.</span></p>
<p><span>ДРУГОЕ</span></p>
<p><span>Посетитель сайта Организации, предоставляющий свои персональные данные и информацию, тем самым соглашается с положениями данной Политики Конфиденциальности.</span></p>
<p><span>Мы оставляем за собой право вносить любые изменения в Политику в любое время по своему усмотрению с целью дальнейшего совершенствования системы защиты от несанкционированного доступа к сообщаемым Пользователями персональным данным без согласия Пользователя. Когда мы вносим существенные изменения в Политику Конфиденциальности, на нашем сайте размещается соответствующее уведомление вместе с обновлённой версией Политики Конфиденциальности.</span></p>
<p><span>Действие настоящей Политики не распространяется на действия и интернет-ресурсы третьих лиц.</span></p>
<p></p>
<p><span>
{tPrivacyPolicy("p1")}
<a href='https://askjournal.kg/'>https://askjournal.kg/</a>
{tPrivacyPolicy("p1o")}
</span></p>
<h3><span>{tPrivacyPolicy("title2")}</span></h3>
<p><span>{tPrivacyPolicy("p2")}</span></p>
<h3><span>{tPrivacyPolicy("title3")}</span></h3>
<p><span>{tPrivacyPolicy("p3")}</span></p>
<p><span>{tPrivacyPolicy("p4")}</span></p>
<p><span>{tPrivacyPolicy("p5")}</span></p>
<p><span>{tPrivacyPolicy("p6")}</span></p>
<p><span>{tPrivacyPolicy("p7")}</span></p>
<h3><span>{tPrivacyPolicy("title4")}</span></h3>
<p><span>{tPrivacyPolicy("p8")}</span></p>
<h3><span>{tPrivacyPolicy("title5")}</span></h3>
<p><span>{tPrivacyPolicy("p9")}</span></p>
<p><span>{tPrivacyPolicy("p10")}</span></p>
<p><span>{tPrivacyPolicy("p11")}</span></p>
<h3><span>{tPrivacyPolicy("title6")}</span></h3>
<p><span>{tPrivacyPolicy("p12")}</span></p>
<p><span>{tPrivacyPolicy("p13")}</span></p>
<p><span>{tPrivacyPolicy("p14")}</span></p>
<p><span>{tPrivacyPolicy("p15")}</span></p>
<p><span>{tPrivacyPolicy("p16")}</span></p>
<h3><span>{tPrivacyPolicy("title7")}</span></h3>
<p><span>{tPrivacyPolicy("p17")}</span></p>
<p><span>{tPrivacyPolicy("p18")}</span></p>
<p><span>{tPrivacyPolicy("p19")}</span></p>
</div>
</div>
);
+1 -4
View File
@@ -29,10 +29,7 @@ const NewsCard: React.FC<INewsCard> = ({
return title;
};
const sliceDate = (date: string) => {
return `${date.slice(8, 10)}/${date.slice(5, 7)}/${date.slice(
0,
4
)}`;
return `${date.slice(8, 10)}/${date.slice(5, 7)}/${date.slice(0, 4)}`;
};
const sliceDescription = (description: string) => {
+1
View File
@@ -25,6 +25,7 @@
img {
width: 50px;
height: auto;
}
input {
+2 -7
View File
@@ -5,8 +5,7 @@ import Image from "next/image";
import search from "./icons/search.svg";
import { useTranslations } from "next-intl";
interface ISearchFormProps
extends React.InputHTMLAttributes<HTMLInputElement> {
interface ISearchFormProps extends React.InputHTMLAttributes<HTMLInputElement> {
handleSubmit: (e: React.MouseEvent<HTMLFormElement>) => void;
}
@@ -20,11 +19,7 @@ const SearchForm: React.FC<ISearchFormProps> = ({
}: ISearchFormProps) => {
const t = useTranslations("general");
return (
<form
style={style}
className="search-form"
onSubmit={handleSubmit}
>
<form style={style} className="search-form" onSubmit={handleSubmit}>
<div className="search-form__input">
<Image src={search} alt="Search Icon" />
<input
+2
View File
@@ -1,6 +1,8 @@
export interface IUserRatings {
user_id: number;
username: string;
first_name: string;
last_name: string;
report_count: number;
likes_given_count: number;
likes_received_count: number;
+4 -4
View File
@@ -7,10 +7,10 @@ export const LINKS = () => {
{ id: 1, pagename: t("home"), pathname: "/" },
{ id: 2, pagename: t("about_us"), pathname: "/about-us" },
{ id: 3, pagename: t("privacy"), pathname: "/privacy" },
{ id: 3, pagename: t("support"), pathname: "/support" },
{ id: 4, pagename: t("statistics"), pathname: "/statistics" },
{ id: 5, pagename: t("news"), pathname: "/news" },
{ id: 6, pagename: t("volunteers"), pathname: "/volunteers" },
{ id: 4, pagename: t("support"), pathname: "/support" },
{ id: 5, pagename: t("statistics"), pathname: "/statistics" },
{ id: 6, pagename: t("news"), pathname: "/news" },
{ id: 7, pagename: t("volunteers"), pathname: "/volunteers" },
];
return LINKS;
-14
View File
@@ -1,14 +0,0 @@
export const MONTHS: Record<string, string> = {
"01": "Январь",
"02": "Февраль",
"03": "Март",
"04": "Апрель",
"05": "Май",
"06": "Июнь",
"07": "Июль",
"08": "Август",
"09": "Сентябрь",
"10": "Октябрь",
"11": "Ноябрь",
"12": "Декабрь",
};
+11 -7
View File
@@ -10,6 +10,7 @@ import play_market_btn from "./icons/play-market-btn.svg";
import { Link } from "@/shared/config/navigation";
import { useTranslations } from "next-intl";
import NetKgTracker from "@/widgets/NetKgTracker/NetKgTracker";
import GoogleAnalyticsWidget from "@/widgets/GoogleAnalyticsWidget/GoogleAnalyticsWidget";
const Footer = () => {
const t = useTranslations("general");
@@ -18,9 +19,9 @@ const Footer = () => {
return (
<footer className="footer">
<div className="footer__logo">
<Link href="/">
{/* <Link href="/">
<Image src={logo} alt="Logo" />
</Link>
</Link> */}
<p>© {tRights("text")}</p>
<p>{tDisclaimer("text")}</p>
</div>
@@ -29,13 +30,16 @@ const Footer = () => {
<ul>
{LINKS().map((link) => (
<li key={link.id}>
<Link href={link.pathname} key={link.id}>
{link.pagename}
</Link>
<Link href={link.pathname}>{link.pagename}</Link>
</li>
))}
</ul>
{/* Only for production*/}
<NetKgTracker />
<div className="footer__logo">
<GoogleAnalyticsWidget />
</div>
*
</div>
<div className="footer__contacts">
@@ -47,7 +51,7 @@ const Footer = () => {
<li>
{[youtube, facebook, instagram].map((net, i) => (
<Link key={i} href="#">
<Image src={net} alt="Net Icon" key={net} />
<Image src={net} alt="Net Icon" />
</Link>
))}
</li>
@@ -60,7 +64,7 @@ const Footer = () => {
<div className="footer__apps-btns">
{[app_store_btn, play_market_btn].map((app, i) => (
<Link key={i} href="#">
<Image src={app} alt="App Button" key={app} />
<Image src={app} alt="App Button" />
</Link>
))}
</div>
@@ -0,0 +1,44 @@
'use client'
import React, { useEffect, useState, useCallback } from 'react';
import { apiInstance } from "@/shared/config/apiConfig";
import { AxiosError } from "axios";
const GoogleAnalyticsWidget = () => {
const [visitors, setVisitors] = useState<string>("");
/* const getAnalytics = async () => {
try {
const response = await apiInstance.get("/report/google_analytics/");
return response.data;
} catch (error: unknown) {
if (error instanceof AxiosError) console.log(error.message);
}
};*/
//const data = await getAnalytics();
const fetchMyAPI = useCallback(async () => {
const getAnalytics = async () => {
try {
const response = await apiInstance.get("/report/google_analytics/");
return response.data;
} catch (error: unknown) {
if (error instanceof AxiosError) console.log(error.message);
}
};
const data = await getAnalytics();
setVisitors(data.visitors);
}, [visitors])
useEffect(() => {
fetchMyAPI();
}, []);
return (
<div><p>Total cummulative visitors: {visitors}</p></div>
)
};
export default GoogleAnalyticsWidget;
+39 -6
View File
@@ -2,12 +2,30 @@
.nav-auth-profile-lg,
.nav-auth-signin-lg {
width: fit-content;
padding: 8px 16px;
background-color: $light-blue;
border-radius: 5px;
font-weight: 900;
color: white;
// width: fit-content;
// padding: 8px 16px;
// background-color: $light-blue;
// border-radius: 5px;
// font-weight: 900;
// color: white;
background-color: white;
color: #3695d8;
border-color: #3695d8;
border: 3px solid #3695d8;
padding-top: 12px;
padding-right: 20px;
padding-bottom: 12px;
padding-left: 20px;
border-radius: 15px;
cursor: pointer;
font-weight: 600;
transition: background-color 0.3s, color 0.3s;
&:hover{
background-color: #3695d8;
color: white;
}
}
.nav-auth-profile-sm,
@@ -20,3 +38,18 @@
width: fit-content;
color: $light-blue;
}
.appeal-btn {
background-color: white;
color: #3695d8;
border-color: #3695d8;
border: 3px solid #3695d8;
padding-top: 12px;
padding-right: 20px;
padding-bottom: 12px;
padding-left: 20px;
border-radius: 15px;
cursor: pointer;
font-weight: 600;
transition: background-color 0.3s, color 0.3s;
}
@@ -10,6 +10,7 @@
min-width: 130px;
position: absolute;
top: 120%;
z-index: 9;
}
&__option,
@@ -1,9 +1,6 @@
"use client";
import "./NavLanguage.scss";
import Image from "next/image";
import { useEffect, useRef, useState, useTransition } from "react";
import globus from "./icons/globus.svg";
import chevron from "./icons/chevron-down.svg";
import check from "./icons/check.svg";
import { useParams, useRouter } from "next/navigation";
@@ -32,10 +29,7 @@ const NavLanguage = () => {
useEffect(() => {
function handleClickOutside(event: any) {
if (
menuRef.current &&
!menuRef.current.contains(event.target)
) {
if (menuRef.current && !menuRef.current.contains(event.target)) {
setOpenMenu(false);
}
}
@@ -47,11 +41,18 @@ const NavLanguage = () => {
return (
<div ref={menuRef} className="nav-language">
{/* <button
onClick={() => setOpenMenu((prev) => !prev)}
className="nav-language__btn"
> */}
{/* <Image src={globus} alt="globus icon" /> */}
<button
onClick={() => setOpenMenu((prev) => !prev)}
className="nav-language__btn"
>
<Image src={globus} alt="globus icon" />
{language === "ru" && <span>Рус</span>}
{language === "kg" && <span>Кырг</span>}
{language === "en" && <span>Eng</span>}
<Image src={chevron} alt="chevron icon" />
</button>
{openMenu && (
+15 -10
View File
@@ -1,15 +1,13 @@
@import "../../shared/ui/variables.scss";
.navbar {
padding: 0 90px;
padding: 15px 90px;
width: 100%;
height: 78px;
position: fixed;
z-index: 10005;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #fff;
box-shadow: 0 4px 6px #0000001a;
&__logo {
display: flex;
@@ -17,9 +15,16 @@
gap: 10px;
&_last {
min-width: 78px;
max-width: 78px;
height: 100%;
// min-width: 78px;
// max-width: 78px;
// height: 100%;
margin-top: 30px;
height: 120px;
width: 120px;
display: inline-block;
margin-right: 10px;
object-fit: cover;
}
}
@@ -39,8 +44,8 @@
&__link_active {
opacity: 1;
font-weight: 900;
border-bottom: 2px solid black;
font-weight: 800;
// border-bottom: 2px solid black;
}
&__lang-and-auth {
@@ -60,7 +65,7 @@
@media screen and (max-width: 1220px) {
.navbar {
padding: 0 60px;
// padding: 0 60px;
&__links {
gap: 40px;
+2 -2
View File
@@ -32,13 +32,14 @@ const Navbar = () => {
<section className="navbar">
<div className="navbar__logo">
<Link href="/">
<Image src={logo} alt="Logo" />
<Image src={logo} alt="Logo" className="navbar__logo-ti" />
</Link>
<Image
className="navbar__logo_last"
src={FOUNDED[locale as string]}
alt="Founded by EU Image"
/>
<NavLanguage />
</div>
<nav className="navbar__links">
@@ -56,7 +57,6 @@ const Navbar = () => {
</nav>
<div className="navbar__lang-and-auth">
<NavLanguage />
<NavAuth setOpenMenu={setOpenMenu} />
</div>
@@ -21,7 +21,6 @@ import { apiInstance } from "@/shared/config/apiConfig";
import { useSession } from "next-auth/react";
import { IDisplayMap } from "@/shared/types/map-type";
import Loader from "@/shared/ui/components/Loader/Loader";
import { useRouter } from "@/shared/config/navigation";
import ReportMessage from "@/features/ReportMessage/ReportMessage";
interface ILatLng {
+1 -1
View File
@@ -1,6 +1,6 @@
.header {
position: relative;
height: 386px;
height: 500px;
display: flex;
flex-direction: column;
align-items: center;
@@ -1,5 +1,5 @@
.home-map {
width: 100%;
width: 88%;
height: 580px;
border-radius: 8px;
@@ -40,9 +40,7 @@ interface IHomeMapProps {
reports: IData[];
}
const HomeMap: React.FC<IHomeMapProps> = ({
reports,
}: IHomeMapProps) => {
const HomeMap: React.FC<IHomeMapProps> = ({ reports }: IHomeMapProps) => {
const { display_location, latLng } = useMapStore();
const [position, setPosition] = useState<ILatLng>({
lat: 42.8746,
@@ -95,10 +93,7 @@ const HomeMap: React.FC<IHomeMapProps> = ({
lng: 74.606,
};
if (
latLng.lat === defPosition.lat &&
latLng.lng === defPosition.lng
)
if (latLng.lat === defPosition.lat && latLng.lng === defPosition.lng)
return null;
return (
@@ -112,7 +107,7 @@ const HomeMap: React.FC<IHomeMapProps> = ({
<MapContainer
center={position}
zoom={14}
scrollWheelZoom={false}
scrollWheelZoom={true}
className="home-map"
>
<TileLayer
@@ -144,14 +139,10 @@ const HomeMap: React.FC<IHomeMapProps> = ({
<Marker
key={marker.id}
icon={icons[report.category]}
position={
[+marker.latitude, +marker.longitude] as LatLngTuple
}
position={[+marker.latitude, +marker.longitude] as LatLngTuple}
>
<Popup>
<Link href={`/report/${report?.id}`}>
{marker.address}
</Link>
<Link href={`/report/${report?.id}`}>{marker.address}</Link>
</Popup>
</Marker>
))
@@ -38,6 +38,12 @@
font-weight: 400;
line-height: 34px;
color: rgb(62, 50, 50);
a{
color: rgb(72, 159, 225);
font-size: 20px;
text-decoration: underline;
}
}
&__author {
@@ -6,7 +6,6 @@ import { ILocation } from "@/shared/types/location-type";
import calendar from "./icons/calendar.svg";
import { ROAD_TYPES_COLORS } from "@/shared/variables/road-types";
import Image from "next/image";
import { MONTHS } from "@/shared/variables/month";
import ShowMapButton from "@/features/ShowMapButton/ShowMapButton";
import { getTranslations } from "next-intl/server";
@@ -39,6 +38,12 @@ const ReportInformation: React.FC<IReportInformationProps> = async ({
5: t("repaired"),
6: t("fixed_local_defects"),
};
const renderDescriptionWithLinks = (description: string) => {
const regex = /(?:https?|ftp):\/\/[\n\S]+/g;
return description.replace(regex, (match) => `<a href="${match}" target="_blank" rel="noopener noreferrer">${match}</a>`);
};
return (
<div className="report-information">
<RoadType color={ROAD_TYPES_COLORS[category]}>
@@ -49,17 +54,17 @@ const ReportInformation: React.FC<IReportInformationProps> = async ({
<div className="report-information__date">
<Image src={calendar} alt="Calendar Icon" />
<p>
{MONTHS[date.slice(5, 7)]}{" "}
{date.slice(5, 7).slice(0, 1) === "0"
? date.slice(6, 7)
: date.slice(5, 7)}
, {date.slice(0, 4)}
{new Date(date).toLocaleDateString('ru-RU', {
day: 'numeric',
month: 'long',
year: 'numeric'
})}
</p>
</div>
<ReportLike count={total_likes} report_id={id} />
</div>
<p className="report-information__description">{description}</p>
<p className="report-information__description" dangerouslySetInnerHTML={{ __html: renderDescriptionWithLinks(description) }} />
<p className="report-information__author">
Автор обращения:{" "}
@@ -21,16 +21,15 @@
tr {
width: 100%;
height: 100%;
display: grid;
grid-template-columns: 100px 320px 210px 213px 222px 92px;
align-items: center;
grid-template-columns: 80px 300px 300px 200px 200px 200px 200px;
td {
display: flex;
align-items: center;
height: 100%;
background-color: rgb(244, 244, 244);
justify-content: center;
}
td,
@@ -52,7 +51,7 @@
padding: 0 20px;
tr {
display: grid;
grid-template-columns: 100px 320px 210px 213px 222px 92px;
grid-template-columns: 80px 300px 300px 200px 180px 200px 180px;
align-items: center;
width: 100%;
height: 80px;
@@ -62,8 +61,12 @@
font-size: 20px;
font-weight: 500;
line-height: 20px;
display: flex;
align-items: center;
justify-content: center;
}
#volunteers-user-cell {
color: rgb(72, 159, 225);
}
@@ -16,6 +16,7 @@ const VolunteersTable = () => {
const params = [
{ param: "№" },
{ param: "Активист" },
{ param: "Имя Фамилия"},
{
param: "Добавлено дорог",
handleClick() {
@@ -124,6 +125,7 @@ const VolunteersTable = () => {
<td id="volunteers-user-cell">
{hideEmail(user.username)}
</td>
<td>{user.first_name} {user.last_name}</td>
<td>{user.report_count}</td>
<td>{user.likes_received_count}</td>
<td>{user.likes_given_count}</td>
+608 -474
View File
File diff suppressed because it is too large. Load diff