comunit-base 0.37.200628.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (752) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +426 -0
  4. data/Rakefile +26 -0
  5. data/app/assets/config/comunit_base_manifest.js +2 -0
  6. data/app/assets/images/comunit/base/icons/book.svg +1 -0
  7. data/app/assets/images/comunit/base/icons/comment.svg +1 -0
  8. data/app/assets/images/comunit/base/icons/dropdown.svg +3 -0
  9. data/app/assets/images/comunit/base/icons/hamburger.svg +1 -0
  10. data/app/assets/images/comunit/base/icons/pencil.svg +1 -0
  11. data/app/assets/images/comunit/base/icons/recent.svg +1 -0
  12. data/app/assets/images/comunit/base/icons/repost.svg +1 -0
  13. data/app/assets/images/comunit/base/icons/right-arrow.svg +1 -0
  14. data/app/assets/images/comunit/base/icons/search.svg +1 -0
  15. data/app/assets/images/comunit/base/icons/slider/left-arrow-hover.svg +4 -0
  16. data/app/assets/images/comunit/base/icons/slider/left-arrow.svg +4 -0
  17. data/app/assets/images/comunit/base/icons/slider/right-arrow-hover.svg +4 -0
  18. data/app/assets/images/comunit/base/icons/slider/right-arrow.svg +4 -0
  19. data/app/assets/images/comunit/base/icons/view.svg +1 -0
  20. data/app/assets/images/comunit/base/placeholders/file.svg +1 -0
  21. data/app/assets/images/comunit/base/placeholders/region_image.svg +12 -0
  22. data/app/assets/images/comunit/base/publisher_logo1.png +0 -0
  23. data/app/assets/javascripts/comunit/base/components/regions.js +0 -0
  24. data/app/assets/javascripts/comunit/base/comunit-base.js +197 -0
  25. data/app/assets/javascripts/comunit/base/socialization.js +47 -0
  26. data/app/assets/stylesheets/biovision/regions/regions.scss +25 -0
  27. data/app/assets/stylesheets/comunit/base/admin.scss +95 -0
  28. data/app/assets/stylesheets/comunit/base/albums.scss +101 -0
  29. data/app/assets/stylesheets/comunit/base/components.scss +8 -0
  30. data/app/assets/stylesheets/comunit/base/components/calendar.scss +62 -0
  31. data/app/assets/stylesheets/comunit/base/components/campaigns.scss +1 -0
  32. data/app/assets/stylesheets/comunit/base/components/campaigns/candidates.scss +16 -0
  33. data/app/assets/stylesheets/comunit/base/components/carousel.scss +36 -0
  34. data/app/assets/stylesheets/comunit/base/components/deeds.scss +2 -0
  35. data/app/assets/stylesheets/comunit/base/components/deeds/form.scss +26 -0
  36. data/app/assets/stylesheets/comunit/base/components/deeds/preview.scss +11 -0
  37. data/app/assets/stylesheets/comunit/base/components/forms.scss +24 -0
  38. data/app/assets/stylesheets/comunit/base/components/forms/inputs.scss +32 -0
  39. data/app/assets/stylesheets/comunit/base/components/posts.scss +28 -0
  40. data/app/assets/stylesheets/comunit/base/components/posts/featured.scss +86 -0
  41. data/app/assets/stylesheets/comunit/base/components/posts/item.scss +91 -0
  42. data/app/assets/stylesheets/comunit/base/components/posts/list.scss +20 -0
  43. data/app/assets/stylesheets/comunit/base/components/posts/my-form.scss +32 -0
  44. data/app/assets/stylesheets/comunit/base/components/posts/preview.scss +169 -0
  45. data/app/assets/stylesheets/comunit/base/default.scss +74 -0
  46. data/app/assets/stylesheets/comunit/base/default_site.scss +6 -0
  47. data/app/assets/stylesheets/comunit/base/entries.scss +145 -0
  48. data/app/assets/stylesheets/comunit/base/events.scss +161 -0
  49. data/app/assets/stylesheets/comunit/base/layout.scss +417 -0
  50. data/app/assets/stylesheets/comunit/base/notifications.scss +12 -0
  51. data/app/assets/stylesheets/comunit/base/posts.scss +798 -0
  52. data/app/assets/stylesheets/comunit/base/socialization.scss +112 -0
  53. data/app/assets/stylesheets/comunit/base/themes/default.scss +34 -0
  54. data/app/assets/stylesheets/comunit/base/themes/default/footer.scss +45 -0
  55. data/app/assets/stylesheets/comunit/base/themes/default/frontpage.scss +2 -0
  56. data/app/assets/stylesheets/comunit/base/themes/default/frontpage/featured_posts.scss +8 -0
  57. data/app/assets/stylesheets/comunit/base/themes/default/frontpage/post_category.scss +36 -0
  58. data/app/assets/stylesheets/comunit/base/themes/default/header.scss +108 -0
  59. data/app/assets/stylesheets/comunit/base/themes/default/header/navigation.scss +139 -0
  60. data/app/assets/stylesheets/comunit/base/themes/default/header/search.scss +31 -0
  61. data/app/assets/stylesheets/comunit/base/themes/default/legacy.scss +183 -0
  62. data/app/assets/stylesheets/comunit/base/themes/default/main.scss +45 -0
  63. data/app/assets/stylesheets/comunit/base/themes/default/sidebar.scss +49 -0
  64. data/app/assets/stylesheets/comunit/base/themes/default/sidebar/polls.scss +38 -0
  65. data/app/assets/stylesheets/comunit/base/themes/default/sidebar/posts.scss +133 -0
  66. data/app/assets/stylesheets/comunit/base/users.scss +142 -0
  67. data/app/assets/stylesheets/comunit/base/vars.scss +17 -0
  68. data/app/controllers/admin/albums_controller.rb +35 -0
  69. data/app/controllers/admin/appeals_controller.rb +30 -0
  70. data/app/controllers/admin/campaigns_controller.rb +37 -0
  71. data/app/controllers/admin/candidates_controller.rb +28 -0
  72. data/app/controllers/admin/countries_controller.rb +26 -0
  73. data/app/controllers/admin/decision_users_controller.rb +2 -0
  74. data/app/controllers/admin/decisions_controller.rb +2 -0
  75. data/app/controllers/admin/deed_categories_controller.rb +51 -0
  76. data/app/controllers/admin/deeds_controller.rb +28 -0
  77. data/app/controllers/admin/event_materials_controller.rb +25 -0
  78. data/app/controllers/admin/event_participants_controller.rb +27 -0
  79. data/app/controllers/admin/event_programs_controller.rb +20 -0
  80. data/app/controllers/admin/event_speakers_controller.rb +30 -0
  81. data/app/controllers/admin/event_sponsors_controller.rb +30 -0
  82. data/app/controllers/admin/events_controller.rb +54 -0
  83. data/app/controllers/admin/groups_controller.rb +54 -0
  84. data/app/controllers/admin/photos_controller.rb +25 -0
  85. data/app/controllers/admin/political_forces_controller.rb +45 -0
  86. data/app/controllers/admin/promo_blocks_controller.rb +27 -0
  87. data/app/controllers/admin/promo_items_controller.rb +22 -0
  88. data/app/controllers/admin/regions_controller.rb +53 -0
  89. data/app/controllers/admin/teams_controller.rb +53 -0
  90. data/app/controllers/admin/user_messages_controller.rb +2 -0
  91. data/app/controllers/albums_controller.rb +68 -0
  92. data/app/controllers/api/user_links_controller.rb +23 -0
  93. data/app/controllers/api/users_controller.rb +71 -0
  94. data/app/controllers/appeals_controller.rb +78 -0
  95. data/app/controllers/articles_controller.rb +49 -0
  96. data/app/controllers/authors_controller.rb +27 -0
  97. data/app/controllers/campaigns_controller.rb +130 -0
  98. data/app/controllers/candidates_controller.rb +70 -0
  99. data/app/controllers/decision_users_controller.rb +2 -0
  100. data/app/controllers/decisions_controller.rb +2 -0
  101. data/app/controllers/deed_categories_controller.rb +70 -0
  102. data/app/controllers/deeds_controller.rb +95 -0
  103. data/app/controllers/editorial/index_controller.rb +11 -0
  104. data/app/controllers/editorial/users_controller.rb +34 -0
  105. data/app/controllers/entries_controller.rb +140 -0
  106. data/app/controllers/event_materials_controller.rb +55 -0
  107. data/app/controllers/event_participants_controller.rb +44 -0
  108. data/app/controllers/event_programs_controller.rb +55 -0
  109. data/app/controllers/event_speakers_controller.rb +55 -0
  110. data/app/controllers/event_sponsors_controller.rb +55 -0
  111. data/app/controllers/events_controller.rb +69 -0
  112. data/app/controllers/featured_posts_controller.rb +42 -0
  113. data/app/controllers/groups_controller.rb +57 -0
  114. data/app/controllers/impeachment_controller.rb +15 -0
  115. data/app/controllers/index_controller.rb +42 -0
  116. data/app/controllers/legacy/admin/post_categories_controller.rb +28 -0
  117. data/app/controllers/legacy/admin/posts_controller.rb +31 -0
  118. data/app/controllers/legacy/news_controller.rb +116 -0
  119. data/app/controllers/legacy/post_categories_controller.rb +74 -0
  120. data/app/controllers/legacy/posts_controller.rb +132 -0
  121. data/app/controllers/my/albums_controller.rb +2 -0
  122. data/app/controllers/my/deeds_controller.rb +42 -0
  123. data/app/controllers/my/entries_controller.rb +8 -0
  124. data/app/controllers/my/followees_controller.rb +9 -0
  125. data/app/controllers/my/followers_controller.rb +9 -0
  126. data/app/controllers/my/messages_controller.rb +23 -0
  127. data/app/controllers/my/notifications_controller.rb +8 -0
  128. data/app/controllers/network/campaigns_controller.rb +11 -0
  129. data/app/controllers/network/candidates_controller.rb +11 -0
  130. data/app/controllers/network/political_forces_controller.rb +11 -0
  131. data/app/controllers/network/posts_controller.rb +11 -0
  132. data/app/controllers/network/regions_controller.rb +11 -0
  133. data/app/controllers/network/sites_controller.rb +15 -0
  134. data/app/controllers/network/users_controller.rb +22 -0
  135. data/app/controllers/network_controller.rb +68 -0
  136. data/app/controllers/news_categories_controller.rb +59 -0
  137. data/app/controllers/news_controller.rb +67 -0
  138. data/app/controllers/photos_controller.rb +67 -0
  139. data/app/controllers/political_forces_controller.rb +70 -0
  140. data/app/controllers/profiles_controller.rb +27 -0
  141. data/app/controllers/promo_blocks_controller.rb +64 -0
  142. data/app/controllers/promo_items_controller.rb +68 -0
  143. data/app/controllers/regional_news_controller.rb +26 -0
  144. data/app/controllers/search_controller.rb +10 -0
  145. data/app/controllers/teams_controller.rb +56 -0
  146. data/app/controllers/user_messages_controller.rb +41 -0
  147. data/app/controllers/users_controller.rb +94 -0
  148. data/app/helpers/albums_helper.rb +37 -0
  149. data/app/helpers/campaigns_helper.rb +98 -0
  150. data/app/helpers/comments_helper.rb +15 -0
  151. data/app/helpers/deeds_helper.rb +36 -0
  152. data/app/helpers/entries_helper.rb +104 -0
  153. data/app/helpers/events_helper.rb +80 -0
  154. data/app/helpers/feedback_helper.rb +6 -0
  155. data/app/helpers/groups_helper.rb +11 -0
  156. data/app/helpers/media_helper.rb +19 -0
  157. data/app/helpers/parsing_helper.rb +80 -0
  158. data/app/helpers/promo_helper.rb +38 -0
  159. data/app/helpers/regions_helper.rb +77 -0
  160. data/app/helpers/users_helper.rb +37 -0
  161. data/app/helpers/votes_helper.rb +24 -0
  162. data/app/jobs/application_job.rb +7 -0
  163. data/app/jobs/network_campaign_sync_job.rb +20 -0
  164. data/app/jobs/network_candidate_sync_job.rb +20 -0
  165. data/app/jobs/network_entity_sync_job.rb +31 -0
  166. data/app/jobs/network_political_force_sync_job.rb +20 -0
  167. data/app/jobs/network_post_sync_job.rb +22 -0
  168. data/app/jobs/network_user_sync_job.rb +20 -0
  169. data/app/mailers/appeals_mailer.rb +12 -0
  170. data/app/mailers/application_mailer.rb +5 -0
  171. data/app/models/album.rb +42 -0
  172. data/app/models/appeal.rb +50 -0
  173. data/app/models/appeal_type.rb +45 -0
  174. data/app/models/application_record.rb +3 -0
  175. data/app/models/campaign.rb +78 -0
  176. data/app/models/candidate.rb +144 -0
  177. data/app/models/candidate_political_force.rb +15 -0
  178. data/app/models/central_region.rb +53 -0
  179. data/app/models/concerns/post_child_with_priority.rb +49 -0
  180. data/app/models/country.rb +33 -0
  181. data/app/models/decision.rb +38 -0
  182. data/app/models/decision_user.rb +25 -0
  183. data/app/models/deed.rb +78 -0
  184. data/app/models/deed_category.rb +95 -0
  185. data/app/models/deed_deed_category.rb +15 -0
  186. data/app/models/deed_image.rb +33 -0
  187. data/app/models/entry.rb +128 -0
  188. data/app/models/event.rb +47 -0
  189. data/app/models/event_material.rb +44 -0
  190. data/app/models/event_participant.rb +52 -0
  191. data/app/models/event_program.rb +50 -0
  192. data/app/models/event_speaker.rb +69 -0
  193. data/app/models/event_sponsor.rb +69 -0
  194. data/app/models/featured_post.rb +20 -0
  195. data/app/models/group.rb +34 -0
  196. data/app/models/illustration.rb +11 -0
  197. data/app/models/news.rb +110 -0
  198. data/app/models/news_category.rb +60 -0
  199. data/app/models/notification.rb +64 -0
  200. data/app/models/photo.rb +53 -0
  201. data/app/models/political_force.rb +62 -0
  202. data/app/models/privilege.rb +188 -0
  203. data/app/models/promo_block.rb +49 -0
  204. data/app/models/promo_item.rb +36 -0
  205. data/app/models/region.rb +149 -0
  206. data/app/models/region_user.rb +28 -0
  207. data/app/models/site.rb +29 -0
  208. data/app/models/team.rb +72 -0
  209. data/app/models/team_privilege.rb +6 -0
  210. data/app/models/theme.rb +26 -0
  211. data/app/models/theme_news_category.rb +4 -0
  212. data/app/models/theme_post_category.rb +4 -0
  213. data/app/models/user_group.rb +6 -0
  214. data/app/models/user_link.rb +69 -0
  215. data/app/models/user_message.rb +86 -0
  216. data/app/models/zen_category.rb +21 -0
  217. data/app/services/biovision/components/campaigns_component.rb +14 -0
  218. data/app/services/biovision/components/decisions_component.rb +9 -0
  219. data/app/services/biovision/components/deeds_component.rb +15 -0
  220. data/app/services/biovision/components/regions_component.rb +32 -0
  221. data/app/services/comunit/network/handler.rb +162 -0
  222. data/app/services/comunit/network/handlers/decision_handler.rb +16 -0
  223. data/app/services/comunit/network/handlers/deed_category_handler.rb +31 -0
  224. data/app/services/comunit/network/handlers/deed_handler.rb +58 -0
  225. data/app/services/comunit/network/handlers/deed_image_handler.rb +40 -0
  226. data/app/services/comunit/network/handlers/poll_answer_handler.rb +41 -0
  227. data/app/services/comunit/network/handlers/poll_handler.rb +46 -0
  228. data/app/services/comunit/network/handlers/poll_question_handler.rb +31 -0
  229. data/app/services/comunit/network/handlers/poll_vote_handler.rb +41 -0
  230. data/app/services/comunit/network/handlers/site_handler.rb +21 -0
  231. data/app/services/comunit/network/handlers/user_handler.rb +45 -0
  232. data/app/services/comunit/network/logging.rb +33 -0
  233. data/app/services/comunit/network/sending.rb +28 -0
  234. data/app/services/network_manager.rb +116 -0
  235. data/app/services/network_manager/campaign_handler.rb +96 -0
  236. data/app/services/network_manager/candidate_handler.rb +137 -0
  237. data/app/services/network_manager/political_force_handler.rb +85 -0
  238. data/app/services/network_manager/post_attachment_handler.rb +18 -0
  239. data/app/services/network_manager/post_handler.rb +133 -0
  240. data/app/services/network_manager/post_type_handler.rb +15 -0
  241. data/app/services/network_manager/region_handler.rb +83 -0
  242. data/app/services/network_manager/user_handler.rb +158 -0
  243. data/app/services/popular_entries.rb +25 -0
  244. data/app/services/popular_posts.rb +28 -0
  245. data/app/services/post_manager.rb +79 -0
  246. data/app/services/post_parser.rb +77 -0
  247. data/app/services/region_manager.rb +60 -0
  248. data/app/services/user_profile_handler.rb +74 -0
  249. data/app/uploaders/event_attachment_uploader.rb +15 -0
  250. data/app/uploaders/event_image_uploader.rb +32 -0
  251. data/app/uploaders/event_person_image_uploader.rb +40 -0
  252. data/app/uploaders/event_sponsor_image_uploader.rb +40 -0
  253. data/app/uploaders/header_image_uploader.rb +50 -0
  254. data/app/uploaders/illustration_image_uploader.rb +32 -0
  255. data/app/uploaders/photo_uploader.rb +55 -0
  256. data/app/uploaders/post_illustration_uploader.rb +73 -0
  257. data/app/uploaders/post_image_uploader.rb +54 -0
  258. data/app/uploaders/promo_image_uploader.rb +53 -0
  259. data/app/uploaders/region_image_uploader.rb +53 -0
  260. data/app/uploaders/site_image_uploader.rb +55 -0
  261. data/app/views/about/donate.html.erb +12 -0
  262. data/app/views/admin/albums/_list.html.erb +11 -0
  263. data/app/views/admin/albums/_nav_item.html.erb +6 -0
  264. data/app/views/admin/albums/_toggleable.html.erb +7 -0
  265. data/app/views/admin/albums/entity/_in_list.html.erb +19 -0
  266. data/app/views/admin/albums/index.html.erb +14 -0
  267. data/app/views/admin/albums/photos.html.erb +23 -0
  268. data/app/views/admin/albums/show.html.erb +55 -0
  269. data/app/views/admin/appeals/_form.html.erb +15 -0
  270. data/app/views/admin/appeals/_list.html.erb +17 -0
  271. data/app/views/admin/appeals/_nav_item.html.erb +2 -0
  272. data/app/views/admin/appeals/_toggleable.html.erb +7 -0
  273. data/app/views/admin/appeals/entity/_in_list.html.erb +13 -0
  274. data/app/views/admin/appeals/index.html.erb +13 -0
  275. data/app/views/admin/appeals/show.html.erb +67 -0
  276. data/app/views/admin/campaigns/_nav_item.html.erb +6 -0
  277. data/app/views/admin/campaigns/candidates.html.erb +24 -0
  278. data/app/views/admin/campaigns/entity/_in_list.html.erb +40 -0
  279. data/app/views/admin/campaigns/index.html.erb +21 -0
  280. data/app/views/admin/campaigns/new_candidate.html.erb +24 -0
  281. data/app/views/admin/campaigns/show.html.erb +73 -0
  282. data/app/views/admin/candidates/_nav_item.html.erb +6 -0
  283. data/app/views/admin/candidates/entity/_in_list.html.erb +29 -0
  284. data/app/views/admin/candidates/entity/_political_forces.html.erb +23 -0
  285. data/app/views/admin/candidates/index.html.erb +22 -0
  286. data/app/views/admin/candidates/show.html.erb +93 -0
  287. data/app/views/admin/components/links/_campaigns.html.erb +5 -0
  288. data/app/views/admin/components/links/_deeds.html.erb +2 -0
  289. data/app/views/admin/components/links/_regions.html.erb +3 -0
  290. data/app/views/admin/components/user_settings/_regions.html.erb +22 -0
  291. data/app/views/admin/components/user_settings/regions/_linked_regions.html.erb +23 -0
  292. data/app/views/admin/components/user_settings/regions/_new_link.html.erb +43 -0
  293. data/app/views/admin/countries/_nav_item.html.erb +2 -0
  294. data/app/views/admin/deed_categories/_nav_item.html.erb +6 -0
  295. data/app/views/admin/deed_categories/entity/_in_list.html.erb +31 -0
  296. data/app/views/admin/deed_categories/index.html.erb +22 -0
  297. data/app/views/admin/deed_categories/show.html.erb +79 -0
  298. data/app/views/admin/deeds/_nav_item.html.erb +6 -0
  299. data/app/views/admin/deeds/entity/_categories.html.erb +33 -0
  300. data/app/views/admin/deeds/entity/_in_list.html.erb +31 -0
  301. data/app/views/admin/deeds/index.html.erb +24 -0
  302. data/app/views/admin/deeds/show.html.erb +63 -0
  303. data/app/views/admin/event_materials/_list.html.erb +11 -0
  304. data/app/views/admin/event_materials/_toggleable.html.erb +7 -0
  305. data/app/views/admin/event_materials/entity/_in_list.html.erb +16 -0
  306. data/app/views/admin/event_participants/_list.html.erb +11 -0
  307. data/app/views/admin/event_participants/_nav_item.html.erb +6 -0
  308. data/app/views/admin/event_participants/_toggleable.html.erb +7 -0
  309. data/app/views/admin/event_participants/entity/_in_list.html.erb +22 -0
  310. data/app/views/admin/event_participants/index.html.erb +15 -0
  311. data/app/views/admin/event_participants/show.html.erb +10 -0
  312. data/app/views/admin/event_programs/_list.html.erb +11 -0
  313. data/app/views/admin/event_programs/entity/_in_list.html.erb +9 -0
  314. data/app/views/admin/event_programs/show.html.erb +11 -0
  315. data/app/views/admin/event_speakers/_list.html.erb +11 -0
  316. data/app/views/admin/event_speakers/_toggleable.html.erb +7 -0
  317. data/app/views/admin/event_speakers/entity/_in_list.html.erb +17 -0
  318. data/app/views/admin/event_sponsors/_list.html.erb +11 -0
  319. data/app/views/admin/event_sponsors/_toggleable.html.erb +7 -0
  320. data/app/views/admin/event_sponsors/entity/_in_list.html.erb +17 -0
  321. data/app/views/admin/events/_event.html.erb +57 -0
  322. data/app/views/admin/events/_nav_item.html.erb +6 -0
  323. data/app/views/admin/events/_toggleable.html.erb +7 -0
  324. data/app/views/admin/events/entity/_in_list.html.erb +24 -0
  325. data/app/views/admin/events/entity/_materials.html.erb +14 -0
  326. data/app/views/admin/events/entity/_programs.html.erb +14 -0
  327. data/app/views/admin/events/entity/_speakers.html.erb +14 -0
  328. data/app/views/admin/events/entity/_sponsors.html.erb +14 -0
  329. data/app/views/admin/events/index.html.erb +16 -0
  330. data/app/views/admin/events/participants.html.erb +22 -0
  331. data/app/views/admin/events/show.html.erb +32 -0
  332. data/app/views/admin/featured_posts/_add.html.erb +128 -0
  333. data/app/views/admin/featured_posts/_language.html.erb +14 -0
  334. data/app/views/admin/featured_posts/_nav_item.html.erb +2 -0
  335. data/app/views/admin/featured_posts/entity/_in_list.html.erb +26 -0
  336. data/app/views/admin/featured_posts/index.html.erb +18 -0
  337. data/app/views/admin/groups/_list.html.erb +11 -0
  338. data/app/views/admin/groups/_nav_item.html.erb +6 -0
  339. data/app/views/admin/groups/entity/_in_list.html.erb +15 -0
  340. data/app/views/admin/groups/index.html.erb +11 -0
  341. data/app/views/admin/groups/show.html.erb +89 -0
  342. data/app/views/admin/groups/users.jbuilder +11 -0
  343. data/app/views/admin/groups/users/_list.html.erb +18 -0
  344. data/app/views/admin/groups/users/_user.html.erb +24 -0
  345. data/app/views/admin/index/_additional.html.erb +0 -0
  346. data/app/views/admin/index/_custom_dashboard.html.erb +3 -0
  347. data/app/views/admin/index/dashboard/_event_manager.html.erb +8 -0
  348. data/app/views/admin/index/dashboard/_feedback_manager.html.erb +8 -0
  349. data/app/views/admin/index/dashboard/_promo_manager.html.erb +10 -0
  350. data/app/views/admin/photos/_list.html.erb +11 -0
  351. data/app/views/admin/photos/entity/_in_list.html.erb +13 -0
  352. data/app/views/admin/photos/show.html.erb +42 -0
  353. data/app/views/admin/political_forces/_nav_item.html.erb +6 -0
  354. data/app/views/admin/political_forces/candidates.html.erb +25 -0
  355. data/app/views/admin/political_forces/entity/_in_list.html.erb +24 -0
  356. data/app/views/admin/political_forces/index.html.erb +21 -0
  357. data/app/views/admin/political_forces/show.html.erb +48 -0
  358. data/app/views/admin/post_attachments/entity/_in_list.html.erb +12 -0
  359. data/app/views/admin/posts/_list.html.erb +15 -0
  360. data/app/views/admin/posts/_nav_item.html.erb +2 -0
  361. data/app/views/admin/posts/_toggleable.html.erb +7 -0
  362. data/app/views/admin/posts/entity/_additional_data.html.erb +0 -0
  363. data/app/views/admin/posts/entity/_attachments.html.erb +14 -0
  364. data/app/views/admin/posts/entity/_in_list.html.erb +90 -0
  365. data/app/views/admin/posts/entity/_in_search.html.erb +8 -0
  366. data/app/views/admin/posts/entity/_links.html.erb +125 -0
  367. data/app/views/admin/posts/entity/in_list/_additional_data.html.erb +0 -0
  368. data/app/views/admin/posts/images.html.erb +22 -0
  369. data/app/views/admin/posts/index.html.erb +16 -0
  370. data/app/views/admin/posts/post/_preview.html.erb +28 -0
  371. data/app/views/admin/posts/regions.jbuilder +10 -0
  372. data/app/views/admin/posts/search.jbuilder +26 -0
  373. data/app/views/admin/posts/show.html.erb +208 -0
  374. data/app/views/admin/privileges/entity/_groups.html.erb +33 -0
  375. data/app/views/admin/privileges/entity/_in_list.html.erb +54 -0
  376. data/app/views/admin/privileges/entity/_region.html.erb +12 -0
  377. data/app/views/admin/privileges/index.html.erb +25 -0
  378. data/app/views/admin/privileges/regions.jbuilder +10 -0
  379. data/app/views/admin/privileges/show.html.erb +81 -0
  380. data/app/views/admin/promo_blocks/_nav_item.html.erb +6 -0
  381. data/app/views/admin/promo_blocks/entity/_in_list.html.erb +34 -0
  382. data/app/views/admin/promo_blocks/entity/_items.html.erb +23 -0
  383. data/app/views/admin/promo_blocks/index.html.erb +14 -0
  384. data/app/views/admin/promo_blocks/show.html.erb +52 -0
  385. data/app/views/admin/promo_items/entity/_in_list.html.erb +31 -0
  386. data/app/views/admin/promo_items/show.html.erb +69 -0
  387. data/app/views/admin/regions/_nav_item.html.erb +2 -0
  388. data/app/views/admin/regions/_news_form.html.erb +91 -0
  389. data/app/views/admin/regions/_post_form.html.erb +91 -0
  390. data/app/views/admin/regions/_region.jbuilder +11 -0
  391. data/app/views/admin/regions/entity/_in_list.html.erb +22 -0
  392. data/app/views/admin/regions/index.html.erb +16 -0
  393. data/app/views/admin/regions/index.jbuilder +3 -0
  394. data/app/views/admin/regions/show.html.erb +90 -0
  395. data/app/views/admin/regions/show.jbuilder +8 -0
  396. data/app/views/admin/teams/_list.html.erb +11 -0
  397. data/app/views/admin/teams/_nav_item.html.erb +6 -0
  398. data/app/views/admin/teams/_toggleable.html.erb +7 -0
  399. data/app/views/admin/teams/entity/_in_list.html.erb +18 -0
  400. data/app/views/admin/teams/entity/_privileges.html.erb +33 -0
  401. data/app/views/admin/teams/index.html.erb +11 -0
  402. data/app/views/admin/teams/show.html.erb +16 -0
  403. data/app/views/admin/users/entity/_in_list.html.erb +53 -0
  404. data/app/views/admin/users/entity/_privilege.html.erb +33 -0
  405. data/app/views/admin/users/entity/_profile.html.erb +75 -0
  406. data/app/views/albums/_form.html.erb +59 -0
  407. data/app/views/albums/_list.html.erb +13 -0
  408. data/app/views/albums/edit.html.erb +13 -0
  409. data/app/views/albums/new.html.erb +12 -0
  410. data/app/views/albums/show.html.erb +21 -0
  411. data/app/views/api/user_links/not_found.jbuilder +3 -0
  412. data/app/views/appeals/_form.html.erb +44 -0
  413. data/app/views/appeals/edit.js.erb +1 -0
  414. data/app/views/appeals/new.html.erb +12 -0
  415. data/app/views/appeals/new.js.erb +1 -0
  416. data/app/views/appeals_mailer/appeal_reply.html.erb +10 -0
  417. data/app/views/articles/category.html.erb +18 -0
  418. data/app/views/articles/index.html.erb +17 -0
  419. data/app/views/articles/show.html.erb +6 -0
  420. data/app/views/articles/tagged.html.erb +14 -0
  421. data/app/views/authentication/_info.html.erb +8 -0
  422. data/app/views/authentication/new.html.erb +9 -0
  423. data/app/views/authors/_list.html.erb +18 -0
  424. data/app/views/authors/entity/_in_list.html.erb +9 -0
  425. data/app/views/authors/index.html.erb +10 -0
  426. data/app/views/authors/show.html.erb +25 -0
  427. data/app/views/blog_posts/category.html.erb +18 -0
  428. data/app/views/blog_posts/show.html.erb +6 -0
  429. data/app/views/blog_posts/tagged.html.erb +14 -0
  430. data/app/views/campaigns/_form.html.erb +91 -0
  431. data/app/views/campaigns/candidate.html.erb +29 -0
  432. data/app/views/campaigns/edit.html.erb +17 -0
  433. data/app/views/campaigns/new.html.erb +15 -0
  434. data/app/views/candidates/_form.html.erb +209 -0
  435. data/app/views/candidates/edit.html.erb +19 -0
  436. data/app/views/candidates/new.html.erb +11 -0
  437. data/app/views/deed_categories/_form.html.erb +44 -0
  438. data/app/views/deed_categories/edit.html.erb +18 -0
  439. data/app/views/deed_categories/new.html.erb +16 -0
  440. data/app/views/deeds/_form.html.erb +114 -0
  441. data/app/views/deeds/_list.html.erb +18 -0
  442. data/app/views/deeds/_preview.html.erb +6 -0
  443. data/app/views/deeds/_regions.html.erb +91 -0
  444. data/app/views/deeds/edit.html.erb +12 -0
  445. data/app/views/deeds/form/_categories.html.erb +30 -0
  446. data/app/views/deeds/index.html.erb +32 -0
  447. data/app/views/deeds/new.html.erb +15 -0
  448. data/app/views/deeds/regions.jbuilder +10 -0
  449. data/app/views/deeds/show.html.erb +28 -0
  450. data/app/views/editable_pages/form/_ckeditor.html.erb +12 -0
  451. data/app/views/editorial/index/_navigation.html.erb +17 -0
  452. data/app/views/editorial/index/index.html.erb +16 -0
  453. data/app/views/editorial/users/_filter.html.erb +12 -0
  454. data/app/views/editorial/users/_list.html.erb +17 -0
  455. data/app/views/editorial/users/_nav_item.html.erb +6 -0
  456. data/app/views/editorial/users/_toggleable.html.erb +7 -0
  457. data/app/views/editorial/users/entity/_in_list.html.erb +19 -0
  458. data/app/views/editorial/users/index.html.erb +14 -0
  459. data/app/views/editorial/users/show.html.erb +107 -0
  460. data/app/views/entries/_adjacent.html.erb +16 -0
  461. data/app/views/entries/_entry.html.erb +39 -0
  462. data/app/views/entries/_form.html.erb +53 -0
  463. data/app/views/entries/_list.html.erb +9 -0
  464. data/app/views/entries/_preview.html.erb +22 -0
  465. data/app/views/entries/_recent.html.erb +7 -0
  466. data/app/views/entries/_repost_form.html.erb +108 -0
  467. data/app/views/entries/_sidebar_preview.html.erb +10 -0
  468. data/app/views/entries/archive.html.erb +14 -0
  469. data/app/views/entries/archive/_month_list.html.erb +27 -0
  470. data/app/views/entries/edit.html.erb +14 -0
  471. data/app/views/entries/index.html.erb +17 -0
  472. data/app/views/entries/new.html.erb +10 -0
  473. data/app/views/entries/new_repost.html.erb +8 -0
  474. data/app/views/entries/show.html.erb +15 -0
  475. data/app/views/event_materials/_form.html.erb +66 -0
  476. data/app/views/event_materials/edit.html.erb +11 -0
  477. data/app/views/event_materials/new.html.erb +13 -0
  478. data/app/views/event_participants/_form.html.erb +28 -0
  479. data/app/views/event_participants/edit.html.erb +12 -0
  480. data/app/views/event_participants/new.html.erb +13 -0
  481. data/app/views/event_programs/_form.html.erb +48 -0
  482. data/app/views/event_programs/edit.html.erb +11 -0
  483. data/app/views/event_programs/new.html.erb +13 -0
  484. data/app/views/event_speakers/_form.html.erb +75 -0
  485. data/app/views/event_speakers/edit.html.erb +11 -0
  486. data/app/views/event_speakers/new.html.erb +13 -0
  487. data/app/views/event_sponsors/_form.html.erb +75 -0
  488. data/app/views/event_sponsors/edit.html.erb +11 -0
  489. data/app/views/event_sponsors/new.html.erb +13 -0
  490. data/app/views/events/_form.html.erb +143 -0
  491. data/app/views/events/edit.html.erb +11 -0
  492. data/app/views/events/entity/_speakers.html.erb +17 -0
  493. data/app/views/events/entity/_sponsors.html.erb +15 -0
  494. data/app/views/events/new.html.erb +10 -0
  495. data/app/views/events/show.html.erb +22 -0
  496. data/app/views/featured_posts/create.jbuilder +10 -0
  497. data/app/views/groups/_form.html.erb +41 -0
  498. data/app/views/groups/edit.html.erb +12 -0
  499. data/app/views/groups/new.html.erb +11 -0
  500. data/app/views/impeachment/_filter.html.erb +41 -0
  501. data/app/views/impeachment/candidate.html.erb +32 -0
  502. data/app/views/impeachment/candidates.html.erb +52 -0
  503. data/app/views/index/_post_preview.jbuilder +3 -0
  504. data/app/views/index/frontpage_posts/_illustrated.html.erb +14 -0
  505. data/app/views/index/frontpage_posts/_loader.html.erb +35 -0
  506. data/app/views/index/frontpage_posts/_main_news.html.erb +11 -0
  507. data/app/views/index/frontpage_posts/_preview.html.erb +46 -0
  508. data/app/views/index/frontpage_posts/_regional_news.html.erb +11 -0
  509. data/app/views/index/frontpage_posts/_videos.html.erb +8 -0
  510. data/app/views/index/index.html.erb +19 -0
  511. data/app/views/index/index/_categories.html.erb +33 -0
  512. data/app/views/index/index/_featured_posts.html.erb +38 -0
  513. data/app/views/index/main_news.jbuilder +9 -0
  514. data/app/views/index/regional_news.jbuilder +9 -0
  515. data/app/views/layouts/admin/_footer.html.erb +5 -0
  516. data/app/views/layouts/application.html.erb +28 -0
  517. data/app/views/layouts/application/_footer.html.erb +18 -0
  518. data/app/views/layouts/application/_header.html.erb +27 -0
  519. data/app/views/layouts/application/_header_content.html.erb +0 -0
  520. data/app/views/layouts/application/_main_navigation.html.erb +27 -0
  521. data/app/views/layouts/application/header/_authentication.html.erb +9 -0
  522. data/app/views/layouts/application/header/_logo.html.erb +12 -0
  523. data/app/views/layouts/application/header/_region_selector.html.erb +24 -0
  524. data/app/views/layouts/application/header/_search.html.erb +5 -0
  525. data/app/views/layouts/application/main_navigation/_addition.html.erb +0 -0
  526. data/app/views/layouts/application/main_navigation/_categories.html.erb +15 -0
  527. data/app/views/layouts/application/main_navigation/_prepend.html.erb +0 -0
  528. data/app/views/layouts/mailer.html.erb +13 -0
  529. data/app/views/layouts/mailer.text.erb +1 -0
  530. data/app/views/my/confirmations/show.html.erb +30 -0
  531. data/app/views/my/deeds/_list.html.erb +18 -0
  532. data/app/views/my/deeds/entity/_categories.html.erb +33 -0
  533. data/app/views/my/deeds/index.html.erb +13 -0
  534. data/app/views/my/deeds/show.html.erb +32 -0
  535. data/app/views/my/entries/index.html.erb +2 -0
  536. data/app/views/my/followees/_list.html.erb +11 -0
  537. data/app/views/my/followees/index.html.erb +18 -0
  538. data/app/views/my/followers/_list.html.erb +11 -0
  539. data/app/views/my/followers/index.html.erb +18 -0
  540. data/app/views/my/index/_articles.html.erb +21 -0
  541. data/app/views/my/index/_blog_posts.html.erb +21 -0
  542. data/app/views/my/index/_news.html.erb +21 -0
  543. data/app/views/my/index/index.html.erb +64 -0
  544. data/app/views/my/messages/_list.html.erb +11 -0
  545. data/app/views/my/messages/dialog.html.erb +36 -0
  546. data/app/views/my/messages/entity/_in_list.html.erb +14 -0
  547. data/app/views/my/messages/index.html.erb +14 -0
  548. data/app/views/my/messages/not_found.html.erb +1 -0
  549. data/app/views/my/notifications/_list.html.erb +11 -0
  550. data/app/views/my/notifications/entity/_entry_comment.html.erb +1 -0
  551. data/app/views/my/notifications/entity/_in_list.html.erb +5 -0
  552. data/app/views/my/notifications/entity/_new_follower.html.erb +1 -0
  553. data/app/views/my/notifications/entity/_new_message.html.erb +9 -0
  554. data/app/views/my/notifications/entity/_news_comment.html.erb +1 -0
  555. data/app/views/my/notifications/entity/_post_comment.html.erb +1 -0
  556. data/app/views/my/notifications/index.html.erb +10 -0
  557. data/app/views/my/posts/_form.html.erb +234 -0
  558. data/app/views/my/posts/_list.html.erb +9 -0
  559. data/app/views/my/posts/_post.html.erb +81 -0
  560. data/app/views/my/posts/_preview.html.erb +45 -0
  561. data/app/views/my/posts/articles.html.erb +26 -0
  562. data/app/views/my/posts/index.html.erb +16 -0
  563. data/app/views/my/posts/news_index.html.erb +26 -0
  564. data/app/views/my/profiles/edit.html.erb +13 -0
  565. data/app/views/my/profiles/edit/_form.html.erb +386 -0
  566. data/app/views/my/profiles/show.html.erb +5 -0
  567. data/app/views/my/recoveries/show.html.erb +41 -0
  568. data/app/views/network/show.jbuilder +14 -0
  569. data/app/views/news/_form.html.erb +145 -0
  570. data/app/views/news/_news.html.erb +70 -0
  571. data/app/views/news/_preview.html.erb +10 -0
  572. data/app/views/news/category.html.erb +18 -0
  573. data/app/views/news/edit.html.erb +16 -0
  574. data/app/views/news/form/_figures.html.erb +69 -0
  575. data/app/views/news/index.html.erb +17 -0
  576. data/app/views/news/index/_column.html.erb +11 -0
  577. data/app/views/news/index/_items.html.erb +13 -0
  578. data/app/views/news/new.html.erb +11 -0
  579. data/app/views/news/not_found.html.erb +7 -0
  580. data/app/views/news/previews/_comments.html.erb +15 -0
  581. data/app/views/news/previews/_most_recent.html.erb +14 -0
  582. data/app/views/news/previews/_topics.html.erb +15 -0
  583. data/app/views/news/show.html.erb +6 -0
  584. data/app/views/news/show_in_category.html.erb +40 -0
  585. data/app/views/news/tagged.html.erb +14 -0
  586. data/app/views/news_categories/_form.html.erb +39 -0
  587. data/app/views/news_categories/edit.html.erb +16 -0
  588. data/app/views/news_categories/new.html.erb +15 -0
  589. data/app/views/photos/_form.html.erb +62 -0
  590. data/app/views/photos/_list.html.erb +17 -0
  591. data/app/views/photos/edit.html.erb +13 -0
  592. data/app/views/photos/new.html.erb +14 -0
  593. data/app/views/photos/show.html.erb +17 -0
  594. data/app/views/political_forces/_flares.html.erb +9 -0
  595. data/app/views/political_forces/_form.html.erb +97 -0
  596. data/app/views/political_forces/edit.html.erb +17 -0
  597. data/app/views/political_forces/new.html.erb +15 -0
  598. data/app/views/posts/_carousel.html.erb +11 -0
  599. data/app/views/posts/_form.html.erb +452 -0
  600. data/app/views/posts/_post.html.erb +136 -0
  601. data/app/views/posts/_preview.html.erb +51 -0
  602. data/app/views/posts/archive.html.erb +13 -0
  603. data/app/views/posts/archive.jbuilder +3 -0
  604. data/app/views/posts/archive/_month_list.html.erb +25 -0
  605. data/app/views/posts/archive_day.html.erb +12 -0
  606. data/app/views/posts/category.html.erb +18 -0
  607. data/app/views/posts/entity/_author.html.erb +9 -0
  608. data/app/views/posts/entity/_gallery.html.erb +54 -0
  609. data/app/views/posts/entity/_linked_posts.html.erb +9 -0
  610. data/app/views/posts/entity/_metadata.html.erb +39 -0
  611. data/app/views/posts/entity/_preview_author.html.erb +10 -0
  612. data/app/views/posts/entity/_publisher.html.erb +7 -0
  613. data/app/views/posts/form/_attachments.html.erb +29 -0
  614. data/app/views/posts/form/_figures.html.erb +67 -0
  615. data/app/views/posts/form/_gallery.html.erb +163 -0
  616. data/app/views/posts/index.html.erb +13 -0
  617. data/app/views/posts/index.jbuilder +1 -0
  618. data/app/views/posts/post_type/_category.html.erb +16 -0
  619. data/app/views/posts/post_type/_post_page.html.erb +9 -0
  620. data/app/views/posts/post_type/_tagged.html.erb +7 -0
  621. data/app/views/posts/show.html.erb +9 -0
  622. data/app/views/posts/show_in_category.html.erb +20 -0
  623. data/app/views/posts/tagged.html.erb +10 -0
  624. data/app/views/posts/tagged.jbuilder +1 -0
  625. data/app/views/profiles/_profile.html.erb +175 -0
  626. data/app/views/profiles/entries.html.erb +11 -0
  627. data/app/views/profiles/followees.html.erb +21 -0
  628. data/app/views/profiles/not_found.html.erb +1 -0
  629. data/app/views/profiles/show.html.erb +4 -0
  630. data/app/views/promo_blocks/_entity.html.erb +10 -0
  631. data/app/views/promo_blocks/_form.html.erb +80 -0
  632. data/app/views/promo_blocks/edit.html.erb +17 -0
  633. data/app/views/promo_blocks/new.html.erb +15 -0
  634. data/app/views/promo_items/_form.html.erb +132 -0
  635. data/app/views/promo_items/edit.html.erb +18 -0
  636. data/app/views/promo_items/new.html.erb +18 -0
  637. data/app/views/regional_news/_news.html.erb +70 -0
  638. data/app/views/regional_news/_preview.html.erb +10 -0
  639. data/app/views/regional_news/category.html.erb +39 -0
  640. data/app/views/regional_news/index.html.erb +43 -0
  641. data/app/views/regional_news/index/_column.html.erb +11 -0
  642. data/app/views/regional_news/index/_items.html.erb +13 -0
  643. data/app/views/regional_news/previews/_comments.html.erb +15 -0
  644. data/app/views/regional_news/previews/_most_recent.html.erb +14 -0
  645. data/app/views/regional_news/previews/_topics.html.erb +15 -0
  646. data/app/views/regional_news/show_in_category.html.erb +40 -0
  647. data/app/views/regions/_form.html.erb +59 -0
  648. data/app/views/regions/_region.jbuilder +12 -0
  649. data/app/views/regions/edit.html.erb +20 -0
  650. data/app/views/regions/index.jbuilder +3 -0
  651. data/app/views/regions/new.html.erb +17 -0
  652. data/app/views/regions/show.jbuilder +3 -0
  653. data/app/views/search/index.html.erb +24 -0
  654. data/app/views/shared/_counters.html.erb +1 -0
  655. data/app/views/shared/_favicons.html.erb +6 -0
  656. data/app/views/shared/_pagination.jbuilder +9 -0
  657. data/app/views/shared/_pluso.html.erb +12 -0
  658. data/app/views/shared/_sidebar.html.erb +18 -0
  659. data/app/views/shared/blog/_sidebar.html.erb +8 -0
  660. data/app/views/shared/errors/_not_found.html.erb +7 -0
  661. data/app/views/shared/forms/_region_select.html.erb +55 -0
  662. data/app/views/shared/sidebar/_calendar.html.erb +54 -0
  663. data/app/views/shared/sidebar/_custom_sidebar.html.erb +0 -0
  664. data/app/views/shared/sidebar/_deeds.html.erb +10 -0
  665. data/app/views/shared/sidebar/_poll.html.erb +62 -0
  666. data/app/views/shared/sidebar/_popular_entries.html.erb +68 -0
  667. data/app/views/shared/sidebar/_popular_topics.html.erb +51 -0
  668. data/app/views/shared/sidebar/_recent_posts.html.erb +17 -0
  669. data/app/views/teams/_form.html.erb +45 -0
  670. data/app/views/teams/edit.html.erb +12 -0
  671. data/app/views/teams/new.html.erb +11 -0
  672. data/app/views/user_messages/_form.html.erb +12 -0
  673. data/app/views/user_messages/new.html.erb +7 -0
  674. data/app/views/user_messages/not_found.html.erb +7 -0
  675. data/app/views/users/_filter.html.erb +12 -0
  676. data/app/views/users/_follow_buttons.html.erb +4 -0
  677. data/app/views/users/_list.html.erb +11 -0
  678. data/app/views/users/entity/_in_list.html.erb +19 -0
  679. data/app/views/users/form/_profile_data.html.erb +162 -0
  680. data/app/views/users/index.html.erb +11 -0
  681. data/app/views/users/index.jbuilder +14 -0
  682. data/config/locales/albums-ru.yml +83 -0
  683. data/config/locales/campaigns-ru.yml +356 -0
  684. data/config/locales/common-ru.yml +48 -0
  685. data/config/locales/decisions-ru.yml +22 -0
  686. data/config/locales/deeds-ru.yml +108 -0
  687. data/config/locales/events-ru.yml +217 -0
  688. data/config/locales/feedback-ru.yml +57 -0
  689. data/config/locales/media-ru.yml +94 -0
  690. data/config/locales/notifications-ru.yml +8 -0
  691. data/config/locales/posts-ru.yml +475 -0
  692. data/config/locales/promo-ru.yml +98 -0
  693. data/config/locales/regions-ru.yml +99 -0
  694. data/config/locales/socialization-ru.yml +60 -0
  695. data/config/locales/users-ru.yml +284 -0
  696. data/config/routes.rb +251 -0
  697. data/db/amends/20190223100000_create_themes.rb +40 -0
  698. data/db/amends/20190311141414_convert_posts.rb +218 -0
  699. data/db/amends/20190415131313_add_uuid_to_post_attachments.rb +16 -0
  700. data/db/amends/20190501222222_add_fields_to_regions.rb +15 -0
  701. data/db/amends/20190710121653_update_region_posts_count.rb +16 -0
  702. data/db/amends/20200406151505_add_fields_to_sites.rb +18 -0
  703. data/db/migrate/20170129000001_create_sites.rb +32 -0
  704. data/db/migrate/20170129000002_create_regions.rb +70 -0
  705. data/db/migrate/20170209000101_create_user_links.rb +23 -0
  706. data/db/migrate/20170209000102_create_user_messages.rb +26 -0
  707. data/db/migrate/20171111000005_create_appeal_types.rb +19 -0
  708. data/db/migrate/20171111000010_create_appeals.rb +32 -0
  709. data/db/migrate/20180630000001_create_promo_blocks.rb +21 -0
  710. data/db/migrate/20180630000002_create_promo_items.rb +31 -0
  711. data/db/migrate/20190805212121_add_comunit_to_posts.rb +18 -0
  712. data/db/migrate/20190913142159_convert_themes.rb +24 -0
  713. data/db/migrate/20190919112129_add_regions_component.rb +18 -0
  714. data/db/migrate/20190922165743_create_region_users.rb +22 -0
  715. data/db/migrate/20191209101010_create_campaigns.rb +96 -0
  716. data/db/migrate/20200306220439_add_impeachment_category.rb +12 -0
  717. data/db/migrate/20200420000000_create_deeds_component.rb +89 -0
  718. data/db/migrate/20200604000000_create_decisions_component.rb +53 -0
  719. data/db/obsolete_migrations/20170209000006_create_illustrations.rb +18 -0
  720. data/db/obsolete_migrations/20170228195056_create_groups.rb +19 -0
  721. data/db/obsolete_migrations/20170228195119_create_user_groups.rb +17 -0
  722. data/db/obsolete_migrations/20170309205037_create_albums.rb +26 -0
  723. data/db/obsolete_migrations/20170309205146_create_photos.rb +21 -0
  724. data/db/obsolete_migrations/20170322000001_create_teams.rb +22 -0
  725. data/db/obsolete_migrations/20170322000002_create_team_privileges.rb +17 -0
  726. data/db/obsolete_migrations/20170413000001_create_events.rb +29 -0
  727. data/db/obsolete_migrations/20170413000002_create_event_participants.rb +29 -0
  728. data/db/obsolete_migrations/20170413000003_create_event_speakers.rb +21 -0
  729. data/db/obsolete_migrations/20170413000004_create_event_sponsors.rb +21 -0
  730. data/db/obsolete_migrations/20170413000005_create_event_programs.rb +19 -0
  731. data/db/obsolete_migrations/20170413000006_create_event_materials.rb +21 -0
  732. data/db/obsolete_migrations/20170517000000_insert_editable_pages.rb +10 -0
  733. data/db/obsolete_migrations/20190924040404_convert_regional_editors.rb +106 -0
  734. data/lib/comunit/base.rb +7 -0
  735. data/lib/comunit/base/decorators/controllers/admin/posts_controller_decorator.rb +8 -0
  736. data/lib/comunit/base/decorators/controllers/admin/privileges_controller_decorator.rb +7 -0
  737. data/lib/comunit/base/decorators/controllers/my/posts_controller_decorator.rb +28 -0
  738. data/lib/comunit/base/decorators/controllers/my/profiles_controller_decorator.rb +25 -0
  739. data/lib/comunit/base/decorators/controllers/poll_answers_controller_decorator.rb +14 -0
  740. data/lib/comunit/base/decorators/controllers/poll_questions_controller_decorator.rb +14 -0
  741. data/lib/comunit/base/decorators/controllers/polls_controller_decorator.rb +24 -0
  742. data/lib/comunit/base/decorators/controllers/posts_controller_decorator.rb +46 -0
  743. data/lib/comunit/base/decorators/models/post_decorator.rb +39 -0
  744. data/lib/comunit/base/decorators/models/user_decorator.rb +30 -0
  745. data/lib/comunit/base/decorators/models/user_privilege_decorator.rb +3 -0
  746. data/lib/comunit/base/engine.rb +46 -0
  747. data/lib/comunit/base/privilege_methods.rb +53 -0
  748. data/lib/comunit/base/version.rb +7 -0
  749. data/lib/tasks/comunit.rake +29 -0
  750. data/lib/tasks/comunit/base_tasks.rake +4 -0
  751. data/lib/tasks/regions.rake +57 -0
  752. metadata +947 -0
