decidim-meetings 0.19.0 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/decidim_meetings_manifest.js +1 -0
  3. data/app/assets/images/decidim/gamification/badges/attended_meetings.svg +1 -106
  4. data/app/assets/images/decidim/meetings/icon.svg +1 -5
  5. data/app/assets/javascripts/decidim/meetings/admin/destroy_meeting_alert.js.es6 +16 -0
  6. data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +7 -7
  7. data/app/cells/decidim/meetings/join_meeting_button/show.erb +2 -2
  8. data/app/cells/decidim/meetings/meeting_cell.rb +2 -1
  9. data/app/cells/decidim/meetings/meeting_list_item/show.erb +3 -3
  10. data/app/cells/decidim/meetings/meeting_list_item_cell.rb +1 -1
  11. data/app/cells/decidim/meetings/meeting_m/date.erb +1 -1
  12. data/app/cells/decidim/meetings/meeting_m/footer.erb +1 -1
  13. data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +1 -1
  14. data/app/cells/decidim/meetings/meeting_m_cell.rb +2 -2
  15. data/app/cells/decidim/meetings/meeting_s/show.erb +6 -6
  16. data/app/commands/decidim/meetings/admin/destroy_meeting.rb +6 -1
  17. data/app/commands/decidim/meetings/join_meeting.rb +11 -0
  18. data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +2 -0
  19. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +10 -0
  20. data/app/controllers/decidim/meetings/calendars_controller.rb +1 -0
  21. data/app/controllers/decidim/meetings/directory/meetings_controller.rb +1 -1
  22. data/app/controllers/decidim/meetings/registrations_controller.rb +1 -1
  23. data/app/forms/decidim/meetings/admin/close_meeting_form.rb +7 -1
  24. data/app/helpers/decidim/meetings/application_helper.rb +1 -0
  25. data/app/helpers/decidim/meetings/map_helper.rb +2 -1
  26. data/app/helpers/decidim/meetings/meetings_helper.rb +1 -1
  27. data/app/models/decidim/meetings/meeting.rb +18 -0
  28. data/app/presenters/decidim/meetings/meeting_presenter.rb +14 -3
  29. data/app/queries/decidim/meetings/filtered_meetings.rb +37 -0
  30. data/app/queries/decidim/meetings/metrics/meetings_metric_manage.rb +2 -8
  31. data/app/services/decidim/meetings/calendar/meeting_to_event.rb +3 -3
  32. data/app/types/decidim/meetings/agenda_item_type.rb +28 -0
  33. data/app/types/decidim/meetings/agenda_type.rb +25 -0
  34. data/app/types/decidim/meetings/meeting_type.rb +35 -8
  35. data/app/types/decidim/meetings/meetings_type.rb +1 -1
  36. data/app/types/decidim/meetings/minutes_type.rb +26 -0
  37. data/app/types/decidim/meetings/service_type.rb +13 -0
  38. data/app/views/decidim/meetings/_calendar_modal.html.erb +4 -4
  39. data/app/views/decidim/meetings/admin/invites/index.html.erb +2 -2
  40. data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +1 -6
  41. data/app/views/decidim/meetings/admin/meeting_closes/proposals_picker.html.erb +1 -0
  42. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +4 -1
  43. data/app/views/decidim/meetings/admin/meetings/index.html.erb +18 -1
  44. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +4 -0
  45. data/app/views/decidim/meetings/directory/meetings/index.html.erb +5 -3
  46. data/app/views/decidim/meetings/meetings/_filters.html.erb +12 -4
  47. data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +2 -2
  48. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
  49. data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +8 -8
  50. data/app/views/decidim/meetings/meetings/index.html.erb +1 -1
  51. data/app/views/decidim/meetings/meetings/show.html.erb +13 -4
  52. data/app/views/decidim/participatory_processes/participatory_process_groups/_meeting.html.erb +2 -2
  53. data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +1 -1
  54. data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +1 -3
  55. data/config/locales/ar.yml +4 -0
  56. data/config/locales/bg-BG.yml +29 -0
  57. data/config/locales/ca.yml +15 -1
  58. data/config/locales/cs.yml +18 -0
  59. data/config/locales/da-DK.yml +1 -0
  60. data/config/locales/de.yml +15 -0
  61. data/config/locales/el-GR.yml +1 -0
  62. data/config/locales/el.yml +454 -0
  63. data/config/locales/en.yml +16 -2
  64. data/config/locales/es-MX.yml +16 -2
  65. data/config/locales/es-PY.yml +16 -2
  66. data/config/locales/es.yml +16 -2
  67. data/config/locales/et-EE.yml +1 -0
  68. data/config/locales/eu.yml +2 -2
  69. data/config/locales/fi-plain.yml +14 -0
  70. data/config/locales/fi.yml +41 -27
  71. data/config/locales/fr-CA.yml +454 -0
  72. data/config/locales/fr.yml +6 -0
  73. data/config/locales/ga-IE.yml +1 -0
  74. data/config/locales/hr-HR.yml +1 -0
  75. data/config/locales/hu.yml +14 -2
  76. data/config/locales/is-IS.yml +234 -0
  77. data/config/locales/it.yml +16 -2
  78. data/config/locales/ja-JP.yml +455 -0
  79. data/config/locales/lt-LT.yml +1 -0
  80. data/config/locales/lv-LV.yml +452 -0
  81. data/config/locales/mt-MT.yml +1 -0
  82. data/config/locales/nl.yml +48 -42
  83. data/config/locales/no.yml +446 -0
  84. data/config/locales/pl.yml +20 -1
  85. data/config/locales/pt-BR.yml +1 -1
  86. data/config/locales/pt.yml +186 -171
  87. data/config/locales/ro-RO.yml +459 -0
  88. data/config/locales/ru.yml +52 -0
  89. data/config/locales/sk-SK.yml +463 -0
  90. data/config/locales/sk.yml +463 -0
  91. data/config/locales/sl.yml +10 -0
  92. data/config/locales/sr-CS.yml +13 -0
  93. data/config/locales/sv.yml +11 -5
  94. data/config/locales/uk.yml +0 -2
  95. data/db/migrate/20200320105922_index_foreign_keys_in_decidim_meetings_registrations.rb +7 -0
  96. data/lib/decidim/api/linked_resources_interface.rb +17 -0
  97. data/lib/decidim/api/services_interface.rb +19 -0
  98. data/lib/decidim/meetings.rb +1 -0
  99. data/lib/decidim/meetings/admin_engine.rb +3 -1
  100. data/lib/decidim/meetings/api.rb +8 -0
  101. data/lib/decidim/meetings/component.rb +6 -3
  102. data/lib/decidim/meetings/engine.rb +0 -4
  103. data/lib/decidim/meetings/seeds/city.jpeg +0 -0
  104. data/lib/decidim/meetings/version.rb +1 -1
  105. data/lib/tasks/decidim_meetings.rake +16 -0
  106. metadata +53 -18
  107. data/app/views/decidim/meetings/meeting_widgets/show.html.erb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0207852bd8f1cbfc88f230a458885bd8f0ee18b8eae8b05cf00c8d443e3dd89
