decidim 0.0.8.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim might be problematic. Click here for more details.

Files changed (292) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +21 -21
  3. data/.codeclimate.yml +10 -6
  4. data/.eslintignore +1 -0
  5. data/.gitignore +1 -1
  6. data/.rubocop.yml +38 -20
  7. data/.travis.yml +0 -1
  8. data/Gemfile +6 -9
  9. data/Gemfile.lock +165 -205
  10. data/Rakefile +1 -1
  11. data/codecov.yml +5 -71
  12. data/crowdin.yaml +1 -1
  13. data/decidim-admin/app/assets/stylesheets/decidim/admin/_decidim.scss +9 -2
  14. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_action-icon.scss +7 -0
  15. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_cards.scss +6 -0
  16. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_editor.scss +1 -0
  17. data/decidim-admin/app/assets/stylesheets/decidim/admin/{_sidebar.scss → extra/_sidebar.scss} +0 -0
  18. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_action-icon.scss +23 -0
  19. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_cards.scss +0 -7
  20. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_icons.scss +4 -2
  21. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_modules.scss +0 -1
  22. data/decidim-admin/app/assets/stylesheets/decidim/admin/{modules/_datepicker.scss → plugins/_foundation-datepicker.scss} +1 -1
  23. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/_constants.scss +5 -0
  24. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/_math.scss +45 -0
  25. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_acos.scss +12 -0
  26. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_asin.scss +12 -0
  27. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_atan.scss +28 -0
  28. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_atan2.scss +37 -0
  29. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_cos.scss +13 -0
  30. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_cot.scss +9 -0
  31. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_csc.scss +9 -0
  32. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_exp.scss +12 -0
  33. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_fact.scss +18 -0
  34. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_frexp.scss +21 -0
  35. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_ldexp.scss +17 -0
  36. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_log.scss +34 -0
  37. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_pow.scss +28 -0
  38. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sec.scss +9 -0
  39. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sin.scss +9 -0
  40. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sqrt.scss +16 -0
  41. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_tan.scss +9 -0
  42. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_deg-to-rad.scss +4 -0
  43. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_rad-to-deg.scss +4 -0
  44. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_strip-unit.scss +8 -0
  45. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_unitless-rad.scss +13 -0
  46. data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +23 -17
  47. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_group.rb +1 -1
  48. data/decidim-admin/app/controllers/decidim/admin/moderations_controller.rb +4 -4
  49. data/decidim-admin/app/controllers/decidim/admin/participatory_processes_controller.rb +1 -1
  50. data/decidim-admin/app/forms/decidim/admin/organization_form.rb +6 -2
  51. data/decidim-admin/app/forms/decidim/admin/participatory_process_form.rb +5 -0
  52. data/decidim-admin/app/helpers/decidim/admin/application_helper.rb +1 -1
  53. data/decidim-admin/app/helpers/decidim/admin/attributes_display_helper.rb +1 -1
  54. data/decidim-admin/app/views/decidim/admin/features/_feature.html.erb +5 -1
  55. data/decidim-admin/app/views/decidim/admin/moderations/_report.html.erb +11 -0
  56. data/decidim-admin/app/views/decidim/admin/moderations/index.html.erb +22 -24
  57. data/decidim-admin/app/views/layouts/decidim/admin/participatory_process.html.erb +3 -0
  58. data/decidim-admin/config/i18n-tasks.yml +1 -0
  59. data/decidim-admin/config/locales/ca.yml +7 -3
  60. data/decidim-admin/config/locales/en.yml +6 -2
  61. data/decidim-admin/config/locales/es.yml +7 -3
  62. data/decidim-admin/config/locales/eu.yml +4 -3
  63. data/decidim-admin/config/locales/fi.yml +4 -3
  64. data/decidim-admin/config/locales/fr.yml +389 -2
  65. data/decidim-admin/config/locales/nl.yml +4 -1
  66. data/decidim-admin/decidim-admin.gemspec +3 -3
  67. data/decidim-admin/lib/decidim/admin/test/manage_attachments_examples.rb +2 -2
  68. data/decidim-admin/spec/commands/activate_participatory_process_step_spec.rb +1 -0
  69. data/decidim-admin/spec/commands/create_category_spec.rb +1 -1
  70. data/decidim-admin/spec/commands/create_feature_spec.rb +7 -5
  71. data/decidim-admin/spec/commands/create_participatory_process_admin_spec.rb +2 -1
  72. data/decidim-admin/spec/commands/create_participatory_process_spec.rb +14 -6
  73. data/decidim-admin/spec/commands/create_scope_spec.rb +3 -2
  74. data/decidim-admin/spec/commands/deactivate_participatory_process_step_spec.rb +1 -0
  75. data/decidim-admin/spec/commands/destroy_feature_spec.rb +1 -0
  76. data/decidim-admin/spec/commands/destroy_participatory_process_step_spec.rb +1 -0
  77. data/decidim-admin/spec/commands/publish_participatory_process_spec.rb +1 -0
  78. data/decidim-admin/spec/commands/reorder_participatory_process_steps_spec.rb +1 -0
  79. data/decidim-admin/spec/commands/unpublish_participatory_process_spec.rb +1 -0
  80. data/decidim-admin/spec/commands/update_feature_spec.rb +7 -5
  81. data/decidim-admin/spec/commands/update_participatory_process_spec.rb +5 -5
  82. data/decidim-admin/spec/commands/update_scope_spec.rb +3 -2
  83. data/decidim-admin/spec/factories.rb +1 -0
  84. data/decidim-admin/spec/features/admin_invite_spec.rb +5 -5
  85. data/decidim-admin/spec/features/admin_manages_newsletters_spec.rb +5 -5
  86. data/decidim-admin/spec/features/admin_manages_organization_admins_spec.rb +2 -2
  87. data/decidim-admin/spec/features/admin_manages_organization_scopes_spec.rb +3 -3
  88. data/decidim-admin/spec/features/admin_manages_organization_spec.rb +7 -11
  89. data/decidim-admin/spec/features/admin_manages_participatory_process_groups_spec.rb +2 -2
  90. data/decidim-admin/spec/features/admin_manages_participatory_processes_spec.rb +3 -3
  91. data/decidim-admin/spec/features/static_pages_spec.rb +8 -7
  92. data/decidim-admin/spec/forms/newsletter_form_spec.rb +2 -2
  93. data/decidim-admin/spec/forms/organization_form_spec.rb +3 -3
  94. data/decidim-admin/spec/forms/participatory_process_form_spec.rb +4 -4
  95. data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +1 -1
  96. data/decidim-admin/spec/forms/participatory_process_user_role_form_spec.rb +1 -1
  97. data/decidim-admin/spec/forms/scope_form_spec.rb +1 -1
  98. data/decidim-admin/spec/helpers/aria_selected_link_to_helper_spec.rb +1 -0
  99. data/decidim-admin/spec/helpers/feature_settings_helper_spec.rb +1 -0
  100. data/decidim-admin/spec/jobs/newsletter_delivery_job_spec.rb +2 -2
  101. data/decidim-admin/spec/queries/process_admins_spec.rb +1 -1
  102. data/decidim-admin/spec/shared/manage_process_admins_examples.rb +2 -2
  103. data/decidim-admin/spec/shared/manage_process_categories_examples.rb +3 -3
  104. data/decidim-admin/spec/shared/manage_process_steps_examples.rb +5 -5
  105. data/decidim-admin/spec/shared/manage_processes_examples.rb +4 -4
  106. data/decidim-admin/spec/shared/participatory_admin_shared_context.rb +1 -0
  107. data/decidim-admin/spec/spec_helper.rb +1 -0
  108. data/decidim-admin/spec/views/decidim/static_pages/_form.html.erb_spec.rb +1 -0
  109. data/decidim-api/app/controllers/decidim/api/application_controller.rb +1 -1
  110. data/decidim-api/decidim-api.gemspec +1 -1
  111. data/decidim-api/spec/factories.rb +1 -0
  112. data/decidim-api/spec/spec_helper.rb +1 -0
  113. data/decidim-budgets/app/queries/decidim/budgets/filtered_projects.rb +36 -0
  114. data/decidim-budgets/config/locales/ca.yml +1 -0
  115. data/decidim-budgets/config/locales/en.yml +1 -0
  116. data/decidim-budgets/config/locales/es.yml +1 -0
  117. data/decidim-budgets/config/locales/fr.yml +35 -3
  118. data/decidim-budgets/decidim-budgets.gemspec +2 -2
  119. data/decidim-budgets/lib/decidim/budgets/feature.rb +9 -0
  120. data/decidim-budgets/spec/commands/add_line_item_spec.rb +6 -9
  121. data/decidim-budgets/spec/commands/cancel_order_spec.rb +3 -1
  122. data/decidim-budgets/spec/commands/checkout_spec.rb +3 -1
  123. data/decidim-budgets/spec/commands/create_project_spec.rb +4 -3
  124. data/decidim-budgets/spec/commands/remove_line_item_spec.rb +2 -1
  125. data/decidim-budgets/spec/commands/update_project_spec.rb +4 -3
  126. data/decidim-budgets/spec/factories.rb +1 -0
  127. data/decidim-budgets/spec/features/orders_spec.rb +24 -24
  128. data/decidim-budgets/spec/forms/project_form_spec.rb +1 -0
  129. data/decidim-budgets/spec/models/project_spec.rb +1 -1
  130. data/decidim-budgets/spec/queries/decidim/budgets/filtered_projects_spec.rb +21 -0
  131. data/decidim-budgets/spec/services/project_search_spec.rb +4 -3
  132. data/decidim-budgets/spec/shared/admin_shared_context.rb +1 -0
  133. data/decidim-budgets/spec/shared/manage_attachments_examples.rb +1 -0
  134. data/decidim-budgets/spec/spec_helper.rb +1 -0
  135. data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
  136. data/decidim-comments/app/commands/decidim/comments/create_comment.rb +8 -2
  137. data/decidim-comments/app/frontend/application/application.component.tsx +3 -3
  138. data/decidim-comments/app/frontend/application/icon.component.tsx +1 -1
  139. data/decidim-comments/app/frontend/comments/add_comment_form.component.tsx +7 -7
  140. data/decidim-comments/app/frontend/comments/comment.component.test.tsx +7 -7
  141. data/decidim-comments/app/frontend/comments/comment.component.tsx +6 -6
  142. data/decidim-comments/app/frontend/comments/comment_thread.component.tsx +2 -2
  143. data/decidim-comments/app/frontend/comments/comments.component.test.tsx +5 -5
  144. data/decidim-comments/app/frontend/comments/comments.component.tsx +6 -6
  145. data/decidim-comments/app/frontend/comments/down_vote_button.component.test.tsx +4 -4
  146. data/decidim-comments/app/frontend/comments/down_vote_button.component.tsx +3 -3
  147. data/decidim-comments/app/frontend/comments/up_vote_button.component.test.tsx +4 -4
  148. data/decidim-comments/app/frontend/comments/up_vote_button.component.tsx +3 -3
  149. data/decidim-comments/app/frontend/comments/vote_button.component.tsx +1 -1
  150. data/decidim-comments/app/frontend/comments/vote_button_component.test.tsx +2 -2
  151. data/decidim-comments/app/frontend/entry.ts +2 -2
  152. data/decidim-comments/app/frontend/support/generate_comments_data.ts +2 -2
  153. data/decidim-comments/app/frontend/support/load_translations.ts +2 -2
  154. data/decidim-comments/app/frontend/support/resolve_graphql_query.ts +1 -1
  155. data/decidim-comments/app/mailers/decidim/comments/comment_notification_mailer.rb +1 -1
  156. data/decidim-comments/app/models/decidim/comments/comment.rb +3 -8
  157. data/decidim-comments/app/models/decidim/comments/seed.rb +1 -0
  158. data/decidim-comments/config/locales/fr.yml +62 -1
  159. data/decidim-comments/db/migrate/20170504085413_add_root_commentable_to_comments.rb +7 -0
  160. data/decidim-comments/db/migrate/20170510091348_update_root_commentable_for_comments.rb +22 -0
  161. data/decidim-comments/db/migrate/20170510091409_set_root_commentable_null_constraints.rb +6 -0
  162. data/decidim-comments/db/seeds.rb +4 -2
  163. data/decidim-comments/lib/decidim/comments/engine.rb +8 -0
  164. data/decidim-comments/lib/decidim/comments/test/factories.rb +1 -0
  165. data/decidim-comments/spec/commands/create_comment_spec.rb +13 -6
  166. data/decidim-comments/spec/commands/vote_comment_spec.rb +2 -6
  167. data/decidim-comments/spec/factories.rb +1 -0
  168. data/decidim-comments/spec/features/notifications_spec.rb +4 -4
  169. data/decidim-comments/spec/features/process_admin_manages_comments_spec.rb +1 -1
  170. data/decidim-comments/spec/features/report_comment_spec.rb +4 -2
  171. data/decidim-comments/spec/helpers/comments_helper_spec.rb +3 -3
  172. data/decidim-comments/spec/mailers/comment_notification_mailer_spec.rb +2 -1
  173. data/decidim-comments/spec/models/comment_spec.rb +5 -9
  174. data/decidim-comments/spec/models/comment_vote_spec.rb +3 -3
  175. data/decidim-comments/spec/models/seed_spec.rb +1 -1
  176. data/decidim-comments/spec/queries/sorted_comments_spec.rb +5 -5
  177. data/decidim-comments/spec/shared/admin_shared_context.rb +1 -0
  178. data/decidim-comments/spec/spec_helper.rb +1 -0
  179. data/decidim-comments/spec/types/comment_mutation_type_spec.rb +4 -12
  180. data/decidim-comments/spec/types/comment_type_spec.rb +4 -5
  181. data/decidim-comments/spec/types/commentable_mutation_type_spec.rb +2 -2
  182. data/decidim-comments/spec/types/mutation_type_spec.rb +4 -6
  183. data/decidim-comments/spec/types/query_type_spec.rb +1 -1
  184. data/decidim-dev/decidim-dev.gemspec +6 -6
  185. data/decidim-dev/lib/decidim/dev/common_rake.rb +5 -1
  186. data/decidim-dev/lib/decidim/dev/railtie.rb +1 -0
  187. data/decidim-dev/lib/decidim/dev/test/base_spec_helper.rb +0 -2
  188. data/decidim-dev/lib/decidim/dev/test/rspec_support/geocoder.rb +4 -3
  189. data/decidim-dev/lib/decidim/dev/test/rspec_support/i18n.rb +2 -2
  190. data/decidim-dev/lib/decidim/dev/test/rspec_support/webmock.rb +1 -0
  191. data/decidim-dev/lib/generators/decidim/dummy_generator.rb +1 -1
  192. data/decidim-dev/lib/generators/decidim/templates/autoprefixer_initializer.rb +4 -3
  193. data/decidim-dev/lib/tasks/test_app.rake +1 -0
  194. data/decidim-meetings/app/controllers/decidim/meetings/meeting_widgets_controller.rb +1 -0
  195. data/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +8 -8
  196. data/decidim-meetings/app/helpers/decidim/meetings/map_helper.rb +9 -9
  197. data/decidim-meetings/app/models/decidim/meetings/meeting.rb +1 -1
  198. data/decidim-meetings/app/views/decidim/meetings/meeting_widgets/show.html.erb +8 -17
  199. data/decidim-meetings/config/locales/fr.yml +95 -1
  200. data/decidim-meetings/lib/decidim/meetings/feature.rb +7 -0
  201. data/decidim-meetings/spec/commands/close_meeting_spec.rb +2 -1
  202. data/decidim-meetings/spec/commands/create_meeting_spec.rb +6 -5
  203. data/decidim-meetings/spec/commands/update_meeting_spec.rb +6 -5
  204. data/decidim-meetings/spec/factories.rb +1 -0
  205. data/decidim-meetings/spec/features/explore_meetings_spec.rb +2 -1
  206. data/decidim-meetings/spec/forms/close_meeting_form_spec.rb +1 -0
  207. data/decidim-meetings/spec/forms/meeting_form_spec.rb +5 -3
  208. data/decidim-meetings/spec/services/meeting_search_spec.rb +3 -2
  209. data/decidim-meetings/spec/shared/admin_shared_context.rb +1 -0
  210. data/decidim-meetings/spec/shared/manage_attachments_examples.rb +1 -1
  211. data/decidim-meetings/spec/shared/manage_meetings_examples.rb +21 -20
  212. data/decidim-meetings/spec/spec_helper.rb +1 -0
  213. data/decidim-pages/config/locales/fr.yml +18 -1
  214. data/decidim-pages/decidim-pages.gemspec +1 -1
  215. data/decidim-pages/lib/decidim/pages/feature.rb +7 -0
  216. data/decidim-pages/spec/commands/create_page_spec.rb +1 -3
  217. data/decidim-pages/spec/factories.rb +1 -0
  218. data/decidim-pages/spec/spec_helper.rb +1 -0
  219. data/decidim-proposals/app/commands/decidim/proposals/create_proposal_export.rb +36 -0
  220. data/decidim-proposals/app/controllers/decidim/proposals/admin/exports_controller.rb +24 -0
  221. data/decidim-proposals/app/controllers/decidim/proposals/proposal_votes_controller.rb +3 -1
  222. data/decidim-proposals/app/controllers/decidim/proposals/proposal_widgets_controller.rb +0 -5
  223. data/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +0 -1
  224. data/decidim-proposals/app/jobs/decidim/proposals/export_job.rb +21 -0
  225. data/decidim-proposals/app/models/decidim/proposals/proposal.rb +1 -1
  226. data/decidim-proposals/app/queries/decidim/proposals/filtered_proposals.rb +36 -0
  227. data/decidim-proposals/app/services/decidim/proposals/proposal_serializer.rb +72 -0
  228. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/index.html.erb +15 -3
  229. data/decidim-proposals/app/views/decidim/proposals/proposal_widgets/show.html.erb +4 -25
  230. data/decidim-proposals/config/locales/ca.yml +4 -0
  231. data/decidim-proposals/config/locales/en.yml +6 -1
  232. data/decidim-proposals/config/locales/es.yml +4 -0
  233. data/decidim-proposals/config/locales/fr.yml +146 -1
  234. data/decidim-proposals/decidim-proposals.gemspec +2 -2
  235. data/decidim-proposals/lib/decidim/proposals/admin_engine.rb +5 -0
  236. data/decidim-proposals/lib/decidim/proposals/feature.rb +14 -0
  237. data/decidim-proposals/spec/factories.rb +1 -0
  238. data/decidim-proposals/spec/features/admin_manages_proposals_spec.rb +1 -0
  239. data/decidim-proposals/spec/features/process_admin_manages_proposals_spec.rb +1 -0
  240. data/decidim-proposals/spec/features/proposals_spec.rb +29 -28
  241. data/decidim-proposals/spec/features/report_proposal_spec.rb +2 -2
  242. data/decidim-proposals/spec/features/vote_proposal_spec.rb +36 -32
  243. data/decidim-proposals/spec/helpers/proposal_order_helper_spec.rb +3 -3
  244. data/decidim-proposals/spec/jobs/export_job_spec.rb +57 -0
  245. data/decidim-proposals/spec/lib/decidim/proposals/feature_spec.rb +1 -0
  246. data/decidim-proposals/spec/models/decidim/proposals/proposal_vote_spec.rb +3 -3
  247. data/decidim-proposals/spec/queries/decidim/proposals/filtered_proposals_spec.rb +21 -0
  248. data/decidim-proposals/spec/services/decidim/proposals/proposal_search_spec.rb +12 -12
  249. data/decidim-proposals/spec/services/decidim/proposals/proposal_serializer_spec.rb +71 -0
  250. data/decidim-proposals/spec/shared/admin_shared_context.rb +1 -0
  251. data/decidim-proposals/spec/shared/create_proposal_examples.rb +4 -3
  252. data/decidim-proposals/spec/shared/export_proposals_examples.rb +37 -0
  253. data/decidim-proposals/spec/shared/manage_proposals_examples.rb +12 -11
  254. data/decidim-proposals/spec/shared/proposal_form_examples.rb +9 -8
  255. data/decidim-proposals/spec/spec_helper.rb +1 -0
  256. data/decidim-results/app/controllers/decidim/results/result_widgets_controller.rb +1 -0
  257. data/decidim-results/app/controllers/decidim/results/results_controller.rb +1 -1
  258. data/decidim-results/app/queries/decidim/results/filtered_results.rb +36 -0
  259. data/decidim-results/app/services/decidim/results/result_stats_calculator.rb +1 -1
  260. data/decidim-results/app/views/decidim/results/result_widgets/show.html.erb +2 -10
  261. data/decidim-results/config/locales/fr.yml +75 -1
  262. data/decidim-results/decidim-results.gemspec +2 -2
  263. data/decidim-results/lib/decidim/results/feature.rb +9 -0
  264. data/decidim-results/spec/commands/create_result_spec.rb +4 -3
  265. data/decidim-results/spec/commands/update_result_spec.rb +5 -4
  266. data/decidim-results/spec/controllers/results_controller_spec.rb +31 -0
  267. data/decidim-results/spec/factories.rb +1 -0
  268. data/decidim-results/spec/features/explore_results_spec.rb +75 -74
  269. data/decidim-results/spec/forms/result_form_spec.rb +2 -1
  270. data/decidim-results/spec/queries/decidim/results/filtered_results_spec.rb +21 -0
  271. data/decidim-results/spec/services/result_search_spec.rb +4 -3
  272. data/decidim-results/spec/services/result_stats_calculator_spec.rb +1 -0
  273. data/decidim-results/spec/shared/admin_shared_context.rb +1 -0
  274. data/decidim-results/spec/spec_helper.rb +1 -0
  275. data/decidim-system/config/locales/fr.yml +64 -1
  276. data/decidim-system/decidim-system.gemspec +3 -3
  277. data/decidim-system/spec/factories.rb +1 -0
  278. data/decidim-system/spec/spec_helper.rb +1 -0
  279. data/docs/how_to_create_a_plugin.md +117 -139
  280. data/lib/generators/decidim/install_generator.rb +1 -1
  281. data/package.json +30 -31
  282. data/tslint.json +1 -2
  283. data/webpack.config.js +2 -3
  284. data/yarn.lock +976 -1326
  285. metadata +68 -31
  286. data/decidim-admin/yarn.lock +0 -4
  287. data/decidim-api/.gitignore +0 -7
  288. data/decidim-budgets/.gitignore +0 -7
  289. data/decidim-meetings/.gitignore +0 -7
  290. data/decidim-pages/.gitignore +0 -3
  291. data/decidim-proposals/.gitignore +0 -3
  292. data/decidim-results/.gitignore +0 -7
