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,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class AddDecidimParticipatoryDocumentsBoxPositions < ActiveRecord::Migration[6.0]
|
4
|
+
class Document < ApplicationRecord
|
5
|
+
self.table_name = :decidim_participatory_documents_documents
|
6
|
+
has_many :sections
|
7
|
+
has_many :annotations, through: :sections
|
8
|
+
end
|
9
|
+
|
10
|
+
class Section < ApplicationRecord
|
11
|
+
self.table_name = :decidim_participatory_documents_sections
|
12
|
+
belongs_to :document
|
13
|
+
has_many :annotations
|
14
|
+
end
|
15
|
+
|
16
|
+
class Annotation < ApplicationRecord
|
17
|
+
self.table_name = :decidim_participatory_documents_annotations
|
18
|
+
belongs_to :section
|
19
|
+
end
|
20
|
+
|
21
|
+
# rubocop:disable Rails/SkipsModelValidations:
|
22
|
+
def change
|
23
|
+
add_column :decidim_participatory_documents_annotations, :position, :integer, null: false, default: 0
|
24
|
+
add_index :decidim_participatory_documents_annotations, :position
|
25
|
+
add_column :decidim_participatory_documents_sections, :position, :integer, null: false, default: 0
|
26
|
+
add_index :decidim_participatory_documents_sections, :position
|
27
|
+
|
28
|
+
Section.find_each do |section|
|
29
|
+
section.update_column(:position, section.document.sections.where("id < ?", section.id).count + 1)
|
30
|
+
end
|
31
|
+
|
32
|
+
Annotation.find_each do |annotation|
|
33
|
+
annotation.update_column(:position, annotation.section.document.annotations.where("decidim_participatory_documents_annotations.id < ?", annotation.id).count + 1)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
# rubocop:enable Rails/SkipsModelValidations:
|
37
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require "decidim/participatory_documents/version"
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = "decidim-participatory_documents"
|
9
|
+
spec.version = Decidim::ParticipatoryDocuments::VERSION
|
10
|
+
spec.authors = ["Ivan Vergés"]
|
11
|
+
spec.email = ["ivan@pokecode.net"]
|
12
|
+
|
13
|
+
spec.summary = "A module for Decidim that facilitates the creation of proposals related to geolocated issues in a city."
|
14
|
+
spec.description = "A module for Decidim that facilitates the creation of proposals related to geolocated issues in a city"
|
15
|
+
spec.license = "AGPL-3.0"
|
16
|
+
spec.homepage = "https://github.com/openpoke/decidim-module-participatory_documents"
|
17
|
+
spec.required_ruby_version = ">= 3.0"
|
18
|
+
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
|
+
f.match(%r{^(test|spec|features)/})
|
21
|
+
end
|
22
|
+
spec.bindir = "exe"
|
23
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
|
+
spec.require_paths = ["lib"]
|
25
|
+
|
26
|
+
spec.add_dependency "decidim-core", Decidim::ParticipatoryDocuments::COMPAT_DECIDIM_VERSION
|
27
|
+
|
28
|
+
spec.add_development_dependency "decidim-dev", Decidim::ParticipatoryDocuments::COMPAT_DECIDIM_VERSION
|
29
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
30
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
# This is the engine that runs on the public interface of `ParticipatoryDocuments`.
|
6
|
+
class AdminEngine < ::Rails::Engine
|
7
|
+
isolate_namespace Decidim::ParticipatoryDocuments::Admin
|
8
|
+
|
9
|
+
paths["db/migrate"] = nil
|
10
|
+
paths["lib/tasks"] = nil
|
11
|
+
|
12
|
+
routes do
|
13
|
+
resources :documents do
|
14
|
+
collection do
|
15
|
+
get :pdf_viewer
|
16
|
+
get :edit_pdf
|
17
|
+
end
|
18
|
+
member do
|
19
|
+
put :publish
|
20
|
+
end
|
21
|
+
resources :annotations, except: [:show, :new, :edit]
|
22
|
+
resources :sections, except: [:show, :index]
|
23
|
+
resources :suggestions, only: [:index, :show] do
|
24
|
+
resources :valuation_assignments, only: [:destroy]
|
25
|
+
collection do
|
26
|
+
post :publish_answers
|
27
|
+
resource :valuation_assignment, only: [:create, :destroy]
|
28
|
+
end
|
29
|
+
|
30
|
+
member do
|
31
|
+
patch :answer
|
32
|
+
end
|
33
|
+
resources :suggestion_notes, only: [:create, :edit, :update]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
root to: "documents#index"
|
38
|
+
end
|
39
|
+
|
40
|
+
def load_seed
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "decidim/components/namer"
|
4
|
+
|
5
|
+
Decidim.register_component(:participatory_documents) do |component|
|
6
|
+
component.engine = Decidim::ParticipatoryDocuments::Engine
|
7
|
+
component.admin_engine = Decidim::ParticipatoryDocuments::AdminEngine
|
8
|
+
component.icon = "media/images/participatory_documents.svg"
|
9
|
+
|
10
|
+
component.on(:before_destroy) do |instance|
|
11
|
+
raise "Can't destroy this component when there are ParticipatoryDocuments" if Decidim::ParticipatoryDocuments::Document.where(component: instance).any?
|
12
|
+
end
|
13
|
+
|
14
|
+
# component.data_portable_entities = ["Decidim::ParticipatoryDocuments::Document"]
|
15
|
+
|
16
|
+
# component.newsletter_participant_entities = ["Decidim::ParticipatoryDocuments::Document"]
|
17
|
+
|
18
|
+
# component.actions = %w(endorse vote create withdraw amend comment vote_comment)
|
19
|
+
|
20
|
+
# component.query_type = "Decidim::ParticipatoryDocuments::ParticipatoryDocumentsType"
|
21
|
+
|
22
|
+
component.permissions_class_name = "Decidim::ParticipatoryDocuments::Permissions"
|
23
|
+
|
24
|
+
component.settings(:global) do |settings|
|
25
|
+
settings.attribute :suggestion_answering_enabled, type: :boolean, default: true
|
26
|
+
settings.attribute :max_suggestion_length, type: :integer, default: Decidim::ParticipatoryDocuments.max_suggestion_length
|
27
|
+
settings.attribute :min_suggestion_length, type: :integer, default: Decidim::ParticipatoryDocuments.min_suggestion_length
|
28
|
+
end
|
29
|
+
|
30
|
+
# component.settings(:step) do |settings|
|
31
|
+
# end
|
32
|
+
|
33
|
+
component.exports :suggestions do |exports|
|
34
|
+
exports.collection do |component_instance|
|
35
|
+
document = Decidim::ParticipatoryDocuments::Document.find_by(component: component_instance)
|
36
|
+
Decidim::ParticipatoryDocuments::Suggestion
|
37
|
+
.where(suggestable: document)
|
38
|
+
.or(Decidim::ParticipatoryDocuments::Suggestion.where(suggestable: document.sections)).order(:id)
|
39
|
+
end
|
40
|
+
|
41
|
+
exports.include_in_open_data = false
|
42
|
+
exports.serializer Decidim::ParticipatoryDocuments::SuggestionSerializer
|
43
|
+
end
|
44
|
+
|
45
|
+
# component.register_resource(:participatory_document) do |resource|
|
46
|
+
# resource.model_class_name = "Decidim::ParticipatoryDocuments::Document"
|
47
|
+
# resource.template = "decidim/participatory_documents/documents/linked_participatory_documents"
|
48
|
+
# resource.card = "decidim/participatory_documents/participatory_document"
|
49
|
+
# resource.reported_content_cell = "decidim/participatory_documents/reported_content"
|
50
|
+
# resource.actions = %w(endorse vote amend comment vote_comment)
|
51
|
+
# resource.searchable = true
|
52
|
+
# end
|
53
|
+
|
54
|
+
# component.register_stat :participatory_documents_count, primary: true, priority: Decidim::StatsRegistry::HIGH_PRIORITY do |components, start_at, end_at|
|
55
|
+
# end
|
56
|
+
|
57
|
+
component.seeds do |participatory_space|
|
58
|
+
admin_user = Decidim::User.find_by(
|
59
|
+
organization: participatory_space.organization,
|
60
|
+
email: "admin@example.org"
|
61
|
+
)
|
62
|
+
|
63
|
+
params = {
|
64
|
+
name: Decidim::Components::Namer.new(participatory_space.organization.available_locales, :participatory_documents).i18n_name,
|
65
|
+
published_at: Time.current,
|
66
|
+
manifest_name: :participatory_documents,
|
67
|
+
participatory_space: participatory_space
|
68
|
+
}
|
69
|
+
|
70
|
+
component = Decidim.traceability.perform_action!(
|
71
|
+
"publish",
|
72
|
+
Decidim::Component,
|
73
|
+
admin_user,
|
74
|
+
visibility: "all"
|
75
|
+
) do
|
76
|
+
Decidim::Component.create!(params)
|
77
|
+
end
|
78
|
+
|
79
|
+
params = {
|
80
|
+
component: component,
|
81
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
82
|
+
description: Decidim::Faker::Localized.sentence(word_count: 20),
|
83
|
+
author: admin_user,
|
84
|
+
file: ActiveStorage::Blob.create_after_upload!(
|
85
|
+
io: File.open(File.join(__dir__, "seeds", "Exampledocument.pdf")),
|
86
|
+
filename: "Exampledocument.pdf",
|
87
|
+
content_type: "application/pdf",
|
88
|
+
metadata: nil
|
89
|
+
) # Keep after attached_to
|
90
|
+
}
|
91
|
+
|
92
|
+
document = Decidim.traceability.create!(
|
93
|
+
Decidim::ParticipatoryDocuments::Document,
|
94
|
+
admin_user,
|
95
|
+
params,
|
96
|
+
visibility: "all"
|
97
|
+
)
|
98
|
+
|
99
|
+
group1 = Decidim.traceability.create!(
|
100
|
+
Decidim::ParticipatoryDocuments::Section,
|
101
|
+
admin_user,
|
102
|
+
{
|
103
|
+
document: document,
|
104
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
105
|
+
state: :draft
|
106
|
+
},
|
107
|
+
visibility: "admin-only"
|
108
|
+
)
|
109
|
+
group2 = Decidim.traceability.create!(
|
110
|
+
Decidim::ParticipatoryDocuments::Section,
|
111
|
+
admin_user,
|
112
|
+
{
|
113
|
+
document: document,
|
114
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
115
|
+
state: :draft
|
116
|
+
},
|
117
|
+
visibility: "admin-only"
|
118
|
+
)
|
119
|
+
group3 = Decidim.traceability.create!(
|
120
|
+
Decidim::ParticipatoryDocuments::Section,
|
121
|
+
admin_user,
|
122
|
+
{
|
123
|
+
document: document,
|
124
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
125
|
+
state: :draft
|
126
|
+
},
|
127
|
+
visibility: "admin-only"
|
128
|
+
)
|
129
|
+
|
130
|
+
annotations = [
|
131
|
+
{
|
132
|
+
page_number: 1,
|
133
|
+
section: group1,
|
134
|
+
rect: {
|
135
|
+
left: 25.5,
|
136
|
+
top: 22.123,
|
137
|
+
width: 30.1,
|
138
|
+
height: 10.2
|
139
|
+
}
|
140
|
+
},
|
141
|
+
{
|
142
|
+
page_number: 1,
|
143
|
+
section: group2,
|
144
|
+
rect: {
|
145
|
+
left: 5.5,
|
146
|
+
top: 2.123,
|
147
|
+
width: 10.1,
|
148
|
+
height: 10.2
|
149
|
+
}
|
150
|
+
},
|
151
|
+
{
|
152
|
+
page_number: 1,
|
153
|
+
section: group2,
|
154
|
+
rect: {
|
155
|
+
left: 15.5,
|
156
|
+
top: 12.123,
|
157
|
+
width: 10.1,
|
158
|
+
height: 10.2
|
159
|
+
}
|
160
|
+
},
|
161
|
+
{
|
162
|
+
page_number: 1,
|
163
|
+
section: group3,
|
164
|
+
rect: {
|
165
|
+
left: 75.5,
|
166
|
+
top: 82.123,
|
167
|
+
width: 10.1,
|
168
|
+
height: 10.2
|
169
|
+
}
|
170
|
+
},
|
171
|
+
{
|
172
|
+
page_number: 2,
|
173
|
+
section: group3,
|
174
|
+
rect: {
|
175
|
+
left: 15.5,
|
176
|
+
top: 12.123,
|
177
|
+
width: 10.1,
|
178
|
+
height: 10.2
|
179
|
+
}
|
180
|
+
}
|
181
|
+
]
|
182
|
+
annotations.each do |annotation|
|
183
|
+
Decidim.traceability.create!(
|
184
|
+
Decidim::ParticipatoryDocuments::Annotation,
|
185
|
+
admin_user,
|
186
|
+
annotation,
|
187
|
+
visibility: "admin-only"
|
188
|
+
)
|
189
|
+
end
|
190
|
+
|
191
|
+
[document, group1, group2, group3].each do |suggestable|
|
192
|
+
10.times do
|
193
|
+
Decidim::ParticipatoryDocuments::Suggestion.create(
|
194
|
+
body: Decidim::Faker::Localized.sentence(word_count: 20),
|
195
|
+
suggestable: suggestable,
|
196
|
+
author: admin_user,
|
197
|
+
state: Decidim::ParticipatoryDocuments::Suggestion::POSSIBLE_STATES.sample
|
198
|
+
)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatoryDocuments
|
5
|
+
# This is the engine that runs on the public interface of decidim-ParticipatoryDocuments.
|
6
|
+
class Engine < ::Rails::Engine
|
7
|
+
isolate_namespace Decidim::ParticipatoryDocuments
|
8
|
+
|
9
|
+
routes do
|
10
|
+
scope path: "documents/:document_id/sections/:section_id" do
|
11
|
+
resources :suggestions, only: [:index, :create], controller: :section_suggestions, as: :document_section_suggestions
|
12
|
+
end
|
13
|
+
resources :documents do
|
14
|
+
collection do
|
15
|
+
get :pdf_viewer
|
16
|
+
end
|
17
|
+
resources :suggestions, only: [:index, :create], controller: :document_suggestions
|
18
|
+
end
|
19
|
+
|
20
|
+
root to: "documents#index"
|
21
|
+
end
|
22
|
+
|
23
|
+
config.to_prepare do
|
24
|
+
Decidim.participatory_space_manifests.each do |manifest|
|
25
|
+
manifest.model_class_name.constantize.new.user_roles.model.include(Decidim::ParticipatoryDocuments::ParticipatorySpaceUserRoleOverride)
|
26
|
+
end
|
27
|
+
rescue StandardError => e
|
28
|
+
Rails.logger.error("Error while trying to include Decidim::ReportingProposals::ParticipatorySpaceUserRoleOverride: #{e.message}")
|
29
|
+
end
|
30
|
+
|
31
|
+
initializer "decidim_participatory_documents.overrides", after: "decidim.action_controller" do
|
32
|
+
config.to_prepare do
|
33
|
+
Decidim::ParticipatorySpaceRoleConfig::Valuator.include(Decidim::ParticipatoryDocuments::ValuatorOverride)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
initializer "decidim_participatory_documents.add_cells_view_paths" do
|
38
|
+
Cell::ViewModel.view_paths << File.expand_path("#{Decidim::ParticipatoryDocuments::Engine.root}/app/cells")
|
39
|
+
end
|
40
|
+
|
41
|
+
initializer "decidim_participatory_documents.webpacker.assets_path" do
|
42
|
+
Decidim.register_assets_path File.expand_path("app/packs", root)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
Binary file
|
@@ -0,0 +1,144 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
FactoryBot.define do
|
4
|
+
factory :participatory_documents_component, parent: :component do
|
5
|
+
name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :participatory_documents).i18n_name }
|
6
|
+
manifest_name { :participatory_documents }
|
7
|
+
end
|
8
|
+
|
9
|
+
factory :participatory_documents_document, class: "Decidim::ParticipatoryDocuments::Document" do
|
10
|
+
title { generate_localized_title }
|
11
|
+
description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
12
|
+
component { create(:participatory_documents_component) }
|
13
|
+
author { build(:user, :confirmed, organization: component.organization) }
|
14
|
+
box_color { "#faaaaa" }
|
15
|
+
box_opacity { 20 }
|
16
|
+
|
17
|
+
trait :with_file do
|
18
|
+
file { Decidim::Dev.test_file("Exampledocument.pdf", "application/pdf") }
|
19
|
+
end
|
20
|
+
|
21
|
+
trait :with_sections do
|
22
|
+
after :create do |document|
|
23
|
+
document.sections = create_list(:participatory_documents_section, 2, document: document)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
trait :with_annotations do
|
28
|
+
after :create do |document|
|
29
|
+
document.sections = create_list(:participatory_documents_section, 2, :with_annotations, document: document)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
trait :with_global_suggestions do
|
34
|
+
after :create do |document|
|
35
|
+
document.suggestions = create_list(:participatory_documents_suggestion, 2, suggestable: document)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
trait :with_suggestions do
|
40
|
+
after :create do |document|
|
41
|
+
document.sections = create_list(:participatory_documents_section, 2, :with_suggestions, document: document)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
factory :participatory_documents_section, class: "Decidim::ParticipatoryDocuments::Section" do
|
47
|
+
document { create :participatory_documents_document }
|
48
|
+
title { generate_localized_title }
|
49
|
+
|
50
|
+
trait :with_annotation do
|
51
|
+
after :create do |section|
|
52
|
+
section.annotations = [create(:participatory_documents_annotation, section: section)]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
trait :with_annotations do
|
57
|
+
after :create do |section|
|
58
|
+
section.annotations = create_list(:participatory_documents_annotation, 2, section: section)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
trait :with_suggestions do
|
63
|
+
after :create do |section|
|
64
|
+
section.annotations = create_list(:participatory_documents_annotation, 2, :with_suggestions, section: section)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
factory :participatory_documents_annotation, class: "Decidim::ParticipatoryDocuments::Annotation" do
|
70
|
+
section { create(:participatory_documents_section) }
|
71
|
+
page_number { 1 }
|
72
|
+
rect do
|
73
|
+
{
|
74
|
+
top: rand(1.0..60.0),
|
75
|
+
left: rand(1.0..100.0),
|
76
|
+
width: rand(1.0..15.0),
|
77
|
+
height: rand(1.0..20.0)
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
trait :with_suggestions do
|
82
|
+
after :create do |annotation|
|
83
|
+
annotation.suggestions = create_list(:participatory_documents_suggestion, 2, suggestable: annotation)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
factory :participatory_documents_suggestion, class: "Decidim::ParticipatoryDocuments::Suggestion" do
|
89
|
+
suggestable { build(:dummy_resource) }
|
90
|
+
author { build(:user, organization: suggestable.organization) }
|
91
|
+
body { Decidim::Faker::Localized.localized { Faker::Lorem.paragraphs(number: 3).join(" ") } }
|
92
|
+
state { Decidim::ParticipatoryDocuments::Suggestion::POSSIBLE_STATES.sample }
|
93
|
+
answer { {} }
|
94
|
+
|
95
|
+
trait :draft do
|
96
|
+
answered_at { nil }
|
97
|
+
answer_is_published { false }
|
98
|
+
end
|
99
|
+
|
100
|
+
trait :published do
|
101
|
+
answered_at { Time.zone.now }
|
102
|
+
answer_is_published { true }
|
103
|
+
end
|
104
|
+
|
105
|
+
trait :not_answered do
|
106
|
+
state { :not_answered }
|
107
|
+
end
|
108
|
+
|
109
|
+
trait :evaluating do
|
110
|
+
state { :evaluating }
|
111
|
+
end
|
112
|
+
|
113
|
+
trait :withdrawn do
|
114
|
+
state { :withdrawn }
|
115
|
+
end
|
116
|
+
|
117
|
+
trait :rejected do
|
118
|
+
state { :rejected }
|
119
|
+
end
|
120
|
+
|
121
|
+
trait :accepted do
|
122
|
+
state { :accepted }
|
123
|
+
end
|
124
|
+
|
125
|
+
trait :with_answer do
|
126
|
+
answer { generate_localized_title }
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
factory :suggestion_valuation_assignment, class: "Decidim::ParticipatoryDocuments::ValuationAssignment" do
|
131
|
+
suggestion { build(:participatory_documents_suggestion) }
|
132
|
+
valuator_role do
|
133
|
+
space = suggestion.component.participatory_space
|
134
|
+
organization = space.organization
|
135
|
+
build :participatory_process_user_role, role: :valuator, user: build(:user, organization: organization)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
factory :participatory_documents_suggestion_note, class: "Decidim::ParticipatoryDocuments::SuggestionNote" do
|
140
|
+
body { Faker::Lorem.sentences(number: 3).join("\n") }
|
141
|
+
suggestion { build(:participatory_documents_suggestion) }
|
142
|
+
author { build(:user, organization: suggestion.organization) }
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
# This namespace holds the logic of the `decidim-participatory_documents` module.
|
5
|
+
module ParticipatoryDocuments
|
6
|
+
include ActiveSupport::Configurable
|
7
|
+
|
8
|
+
# Public: The maximum length of any text field (body, answers, etc) to export.
|
9
|
+
# Defaults to 50. Set to 0 to export the full text.
|
10
|
+
config_accessor :max_export_text_length do
|
11
|
+
50
|
12
|
+
end
|
13
|
+
|
14
|
+
# Public: The minimum length of a suggestion to be considered valid.
|
15
|
+
config_accessor :min_suggestion_length do
|
16
|
+
5
|
17
|
+
end
|
18
|
+
|
19
|
+
# Public: The maximum length of a suggestion to be considered valid.
|
20
|
+
config_accessor :max_suggestion_length do
|
21
|
+
500
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "decidim/participatory_documents/engine"
|
27
|
+
require "decidim/participatory_documents/admin"
|
28
|
+
require "decidim/participatory_documents/admin_engine"
|
29
|
+
require "decidim/participatory_documents/component"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
namespace :decidim_participatory_documents do
|
4
|
+
# Since we cannot install pdf.js as node module, nor we can use it from CDN, We are using the prebuilt version.
|
5
|
+
desc "Copies the pdf.js library from plugin root to designated application folder"
|
6
|
+
task :install_pdf_js do
|
7
|
+
copy_pdfjs_to_application "public"
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def decidim_participatory_documents_path
|
13
|
+
@decidim_participatory_documents_path ||= Pathname.new(decidim_participatory_documents_gemspec.full_gem_path) if Gem.loaded_specs.has_key?("decidim-participatory_documents")
|
14
|
+
end
|
15
|
+
|
16
|
+
def decidim_participatory_documents_gemspec
|
17
|
+
@decidim_participatory_documents_gemspec ||= Gem.loaded_specs["decidim-participatory_documents"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def copy_pdfjs_to_application(destination_path = origin_path)
|
21
|
+
FileUtils.cp_r(decidim_participatory_documents_path.join("pdfjs"), rails_app_path.join(destination_path))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
Rake::Task["decidim:webpacker:upgrade"].enhance do
|
26
|
+
Rake::Task["decidim_participatory_documents:install_pdf_js"].invoke
|
27
|
+
end
|