decidim-participatory_documents 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.erb-lint.yml +30 -0
- data/.eslintignore +3 -0
- data/.eslintrc.json +3 -0
- data/.github/workflows/lint.yml +43 -0
- data/.github/workflows/test.yml +60 -0
- data/.gitignore +27 -0
- data/.rspec +3 -0
- data/.rubocop-disabled.yml +11 -0
- data/.rubocop.yml +4 -0
- data/.rubocop_rails.yml +91 -0
- data/.rubocop_ruby.yml +1768 -0
- data/.ruby-version +1 -0
- data/.simplecov +13 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +39 -0
- data/Gemfile.lock +817 -0
- data/LICENSE-AGPLv3.txt +661 -0
- data/README.md +166 -0
- data/Rakefile +44 -0
- data/app/cells/decidim/participatory_documents/edit_suggestion_note_modal/show.erb +20 -0
- data/app/cells/decidim/participatory_documents/edit_suggestion_note_modal_cell.rb +35 -0
- data/app/cells/decidim/participatory_documents/suggestion/admin_answer.erb +7 -0
- data/app/cells/decidim/participatory_documents/suggestion/show.erb +11 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/avatar.erb +3 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/date.erb +1 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/name.erb +3 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/show.erb +9 -0
- data/app/cells/decidim/participatory_documents/suggestion_author_cell.rb +50 -0
- data/app/cells/decidim/participatory_documents/suggestion_cell.rb +41 -0
- data/app/commands/decidim/participatory_documents/admin/answer_suggestion.rb +62 -0
- data/app/commands/decidim/participatory_documents/admin/assign_suggestions_to_valuator.rb +59 -0
- data/app/commands/decidim/participatory_documents/admin/create_document.rb +55 -0
- data/app/commands/decidim/participatory_documents/admin/create_suggestion_note.rb +49 -0
- data/app/commands/decidim/participatory_documents/admin/destroy_annotation.rb +67 -0
- data/app/commands/decidim/participatory_documents/admin/notify_suggestion_answer.rb +52 -0
- data/app/commands/decidim/participatory_documents/admin/publish_answers.rb +59 -0
- data/app/commands/decidim/participatory_documents/admin/publish_document.rb +26 -0
- data/app/commands/decidim/participatory_documents/admin/unassign_suggestions_from_valuator.rb +60 -0
- data/app/commands/decidim/participatory_documents/admin/update_document.rb +85 -0
- data/app/commands/decidim/participatory_documents/admin/update_or_create_annotation.rb +98 -0
- data/app/commands/decidim/participatory_documents/admin/update_section.rb +52 -0
- data/app/commands/decidim/participatory_documents/admin/update_suggestion_note.rb +36 -0
- data/app/commands/decidim/participatory_documents/create_suggestion.rb +65 -0
- data/app/controllers/concerns/decidim/participatory_documents/admin/needs_admin_snippets.rb +25 -0
- data/app/controllers/concerns/decidim/participatory_documents/needs_pdf_document.rb +105 -0
- data/app/controllers/decidim/participatory_documents/admin/annotations_controller.rb +51 -0
- data/app/controllers/decidim/participatory_documents/admin/application_controller.rb +18 -0
- data/app/controllers/decidim/participatory_documents/admin/documents_controller.rb +104 -0
- data/app/controllers/decidim/participatory_documents/admin/sections_controller.rb +39 -0
- data/app/controllers/decidim/participatory_documents/admin/suggestion_notes_controller.rb +59 -0
- data/app/controllers/decidim/participatory_documents/admin/suggestions_controller.rb +160 -0
- data/app/controllers/decidim/participatory_documents/admin/valuation_assignments_controller.rb +58 -0
- data/app/controllers/decidim/participatory_documents/application_controller.rb +14 -0
- data/app/controllers/decidim/participatory_documents/document_suggestions_controller.rb +40 -0
- data/app/controllers/decidim/participatory_documents/documents_controller.rb +18 -0
- data/app/controllers/decidim/participatory_documents/section_suggestions_controller.rb +40 -0
- data/app/events/decidim/participatory_documents/suggestion_answer_event.rb +43 -0
- data/app/forms/decidim/participatory_documents/admin/annotation_form.rb +26 -0
- data/app/forms/decidim/participatory_documents/admin/answer_suggestion_form.rb +21 -0
- data/app/forms/decidim/participatory_documents/admin/document_form.rb +29 -0
- data/app/forms/decidim/participatory_documents/admin/section_form.rb +17 -0
- data/app/forms/decidim/participatory_documents/admin/suggestion_note_form.rb +15 -0
- data/app/forms/decidim/participatory_documents/admin/valuation_assignment_form.rb +38 -0
- data/app/forms/decidim/participatory_documents/suggestion_form.rb +39 -0
- data/app/helpers/decidim/participatory_documents/admin/button_helper.rb +17 -0
- data/app/helpers/decidim/participatory_documents/admin/documents_helper.rb +71 -0
- data/app/helpers/decidim/participatory_documents/admin/suggestion_helper.rb +54 -0
- data/app/helpers/decidim/participatory_documents/documents_helper.rb +41 -0
- data/app/models/concerns/decidim/participatory_documents/participatory_space_user_role_override.rb +19 -0
- data/app/models/concerns/decidim/participatory_documents/valuator_override.rb +18 -0
- data/app/models/decidim/participatory_documents/annotation.rb +28 -0
- data/app/models/decidim/participatory_documents/application_record.rb +10 -0
- data/app/models/decidim/participatory_documents/document.rb +67 -0
- data/app/models/decidim/participatory_documents/section.rb +44 -0
- data/app/models/decidim/participatory_documents/suggestion.rb +167 -0
- data/app/models/decidim/participatory_documents/suggestion_note.rb +18 -0
- data/app/models/decidim/participatory_documents/valuation_assignment.rb +21 -0
- data/app/packs/entrypoints/decidim_participatory_documents.js +6 -0
- data/app/packs/entrypoints/decidim_participatory_documents.scss +18 -0
- data/app/packs/entrypoints/decidim_participatory_documents_admin.js +7 -0
- data/app/packs/entrypoints/decidim_participatory_documents_admin.scss +69 -0
- data/app/packs/entrypoints/decidim_participatory_documents_editor.js +12 -0
- data/app/packs/entrypoints/decidim_participatory_documents_editor.scss +33 -0
- data/app/packs/entrypoints/decidim_participatory_documents_viewer.js +6 -0
- data/app/packs/entrypoints/decidim_participatory_documents_viewer.scss +11 -0
- data/app/packs/images/.keep +0 -0
- data/app/packs/images/badge.svg +6 -0
- data/app/packs/images/fullscreen.svg +6 -0
- data/app/packs/images/fullscreen_exit.svg +14 -0
- data/app/packs/images/group.svg +1 -0
- data/app/packs/images/move.svg +49 -0
- data/app/packs/images/participatory_documents.svg +14 -0
- data/app/packs/src/decidim/participatory_documents/admin/manage_bulk_suggestions.js +133 -0
- data/app/packs/src/decidim/participatory_documents/admin/preview_box_color.js +14 -0
- data/app/packs/src/decidim/participatory_documents/global.js +22 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box.js +234 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box_control_group.js +80 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box_control_move.js +55 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box_controls.js +18 -0
- data/app/packs/src/decidim/participatory_documents/pdf/pdf_modal_manager.js +129 -0
- data/app/packs/src/decidim/participatory_documents/pdf/pdf_state_manager.js +141 -0
- data/app/packs/src/decidim/participatory_documents/pdf/polygon_editor.js +99 -0
- data/app/packs/src/decidim/participatory_documents/pdf/polygon_viewer.js +55 -0
- data/app/packs/src/decidim/participatory_documents/pdf/suggestion_form.js +142 -0
- data/app/packs/src/decidim/participatory_documents/pdf.js +37 -0
- data/app/packs/src/decidim/participatory_documents/pdf_admin.js +60 -0
- data/app/packs/src/decidim/participatory_documents/pdf_notifications.js +20 -0
- data/app/packs/src/decidim/participatory_documents/skip_cookie_warning.js +10 -0
- data/app/packs/stylesheets/decidim/participatory_documents/decidim_admin_classes.scss +13 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/admin_modals.scss +41 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/admin_polygons.scss +131 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/admin_tweaks.scss +44 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/defaults.scss +7 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/document.scss +7 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/modals.scss +152 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/notifications.scss +31 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/polygons.scss +80 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/tweaks.scss +147 -0
- data/app/permissions/decidim/participatory_documents/admin/permissions.rb +118 -0
- data/app/permissions/decidim/participatory_documents/permissions.rb +16 -0
- data/app/presenters/decidim/participatory_documents/admin_log/annotation_presenter.rb +25 -0
- data/app/presenters/decidim/participatory_documents/admin_log/document_presenter.rb +13 -0
- data/app/presenters/decidim/participatory_documents/admin_log/section_presenter.rb +25 -0
- data/app/presenters/decidim/participatory_documents/admin_log/suggestion_note_presenter.rb +49 -0
- data/app/serializers/decidim/participatory_documents/suggestion_serializer.rb +67 -0
- data/app/uploaders/decidim/participatory_documents/pdf_document_uploader.rb +11 -0
- data/app/views/decidim/admin/exports/_dropdown.html.erb +16 -0
- data/app/views/decidim/participatory_documents/admin/documents/_editor_modal.html.erb +3 -0
- data/app/views/decidim/participatory_documents/admin/documents/_form.html.erb +39 -0
- data/app/views/decidim/participatory_documents/admin/documents/_title.html.erb +7 -0
- data/app/views/decidim/participatory_documents/admin/documents/edit.html.erb +18 -0
- data/app/views/decidim/participatory_documents/admin/documents/edit_pdf.html.erb +15 -0
- data/app/views/decidim/participatory_documents/admin/documents/index.html.erb +11 -0
- data/app/views/decidim/participatory_documents/admin/documents/new.html.erb +17 -0
- data/app/views/decidim/participatory_documents/admin/documents/pdf_viewer.html.erb +105 -0
- data/app/views/decidim/participatory_documents/admin/sections/_form.html.erb +24 -0
- data/app/views/decidim/participatory_documents/admin/suggestion_notes/_editing_suggestion_note.html.erb +18 -0
- data/app/views/decidim/participatory_documents/admin/suggestion_notes/_form.html.erb +8 -0
- data/app/views/decidim/participatory_documents/admin/suggestion_notes/_suggestion_notes.html.erb +46 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_add_valuators.html.erb +17 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_bulk-actions.html.erb +7 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_form.html.erb +30 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_js-callout.html.erb +6 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_suggestion.html.erb +33 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_valuators.html.erb +43 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_assign_to_valuator.html.erb +15 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_dropdown.html.erb +36 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_publish_answers.html.erb +14 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_unassign_from_valuator.html.erb +15 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/index.html.erb +45 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/publish_answers.js.erb +17 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/show.html.erb +55 -0
- data/app/views/decidim/participatory_documents/document_suggestions/_form.html.erb +29 -0
- data/app/views/decidim/participatory_documents/document_suggestions/index.html.erb +14 -0
- data/app/views/decidim/participatory_documents/documents/_pdfjs_base.html.erb +428 -0
- data/app/views/decidim/participatory_documents/documents/index.html.erb +27 -0
- data/app/views/decidim/participatory_documents/documents/pdf_viewer.html.erb +63 -0
- data/app/views/decidim/participatory_documents/section_suggestions/_form.html.erb +8 -0
- data/app/views/decidim/participatory_documents/section_suggestions/index.html.erb +14 -0
- data/babel.config.json +25 -0
- data/bin/bundle +62 -0
- data/bin/rails +6 -0
- data/bin/webpack-dev-server +6 -0
- data/codecov.yml +11 -0
- data/config/assets.rb +11 -0
- data/config/i18n-tasks.yml +12 -0
- data/config/locales/en.yml +266 -0
- data/crowdin.yml +45 -0
- data/db/migrate/20221018112720_create_decidim_participatory_documents_document.rb +17 -0
- data/db/migrate/20221115233021_create_decidim_participatory_documents_participation_sections.rb +12 -0
- data/db/migrate/20221115233022_create_decidim_participatory_documents_annotations.rb +13 -0
- data/db/migrate/20221115233023_create_decidim_participatory_documents_suggestions.rb +17 -0
- data/db/migrate/20221115233024_create_decidim_participatory_documents_suggestion_notes.rb +15 -0
- data/db/migrate/20221115233024_create_decidim_participatory_documents_valuation_assignments.rb +12 -0
- data/db/migrate/20230616100340_add_published_at_to_decidim_participatory_documents_documents.rb +8 -0
- data/db/migrate/20230622081831_add_decidim_participatory_documents_box_positions.rb +37 -0
- data/decidim-participatory_documents.gemspec +30 -0
- data/lib/decidim/participatory_documents/admin.rb +8 -0
- data/lib/decidim/participatory_documents/admin_engine.rb +45 -0
- data/lib/decidim/participatory_documents/component.rb +202 -0
- data/lib/decidim/participatory_documents/engine.rb +46 -0
- data/lib/decidim/participatory_documents/seeds/Exampledocument.pdf +0 -0
- data/lib/decidim/participatory_documents/test/factories.rb +144 -0
- data/lib/decidim/participatory_documents/version.rb +9 -0
- data/lib/decidim/participatory_documents.rb +29 -0
- data/lib/tasks/decidim_participatory_documents.rake +27 -0
- data/package-lock.json +12687 -0
- data/package.json +52 -0
- data/pdfjs/LICENSE +177 -0
- data/pdfjs/README.md +12 -0
- data/pdfjs/build/pdf.js +15629 -0
- data/pdfjs/build/pdf.js.map +1 -0
- data/pdfjs/build/pdf.sandbox.js +280 -0
- data/pdfjs/build/pdf.sandbox.js.map +1 -0
- data/pdfjs/build/pdf.worker.js +64496 -0
- data/pdfjs/build/pdf.worker.js.map +1 -0
- data/pdfjs/web/cmaps/78-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/78-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/78-V.bcmap +0 -0
- data/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-3.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-4.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-5.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/B5pc-H.bcmap +0 -0
- data/pdfjs/web/cmaps/B5pc-V.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS1-H.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS1-V.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS2-V.bcmap +3 -0
- data/pdfjs/web/cmaps/ETHK-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/ETHK-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/ETen-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/ETen-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/ETenms-B5-H.bcmap +3 -0
- data/pdfjs/web/cmaps/ETenms-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GB-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GB-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GB-H.bcmap +4 -0
- data/pdfjs/web/cmaps/GB-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK2K-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK2K-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBKp-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBKp-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBpc-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBpc-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdla-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdla-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdlb-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdlb-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKgccs-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKgccs-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm314-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm314-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm471-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm471-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKscs-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKscs-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Hankaku.bcmap +0 -0
- data/pdfjs/web/cmaps/Hiragana.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-Johab-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-Johab-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Katakana.bcmap +0 -0
- data/pdfjs/web/cmaps/LICENSE +36 -0
- data/pdfjs/web/cmaps/NWP-H.bcmap +0 -0
- data/pdfjs/web/cmaps/NWP-V.bcmap +0 -0
- data/pdfjs/web/cmaps/RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Roman.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/V.bcmap +0 -0
- data/pdfjs/web/cmaps/WP-Symbol.bcmap +0 -0
- data/pdfjs/web/compressed.tracemonkey-pldi-09.pdf +0 -0
- data/pdfjs/web/debugger.css +113 -0
- data/pdfjs/web/debugger.js +612 -0
- data/pdfjs/web/images/annotation-check.svg +11 -0
- data/pdfjs/web/images/annotation-comment.svg +16 -0
- data/pdfjs/web/images/annotation-help.svg +26 -0
- data/pdfjs/web/images/annotation-insert.svg +10 -0
- data/pdfjs/web/images/annotation-key.svg +11 -0
- data/pdfjs/web/images/annotation-newparagraph.svg +11 -0
- data/pdfjs/web/images/annotation-noicon.svg +7 -0
- data/pdfjs/web/images/annotation-note.svg +42 -0
- data/pdfjs/web/images/annotation-paperclip.svg +6 -0
- data/pdfjs/web/images/annotation-paragraph.svg +16 -0
- data/pdfjs/web/images/annotation-pushpin.svg +7 -0
- data/pdfjs/web/images/cursor-editorFreeText.svg +3 -0
- data/pdfjs/web/images/cursor-editorInk.svg +4 -0
- data/pdfjs/web/images/findbarButton-next.svg +3 -0
- data/pdfjs/web/images/findbarButton-previous.svg +3 -0
- data/pdfjs/web/images/loading-dark.svg +24 -0
- data/pdfjs/web/images/loading-icon.gif +0 -0
- data/pdfjs/web/images/loading.svg +1 -0
- data/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-firstPage.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-handTool.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-lastPage.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-selectTool.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg +3 -0
- data/pdfjs/web/images/shadow.png +0 -0
- data/pdfjs/web/images/toolbarButton-bookmark.svg +3 -0
- data/pdfjs/web/images/toolbarButton-currentOutlineItem.svg +3 -0
- data/pdfjs/web/images/toolbarButton-download.svg +4 -0
- data/pdfjs/web/images/toolbarButton-editorFreeText.svg +3 -0
- data/pdfjs/web/images/toolbarButton-editorInk.svg +4 -0
- data/pdfjs/web/images/toolbarButton-menuArrow.svg +3 -0
- data/pdfjs/web/images/toolbarButton-openFile.svg +3 -0
- data/pdfjs/web/images/toolbarButton-pageDown.svg +3 -0
- data/pdfjs/web/images/toolbarButton-pageUp.svg +3 -0
- data/pdfjs/web/images/toolbarButton-presentationMode.svg +3 -0
- data/pdfjs/web/images/toolbarButton-print.svg +3 -0
- data/pdfjs/web/images/toolbarButton-search.svg +3 -0
- data/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg +3 -0
- data/pdfjs/web/images/toolbarButton-sidebarToggle.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewAttachments.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewLayers.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewOutline.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewThumbnail.svg +3 -0
- data/pdfjs/web/images/toolbarButton-zoomIn.svg +3 -0
- data/pdfjs/web/images/toolbarButton-zoomOut.svg +3 -0
- data/pdfjs/web/images/treeitem-collapsed.svg +1 -0
- data/pdfjs/web/images/treeitem-expanded.svg +1 -0
- data/pdfjs/web/locale/ach/viewer.properties +200 -0
- data/pdfjs/web/locale/af/viewer.properties +177 -0
- data/pdfjs/web/locale/an/viewer.properties +243 -0
- data/pdfjs/web/locale/ar/viewer.properties +247 -0
- data/pdfjs/web/locale/ast/viewer.properties +207 -0
- data/pdfjs/web/locale/az/viewer.properties +243 -0
- data/pdfjs/web/locale/be/viewer.properties +274 -0
- data/pdfjs/web/locale/bg/viewer.properties +235 -0
- data/pdfjs/web/locale/bn/viewer.properties +239 -0
- data/pdfjs/web/locale/bo/viewer.properties +238 -0
- data/pdfjs/web/locale/br/viewer.properties +247 -0
- data/pdfjs/web/locale/brx/viewer.properties +205 -0
- data/pdfjs/web/locale/bs/viewer.properties +194 -0
- data/pdfjs/web/locale/ca/viewer.properties +251 -0
- data/pdfjs/web/locale/cak/viewer.properties +249 -0
- data/pdfjs/web/locale/ckb/viewer.properties +234 -0
- data/pdfjs/web/locale/cs/viewer.properties +274 -0
- data/pdfjs/web/locale/cy/viewer.properties +274 -0
- data/pdfjs/web/locale/da/viewer.properties +274 -0
- data/pdfjs/web/locale/de/viewer.properties +274 -0
- data/pdfjs/web/locale/dsb/viewer.properties +274 -0
- data/pdfjs/web/locale/el/viewer.properties +274 -0
- data/pdfjs/web/locale/en-CA/viewer.properties +274 -0
- data/pdfjs/web/locale/en-GB/viewer.properties +274 -0
- data/pdfjs/web/locale/en-US/viewer.properties +253 -0
- data/pdfjs/web/locale/eo/viewer.properties +274 -0
- data/pdfjs/web/locale/es-AR/viewer.properties +274 -0
- data/pdfjs/web/locale/es-CL/viewer.properties +274 -0
- data/pdfjs/web/locale/es-ES/viewer.properties +274 -0
- data/pdfjs/web/locale/es-MX/viewer.properties +274 -0
- data/pdfjs/web/locale/et/viewer.properties +262 -0
- data/pdfjs/web/locale/eu/viewer.properties +272 -0
- data/pdfjs/web/locale/fa/viewer.properties +216 -0
- data/pdfjs/web/locale/ff/viewer.properties +235 -0
- data/pdfjs/web/locale/fi/viewer.properties +274 -0
- data/pdfjs/web/locale/fr/viewer.properties +274 -0
- data/pdfjs/web/locale/fy-NL/viewer.properties +274 -0
- data/pdfjs/web/locale/ga-IE/viewer.properties +202 -0
- data/pdfjs/web/locale/gd/viewer.properties +249 -0
- data/pdfjs/web/locale/gl/viewer.properties +249 -0
- data/pdfjs/web/locale/gn/viewer.properties +274 -0
- data/pdfjs/web/locale/gu-IN/viewer.properties +235 -0
- data/pdfjs/web/locale/he/viewer.properties +274 -0
- data/pdfjs/web/locale/hi-IN/viewer.properties +235 -0
- data/pdfjs/web/locale/hr/viewer.properties +249 -0
- data/pdfjs/web/locale/hsb/viewer.properties +274 -0
- data/pdfjs/web/locale/hu/viewer.properties +274 -0
- data/pdfjs/web/locale/hy-AM/viewer.properties +239 -0
- data/pdfjs/web/locale/hye/viewer.properties +252 -0
- data/pdfjs/web/locale/ia/viewer.properties +274 -0
- data/pdfjs/web/locale/id/viewer.properties +274 -0
- data/pdfjs/web/locale/is/viewer.properties +274 -0
- data/pdfjs/web/locale/it/viewer.properties +215 -0
- data/pdfjs/web/locale/ja/viewer.properties +274 -0
- data/pdfjs/web/locale/ka/viewer.properties +274 -0
- data/pdfjs/web/locale/kab/viewer.properties +274 -0
- data/pdfjs/web/locale/kk/viewer.properties +274 -0
- data/pdfjs/web/locale/km/viewer.properties +210 -0
- data/pdfjs/web/locale/kn/viewer.properties +187 -0
- data/pdfjs/web/locale/ko/viewer.properties +274 -0
- data/pdfjs/web/locale/lij/viewer.properties +235 -0
- data/pdfjs/web/locale/lo/viewer.properties +145 -0
- data/pdfjs/web/locale/locale.properties +327 -0
- data/pdfjs/web/locale/lt/viewer.properties +260 -0
- data/pdfjs/web/locale/ltg/viewer.properties +213 -0
- data/pdfjs/web/locale/lv/viewer.properties +235 -0
- data/pdfjs/web/locale/meh/viewer.properties +111 -0
- data/pdfjs/web/locale/mk/viewer.properties +139 -0
- data/pdfjs/web/locale/mr/viewer.properties +231 -0
- data/pdfjs/web/locale/ms/viewer.properties +235 -0
- data/pdfjs/web/locale/my/viewer.properties +191 -0
- data/pdfjs/web/locale/nb-NO/viewer.properties +274 -0
- data/pdfjs/web/locale/ne-NP/viewer.properties +218 -0
- data/pdfjs/web/locale/nl/viewer.properties +274 -0
- data/pdfjs/web/locale/nn-NO/viewer.properties +274 -0
- data/pdfjs/web/locale/oc/viewer.properties +274 -0
- data/pdfjs/web/locale/pa-IN/viewer.properties +285 -0
- data/pdfjs/web/locale/pl/viewer.properties +274 -0
- data/pdfjs/web/locale/pt-BR/viewer.properties +274 -0
- data/pdfjs/web/locale/pt-PT/viewer.properties +274 -0
- data/pdfjs/web/locale/rm/viewer.properties +274 -0
- data/pdfjs/web/locale/ro/viewer.properties +241 -0
- data/pdfjs/web/locale/ru/viewer.properties +274 -0
- data/pdfjs/web/locale/sat/viewer.properties +198 -0
- data/pdfjs/web/locale/sc/viewer.properties +240 -0
- data/pdfjs/web/locale/scn/viewer.properties +101 -0
- data/pdfjs/web/locale/sco/viewer.properties +249 -0
- data/pdfjs/web/locale/si/viewer.properties +237 -0
- data/pdfjs/web/locale/sk/viewer.properties +274 -0
- data/pdfjs/web/locale/sl/viewer.properties +274 -0
- data/pdfjs/web/locale/son/viewer.properties +173 -0
- data/pdfjs/web/locale/sq/viewer.properties +267 -0
- data/pdfjs/web/locale/sr/viewer.properties +253 -0
- data/pdfjs/web/locale/sv-SE/viewer.properties +274 -0
- data/pdfjs/web/locale/szl/viewer.properties +245 -0
- data/pdfjs/web/locale/ta/viewer.properties +194 -0
- data/pdfjs/web/locale/te/viewer.properties +237 -0
- data/pdfjs/web/locale/tg/viewer.properties +274 -0
- data/pdfjs/web/locale/th/viewer.properties +274 -0
- data/pdfjs/web/locale/tl/viewer.properties +243 -0
- data/pdfjs/web/locale/tr/viewer.properties +274 -0
- data/pdfjs/web/locale/trs/viewer.properties +206 -0
- data/pdfjs/web/locale/uk/viewer.properties +274 -0
- data/pdfjs/web/locale/ur/viewer.properties +239 -0
- data/pdfjs/web/locale/uz/viewer.properties +163 -0
- data/pdfjs/web/locale/vi/viewer.properties +274 -0
- data/pdfjs/web/locale/wo/viewer.properties +123 -0
- data/pdfjs/web/locale/xh/viewer.properties +177 -0
- data/pdfjs/web/locale/zh-CN/viewer.properties +274 -0
- data/pdfjs/web/locale/zh-TW/viewer.properties +274 -0
- data/pdfjs/web/standard_fonts/FoxitDingbats.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixed.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixedBold.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSans.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSansBold.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSansItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerif.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerifBold.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSymbol.pfb +0 -0
- data/pdfjs/web/standard_fonts/LICENSE_FOXIT +27 -0
- data/pdfjs/web/standard_fonts/LICENSE_LIBERATION +102 -0
- data/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf +0 -0
- data/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- data/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf +0 -0
- data/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf +0 -0
- data/pdfjs/web/viewer.css +3029 -0
- data/pdfjs/web/viewer.html +433 -0
- data/pdfjs/web/viewer.js +13566 -0
- data/pdfjs/web/viewer.js.map +1 -0
- metadata +643 -0
@@ -0,0 +1,105 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
# This module provides methods and helpers for the pdf_viewer/editor
|
6
|
+
module NeedsPdfDocument
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
helper_method :document, :box_color_as_rgba, :pdf_custom_style
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def add_iframe_snippets
|
15
|
+
return unless respond_to?(:snippets)
|
16
|
+
|
17
|
+
snippets.add(:head, helpers.stylesheet_pack_tag("decidim_participatory_documents"))
|
18
|
+
snippets.add(:foot, helpers.javascript_pack_tag("decidim_participatory_documents"))
|
19
|
+
end
|
20
|
+
|
21
|
+
def document
|
22
|
+
@document ||= Decidim::ParticipatoryDocuments::Document.find_by(component: current_component)
|
23
|
+
end
|
24
|
+
|
25
|
+
def box_color_as_rgba(document, opacity: nil)
|
26
|
+
opacity ||= document.box_opacity
|
27
|
+
return "rgba(30, 152, 215, 0.12);" unless document.box_color.present? && opacity.present?
|
28
|
+
|
29
|
+
document.box_color + (opacity * 2.55).round.to_s(16).rjust(2, "0")
|
30
|
+
end
|
31
|
+
|
32
|
+
def box_color_as_hsla(document, opacity: 0.95)
|
33
|
+
return "hsla(213, 48%, 90%, #{opacity});" if document.box_color.blank?
|
34
|
+
|
35
|
+
hex_string = document.box_color
|
36
|
+
|
37
|
+
r, g, b = hex_to_rgb(hex_string)
|
38
|
+
h, s, _l = rgb_to_hsl(r, g, b)
|
39
|
+
|
40
|
+
"hsla(#{h}, #{s}%, 90%, #{opacity})"
|
41
|
+
end
|
42
|
+
|
43
|
+
def pdf_custom_style
|
44
|
+
return if document.blank?
|
45
|
+
|
46
|
+
@pdf_custom_style ||= begin
|
47
|
+
css = <<~CSS
|
48
|
+
<style media="all">
|
49
|
+
:root {
|
50
|
+
--box-color: #{document.box_color || "#1E98D7"};
|
51
|
+
--box-color-rgba: #{box_color_as_rgba(document)};
|
52
|
+
--notifications-color-rgba: #{box_color_as_rgba(document, opacity: 60)};
|
53
|
+
--suggestions-modal-color-hsla: #{box_color_as_hsla(document, opacity: 0.95)};
|
54
|
+
}
|
55
|
+
</style>
|
56
|
+
CSS
|
57
|
+
css.html_safe
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
def hex_to_rgb(hex_string)
|
64
|
+
hex_string = hex_string.delete("#")
|
65
|
+
r = hex_string[0..1].to_i(16)
|
66
|
+
g = hex_string[2..3].to_i(16)
|
67
|
+
b = hex_string[4..5].to_i(16)
|
68
|
+
[r, g, b]
|
69
|
+
end
|
70
|
+
|
71
|
+
def rgb_to_hsl(red, green, blue)
|
72
|
+
red /= 255.0
|
73
|
+
green /= 255.0
|
74
|
+
blue /= 255.0
|
75
|
+
c_max = [red, green, blue].max
|
76
|
+
c_min = [red, green, blue].min
|
77
|
+
delta = c_max - c_min
|
78
|
+
|
79
|
+
h = 0
|
80
|
+
s = 0
|
81
|
+
l = (c_max + c_min) / 2.0
|
82
|
+
|
83
|
+
if delta.positive?
|
84
|
+
h =
|
85
|
+
if c_max == red
|
86
|
+
((green - blue) / delta) % 6
|
87
|
+
elsif c_max == green
|
88
|
+
((blue - red) / delta) + 2
|
89
|
+
else
|
90
|
+
((red - green) / delta) + 4
|
91
|
+
end
|
92
|
+
|
93
|
+
s = delta / (1 - ((2 * l) - 1).abs)
|
94
|
+
end
|
95
|
+
|
96
|
+
h = (h * 60).round
|
97
|
+
s = (s * 100).round
|
98
|
+
l = (l * 100).round
|
99
|
+
|
100
|
+
[h, s, l]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
module Admin
|
6
|
+
class AnnotationsController < Admin::ApplicationController
|
7
|
+
layout false
|
8
|
+
|
9
|
+
rescue_from ActiveRecord::RecordNotFound do |_exception|
|
10
|
+
render json: { error: I18n.t("decidim.errors.not_found.content_doesnt_exist") }, status: :not_found
|
11
|
+
end
|
12
|
+
|
13
|
+
def destroy
|
14
|
+
enforce_permission_to :create, :document_annotations
|
15
|
+
@form = form(Decidim::ParticipatoryDocuments::Admin::AnnotationForm).from_model(annotation)
|
16
|
+
|
17
|
+
Admin::DestroyAnnotation.call(@form, document) do
|
18
|
+
on(:ok) do
|
19
|
+
render(json: {}, status: :accepted) && return
|
20
|
+
end
|
21
|
+
|
22
|
+
on(:invalid) do
|
23
|
+
render(json: {}, status: :unprocessable_entity) && return
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def create
|
29
|
+
enforce_permission_to :create, :document_annotations
|
30
|
+
@form = form(Decidim::ParticipatoryDocuments::Admin::AnnotationForm).from_params(params)
|
31
|
+
|
32
|
+
Admin::UpdateOrCreateAnnotation.call(@form, document) do
|
33
|
+
on(:ok) do |annotation|
|
34
|
+
render(json: { data: annotation.serialize }, status: :created) && return
|
35
|
+
end
|
36
|
+
|
37
|
+
on(:invalid) do
|
38
|
+
render(json: @form.errors, status: :unprocessable_entity) && return
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def annotation
|
46
|
+
@annotation ||= document.annotations.find(params[:id])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
module Admin
|
6
|
+
# This controller is the abstract class from which all other controllers of
|
7
|
+
# this engine inherit.
|
8
|
+
#
|
9
|
+
# Note that it inherits from `Decidim::Admin::Components::BaseController`, which
|
10
|
+
# override its layout and provide all kinds of useful methods.
|
11
|
+
class ApplicationController < Decidim::Admin::Components::BaseController
|
12
|
+
include NeedsPdfDocument
|
13
|
+
helper Decidim::ApplicationHelper
|
14
|
+
helper Decidim::ParticipatoryDocuments::Admin::DocumentsHelper
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
module Admin
|
6
|
+
# This controller allows admins to manage documents in a participatory process.
|
7
|
+
class DocumentsController < Admin::ApplicationController
|
8
|
+
include Decidim::ApplicationHelper
|
9
|
+
include NeedsAdminSnippets
|
10
|
+
|
11
|
+
helper Decidim::LayoutHelper
|
12
|
+
helper_method :sections
|
13
|
+
|
14
|
+
before_action except: [:index, :new, :create] do
|
15
|
+
redirect_to(documents_path) if document.blank?
|
16
|
+
redirect_to(edit_document_path(document)) unless document.file.attached?
|
17
|
+
end
|
18
|
+
|
19
|
+
def index
|
20
|
+
redirect_to(document_suggestions_path(document)) && return if document.present? && document.file.attached?
|
21
|
+
end
|
22
|
+
|
23
|
+
def new
|
24
|
+
enforce_permission_to :create, :participatory_document
|
25
|
+
@form = form(DocumentForm).from_params(params)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create
|
29
|
+
enforce_permission_to :create, :participatory_document
|
30
|
+
@form = form(DocumentForm).from_params(params)
|
31
|
+
|
32
|
+
CreateDocument.call(@form) do
|
33
|
+
on(:ok) do |document|
|
34
|
+
flash[:notice] = I18n.t("documents.create.success", scope: "decidim.participatory_documents.admin")
|
35
|
+
redirect_to edit_pdf_documents_path(id: document.id)
|
36
|
+
end
|
37
|
+
|
38
|
+
on(:invalid) do
|
39
|
+
flash.now[:alert] = I18n.t("documents.create.invalid", scope: "decidim.participatory_documents.admin")
|
40
|
+
render action: "new"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def edit
|
46
|
+
enforce_permission_to :update, :participatory_document, document: document
|
47
|
+
@form = form(DocumentForm).from_model(document)
|
48
|
+
end
|
49
|
+
|
50
|
+
def update
|
51
|
+
enforce_permission_to :update, :participatory_document, document: document
|
52
|
+
@form = form(DocumentForm).from_params(params)
|
53
|
+
UpdateDocument.call(@form, document) do
|
54
|
+
on(:ok) do
|
55
|
+
flash[:notice] = t("documents.update.success", scope: "decidim.participatory_documents.admin")
|
56
|
+
redirect_to documents_path
|
57
|
+
end
|
58
|
+
|
59
|
+
on(:error) do |error|
|
60
|
+
flash[:alert] = t("documents.update.error", scope: "decidim.participatory_documents.admin") + " #{error}"
|
61
|
+
redirect_to documents_path
|
62
|
+
end
|
63
|
+
|
64
|
+
on(:invalid) do
|
65
|
+
flash.now[:alert] = t("documents.update.error", scope: "decidim.participatory_documents.admin")
|
66
|
+
render :edit
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def pdf_viewer
|
72
|
+
@form = form(SectionForm).from_params({})
|
73
|
+
render layout: false
|
74
|
+
end
|
75
|
+
|
76
|
+
def edit_pdf
|
77
|
+
enforce_permission_to :update, :participatory_document, document: document
|
78
|
+
end
|
79
|
+
|
80
|
+
def publish
|
81
|
+
enforce_permission_to :update, :participatory_document, document: document
|
82
|
+
|
83
|
+
Admin::PublishDocument.call(document) do
|
84
|
+
on(:ok) do |_document|
|
85
|
+
flash[:notice] = t("documents.final_publish.success", scope: "decidim.participatory_documents.admin")
|
86
|
+
redirect_to document_suggestions_path(document)
|
87
|
+
end
|
88
|
+
|
89
|
+
on(:invalid) do
|
90
|
+
flash.now[:alert] = t("documents.final_publish.error", scope: "decidim.participatory_documents.admin")
|
91
|
+
render :edit
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def sections
|
99
|
+
@sections ||= document.sections
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
module Admin
|
6
|
+
class SectionsController < Admin::ApplicationController
|
7
|
+
layout false, only: [:new, :edit]
|
8
|
+
|
9
|
+
def update
|
10
|
+
enforce_permission_to :update, :document_section
|
11
|
+
@form = form(Decidim::ParticipatoryDocuments::Admin::SectionForm).from_params(params)
|
12
|
+
|
13
|
+
Admin::UpdateSection.call(@form, document) do
|
14
|
+
on(:ok) do |_annotation|
|
15
|
+
render(json: {}, status: :accepted) && return
|
16
|
+
end
|
17
|
+
|
18
|
+
on(:invalid) do
|
19
|
+
render(partial: "form", status: :bad_request) && return
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def edit
|
25
|
+
enforce_permission_to :update, :document_section
|
26
|
+
@form = form(Decidim::ParticipatoryDocuments::Admin::SectionForm).from_model(section)
|
27
|
+
|
28
|
+
render partial: "form"
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def section
|
34
|
+
document.sections.find(params[:id])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
module Admin
|
6
|
+
class SuggestionNotesController < Admin::ApplicationController
|
7
|
+
helper_method :note
|
8
|
+
|
9
|
+
def create
|
10
|
+
enforce_permission_to :create, :suggestion_note, suggestion: suggestion
|
11
|
+
@form = form(Decidim::ParticipatoryDocuments::Admin::SuggestionNoteForm).from_params(params)
|
12
|
+
|
13
|
+
CreateSuggestionNote.call(@form, suggestion) do
|
14
|
+
on(:ok) do
|
15
|
+
flash[:notice] = I18n.t("suggestion_notes.create.success", scope: "decidim.participatory_documents.admin")
|
16
|
+
redirect_to document_suggestion_path(document, suggestion)
|
17
|
+
end
|
18
|
+
|
19
|
+
on(:invalid) do
|
20
|
+
flash.keep[:alert] = I18n.t("suggestion_notes.create.error", scope: "decidim.participatory_documents.admin")
|
21
|
+
redirect_to document_suggestion_path(document, suggestion)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def edit
|
27
|
+
enforce_permission_to :edit_note, :suggestion_note, suggestion_note: note
|
28
|
+
@notes_form = form(Decidim::ParticipatoryDocuments::Admin::SuggestionNoteForm).from_model(note)
|
29
|
+
end
|
30
|
+
|
31
|
+
def update
|
32
|
+
enforce_permission_to :edit_note, :suggestion_note, suggestion_note: note
|
33
|
+
@notes_form = form(Decidim::ParticipatoryDocuments::Admin::SuggestionNoteForm).from_params(params)
|
34
|
+
|
35
|
+
Decidim::ParticipatoryDocuments::Admin::UpdateSuggestionNote.call(@notes_form, note) do
|
36
|
+
on(:ok) do
|
37
|
+
flash[:notice] = I18n.t("suggestion_notes.update.success", scope: "decidim.participatory_documents.admin")
|
38
|
+
end
|
39
|
+
|
40
|
+
on(:invalid) do
|
41
|
+
flash[:alert] = I18n.t("suggestion_notes.update.invalid", scope: "decidim.participatory_documents.admin")
|
42
|
+
end
|
43
|
+
redirect_back(fallback_location: decidim_admin.root_path)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
def suggestion
|
50
|
+
@suggestion ||= Decidim::ParticipatoryDocuments::Suggestion.find(params[:suggestion_id])
|
51
|
+
end
|
52
|
+
|
53
|
+
def note
|
54
|
+
@note ||= Decidim::ParticipatoryDocuments::SuggestionNote.find(params[:id])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
module Admin
|
6
|
+
class SuggestionsController < Admin::ApplicationController
|
7
|
+
include Decidim::Admin::Filterable
|
8
|
+
include Decidim::Admin::Paginable
|
9
|
+
include Decidim::ParticipatoryDocuments::Admin::NeedsAdminSnippets
|
10
|
+
|
11
|
+
helper Decidim::ParticipatoryDocuments::Admin::SuggestionHelper
|
12
|
+
helper Decidim::Messaging::ConversationHelper
|
13
|
+
|
14
|
+
helper_method :suggestions, :suggestion, :notes_form, :find_valuators_for_select, :suggestion_ids, :suggestion_find
|
15
|
+
|
16
|
+
def show
|
17
|
+
@form = form(Decidim::ParticipatoryDocuments::Admin::AnswerSuggestionForm).from_model(suggestion)
|
18
|
+
end
|
19
|
+
|
20
|
+
def answer
|
21
|
+
enforce_permission_to :update, :suggestion_answer, suggestion: suggestion
|
22
|
+
@form = form(Decidim::ParticipatoryDocuments::Admin::AnswerSuggestionForm).from_params(params)
|
23
|
+
|
24
|
+
Admin::AnswerSuggestion.call(@form, suggestion) do
|
25
|
+
on(:ok) do
|
26
|
+
flash[:notice] = I18n.t("suggestions.answer.success", scope: "decidim.participatory_documents.admin")
|
27
|
+
redirect_to document_suggestions_path(document)
|
28
|
+
end
|
29
|
+
|
30
|
+
on(:invalid) do
|
31
|
+
flash.now[:alert] = I18n.t("suggestions.answer.invalid", scope: "decidim.participatory_documents.admin")
|
32
|
+
render action: "show"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def publish_answers
|
38
|
+
enforce_permission_to :publish_answers, :suggestion_answer
|
39
|
+
|
40
|
+
Decidim::ParticipatoryDocuments::Admin::PublishAnswers.call(current_component, current_user, suggestion_ids) do
|
41
|
+
on(:invalid) do
|
42
|
+
flash.now[:alert] = t(
|
43
|
+
"suggestions.publish_answers.select_a_suggestion",
|
44
|
+
scope: "decidim.participatory_documents.admin"
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
on(:ok) do
|
49
|
+
flash.now[:notice] = I18n.t("suggestions.publish_answers.success", scope: "decidim.participatory_documents.admin")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
respond_to do |format|
|
54
|
+
format.js
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def suggestion_find(id)
|
61
|
+
base_query.find(id)
|
62
|
+
end
|
63
|
+
|
64
|
+
def suggestion_ids
|
65
|
+
@suggestion_ids ||= params[:suggestion_ids]
|
66
|
+
end
|
67
|
+
|
68
|
+
def notes_form
|
69
|
+
@notes_form ||= form(Decidim::ParticipatoryDocuments::Admin::SuggestionNoteForm).from_params({})
|
70
|
+
end
|
71
|
+
|
72
|
+
def search_field_predicate
|
73
|
+
:body_cont
|
74
|
+
end
|
75
|
+
|
76
|
+
def filters
|
77
|
+
[
|
78
|
+
:state_eq,
|
79
|
+
:valuator_role_ids_has,
|
80
|
+
:dummy_author_ids_has,
|
81
|
+
:dummy_suggestable_id_has
|
82
|
+
]
|
83
|
+
end
|
84
|
+
|
85
|
+
def filters_with_values
|
86
|
+
{
|
87
|
+
state_eq: suggestion_stats,
|
88
|
+
valuator_role_ids_has: valuator_role_ids,
|
89
|
+
dummy_author_ids_has: author_ids,
|
90
|
+
dummy_suggestable_id_has: suggestable_ids
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
def suggestable_ids
|
95
|
+
["d-#{document.id}"] + document.sections.map { |s| "s-#{s.id}" }
|
96
|
+
end
|
97
|
+
|
98
|
+
def author_ids
|
99
|
+
base_query.pluck(:decidim_author_id)
|
100
|
+
end
|
101
|
+
|
102
|
+
def valuator_role_ids
|
103
|
+
current_participatory_space.user_roles(:valuator).pluck(:id)
|
104
|
+
end
|
105
|
+
|
106
|
+
# Can't user `super` here, because it does not belong to a superclass
|
107
|
+
# but to a concern.
|
108
|
+
def dynamically_translated_filters
|
109
|
+
[:valuator_role_ids_has, :dummy_author_ids_has, :dummy_suggestable_id_has]
|
110
|
+
end
|
111
|
+
|
112
|
+
def translated_dummy_suggestable_id_has(value)
|
113
|
+
return translated_attribute(document.title) if value.split("-").first == "d"
|
114
|
+
|
115
|
+
translated_attribute(document.sections.find_by(id: value.split("-").last).try(:title))
|
116
|
+
end
|
117
|
+
|
118
|
+
def suggestion_stats
|
119
|
+
Decidim::ParticipatoryDocuments::Suggestion::POSSIBLE_STATES
|
120
|
+
end
|
121
|
+
|
122
|
+
def translated_dummy_author_ids_has(value)
|
123
|
+
Decidim::UserBaseEntity.find_by(id: value).try(:name)
|
124
|
+
end
|
125
|
+
|
126
|
+
def translated_valuator_role_ids_has(valuator_role_id)
|
127
|
+
user_role = current_participatory_space.user_roles(:valuator).find_by(id: valuator_role_id)
|
128
|
+
user_role&.user&.name
|
129
|
+
end
|
130
|
+
|
131
|
+
def suggestions
|
132
|
+
filtered_collection
|
133
|
+
end
|
134
|
+
|
135
|
+
def base_query
|
136
|
+
Suggestion.where(suggestable: document).or(Suggestion.where(suggestable: document.sections))
|
137
|
+
end
|
138
|
+
|
139
|
+
def suggestion
|
140
|
+
base_query.find(params[:id])
|
141
|
+
end
|
142
|
+
|
143
|
+
# Internal: A method to cache to queries to find the valuators for the
|
144
|
+
# current space.
|
145
|
+
def find_valuators_for_select(participatory_space)
|
146
|
+
return @valuators_for_select if @valuators_for_select
|
147
|
+
|
148
|
+
valuator_roles = participatory_space.user_roles(:valuator)
|
149
|
+
valuators = Decidim::User.where(id: valuator_roles.pluck(:decidim_user_id)).to_a
|
150
|
+
|
151
|
+
@valuators_for_select = valuator_roles.map do |role|
|
152
|
+
valuator = valuators.find { |user| user.id == role.decidim_user_id }
|
153
|
+
|
154
|
+
[valuator.name, role.id]
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
data/app/controllers/decidim/participatory_documents/admin/valuation_assignments_controller.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
module Admin
|
6
|
+
class ValuationAssignmentsController < Admin::ApplicationController
|
7
|
+
def create
|
8
|
+
enforce_permission_to :assign_to_valuator, :suggestions
|
9
|
+
|
10
|
+
@form = form(Admin::ValuationAssignmentForm).from_params(params)
|
11
|
+
|
12
|
+
Admin::AssignSuggestionsToValuator.call(@form) do
|
13
|
+
on(:ok) do |_proposal|
|
14
|
+
flash[:notice] = I18n.t("valuation_assignments.create.success", scope: "decidim.participatory_documents.admin")
|
15
|
+
redirect_to EngineRouter.admin_proxy(current_component).root_path
|
16
|
+
end
|
17
|
+
|
18
|
+
on(:invalid) do
|
19
|
+
flash.now[:alert] = I18n.t("valuation_assignments.create.invalid", scope: "decidim.participatory_documents.admin")
|
20
|
+
redirect_to EngineRouter.admin_proxy(current_component).root_path
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy
|
26
|
+
@form = form(Admin::ValuationAssignmentForm).from_params(destroy_params)
|
27
|
+
|
28
|
+
enforce_permission_to :unassign_from_valuator, :suggestions, valuator: @form.valuator_user
|
29
|
+
|
30
|
+
Admin::UnassignSuggestionsFromValuator.call(@form) do
|
31
|
+
on(:ok) do |_proposal|
|
32
|
+
flash.keep[:notice] = I18n.t("valuation_assignments.delete.success", scope: "decidim.participatory_documents.admin")
|
33
|
+
redirect_back fallback_location: EngineRouter.admin_proxy(current_component).root_path
|
34
|
+
end
|
35
|
+
|
36
|
+
on(:invalid) do
|
37
|
+
flash.keep[:alert] = I18n.t("valuation_assignments.delete.invalid", scope: "decidim.participatory_documents.admin")
|
38
|
+
redirect_back fallback_location: EngineRouter.admin_proxy(current_component).root_path
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def destroy_params
|
46
|
+
{
|
47
|
+
id: params.dig(:valuator_role, :id) || params[:id],
|
48
|
+
suggestion_ids: params[:suggestion_ids] || [params[:suggestion_id]]
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
def skip_manage_component_permission
|
53
|
+
true
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
# This controller is the abstract class from which all other controllers of
|
6
|
+
# this engine inherit.
|
7
|
+
#
|
8
|
+
# Note that it inherits from `Decidim::Components::BaseController`, which
|
9
|
+
# override its layout and provide all kinds of useful methods.
|
10
|
+
class ApplicationController < Decidim::Components::BaseController
|
11
|
+
include NeedsPdfDocument
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
class DocumentSuggestionsController < Decidim::ParticipatoryDocuments::ApplicationController
|
6
|
+
include FormFactory
|
7
|
+
include Paginable
|
8
|
+
|
9
|
+
helper_method :section, :suggestions
|
10
|
+
layout false
|
11
|
+
|
12
|
+
def index
|
13
|
+
@form = form(Decidim::ParticipatoryDocuments::SuggestionForm).instance
|
14
|
+
end
|
15
|
+
|
16
|
+
def create
|
17
|
+
@form = form(Decidim::ParticipatoryDocuments::SuggestionForm).from_params(params)
|
18
|
+
|
19
|
+
CreateSuggestion.call(@form, section) do
|
20
|
+
on(:ok) do |_suggestion|
|
21
|
+
redirect_to(document_suggestions_path(document)) && return
|
22
|
+
end
|
23
|
+
on(:invalid) do |error|
|
24
|
+
render template: "decidim/participatory_documents/document_suggestions/index", locals: { error_message: error }, format: [:html], status: :bad_request
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def suggestions
|
32
|
+
@suggestions ||= section.suggestions.where(author: current_user).order(created_at: :asc)
|
33
|
+
end
|
34
|
+
|
35
|
+
def section
|
36
|
+
document
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
class DocumentsController < Decidim::ParticipatoryDocuments::ApplicationController
|
6
|
+
include NeedsPdfDocument
|
7
|
+
helper Decidim::LayoutHelper
|
8
|
+
|
9
|
+
def index
|
10
|
+
add_iframe_snippets
|
11
|
+
end
|
12
|
+
|
13
|
+
def pdf_viewer
|
14
|
+
render layout: false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|