decidim-challenges 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-AGPLv3.txt +661 -0
  3. data/README.md +49 -0
  4. data/Rakefile +9 -0
  5. data/app/cells/decidim/challenges/challenge_cell.rb +21 -0
  6. data/app/cells/decidim/challenges/challenge_g/show.erb +47 -0
  7. data/app/cells/decidim/challenges/challenge_g_cell.rb +69 -0
  8. data/app/cells/decidim/problems/problem_cell.rb +21 -0
  9. data/app/cells/decidim/problems/problem_g/show.erb +35 -0
  10. data/app/cells/decidim/problems/problem_g_cell.rb +61 -0
  11. data/app/cells/decidim/solutions/solution_cell.rb +21 -0
  12. data/app/cells/decidim/solutions/solution_g/show.erb +30 -0
  13. data/app/cells/decidim/solutions/solution_g_cell.rb +84 -0
  14. data/app/commands/decidim/challenges/admin/create_challenge.rb +67 -0
  15. data/app/commands/decidim/challenges/admin/destroy_challenge.rb +49 -0
  16. data/app/commands/decidim/challenges/admin/export_challenge_surveys.rb +45 -0
  17. data/app/commands/decidim/challenges/admin/publish_challenge.rb +40 -0
  18. data/app/commands/decidim/challenges/admin/unpublish_challenge.rb +40 -0
  19. data/app/commands/decidim/challenges/admin/update_challenge.rb +72 -0
  20. data/app/commands/decidim/challenges/admin/update_surveys.rb +43 -0
  21. data/app/commands/decidim/challenges/survey_challenge.rb +67 -0
  22. data/app/commands/decidim/command_utils.rb +20 -0
  23. data/app/commands/decidim/problems/admin/create_problem.rb +66 -0
  24. data/app/commands/decidim/problems/admin/destroy_problem.rb +49 -0
  25. data/app/commands/decidim/problems/admin/publish_problem.rb +40 -0
  26. data/app/commands/decidim/problems/admin/unpublish_problem.rb +40 -0
  27. data/app/commands/decidim/problems/admin/update_problem.rb +69 -0
  28. data/app/commands/decidim/solutions/admin/create_solution.rb +65 -0
  29. data/app/commands/decidim/solutions/admin/destroy_solution.rb +43 -0
  30. data/app/commands/decidim/solutions/admin/publish_solution.rb +40 -0
  31. data/app/commands/decidim/solutions/admin/unpublish_solution.rb +40 -0
  32. data/app/commands/decidim/solutions/admin/update_solution.rb +67 -0
  33. data/app/commands/decidim/solutions/create_solution.rb +67 -0
  34. data/app/controllers/concerns/decidim/challenges/admin/filterable.rb +27 -0
  35. data/app/controllers/concerns/decidim/challenges/orderable_challenges.rb +37 -0
  36. data/app/controllers/concerns/decidim/problems/admin/filterable.rb +27 -0
  37. data/app/controllers/concerns/decidim/problems/orderable_problems.rb +37 -0
  38. data/app/controllers/concerns/decidim/solutions/admin/filterable.rb +27 -0
  39. data/app/controllers/concerns/decidim/solutions/orderable_solutions.rb +37 -0
  40. data/app/controllers/concerns/decidim/with_default_filters.rb +23 -0
  41. data/app/controllers/concerns/decidim/with_sdgs.rb +19 -0
  42. data/app/controllers/decidim/challenges/admin/application_controller.rb +15 -0
  43. data/app/controllers/decidim/challenges/admin/challenge_publications_controller.rb +53 -0
  44. data/app/controllers/decidim/challenges/admin/challenges_controller.rb +108 -0
  45. data/app/controllers/decidim/challenges/admin/survey_form_controller.rb +43 -0
  46. data/app/controllers/decidim/challenges/admin/surveys_controller.rb +104 -0
  47. data/app/controllers/decidim/challenges/application_controller.rb +13 -0
  48. data/app/controllers/decidim/challenges/challenges_controller.rb +70 -0
  49. data/app/controllers/decidim/challenges/surveys_controller.rb +61 -0
  50. data/app/controllers/decidim/problems/admin/application_controller.rb +15 -0
  51. data/app/controllers/decidim/problems/admin/problem_publications_controller.rb +53 -0
  52. data/app/controllers/decidim/problems/admin/problems_controller.rb +102 -0
  53. data/app/controllers/decidim/problems/application_controller.rb +13 -0
  54. data/app/controllers/decidim/problems/problems_controller.rb +62 -0
  55. data/app/controllers/decidim/sdgs/admin/application_controller.rb +15 -0
  56. data/app/controllers/decidim/sdgs/admin/sdgs_controller.rb +18 -0
  57. data/app/controllers/decidim/sdgs/application_controller.rb +13 -0
  58. data/app/controllers/decidim/sdgs/sdgs_controller.rb +24 -0
  59. data/app/controllers/decidim/solutions/admin/application_controller.rb +15 -0
  60. data/app/controllers/decidim/solutions/admin/solution_publications_controller.rb +53 -0
  61. data/app/controllers/decidim/solutions/admin/solutions_controller.rb +106 -0
  62. data/app/controllers/decidim/solutions/application_controller.rb +13 -0
  63. data/app/controllers/decidim/solutions/solutions_controller.rb +115 -0
  64. data/app/forms/decidim/challenges/admin/challenge_surveys_form.rb +35 -0
  65. data/app/forms/decidim/challenges/admin/challenges_form.rb +78 -0
  66. data/app/forms/decidim/problems/admin/problems_form.rb +90 -0
  67. data/app/forms/decidim/solutions/admin/solutions_form.rb +71 -0
  68. data/app/forms/decidim/solutions/solutions_form.rb +50 -0
  69. data/app/helpers/decidim/challenges/application_helper.rb +25 -0
  70. data/app/helpers/decidim/challenges/challenge_cells_helper.rb +57 -0
  71. data/app/helpers/decidim/challenges/challenges_helper.rb +39 -0
  72. data/app/helpers/decidim/problems/application_helper.rb +10 -0
  73. data/app/helpers/decidim/problems/problem_cells_helper.rb +23 -0
  74. data/app/helpers/decidim/problems/problems_helper.rb +24 -0
  75. data/app/helpers/decidim/sdgs/sdgs_helper.rb +28 -0
  76. data/app/helpers/decidim/show_filters_helper.rb +13 -0
  77. data/app/helpers/decidim/solutions/application_helper.rb +27 -0
  78. data/app/helpers/decidim/solutions/solution_cells_helper.rb +56 -0
  79. data/app/helpers/decidim/solutions/solutions_helper.rb +21 -0
  80. data/app/models/decidim/application_record.rb +8 -0
  81. data/app/models/decidim/challenges/challenge.rb +82 -0
  82. data/app/models/decidim/challenges/survey.rb +19 -0
  83. data/app/models/decidim/problems/problem.rb +118 -0
  84. data/app/models/decidim/sdgs/sdg.rb +47 -0
  85. data/app/models/decidim/solutions/application_record.rb +10 -0
  86. data/app/models/decidim/solutions/solution.rb +69 -0
  87. data/app/packs/entrypoints/decidim_challenges.js +4 -0
  88. data/app/packs/entrypoints/decidim_challenges.scss +1 -0
  89. data/app/packs/entrypoints/decidim_problems.js +1 -0
  90. data/app/packs/entrypoints/decidim_problems.scss +1 -0
  91. data/app/packs/entrypoints/decidim_sdgs.js +6 -0
  92. data/app/packs/entrypoints/decidim_sdgs.scss +3 -0
  93. data/app/packs/entrypoints/decidim_shared.js +1 -0
  94. data/app/packs/entrypoints/decidim_shared.scss +1 -0
  95. data/app/packs/entrypoints/decidim_solutions.js +4 -0
  96. data/app/packs/entrypoints/decidim_solutions.scss +1 -0
  97. data/app/packs/fonts/Oswald-Medium.ttf +0 -0
  98. data/app/packs/images/decidim/challenges/decidim_challenges_icon.svg +1 -0
  99. data/app/packs/images/decidim/sdgs/ods-01.svg +11 -0
  100. data/app/packs/images/decidim/sdgs/ods-02.svg +11 -0
  101. data/app/packs/images/decidim/sdgs/ods-03.svg +11 -0
  102. data/app/packs/images/decidim/sdgs/ods-04.svg +12 -0
  103. data/app/packs/images/decidim/sdgs/ods-05.svg +12 -0
  104. data/app/packs/images/decidim/sdgs/ods-06.svg +20 -0
  105. data/app/packs/images/decidim/sdgs/ods-07.svg +18 -0
  106. data/app/packs/images/decidim/sdgs/ods-08.svg +13 -0
  107. data/app/packs/images/decidim/sdgs/ods-09.svg +25 -0
  108. data/app/packs/images/decidim/sdgs/ods-10.svg +13 -0
  109. data/app/packs/images/decidim/sdgs/ods-11.svg +41 -0
  110. data/app/packs/images/decidim/sdgs/ods-12.svg +11 -0
  111. data/app/packs/images/decidim/sdgs/ods-13.svg +57 -0
  112. data/app/packs/images/decidim/sdgs/ods-14.svg +14 -0
  113. data/app/packs/images/decidim/sdgs/ods-15.svg +11 -0
  114. data/app/packs/images/decidim/sdgs/ods-16.svg +14 -0
  115. data/app/packs/images/decidim/sdgs/ods-17.svg +39 -0
  116. data/app/packs/images/decidim/sdgs/sdg-wheel.png +0 -0
  117. data/app/packs/images/decidim/sdgs/un_emblem_square.png +0 -0
  118. data/app/packs/src/decidim/challenges/add_challenge.js +3 -0
  119. data/app/packs/src/decidim/challenges/admin/challenges_form.js +3 -0
  120. data/app/packs/src/decidim/sdgs/filter.js +75 -0
  121. data/app/packs/stylesheets/decidim/challenges/challenges.scss +3 -0
  122. data/app/packs/stylesheets/decidim/problems/problems.scss +3 -0
  123. data/app/packs/stylesheets/decidim/sdgs/ods.scss +185 -0
  124. data/app/packs/stylesheets/decidim/sdgs/sdgs_filter/button.scss +27 -0
  125. data/app/packs/stylesheets/decidim/sdgs/sdgs_filter/modal.scss +60 -0
  126. data/app/packs/stylesheets/decidim/shared/_cards.scss +52 -0
  127. data/app/packs/stylesheets/decidim/shared/base.scss +9 -0
  128. data/app/packs/stylesheets/decidim/solutions/solutions.scss +3 -0
  129. data/app/permissions/decidim/challenges/admin/permissions.rb +88 -0
  130. data/app/permissions/decidim/challenges/permissions.rb +27 -0
  131. data/app/permissions/decidim/problems/admin/permissions.rb +52 -0
  132. data/app/permissions/decidim/problems/permissions.rb +16 -0
  133. data/app/permissions/decidim/solutions/admin/permissions.rb +58 -0
  134. data/app/permissions/decidim/solutions/permissions.rb +17 -0
  135. data/app/presenters/decidim/challenges/challenge_presenter.rb +134 -0
  136. data/app/presenters/decidim/problems/problem_presenter.rb +108 -0
  137. data/app/presenters/decidim/solutions/solution_presenter.rb +198 -0
  138. data/app/serializers/decidim/challenges/data_serializer.rb +46 -0
  139. data/app/serializers/decidim/challenges/survey_serializer.rb +37 -0
  140. data/app/types/decidim/challenges/challenge_type.rb +28 -0
  141. data/app/types/decidim/challenges/challenges_type.rb +32 -0
  142. data/app/types/decidim/problems/problem_type.rb +29 -0
  143. data/app/types/decidim/problems/problems_type.rb +32 -0
  144. data/app/types/decidim/solutions/solution_type.rb +25 -0
  145. data/app/types/decidim/solutions/solutions_type.rb +32 -0
  146. data/app/views/decidim/challenges/admin/challenges/_form.html.erb +78 -0
  147. data/app/views/decidim/challenges/admin/challenges/edit.html.erb +24 -0
  148. data/app/views/decidim/challenges/admin/challenges/index.html.erb +88 -0
  149. data/app/views/decidim/challenges/admin/challenges/new.html.erb +18 -0
  150. data/app/views/decidim/challenges/admin/surveys/_form.html.erb +9 -0
  151. data/app/views/decidim/challenges/admin/surveys/edit.html.erb +39 -0
  152. data/app/views/decidim/challenges/admin/surveys/index.html.erb +49 -0
  153. data/app/views/decidim/challenges/admin/surveys/show.html.erb +43 -0
  154. data/app/views/decidim/challenges/challenges/_challenge.html.erb +1 -0
  155. data/app/views/decidim/challenges/challenges/_challenges.html.erb +11 -0
  156. data/app/views/decidim/challenges/challenges/_related_problems.html.erb +14 -0
  157. data/app/views/decidim/challenges/challenges/_sidebar_data.html.erb +60 -0
  158. data/app/views/decidim/challenges/challenges/index.html.erb +29 -0
  159. data/app/views/decidim/challenges/challenges/index.js.erb +5 -0
  160. data/app/views/decidim/challenges/challenges/show.html.erb +41 -0
  161. data/app/views/decidim/problems/admin/problems/_form.html.erb +79 -0
  162. data/app/views/decidim/problems/admin/problems/edit.html.erb +24 -0
  163. data/app/views/decidim/problems/admin/problems/index.html.erb +93 -0
  164. data/app/views/decidim/problems/admin/problems/new.html.erb +18 -0
  165. data/app/views/decidim/problems/problems/_problem.html.erb +1 -0
  166. data/app/views/decidim/problems/problems/_problems.html.erb +11 -0
  167. data/app/views/decidim/problems/problems/_sidebar_data.html.erb +70 -0
  168. data/app/views/decidim/problems/problems/index.html.erb +28 -0
  169. data/app/views/decidim/problems/problems/index.js.erb +5 -0
  170. data/app/views/decidim/problems/problems/show.html.erb +38 -0
  171. data/app/views/decidim/sdgs/sdgs/_objectives.html.erb +320 -0
  172. data/app/views/decidim/sdgs/sdgs/_ods.html.erb +132 -0
  173. data/app/views/decidim/sdgs/sdgs/index.html.erb +64 -0
  174. data/app/views/decidim/sdgs/sdgs_filter/_filter_selector.html.erb +7 -0
  175. data/app/views/decidim/sdgs/sdgs_filter/_modal.html.erb +35 -0
  176. data/app/views/decidim/shared/_related_solutions.html.erb +14 -0
  177. data/app/views/decidim/solutions/admin/solutions/_documents.html.erb +13 -0
  178. data/app/views/decidim/solutions/admin/solutions/_form.html.erb +70 -0
  179. data/app/views/decidim/solutions/admin/solutions/_photos.html.erb +13 -0
  180. data/app/views/decidim/solutions/admin/solutions/edit.html.erb +24 -0
  181. data/app/views/decidim/solutions/admin/solutions/index.html.erb +97 -0
  182. data/app/views/decidim/solutions/admin/solutions/new.html.erb +18 -0
  183. data/app/views/decidim/solutions/admin/solutions/show.html.erb +114 -0
  184. data/app/views/decidim/solutions/solutions/_form.html.erb +22 -0
  185. data/app/views/decidim/solutions/solutions/_sidebar_data.html.erb +114 -0
  186. data/app/views/decidim/solutions/solutions/_solution.html.erb +1 -0
  187. data/app/views/decidim/solutions/solutions/_solutions.html.erb +13 -0
  188. data/app/views/decidim/solutions/solutions/index.html.erb +37 -0
  189. data/app/views/decidim/solutions/solutions/index.js.erb +5 -0
  190. data/app/views/decidim/solutions/solutions/new.html.erb +20 -0
  191. data/app/views/decidim/solutions/solutions/show.html.erb +72 -0
  192. data/config/assets.rb +27 -0
  193. data/config/i18n-tasks.yml +10 -0
  194. data/config/locales/ca.yml +1244 -0
  195. data/config/locales/cs.yml +668 -0
  196. data/config/locales/en.yml +1245 -0
  197. data/config/locales/es.yml +1250 -0
  198. data/config/locales/oc.yml +1229 -0
  199. data/db/migrate/20201014125000_create_decidim_challenges_challenges.rb +23 -0
  200. data/db/migrate/20201103155100_create_decidim_problems_problems.rb +25 -0
  201. data/db/migrate/20201116111200_create_decidim_solutions_solutions.rb +21 -0
  202. data/db/migrate/20210413083244_create_decidim_challenges_surveys.rb +14 -0
  203. data/db/migrate/20210413083507_add_survey_attributes_to_challenges.rb +7 -0
  204. data/db/migrate/20210413083604_add_questionnaire_to_existing_challenges.rb +15 -0
  205. data/db/migrate/20210413112229_add_challenge_reference_to_solutions.rb +7 -0
  206. data/db/migrate/20210427091033_remove_require_null_in_problems_for_solutions.rb +7 -0
  207. data/db/migrate/20220407110503_add_card_image_to_challenges.rb +7 -0
  208. data/db/migrate/20240919094714_add_public_fields_to_solutions.rb +10 -0
  209. data/lib/decidim/challenges/admin.rb +10 -0
  210. data/lib/decidim/challenges/admin_engine.rb +37 -0
  211. data/lib/decidim/challenges/component.rb +65 -0
  212. data/lib/decidim/challenges/engine.rb +39 -0
  213. data/lib/decidim/challenges/test/factories.rb +59 -0
  214. data/lib/decidim/challenges/version.rb +14 -0
  215. data/lib/decidim/challenges.rb +13 -0
  216. data/lib/decidim/problems/admin.rb +10 -0
  217. data/lib/decidim/problems/admin_engine.rb +25 -0
  218. data/lib/decidim/problems/component.rb +51 -0
  219. data/lib/decidim/problems/engine.rb +31 -0
  220. data/lib/decidim/problems/test/factories.rb +39 -0
  221. data/lib/decidim/sdgs/admin.rb +10 -0
  222. data/lib/decidim/sdgs/admin_engine.rb +28 -0
  223. data/lib/decidim/sdgs/component.rb +44 -0
  224. data/lib/decidim/sdgs/engine.rb +23 -0
  225. data/lib/decidim/sdgs/test/factories.rb +13 -0
  226. data/lib/decidim/solutions/admin.rb +10 -0
  227. data/lib/decidim/solutions/admin_engine.rb +25 -0
  228. data/lib/decidim/solutions/component.rb +52 -0
  229. data/lib/decidim/solutions/engine.rb +31 -0
  230. data/lib/decidim/solutions/test/factories.rb +28 -0
  231. metadata +316 -0