4
- data.tar.gz: b7c0a7214101781fda90accbee4daeae9b101c1335135e1bd8556d93f239ef0f
3
+ metadata.gz: 3cf71231fe2e852a9101945044108cb1b3ae06a9ae7b952db3b0e895fed6e96e
4
+ data.tar.gz: b191dbff11d2168da9e8535992f2005a3fbb55021a4e36df40948adca6c9b946
5
5
  SHA512:
6
- metadata.gz: d529759af2ec9b392c4f794110d2826a46cda8de3a6433810b8cdb73699fa08b13b2517fa9c44639490e257f3a7fc964d6c1fc583d1defcc4dfbee9297740a5f
7
- data.tar.gz: 901ceb505e213473256ac444dce2b75d81a27f8e84867b3b3d806ba394963aa2c22496ed882d69da4802a0824590ee1ccd86f6a4f3c90c575e8b7bc5e3af0686
6
+ metadata.gz: dfa66b38d9f02d3f9e71be17d6920deee816100e572a73e80f2c42a722f1de28cf8041cacc434c533b0bde954eebc4da9594f979d220e0801d3d7ccccb06eb52
7
+ data.tar.gz: 6907691fd0d7f9c626acbbcb81bcb561967d82ba23967d50b6589950acaf4a749a8ba658fd432b9a25c6b928aab01615baa1471b80565fce8a8c1ffe554a528c
@@ -3,4 +3,5 @@
3
3
  //= link decidim/meetings/admin/registrations_invite_form.js
4
4
  //= link decidim/meetings/admin/meetings_form.js
5
5
  //= link decidim/meetings/admin/agendas.js