@@ -0,0 +1,17 @@
1
+ // Returns $x * 2^$exp
2
+ // @param {Number} $x
3
+ // @param {Number} $exp
4
+ @function ldexp ($x, $exp) {
5
+ $b: if($exp >= 0, 2, 1 / 2);
6
+ @if $exp < 0 {
7
+ $exp: $exp * -1;
8
+ }
9
+ @while $exp > 0 {
10
+ @if $exp % 2 == 1 {
11
+ $x: $x * $b;
12
+ }
13
+ $b: $b * $b;
14
+ $exp: floor($exp * 0.5);
15
+ }
16
+ @return $x;
17
+ }
@@ -0,0 +1,34 @@
1
+ // Returns the natural logarithm of a number.
2
+ // @param {Number} $x
3
+ // @param {Number} $b The base number
4
+ // @example
5
+ // log(2) // 0.69315
6
+ // log(10) // 2.30259
7
+ // log(2, 10) // 0.30103
8
+ @function log ($x, $b: null) {
9
+ @if $b == null {
10
+ @return _log($x);
11
+ } @else {
12
+ @return _log($x) / _log($b);
13
+ }
14
+ }
15
+
16
+ @function _log ($x) {
17
+ @if $x <= 0 {
18
+ @return 0 / 0;
19
+ }
20
+ $k: nth(frexp($x / $SQRT2), 2);
21
+ $x: $x / ldexp(1, $k);
22
+ $x: ($x - 1) / ($x + 1);
23
+ $x2: $x * $x;
24
+ $i: 1;
25
+ $s: $x;
26
+ $sp: null;
27
+ @while $sp != $s {
28
+ $x: $x * $x2;
29
+ $i: $i + 2;
30
+ $sp: $s;
31
+ $s: $s + $x / $i;
32
+ }
33
+ @return $LN2 * $k + 2 * $s;
34
+ }
@@ -0,0 +1,28 @@
1
+ // Returns base to the exponent power.
2
+ // @param {Number} $base The base number
3
+ // @param {Number} $exp The exponent to which to raise base
4
+ // @return {Number}
5
+ // @example
6
+ // pow(4, 2) // 16
7
+ // pow(4, -2) // 0.0625
8
+ // pow(4, 0.2) // 1.31951
9
+ @function pow ($base, $exp) {
10
+ @if $exp == floor($exp) {
11
+ $r: 1;
12
+ $s: 0;
13
+ @if $exp < 0 {
14
+ $exp: $exp * -1;
15
+ $s: 1;
16
+ }
17
+ @while $exp > 0 {
18
+ @if $exp % 2 == 1 {
19
+ $r: $r * $base;
20
+ }
21
+ $exp: floor($exp * 0.5);
22
+ $base: $base * $base;
23
+ }
24
+ @return if($s != 0, 1 / $r, $r);
25
+ } @else {
26
+ @return exp(log($base) * $exp);
27
+ }
28
+ }
@@ -0,0 +1,9 @@
1
+ // Returns the secant of a number.
2
+ // @param {Number} $x A number in rad or deg. Assuming unitless number to be in rad.
3
+ // @example
4
+ // sec(0.7854) // 1.41422
5
+ // sec(45deg) // 1.41422
6
+ @function sec ($x) {
7
+ $x: unitless-rad($x);
8
+ @return 1 / cos($x);
9
+ }
@@ -0,0 +1,9 @@
1
+ // Returns the sine of a number.
2
+ // @param {Number} $x A number in rad or deg. Assuming unitless number to be in rad.
3
+ // @example
4
+ // sin(1.0472) // 0.86603
5
+ // sin(60deg) // 0.86603
6
+ @function sin ($x) {
7
+ $x: unitless-rad($x);
8
+ @return cos($x - $PI / 2);
9
+ }
@@ -0,0 +1,16 @@
1
+ // Returns the square root of a number.
2
+ // @param {Number} $x
3
+ // @example
4
+ // sqrt(2) // 1.41421
5
+ // sqrt(5) // 2.23607
6
+ @function sqrt ($x) {
7
+ @if $x < 0 {
8
+ @warn "Argument for `sqrt()` must be a positive number.";
9
+ @return null;
10
+ }
11
+ $ret: 1;
12
+ @for $i from 1 through 24 {
13
+ $ret: $ret - (pow($ret, 2) - $x) / (2 * $ret);
14
+ }
15
+ @return $ret;
16
+ }
@@ -0,0 +1,9 @@
1
+ // Returns the tangent of a number.
2
+ // @param {Number} $x A number in rad or deg. Assuming unitless number to be in rad.
3
+ // @example
4
+ // tan(0.5236) // 0.57735
5
+ // tan(30deg) // 0.57735
6
+ @function tan ($x) {
7
+ $x: unitless-rad($x);
8
+ @return sin($x) / cos($x);
9
+ }
@@ -0,0 +1,4 @@
1
+ // Convert deg to rad
2
+ @function deg-to-rad ($deg, $unit: true) {
3
+ @return strip-unit($deg) * $PI / 180 * if($unit, 1rad, 1);
4
+ }
@@ -0,0 +1,4 @@
1
+ // Convert rad to deg
2
+ @function rad-to-deg ($rad, $unit: true) {
3
+ @return strip-unit($rad) * 180 / $PI * if($unit, 1deg, 1);
4
+ }
@@ -0,0 +1,8 @@
1
+ // Strip unit from a number
2
+ @function strip-unit ($number) {
3
+ @if unitless($number) {
4
+ @return $number;
5
+ } @else {
6
+ @return $number / ($number * 0 + 1);
7
+ }
8
+ }
@@ -0,0 +1,13 @@
1
+ // Convert to unitless rad
2
+ @function unitless-rad ($angle) {
3
+ @if unitless($angle) {
4
+ @return $angle;
5
+ } @else if unit($angle) == rad {
6
+ @return $angle / 1rad;
7
+ } @else if unit($angle) == deg {
8
+ @return deg-to-rad($angle, false);
9
+ } @else if type-of($angle) != number or not unitless($angle) {
10
+ @warn "#{ $angle } is not a valid number.";
11
+ @return $angle;
12
+ }
13
+ }
@@ -35,24 +35,30 @@ module Decidim
35
35
  attr_reader :form
