decidim-decidim_awesome 0.6.5 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +38 -8
- data/app/assets/config/decidim_admin_decidim_awesome_manifest.css +2 -2
- data/app/assets/config/decidim_admin_decidim_awesome_manifest.js +1 -1
- data/app/assets/config/decidim_decidim_awesome_manifest.css +2 -2
- data/app/assets/config/decidim_decidim_awesome_manifest.js +3 -2
- data/app/assets/config/legacy_decidim_admin_decidim_awesome_manifest.js +2 -0
- data/app/assets/config/legacy_decidim_decidim_awesome_manifest.js +4 -0
- data/app/assets/javascripts/decidim/decidim_awesome/admin/auto_edit.js.es6 +77 -0
- data/app/assets/javascripts/decidim/decidim_awesome/admin/codemirror.js.es6 +14 -0
- data/app/assets/javascripts/decidim/decidim_awesome/admin/form_builder.js.es6 +80 -0
- data/app/assets/javascripts/decidim/decidim_awesome/admin/legacy_form_builder.js.es6 +80 -0
- data/app/assets/javascripts/decidim/decidim_awesome/admin/user_picker.js.es6 +24 -0
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_admin.js +7 -0
- data/app/assets/javascripts/decidim/decidim_awesome/{application.js → awesome_application.js} +1 -2
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/hashtags.js.es6 +48 -0
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/layers.js.es6 +107 -0
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/load_map.js.es6 +15 -0
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/map.js.es6 +170 -178
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/markers.js.es6 +56 -0
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/meetings.js.es6 +7 -6
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/proposals.js.es6 +18 -5
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/utilities.js.es6 +57 -0
- data/app/assets/javascripts/decidim/decidim_awesome/editors/legacy_quill_editor.js.es6 +172 -0
- data/app/assets/javascripts/decidim/decidim_awesome/editors/quill_editor.js.es6 +34 -9
- data/app/assets/javascripts/decidim/decidim_awesome/editors/tabs_focus.js.es6 +24 -0
- data/app/assets/javascripts/decidim/decidim_awesome/forms/custom_fields_builder.js.es6 +211 -0
- data/app/assets/javascripts/decidim/decidim_awesome/forms/rich_text_plugin.js.es6 +106 -0
- data/app/assets/javascripts/decidim/decidim_awesome/legacy_admin.js +7 -0
- data/app/assets/javascripts/decidim/decidim_awesome/legacy_application.js +3 -0
- data/app/assets/javascripts/decidim/decidim_awesome/proposals/custom_fields.js.es6 +21 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss +15 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +27 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/admin/constraints.scss +12 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +66 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +35 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/{admin.scss → awesome_admin.scss} +19 -4
- data/app/assets/stylesheets/decidim/decidim_awesome/awesome_application.scss +22 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/leaflet.scss.erb +9 -0
- data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +95 -1
- data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_editor.scss +1 -1
- data/app/assets/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +16 -1
- data/app/awesome_overrides/forms/decidim/proposals/proposal_wizard_create_step_form_override.rb +28 -0
- data/app/awesome_overrides/presenters/decidim/menu_presenter_override.rb +11 -3
- data/app/cells/decidim/decidim_awesome/content_blocks/map/show.erb +74 -0
- data/app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb +54 -0
- data/app/cells/decidim/decidim_awesome/content_blocks/map_form/show.erb +61 -0
- data/app/cells/decidim/decidim_awesome/content_blocks/map_form_cell.rb +19 -0
- data/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb +32 -0
- data/app/commands/decidim/decidim_awesome/admin/create_proposal_custom_field.rb +45 -0
- data/app/commands/decidim/decidim_awesome/admin/create_scoped_admin.rb +38 -0
- data/app/commands/decidim/decidim_awesome/admin/destroy_constraint.rb +4 -0
- data/app/commands/decidim/decidim_awesome/admin/destroy_proposal_custom_field.rb +40 -0
- data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_admin.rb +40 -0
- data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb +1 -1
- data/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb +58 -0
- data/app/commands/decidim/decidim_awesome/admin/update_config.rb +5 -1
- data/app/controllers/concerns/decidim/decidim_awesome/admin_not_found_redirect.rb +39 -0
- data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +1 -1
- data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +33 -20
- data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +4 -0
- data/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +2 -2
- data/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb +38 -0
- data/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb +38 -0
- data/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb +38 -0
- data/app/controllers/decidim/decidim_awesome/map_component/map_controller.rb +1 -4
- data/app/forms/decidim/decidim_awesome/admin/config_form.rb +50 -0
- data/app/forms/decidim/decidim_awesome/admin/constraint_form.rb +3 -1
- data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +11 -7
- data/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb +48 -0
- data/app/helpers/decidim/decidim_awesome/map_helper.rb +66 -53
- data/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb +78 -0
- data/app/middleware/decidim/decidim_awesome/current_config.rb +182 -0
- data/app/models/decidim/decidim_awesome/awesome_config.rb +15 -0
- data/app/models/decidim/decidim_awesome/user_override.rb +25 -0
- data/app/permissions/decidim/decidim_awesome/admin/permissions.rb +2 -0
- data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +0 -5
- data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +2 -2
- data/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb +7 -0
- data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +2 -2
- data/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +21 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +0 -3
- data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +25 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb +0 -2
- data/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +4 -6
- data/app/views/decidim/decidim_awesome/admin/config/show.html.erb +1 -2
- data/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb +4 -0
- data/app/views/decidim/decidim_awesome/custom_fields/_form_render.html.erb +6 -0
- data/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +3 -32
- data/app/views/decidim/proposals/admin/proposals/_form.html.erb +101 -0
- data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +83 -0
- data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +1 -0
- data/app/views/layouts/decidim/admin/decidim_awesome.html.erb +25 -11
- data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +8 -1
- data/app/views/layouts/decidim/decidim_awesome/_custom_styles.html.erb +1 -1
- data/app/views/v0.23/decidim/proposals/collaborative_drafts/_show.html.erb +134 -0
- data/app/views/v0.23/layouts/decidim/_head.html.erb +2 -2
- data/app/views/v0.23/layouts/decidim/admin/_header.html.erb +2 -2
- data/app/views/v0.24/decidim/proposals/collaborative_drafts/_show.html.erb +128 -0
- data/app/views/{v0.22 → v0.24}/layouts/decidim/_head.html.erb +4 -2
- data/app/views/{v0.22 → v0.24}/layouts/decidim/admin/_header.html.erb +3 -2
- data/config/locales/ca.yml +75 -3
- data/config/locales/cs.yml +75 -3
- data/config/locales/en.yml +104 -11
- data/config/locales/es.yml +74 -2
- data/config/locales/eu.yml +76 -4
- data/config/locales/fr.yml +214 -142
- data/config/locales/it.yml +284 -0
- data/config/locales/ja.yml +284 -0
- data/config/locales/nl.yml +208 -136
- data/config/locales/sv.yml +109 -37
- data/db/migrate/20210628150825_change_awesome_config_var_type.rb +12 -0
- data/lib/decidim/decidim_awesome/admin_engine.rb +16 -4
- data/lib/decidim/decidim_awesome/awesome_helpers.rb +17 -10
- data/lib/decidim/decidim_awesome/checksums.yml +19 -9
- data/lib/decidim/decidim_awesome/config.rb +54 -9
- data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +27 -21
- data/lib/decidim/decidim_awesome/custom_fields.rb +94 -0
- data/lib/decidim/decidim_awesome/engine.rb +64 -8
- data/lib/decidim/decidim_awesome/iframe_component/component.rb +1 -1
- data/lib/decidim/decidim_awesome/map_component/component.rb +8 -2
- data/lib/decidim/decidim_awesome/menu_hacker.rb +17 -15
- data/lib/decidim/decidim_awesome/system_checker.rb +1 -1
- data/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb +116 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/current_config_examples.rb +143 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +4 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +428 -0
- data/lib/decidim/decidim_awesome/version.rb +2 -2
- data/lib/decidim/decidim_awesome.rb +41 -8
- data/vendor/assets/javascripts/codemirror.js +9801 -0
- data/vendor/assets/javascripts/delta.min.js +405 -0
- data/vendor/assets/javascripts/delta.min.js.map +1 -0
- data/vendor/assets/javascripts/europa.min.js +4 -0
- data/vendor/assets/javascripts/form-builder.min.js +19 -0
- data/vendor/assets/javascripts/form-render.min.js +19 -0
- data/vendor/assets/javascripts/inscrybmde.min.js +1 -1
- data/vendor/assets/javascripts/jquery-ui.min.js +13 -0
- data/vendor/assets/javascripts/jquery.truncate.js +105 -0
- data/vendor/assets/javascripts/keymap/sublime.js +720 -0
- data/vendor/assets/javascripts/mode/css/css.js +864 -0
- data/vendor/assets/javascripts/select2.js +6147 -0
- data/vendor/assets/langs/en-US.lang +110 -0
- data/vendor/assets/stylesheets/codemirror.css +350 -0
- data/vendor/assets/stylesheets/inscrybmde.min.scss +194 -0
- data/vendor/assets/stylesheets/jquery-ui.min.css +7 -0
- data/vendor/assets/stylesheets/select2-foundation-theme.css +249 -0
- data/vendor/assets/stylesheets/select2.css +515 -0
- metadata +101 -34
- data/app/assets/images/decidim/decidim_awesome/loading.gif +0 -0
- data/app/assets/javascripts/decidim/decidim_awesome/admin.js +0 -2
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_map.js.es6 +0 -225
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_proposals.js.es6 +0 -82
- data/app/assets/javascripts/decidim/decidim_awesome/editors/markdown_view.js.es6 +0 -12
- data/app/assets/stylesheets/decidim/decidim_awesome/application.scss +0 -8
- data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_view.scss +0 -27
- data/app/awesome_overrides/presenters/decidim/proposals/proposal_presenter_override.rb +0 -64
- data/lib/decidim/decidim_awesome/content_renderers/markdown_renderer.rb +0 -18
- data/lib/decidim/decidim_awesome/content_renderers.rb +0 -9
- data/vendor/assets/stylesheets/inscrybmde.min.css +0 -8
@@ -0,0 +1,27 @@
|
|
1
|
+
.awesome-edit-config{
|
2
|
+
.scoped_styles_container,
|
3
|
+
.proposal_custom_fields_container{
|
4
|
+
.form-error{
|
5
|
+
margin: 0;
|
6
|
+
}
|
7
|
+
|
8
|
+
>.CodeMirror{
|
9
|
+
border-top-left-radius: 5px;
|
10
|
+
border-top-right-radius: 5px;
|
11
|
+
border-top: .5em solid #e0e0e0;
|
12
|
+
border-right: .5em solid #e0e0e0;
|
13
|
+
border-bottom: .5em solid #e0e0e0;
|
14
|
+
min-height: 6em;
|
15
|
+
height: auto;
|
16
|
+
max-height: 40em;
|
17
|
+
resize: vertical;
|
18
|
+
overflow: vertical !important;
|
19
|
+
|
20
|
+
>.CodeMirror-scroll{
|
21
|
+
>.CodeMirror-gutters{
|
22
|
+
background: #e0e0e0;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
@@ -28,10 +28,22 @@
|
|
28
28
|
&.component_id{
|
29
29
|
background-color: #ee449c;
|
30
30
|
}
|
31
|
+
|
32
|
+
&.constraint{
|
33
|
+
&-none{
|
34
|
+
background-color: #ff3000;
|
35
|
+
}
|
36
|
+
}
|
31
37
|
}
|
32
38
|
|
33
39
|
a{
|
34
40
|
margin-left: 1rem;
|
35
41
|
}
|
42
|
+
|
43
|
+
&.inactive{
|
44
|
+
.label:not(.constraint-none){
|
45
|
+
filter: saturate(10%);
|
46
|
+
}
|
47
|
+
}
|
36
48
|
}
|
37
49
|
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
// hide custom-fields inside tabs, an extra (unique) container is used instead
|
2
|
+
.tabs-content {
|
3
|
+
.proposal_custom_field {
|
4
|
+
display: none;
|
5
|
+
}
|
6
|
+
}
|
7
|
+
|
8
|
+
.proposal_custom_fields{
|
9
|
+
&_editor{
|
10
|
+
background-color: #e0e0e0;
|
11
|
+
padding: .5em .5em 1em;
|
12
|
+
border-top-left-radius: 5px;
|
13
|
+
border-top-right-radius: 5px;
|
14
|
+
|
15
|
+
label{
|
16
|
+
display: inline-block;
|
17
|
+
max-width: 100%;
|
18
|
+
font-weight: 600 !important;
|
19
|
+
}
|
20
|
+
|
21
|
+
li[type]{
|
22
|
+
display: inherit;
|
23
|
+
width: 100%;
|
24
|
+
height: inherit;
|
25
|
+
margin: inherit;
|
26
|
+
border: inherit;
|
27
|
+
box-shadow: inherit;
|
28
|
+
font-size: inherit;
|
29
|
+
font-weight: inherit;
|
30
|
+
line-height: inherit;
|
31
|
+
color: inherit;
|
32
|
+
}
|
33
|
+
|
34
|
+
.form-group{
|
35
|
+
background-color: inherit;
|
36
|
+
margin: 0;
|
37
|
+
padding: 0;
|
38
|
+
}
|
39
|
+
|
40
|
+
.form-wrap.form-builder .form-group{
|
41
|
+
margin-bottom: 10px !important;
|
42
|
+
}
|
43
|
+
|
44
|
+
.form-control{
|
45
|
+
color: #555;
|
46
|
+
background-color: #fff;
|
47
|
+
border: 1px solid #ccc;
|
48
|
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
|
49
|
+
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
50
|
+
margin: 0;
|
51
|
+
padding: 6px 12px;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
&_container{
|
56
|
+
.constraints-editor{
|
57
|
+
border-top-left-radius: 0;
|
58
|
+
border-top-right-radius: 0;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
// Custom fields tunning
|
64
|
+
.rendered-form .form-control.ql-container{
|
65
|
+
height: auto !important;
|
66
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
@import "select2";
|
2
|
+
@import "select2-foundation-theme";
|
3
|
+
|
4
|
+
.multiusers-select-container{
|
5
|
+
form label{
|
6
|
+
margin-bottom: 1rem;
|
7
|
+
}
|
8
|
+
|
9
|
+
.switch-paddle{
|
10
|
+
display: inline-block;
|
11
|
+
vertical-align: middle;
|
12
|
+
margin-right: 1em;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
.select2-container--foundation .select2-selection--multiple .select2-selection__choice{
|
17
|
+
display: inline-block;
|
18
|
+
float: none;
|
19
|
+
font-weight: normal;
|
20
|
+
|
21
|
+
.is-admin{
|
22
|
+
&::before{
|
23
|
+
content: '⛔';
|
24
|
+
display: inline-block;
|
25
|
+
margin-right: .3em;
|
26
|
+
}
|
27
|
+
|
28
|
+
text-decoration: line-through;
|
29
|
+
color: #bbb;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
.form-conversations-submit{
|
34
|
+
margin-top: 2rem;
|
35
|
+
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
//= require github.min
|
2
|
+
//= require codemirror
|
2
3
|
//= require inscrybmde.min
|
3
4
|
//= require_self
|
4
5
|
|
@@ -6,6 +7,10 @@
|
|
6
7
|
@import "decidim/utils/settings";
|
7
8
|
@import "decidim/utils/mixins";
|
8
9
|
@import "./admin/constraints";
|
10
|
+
@import "./admin/codemirror";
|
11
|
+
@import "./admin/user_picker";
|
12
|
+
@import "./admin/custom_fields";
|
13
|
+
@import "./admin/auto_edits";
|
9
14
|
@import "./editors/quill_editor";
|
10
15
|
@import "./editors/markdown_editor";
|
11
16
|
|
@@ -17,7 +22,7 @@
|
|
17
22
|
font-size: .8em;
|
18
23
|
}
|
19
24
|
|
20
|
-
.decidim_awesome
|
25
|
+
.decidim_awesome{
|
21
26
|
&.modal{
|
22
27
|
.spinner{
|
23
28
|
@include spinner(25px, #aaa, var(--secondary), 800ms);
|
@@ -33,17 +38,27 @@
|
|
33
38
|
}
|
34
39
|
}
|
35
40
|
|
36
|
-
&-form
|
41
|
+
&-form{
|
37
42
|
margin-bottom: 2em;
|
38
43
|
border-bottom: 1px solid #999;
|
39
44
|
padding-bottom: 1.5em;
|
45
|
+
.help-text {
|
46
|
+
white-space: pre-wrap;
|
47
|
+
}
|
40
48
|
}
|
41
|
-
|
49
|
+
|
50
|
+
&-form:last-child{
|
42
51
|
border-bottom: none;
|
43
52
|
padding-bottom: 0;
|
44
53
|
}
|
45
54
|
}
|
46
55
|
|
47
|
-
tbody tr.menu_hack-addition
|
56
|
+
tbody tr.menu_hack-addition{
|
48
57
|
background: rgb(255, 248, 222);
|
49
58
|
}
|
59
|
+
|
60
|
+
.secondary-nav {
|
61
|
+
li .icon {
|
62
|
+
margin-right: 0.5rem;
|
63
|
+
}
|
64
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
//= require github.min
|
2
|
+
//= require inscrybmde.min
|
3
|
+
//= require_self
|
4
|
+
|
5
|
+
@import "./editors/quill_editor";
|
6
|
+
@import "./editors/markdown_editor";
|
7
|
+
@import "./forms/autosave";
|
8
|
+
|
9
|
+
.decidim_awesome-custom_fields{
|
10
|
+
dd{
|
11
|
+
>div:last-child{
|
12
|
+
margin-bottom: 1rem;
|
13
|
+
}
|
14
|
+
|
15
|
+
&[name="textarea"]{
|
16
|
+
>div > p{
|
17
|
+
margin-top: 1rem;
|
18
|
+
margin-bottom: 0;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
// = require decidim/map
|
2
1
|
@import "decidim/decidim_awesome/awesome_map/leaflet";
|
3
2
|
|
4
3
|
// Increase z-index for components menu otherwise map hides menu extensions
|
@@ -63,4 +62,99 @@
|
|
63
62
|
border: 2px solid #bbb;
|
64
63
|
border-radius: 4px;
|
65
64
|
}
|
65
|
+
|
66
|
+
.awesome_map-title-control{
|
67
|
+
display: block;
|
68
|
+
cursor: pointer;
|
69
|
+
|
70
|
+
&::after{
|
71
|
+
content: '';
|
72
|
+
width: 0;
|
73
|
+
height: 0;
|
74
|
+
border-left: 5px solid transparent;
|
75
|
+
border-right: 5px solid transparent;
|
76
|
+
border-top: 5px solid black;
|
77
|
+
border-bottom: 0;
|
78
|
+
display: inline-block;
|
79
|
+
margin: 0 0 2px 5px;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
|
83
|
+
.active{
|
84
|
+
.awesome_map-title-control::after{
|
85
|
+
border-top: 0;
|
86
|
+
border-bottom: 5px solid black;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
#awesome_map-{
|
91
|
+
&categories-control{
|
92
|
+
display: none;
|
93
|
+
|
94
|
+
label{
|
95
|
+
margin-left: .5rem;
|
96
|
+
display: none;
|
97
|
+
|
98
|
+
i{
|
99
|
+
display: inline-block;
|
100
|
+
width: .8rem;
|
101
|
+
height: .8rem;
|
102
|
+
border-radius: 50%;
|
103
|
+
background-color: var(-- primary);
|
104
|
+
}
|
105
|
+
|
106
|
+
&.subcategory{
|
107
|
+
padding-left: 1em;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
.categories-container{
|
112
|
+
display: none;
|
113
|
+
}
|
114
|
+
|
115
|
+
&.active{
|
116
|
+
.categories-container{
|
117
|
+
display: block;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
&hashtags-control{
|
123
|
+
display: none;
|
124
|
+
|
125
|
+
label{
|
126
|
+
display: inline-block;
|
127
|
+
line-height: 1;
|
128
|
+
background-color: #f0f0f0;
|
129
|
+
border-radius: 5px;
|
130
|
+
margin: .5rem;
|
131
|
+
padding: .5rem;
|
132
|
+
|
133
|
+
span{
|
134
|
+
margin: 0 .5rem 2px 0;
|
135
|
+
}
|
136
|
+
|
137
|
+
input{
|
138
|
+
vertical-align: top;
|
139
|
+
}
|
140
|
+
}
|
141
|
+
|
142
|
+
.awesome_map-toggle_all_tags{
|
143
|
+
margin: .5rem 1rem;
|
144
|
+
font-size: .875rem;
|
145
|
+
}
|
146
|
+
|
147
|
+
.hashtags-container,
|
148
|
+
.awesome_map-toggle_all_tags{
|
149
|
+
display: none;
|
150
|
+
}
|
151
|
+
|
152
|
+
&.active{
|
153
|
+
.hashtags-container,
|
154
|
+
.awesome_map-toggle_all_tags{
|
155
|
+
display: block;
|
156
|
+
}
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|
66
160
|
}
|
@@ -1,7 +1,22 @@
|
|
1
|
+
@import "decidim/variables";
|
2
|
+
@import "decidim/utils/settings";
|
3
|
+
@import "decidim/utils/mixins";
|
4
|
+
|
1
5
|
.editor-loading{
|
2
|
-
|
6
|
+
&::before{
|
7
|
+
@include spinner(25px, $medium-gray, var(--primary), 800ms);
|
8
|
+
|
9
|
+
float: right;
|
10
|
+
content: "";
|
11
|
+
vertical-align: middle;
|
12
|
+
}
|
3
13
|
}
|
4
14
|
|
5
15
|
.editor-container{
|
6
16
|
overflow: hidden;
|
7
17
|
}
|
18
|
+
|
19
|
+
.editor.hashtags__container>p.help-text {
|
20
|
+
margin-top: -1rem;
|
21
|
+
margin-bottom: 1.5rem;
|
22
|
+
}
|
data/app/awesome_overrides/forms/decidim/proposals/proposal_wizard_create_step_form_override.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Recreate validations to take into account custom fields and ignore the length limit in proposals
|
4
|
+
Decidim::Proposals::ProposalWizardCreateStepForm.class_eval do
|
5
|
+
clear_validators!
|
6
|
+
|
7
|
+
validates :title, presence: true, etiquette: true
|
8
|
+
validates :title, length: { in: 15..150 }
|
9
|
+
validates :body, presence: true, etiquette: true, unless: ->(form) { form.override_validations? }
|
10
|
+
validates :body, proposal_length: {
|
11
|
+
minimum: 15,
|
12
|
+
maximum: ->(record) { record.override_validations? ? 0 : record.component.settings.proposal_length }
|
13
|
+
}
|
14
|
+
|
15
|
+
validate :body_is_not_bare_template, unless: ->(form) { form.override_validations? }
|
16
|
+
|
17
|
+
def override_validations?
|
18
|
+
return false if context.current_component.settings.participatory_texts_enabled
|
19
|
+
|
20
|
+
custom_fields.present?
|
21
|
+
end
|
22
|
+
|
23
|
+
def custom_fields
|
24
|
+
awesome_config = Decidim::DecidimAwesome::Config.new(context.current_organization)
|
25
|
+
awesome_config.context_from_component(context.current_component)
|
26
|
+
awesome_config.collect_sub_configs_values("proposal_custom_field")
|
27
|
+
end
|
28
|
+
end
|
@@ -2,16 +2,24 @@
|
|
2
2
|
|
3
3
|
Decidim::MenuPresenter.class_eval do
|
4
4
|
def evaluated_menu
|
5
|
-
@evaluated_menu ||= if
|
5
|
+
@evaluated_menu ||= if awesome_override?
|
6
|
+
Decidim::DecidimAwesome::MenuHacker.new(@name, @view)
|
7
|
+
else
|
6
8
|
begin
|
7
9
|
menu = Decidim::Menu.new(@name)
|
8
10
|
menu.build_for(@view)
|
9
11
|
menu
|
10
12
|
end
|
11
|
-
else
|
12
|
-
Decidim::DecidimAwesome::MenuHacker.new(@name, @view)
|
13
13
|
end
|
14
14
|
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def awesome_override?
|
19
|
+
return false unless Decidim::DecidimAwesome.config.has_key?(@name)
|
20
|
+
|
21
|
+
Decidim::DecidimAwesome.config.send(@name) != :disabled
|
22
|
+
end
|
15
23
|
end
|
16
24
|
|
17
25
|
Decidim::MenuItemPresenter.class_eval do
|
@@ -0,0 +1,74 @@
|
|
1
|
+
<section class="wrapper-home map-block home-section">
|
2
|
+
<div class="row">
|
3
|
+
|
4
|
+
<%= section_title %></h3>
|
5
|
+
|
6
|
+
<div class="row">
|
7
|
+
<div class="columns medium-12">
|
8
|
+
<%= awesome_map_for global_map_components do %>
|
9
|
+
<script id="marker-proposal-popup" type="text/x-jsrender">
|
10
|
+
<div class="map-info__content">
|
11
|
+
<h3>{{>title.translation}}</h3>
|
12
|
+
<div id="bodyContent">
|
13
|
+
<div class="description">{{:body.translation}}</div>
|
14
|
+
<div class="map__date-adress">
|
15
|
+
<div class="address card__extra">
|
16
|
+
<div class="address__icon">{{:icon}}</div>
|
17
|
+
<div class="address__details">
|
18
|
+
<span>{{>address}}</span><br>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<div class="map-info__button">
|
23
|
+
<a href="{{>link}}" class="button button--sc">
|
24
|
+
<%= t("view_proposal", scope: "decidim.decidim_awesome.map_component.map.show") %>
|
25
|
+
</a>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</script>
|
30
|
+
|
31
|
+
<script id="marker-meeting-popup" type="text/x-jsrender">
|
32
|
+
<div class="map-info__content">
|
33
|
+
<h3>{{>title.translation}}</h3>
|
34
|
+
<div id="bodyContent">
|
35
|
+
<div class="description">{{:description.translation}}</div>
|
36
|
+
<div class="map__date-adress">
|
37
|
+
<div class="card__datetime">
|
38
|
+
<div class="card__datetime__date">
|
39
|
+
{{>startTimeDay}} <span class="card__datetime__month">{{>startTimeMonth}} {{>startTimeYear}}</span>
|
40
|
+
</div>
|
41
|
+
<div class="card__datetime__time">{{>starTime}}</div>
|
42
|
+
</div>
|
43
|
+
<div class="address card__extra">
|
44
|
+
<div class="address__icon">{{:icon}}</div>
|
45
|
+
<div class="address__details">
|
46
|
+
<strong>{{:location.translation}}</strong><br>
|
47
|
+
<span>{{>address}}</span><br>
|
48
|
+
<span>{{:locationHints.translation}}</span>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
<div class="map-info__button">
|
53
|
+
<a href="{{>link}}" class="button button--sc">
|
54
|
+
<%= t("decidim.meetings.meetings_map.view_meeting") %>
|
55
|
+
</a>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
</script>
|
60
|
+
|
61
|
+
<style type="text/css">
|
62
|
+
#awesome-map .leaflet-container {
|
63
|
+
height: <%= model.settings.map_height %>px;
|
64
|
+
}
|
65
|
+
</style>
|
66
|
+
<script>
|
67
|
+
window.AwesomeMap = window.AwesomeMap || {};
|
68
|
+
window.AwesomeMap.categories = <%= all_categories.to_json.html_safe %>;
|
69
|
+
</script>
|
70
|
+
<% end %>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
</section>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module DecidimAwesome
|
5
|
+
module ContentBlocks
|
6
|
+
class MapCell < Decidim::ViewModel
|
7
|
+
include Decidim::DecidimAwesome::MapHelper
|
8
|
+
include Decidim::CardHelper
|
9
|
+
|
10
|
+
delegate :snippets, to: :controller
|
11
|
+
delegate :settings, to: :model
|
12
|
+
alias current_settings settings
|
13
|
+
|
14
|
+
def hide_controls
|
15
|
+
true
|
16
|
+
end
|
17
|
+
|
18
|
+
def all_categories
|
19
|
+
return if @all_categories.present?
|
20
|
+
|
21
|
+
@category_ids ||= Decidim::Category.pluck(:id, :decidim_participatory_space_type, :decidim_participatory_space_id).select do |category|
|
22
|
+
_id, space_type, space_id = category
|
23
|
+
space = space_type.constantize.find(space_id)
|
24
|
+
space.organization == current_organization
|
25
|
+
end.map(&:first)
|
26
|
+
|
27
|
+
@all_categories ||= Decidim::Category.where(id: @category_ids)
|
28
|
+
end
|
29
|
+
|
30
|
+
def global_map_components
|
31
|
+
@global_map_components ||= Decidim::Component.where(manifest_name: [:meetings, :proposals]).published.filter do |component|
|
32
|
+
case component.manifest.name
|
33
|
+
when :meetings
|
34
|
+
true
|
35
|
+
when :proposals
|
36
|
+
component.settings.geocoding_enabled
|
37
|
+
else
|
38
|
+
false
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def section_title
|
44
|
+
return if model.settings.title.blank?
|
45
|
+
return if model.settings.title.values.join.blank?
|
46
|
+
|
47
|
+
content_tag :h3, class: "section-heading" do
|
48
|
+
translated_attribute(model.settings.title)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<% form.fields_for :settings, form.object.settings do |settings_fields| %>
|
2
|
+
<h3><%= t("text_settings", scope: i18n_scope) %></h3>
|
3
|
+
|
4
|
+
<div class="row">
|
5
|
+
<%= settings_fields.translated :text_field, :title, label: t("title", scope: i18n_scope) %>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<h3 class="mt-m"><%= t("map_settings", scope: i18n_scope) %></h3>
|
9
|
+
|
10
|
+
<div class="row two-buttons">
|
11
|
+
<div>
|
12
|
+
<%= settings_fields.number_field :truncate, label: t("truncate", scope: i18n_scope) %>
|
13
|
+
</div>
|
14
|
+
<div>
|
15
|
+
<%= settings_fields.number_field :map_height, label: t("map_height", scope: i18n_scope) %>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div class="row two-buttons">
|
20
|
+
<div>
|
21
|
+
<%= settings_fields.text_field :map_center, label: t("map_center", scope: i18n_scope) %>
|
22
|
+
<%= t("map_center_help", scope: i18n_scope) %>
|
23
|
+
</div>
|
24
|
+
<div><%= settings_fields.number_field :map_zoom, label: t("map_zoom", scope: i18n_scope) %>
|
25
|
+
<%= t("map_zoom_help", scope: i18n_scope) %>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<div class="row two-buttons">
|
29
|
+
<div>
|
30
|
+
<%= settings_fields.check_box :menu_amendments, label: t("menu_amendments", scope: i18n_scope) %>
|
31
|
+
</div>
|
32
|
+
<div><%= settings_fields.check_box :menu_meetings, label: t("menu_meetings", scope: i18n_scope) %>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="row two-buttons">
|
36
|
+
<div><%= settings_fields.check_box :show_not_answered, label: t("show_not_answered", scope: i18n_scope) %></div>
|
37
|
+
<div><%= settings_fields.check_box :show_accepted, label: t("show_accepted", scope: i18n_scope) %>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
<div class="row two-buttons">
|
41
|
+
<div><%= settings_fields.check_box :show_withdrawn, label: t("show_withdrawn", scope: i18n_scope) %></div>
|
42
|
+
<div><%= settings_fields.check_box :show_evaluating, label: t("show_evaluating", scope: i18n_scope) %>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
<div class="row">
|
46
|
+
<%= settings_fields.check_box :show_rejected, label: t("show_rejected", scope: i18n_scope) %>
|
47
|
+
</div>
|
48
|
+
<% end %>
|
49
|
+
|
50
|
+
<style>
|
51
|
+
.two-buttons {
|
52
|
+
width: 100%;
|
53
|
+
display: flex;
|
54
|
+
justify-content: center;
|
55
|
+
align-items: center;
|
56
|
+
gap: 1em;
|
57
|
+
}
|
58
|
+
.two-buttons > div {
|
59
|
+
width: 50%;
|
60
|
+
}
|
61
|
+
</style>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module DecidimAwesome
|
5
|
+
module ContentBlocks
|
6
|
+
class MapFormCell < Decidim::ViewModel
|
7
|
+
alias form model
|
8
|
+
|
9
|
+
def content_block
|
10
|
+
options[:content_block]
|
11
|
+
end
|
12
|
+
|
13
|
+
def i18n_scope
|
14
|
+
"decidim.decidim_awesome.content_blocks.map"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module DecidimAwesome
|
5
|
+
module Admin
|
6
|
+
module NeedsConstraintHelpers
|
7
|
+
private
|
8
|
+
|
9
|
+
def create_constraint_never(var)
|
10
|
+
settings = { "participatory_space_manifest" => "none" }
|
11
|
+
subconfig = AwesomeConfig.find_or_initialize_by(var: "#{var}_#{@ident}", organization: @organization)
|
12
|
+
@constraint = ConfigConstraint.create!(
|
13
|
+
awesome_config: subconfig,
|
14
|
+
settings: settings
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
def constraint_can_be_destroyed?(constraint)
|
19
|
+
return true if constraint.awesome_config.blank?
|
20
|
+
return true if constraint.awesome_config.constraints.count > 1
|
21
|
+
|
22
|
+
case constraint.awesome_config.var.to_s
|
23
|
+
when /^proposal_custom_field/
|
24
|
+
false
|
25
|
+
else
|
26
|
+
true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|