6
+ //= link decidim/meetings/admin/destroy_meeting_alert.js
6
7
  //= link_tree ../images/decidim
@@ -1,106 +1 @@
1
- <svg version="1.1" id="meetings-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
2
- y="0px" width="1080px" height="1080px" viewBox="0 0 1080 1080" enable-background="new 0 0 1080 1080" xml:space="preserve">
3
- <g id="meetings" class="stroke-primary">
4
- <g id="paper_down">
5
-
6
- <polyline class="fill-primary" id="_x32_5-pct_14_" fill="#31536E" fill-opacity="0.25" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
7
- 604.753,874.5 378.529,924.816 367.337,874.497 "/>
8
-
9
- <polyline class="fill-primary" id="_x32_5-pct_13_" fill="#31536E" fill-opacity="0.25" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
10
- 836.5,510.5 902.72,808.227 836.5,822.955 "/>
11
-
12
- <polyline class="fill-primary" id="_x32_5-pct_12_" fill="#31536E" fill-opacity="0.25" stroke="#31536E" stroke-width="16" stroke-linejoin="round" stroke-miterlimit="10" points="
13
- 531.249,205.5 757.471,155.184 766.35,197.105 "/>
14
-
15
- <polyline class="fill-primary" id="_x32_5-pct_11_" fill="#31536E" fill-opacity="0.25" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
16
- 299.5,569.499 233.28,271.774 299.5,257.045 "/>
17
- </g>
18
- <g id="paper">
19
-
20
- <polyline fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
21
- 836.5,294.5 836.5,874.5 299.5,874.5 299.5,824.5 "/>
22
-
23
- <polyline fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
24
- 299.5,661.5 299.5,205.5 755.5,205.5 "/>
25
- </g>
26
- <g id="pencil">
27
- <path fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
28
- M310.292,820.867l554.726-554.725c23.627-23.627,23.785-61.775,0.354-85.207l0,0c-23.433-23.431-61.58-23.273-85.206,0.354
29
- L225.439,736.015l-47.714,132.567L310.292,820.867z"/>
30
-
31
- <path class="fill-primary" id="_x35_0-pct_11_" fill="#31536E" fill-opacity="0.5" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
32
- M836.379,294.78l28.639-28.638c23.627-23.627,23.785-61.775,0.354-85.207l0,0c-23.433-23.431-61.58-23.273-85.206,0.354
33
- l-28.637,28.638"/>
34
-
35
- <line fill="#31536E" stroke="#31536E" stroke-width="16" stroke-miterlimit="10" x1="751.527" y1="209.927" x2="836.38" y2="294.78"/>
36
-
37
- <line fill="none" stroke="#31536E" stroke-width="16" stroke-miterlimit="10" x1="716.172" y1="245.283" x2="801.023" y2="330.136"/>
38
-
39
- <polyline fill="none" stroke="#31536E" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
40
- 227.476,733.785 270.5,734.958 270.5,771.5 309.745,771.5 310.195,820.982 "/>
41
-
42
- <polygon class="fill-primary" id="_x32_5-pct_15_" fill="#31536E" fill-opacity="0.25" stroke="#31536E" stroke-width="8" stroke-miterlimit="10" points="
43
- 310.292,771.37 776.275,305.387 738.092,267.203 270.694,734.601 270.5,771.5 "/>
44
- <polygon class="fill-primary" fill="#31536E" points="177.629,868.678 200.69,804.604 241.703,845.616 "/>
45
- </g>
46
- <g id="stars_8" class="stars">
47
-
48
- <path fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
49
- M155.26,565.735c0-14.688-18.667-35.354-35.355-35.354c15.355,0,35.355-20.333,35.355-35.355
50
- c0,15.022,16.666,35.355,35.355,35.355C171.593,530.381,155.26,551.048,155.26,565.735z"/>
51
- <g>
52
-
53
- <circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="904.382" cy="162.858" r="13.5"/>
54
-
55
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="887.883" y1="146.123" x2="866.67" y2="124.91"/>
56
-
57
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="921.824" y1="180.064" x2="943.037" y2="201.277"/>
58
-
59
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="921.117" y1="146.83" x2="942.33" y2="125.617"/>
60
-
61
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="887.883" y1="180.064" x2="866.67" y2="201.277"/>
62
- </g>
63
- <g>
64
-
65
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="266.689" y1="898.798" x2="240.528" y2="924.962"/>
66
-
67
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="231.335" y1="934.153" x2="205.173" y2="960.317"/>
68
-
69
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="265.982" y1="960.317" x2="239.82" y2="934.153"/>
70
-
71
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="230.628" y1="924.962" x2="204.466" y2="898.798"/>
72
- </g>
73
-
74
- <path fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
75
- M922.592,965.056c0,0-21.565,4.035-26.516,8.983c-4.948,4.947-8.982,26.515-8.982,26.515s-4.035-21.564-8.983-26.515
76
- c-4.947-4.948-26.515-8.983-26.515-8.983s22.077-4.546,26.515-8.982c4.438-4.438,8.983-26.516,8.983-26.516
77
- s4.034,21.565,8.982,26.516C901.025,961.021,922.592,965.056,922.592,965.056z"/>
78
- <g>
79
-
80
- <circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="896.863" cy="447.201" r="16.604"/>
81
-
82
- <circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="860.962" cy="447.201" r="6.432"/>
83
-
84
- <circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="896.863" cy="483.103" r="6.433"/>
85
-
86
- <circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="932.765" cy="447.201" r="6.432"/>
87
-
88
- <circle fill="#FFD92B" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="896.863" cy="411.3" r="6.432"/>
89
- </g>
90
- <g>
91
-
92
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="298.746" y1="98.42" x2="353.649" y2="153.325"/>
93
-
94
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="353.649" y1="98.42" x2="298.746" y2="153.325"/>
95
-
96
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="308" y1="125.447" x2="281" y2="125.447"/>
97
-
98
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="346" y1="125.447" x2="373" y2="125.447"/>
99
-
100
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="327" y1="144.447" x2="327" y2="171.447"/>
101
-
102
- <line fill="none" stroke="#31536E" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="327" y1="106.447" x2="327" y2="79.447"/>
103
- </g>
104
- </g>
105
- </g>
106
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="meetings-svg" width="1080" height="1080" x="0" y="0" enable-background="new 0 0 1080 1080" version="1.1" viewBox="0 0 1080 1080" xml:space="preserve"><g id="meetings" class="stroke-primary"><g id="paper_down"><polyline id="_x32_5-pct_14_" fill="#31536E" fill-opacity=".25" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" points="604.753 874.5 378.529 924.816 367.337 874.497" class="fill-primary"/><polyline id="_x32_5-pct_13_" fill="#31536E" fill-opacity=".25" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" points="836.5 510.5 902.72 808.227 836.5 822.955" class="fill-primary"/><polyline id="_x32_5-pct_12_" fill="#31536E" fill-opacity=".25" stroke="#31536E" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" points="531.249 205.5 757.471 155.184 766.35 197.105" class="fill-primary"/><polyline id="_x32_5-pct_11_" fill="#31536E" fill-opacity=".25" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" points="299.5 569.499 233.28 271.774 299.5 257.045" class="fill-primary"/></g><g id="paper"><polyline fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" points="836.5 294.5 836.5 874.5 299.5 874.5 299.5 824.5"/><polyline fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" points="299.5 661.5 299.5 205.5 755.5 205.5"/></g><g id="pencil"><path fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" d="M310.292,820.867l554.726-554.725c23.627-23.627,23.785-61.775,0.354-85.207l0,0c-23.433-23.431-61.58-23.273-85.206,0.354 L225.439,736.015l-47.714,132.567L310.292,820.867z"/><path id="_x35_0-pct_11_" fill="#31536E" fill-opacity=".5" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" d="M836.379,294.78l28.639-28.638c23.627-23.627,23.785-61.775,0.354-85.207l0,0c-23.433-23.431-61.58-23.273-85.206,0.354 l-28.637,28.638" class="fill-primary"/><line x1="751.527" x2="836.38" y1="209.927" y2="294.78" fill="#31536E" stroke="#31536E" stroke-miterlimit="10" stroke-width="16"/><line x1="716.172" x2="801.023" y1="245.283" y2="330.136" fill="none" stroke="#31536E" stroke-miterlimit="10" stroke-width="16"/><polyline fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16" points="227.476 733.785 270.5 734.958 270.5 771.5 309.745 771.5 310.195 820.982"/><polygon id="_x32_5-pct_15_" fill="#31536E" fill-opacity=".25" stroke="#31536E" stroke-miterlimit="10" stroke-width="8" points="310.292 771.37 776.275 305.387 738.092 267.203 270.694 734.601 270.5 771.5" class="fill-primary"/><polygon fill="#31536E" points="177.629 868.678 200.69 804.604 241.703 845.616" class="fill-primary"/></g><g id="stars_8" class="stars"><path fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4" d="M155.26,565.735c0-14.688-18.667-35.354-35.355-35.354c15.355,0,35.355-20.333,35.355-35.355 c0,15.022,16.666,35.355,35.355,35.355C171.593,530.381,155.26,551.048,155.26,565.735z"/><g><circle cx="904.382" cy="162.858" r="13.5" fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="887.883" x2="866.67" y1="146.123" y2="124.91" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="921.824" x2="943.037" y1="180.064" y2="201.277" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="921.117" x2="942.33" y1="146.83" y2="125.617" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="887.883" x2="866.67" y1="180.064" y2="201.277" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/></g><g><line x1="266.689" x2="240.528" y1="898.798" y2="924.962" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="231.335" x2="205.173" y1="934.153" y2="960.317" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="265.982" x2="239.82" y1="960.317" y2="934.153" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="230.628" x2="204.466" y1="924.962" y2="898.798" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/></g><path fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4" d="M922.592,965.056c0,0-21.565,4.035-26.516,8.983c-4.948,4.947-8.982,26.515-8.982,26.515s-4.035-21.564-8.983-26.515 c-4.947-4.948-26.515-8.983-26.515-8.983s22.077-4.546,26.515-8.982c4.438-4.438,8.983-26.516,8.983-26.516 s4.034,21.565,8.982,26.516C901.025,961.021,922.592,965.056,922.592,965.056z"/><g><circle cx="896.863" cy="447.201" r="16.604" fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><circle cx="860.962" cy="447.201" r="6.432" fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><circle cx="896.863" cy="483.103" r="6.433" fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><circle cx="932.765" cy="447.201" r="6.432" fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><circle cx="896.863" cy="411.3" r="6.432" fill="#FFD92B" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/></g><g><line x1="298.746" x2="353.649" y1="98.42" y2="153.325" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="353.649" x2="298.746" y1="98.42" y2="153.325" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="308" x2="281" y1="125.447" y2="125.447" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="346" x2="373" y1="125.447" y2="125.447" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="327" x2="327" y1="144.447" y2="171.447" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/><line x1="327" x2="327" y1="106.447" y2="79.447" fill="none" stroke="#31536E" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="4"/></g></g></g></svg>
@@ -1,5 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36.02 36.02">
2
- <path d="M693.07,543.84a18,18,0,1,1,18-18A18,18,0,0,1,693.07,543.84Zm0-34a16,16,0,1,0,16,16A16,16,0,0,0,693.07,509.83Z" transform="translate(-675.07 -507.83)"/>
3
- <path d="M693.07,526.93a4.1,4.1,0,1,1,4.1-4.1A4.1,4.1,0,0,1,693.07,526.93Zm0-6.19a2.1,2.1,0,1,0,2.1,2.1A2.1,2.1,0,0,0,693.07,520.74Z" transform="translate(-675.07 -507.83)"/>
4
- <path d="M693.07,536.65a1,1,0,0,1-.67-0.26c-0.29-.26-7.11-6.5-7.11-14a7.78,7.78,0,0,1,15.57,0c0,7.46-6.82,13.71-7.11,14A1,1,0,0,1,693.07,536.65Zm0-20a5.79,5.79,0,0,0-5.78,5.78c0,5.29,4.13,10.11,5.78,11.82,1.65-1.72,5.78-6.54,5.78-11.82A5.79,5.79,0,0,0,693.07,516.64Z" transform="translate(-675.07 -507.83)"/>
5
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="2000" height="2000" viewBox="0 0 36.02 36.02"><path d="M693.07,543.84a18,18,0,1,1,18-18A18,18,0,0,1,693.07,543.84Zm0-34a16,16,0,1,0,16,16A16,16,0,0,0,693.07,509.83Z" transform="translate(-675.07 -507.83)"/><path d="M693.07,526.93a4.1,4.1,0,1,1,4.1-4.1A4.1,4.1,0,0,1,693.07,526.93Zm0-6.19a2.1,2.1,0,1,0,2.1,2.1A2.1,2.1,0,0,0,693.07,520.74Z" transform="translate(-675.07 -507.83)"/><path d="M693.07,536.65a1,1,0,0,1-.67-0.26c-0.29-.26-7.11-6.5-7.11-14a7.78,7.78,0,0,1,15.57,0c0,7.46-6.82,13.71-7.11,14A1,1,0,0,1,693.07,536.65Zm0-20a5.79,5.79,0,0,0-5.78,5.78c0,5.29,4.13,10.11,5.78,11.82,1.65-1.72,5.78-6.54,5.78-11.82A5.79,5.79,0,0,0,693.07,516.64Z" transform="translate(-675.07 -507.83)"/></svg>
@@ -0,0 +1,16 @@
1
+ const removeNewlineAdjacentSpaces = (text) => {
2
+ return text.replace(/\n\s/g, "\n");
3
+ }
4
+
5
+ $(() => {
6
+ const $confirmButton = $(".destroy-meeting-alert");
7
+
8
+ if ($confirmButton.length > 0) {
9
+ $confirmButton.on("click", () => {
10
+ let alertText = `${$confirmButton.data("invalid-destroy-message")} \n\n`;
11
+ alertText += removeNewlineAdjacentSpaces($confirmButton.data("proposal-titles"));
12
+
13
+ alert(alertText); // eslint-disable-line no-alert
14
+ });
15
+ }
16
+ });
@@ -1,24 +1,24 @@
1
1
  <% if upcoming_meetings.any? %>