36
36
 
37
37
  def create_participatory_process
38
- transaction do
39
- process = ParticipatoryProcess.new(
40
- title: form.title,
41
- subtitle: form.subtitle,
42
- slug: form.slug,
43
- hashtag: form.hashtag,
44
- description: form.description,
45
- short_description: form.short_description,
46
- hero_image: form.hero_image,
47
- banner_image: form.banner_image,
48
- promoted: form.promoted,
49
- meta_scope: form.meta_scope,
50
- scope: form.scope,
51
- organization: form.current_organization,
52
- participatory_process_group: form.participatory_process_group
53
- )
38
+ process = ParticipatoryProcess.new(
39
+ organization: form.current_organization,
40
+ title: form.title,
41
+ subtitle: form.subtitle,
42
+ slug: form.slug,
43
+ hashtag: form.hashtag,
44
+ description: form.description,
45
+ short_description: form.short_description,
46
+ hero_image: form.hero_image,
47
+ banner_image: form.banner_image,
48
+ promoted: form.promoted,
49
+ scope: form.scope,
50
+ developer_group: form.developer_group,
51
+ local_area: form.local_area,
52
+ target: form.target,
53
+ participatory_scope: form.participatory_scope,
54
+ participatory_structure: form.participatory_structure,
55
+ meta_scope: form.meta_scope,
56
+ end_date: form.end_date,
57
+ participatory_process_group: form.participatory_process_group
58
+ )
54
59
 
