decidim-decidim_awesome 0.7.2 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +181 -0
- data/README.md +61 -35
- data/Rakefile +11 -12
- data/app/cells/decidim/decidim_awesome/content_blocks/map/error.erb +11 -0
- data/app/cells/decidim/decidim_awesome/content_blocks/map/show.erb +1 -61
- data/app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb +11 -0
- data/app/cells/decidim/decidim_awesome/content_blocks/map_form/show.erb +8 -4
- data/app/commands/decidim/decidim_awesome/admin/create_custom_redirect.rb +51 -0
- data/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb +47 -0
- data/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb +49 -0
- data/app/commands/decidim/decidim_awesome/create_editor_image.rb +12 -5
- data/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb +58 -0
- data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +24 -24
- data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +9 -1
- data/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb +91 -0
- data/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +5 -8
- data/app/controllers/decidim/decidim_awesome/blank_component_controller.rb +19 -0
- data/app/controllers/decidim/decidim_awesome/editor_images_controller.rb +2 -3
- data/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb +1 -1
- data/app/controllers/decidim/decidim_awesome/map_component/map_controller.rb +2 -6
- data/app/forms/decidim/decidim_awesome/admin/config_form.rb +2 -0
- data/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb +45 -0
- data/app/forms/decidim/decidim_awesome/editor_image_form.rb +3 -2
- data/app/forms/decidim/decidim_awesome/proposals/proposal_wizard_create_step_form_override.rb +38 -0
- data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +22 -9
- data/app/helpers/decidim/decidim_awesome/admin/system_checker_helpers.rb +36 -0
- data/app/helpers/decidim/decidim_awesome/map_helper.rb +18 -12
- data/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb +2 -2
- data/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb +106 -0
- data/app/models/decidim/decidim_awesome/editor_image.rb +4 -9
- data/app/packs/entrypoints/decidim_admin_decidim_awesome.js +5 -0
- data/app/packs/entrypoints/decidim_admin_decidim_awesome.scss +1 -0
- data/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js +2 -0
- data/app/packs/entrypoints/decidim_decidim_awesome.js +9 -0
- data/app/packs/entrypoints/decidim_decidim_awesome.scss +1 -0
- data/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js +1 -0
- data/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js +1 -0
- data/app/packs/entrypoints/decidim_decidim_awesome_iframe.scss +1 -0
- data/app/packs/entrypoints/decidim_decidim_awesome_map.js +5 -0
- data/app/packs/entrypoints/decidim_decidim_awesome_map.scss +1 -0
- data/app/{assets → packs}/images/decidim/decidim_awesome/platoniq-logo.png +0 -0
- data/app/{assets/javascripts/decidim/decidim_awesome/admin/auto_edit.js.es6 → packs/src/decidim/decidim_awesome/admin/auto_edit.js} +39 -34
- data/app/packs/src/decidim/decidim_awesome/admin/check_redirections.js +48 -0
- data/app/{assets/javascripts/decidim/decidim_awesome/admin/codemirror.js.es6 → packs/src/decidim/decidim_awesome/admin/codemirror.js} +4 -4
- data/app/packs/src/decidim/decidim_awesome/admin/constraints.js +55 -0
- data/app/{assets/javascripts/decidim/decidim_awesome/admin/form_builder.js.es6 → packs/src/decidim/decidim_awesome/admin/custom_fields_builder.js} +23 -26
- data/app/{assets/javascripts/decidim/decidim_awesome/admin/form_exit_warn.js.es6 → packs/src/decidim/decidim_awesome/admin/form_exit_warn.js} +0 -2
- data/app/{assets/javascripts/decidim/decidim_awesome/admin/user_picker.js.es6 → packs/src/decidim/decidim_awesome/admin/user_picker.js} +3 -3
- data/app/packs/src/decidim/decidim_awesome/awesome_admin.js +23 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_application.js +17 -0
- data/app/{assets/javascripts/decidim/decidim_awesome/awesome_map/api_fetcher.js.es6 → packs/src/decidim/decidim_awesome/awesome_map/api/api_fetcher.js} +1 -15
- data/app/packs/src/decidim/decidim_awesome/awesome_map/api/fetcher.js +134 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/api/meetings_fetcher.js +59 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher.js +52 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js +129 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js +130 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js +31 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js +88 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controls_ui.js +221 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/load_map.js +51 -0
- data/app/packs/src/decidim/decidim_awesome/editors/editor.js +191 -0
- data/app/{assets/javascripts/decidim/decidim_awesome/editors/tabs_focus.js.es6 → packs/src/decidim/decidim_awesome/editors/tabs_focus.js} +4 -6
- data/app/{assets/javascripts/decidim/decidim_awesome/forms/autosave.js.es6 → packs/src/decidim/decidim_awesome/forms/autosave.js} +20 -17
- data/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js +207 -0
- data/app/{assets/javascripts/decidim/decidim_awesome/forms/rich_text_plugin.js.es6 → packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js} +23 -21
- data/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js +22 -0
- data/app/packs/src/decidim/decidim_awesome/proposals/images.js +25 -0
- data/{vendor/assets/javascripts → app/packs/src/vendor}/image-resize.min.js +0 -0
- data/{vendor/assets/javascripts → app/packs/src/vendor}/image-upload.min.js +0 -0
- data/{vendor/assets/javascripts → app/packs/src/vendor}/jquery.truncate.js +0 -0
- data/app/packs/src/vendor/leaflet.featuregroup.subgroup.js +184 -0
- data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss +2 -1
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/check_redirections.scss +28 -0
- data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +8 -6
- data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/admin/constraints.scss +13 -13
- data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +37 -10
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +41 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss +71 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss +19 -0
- data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss +3 -3
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +176 -0
- data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/editors/markdown_editor.scss +6 -4
- data/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +58 -0
- data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/forms/autosave.scss +2 -2
- data/app/packs/stylesheets/vendor/select2-foundation-theme.scss +348 -0
- data/app/presenters/decidim/decidim_awesome/menu_item_presenter_override.rb +25 -0
- data/app/presenters/decidim/decidim_awesome/menu_presenter_override.rb +23 -0
- data/app/uploaders/decidim/cw/decidim_awesome/image_uploader.rb +26 -0
- data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +4 -16
- data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +28 -22
- data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +1 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +7 -6
- data/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/admin/config/show.html.erb +3 -3
- data/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/_form.html.erb +6 -0
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/edit.html.erb +13 -0
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb +37 -0
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/new.html.erb +13 -0
- data/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb +5 -3
- data/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb +1 -1
- data/app/views/decidim/decidim_awesome/map_component/map/_api_ready.html.erb +3 -0
- data/app/views/decidim/decidim_awesome/map_component/map/_map_template.html.erb +68 -0
- data/app/views/decidim/decidim_awesome/map_component/map/{error.erb → error.html.erb} +2 -0
- data/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +3 -67
- data/app/views/decidim/proposals/admin/proposals/_form.html.erb +1 -1
- data/app/views/layouts/decidim/admin/decidim_awesome.html.erb +13 -9
- data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +0 -2
- data/app/views/{v0.24 → v0.25}/decidim/proposals/collaborative_drafts/_show.html.erb +0 -0
- data/app/views/{v0.23 → v0.25}/layouts/decidim/_head.html.erb +12 -10
- data/app/views/v0.25/layouts/decidim/admin/_header.html.erb +11 -0
- data/app/views/{v0.23 → v0.26}/decidim/proposals/collaborative_drafts/_show.html.erb +1 -7
- data/app/views/{v0.24 → v0.26}/layouts/decidim/_head.html.erb +16 -10
- data/app/views/v0.26/layouts/decidim/admin/_header.html.erb +11 -0
- data/config/assets.rb +46 -0
- data/config/i18n-tasks.yml +6 -0
- data/config/locales/ca.yml +77 -13
- data/config/locales/cs.yml +65 -1
- data/config/locales/en.yml +69 -1
- data/config/locales/es.yml +65 -1
- data/config/locales/eu.yml +0 -232
- data/config/locales/fr.yml +117 -53
- data/config/locales/it.yml +65 -1
- data/config/locales/ja.yml +66 -3
- data/config/locales/nl.yml +5 -46
- data/config/locales/pt-BR.yml +348 -0
- data/config/locales/pt-PT.yml +7 -0
- data/config/locales/pt.yml +7 -0
- data/config/locales/sv.yml +67 -182
- data/lib/decidim/decidim_awesome/admin_engine.rb +10 -15
- data/lib/decidim/decidim_awesome/awesome.rb +214 -0
- data/lib/decidim/decidim_awesome/awesome_helpers.rb +0 -7
- data/lib/decidim/decidim_awesome/checksums.yml +13 -16
- data/lib/decidim/decidim_awesome/config.rb +1 -0
- data/lib/decidim/decidim_awesome/content_parsers/editor_images_parser.rb +39 -0
- data/lib/decidim/decidim_awesome/engine.rb +27 -55
- data/lib/decidim/decidim_awesome/iframe_component/admin_engine.rb +23 -0
- data/lib/decidim/decidim_awesome/iframe_component/component.rb +6 -6
- data/lib/decidim/decidim_awesome/map_component/admin_engine.rb +23 -0
- data/lib/decidim/decidim_awesome/map_component/component.rb +6 -5
- data/lib/decidim/decidim_awesome/map_component/engine.rb +34 -0
- data/lib/decidim/decidim_awesome/menu_hacker.rb +1 -0
- data/lib/decidim/decidim_awesome/test/factories.rb +2 -2
- data/lib/decidim/decidim_awesome/test/initializer.rb +25 -0
- data/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb +30 -2
- data/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb +7 -2
- data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +18 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/controller_examples.rb +13 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb +47 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb +0 -17
- data/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +9 -17
- data/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +202 -0
- data/lib/decidim/decidim_awesome/version.rb +2 -2
- data/lib/decidim/decidim_awesome.rb +4 -152
- data/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake +37 -0
- data/lib/tasks/decidim_awesome_webpacker_tasks.rake +64 -0
- data/package.json +211 -0
- metadata +113 -113
- data/app/assets/config/decidim_admin_decidim_awesome_manifest.css +0 -3
- data/app/assets/config/decidim_admin_decidim_awesome_manifest.js +0 -2
- data/app/assets/config/decidim_decidim_awesome_manifest.css +0 -5
- data/app/assets/config/decidim_decidim_awesome_manifest.js +0 -4
- data/app/assets/config/legacy_decidim_admin_decidim_awesome_manifest.js +0 -2
- data/app/assets/config/legacy_decidim_decidim_awesome_manifest.js +0 -4
- data/app/assets/javascripts/decidim/decidim_awesome/admin/constraints.js.es6 +0 -54
- data/app/assets/javascripts/decidim/decidim_awesome/admin/legacy_form_builder.js.es6 +0 -80
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_admin.js +0 -7
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_application.js +0 -3
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/categories.js.es6 +0 -25
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/hashtags.js.es6 +0 -48
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/layers.js.es6 +0 -107
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/load_map.js.es6 +0 -15
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/map.js.es6 +0 -207
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/markers.js.es6 +0 -56
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/meetings.js.es6 +0 -132
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/proposals.js.es6 +0 -107
- data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/utilities.js.es6 +0 -57
- data/app/assets/javascripts/decidim/decidim_awesome/editors/legacy_quill_editor.js.es6 +0 -172
- data/app/assets/javascripts/decidim/decidim_awesome/editors/quill_editor.js.es6 +0 -185
- data/app/assets/javascripts/decidim/decidim_awesome/forms/custom_fields_builder.js.es6 +0 -211
- data/app/assets/javascripts/decidim/decidim_awesome/legacy_admin.js +0 -7
- data/app/assets/javascripts/decidim/decidim_awesome/legacy_application.js +0 -3
- data/app/assets/javascripts/decidim/decidim_awesome/proposals/custom_fields.js.es6 +0 -21
- data/app/assets/javascripts/decidim/decidim_awesome/proposals/images.js.es6 +0 -25
- data/app/assets/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +0 -35
- data/app/assets/stylesheets/decidim/decidim_awesome/awesome_admin.scss +0 -64
- data/app/assets/stylesheets/decidim/decidim_awesome/awesome_application.scss +0 -22
- data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/leaflet.scss.erb +0 -18
- data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +0 -160
- data/app/assets/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +0 -22
- data/app/awesome_overrides/forms/decidim/proposals/proposal_wizard_create_step_form_override.rb +0 -28
- data/app/awesome_overrides/presenters/decidim/menu_presenter_override.rb +0 -39
- data/app/controllers/concerns/decidim/decidim_awesome/admin_not_found_redirect.rb +0 -39
- data/app/controllers/decidim/decidim_awesome/iframe_component/application_controller.rb +0 -15
- data/app/controllers/decidim/decidim_awesome/map_component/application_controller.rb +0 -15
- data/app/views/v0.23/layouts/decidim/admin/_header.html.erb +0 -12
- data/app/views/v0.24/layouts/decidim/admin/_header.html.erb +0 -12
- data/lib/decidim/decidim_awesome/test/themes/css.lvh.me.css +0 -3
- data/lib/decidim/decidim_awesome/test/themes/erb.lvh.me.scss.erb +0 -2
- data/lib/decidim/decidim_awesome/test/themes/scss.lvh.me.scss +0 -1
- data/lib/decidim/decidim_awesome/test/themes/test-theme/body.scss +0 -4
- data/vendor/assets/images/layers-2x.png +0 -0
- data/vendor/assets/images/layers.png +0 -0
- data/vendor/assets/images/marker-icon.png +0 -0
- data/vendor/assets/javascripts/codemirror-4.inline-attachment.js +0 -89
- data/vendor/assets/javascripts/codemirror.js +0 -9801
- data/vendor/assets/javascripts/delta.min.js +0 -405
- data/vendor/assets/javascripts/delta.min.js.map +0 -1
- data/vendor/assets/javascripts/europa.min.js +0 -4
- data/vendor/assets/javascripts/form-builder.min.js +0 -19
- data/vendor/assets/javascripts/form-render.min.js +0 -19
- data/vendor/assets/javascripts/form-storage.js +0 -824
- data/vendor/assets/javascripts/highlight.min.js +0 -44
- data/vendor/assets/javascripts/inline-attachment.js +0 -399
- data/vendor/assets/javascripts/inscrybmde.min.js +0 -7
- data/vendor/assets/javascripts/jquery-ui.min.js +0 -13
- data/vendor/assets/javascripts/jquery.inline-attachment.js +0 -66
- data/vendor/assets/javascripts/jsrender.min.js +0 -4
- data/vendor/assets/javascripts/keymap/sublime.js +0 -720
- data/vendor/assets/javascripts/leaflet.featuregroup.subgroup.js +0 -6
- data/vendor/assets/javascripts/mode/css/css.js +0 -864
- data/vendor/assets/javascripts/select2.js +0 -6147
- data/vendor/assets/langs/en-US.lang +0 -110
- data/vendor/assets/stylesheets/codemirror.css +0 -350
- data/vendor/assets/stylesheets/default.min.css +0 -1
- data/vendor/assets/stylesheets/foundation.min.css +0 -1
- data/vendor/assets/stylesheets/github.min.css +0 -2
- data/vendor/assets/stylesheets/inscrybmde.min.scss +0 -194
- data/vendor/assets/stylesheets/jquery-ui.min.css +0 -7
- data/vendor/assets/stylesheets/select2-foundation-theme.css +0 -249
- data/vendor/assets/stylesheets/select2.css +0 -515
@@ -0,0 +1,221 @@
|
|
1
|
+
import * as L from "leaflet";
|
2
|
+
|
3
|
+
export default class ControlsUI {
|
4
|
+
constructor(awesomeMap) {
|
5
|
+
this.awesomeMap = awesomeMap;
|
6
|
+
|
7
|
+
this.main = L.control.layers(null, null, {
|
8
|
+
position: "topleft",
|
9
|
+
sortLayers: false,
|
10
|
+
collapsed: this.awesomeMap.config.collapsedMenu
|
11
|
+
// hideSingleBase: true
|
12
|
+
});
|
13
|
+
|
14
|
+
if (this.awesomeMap.config.hideControls) {
|
15
|
+
$(this.main.getContainer()).hide();
|
16
|
+
}
|
17
|
+
|
18
|
+
this.$loading = $("#awesome-map .loading-spinner");
|
19
|
+
this.onHashtag = this._orderHashtags;
|
20
|
+
|
21
|
+
this.awesomeMap.map.on("overlayadd", () => {
|
22
|
+
this.removeHiddenCategories();
|
23
|
+
});
|
24
|
+
}
|
25
|
+
|
26
|
+
attach() {
|
27
|
+
// legends
|
28
|
+
this.main.addTo(this.awesomeMap.map);
|
29
|
+
|
30
|
+
this.addSearchControls();
|
31
|
+
if (this.awesomeMap.config.menu.categories) {
|
32
|
+
this.addCategoriesControls();
|
33
|
+
}
|
34
|
+
|
35
|
+
// sub-layer hashtag title toggle
|
36
|
+
$("#awesome-map").on("click", ".awesome_map-title-control", (e) => {
|
37
|
+
e.preventDefault();
|
38
|
+
e.stopPropagation();
|
39
|
+
$("#awesome_map-categories-control").toggleClass("active");
|
40
|
+
$("#awesome_map-hashtags-control").toggleClass("active");
|
41
|
+
});
|
42
|
+
|
43
|
+
// hashtag events
|
44
|
+
$("#awesome-map").on("change", ".awesome_map-hashtags-selector", (e) => {
|
45
|
+
e.preventDefault();
|
46
|
+
e.stopPropagation();
|
47
|
+
const tag = $(e.target).closest("label").data("layer");
|
48
|
+
// console.log("changed, layer", tag, "checked", e.target.checked, e);
|
49
|
+
if (tag) {
|
50
|
+
this.updateHashtagLayers();
|
51
|
+
}
|
52
|
+
});
|
53
|
+
|
54
|
+
// select/deselect all tags
|
55
|
+
$("#awesome-map").on("click", ".awesome_map-toggle_all_tags", (e) => {
|
56
|
+
e.preventDefault();
|
57
|
+
e.stopPropagation();
|
58
|
+
$("#awesome-map .awesome_map-hashtags-selector").prop("checked", $("#awesome-map .awesome_map-hashtags-selector:checked").length < $("#awesome-map .awesome_map-hashtags-selector").length);
|
59
|
+
this.updateHashtagLayers();
|
60
|
+
});
|
61
|
+
}
|
62
|
+
|
63
|
+
addSearchControls() {
|
64
|
+
$(this.main.getContainer()).contents("form").append(`<div id="awesome_map-categories-control" class="active"><b class="awesome_map-title-control">${window.DecidimAwesome.texts.categories}</b><div class="categories-container"></div></div>
|
65
|
+
<div id="awesome_map-hashtags-control"><b class="awesome_map-title-control">${window.DecidimAwesome.texts.hashtags}</b><div class="hashtags-container"></div><a href="#" class="awesome_map-toggle_all_tags">${window.DecidimAwesome.texts.select_deselect_all}</a></div>`);
|
66
|
+
}
|
67
|
+
|
68
|
+
addCategoriesControls() {
|
69
|
+
this.awesomeMap.categories.forEach((category) => {
|
70
|
+
// add control layer for this category
|
71
|
+
const label = `<i class="awesome_map-category_${category.id}"></i> ${category.name}`;
|
72
|
+
this.awesomeMap.layers[category.id] = {
|
73
|
+
label: label,
|
74
|
+
group: new L.FeatureGroup.SubGroup(this.awesomeMap.cluster)
|
75
|
+
};
|
76
|
+
this.awesomeMap.layers[category.id].group.addTo(this.awesomeMap.map);
|
77
|
+
$("#awesome_map-categories-control .categories-container").append(`<label data-layer="${category.id}" class="awesome_map-category-${category.id}${category.parent
|
78
|
+
? " subcategory"
|
79
|
+
: ""}" data-parent="${category.parent}"><input type="checkbox" class="awesome_map-categories-selector" checked><span>${label}</span></label>`);
|
80
|
+
})
|
81
|
+
|
82
|
+
// category events
|
83
|
+
$("#awesome-map").on("change", ".awesome_map-categories-selector", (e) => {
|
84
|
+
e.preventDefault();
|
85
|
+
e.stopPropagation();
|
86
|
+
|
87
|
+
const id = $(e.target).closest("label").data("layer");
|
88
|
+
const cat = this.awesomeMap.getCategory(id);
|
89
|
+
// console.log("changed, layer", id, "cat", cat, "checked", e.target.checked, e);
|
90
|
+
if (cat) {
|
91
|
+
const layer = this.awesomeMap.layers[cat.id];
|
92
|
+
if (e.target.checked) {
|
93
|
+
// show group of markers
|
94
|
+
this.awesomeMap.map.addLayer(layer.group);
|
95
|
+
} else {
|
96
|
+
// hide group of markers
|
97
|
+
this.awesomeMap.map.removeLayer(layer.group);
|
98
|
+
// cat.children().forEach((c) => {
|
99
|
+
// let $el = $(`.awesome_map-category-${c.id}`);
|
100
|
+
// if($el.contents("input").prop("checked")) {
|
101
|
+
// $el.click();
|
102
|
+
// }
|
103
|
+
// });
|
104
|
+
}
|
105
|
+
// if it's a children, put the parent to indeterminate
|
106
|
+
this._indeterminateParentInput(cat);
|
107
|
+
// sync tags
|
108
|
+
this.updateHashtagLayers();
|
109
|
+
}
|
110
|
+
});
|
111
|
+
}
|
112
|
+
|
113
|
+
// Hashtags are collected directly from proposals (this is different than categories)
|
114
|
+
addHashtagsControls(hashtags, marker) {
|
115
|
+
// show hashtag layer
|
116
|
+
if (hashtags && hashtags.length) {
|
117
|
+
$("#awesome_map-hashtags-control").show();
|
118
|
+
hashtags.forEach((hashtag) => {
|
119
|
+
// Add layer if not exists, otherwise just add the marker to the group
|
120
|
+
if (!this.awesomeMap.layers[hashtag.tag]) {
|
121
|
+
this.awesomeMap.layers[hashtag.tag] = {
|
122
|
+
label: hashtag.name,
|
123
|
+
group: new L.FeatureGroup.SubGroup(this.awesomeMap.cluster)
|
124
|
+
};
|
125
|
+
this.awesomeMap.map.addLayer(this.awesomeMap.layers[hashtag.tag].group);
|
126
|
+
$("#awesome_map-hashtags-control .hashtags-container").append(`<label data-layer="${hashtag.tag}" class="awesome_map-hashtag-${hashtag.tag}"><input type="checkbox" class="awesome_map-hashtags-selector" checked><span>${hashtag.name}</span></label>`);
|
127
|
+
// Call a trigger, might be in service for customizations
|
128
|
+
this.onHashtag(hashtag, $("#awesome_map-hashtags-control .hashtags-container"));
|
129
|
+
}
|
130
|
+
this.awesomeMap.layers[hashtag.tag].group.addLayer(marker);
|
131
|
+
|
132
|
+
const $label = $(`label.awesome_map-hashtag-${hashtag.tag}`);
|
133
|
+
// update number of items
|
134
|
+
$label.attr("title", `${parseInt($label.attr("title") || 0) + 1} ${window.DecidimAwesome.texts.items}`);
|
135
|
+
});
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
showCategory(cat) {
|
140
|
+
$("#awesome_map-categories-control").show();
|
141
|
+
// show category if hidden
|
142
|
+
const $label = $(`label.awesome_map-category-${cat.id}`);
|
143
|
+
const $parent = $(`label.awesome_map-category-${cat.parent}`);
|
144
|
+
$label.show();
|
145
|
+
// update number of items
|
146
|
+
$label.attr("title", `${parseInt($label.attr("title") || 0) + 1} ${window.DecidimAwesome.texts.items}`);
|
147
|
+
// show parent if apply
|
148
|
+
$parent.show();
|
149
|
+
$parent.attr("title", `${parseInt($parent.attr("title") || 0) + 1} ${window.DecidimAwesome.texts.items}`);
|
150
|
+
}
|
151
|
+
|
152
|
+
removeHiddenComponents() {
|
153
|
+
$(".awesome_map-component").each((_idx, el) => {
|
154
|
+
const layer = this.awesomeMap.layers[$(el).data("layer")];
|
155
|
+
const $input = $(el).closest("div").find("input:not(:checked)");
|
156
|
+
if (layer && $input.length) {
|
157
|
+
this.awesomeMap.map.addLayer(layer.group);
|
158
|
+
this.awesomeMap.map.removeLayer(layer.group);
|
159
|
+
}
|
160
|
+
});
|
161
|
+
}
|
162
|
+
|
163
|
+
removeHiddenCategories() {
|
164
|
+
$(".awesome_map-categories-selector:not(:checked)").each((_idx, el) => {
|
165
|
+
const layer = this.awesomeMap.layers[$(el).closest("label").data("layer")];
|
166
|
+
if (layer) {
|
167
|
+
this.awesomeMap.map.addLayer(layer.group);
|
168
|
+
this.awesomeMap.map.removeLayer(layer.group);
|
169
|
+
}
|
170
|
+
});
|
171
|
+
}
|
172
|
+
|
173
|
+
updateHashtagLayers() {
|
174
|
+
// hide all
|
175
|
+
$(".awesome_map-hashtags-selector").each((_idx, el) => {
|
176
|
+
const layer = this.awesomeMap.layers[$(el).closest("label").data("layer")];
|
177
|
+
if (layer) {
|
178
|
+
this.awesomeMap.map.removeLayer(layer.group);
|
179
|
+
}
|
180
|
+
});
|
181
|
+
// show selected only
|
182
|
+
$(".awesome_map-hashtags-selector:checked").each((_idx, el) => {
|
183
|
+
const layer = this.awesomeMap.layers[$(el).closest("label").data("layer")];
|
184
|
+
if (layer) {
|
185
|
+
this.awesomeMap.map.addLayer(layer.group);
|
186
|
+
}
|
187
|
+
});
|
188
|
+
// hide non-selected categories
|
189
|
+
this.removeHiddenComponents();
|
190
|
+
this.removeHiddenCategories();
|
191
|
+
}
|
192
|
+
|
193
|
+
updateStats(uid, total) {
|
194
|
+
// update component stats
|
195
|
+
const $component = $(`#awesome_map-${uid}`);
|
196
|
+
$component.attr("title", `${total} ${window.DecidimAwesome.texts.items}`);
|
197
|
+
}
|
198
|
+
|
199
|
+
_indeterminateParentInput(cat) {
|
200
|
+
if (cat.parent) {
|
201
|
+
let $input = $(`.awesome_map-category-${cat.parent}`).contents("input");
|
202
|
+
let $subcats = $(`[class^="awesome_map-category-"][data-parent="${cat.parent}"]:visible`);
|
203
|
+
let num_checked = $subcats.contents("input:checked").length;
|
204
|
+
$input.prop("indeterminate", num_checked != $subcats.length && num_checked != 0);
|
205
|
+
}
|
206
|
+
}
|
207
|
+
|
208
|
+
// order hashtags alphabetically
|
209
|
+
_orderHashtags(_hashtag, $div) {
|
210
|
+
let $last = $div.contents("label:last");
|
211
|
+
if ($last.prev("label").length) {
|
212
|
+
// move the label to order it alphabetically
|
213
|
+
$div.contents("label").each((_idx, el) => {
|
214
|
+
if ($(el).text().localeCompare($last.text()) > 0) {
|
215
|
+
$(el).before($last);
|
216
|
+
return false;
|
217
|
+
}
|
218
|
+
});
|
219
|
+
}
|
220
|
+
}
|
221
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import AwesomeMap from "src/decidim/decidim_awesome/awesome_map/awesome_map"
|
2
|
+
|
3
|
+
$(() => {
|
4
|
+
const sanitizeCenter = (string) => {
|
5
|
+
if (string) {
|
6
|
+
const parts = string.split(",")
|
7
|
+
if (parts.length >= 2) {
|
8
|
+
const lat = parseFloat(parts[0]);
|
9
|
+
const lng = parseFloat(parts[1]);
|
10
|
+
if (lat && lng) {
|
11
|
+
return [lat, lng];
|
12
|
+
}
|
13
|
+
}
|
14
|
+
}
|
15
|
+
};
|
16
|
+
|
17
|
+
const config = {
|
18
|
+
length: $("#awesome-map").data("truncate") || 254,
|
19
|
+
center: sanitizeCenter($("#awesome-map").data("map-center")),
|
20
|
+
zoom: $("#awesome-map").data("map-zoom"),
|
21
|
+
menu: {
|
22
|
+
amendments: $("#awesome-map").data("menu-amendments"),
|
23
|
+
meetings: $("#awesome-map").data("menu-meetings"),
|
24
|
+
categories: $("#awesome-map").data("menu-categories"),
|
25
|
+
hashtags: $("#awesome-map").data("menu-hashtags"),
|
26
|
+
mergeComponents: $("#awesome-map").data("menu-merge-components")
|
27
|
+
},
|
28
|
+
show: {
|
29
|
+
withdrawn: $("#awesome-map").data("show-withdrawn"),
|
30
|
+
accepted: $("#awesome-map").data("show-accepted"),
|
31
|
+
evaluating: $("#awesome-map").data("show-evaluating"),
|
32
|
+
notAnswered: $("#awesome-map").data("show-not-answered"),
|
33
|
+
rejected: $("#awesome-map").data("show-rejected")
|
34
|
+
},
|
35
|
+
hideControls: $("#awesome-map").data("hide-controls"),
|
36
|
+
collapsedMenu: $("#awesome-map").data("collapsed"),
|
37
|
+
components: $("#awesome-map").data("components")
|
38
|
+
};
|
39
|
+
|
40
|
+
// build awesome map (if exist)
|
41
|
+
$("#awesome-map .google-map").on("ready.decidim", (evt, map) => {
|
42
|
+
// bindPopup doesn't work for some unknown cause and these handler neither so we're cancelling them
|
43
|
+
map.off("popupopen");
|
44
|
+
map.off("popupclose");
|
45
|
+
|
46
|
+
// console.log("ready map", map);
|
47
|
+
|
48
|
+
window.AwesomeMap = new AwesomeMap(map, config);
|
49
|
+
window.AwesomeMap.loadControllers();
|
50
|
+
});
|
51
|
+
});
|
@@ -0,0 +1,191 @@
|
|
1
|
+
/* eslint-disable require-jsdoc */
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Since version 0.25 we follow a different strategy and opt to destroy and override completely the original editor
|
5
|
+
* That's because editors are instantiated directly instead of creating a global function to instantiate them
|
6
|
+
*/
|
7
|
+
|
8
|
+
import lineBreakButtonHandler from "src/decidim/editor/linebreak_module"
|
9
|
+
import InscrybMDE from "inscrybmde"
|
10
|
+
import Europa from "europa"
|
11
|
+
import "inline-attachment/src/inline-attachment";
|
12
|
+
import "inline-attachment/src/codemirror-4.inline-attachment";
|
13
|
+
import "inline-attachment/src/jquery.inline-attachment";
|
14
|
+
import hljs from "highlight.js";
|
15
|
+
import "highlight.js/styles/github.css";
|
16
|
+
|
17
|
+
// In 0.26 these files come with Decidim in the folder src/decidim/vendor so the awesome one's could be removed
|
18
|
+
import "src/vendor/image-resize.min"
|
19
|
+
import "src/vendor/image-upload.min"
|
20
|
+
|
21
|
+
const DecidimAwesome = window.DecidimAwesome || {};
|
22
|
+
const quillFormats = ["bold", "italic", "link", "underline", "header", "list", "video", "image", "alt", "break", "width", "style", "code", "blockquote", "indent"];
|
23
|
+
|
24
|
+
// A tricky way to destroy the quill editor
|
25
|
+
export function destroyQuillEditor(container) {
|
26
|
+
if (container) {
|
27
|
+
const content = $(container).find(".ql-editor").html();
|
28
|
+
$(container).html(content);
|
29
|
+
$(container).siblings(".ql-toolbar").remove();
|
30
|
+
$(container).find("*[class*='ql-']").removeClass((index, class_name) => (class_name.match(/(^|\s)ql-\S+/g) || []).join(" "));
|
31
|
+
$(container).removeClass((index, class_name) => (class_name.match(/(^|\s)ql-\S+/g) || []).join(" "));
|
32
|
+
if ($(container).next().is("p.help-text")) {
|
33
|
+
$(container).next().remove();
|
34
|
+
}
|
35
|
+
}
|
36
|
+
else {
|
37
|
+
console.error(`editor [${container}] not exists`);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
export function createQuillEditor(container) {
|
42
|
+
const toolbar = $(container).data("toolbar");
|
43
|
+
const disabled = $(container).data("disabled");
|
44
|
+
|
45
|
+
let quillToolbar = [
|
46
|
+
["bold", "italic", "underline", "linebreak"],
|
47
|
+
[{ list: "ordered" }, { list: "bullet" }],
|
48
|
+
["link", "clean"],
|
49
|
+
["code", "blockquote"],
|
50
|
+
[{ "indent": "-1"}, { "indent": "+1" }]
|
51
|
+
];
|
52
|
+
|
53
|
+
let addImage = false;
|
54
|
+
|
55
|
+
if (toolbar === "full") {
|
56
|
+
quillToolbar = [
|
57
|
+
[{ header: [2, 3, 4, 5, 6, false] }],
|
58
|
+
...quillToolbar
|
59
|
+
];
|
60
|
+
if (DecidimAwesome.allow_images_in_full_editor) {
|
61
|
+
quillToolbar.push(["video", "image"]);
|
62
|
+
addImage = true;
|
63
|
+
} else {
|
64
|
+
quillToolbar.push(["video"]);
|
65
|
+
}
|
66
|
+
} else if (toolbar === "basic") {
|
67
|
+
if (DecidimAwesome.allow_images_in_small_editor) {
|
68
|
+
quillToolbar.push(["video", "image"]);
|
69
|
+
addImage = true;
|
70
|
+
} else {
|
71
|
+
quillToolbar.push(["video"]);
|
72
|
+
}
|
73
|
+
} else if (DecidimAwesome.allow_images_in_small_editor) {
|
74
|
+
quillToolbar.push(["image"]);
|
75
|
+
addImage = true;
|
76
|
+
}
|
77
|
+
|
78
|
+
let modules = {
|
79
|
+
linebreak: {},
|
80
|
+
toolbar: {
|
81
|
+
container: quillToolbar,
|
82
|
+
handlers: {
|
83
|
+
"linebreak": lineBreakButtonHandler
|
84
|
+
}
|
85
|
+
}
|
86
|
+
};
|
87
|
+
|
88
|
+
const $input = $(container).siblings('input[type="hidden"]');
|
89
|
+
container.innerHTML = $input.val() || "";
|
90
|
+
const token = $('meta[name="csrf-token"]').attr("content");
|
91
|
+
if (addImage) {
|
92
|
+
modules.imageResize = {
|
93
|
+
modules: ["Resize", "DisplaySize"]
|
94
|
+
}
|
95
|
+
modules.imageUpload = {
|
96
|
+
url: $(container).data("uploadImagesPath") || DecidimAwesome.editor_uploader_path,
|
97
|
+
method: "POST",
|
98
|
+
name: "image",
|
99
|
+
withCredentials: false,
|
100
|
+
headers: { "X-CSRF-Token": token },
|
101
|
+
callbackOK: (serverResponse, next) => {
|
102
|
+
$("div.ql-toolbar").last().removeClass("editor-loading")
|
103
|
+
next(serverResponse.url);
|
104
|
+
},
|
105
|
+
callbackKO: (serverError) => {
|
106
|
+
$("div.ql-toolbar").last().removeClass("editor-loading")
|
107
|
+
console.error(`Image upload error: ${serverError.message}`);
|
108
|
+
},
|
109
|
+
checkBeforeSend: (file, next) => {
|
110
|
+
$("div.ql-toolbar").last().addClass("editor-loading")
|
111
|
+
next(file);
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
const quill = new Quill(container, {
|
116
|
+
modules: modules,
|
117
|
+
formats: quillFormats,
|
118
|
+
theme: "snow"
|
119
|
+
});
|
120
|
+
|
121
|
+
if (disabled) {
|
122
|
+
quill.disable();
|
123
|
+
}
|
124
|
+
|
125
|
+
quill.on("text-change", () => {
|
126
|
+
const text = quill.getText();
|
127
|
+
|
128
|
+
// Triggers CustomEvent with the cursor position
|
129
|
+
// It is required in input_mentions.js
|
130
|
+
let event = new CustomEvent("quill-position", {
|
131
|
+
detail: quill.getSelection()
|
132
|
+
});
|
133
|
+
container.dispatchEvent(event);
|
134
|
+
|
135
|
+
if (text === "\n" || text === "\n\n") {
|
136
|
+
$input.val("");
|
137
|
+
} else {
|
138
|
+
$input.val(quill.root.innerHTML);
|
139
|
+
}
|
140
|
+
});
|
141
|
+
// After editor is ready, linebreak_module deletes two extraneous new lines
|
142
|
+
quill.emitter.emit("editor-ready");
|
143
|
+
|
144
|
+
if (addImage) {
|
145
|
+
const text = $(container).data("dragAndDropHelpText") || DecidimAwesome.texts.drag_and_drop_image;
|
146
|
+
$(container).after(`<p class="help-text" style="margin-top:-1.5rem;">${text}</p>`);
|
147
|
+
}
|
148
|
+
|
149
|
+
// After editor is ready, linebreak_module deletes two extraneous new lines
|
150
|
+
quill.emitter.emit("editor-ready");
|
151
|
+
|
152
|
+
return quill;
|
153
|
+
}
|
154
|
+
|
155
|
+
export function createMarkdownEditor(container) {
|
156
|
+
const t = DecidimAwesome.texts.drag_and_drop_image;
|
157
|
+
const token = $('meta[name="csrf-token"]').attr("content");
|
158
|
+
const $input = $(container).siblings('input[type="hidden"]');
|
159
|
+
const $faker = $('<textarea name="faker-inscrybmde"/>');
|
160
|
+
const $form = $(container).closest("form");
|
161
|
+
const europa = new Europa();
|
162
|
+
$faker.val(europa.convert($input.val()));
|
163
|
+
$faker.insertBefore($(container));
|
164
|
+
$(container).hide();
|
165
|
+
const inscrybmde = new InscrybMDE({
|
166
|
+
element: $faker[0],
|
167
|
+
spellChecker: false,
|
168
|
+
renderingConfig: {
|
169
|
+
codeSyntaxHighlighting: true,
|
170
|
+
hljs: hljs
|
171
|
+
}
|
172
|
+
});
|
173
|
+
$faker[0].InscrybMDE = inscrybmde;
|
174
|
+
|
175
|
+
// Allow image upload
|
176
|
+
if (DecidimAwesome.allow_images_in_markdown_editor) {
|
177
|
+
$(inscrybmde.gui.statusbar).prepend(`<span class="help-text" style="float:left;margin:0;text-align:left;">${t}</span>`);
|
178
|
+
inlineAttachment.editors.codemirror4.attach(inscrybmde.codemirror, {
|
179
|
+
uploadUrl: DecidimAwesome.editor_uploader_path,
|
180
|
+
uploadFieldName: "image",
|
181
|
+
jsonFieldName: "url",
|
182
|
+
extraHeaders: { "X-CSRF-Token": token }
|
183
|
+
});
|
184
|
+
}
|
185
|
+
|
186
|
+
// convert to html on submit
|
187
|
+
$form.on("submit", () => {
|
188
|
+
// e.preventDefault();
|
189
|
+
$input.val(inscrybmde.markdown(inscrybmde.value()));
|
190
|
+
});
|
191
|
+
}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
// = require_self
|
2
|
-
|
3
1
|
/**
|
4
2
|
* When switching tabs in i18n fields, autofocus on the markdown if exists
|
5
3
|
*/
|
@@ -7,18 +5,18 @@ $(() => {
|
|
7
5
|
// Event launched by foundation
|
8
6
|
$("[data-tabs]").on("change.zf.tabs", (event) => {
|
9
7
|
const $container = $(event.target).closest(".label--tabs").next(".tabs-content").find(".tabs-panel.is-active");
|
10
|
-
// fix
|
8
|
+
// fix inscrybmde if present
|
11
9
|
let $input = $container.find('[name="faker-inscrybmde"]');
|
12
10
|
if ($input.length > 0) {
|
13
11
|
$input[0].InscrybMDE.codemirror.refresh();
|
14
12
|
}
|
15
13
|
// fix custom fields if present
|
16
14
|
$input = $container.find(".proposal_custom_field:first");
|
17
|
-
if($input.length > 0) {
|
15
|
+
if ($input.length > 0) {
|
18
16
|
// saves current data to the hidden field for the lang
|
19
|
-
DecidimAwesome.
|
17
|
+
window.DecidimAwesome.CustomFieldsRenderer.storeData();
|
20
18
|
// init the current language
|
21
|
-
DecidimAwesome.
|
19
|
+
window.DecidimAwesome.CustomFieldsRenderer.init($input);
|
22
20
|
}
|
23
21
|
});
|
24
22
|
});
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
// = require_self
|
1
|
+
import FormStorage from "form-storage"
|
3
2
|
|
4
3
|
$(() => {
|
5
4
|
window.DecidimAwesome = window.DecidimAwesome || {};
|
@@ -15,10 +14,10 @@ $(() => {
|
|
15
14
|
|
16
15
|
const storeId = `awesome_autosave:${questionnaireId}`;
|
17
16
|
const storeCheckboxesId = `awesome_autosave:checkboxes:${questionnaireId}`;
|
18
|
-
const $form = $(
|
17
|
+
const $form = $("form.answer-questionnaire");
|
19
18
|
|
20
19
|
if (!$form.length) {
|
21
|
-
if(window.DecidimAwesome.questionnaire_answered) {
|
20
|
+
if (window.DecidimAwesome.questionnaire_answered) {
|
22
21
|
// console.log("Questionnaire already answered, remove any data saved");
|
23
22
|
window.localStorage.removeItem(storeId);
|
24
23
|
window.localStorage.removeItem(storeCheckboxesId);
|
@@ -27,21 +26,25 @@ $(() => {
|
|
27
26
|
return;
|
28
27
|
}
|
29
28
|
|
30
|
-
const store = new FormStorage(`#${$form.attr(
|
29
|
+
const store = new FormStorage(`#${$form.attr("id")}`, {
|
31
30
|
name: storeId,
|
32
31
|
ignores: [
|
33
32
|
// '[type="hidden"]',
|
34
33
|
'[name="utf8"]',
|
35
34
|
'[name="authenticity_token"]',
|
36
|
-
|
35
|
+
"[disabled]",
|
37
36
|
'[type="checkbox"]' // there are problems with matrix questions
|
38
|
-
]
|
37
|
+
]
|
39
38
|
});
|
40
39
|
|
41
40
|
const showMsg = (msg, error = false, default_time = 700) => {
|
42
|
-
const time = error
|
43
|
-
|
44
|
-
|
41
|
+
const time = error
|
42
|
+
? 5000
|
43
|
+
: default_time;
|
44
|
+
const $div = $(`<div class="awesome_autosave-notice${error
|
45
|
+
? " error"
|
46
|
+
: ""}">${msg}</div>`).
|
47
|
+
appendTo($form);
|
45
48
|
setTimeout(() => {
|
46
49
|
$div.fadeOut(500, () => {
|
47
50
|
$div.remove();
|
@@ -54,7 +57,7 @@ $(() => {
|
|
54
57
|
return;
|
55
58
|
}
|
56
59
|
|
57
|
-
if(window.localStorage.getItem(storeId)) {
|
60
|
+
if (window.localStorage.getItem(storeId)) {
|
58
61
|
showMsg(window.DecidimAwesome.texts.autosaved_retrieved, false, 5000);
|
59
62
|
}
|
60
63
|
|
@@ -63,14 +66,14 @@ $(() => {
|
|
63
66
|
// restore checkboxes
|
64
67
|
try {
|
65
68
|
let checkboxes = JSON.parse(window.localStorage.getItem(storeCheckboxesId));
|
66
|
-
for(let id in checkboxes) {
|
67
|
-
$(
|
69
|
+
for (let id in checkboxes) {
|
70
|
+
$(`#${id}`).prop("checked", checkboxes[id]);
|
68
71
|
}
|
69
|
-
} catch(e){
|
72
|
+
} catch (e) {
|
70
73
|
console.log("No checkboxes found");
|
71
74
|
}
|
72
|
-
//
|
73
|
-
$form.find('input, textarea, select').change();
|
75
|
+
// this trigger the "change" event, it seems that it is too much
|
76
|
+
// $form.find('input, textarea, select').change();
|
74
77
|
|
75
78
|
const save = () => {
|
76
79
|
store.save();
|
@@ -84,7 +87,7 @@ $(() => {
|
|
84
87
|
};
|
85
88
|
|
86
89
|
// save changes when modifications
|
87
|
-
$form.find(
|
90
|
+
$form.find("input, textarea, select").on("change", () => {
|
88
91
|
save();
|
89
92
|
});
|
90
93
|
});
|