2
2
  <div class="section row collapse upcoming_meetings">
3
- <h4 class="section-heading">
3
+ <h3 class="section-heading">
4
4
  <%= translated_attribute(model.name) %> - <%= t("decidim.participatory_spaces.highlighted_meetings.upcoming_meetings") %> <a href="<%= main_component_path(model) %>" class="text-small"><%= t("decidim.participatory_spaces.highlighted_meetings.see_all", count: meetings_count) %></a>
5
- </h4>
5
+ </h3>
6
6
  <div class="card card--list">
7
- <% upcoming_meetings.each do |meeting| %>
7
+ <% upcoming_meetings.includes(:component).each do |meeting| %>
8
8
  <%= card_for meeting, size: :list_item %>
9
9
  <% end %>
10
10
  </div>
11
11
  <%= link_to(
12
12
  t("decidim.participatory_spaces.highlighted_meetings.see_all", count: meetings_count),
13
13
  main_component_path(model),
14
- class: "button button--sc light secondary button--right"
14
+ class: "button button--sc hollow button--right"
15
15
  ) %>
16
16
  </div>
17
17
  <% elsif past_meetings.any? %>
18
18
  <div class="section row collapse past_meetings">
19
- <h4 class="section-heading">
19
+ <h3 class="section-heading">
20
20
  <%= translated_attribute(model.name) %> - <%= t("decidim.participatory_spaces.highlighted_meetings.past_meetings") %> <a href="<%= main_component_path(model) %>" class="text-small"><%= t("decidim.participatory_spaces.highlighted_meetings.see_all", count: meetings_count) %></a>