55
- return process unless process.valid?
60
+ return process unless process.valid?
61
+ transaction do
56
62
  process.save!
57
63
 
58
64
  process.steps.create!(
@@ -36,7 +36,7 @@ module Decidim
36
36
 
37
37
  def create_participatory_process_group
38
38
  transaction do
39
- group = ParticipatoryProcessGroup.create(
39
+ ParticipatoryProcessGroup.create(
40
40
  name: form.name,
41
41
  description: form.description,
42
42
  hero_image: form.hero_image,
@@ -48,10 +48,10 @@ module Decidim
48
48
  def moderations
49
49
  @moderations ||= begin
50
50
  moderations = Decidim::Moderation.where(participatory_process: participatory_process)
51
- moderations = if params[:hidden]
52
- moderations.where.not(hidden_at: nil)
53
- else
54
- moderations.where(hidden_at: nil)
51
+ if params[:hidden]
52
+ moderations.where.not(hidden_at: nil)
53
+ else
54
+ moderations.where(hidden_at: nil)
55
55
  end
56
56
  end
57
57
  end
@@ -26,7 +26,7 @@ module Decidim
26
26
  CreateParticipatoryProcess.call(@form) do
27
27
  on(:ok) do |participatory_process|
28
28
  flash[:notice] = I18n.t("participatory_processes.create.success", scope: "decidim.admin")
29
- redirect_to participatory_process_path(participatory_process)
29
+ redirect_to edit_participatory_process_path(participatory_process)
30
30
  end
31
31
 
32
32
  on(:invalid) do
@@ -32,8 +32,12 @@ module Decidim
32
32
  validates :default_locale, presence: true
33
33
  validates :default_locale, inclusion: { in: :available_locales }
34
34
 
35
- validates :official_img_header, file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } }, file_content_type: { allow: ["image/jpeg", "image/png"] }
36
- validates :official_img_footer, file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } }, file_content_type: { allow: ["image/jpeg", "image/png"] }
35
+ validates :official_img_header,
36
+ file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } },
37
+ file_content_type: { allow: ["image/jpeg", "image/png"] }
38
+ validates :official_img_footer,
39
+ file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } },
40
+ file_content_type: { allow: ["image/jpeg", "image/png"] }
37
41
 