@@ -0,0 +1,26 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Comunit::Base'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+
21
+ load 'rails/tasks/statistics.rake'
22
+
23
+
24
+
25
+ require 'bundler/gem_tasks'
26
+
@@ -0,0 +1,2 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../stylesheets/comunit/base .css
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><svg style="enable-background:new 0 0 99 77.258;" version="1.1" viewBox="0 0 99 77.258" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="book"><path d="M90.181,9.248l-3.019-6.262c-3.679-0.995-7.021-1.741-10.158-2.24C73.866,0.249,71.016,0,68.389,0 c-5.132,0-9.149,0.683-12.086,2.047c-2.937,1.365-5.123,3.588-6.576,6.671c-1.606-3.147-3.801-5.386-6.596-6.719 C40.337,0.667,36.472,0,31.532,0c-2.841,0-5.89,0.249-9.147,0.746c-3.257,0.498-6.708,1.245-10.351,2.24l-3.39,6.791L0,10.307 v66.95l40.953-3.179c1.762,0.835,3.433,1.469,4.994,1.903c1.561,0.433,3.027,0.65,4.387,0.65c1.329,0,2.707-0.217,4.129-0.65 c1.422-0.433,2.612-1.067,4.096-1.903L99,77.258V9.778L90.181,9.248z M87,7.466l4,9.007v49.466l-4-8.959V7.466z M90.12,68.347 l-33.985-2.842c-1.201,1.51-2.94,2.456-5.218,2.842c0-7.545,5.452-11.319,16.357-11.319c2.533,0,5.336,0.192,8.41,0.578 c3.074,0.385,6.402,0.98,9.986,1.782L90.12,68.347z M50,15.895c0-4.656,1.633-7.947,3.981-9.874 c2.935-2.44,7.489-3.661,13.204-3.661c2.347,0,4.247,0.193,7.12,0.578C77.178,3.323,81,3.901,83,4.672v52.067 c-2-0.706-4.85-1.228-7.677-1.565c-2.827-0.337-5.233-0.506-8.043-0.506c-4.233,0-7.806,0.442-10.215,1.324 C54.655,56.876,53,58.489,50,60.833V15.895z M15,4.768c2-0.802,6.035-1.404,8.959-1.806c2.923-0.401,5.743-0.602,8.528-0.602 c5.414,0,9.125,1.116,11.817,3.347C46.994,7.94,48,11.303,48,15.798v44.842c-3-3.981-8.895-5.973-16.845-5.973 c-1.949,0-4.079,0.161-6.847,0.482C21.539,55.471,17,55.969,15,56.643V4.768z M23.663,57.582c2.951-0.369,5.709-0.554,8.274-0.554 c5.531,0,9.586,0.875,12.167,2.625c2.58,1.751,4.087,4.648,4.519,8.694c-2.319-0.545-3.973-1.476-4.962-2.794L9.788,68.347 l4.443-9.103C17.568,58.505,20.712,57.951,23.663,57.582z M8,15.943l4-8.67V56.98l-4,9.2V15.943z M97,74.705L58.001,71.67 c-1.392,0.867-2.672,1.517-3.97,1.951c-1.298,0.434-2.533,0.651-3.77,0.651c-1.329,0-2.689-0.217-4.111-0.651 c-1.422-0.433-3.053-1.083-4.598-1.951L2,74.705V12.33l4.395-0.289L4,15.461v55.294l38.144-2.408 c1.761,1.574,4.453,2.36,7.204,2.36c2.782,0,4.896-0.786,6.689-2.36L93,70.755V15.461l-2.008-3.901L97,11.897V74.705z"/></g><g id="Слой_1"/></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><svg style="enable-background:new 0 0 91.635 72.824;" version="1.1" viewBox="0 0 91.635 72.824" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="chat"><path d="M0,72.824L12.421,46.77c-3.786-4.877-5.704-10.579-5.704-16.97c0-9.335,4.712-17.143,13.627-22.577 C27.983,2.565,38.218,0,49.165,0C63.571,0,76.672,4.508,84.21,12.06c4.939,4.947,7.437,10.932,7.425,17.786 c-0.017,9.946-4.717,18.279-13.591,24.099c-7.654,5.019-17.907,7.783-28.869,7.783c-6.609,0-13.133-1.038-18.926-3.007 c-9.608,3.688-24.41,11.153-24.562,11.23L0,72.824z M49.165,4.351c-10.159,0-19.59,2.339-26.556,6.586 c-5.265,3.21-11.541,9.088-11.541,18.862c0,5.814,1.871,10.943,5.561,15.247l0.921,1.075L9.368,63.284 c5.497-2.663,13.895-6.601,20.089-8.916l0.746-0.279l0.749,0.269c5.515,1.975,11.816,3.019,18.223,3.019 c10.124,0,19.529-2.511,26.483-7.071c5.293-3.471,11.607-9.84,11.626-20.467c0.01-5.657-2.061-10.605-6.153-14.705 C74.391,8.382,62.441,4.351,49.165,4.351z"/></g><g id="Слой_1"/></svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="11px" height="6px">
2
+ <path d="M 0,0 h 11 l -5.5, 6" fill="#303346" stroke="none" />
3
+ </svg>
@@ -0,0 +1 @@
1
+ <svg height="25px" version="1.1" viewBox="0 0 25 25" width="25px" xmlns="http://www.w3.org/2000/svg"><g fill="#ffffff" fill-rule="evenodd" id="TabBar-Icons" stroke="none" stroke-width="1"><g fill="#ffffff" id="Hamburger"><path d="M0,2 L25,2 L25,6 L0,6 L0,2 Z M0,10 L25,10 L25,14 L0,14 L0,10 Z M0,18 L25,18 L25,22 L0,22 L0,18 Z"/></g></g></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><svg style="enable-background:new 0 0 90.927 81.141;" version="1.1" viewBox="0 0 90.927 81.141" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="pencil"><path d="M76.663,55.441L13.593,0C5.806,1.758,1.275,6.845,0,15.263l63.264,55.455l27.663,10.424L76.663,55.441z M32.733,20.101 l38.127,33.372c-0.54-0.167-0.988-0.264-1.343-0.289c-1.292-0.091-1.982,0.477-2.068,1.705l0.014,0.488L29.449,21.77 C30.572,21.037,31.667,20.481,32.733,20.101z M27.536,23.34l38.39,33.781c-1.511,0.251-2.321,1.151-2.431,2.702L25.299,26.056 C25.859,25.024,26.605,24.119,27.536,23.34z M14.639,24.575L2.848,14.246c1.55-5.865,4.905-9.705,10.066-11.517l11.704,10.176 C19.558,15.147,16.231,19.036,14.639,24.575z M60.537,65.167L22.566,31.66c0.486-1.361,0.992-2.544,1.516-3.546l37.874,33.5 c-0.616-0.011-1.079,0.111-1.389,0.365c-0.31,0.254-0.483,0.64-0.52,1.157C60.015,63.588,60.179,64.266,60.537,65.167z M64.903,68.884c-2.06-2.094-3.058-3.608-2.992-4.546c0.027-0.388,0.152-0.663,0.375-0.826c0.223-0.163,0.56-0.228,1.012-0.197 c0.937,0.066,2.513,0.746,4.728,2.038c-1.809-1.978-2.67-3.581-2.584-4.809c0.043-0.613,0.245-1.062,0.606-1.345 c0.361-0.283,0.898-0.4,1.608-0.349c0.744,0.052,2.223,0.709,4.44,1.969c-1.913-1.888-2.823-3.494-2.73-4.82 c0.025-0.355,0.141-0.615,0.347-0.779c0.206-0.164,0.52-0.231,0.94-0.202c1.454,0.102,2.961,0.842,4.52,2.218l7.498,13.875 l-3.008,3.295L64.903,68.884z"/></g><g id="Слой_1"/></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><svg height="24px" version="1.1" viewBox="0 0 24 24" width="24px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="none" fill-rule="evenodd" id="miu" stroke="none" stroke-width="1"><g id="Artboard-1" transform="translate(-359.000000, -119.000000)"><g id="slice" transform="translate(215.000000, 119.000000)"/><path d="M361.181376,129 C362.121889,123.879764 366.60786,120 372,120 C378.075133,120 383,124.924867 383,131 C383,137.075133 378.075133,142 372,142 C367.727268,142 364.023517,139.563904 362.201917,136.004883 L363.340648,136.004883 C365.070389,138.991197 368.300604,141 372,141 C377.522848,141 382,136.522848 382,131 C382,125.477152 377.522848,121 372,121 C367.162084,121 363.126577,124.435519 362.200036,129 L361.181376,129 Z M371.5,131.349626 L376.710685,134.421329 L377.218515,133.559872 L372.5,130.754395 L372.5,124.031738 L371.5,124.031738 L371.5,131.349626 Z M361.5,132 L364,129 L359,129 L361.5,132 Z" fill="#000000" id="circle-backup-time-history-recent-time-machine-outline-stroke"/></g></g></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><svg height="32" id="repost" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M6 8 L12 14 L8 14 L8 20 L18 20 L18 24 L4 24 L4 14 L0 14 z M14 8 L28 8 L28 18 L32 18 L26 24 L20 18 L24 18 L24 12 L14 12z"/></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><svg enable-background="new 0 0 500 500" id="Layer_1" version="1.1" viewBox="0 0 500 500" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><circle cx="253.9" cy="246.4" r="204.7" stroke="#000000" stroke-miterlimit="10"/><circle cx="253.9" cy="246.4" fill="#FFFFFF" r="181.8" stroke="#000000" stroke-miterlimit="10"/><polyline fill="none" points=" 214.2,313.4 305.9,245 305.9,245 305.9,245 305.9,245 214.3,176.5 " stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="22"/></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1 Tiny//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd'><svg baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32 32" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="Guides__x26__Forms"/><g id="Icons"><path d="M24,23.543l-4.356-4.356c0.875-1.168,1.399-2.614,1.399-4.186c0-3.866-3.134-7-7-7s-7,3.134-7,7s3.134,7,7,7 c1.572,0,3.018-0.525,4.186-1.399l4.356,4.356L24,23.543z M9.043,15c0-2.757,2.243-5,5-5c2.757,0,5,2.243,5,5c0,2.757-2.243,5-5,5 C11.286,20,9.043,17.757,9.043,15z"/></g></svg>
@@ -0,0 +1,4 @@
1
+ <svg version="1.1" viewBox="0 0 32 64" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="0" y="0" width="32" height="64" stroke="none" rx="8" fill="rgba(240, 240, 240, .95)" />
3
+ <polyline fill="none" points="26 4, 4 31, 26 59" stroke="rgba(32, 32, 32, .75)" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" />
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg version="1.1" viewBox="0 0 32 64" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="0" y="0" width="32" height="64" stroke="none" rx="8" fill="rgba(230, 230, 230, .75)" />
3
+ <polyline fill="none" points="26 4, 4 31, 26 59" stroke="rgba(32, 32, 32, .5)" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" />
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg version="1.1" viewBox="0 0 32 64" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="0" y="0" width="32" height="64" stroke="none" rx="8" fill="rgba(240, 240, 240, .95)" />
3
+ <polyline fill="none" points="4 4, 26 31, 4 59" stroke="rgba(32, 32, 32, .75)" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" />
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg version="1.1" viewBox="0 0 32 64" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="0" y="0" width="32" height="64" stroke="none" rx="8" fill="rgba(230, 230, 230, .75)" />
3
+ <polyline fill="none" points="4 4, 26 31, 4 59" stroke="rgba(32, 32, 32, .5)" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" />
4
+ </svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><svg style="enable-background:new 0 0 93.388 75.594;" version="1.1" viewBox="0 0 93.388 75.594" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="search"><g><path d="M57.158,42.7l-2.041,1.076l-6.061-4.054l-0.669,0.762l5.607,3.994l-0.503,0.572c-0.836,0.953-1.522,2.376-2.059,4.268 c-0.615,2.047-0.683,3.534-0.204,4.461l-9.422-5.318c-3.705,3.835-8.748,5.736-15.131,5.702 c-6.593-0.05-12.336-2.224-17.228-6.518C4.747,43.517,1.864,39.496,0.8,35.581c-0.656-2.264-0.909-7.07-0.758-14.419 c0.685,6.845,3.648,12.568,8.89,17.17c5.591,4.909,11.841,7.752,18.752,8.531c7.753,0.845,13.986-1.419,18.699-6.788 c0.697-0.794,1.534-1.747,2.51-2.859L57.158,42.7z"/><path d="M51.853,21.927c-0.862-5.425-3.85-10.383-8.965-14.873c-5.147-4.518-11.186-6.866-18.116-7.044 C17.392-0.17,11.498,2.25,7.092,7.269c-8.952,10.197-7.9,20.149,3.154,29.854c5.401,4.742,11.505,7.4,18.311,7.975 c7.472,0.653,13.507-1.642,18.109-6.884C51.073,33.196,52.801,27.767,51.853,21.927z M44.868,36.804 c-4.156,4.734-9.637,6.812-16.444,6.236c-6.202-0.495-11.765-2.904-16.69-7.227C1.727,27.029,0.767,18.03,8.855,8.817 c4.016-4.574,9.369-6.794,16.057-6.66c6.326,0.098,11.825,2.197,16.495,6.296c4.67,4.1,7.405,8.61,8.204,13.53 C50.465,27.289,48.884,32.23,44.868,36.804z"/><path d="M38.683,13.453c6.735,5.913,8.805,13.102,6.21,21.568c-0.974-7.605-3.875-13.527-8.704-17.766 c-4.701-4.127-9.898-6.074-15.589-5.838c-5.692,0.235-10.666,2.619-14.924,7.149c0.623-1.927,1.66-3.717,3.11-5.369 c3.625-4.129,8.548-6.051,14.767-5.768C29.383,7.708,34.426,9.716,38.683,13.453z"/><path d="M31.133,32.963c-1.589,0.913-3.873,0.791-6.854-0.363c-2.456-0.918-4.541-2.131-6.257-3.637 c-2.097-1.84-3.291-3.845-3.581-6.012C19.638,25.488,25.202,28.826,31.133,32.963z"/><path d="M91.741,65.298c1.08,0.948,1.628,2.245,1.646,3.892c0.016,1.646-0.491,3.057-1.522,4.232 c-1.088,1.239-2.525,1.947-4.311,2.123c-1.547,0.16-2.776-0.075-3.685-0.704L53.183,54.82c-1.156-0.733-1.474-2.165-0.953-4.296 c0.468-2.007,1.442-3.853,2.92-5.537c1.004-1.144,2.281-1.541,3.832-1.192L87.85,62.81L91.741,65.298z"/></g></g><g id="Слой_1"/></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 24 24" height="24px" id="Layer_1" version="1.1" viewBox="0 0 24 24" width="24px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><path d="M13,12c1.1,0,2-0.9,2-2V5.5C15,5.2,14.8,5,14.5,5S14,5.2,14,5.5V10c0,0.6-0.4,1-1,1s-1-0.4-1-1V3c0-1.1,0.9-2,2-2 s2,0.9,2,2h1c0-1.7-1.3-3-3-3s-3,1.3-3,3v7C11,11.1,11.9,12,13,12z"/><path d="M19.9,1h-2.4C17.8,1.6,18,2.3,18,3h1v19H2V3h8c0-0.7,0.2-1.4,0.6-2H1.1C0.5,1,0,1.5,0,2.1v20.8C0,23.5,0.5,24,1.1,24h18.8 c0.6,0,1.1-0.5,1.1-1.1V2.1C21,1.5,20.5,1,19.9,1z"/><g><rect height="1" width="4" x="5" y="8"/><rect height="1" width="4" x="5" y="10"/><rect height="1" width="4" x="5" y="12"/><rect height="1" width="11" x="5" y="14"/><rect height="1" width="11" x="5" y="16"/><rect height="1" width="11" x="5" y="18"/></g></g></svg>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" ?>
2
+ <svg height="24" version="1.1" width="24" xmlns="http://www.w3.org/2000/svg">
3
+ <g transform="translate(0 -1028.4)">
4
+ <path d="m3 1031.4v10c0 4.2 3.6322 8 9 10 5.368-2 9-5.8 9-10v-10h-18z" fill="#7f8c8d"/>
5
+ <path d="m3 1030.4v10c0 4.2 3.6322 8 9 10 5.368-2 9-5.8 9-10v-10h-18z" fill="#bdc3c7"/>
6
+ <path d="m3 1030.4v10c0 4.2 3.6322 8 9 10v-20h-9z" fill="#95a5a6"/>
7
+ <path d="m5 1032.4v8c0 3.4 2.8251 6.4 7 8 4.175-1.6 7-4.6 7-8v-8h-14z" fill="#ecf0f1"/>
8
+ <path d="m5 1040.4c0 3.4 2.8251 6.4 7 8v-8h-7z" fill="#2980b9"/>
9
+ <rect fill="#3498db" height="8" transform="translate(0 1028.4)" width="7" x="12" y="4"/>
10
+ <rect fill="#bdc3c7" height="8" transform="translate(0 1028.4)" width="7" x="5" y="4"/>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ const Comunit = {
4
+ initialized: false,
5
+ autoInitComponents: true,
6
+ components: {}
7
+ };
8
+
9
+ Comunit.components.entityRegionSelect = {
10
+ initialized: false,
11
+ listSelector: ".js-form-region-select",
12
+ radioSelector: ".js-set-new-region",
13
+ containerSelector: ".result-container",
14
+ regionNameSelector: ".new-region-name",
15
+ lists: [],
16
+ init: function () {
17
+ document.querySelectorAll(this.listSelector).forEach(this.addList);
18
+ this.initialized = true;
19
+ },
20
+ addList: function (element) {
21
+ const component = Comunit.components.entityRegionSelect;
22
+ const list = {
23
+ "element": element,
24
+ "radio": element.querySelector(component.radioSelector),
25
+ "container": element.querySelector(component.containerSelector),
26
+ "name": element.querySelector(component.regionNameSelector)
27
+ };
28
+ list["url"] = list["container"].getAttribute("data-url");
29
+
30
+ element.setAttribute("data-list-index", String(component.lists.length));
31
+ list["radio"].addEventListener("click", component.radioChecked);
32
+
33
+ component.lists.push(list);
34
+ },
35
+ radioChecked: function (e) {
36
+ const component = Comunit.components.entityRegionSelect;
37
+ const radio = e.target;
38
+ const index = radio.closest(component.listSelector).getAttribute("data-list-index");
39
+ const list = component.lists[index];
40
+
41
+ list["radio"].value = "";
42
+ list["name"].innerHTML = "";
43
+ list["container"].innerHTML = "";
44
+
45
+ component.loadRegions(list["url"], list["container"]);
46
+ },
47
+ loadRegions: function (url, container) {
48
+ const component = Comunit.components.entityRegionSelect;
49
+ const request = Biovision.jsonAjaxRequest("get", url, function () {
50
+ const response = JSON.parse(this.responseText);
51
+ if (response.hasOwnProperty("data")) {
52
+ component.appendList(container, response["data"]);
53
+ }
54
+ });
55
+
56
+ request.send();
57
+ },
58
+ appendList: function (container, data) {
59
+ const component = Comunit.components.entityRegionSelect;
60
+ const select = document.createElement("select");
61
+ const index = container.closest(component.listSelector).getAttribute("data-list-index");
62
+ const list = component.lists[index];
63
+ const blankOption = document.createElement("option");
64
+ blankOption.innerHTML = list["name"].innerHTML + "&darr;";
65
+ blankOption.setAttribute("value", list["radio"].value);
66
+ select.append(blankOption);
67
+
68
+ data.forEach(function (item) {
69
+ const option = document.createElement("option");
70
+ option.innerHTML = item["attributes"]["name"];
71
+ option.value = item["id"];
72
+ if (parseInt(item["meta"]["child_count"]) > 0) {
73
+ option.setAttribute("data-url", item["links"]["self"]);
74
+ }
75
+
76
+ select.append(option);
77
+ });
78
+
79
+ select.addEventListener("change", component.newRegion);
80
+
81
+ container.append(select);
82
+ },
83
+ /**
84
+ *
85
+ * @param {Event} e
86
+ * @type {Function}
87
+ */
88
+ newRegion: function (e) {
89
+ const component = Comunit.components.entityRegionSelect;
90
+ const select = e.target;
91
+ const index = select.closest(component.listSelector).getAttribute("data-list-index");
92
+ const list = component.lists[index];
93
+ const option = select.options[select.selectedIndex];
94
+ const container = list["container"];
95
+
96
+ list["radio"].value = option.value;
97
+ list["name"].innerHTML = option.innerHTML;
98
+ if (option.hasAttribute("data-url")) {
99
+ const url = option.getAttribute("data-url");
100
+ const request = Biovision.jsonAjaxRequest("get", url, function () {
101
+ const response = JSON.parse(this.responseText);
102
+
103
+ if (response.hasOwnProperty("data")) {
104
+ const data = response["data"];
105
+ if (data.hasOwnProperty("relationships")) {
106
+ const relationships = data["relationships"];
107
+ if (relationships["children"].length > 0) {
108
+ component.appendList(container, relationships["children"]);
109
+ }
110
+ }
111
+ }
112
+ });
113
+
114
+ component.removeSiblings(select);
115
+ request.send();
116
+ }
117
+ },
118
+ removeSiblings: function (current) {
119
+ const nextSibling = current.nextElementSibling;
120
+
121
+ if (nextSibling) {
122
+ this.removeSiblings(nextSibling);
123
+ nextSibling.remove();
124
+ }
125
+ }
126
+ };
127
+
128
+ Comunit.components.regionLinkRemover = {
129
+ initialized: false,
130
+ selector: ".region-link-destroy",
131
+ buttons: [],
132
+ init: function () {
133
+ document.querySelectorAll(this.selector).forEach(this.apply);
134
+ this.initialized = true;
135
+ },
136
+ apply: function (button) {
137
+ const component = Comunit.components.regionLinkRemover;
138
+ component.buttons.push(button);
139
+ button.addEventListener("click", component.handler);
140
+ },
141
+ handler: function (event) {
142
+ const button = event.target;
143
+ if (confirm(button.getAttribute("data-message"))) {
144
+ const url = button.getAttribute("data-url");
145
+ const request = Biovision.jsonAjaxRequest("delete", url, function () {
146
+ button.closest("li").remove();
147
+ });
148
+ request.send();
149
+ }
150
+ }
151
+ };
152
+
153
+ Comunit.components.regionLinkCreator = {
154
+ initialized: false,
155
+ selector: ".region-link-create",
156
+ button: undefined,
157
+ pattern: undefined,
158
+ container: undefined,
159
+ list: undefined,
160
+ init: function () {
161
+ this.button = document.querySelector(this.selector);
162
+ if (this.button) {
163
+ this.pattern = this.button.getAttribute("data-url");
164
+ this.container = this.button.closest(".js-grouping-container");
165
+ this.list = this.button.closest("div").querySelector(".js-form-region-select");
166
+ this.button.addEventListener("click", this.handler);
167
+ this.initialized = true;
168
+ }
169
+ },
170
+ handler: function () {
171
+ const component = Comunit.components.regionLinkCreator;
172
+ const radio = component.list.querySelector("input:checked");
173
+ const regionId = parseInt(radio.value);
174
+ if (regionId > 0) {
175
+ component.createLink(regionId);
176
+ }
177
+ },
178
+ createLink: function (regionId) {
179
+ const url = this.pattern.replace("_id_", String(regionId));
180
+ Biovision.jsonAjaxRequest("put", url, this.insertLink).send();
181
+ },
182
+ insertLink: function () {
183
+ const component = Comunit.components.regionLinkCreator;
184
+ const regionName = component.list.querySelector(".new-region-name").innerHTML;
185
+ let list = component.container.querySelector(".regions-user-linked");
186
+ if (!list) {
187
+ list = document.createElement("ul");
188
+ list.classList.add("regions-user-linked");
189
+ component.container.prepend(list);
190
+ }
191
+ const li = document.createElement("li");
192
+ li.innerHTML = regionName;
193
+ list.append(li);
194
+ }
195
+ };
196
+
197
+ Biovision.components.comunit = Comunit;
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ document.addEventListener('DOMContentLoaded', function () {
4
+ let $container = $('.follow-user-buttons');
5
+ let url = $container.data('url');
6
+
7
+ $container.find('.follow').on('click', function () {
8
+ let $follow = $(this).parent().find('.follow');
9
+ let $unfollow = $(this).parent().find('.unfollow');
10
+
11
+ $.ajax(url, {
12
+ method: 'put',
13
+ success: function (response) {
14
+ $follow.addClass('hidden');
15
+ $unfollow.removeClass('hidden');
16
+ }
17
+ }).fail(Biovision.handleAjaxFailure);
18
+ });
19
+
20
+ $container.find('.unfollow').on('click', function () {
21
+ let $follow = $(this).parent().find('.follow');
22
+ let $unfollow = $(this).parent().find('.unfollow');
23
+
24
+ $.ajax(url, {
25
+ method: 'delete',
26
+ success: function (response) {
27
+ $follow.removeClass('hidden');
28
+ $unfollow.addClass('hidden');
29
+ }
30
+ }).fail(Biovision.handleAjaxFailure);
31
+ });
32
+
33
+ $('.hide-request').on('click', function () {
34
+ let $button = $(this);
35
+
36
+ $.ajax($button.data('url'), {
37
+ method: 'delete',
38
+ success: function(response) {
39
+ if (response.hasOwnProperty('data')) {
40
+ if (!response['data']['visible']) {
41
+ $button.closest('li').addClass('hidden');
42
+ }
43
+ }
44
+ }
45
+ }).fail(Biovision.handleAjaxFailure);
46
+ });
47
+ });
@@ -0,0 +1,25 @@
1
+ $border-primary: .1rem solid #777 !default;
2
+
3
+ form {
4
+ #region-image {
5
+ img {
6
+ border: $border-primary;
7
+ max-height: 11rem;
8
+ width: 11rem;
9
+ }
10
+ }
11
+ }
12
+
13
+ .privileges {
14
+ &.regions {
15
+ margin: 0 0 0 1.2rem;
16
+ padding: 0;
17
+ border: none;
18
+
19
+ > li {
20
+ list-style: none;
21
+ margin: 0;
22
+ padding: 0;
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,95 @@
1
+ @import "biovision/vote/vote";
2
+ @import "biovision/comment/comments";
3
+ @import "biovision/post/admin/posts";
4
+
5
+ form {
6
+ .new-region-name:empty::after {
7
+ color: var(--text-color-secondary);
8
+ content: attr(data-blank);
9
+ }
10
+ }
11
+
12
+ .post-category-tree {
13
+ .post-category-tree {
14
+ border-left: .1rem solid #eee;
15
+ margin-bottom: var(--spacer-xs);
16
+ margin-left: .8rem;
17
+ padding-left: 1rem;
18
+ }
19
+ }
20
+
21
+ .regions-user-linked {
22
+ list-style: none;
23
+
24
+ li {
25
+ align-items: center;
26
+ display: flex;
27
+ margin: 0 0 var(--spacer-xs);
28
+ }
29
+ }
30
+
31
+ .regions-user-new {
32
+ align-items: center;
33
+ display: flex;
34
+ flex-wrap: wrap;
35
+
36
+ ul {
37
+ list-style: none;
38
+ margin: 0;
39
+ padding: 0;
40
+ }
41
+
42
+ li {
43
+ align-items: center;
44
+ display: flex;
45
+ margin: 0 0 var(--spacer-xs) 0;
46
+ padding: 0;
47
+ }
48
+
49
+ .new-region-name {
50
+ font-weight: 500;
51
+ margin: 0 var(--spacer-xs);
52
+ }
53
+
54
+ .result-container {
55
+ margin: 0 var(--spacer-xs);
56
+ }
57
+ }
58
+
59
+ .region-link-destroy {
60
+ background: image_url('biovision/base/icons/destroy.svg') no-repeat center / 1.6rem auto;
61
+ border: none;
62
+ border-radius: 50%;
63
+ box-shadow: 0 0 .2rem rgba(127, 0, 0, .25);
64
+ cursor: pointer;
65
+ display: inline-block;
66
+ height: 2.4rem;
67
+ margin-right: var(--spacer-s);
68
+ transition: .25s;
69
+ width: 2.4rem;
70
+
71
+ &:focus,
72
+ &:hover {
73
+ background-color: rgba(127, 0, 0, .125);
74
+ box-shadow: 0 0 .4rem rgba(196, 0, 0, .75);
75
+ }
76
+ }
77
+
78
+ .region-link-create {
79
+ background: image_url('biovision/base/icons/create.svg') no-repeat center / 1.6rem auto;
80
+ border: none;
81
+ border-radius: 50%;
82
+ box-shadow: 0 0 .2rem rgba(0, 127, 0, .25);
83
+ cursor: pointer;
84
+ display: inline-block;
85
+ height: 2.4rem;
86
+ margin-right: var(--spacer-s);
87
+ transition: .25s;
88
+ width: 2.4rem;
89
+
90
+ &:focus,
91
+ &:hover {
92
+ background-color: rgba(0, 127, 0, .125);
93
+ box-shadow: 0 0 .4rem rgba(0, 196, 0, .75);
94
+ }
95
+ }