21
- </h4>
21
+ </h3>
22
22
  <div class="card card--list">
23
23
  <% past_meetings.each do |meeting| %>
24
24
  <%= card_for meeting, size: :list_item %>
@@ -27,7 +27,7 @@
27
27
  <%= link_to(
28
28
  t("decidim.participatory_spaces.highlighted_meetings.see_all", count: meetings_count),
29
29
  main_component_path(model),
30
- class: "button button--sc light secondary button--right"
30
+ class: "button button--sc hollow button--right"
31
31
  ) %>
32
32
  </div>
33
33
  <% end %>
@@ -5,7 +5,7 @@
5
5
  meeting_registration_path(model),
6
6
  resource: model,
7
7
  method: :delete,
8
- class: "#{button_classes} secondary light",
8
+ class: "#{button_classes} active",
9
9
  data: { disable: true }
10
10
  ) do %>
11
11
  <%= icon("check", class: "icon--small") %>
@@ -25,7 +25,7 @@
25
25
  <%= action_authorized_button_to(
26
26
  :join,
27
27
  i18n_join_text,
28
- "",
28
+ "#",
29
29
  class: button_classes,
30
30
  disabled: !model.has_available_slots?,
31
31
  data: { open: current_user.present? ? "meeting-registration-confirm-#{model.id}" : "loginModal" }
@@ -6,6 +6,7 @@ module Decidim
6
6
  # the default size is the Medium Card (:m)
7
7
  # also available the List Item Card (:list_item)
8
8
  class MeetingCell < Decidim::ViewModel
9
+ include Decidim::SanitizeHelper
9
10
  include MeetingCellsHelper
10
11
  include Cell::ViewModel::Partial
11
12
 
@@ -27,7 +28,7 @@ module Decidim
27
28
  end
28
29
 
29
30
  def title
30
- present(model).title
31
+ decidim_html_escape(present(model).title)
31
32
  end
32
33
 
33
34
  def resource_icon
@@ -2,10 +2,10 @@
2
2
  <div class="card--list__text">
3
3
  <div>
4
4
  <%= link_to resource_path, class: "card__link" do %>
5
- <h6 class="card--list__heading heading6">
5
+ <h4 class="card--list__heading heading6">
6
6
  <%= title %>
7
- </h6>
8
- <span class="text-medium">
7
+ </h4>
8
+ <span class="text-small">
9
9
  <%= resource_date_time %>
10
10
  </span>
11
11
  <% end %>
@@ -18,7 +18,7 @@ module Decidim
18
18
  end
19
19
 
20
20
  def title
21
- present(model).title
21
+ decidim_html_escape(present(model).title)
22
22
  end
23
23
 
24
24
  def resource_date_time
@@ -1,7 +1,7 @@
1
1
  <div class="card__icondata">
2
2
  <ul class="card-data">
3
3
  <li class="card-data__item">
4
- <%= icon "datetime", class: "icon--big" %>
4
+ <%= icon "datetime", class: "icon--big", role: "img", aria_label: t("decidim.meetings.meetings.show.date") %>
5
5
  </li>
6
6
  <%= meeting_date %>
7
7
  </ul>
@@ -3,7 +3,7 @@
3
3
  <% if can_join? && show_footer_actions? %>
4
4
  <%= cell "decidim/meetings/join_meeting_button", model %>
5
5
  <% else %>
6
- <%= link_to t("view", scope: "decidim.meetings.meetings.show"), resource_path, class: "card__button button secondary button--sc small light" %>
6
+ <%= link_to t("view", scope: "decidim.meetings.meetings.show"), resource_path, class: "card__button button--sc light button small" %>
7
7
  <% end %>
8
8
  </div>
9
9
  </div>
@@ -6,7 +6,7 @@
6
6
  </strong>
7
7
  <%= formatted_start_time %>
8
8
  </div>
9
- <%= icon "arrow-thin-right", class: "icon--big muted" %>
9
+ <%= icon "arrow-thin-right", class: "icon--big muted", role: "img", "aria-hidden": true %>
10
10
  <div>
11
11
  <strong>
12
12
  <%= l end_date, format: :decidim_with_month_name %>
@@ -12,11 +12,11 @@ module Decidim
12
12
  end
13
13
 
14
14
  def address
15
- render
15
+ decidim_html_escape(render)
16
16
  end
17
17
 
18
18
  def title
19
- present(model).title
19
+ decidim_html_escape(present(model).title)
20
20
  end
21
21
 
22
22
  private
@@ -1,16 +1,16 @@
1
- <article class="card">
1
+ <div class="card">
2
2
  <div class="p-s">
3
3
  <div class="card__header">
4
4
  <%= link_to meeting_path, class: "card__link" do %>
5
- <h5 class="card__title">
5
+ <span class="card__title">
6
6
  <%= title %>
7
- </h5>
7
+ </span>
8
8
  <% end %>
9
9
  </div>
10
10
  <div class="card__text">
11
11
  <div class="row collapse text-medium">
12
- <time datetime="<%= model.start_time.utc %>" class="column medium-4 icon--container">
13
- <%= icon "datetime", class: "primary" %>
12
+ <time datetime="<%= l(model.start_time, format: :long_dashed) %>" class="column medium-4 icon--container">
13
+ <%= icon "datetime", class: "primary", role: "img", "aria-hidden": true %>
14
14
  &nbsp;
15
15
  <%= l start_date, format: :decidim_with_month_name %>
16
16
  &nbsp;-&nbsp;
@@ -24,4 +24,4 @@
24
24
  </div>
25
25
  </div>
26
26
  </div>
27
- </article>
27
+ </div>
@@ -19,8 +19,9 @@ module Decidim
19
19
  #
20
20
  # Broadcasts :ok if successful, :invalid otherwise.
21
21
  def call
22
- destroy_meeting
22
+ return broadcast(:invalid, proposals.size) if proposals.any?
23
23
 
24
+ destroy_meeting
24
25
  broadcast(:ok)
25
26
  end
26
27
 
@@ -37,6 +38,10 @@ module Decidim
37
38
  meeting.destroy!
38
39
  end
39
40
  end
41
+
42
+ def proposals
43
+ @proposals ||= meeting.authored_proposals.load
44
+ end
40
45
  end
41
46
  end
42
47
  end
@@ -33,6 +33,7 @@ module Decidim
33
33
  notify_admin_over_percentage
34
34
  increment_score
35
35
  end
36
+ follow_meeting
36
37
  broadcast(:ok)
37
38
  end
38
39
 
@@ -106,6 +107,16 @@ module Decidim
106
107
  Decidim::Gamification.increment_score(user, :attended_meetings)
107
108
  end
108
109
 
110
+ def follow_meeting
111
+ Decidim::CreateFollow.call(follow_form, user)
112
+ end
113
+
114
+ def follow_form
115
+ Decidim::FollowForm
116
+ .from_params(followable_gid: meeting.to_signed_global_id.to_s)
117
+ .with_context(current_user: user)
118
+ end
119
+
109
120
  def occupied_slots_over?(percentage)
110
121
  @meeting.remaining_slots == (@meeting.available_slots * (1 - percentage)).round
111
122
  end
@@ -5,6 +5,8 @@ module Decidim
5
5
  module Admin
6
6
  # This controller allows an admin to manage meetings from a Participatory Process
7
7
  class MeetingClosesController < Admin::ApplicationController
8
+ include Decidim::Proposals::Admin::Picker
9
+
8
10
  helper_method :meeting
9
11
 
10
12
  def edit
@@ -64,6 +64,16 @@ module Decidim
64
64
 
65
65
  redirect_to meetings_path
66
66
  end
67
+
68
+ on(:invalid) do |proposals_count|
69
+ flash.now[:alert] = I18n.t(
70
+ "meetings.destroy.invalid.proposals_count",
71
+ count: proposals_count,
72
+ scope: "decidim.meetings.admin"
73
+ )
74
+
75
+ render action: "index"
76
+ end
67
77
  end
68
78
  end
69
79
 
@@ -8,6 +8,7 @@ module Decidim
8
8
  layout false
9
9
  helper_method :meetings
10
10
  before_action :set_default_request_format
11
+ skip_around_action :use_organization_time_zone
11
12
 
12
13
  def show
13
14
  render plain: CalendarRenderer.for(current_component), content_type: "type/calendar"
@@ -20,7 +20,7 @@ module Decidim
20
20
  def index
21
21
  @meeting_spaces = search.results.map do |meeting|
22
22
  klass = meeting.component.participatory_space.class
23
- [klass.model_name.name.underscore, klass.model_name.human.pluralize]
23
+ [klass.model_name.name.underscore, klass.model_name.human(count: 2)]
24
24
  end.uniq
25
25
  @meeting_spaces = @meeting_spaces.sort_by do |_param, name|
26
26
  name
@@ -9,7 +9,7 @@ module Decidim
9
9
  def answer
10
10
  enforce_permission_to :join, :meeting, meeting: meeting
11
11
 
12
- @form = form(Decidim::Forms::QuestionnaireForm).from_params(params)
12
+ @form = form(Decidim::Forms::QuestionnaireForm).from_params(params, session_token: session_token)
13
13
 
14
14
  JoinMeeting.call(meeting, current_user, @form) do
15
15
  on(:ok) do
@@ -25,7 +25,13 @@ module Decidim
25
25
  # Returns nothing.
26
26
  def map_model(model)
27
27
  self.proposal_ids = model.linked_resources(:proposals, "proposals_from_meeting").pluck(:id)
28
- self.proposals = model.sibling_scope(:proposals)
28
+ end
29
+
30
+ def proposals
31
+ @proposals ||= Decidim.find_resource_manifest(:proposals)
32
+ .try(:resource_scope, current_component)
33
+ &.where(id: proposal_ids)
34
+ &.order(title: :asc)
29
35
  end
30
36
  end
31
37
  end
@@ -10,6 +10,7 @@ module Decidim
10
10
  include Decidim::Meetings::MapHelper
11
11
  include Decidim::Meetings::MeetingsHelper
12
12
  include Decidim::Comments::CommentsHelper
13
+ include Decidim::SanitizeHelper
13
14
  end
14
15
  end
15
16
  end