38
42
  private
39
43
 
@@ -38,6 +38,11 @@ module Decidim
38
38
  validates :hero_image, file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } }, file_content_type: { allow: ["image/jpeg", "image/png"] }
39
39
  validates :banner_image, file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } }, file_content_type: { allow: ["image/jpeg", "image/png"] }
40
40
 
41
+ def map_model(model)
42
+ self.scope_id = model.decidim_scope_id
43
+ self.participatory_process_group_id = model.decidim_participatory_process_group_id
44
+ end
45
+
41
46
  def scope
42
47
  @scope ||= current_organization.scopes.where(id: scope_id).first
43
48
  end
@@ -15,7 +15,7 @@ module Decidim
15
15
  current_organization.name
16
16
  end
17
17
 
18
- def admin_menu_item_to(name, url, options={})
18
+ def admin_menu_item_to(name, url, options = {})
19
19
  content_tag :li, class: options[:active_class] || active_link_to_class(url, active: options[:active], class_active: "is-active") do
20
20
  active_link_to url, active: options[:active], class_active: "is-active" do
21
21
  icon(options[:icon_name] || name) + I18n.t("menu.#{name}", scope: "decidim.admin")
@@ -6,7 +6,7 @@ module Decidim
6
6
  module AttributesDisplayHelper