@@ -0,0 +1,185 @@
1
+ @import "stylesheets/decidim/sdgs/sdgs_filter/button.scss";
2
+ @import "stylesheets/decidim/sdgs/sdgs_filter/modal.scss";
3
+
4
+ @font-face {
5
+ font-family: Oswald-Medium;
6
+ src: url('../fonts/Oswald-Medium.ttf')
7
+ }
8
+
9
+ .sdgs-title {
10
+ display: flex;
11
+ justify-content: space-between;
12
+
13
+ .text {
14
+ width: 64%;
15
+ }
16
+ }
17
+
18
+ #ods-logo-container {
19
+ width: 250px;
20
+ height: 250px;
21
+ padding-top: 25px;
22
+ background-color: #dedede;
23
+ margin: auto;
24
+
25
+ img {
26
+ display: block;
27
+ margin: auto auto 10px;
28
+ width: 155px;
29
+ }
30
+
31
+ #title {
32
+ text-align: center;
33
+ font-weight: bold;
34
+ font-size: 15pt;
35
+ line-height: 15px;
36
+ margin: 0;
37
+ }
38
+
39
+ #subtitle {
40
+ text-align: center;
41
+ font-size: 9.5pt;
42
+ }
43
+ }
44
+
45
+ #ods-container {
46
+ display: grid;
47
+ grid-template-columns: repeat(6, 1fr);
48
+ gap: 16px;
49
+ }
50
+
51
+ .ods {
52
+ width: 100%;
53
+ position: relative;
54
+ margin-bottom: 25px;
55
+ cursor: pointer;
56
+
57
+ &:hover {
58
+ -webkit-box-shadow: 0px 0px 15px 2px rgba(0, 0, 0, 0.75);
59
+ -moz-box-shadow: 0px 0px 15px 2px rgba(0, 0, 0, 0.75);
60
+ box-shadow: 0px 0px 15px 2px rgba(0, 0, 0, 0.75);
61
+ transition: all 0.5s ease;
62
+ }
63
+
64
+ &.final {
65
+ padding: 10px;
66
+ height: 175px;
67
+ border: 1px solid #c6c6c6;
68
+ }
69
+
70
+ .text-container {
71
+ position: absolute;
72
+ top: 4.2px;
73
+ left: 76px;
74
+ width: 120px;
75
+
76
+ &.stretch {
77
+ left: 55px;
78
+ width: 105px;
79
+ }
80
+ }
81
+
82
+ p {
83
+ margin: 0;
84
+ font-family: Oswald-Medium, 'Open Sans Semibold', sans-serif;
85
+ color: white;
86
+ font-size: 9pt;
87
+ text-size-adjust: 100%;
88
+ }
89
+
90
+ object {
91
+ width: 100%;
92
+ }
93
+ }
94
+
95
+ #objective-container {
96
+ .hide {
97
+ display: none;
98
+ }
99
+ }
100
+
101
+ .card__highlight {
102
+ .text-container {
103
+ position: absolute;
104
+ top: 0;
105
+ left: 23px;
106
+ width: 120px;
107
+ }
108
+ }
109
+
110
+ .objectives_container {
111
+ background-color: #c22244;
112
+ padding-left: 30px;
113
+ padding-top: 15px;
114
+ padding-bottom: 15px;
115
+ font-size: larger;
116
+
117
+ p {
118
+ color: white;
119
+ margin-bottom: 0;
120
+ }
121
+
122
+ .objectives_subtitle{
123
+ font-weight: bold;
124
+ }
125
+
126
+ }
127
+
128
+ .objectives_text{
129
+ padding-left: 30px;
130
+ padding-right: 30px;
131
+
132
+ p {
133
+ margin-top: 10px;
134
+ margin-bottom: 0
135
+ }
136
+
137
+ }
138
+
139
+ @media (max-width: 1215px) {
140
+ .ods p {
141
+ font-size: 8pt;
142
+ }
143
+ }
144
+
145
+ @media (max-width: 1115px) {
146
+ .ods p {
147
+ font-size: 7pt;
148
+ }
149
+ }
150
+
151
+ @media (max-width: 1023px) {
152
+ .ods p {
153
+ font-size: 9pt;
154
+ }
155
+ }
156
+
157
+ @media (max-width: 740px) {
158
+ .ods p {
159
+ font-size: 8pt;
160
+ }
161
+ }
162
+
163
+ @media (max-width: 690px) {
164
+ .ods p {
165
+ font-size: 7pt;
166
+ }
167
+ }
168
+
169
+ @media (max-width: 639px) {
170
+ .ods p {
171
+ font-size: 9pt;
172
+ }
173
+ }
174
+
175
+ @media (max-width: 520px) {
176
+ .ods p {
177
+ font-size: 8pt;
178
+ }
179
+ }
180
+
181
+ @media (max-width: 490px) {
182
+ .ods p {
183
+ font-size: 7pt;
184
+ }
185
+ }
@@ -0,0 +1,27 @@
1
+ div.filters__section.sdgs-filter {
2
+ button {
3
+ height: 2.5rem;
4
+ background: white;
5
+ cursor: pointer;
6
+ display: block;
7
+ width: 100%;
8
+ padding: .4rem .7rem;
9
+ outline: 0;
10
+ border: 1px solid #e8e8e8;
11
+ border-radius: 4px;
12
+ box-shadow: inset 0 1px 2px rgba(26, 24, 29, 0.1);
13
+ -webkit-box-shadow: inset 0 1px 2px rgba(26, 24, 29, 0.1);
14
+ color: #1a181d;
15
+ }
16
+ button::after {
17
+ display: block;
18
+ width: 0;
19
+ height: 0;
20
+ border: inset 5px;
21
+ content: '';
22
+ border-right-width: 0;
23
+ border-color: transparent transparent transparent #1a181d;
24
+ float: right;
25
+ margin-top: 0.25rem;
26
+ }
27
+ }
@@ -0,0 +1,60 @@
1
+ #sdgs-modal {
2
+ display: none;
3
+ position: fixed;
4
+ z-index: 99;
5
+ left: 0;
6
+ top: 0;
7
+ width: 100%;
8
+ height: 100%;
9
+ overflow: auto;
10
+ background-color: rgb(0,0,0);
11
+ background-color: rgba(0,0,0,0.4);
12
+
13
+ .reveal__header {
14
+ background-color: #fefefe;
15
+ display: flex;
16
+ justify-content: space-between;
17
+ padding-bottom: 8px;
18
+
19
+ .close-button {
20
+ font-size: 24px;
21
+ line-height: 30px;
22
+ }
23
+ }
24
+
25
+ .modal-content {
26
+ background-color: #fefefe;
27
+ margin: 2% auto;
28
+ padding: 20px;
29
+ width: 43%;
30
+ }
31
+
32
+ #sdg-container {
33
+ background-color: #fefefe;
34
+ display: grid;
35
+ grid-template-columns: repeat(5, 1fr);
36
+ gap: 16px;
37
+
38
+ .sdg-cell {
39
+ cursor: pointer;
40
+ text-align: center;
41
+ border: 3px solid white;
42
+
43
+ img {
44
+ width: 100%;
45
+ }
46
+
47
+ div.text{
48
+ width: 100%;
49
+ height: 5em;
50
+ background-color: lightgrey;
51
+ font-size: 12px;
52
+ }
53
+ }
54
+ }
55
+
56
+ .buttons {
57
+ display: flex;
58
+ justify-content: center;
59
+ }
60
+ }
@@ -0,0 +1,52 @@
1
+ .card__list {
2
+ .card__list-content {
3
+ width: 100%;
4
+ }
5
+
6
+ .card__list-image {
7
+ margin-right: 14px;
8
+ }
9
+
10
+ .card__list-text {
11
+ display: flex;
12
+ gap: 20px;
13
+
14
+ p {
15
+ width: 650px;
16
+ min-width: 650px;
17
+ }
18
+
19
+ .card__sdg {
20
+ margin-right: 20px;
21
+ }
22
+
23
+ .card_text--sdg--image {
24
+ width: 48px;
25
+
26
+ img {
27
+ vertical-align: bottom;
28
+ }
29
+ }
30
+
31
+ .card_text--sdg--text {
32
+ font-size: 12px;
33
+ }
34
+ }
35
+
36
+ .card__list-metadata {
37
+ .label.proposal {
38
+ background-color: rgb(254, 174, 2);
39
+ color: rgb(86, 59, 1);
40
+ }
41
+
42
+ .label.executing {
43
+ background-color: rgb(0, 163, 144);
44
+ color: rgb(0, 49, 43);
45
+ }
46
+
47
+ .label.finished {
48
+ background-color: rgb(0, 188, 255);
49
+ color: rgb(0, 49, 43);
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,9 @@
1
+ @import "cards";
2
+
3
+ .layout-item__aside {
4
+ .ods.challenges {
5
+ width: 150px;
6
+ display: block;
7
+ text-align: center;
8
+ }
9
+ }
@@ -0,0 +1,3 @@
1
+ @import "stylesheets/decidim/shared/base.scss";
2
+ @import "stylesheets/decidim/sdgs/sdgs_filter/button.scss";
3
+ @import "stylesheets/decidim/sdgs/sdgs_filter/modal.scss";
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Challenges
5
+ module Admin
6
+ class Permissions < Decidim::DefaultPermissions
7
+ def permissions
8
+ # The public part needs to be implemented yet
9
+ return permission_action if permission_action.scope != :admin
10
+
11
+ allow! if permission_action.subject == :challenges && read_permission_action?
12
+
13
+ allow! if permission_action.subject == :challenge && create_permission_action?
14
+
15
+ allow! if permission_action.subject == :challenge && edit_permission_action?
16
+
17
+ allow! if permission_action.subject == :challenge && destroy_permission_action?
18
+
19
+ allow! if permission_action.subject == :challenge && publish_permission_action?
20
+
21
+ allow! if permission_action.subject == :challenge && export_permission_action?
22
+
23
+ allow! if permission_action.subject == :questionnaire && update_permission_action?
24
+
25
+ allow! if permission_action.subject == :questionnaire_answers && index_permission_action?
26
+
27
+ allow! if permission_action.subject == :questionnaire_answers && show_permission_action?
28
+
29
+ allow! if permission_action.subject == :questionnaire && export_answers_permission_action?
30
+
31
+ allow! if permission_action.subject == :questionnaire_answers && export_response_permission_action?
32
+
33
+ permission_action
34
+ end
35
+
36
+ private
37
+
38
+ def read_permission_action?
39
+ permission_action.action == :read
40
+ end
41
+
42
+ def create_permission_action?
43
+ permission_action.action == :create
44
+ end
45
+
46
+ def edit_permission_action?
47
+ permission_action.action == :edit
48
+ end
49
+
50
+ def update_permission_action?
51
+ permission_action.action == :update
52
+ end
53
+
54
+ def destroy_permission_action?
55
+ permission_action.action == :destroy
56
+ end
57
+
58
+ def publish_permission_action?
59
+ permission_action.action == :publish
60
+ end
61
+
62
+ def export_permission_action?
63
+ permission_action.action == :export_surveys
64
+ end
65
+
66
+ def export_response_permission_action?
67
+ permission_action.action == :export_response
68
+ end
69
+
70
+ def export_answers_permission_action?
71
+ permission_action.action == :export_answers
72
+ end
73
+
74
+ def index_permission_action?
75
+ permission_action.action == :index
76
+ end
77
+
78
+ def show_permission_action?
79
+ permission_action.action == :show
80
+ end
81
+
82
+ def challenge
83
+ @challenge ||= context.fetch(:challenge, nil)
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Challenges
5
+ class Permissions < Decidim::DefaultPermissions
6
+ def permissions
7
+ return permission_action unless user
8
+ # Delegate the admin permission checks to the admin permissions class
9
+ return Decidim::Challenges::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin
10
+
11
+ allow! if permission_action.subject == :challenge && answer_permission_action?
12
+
13
+ permission_action
14
+ end
15
+
16
+ private
17
+
18
+ def answer_permission_action?
19
+ permission_action.action == :answer
20
+ end
21
+
22
+ def challenge
23
+ @challenge ||= context.fetch(:challenge, nil)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Problems
5
+ module Admin
6
+ class Permissions < Decidim::DefaultPermissions
7
+ def permissions
8
+ # The public part needs to be implemented yet
9
+ return permission_action if permission_action.scope != :admin
10
+
11
+ allow! if permission_action.subject == :problems && read_permission_action?
12
+
13
+ allow! if permission_action.subject == :problem && create_permission_action?
14
+
15
+ allow! if permission_action.subject == :problem && edit_permission_action?
16
+
17
+ allow! if permission_action.subject == :problem && destroy_permission_action?
18
+
19
+ allow! if permission_action.subject == :problem && publish_permission_action?
20
+
21
+ permission_action
22
+ end
23
+
24
+ private
25
+
26
+ def read_permission_action?
27
+ permission_action.action == :read
28
+ end
29
+
30
+ def create_permission_action?
31
+ permission_action.action == :create
32
+ end
33
+
34
+ def edit_permission_action?
35
+ permission_action.action == :edit
36
+ end
37
+
38
+ def destroy_permission_action?
39
+ permission_action.action == :destroy
40
+ end
41
+
42
+ def publish_permission_action?
43
+ permission_action.action == :publish
44
+ end
45
+
46
+ def problem
47
+ @problem ||= context.fetch(:problem, nil)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Problems
5
+ class Permissions < Decidim::DefaultPermissions
6
+ def permissions
7
+ return permission_action unless user
8
+ # Delegate the admin permission checks to the admin permissions class
9
+ return Decidim::Problems::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin
10
+
11
+ # nothing to check in the front
12
+ permission_action
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Solutions
5
+ module Admin
6
+ class Permissions < Decidim::DefaultPermissions
7
+ def permissions
8
+ # The public part needs to be implemented yet
9
+ return permission_action if permission_action.scope != :admin
10
+
11
+ allow! if permission_action.subject == :solutions && read_permission_action?
12
+
13
+ allow! if permission_action.subject == :solution && create_permission_action?
14
+
15
+ allow! if permission_action.subject == :solution && edit_permission_action?
16
+
17
+ allow! if permission_action.subject == :solution && destroy_permission_action?
18
+
19
+ allow! if permission_action.subject == :solution && publish_permission_action?
20
+
21
+ allow! if permission_action.subject == :solution && show_permission_action?
22
+
23
+ permission_action
24
+ end
25
+
26
+ private
27
+
28
+ def read_permission_action?
29
+ permission_action.action == :read
30
+ end
31
+
32
+ def create_permission_action?
33
+ permission_action.action == :create
34
+ end
35
+
36
+ def edit_permission_action?
37
+ permission_action.action == :edit
38
+ end
39
+
40
+ def destroy_permission_action?
41
+ permission_action.action == :destroy
42
+ end
43
+
44
+ def publish_permission_action?
45
+ permission_action.action == :publish
46
+ end
47
+
48
+ def show_permission_action?
49
+ permission_action.action == :show
50
+ end
51
+
52
+ def solution
53
+ @solution ||= context.fetch(:solution, nil)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Solutions
5
+ class Permissions < Decidim::DefaultPermissions
6
+ def permissions
7
+ return permission_action unless user
8
+ # Delegate the admin permission checks to the admin permissions class
9
+ return Decidim::Solutions::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin
10
+
11
+ toggle_allow(authorized?(:create) && component_settings&.creation_enabled?) if permission_action.action == :create
12
+
13
+ permission_action
14
+ end
15
+ end
16
+ end
17
+ end