decidim-initiatives 0.27.4 → 0.28.0.rc5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -3
- data/app/cells/decidim/initiatives/content_blocks/highlighted_initiatives_cell.rb +17 -18
- data/app/cells/decidim/initiatives/initiative_cell.rb +6 -1
- data/app/cells/decidim/initiatives/initiative_dropdown_metadata_cell.rb +19 -0
- data/app/cells/decidim/initiatives/initiative_g_cell.rb +31 -0
- data/app/cells/decidim/initiatives/initiative_metadata_g_cell.rb +62 -0
- data/app/cells/decidim/initiatives/initiative_s_cell.rb +15 -0
- data/app/cells/decidim/initiatives_votes/vote/show.erb +25 -19
- data/app/cells/decidim/initiatives_votes/vote_cell.rb +3 -1
- data/app/commands/decidim/initiatives/admin/accept_initiative.rb +40 -0
- data/app/commands/decidim/initiatives/admin/create_initiative_type.rb +1 -1
- data/app/commands/decidim/initiatives/admin/create_initiative_type_scope.rb +1 -1
- data/app/commands/decidim/initiatives/admin/discard_initiative.rb +40 -0
- data/app/commands/decidim/initiatives/admin/publish_initiative.rb +1 -1
- data/app/commands/decidim/initiatives/admin/reject_initiative.rb +40 -0
- data/app/commands/decidim/initiatives/admin/send_initiative_to_technical_validation.rb +2 -2
- data/app/commands/decidim/initiatives/admin/unpublish_initiative.rb +1 -1
- data/app/commands/decidim/initiatives/admin/update_initiative.rb +1 -1
- data/app/commands/decidim/initiatives/admin/update_initiative_answer.rb +1 -1
- data/app/commands/decidim/initiatives/admin/update_initiative_type.rb +1 -1
- data/app/commands/decidim/initiatives/admin/update_initiative_type_scope.rb +1 -1
- data/app/commands/decidim/initiatives/admin/update_initiatives_settings.rb +1 -1
- data/app/commands/decidim/initiatives/attachment_methods.rb +2 -24
- data/app/commands/decidim/initiatives/create_initiative.rb +19 -14
- data/app/commands/decidim/initiatives/send_initiative_to_technical_validation.rb +2 -2
- data/app/commands/decidim/initiatives/spawn_committee_request.rb +1 -1
- data/app/commands/decidim/initiatives/unvote_initiative.rb +1 -1
- data/app/commands/decidim/initiatives/update_initiative.rb +9 -2
- data/app/commands/decidim/initiatives/validate_mobile_phone.rb +2 -2
- data/app/commands/decidim/initiatives/vote_initiative.rb +5 -5
- data/app/constraints/decidim/initiatives/current_initiative.rb +1 -1
- data/app/controllers/concerns/decidim/initiatives/admin/filterable.rb +2 -2
- data/app/controllers/concerns/decidim/initiatives/needs_initiative.rb +1 -1
- data/app/controllers/decidim/initiatives/admin/answers_controller.rb +3 -0
- data/app/controllers/decidim/initiatives/admin/committee_requests_controller.rb +2 -0
- data/app/controllers/decidim/initiatives/admin/components_controller.rb +3 -0
- data/app/controllers/decidim/initiatives/admin/initiative_attachments_controller.rb +2 -0
- data/app/controllers/decidim/initiatives/admin/initiatives_controller.rb +17 -6
- data/app/controllers/decidim/initiatives/admin/initiatives_permissions_controller.rb +3 -0
- data/app/controllers/decidim/initiatives/admin/initiatives_settings_controller.rb +2 -0
- data/app/controllers/decidim/initiatives/admin/initiatives_type_scopes_controller.rb +30 -0
- data/app/controllers/decidim/initiatives/admin/initiatives_types_controller.rb +14 -0
- data/app/controllers/decidim/initiatives/admin/initiatives_types_permissions_controller.rb +21 -0
- data/app/controllers/decidim/initiatives/admin/moderations/reports_controller.rb +2 -2
- data/app/controllers/decidim/initiatives/admin/moderations_controller.rb +4 -2
- data/app/controllers/decidim/initiatives/application_controller.rb +0 -1
- data/app/controllers/decidim/initiatives/authorization_create_modals_controller.rb +25 -0
- data/app/controllers/decidim/initiatives/authorization_sign_modals_controller.rb +2 -2
- data/app/controllers/decidim/initiatives/committee_requests_controller.rb +0 -2
- data/app/controllers/decidim/initiatives/create_initiative_controller.rb +62 -115
- data/app/controllers/decidim/initiatives/initiative_signatures_controller.rb +113 -81
- data/app/controllers/decidim/initiatives/initiative_types_controller.rb +7 -0
- data/app/controllers/decidim/initiatives/initiatives_controller.rb +37 -17
- data/app/controllers/decidim/initiatives/versions_controller.rb +0 -1
- data/app/events/decidim/initiatives/admin/initiative_sent_to_technical_validation_event.rb +1 -1
- data/app/events/decidim/initiatives/admin/support_threshold_reached_event.rb +1 -1
- data/app/events/decidim/initiatives/approve_membership_request_event.rb +12 -12
- data/app/events/decidim/initiatives/create_initiative_event.rb +6 -6
- data/app/events/decidim/initiatives/endorse_initiative_event.rb +1 -1
- data/app/events/decidim/initiatives/extend_initiative_event.rb +1 -1
- data/app/events/decidim/initiatives/initiative_sent_to_technical_validation_event.rb +1 -1
- data/app/events/decidim/initiatives/milestone_completed_event.rb +1 -1
- data/app/events/decidim/initiatives/revoke_membership_request_event.rb +12 -12
- data/app/events/decidim/initiatives/spawn_committee_request_event.rb +12 -12
- data/app/forms/decidim/initiatives/admin/initiative_form.rb +1 -1
- data/app/forms/decidim/initiatives/initiative_form.rb +22 -31
- data/app/forms/decidim/initiatives/previous_form.rb +4 -0
- data/app/forms/decidim/initiatives/vote_form.rb +11 -11
- data/app/helpers/decidim/initiatives/admin/initiatives_helper.rb +1 -1
- data/app/helpers/decidim/initiatives/application_helper.rb +4 -61
- data/app/helpers/decidim/initiatives/initiative_helper.rb +48 -5
- data/app/helpers/decidim/initiatives/initiatives_helper.rb +33 -12
- data/app/jobs/decidim/initiatives/export_initiatives_job.rb +1 -1
- data/app/models/decidim/initiative.rb +17 -20
- data/app/models/decidim/initiatives_vote.rb +1 -1
- data/app/packs/entrypoints/decidim_initiatives.js +3 -0
- data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_initiatives.svg +42 -1
- data/app/packs/src/decidim/initiatives/application.js +0 -1
- data/app/packs/src/decidim/initiatives/scoped_type.js +1 -1
- data/app/packs/stylesheets/decidim/initiatives/initiatives-votes.scss +21 -21
- data/app/packs/stylesheets/decidim/initiatives/print-initiative.scss +59 -31
- data/app/packs/stylesheets/initiatives.scss +171 -0
- data/app/permissions/decidim/initiatives/permissions.rb +3 -3
- data/app/presenters/decidim/initiatives/admin_log/initiative_presenter.rb +2 -2
- data/app/presenters/decidim/initiatives/admin_log/initiatives_settings_presenter.rb +2 -2
- data/app/presenters/decidim/initiatives/admin_log/initiatives_type_presenter.rb +2 -2
- data/app/queries/decidim/initiatives/organization_prioritized_initiatives.rb +1 -1
- data/app/queries/decidim/initiatives/similar_initiatives.rb +2 -2
- data/app/queries/decidim/initiatives/support_period_finished_initiatives.rb +1 -1
- data/app/queries/decidim/initiatives/user_authorizations.rb +1 -1
- data/app/services/decidim/initiatives/pdf_signature_example.rb +44 -52
- data/app/views/decidim/initiatives/_modal.html.erb +15 -0
- data/app/views/decidim/initiatives/admin/answers/_info_initiative.html.erb +21 -19
- data/app/views/decidim/initiatives/admin/answers/edit.html.erb +41 -27
- data/app/views/decidim/initiatives/admin/committee_requests/index.html.erb +41 -48
- data/app/views/decidim/initiatives/admin/exports/_dropdown.html.erb +8 -7
- data/app/views/decidim/initiatives/admin/initiatives/_form.html.erb +111 -95
- data/app/views/decidim/initiatives/admin/initiatives/_initiative_attachments.erb +7 -7
- data/app/views/decidim/initiatives/admin/initiatives/_signatures.html.erb +87 -0
- data/app/views/decidim/initiatives/admin/initiatives/edit.html.erb +72 -60
- data/app/views/decidim/initiatives/admin/initiatives/export_pdf_signatures.html.erb +8 -0
- data/app/views/decidim/initiatives/admin/initiatives/export_pdf_signatures.pdf.erb +5 -78
- data/app/views/decidim/initiatives/admin/initiatives/index.html.erb +76 -75
- data/app/views/decidim/initiatives/admin/initiatives_settings/_form.html.erb +7 -8
- data/app/views/decidim/initiatives/admin/initiatives_settings/edit.html.erb +17 -5
- data/app/views/decidim/initiatives/admin/initiatives_type_scopes/_form.html.erb +11 -6
- data/app/views/decidim/initiatives/admin/initiatives_type_scopes/edit.html.erb +16 -22
- data/app/views/decidim/initiatives/admin/initiatives_type_scopes/new.html.erb +17 -15
- data/app/views/decidim/initiatives/admin/initiatives_types/_form.html.erb +93 -76
- data/app/views/decidim/initiatives/admin/initiatives_types/_initiative_type_scopes.html.erb +35 -33
- data/app/views/decidim/initiatives/admin/initiatives_types/edit.html.erb +16 -12
- data/app/views/decidim/initiatives/admin/initiatives_types/index.html.erb +39 -48
- data/app/views/decidim/initiatives/admin/initiatives_types/new.html.erb +16 -9
- data/app/views/decidim/initiatives/committee_requests/new.html.erb +21 -19
- data/app/views/decidim/initiatives/create_initiative/_share_committee_link.html.erb +15 -20
- data/app/views/decidim/initiatives/create_initiative/fill_data.html.erb +62 -100
- data/app/views/decidim/initiatives/create_initiative/finish.html.erb +24 -28
- data/app/views/decidim/initiatives/create_initiative/promotal_committee.html.erb +15 -17
- data/app/views/decidim/initiatives/create_initiative/select_initiative_type.html.erb +32 -46
- data/app/views/decidim/initiatives/initiative_signatures/_wizard_steps.html.erb +15 -19
- data/app/views/decidim/initiatives/initiative_signatures/fill_personal_data.html.erb +25 -36
- data/app/views/decidim/initiatives/initiative_signatures/finish.html.erb +5 -16
- data/app/views/decidim/initiatives/initiative_signatures/sms_code.html.erb +8 -19
- data/app/views/decidim/initiatives/initiative_signatures/sms_phone_number.html.erb +8 -20
- data/app/views/decidim/initiatives/initiatives/_committee_members.html.erb +48 -66
- data/app/views/decidim/initiatives/initiatives/_form.html.erb +49 -95
- data/app/views/decidim/initiatives/initiatives/_initiative_badge.html.erb +3 -5
- data/app/views/decidim/initiatives/initiatives/_initiative_hero.html.erb +13 -0
- data/app/views/decidim/initiatives/initiatives/_initiatives.html.erb +6 -15
- data/app/views/decidim/initiatives/initiatives/_interactions.html.erb +1 -1
- data/app/views/decidim/initiatives/initiatives/_new_initiative_button.html.erb +28 -0
- data/app/views/decidim/initiatives/initiatives/_progress_bar.html.erb +2 -6
- data/app/views/decidim/initiatives/initiatives/_result.html.erb +15 -21
- data/app/views/decidim/initiatives/initiatives/_send_to_technical_validation.html.erb +3 -3
- data/app/views/decidim/initiatives/initiatives/_tags_type.html.erb +1 -0
- data/app/views/decidim/initiatives/initiatives/_vote_button.html.erb +9 -9
- data/app/views/decidim/initiatives/initiatives/_vote_cabin.html.erb +7 -7
- data/app/views/decidim/initiatives/initiatives/edit.html.erb +63 -68
- data/app/views/decidim/initiatives/initiatives/index.html.erb +17 -18
- data/app/views/decidim/initiatives/initiatives/index.js.erb +0 -5
- data/app/views/decidim/initiatives/initiatives/print.html.erb +123 -120
- data/app/views/decidim/initiatives/initiatives/show.html.erb +188 -70
- data/app/views/decidim/initiatives/initiatives_mailer/notify_creation.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives_type_scopes/search.html.erb +2 -1
- data/app/views/decidim/initiatives/versions/show.html.erb +14 -5
- data/app/views/layouts/decidim/_initiative_creation_header.html.erb +17 -28
- data/app/views/layouts/decidim/_initiative_header.html.erb +3 -23
- data/app/views/layouts/decidim/_initiative_header_steps.html.erb +4 -12
- data/app/views/layouts/decidim/_initiative_signature_creation_header.html.erb +5 -26
- data/app/views/layouts/decidim/admin/initiative.html.erb +12 -13
- data/app/views/layouts/decidim/admin/initiatives.html.erb +40 -11
- data/app/views/layouts/decidim/initiative.html.erb +16 -11
- data/app/views/layouts/decidim/initiative_creation.html.erb +7 -18
- data/app/views/layouts/decidim/initiative_head.html.erb +15 -0
- data/app/views/layouts/decidim/initiative_signature_creation.html.erb +3 -11
- data/config/assets.rb +0 -1
- data/config/environment.rb +3 -0
- data/config/initializers/wicked_pdf.rb +1 -1
- data/config/locales/ar.yml +1 -92
- data/config/locales/ca.yml +65 -104
- data/config/locales/cs.yml +70 -109
- data/config/locales/de.yml +71 -110
- data/config/locales/el.yml +1 -97
- data/config/locales/en.yml +69 -108
- data/config/locales/es-MX.yml +65 -104
- data/config/locales/es-PY.yml +65 -104
- data/config/locales/es.yml +65 -104
- data/config/locales/eu.yml +171 -161
- data/config/locales/fi-plain.yml +67 -106
- data/config/locales/fi.yml +67 -106
- data/config/locales/fr-CA.yml +72 -106
- data/config/locales/fr.yml +70 -104
- data/config/locales/ga-IE.yml +0 -35
- data/config/locales/gl.yml +1 -87
- data/config/locales/hu.yml +25 -107
- data/config/locales/id-ID.yml +1 -88
- data/config/locales/is-IS.yml +1 -57
- data/config/locales/it.yml +6 -111
- data/config/locales/ja.yml +63 -109
- data/config/locales/lb.yml +6 -73
- data/config/locales/lt.yml +72 -101
- data/config/locales/lv.yml +1 -98
- data/config/locales/nl.yml +6 -103
- data/config/locales/no.yml +6 -114
- data/config/locales/pl.yml +11 -111
- data/config/locales/pt-BR.yml +21 -116
- data/config/locales/pt.yml +6 -111
- data/config/locales/ro-RO.yml +13 -108
- data/config/locales/ru.yml +1 -65
- data/config/locales/sk.yml +1 -84
- data/config/locales/sl.yml +3 -5
- data/config/locales/sq-AL.yml +1 -0
- data/config/locales/sv.yml +20 -107
- data/config/locales/th-TH.yml +1 -0
- data/config/locales/tr-TR.yml +9 -111
- data/config/locales/uk.yml +1 -65
- data/config/locales/zh-CN.yml +6 -102
- data/config/locales/zh-TW.yml +31 -97
- data/db/migrate/20171017091734_add_scopes_for_all_initiative_types.rb +1 -1
- data/db/migrate/20171017095143_update_initiative_scoped_type.rb +1 -1
- data/db/migrate/20191002082220_move_signature_type_to_initative_type.rb +1 -1
- data/lib/decidim/api/initiative_committee_member_type.rb +2 -2
- data/lib/decidim/initiatives/admin_engine.rb +13 -93
- data/lib/decidim/initiatives/content_blocks/registry_manager.rb +22 -0
- data/lib/decidim/initiatives/engine.rb +45 -23
- data/lib/decidim/initiatives/menu.rb +150 -0
- data/lib/decidim/initiatives/participatory_space.rb +6 -91
- data/lib/decidim/initiatives/query_extensions.rb +5 -5
- data/lib/decidim/initiatives/seeds.rb +95 -0
- data/lib/decidim/initiatives/test/factories.rb +25 -7
- data/lib/decidim/initiatives/version.rb +1 -1
- data/lib/decidim/initiatives.rb +1 -1
- data/lib/tasks/decidim_initiatives.rake +2 -2
- data/lib/tasks/initiatives/upgrade/decidim_initiatives_upgrade_tasks.rake +1 -1
- metadata +49 -75
- data/app/cells/decidim/initiatives/content_blocks/highlighted_initiatives/show.erb +0 -28
- data/app/cells/decidim/initiatives/initiative_m/author.erb +0 -10
- data/app/cells/decidim/initiatives/initiative_m/footer.erb +0 -28
- data/app/cells/decidim/initiatives/initiative_m/tags.erb +0 -9
- data/app/cells/decidim/initiatives/initiative_m_cell.rb +0 -77
- data/app/controllers/decidim/initiatives/widgets_controller.rb +0 -30
- data/app/packs/stylesheets/decidim/initiatives/admin.scss +0 -33
- data/app/packs/stylesheets/decidim/initiatives/initiatives.scss +0 -64
- data/app/packs/stylesheets/decidim/initiatives/popularity_item.scss +0 -76
- data/app/packs/stylesheets/decidim/initiatives/statistics.scss +0 -15
- data/app/views/decidim/initiatives/create_initiative/_finish_help.html.erb +0 -2
- data/app/views/decidim/initiatives/create_initiative/previous_form.html.erb +0 -40
- data/app/views/decidim/initiatives/create_initiative/show_similar_initiatives.html.erb +0 -23
- data/app/views/decidim/initiatives/initiatives/_author.html.erb +0 -35
- data/app/views/decidim/initiatives/initiatives/_count.html.erb +0 -1
- data/app/views/decidim/initiatives/initiatives/_filters.html.erb +0 -33
- data/app/views/decidim/initiatives/initiatives/_filters_small_view.html.erb +0 -18
- data/app/views/decidim/initiatives/initiatives/_index_header.html.erb +0 -44
- data/app/views/decidim/initiatives/initiatives/_tags.html.erb +0 -7
- data/app/views/decidim/initiatives/versions/index.html.erb +0 -8
- data/db/seeds/city.jpeg +0 -0
- data/db/seeds/city2.jpeg +0 -0
- data/lib/decidim/initiatives/initiatives_filter_form_builder.rb +0 -56
- data/lib/gem_overrides/origami/date.rb +0 -47
@@ -0,0 +1,171 @@
|
|
1
|
+
.initiatives {
|
2
|
+
@apply block;
|
3
|
+
|
4
|
+
&__selection {
|
5
|
+
.form-defaults {
|
6
|
+
@apply my-10;
|
7
|
+
}
|
8
|
+
|
9
|
+
.card__highlight {
|
10
|
+
@apply pl-4 pr-20 py-4 items-center justify-between gap-4;
|
11
|
+
}
|
12
|
+
|
13
|
+
.card__highlight-authorized {
|
14
|
+
@apply w-full my-10 hover:cursor-default hover:ring-background;
|
15
|
+
}
|
16
|
+
|
17
|
+
&__icon {
|
18
|
+
@apply flex-none w-8 h-8 text-gray fill-secondary;
|
19
|
+
|
20
|
+
&.is-granted {
|
21
|
+
@apply text-success;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
&__text {
|
26
|
+
@apply grow space-y-2.5 text-left;
|
27
|
+
|
28
|
+
span {
|
29
|
+
@apply inline-block text-sm text-gray-2;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
&:hover {
|
34
|
+
@apply border-tertiary;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
&__progress-bar {
|
39
|
+
.progress-bar__container {
|
40
|
+
@apply w-16;
|
41
|
+
}
|
42
|
+
|
43
|
+
.progress-bar__number {
|
44
|
+
@apply text-gray-2 font-normal text-sm;
|
45
|
+
}
|
46
|
+
|
47
|
+
.progress-bar__units {
|
48
|
+
@apply hidden;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
&__card__grid-metadata-dates {
|
53
|
+
@apply block justify-center content-center;
|
54
|
+
|
55
|
+
svg {
|
56
|
+
@apply fill-gray;
|
57
|
+
}
|
58
|
+
|
59
|
+
span {
|
60
|
+
@apply text-gray-2;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
.initiative {
|
66
|
+
&__hero {
|
67
|
+
@apply backdrop-brightness-[30%];
|
68
|
+
|
69
|
+
&-text {
|
70
|
+
@apply container text-center text-white md:px-16 pt-10 pb-14 md:[&_a_+_a]:ml-6;
|
71
|
+
}
|
72
|
+
|
73
|
+
&-slogan {
|
74
|
+
@apply text-lg font-normal my-4;
|
75
|
+
}
|
76
|
+
|
77
|
+
&-location {
|
78
|
+
@apply text-lg;
|
79
|
+
}
|
80
|
+
|
81
|
+
.initiatives__card__grid-metadata-dates {
|
82
|
+
svg {
|
83
|
+
@apply fill-white;
|
84
|
+
}
|
85
|
+
|
86
|
+
span {
|
87
|
+
@apply text-white;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
&__form__committee {
|
93
|
+
@apply flex items-center px-4 py-2 border border-gray outline outline-1 outline-transparent rounded bg-background-2 focus:outline-2 focus:outline-secondary w-full;
|
94
|
+
|
95
|
+
span {
|
96
|
+
@apply text-black font-normal;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
&__aside {
|
101
|
+
@apply md:px-6 md:pb-6 w-full;
|
102
|
+
|
103
|
+
.layout-aside__section {
|
104
|
+
.profile__user-nick {
|
105
|
+
@apply hidden;
|
106
|
+
}
|
107
|
+
|
108
|
+
.participatory-space__nav-container {
|
109
|
+
@apply ml-0;
|
110
|
+
}
|
111
|
+
|
112
|
+
.author {
|
113
|
+
@apply mb-6;
|
114
|
+
}
|
115
|
+
|
116
|
+
.profile__user-avatar-container {
|
117
|
+
@apply w-6 h-6;
|
118
|
+
}
|
119
|
+
|
120
|
+
.profile__user-name {
|
121
|
+
@apply text-sm ml-2;
|
122
|
+
}
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
&__aside__element__committee {
|
127
|
+
@apply mb-6 flex items-center;
|
128
|
+
}
|
129
|
+
|
130
|
+
&__aside__element__data {
|
131
|
+
@apply ml-2 mb-4 pb-4 border-b border-gray-3;
|
132
|
+
}
|
133
|
+
|
134
|
+
&__aside__element__data-title {
|
135
|
+
@apply text-gray-2 font-semibold text-sm mb-2;
|
136
|
+
}
|
137
|
+
|
138
|
+
&__aside__element__data-text {
|
139
|
+
@apply text-sm font-normal text-gray-2 block;
|
140
|
+
}
|
141
|
+
|
142
|
+
&__aside__element-title {
|
143
|
+
@apply inline-block text-gray-2 font-bold text-md align-middle;
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
#initiatives {
|
148
|
+
.card__grid {
|
149
|
+
@apply relative;
|
150
|
+
}
|
151
|
+
|
152
|
+
.card__grid-text {
|
153
|
+
@apply min-h-[120px];
|
154
|
+
}
|
155
|
+
|
156
|
+
.initiative-status {
|
157
|
+
@apply text-center ml-2;
|
158
|
+
}
|
159
|
+
|
160
|
+
.initiatives__card__grid-metadata-dates {
|
161
|
+
@apply mr-2;
|
162
|
+
}
|
163
|
+
|
164
|
+
.initiatives__progress-bar {
|
165
|
+
@apply mx-2;
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
169
|
+
.edit_initiative .profile__group__list {
|
170
|
+
@apply w-full;
|
171
|
+
}
|
@@ -88,9 +88,9 @@ module Decidim
|
|
88
88
|
def creation_enabled?
|
89
89
|
Decidim::Initiatives.creation_enabled && (
|
90
90
|
Decidim::Initiatives.do_not_require_authorization ||
|
91
|
-
|
92
|
-
|
93
|
-
|
91
|
+
UserAuthorizations.for(user).any? ||
|
92
|
+
Decidim::UserGroups::ManageableUserGroups.for(user).verified.any?) &&
|
93
|
+
authorized?(:create, permissions_holder: initiative_type)
|
94
94
|
end
|
95
95
|
|
96
96
|
def request_membership?
|
@@ -6,8 +6,8 @@ module Decidim
|
|
6
6
|
# This class holds the logic to present a `Decidim::Initiative`
|
7
7
|
# for the `AdminLog` log.
|
8
8
|
#
|
9
|
-
# Usage should be automatic and you
|
10
|
-
# directly, but here
|
9
|
+
# Usage should be automatic and you should not need to call this class
|
10
|
+
# directly, but here is an example:
|
11
11
|
#
|
12
12
|
# action_log = Decidim::ActionLog.last
|
13
13
|
# view_helpers # => this comes from the views
|
@@ -6,8 +6,8 @@ module Decidim
|
|
6
6
|
# This class holds the logic to present a `Decidim::InitiativesSettings`
|
7
7
|
# for the `AdminLog` log.
|
8
8
|
#
|
9
|
-
# Usage should be automatic and you
|
10
|
-
# directly, but here
|
9
|
+
# Usage should be automatic and you should not need to call this class
|
10
|
+
# directly, but here is an example:
|
11
11
|
#
|
12
12
|
# action_log = Decidim::ActionLog.last
|
13
13
|
# view_helpers # => this comes from the views
|
@@ -6,8 +6,8 @@ module Decidim
|
|
6
6
|
# This class holds the logic to present a `Decidim::InitiativesType`
|
7
7
|
# for the `AdminLog` log.
|
8
8
|
#
|
9
|
-
# Usage should be automatic and you
|
10
|
-
# directly, but here
|
9
|
+
# Usage should be automatic and you should not need to call this class
|
10
|
+
# directly, but here is an example:
|
11
11
|
#
|
12
12
|
# action_log = Decidim::ActionLog.last
|
13
13
|
# view_helpers # => this comes from the views
|
@@ -31,8 +31,8 @@ module Decidim
|
|
31
31
|
.where(organization: @organization)
|
32
32
|
.where(
|
33
33
|
Arel.sql("GREATEST(#{title_similarity}, #{description_similarity}) >= ?").to_s,
|
34
|
-
form.title,
|
35
|
-
form.description,
|
34
|
+
translated_attribute(form.title),
|
35
|
+
translated_attribute(form.description),
|
36
36
|
Decidim::Initiatives.similarity_threshold
|
37
37
|
)
|
38
38
|
.limit(Decidim::Initiatives.similarity_limit)
|
@@ -5,7 +5,7 @@ module Decidim
|
|
5
5
|
# Class uses to retrieve initiatives that have been a long time in validating
|
6
6
|
# state
|
7
7
|
class SupportPeriodFinishedInitiatives < Decidim::Query
|
8
|
-
# Retrieves the initiatives ready to be evaluated to decide if they
|
8
|
+
# Retrieves the initiatives ready to be evaluated to decide if they have been
|
9
9
|
# accepted or not.
|
10
10
|
def query
|
11
11
|
Decidim::Initiative
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "hexapdf"
|
4
4
|
require "tempfile"
|
5
|
-
require_relative "../../../../lib/gem_overrides/origami/date"
|
6
5
|
|
7
6
|
module Decidim
|
8
7
|
module Initiatives
|
@@ -18,64 +17,57 @@ module Decidim
|
|
18
17
|
|
19
18
|
# Public: PDF signed using a new certificate generated by the service
|
20
19
|
def signed_pdf
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
end
|
35
|
-
extract_signed_pdf(parsed_pdf)
|
20
|
+
signed_file = Tempfile.new("signed_pdf")
|
21
|
+
|
22
|
+
doc = HexaPDF::Document.new(io: StringIO.new(pdf))
|
23
|
+
|
24
|
+
# Prepare the document for embedding of the digital signature
|
25
|
+
data = nil # Used for storing the to-be-signed data
|
26
|
+
signing_mechanism = lambda do |io, byte_range|
|
27
|
+
# Store the to-be-signed data in the local variable data
|
28
|
+
io.pos = byte_range[0]
|
29
|
+
data = io.read(byte_range[1])
|
30
|
+
io.pos = byte_range[2]
|
31
|
+
data << io.read(byte_range[3])
|
32
|
+
""
|
36
33
|
end
|
34
|
+
doc.sign(signed_file.path, signature: signature_widget(doc), reason: caption, signature_size: 10_000, external_signing: signing_mechanism)
|
35
|
+
|
36
|
+
signature = OpenSSL::PKCS7.sign(certificate, key, data,
|
37
|
+
# [HexaPDF.demo_cert.sub_ca, HexaPDF.demo_cert.root_ca],
|
38
|
+
[],
|
39
|
+
OpenSSL::PKCS7::DETACHED | OpenSSL::PKCS7::BINARY).to_der
|
40
|
+
|
41
|
+
# Embed the signature
|
42
|
+
HexaPDF::DigitalSignature::Signing.embed_signature(File.open(signed_file.path, "rb+"), signature)
|
43
|
+
|
44
|
+
File.binread(signed_file.path)
|
45
|
+
ensure
|
46
|
+
signed_file.close
|
47
|
+
signed_file.unlink
|
37
48
|
end
|
38
49
|
|
39
50
|
private
|
40
51
|
|
41
|
-
def
|
42
|
-
|
43
|
-
begin
|
44
|
-
parsed_pdf.save(file.path)
|
45
|
-
File.binread(file.path)
|
46
|
-
ensure
|
47
|
-
file.close
|
48
|
-
file.unlink
|
49
|
-
end
|
50
|
-
end
|
52
|
+
def signature_widget(doc)
|
53
|
+
doc.pages.add.document
|
51
54
|
|
52
|
-
|
53
|
-
|
54
|
-
height = options.fetch(:height, 50.0)
|
55
|
-
size = options.fetch(:size, 8)
|
56
|
-
|
57
|
-
Origami::Annotation::AppearanceStream.new.tap do |annotation|
|
58
|
-
annotation.Type = Origami::Name.new("XObject")
|
59
|
-
annotation.Resources = Origami::Resources.new
|
60
|
-
annotation.Resources.ProcSet = [Origami::Name.new("Text")]
|
61
|
-
annotation.set_indirect(true)
|
62
|
-
annotation.Matrix = [1, 0, 0, 1, 0, 0]
|
63
|
-
annotation.BBox = [0, 0, width, height]
|
64
|
-
annotation.write(caption, x: size, y: (height / 2) - (size / 2), size: size)
|
65
|
-
end
|
66
|
-
end
|
55
|
+
form = doc.acro_form(create: true)
|
56
|
+
form.signature_flag(:append_only)
|
67
57
|
|
68
|
-
|
69
|
-
@signature_annotation ||= begin
|
70
|
-
width = options.fetch(:width, 200.0)
|
71
|
-
height = options.fetch(:height, 50.0)
|
58
|
+
sig_field = form.create_signature_field("signature")
|
72
59
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
60
|
+
widget = sig_field.create_widget(doc.pages[doc.pages.length - 1], Rect: [60, 50, 250, 620])
|
61
|
+
widget.flag(:print)
|
62
|
+
xobject = (widget[:AP] ||= {})[:N] ||= doc.add({ Type: :XObject, Subtype: :Form }) # Create the appearance for the widget
|
63
|
+
xobject[:BBox] = [0, 0, widget[:Rect].width, widget[:Rect].height]
|
64
|
+
xobject.canvas
|
65
|
+
.font("Helvetica", size: 10)
|
66
|
+
.text(caption, at: [10, 30])
|
67
|
+
|
68
|
+
sig = doc.add({ Type: :Sig }) # set an empty signature and apply it to the field
|
69
|
+
sig_field.field_value = sig
|
70
|
+
sig
|
79
71
|
end
|
80
72
|
|
81
73
|
def certificate
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%= decidim_modal id: "not-authorized-modal" do %>
|
2
|
+
<div data-dialog-container>
|
3
|
+
<%= icon "information-line" %>
|
4
|
+
<h3 class="h3" id="dialog-title-not-authorized-modal" data-dialog-title>
|
5
|
+
<%= t(".not_authorized.title") %>
|
6
|
+
</h3>
|
7
|
+
<p id="dialog-desc-not-authorized-modal"><%= t(".not_authorized.explanation") %></p>
|
8
|
+
</div>
|
9
|
+
<div data-dialog-actions>
|
10
|
+
<%= link_to t(".not_authorized.authorizations_page"), decidim_verifications.authorizations_path(redirect_url: create_initiative_url(:select_initiative_type)), class: "button button__sm md:button__lg button__secondary" %>
|
11
|
+
<button data-dialog-close="not-authorized-modal" class="button button__sm md:button__lg button__secondary">
|
12
|
+
<%= t("ok", scope: "decidim.budgets.projects.budget_excess") %>
|
13
|
+
</button>
|
14
|
+
</div>
|
15
|
+
<% end %>
|
@@ -1,23 +1,25 @@
|
|
1
|
-
<div class="
|
2
|
-
<div class="card
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
<div class="card-section">
|
10
|
-
<div class="row column">
|
11
|
-
<strong><%= t ".description" %>: </strong> <%= decidim_sanitize_editor translated_attribute(initiative.description) %>
|
12
|
-
</div>
|
13
|
-
<div class="row column">
|
14
|
-
<strong><%= t ".created_at" %>: </strong> <%= l initiative.created_at, format: :decidim_short %>
|
1
|
+
<div class="form__wrapper">
|
2
|
+
<div class="card">
|
3
|
+
<div class="card-divider">
|
4
|
+
<h2 class="card-title">
|
5
|
+
<%= link_to "#{t ".initiatives"} > ", initiatives_path %>
|
6
|
+
<%= decidim_sanitize translated_attribute(initiative.title) %>
|
7
|
+
</h2>
|
15
8
|
</div>
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
9
|
+
|
10
|
+
<div class="card-section">
|
11
|
+
<div class="row column">
|
12
|
+
<strong><%= t ".description" %>: </strong> <%= decidim_sanitize_editor translated_attribute(initiative.description) %>
|
13
|
+
</div>
|
14
|
+
<div class="row column">
|
15
|
+
<strong><%= t ".created_at" %>: </strong> <%= l initiative.created_at, format: :decidim_short %>
|
16
|
+
</div>
|
17
|
+
<div class="row column">
|
18
|
+
<strong><%= t ".state" %>: </strong> <%= I18n.t(initiative.state, scope: "decidim.initiatives.admin_states") %>
|
19
|
+
</div>
|
20
|
+
<div class="row column">
|
21
|
+
<strong><%= t ".initiative_votes_count" %>: </strong> <%= initiative.online_votes_count %>
|
22
|
+
</div>
|
21
23
|
</div>
|
22
24
|
</div>
|
23
25
|
</div>
|
@@ -1,35 +1,49 @@
|
|
1
|
-
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="item_show__header">
|
3
|
+
<h2 class="item_show__header-title">
|
4
|
+
<%= t("decidim.admin_log.helpers.answers") %>
|
5
|
+
</h2>
|
6
|
+
</div>
|
2
7
|
|
3
|
-
|
4
|
-
<div class="
|
5
|
-
|
6
|
-
<h2 class="card-title"><%= t ".title", title: translated_attribute(current_initiative.title) %></h2>
|
7
|
-
</div>
|
8
|
+
<div class="item__edit item__edit-1col">
|
9
|
+
<div class="item__edit-form">
|
10
|
+
<%= render partial: "info_initiative", locals: { initiative: current_initiative } %>
|
8
11
|
|
9
|
-
|
10
|
-
<div class="
|
11
|
-
|
12
|
-
|
12
|
+
<%= decidim_form_for(@form, url: initiative_answer_path(current_initiative), html: { class: "form-defaults form edit_initiative_answer" }) do |f| %>
|
13
|
+
<div class="form__wrapper">
|
14
|
+
<div class="card">
|
15
|
+
<div class="card-divider">
|
16
|
+
<h2 class="card-title"><%= t ".title", title: translated_attribute(current_initiative.title) %></h2>
|
17
|
+
</div>
|
13
18
|
|
14
|
-
|
15
|
-
|
16
|
-
|
19
|
+
<div class="card-section">
|
20
|
+
<div class="row column">
|
21
|
+
<%= f.translated :editor, :answer, autofocus: true, rows: 15 %>
|
22
|
+
</div>
|
17
23
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
24
|
+
<div class="row column">
|
25
|
+
<%= f.text_field :answer_url %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<% if @form.signature_dates_required? %>
|
29
|
+
<div class="row">
|
30
|
+
<div class="columns">
|
31
|
+
<%= f.date_field :signature_start_date, disabled: !@form.signature_dates_required? %>
|
32
|
+
</div>
|
23
33
|
|
24
|
-
|
25
|
-
|
34
|
+
<div class="columns">
|
35
|
+
<%= f.date_field :signature_end_date, disabled: !@form.signature_dates_required? %>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
26
39
|
</div>
|
27
40
|
</div>
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
41
|
+
</div>
|
42
|
+
<div class="item__edit-sticky">
|
43
|
+
<div class="item__edit-sticky-container">
|
44
|
+
<%= f.submit t(".answer"), class: "button button__sm button__secondary" %>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<% end %>
|
34
48
|
</div>
|
35
|
-
|
49
|
+
</div>
|
@@ -1,9 +1,12 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
1
2
|
<div class="card" id="committee_members">
|
2
|
-
<div class="
|
3
|
-
<h2 class="
|
3
|
+
<div class="item_show__header">
|
4
|
+
<h2 class="item_show__header-title">
|
5
|
+
<%= t ".title" %>
|
6
|
+
</h2>
|
4
7
|
</div>
|
5
8
|
|
6
|
-
<div class="card-section">
|
9
|
+
<div class="card-section p-4">
|
7
10
|
<div class="row column">
|
8
11
|
<%= t ".invite_to_committee_help" %>
|
9
12
|
</div>
|
@@ -11,56 +14,46 @@
|
|
11
14
|
<div class="row column">
|
12
15
|
<div class="committee_link" id="committee_link">
|
13
16
|
<%= decidim_initiatives.new_initiative_committee_request_url(current_initiative) %>
|
17
|
+
<%= icon_link_to "clipboard-line", "#", t(".invite_to_committee_help"), class: "card--list__data__icon invite-users-link" %>
|
14
18
|
</div>
|
15
|
-
<%= icon_link_to "clipboard", "#", t(".invite_to_committee_help"), class: "card--list__data__icon invite-users-link" %>
|
16
19
|
</div>
|
17
20
|
</div>
|
21
|
+
</div>
|
18
22
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
<% end %>
|
23
|
+
<div class="table-scroll mt-4">
|
24
|
+
<table class="table-list">
|
25
|
+
<thead>
|
26
|
+
<tr>
|
27
|
+
<th><%= t "user", scope: "activemodel.attributes.initiatives_committee_member" %></th>
|
28
|
+
<th></th>
|
29
|
+
</tr>
|
30
|
+
</thead>
|
31
|
+
<tbody>
|
32
|
+
<% if current_initiative.committee_members.empty? %>
|
33
|
+
<tr>
|
34
|
+
<td><%= t ".no_members_yet" %></td>
|
35
|
+
<td></td>
|
36
|
+
</tr>
|
37
|
+
<% end %>
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
t(".approve"),
|
46
|
-
class: "action-icon--check" %>
|
47
|
-
<% end %>
|
39
|
+
<% current_initiative.committee_members.each do |request| %>
|
40
|
+
<tr data-id="<%= request.id %>">
|
41
|
+
<td>
|
42
|
+
<%= link_to request.user.name, "mailto:#{request.user.email}" %>
|
43
|
+
</td>
|
44
|
+
<td class="table-list__actions">
|
45
|
+
<% if allowed_to? :approve, :initiative_committee_member, request: request %>
|
46
|
+
<%= icon_link_to "check-line", approve_initiative_committee_request_path(current_initiative, request), t(".approve"), class: "action-icon--check" %>
|
47
|
+
<% end %>
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
</td>
|
58
|
-
</tr>
|
59
|
-
<% end %>
|
60
|
-
</tbody>
|
61
|
-
</table>
|
62
|
-
</div>
|
63
|
-
</div>
|
49
|
+
<% if allowed_to? :revoke, :initiative_committee_member, request: request %>
|
50
|
+
<%= icon_link_to "delete-bin-line", revoke_initiative_committee_request_path(current_initiative, request), t(".revoke"), class: "action-icon--remove", method: :delete, data: { confirm: t(".confirm_revoke") } %>
|
51
|
+
<% end %>
|
52
|
+
</td>
|
53
|
+
</tr>
|
54
|
+
<% end %>
|
55
|
+
</tbody>
|
56
|
+
</table>
|
64
57
|
</div>
|
65
58
|
|
66
|
-
<%=
|
59
|
+
<%= append_javascript_pack_tag "decidim_initiatives_admin" %>
|
@@ -1,9 +1,10 @@
|
|
1
|
-
<span class="exports
|
1
|
+
<span class="exports button button__sm button__secondary button--simple" data-toggle="<%= dropdown_id(collection_ids) %>">
|
2
2
|
<% if collection_ids.present? %>
|
3
3
|
<%= t("actions.export-selection", scope: "decidim.admin") %>
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
<% else %>
|
5
|
+
<%= t("actions.export", scope: "decidim.admin") %>
|
6
|
+
<% end %>
|
7
|
+
<%= icon "arrow-down-s-line", class: "dropdown-filter-icon" %>
|
7
8
|
</span>
|
8
9
|
<div class="dropdown-pane"
|
9
10
|
id="<%= dropdown_id(collection_ids) %>"
|
@@ -13,11 +14,11 @@
|
|
13
14
|
data-auto-focus="true"
|
14
15
|
data-close-on-click="true">
|
15
16
|
<ul class="vertical menu add-components">
|
16
|
-
<% %w
|
17
|
+
<% %w(CSV JSON).each do |format| %>
|
17
18
|
<li class="exports--format--<%= format.downcase %> exports--initiatives">
|
18
19
|
<%= link_to t("decidim.admin.exports.export_as", name: t("decidim.initiatives.admin.exports.initiatives"),
|
19
|
-
|
20
|
-
export_initiatives_path(format
|
20
|
+
export_format: format.upcase),
|
21
|
+
export_initiatives_path(format:, collection_ids:) %>
|
21
22
|
</li>
|
22
23
|
<% end %>
|
23
24
|
</ul>
|