7
7
  # Displays the given attributes list in a list. This is a simple
8
8
  # `show_for` alternative, so there's no way to modify how an attribute is
9
- # shown and there is no intention on adding this. It is intnded to be
9
+ # shown and there is no intention on adding this. It is intended to be
10
10
  # used inside a `dl` HTML tag, so you can customize how a specific
11
11
  # attribute has to be shown directly:
12
12
  #
@@ -25,7 +25,11 @@
25
25
  <% end %>
26
26
 
27
27
  <% if can? :update, feature %>
28
- <%= icon_link_to "key", edit_participatory_process_feature_permissions_path(feature_id: feature), t("actions.permissions", scope: "decidim.admin"), class: "action-icon--permissions" %>
28
+ <% if feature.manifest.actions.empty? %>
29
+ <%= icon "key", class: "action-icon action-icon--disabled" %>
30
+ <% else %>
31
+ <%= icon_link_to "key", edit_participatory_process_feature_permissions_path(feature_id: feature), t("actions.permissions", scope: "decidim.admin"), class: "action-icon--permissions" %>
32
+ <% end %>
29
33
  <% end %>
30
34
 
31
35
  <%= icon_link_to "circle-x", url_for(action: :destroy, id: feature, controller: "features"), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete %>
@@ -0,0 +1,11 @@
1
+ <% if report.details.blank? %>
2
+ <%= report.reason %>
3
+ <% else %>
4
+ <span
5
+ data-tooltip
6
+ aria-haspopup="true"
7
+ class="has-tip"
8
+ title="<%= report.details %>">
9
+ <%= report.reason %>
10
+ </span>
11
+ <% end %>
@@ -20,7 +20,9 @@
20
20
  <th><%= t("models.moderation.fields.reported_content", scope: "decidim.moderations") %></th>
21
21
  <th><%= t("models.moderation.fields.reports", scope: "decidim.moderations") %></th>
22
22
  <th><%= t("models.moderation.fields.report_count", scope: "decidim.moderations") %></th>
23
- <th><%= t("models.moderation.fields.hidden_at", scope: "decidim.moderations") %></th>
23
+ <% if params[:hidden] %>
24
+ <th><%= t("models.moderation.fields.hidden_at", scope: "decidim.moderations") %></th>
25
+ <% end %>
24
26
  <th class="actions"><%= t("actions.title", scope: "decidim.moderations") %></th>
25
27
  </tr>
26
28
  </thead>
@@ -28,42 +30,38 @@
28
30
  <% moderations.each do |moderation| %>
29
31
  <tr data-id="<%= moderation.id %>">
30
32
  <td>
31
- <%= moderation.reportable.class.name %>
33
+ <%= moderation.reportable.class.name.demodulize %>
32
34
  </td>
33
35
  <td>
34
36
  <%= moderation.reportable.reported_content %>
35
37
  </td>
36
38
  <td>
37
- <ul>
38
- <% moderation.reports.each do |report| %>
39
- <li>
40
- <% if report.details.blank? %>
41
- <%= report.reason %>
42
- <% else %>
43
- <span
44
- data-tooltip
45
- aria-haspopup="true"
46
- class="has-tip"
47
- title="<%= report.details %>">
48
- <%= report.reason %>
49
- </span>
50
- <% end %>
51
- </li>
52
- <% end %>
53
- </ul>
39
+ <% reports = moderation.reports.map { |report| render 'report', report: report } %>
40
+ <%= safe_join(reports, ',') %>
54
41
  </td>
55
42
  <td>
56
43
  <%= moderation.report_count %>
57
44
  </td>
58
- <td>
59
- <%= l moderation.hidden_at if moderation.hidden_at.present? %>
60
- </td>
45
+ <% if params[:hidden] %>
46
+ <td>
47
+ <%= l(moderation.hidden_at, format: :long) if moderation.hidden_at.present? %>
48
+ </td>
49
+ <% end %>
61
50
  <td class="actions">
51
+
62
52
  <% if can? :unreport, moderation %>
63
- <%= link_to t("actions.unreport", scope: "decidim.moderations"), decidim_admin.unreport_participatory_process_moderation_path(id: moderation), method: :put, class: "button" %>
53
+ <%= icon_link_to "action-undo",
54
+ decidim_admin.unreport_participatory_process_moderation_path(id: moderation),
55
+ t("actions.unreport", scope: "decidim.moderations"),
56
+ class: "action-icon--unreport",
57
+ method: :put %>
64
58
  <% end %>
65
59
  <% if !moderation.reportable.hidden? && can?(:hide, moderation) %>
66
- | <%= link_to t("actions.hide", scope: "decidim.moderations"), decidim_admin.hide_participatory_process_moderation_path(id: moderation), method: :put, class: "button" %>
60
+ <%= icon_link_to "eye",
61
+ decidim_admin.hide_participatory_process_moderation_path(id: moderation),
62
+ t("actions.hide", scope: "decidim.moderations"),
63
+ class: "action-icon--hide",
64
+ method: :put %>
67
65
  <% end %>
68
66
  </td>
69
67
  </tr>
@@ -20,6 +20,9 @@
20
20
  <li <% if is_active_link?(decidim_admin.manage_feature_path(participatory_process, feature)) %> class="is-active" <% end %>>
21
21
  <%= link_to decidim_admin.manage_feature_path(participatory_process, feature) do %>
22
22
  <%= translated_attribute feature.name %>
23
+ <% if feature.primary_stat.present? %>
24
+ <span class="component-counter <%= "component-counter--off" if feature.primary_stat.zero? %>"><%= feature.primary_stat %></span>
25
+ <% end %>
23
26
  <% end %>
24
27
  </li>
25
28
  <% end %>
@@ -97,6 +97,7 @@ ignore_unused:
97
97
  - activemodel.errors.messages.*
98
98
  - actions.confirm_destroy
99
99
  - time.formats.*
100
+ - date.formats.*
100
101
 
101
102
  # - '{devise,kaminari,will_paginate}.*'
102
103
  # - 'simple_form.{yes,no}'
@@ -104,6 +104,9 @@ ca:
104
104
  content: Contingut
105
105
  slug: Nom curt d'URL
106
106
  title: Títol
107
+ date:
108
+ formats:
109
+ datepicker: "%m/%d/%Y"
107
110
  decidim:
108
111
  admin:
109
112
  actions:
@@ -489,7 +492,7 @@ ca:
489
492
  hidden: Ocults
490
493
  hide: Amagar
491
494
  not_hidden: No ocult
492
- title: Moderacions
495
+ title: Accions
493
496
  unreport: Desfer denúncia
494
497
  admin:
495
498
  reportable:
@@ -503,7 +506,7 @@ ca:
503
506
  moderation:
504
507
  fields:
505
508
  hidden_at: Data d'ocultació
506
- report_count: Número de denúncies
509
+ report_count: Recompte
507
510
  reportable: Tipus
508
511
  reported_content: Contingut
509
512
  reports: Denúncies
@@ -521,4 +524,5 @@ ca:
521
524
  title: Usuaris
522
525
  time:
523
526
  formats:
524
- timepicker: "%d / %m / %Y %H:%M"
527
+ datepicker: "%m/%d/%Y"
528
+ timepicker: "%d/%m/%Y %H:%M"