decidim 0.0.8.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of decidim might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.circleci/config.yml +21 -21
- data/.codeclimate.yml +10 -6
- data/.eslintignore +1 -0
- data/.gitignore +1 -1
- data/.rubocop.yml +38 -20
- data/.travis.yml +0 -1
- data/Gemfile +6 -9
- data/Gemfile.lock +165 -205
- data/Rakefile +1 -1
- data/codecov.yml +5 -71
- data/crowdin.yaml +1 -1
- data/decidim-admin/app/assets/stylesheets/decidim/admin/_decidim.scss +9 -2
- data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_action-icon.scss +7 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_cards.scss +6 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_editor.scss +1 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/{_sidebar.scss → extra/_sidebar.scss} +0 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_action-icon.scss +23 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_cards.scss +0 -7
- data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_icons.scss +4 -2
- data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_modules.scss +0 -1
- data/decidim-admin/app/assets/stylesheets/decidim/admin/{modules/_datepicker.scss → plugins/_foundation-datepicker.scss} +1 -1
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/_constants.scss +5 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/_math.scss +45 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_acos.scss +12 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_asin.scss +12 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_atan.scss +28 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_atan2.scss +37 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_cos.scss +13 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_cot.scss +9 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_csc.scss +9 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_exp.scss +12 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_fact.scss +18 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_frexp.scss +21 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_ldexp.scss +17 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_log.scss +34 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_pow.scss +28 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sec.scss +9 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sin.scss +9 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sqrt.scss +16 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_tan.scss +9 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_deg-to-rad.scss +4 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_rad-to-deg.scss +4 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_strip-unit.scss +8 -0
- data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_unitless-rad.scss +13 -0
- data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +23 -17
- data/decidim-admin/app/commands/decidim/admin/create_participatory_process_group.rb +1 -1
- data/decidim-admin/app/controllers/decidim/admin/moderations_controller.rb +4 -4
- data/decidim-admin/app/controllers/decidim/admin/participatory_processes_controller.rb +1 -1
- data/decidim-admin/app/forms/decidim/admin/organization_form.rb +6 -2
- data/decidim-admin/app/forms/decidim/admin/participatory_process_form.rb +5 -0
- data/decidim-admin/app/helpers/decidim/admin/application_helper.rb +1 -1
- data/decidim-admin/app/helpers/decidim/admin/attributes_display_helper.rb +1 -1
- data/decidim-admin/app/views/decidim/admin/features/_feature.html.erb +5 -1
- data/decidim-admin/app/views/decidim/admin/moderations/_report.html.erb +11 -0
- data/decidim-admin/app/views/decidim/admin/moderations/index.html.erb +22 -24
- data/decidim-admin/app/views/layouts/decidim/admin/participatory_process.html.erb +3 -0
- data/decidim-admin/config/i18n-tasks.yml +1 -0
- data/decidim-admin/config/locales/ca.yml +7 -3
- data/decidim-admin/config/locales/en.yml +6 -2
- data/decidim-admin/config/locales/es.yml +7 -3
- data/decidim-admin/config/locales/eu.yml +4 -3
- data/decidim-admin/config/locales/fi.yml +4 -3
- data/decidim-admin/config/locales/fr.yml +389 -2
- data/decidim-admin/config/locales/nl.yml +4 -1
- data/decidim-admin/decidim-admin.gemspec +3 -3
- data/decidim-admin/lib/decidim/admin/test/manage_attachments_examples.rb +2 -2
- data/decidim-admin/spec/commands/activate_participatory_process_step_spec.rb +1 -0
- data/decidim-admin/spec/commands/create_category_spec.rb +1 -1
- data/decidim-admin/spec/commands/create_feature_spec.rb +7 -5
- data/decidim-admin/spec/commands/create_participatory_process_admin_spec.rb +2 -1
- data/decidim-admin/spec/commands/create_participatory_process_spec.rb +14 -6
- data/decidim-admin/spec/commands/create_scope_spec.rb +3 -2
- data/decidim-admin/spec/commands/deactivate_participatory_process_step_spec.rb +1 -0
- data/decidim-admin/spec/commands/destroy_feature_spec.rb +1 -0
- data/decidim-admin/spec/commands/destroy_participatory_process_step_spec.rb +1 -0
- data/decidim-admin/spec/commands/publish_participatory_process_spec.rb +1 -0
- data/decidim-admin/spec/commands/reorder_participatory_process_steps_spec.rb +1 -0
- data/decidim-admin/spec/commands/unpublish_participatory_process_spec.rb +1 -0
- data/decidim-admin/spec/commands/update_feature_spec.rb +7 -5
- data/decidim-admin/spec/commands/update_participatory_process_spec.rb +5 -5
- data/decidim-admin/spec/commands/update_scope_spec.rb +3 -2
- data/decidim-admin/spec/factories.rb +1 -0
- data/decidim-admin/spec/features/admin_invite_spec.rb +5 -5
- data/decidim-admin/spec/features/admin_manages_newsletters_spec.rb +5 -5
- data/decidim-admin/spec/features/admin_manages_organization_admins_spec.rb +2 -2
- data/decidim-admin/spec/features/admin_manages_organization_scopes_spec.rb +3 -3
- data/decidim-admin/spec/features/admin_manages_organization_spec.rb +7 -11
- data/decidim-admin/spec/features/admin_manages_participatory_process_groups_spec.rb +2 -2
- data/decidim-admin/spec/features/admin_manages_participatory_processes_spec.rb +3 -3
- data/decidim-admin/spec/features/static_pages_spec.rb +8 -7
- data/decidim-admin/spec/forms/newsletter_form_spec.rb +2 -2
- data/decidim-admin/spec/forms/organization_form_spec.rb +3 -3
- data/decidim-admin/spec/forms/participatory_process_form_spec.rb +4 -4
- data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +1 -1
- data/decidim-admin/spec/forms/participatory_process_user_role_form_spec.rb +1 -1
- data/decidim-admin/spec/forms/scope_form_spec.rb +1 -1
- data/decidim-admin/spec/helpers/aria_selected_link_to_helper_spec.rb +1 -0
- data/decidim-admin/spec/helpers/feature_settings_helper_spec.rb +1 -0
- data/decidim-admin/spec/jobs/newsletter_delivery_job_spec.rb +2 -2
- data/decidim-admin/spec/queries/process_admins_spec.rb +1 -1
- data/decidim-admin/spec/shared/manage_process_admins_examples.rb +2 -2
- data/decidim-admin/spec/shared/manage_process_categories_examples.rb +3 -3
- data/decidim-admin/spec/shared/manage_process_steps_examples.rb +5 -5
- data/decidim-admin/spec/shared/manage_processes_examples.rb +4 -4
- data/decidim-admin/spec/shared/participatory_admin_shared_context.rb +1 -0
- data/decidim-admin/spec/spec_helper.rb +1 -0
- data/decidim-admin/spec/views/decidim/static_pages/_form.html.erb_spec.rb +1 -0
- data/decidim-api/app/controllers/decidim/api/application_controller.rb +1 -1
- data/decidim-api/decidim-api.gemspec +1 -1
- data/decidim-api/spec/factories.rb +1 -0
- data/decidim-api/spec/spec_helper.rb +1 -0
- data/decidim-budgets/app/queries/decidim/budgets/filtered_projects.rb +36 -0
- data/decidim-budgets/config/locales/ca.yml +1 -0
- data/decidim-budgets/config/locales/en.yml +1 -0
- data/decidim-budgets/config/locales/es.yml +1 -0
- data/decidim-budgets/config/locales/fr.yml +35 -3
- data/decidim-budgets/decidim-budgets.gemspec +2 -2
- data/decidim-budgets/lib/decidim/budgets/feature.rb +9 -0
- data/decidim-budgets/spec/commands/add_line_item_spec.rb +6 -9
- data/decidim-budgets/spec/commands/cancel_order_spec.rb +3 -1
- data/decidim-budgets/spec/commands/checkout_spec.rb +3 -1
- data/decidim-budgets/spec/commands/create_project_spec.rb +4 -3
- data/decidim-budgets/spec/commands/remove_line_item_spec.rb +2 -1
- data/decidim-budgets/spec/commands/update_project_spec.rb +4 -3
- data/decidim-budgets/spec/factories.rb +1 -0
- data/decidim-budgets/spec/features/orders_spec.rb +24 -24
- data/decidim-budgets/spec/forms/project_form_spec.rb +1 -0
- data/decidim-budgets/spec/models/project_spec.rb +1 -1
- data/decidim-budgets/spec/queries/decidim/budgets/filtered_projects_spec.rb +21 -0
- data/decidim-budgets/spec/services/project_search_spec.rb +4 -3
- data/decidim-budgets/spec/shared/admin_shared_context.rb +1 -0
- data/decidim-budgets/spec/shared/manage_attachments_examples.rb +1 -0
- data/decidim-budgets/spec/spec_helper.rb +1 -0
- data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
- data/decidim-comments/app/commands/decidim/comments/create_comment.rb +8 -2
- data/decidim-comments/app/frontend/application/application.component.tsx +3 -3
- data/decidim-comments/app/frontend/application/icon.component.tsx +1 -1
- data/decidim-comments/app/frontend/comments/add_comment_form.component.tsx +7 -7
- data/decidim-comments/app/frontend/comments/comment.component.test.tsx +7 -7
- data/decidim-comments/app/frontend/comments/comment.component.tsx +6 -6
- data/decidim-comments/app/frontend/comments/comment_thread.component.tsx +2 -2
- data/decidim-comments/app/frontend/comments/comments.component.test.tsx +5 -5
- data/decidim-comments/app/frontend/comments/comments.component.tsx +6 -6
- data/decidim-comments/app/frontend/comments/down_vote_button.component.test.tsx +4 -4
- data/decidim-comments/app/frontend/comments/down_vote_button.component.tsx +3 -3
- data/decidim-comments/app/frontend/comments/up_vote_button.component.test.tsx +4 -4
- data/decidim-comments/app/frontend/comments/up_vote_button.component.tsx +3 -3
- data/decidim-comments/app/frontend/comments/vote_button.component.tsx +1 -1
- data/decidim-comments/app/frontend/comments/vote_button_component.test.tsx +2 -2
- data/decidim-comments/app/frontend/entry.ts +2 -2
- data/decidim-comments/app/frontend/support/generate_comments_data.ts +2 -2
- data/decidim-comments/app/frontend/support/load_translations.ts +2 -2
- data/decidim-comments/app/frontend/support/resolve_graphql_query.ts +1 -1
- data/decidim-comments/app/mailers/decidim/comments/comment_notification_mailer.rb +1 -1
- data/decidim-comments/app/models/decidim/comments/comment.rb +3 -8
- data/decidim-comments/app/models/decidim/comments/seed.rb +1 -0
- data/decidim-comments/config/locales/fr.yml +62 -1
- data/decidim-comments/db/migrate/20170504085413_add_root_commentable_to_comments.rb +7 -0
- data/decidim-comments/db/migrate/20170510091348_update_root_commentable_for_comments.rb +22 -0
- data/decidim-comments/db/migrate/20170510091409_set_root_commentable_null_constraints.rb +6 -0
- data/decidim-comments/db/seeds.rb +4 -2
- data/decidim-comments/lib/decidim/comments/engine.rb +8 -0
- data/decidim-comments/lib/decidim/comments/test/factories.rb +1 -0
- data/decidim-comments/spec/commands/create_comment_spec.rb +13 -6
- data/decidim-comments/spec/commands/vote_comment_spec.rb +2 -6
- data/decidim-comments/spec/factories.rb +1 -0
- data/decidim-comments/spec/features/notifications_spec.rb +4 -4
- data/decidim-comments/spec/features/process_admin_manages_comments_spec.rb +1 -1
- data/decidim-comments/spec/features/report_comment_spec.rb +4 -2
- data/decidim-comments/spec/helpers/comments_helper_spec.rb +3 -3
- data/decidim-comments/spec/mailers/comment_notification_mailer_spec.rb +2 -1
- data/decidim-comments/spec/models/comment_spec.rb +5 -9
- data/decidim-comments/spec/models/comment_vote_spec.rb +3 -3
- data/decidim-comments/spec/models/seed_spec.rb +1 -1
- data/decidim-comments/spec/queries/sorted_comments_spec.rb +5 -5
- data/decidim-comments/spec/shared/admin_shared_context.rb +1 -0
- data/decidim-comments/spec/spec_helper.rb +1 -0
- data/decidim-comments/spec/types/comment_mutation_type_spec.rb +4 -12
- data/decidim-comments/spec/types/comment_type_spec.rb +4 -5
- data/decidim-comments/spec/types/commentable_mutation_type_spec.rb +2 -2
- data/decidim-comments/spec/types/mutation_type_spec.rb +4 -6
- data/decidim-comments/spec/types/query_type_spec.rb +1 -1
- data/decidim-dev/decidim-dev.gemspec +6 -6
- data/decidim-dev/lib/decidim/dev/common_rake.rb +5 -1
- data/decidim-dev/lib/decidim/dev/railtie.rb +1 -0
- data/decidim-dev/lib/decidim/dev/test/base_spec_helper.rb +0 -2
- data/decidim-dev/lib/decidim/dev/test/rspec_support/geocoder.rb +4 -3
- data/decidim-dev/lib/decidim/dev/test/rspec_support/i18n.rb +2 -2
- data/decidim-dev/lib/decidim/dev/test/rspec_support/webmock.rb +1 -0
- data/decidim-dev/lib/generators/decidim/dummy_generator.rb +1 -1
- data/decidim-dev/lib/generators/decidim/templates/autoprefixer_initializer.rb +4 -3
- data/decidim-dev/lib/tasks/test_app.rake +1 -0
- data/decidim-meetings/app/controllers/decidim/meetings/meeting_widgets_controller.rb +1 -0
- data/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +8 -8
- data/decidim-meetings/app/helpers/decidim/meetings/map_helper.rb +9 -9
- data/decidim-meetings/app/models/decidim/meetings/meeting.rb +1 -1
- data/decidim-meetings/app/views/decidim/meetings/meeting_widgets/show.html.erb +8 -17
- data/decidim-meetings/config/locales/fr.yml +95 -1
- data/decidim-meetings/lib/decidim/meetings/feature.rb +7 -0
- data/decidim-meetings/spec/commands/close_meeting_spec.rb +2 -1
- data/decidim-meetings/spec/commands/create_meeting_spec.rb +6 -5
- data/decidim-meetings/spec/commands/update_meeting_spec.rb +6 -5
- data/decidim-meetings/spec/factories.rb +1 -0
- data/decidim-meetings/spec/features/explore_meetings_spec.rb +2 -1
- data/decidim-meetings/spec/forms/close_meeting_form_spec.rb +1 -0
- data/decidim-meetings/spec/forms/meeting_form_spec.rb +5 -3
- data/decidim-meetings/spec/services/meeting_search_spec.rb +3 -2
- data/decidim-meetings/spec/shared/admin_shared_context.rb +1 -0
- data/decidim-meetings/spec/shared/manage_attachments_examples.rb +1 -1
- data/decidim-meetings/spec/shared/manage_meetings_examples.rb +21 -20
- data/decidim-meetings/spec/spec_helper.rb +1 -0
- data/decidim-pages/config/locales/fr.yml +18 -1
- data/decidim-pages/decidim-pages.gemspec +1 -1
- data/decidim-pages/lib/decidim/pages/feature.rb +7 -0
- data/decidim-pages/spec/commands/create_page_spec.rb +1 -3
- data/decidim-pages/spec/factories.rb +1 -0
- data/decidim-pages/spec/spec_helper.rb +1 -0
- data/decidim-proposals/app/commands/decidim/proposals/create_proposal_export.rb +36 -0
- data/decidim-proposals/app/controllers/decidim/proposals/admin/exports_controller.rb +24 -0
- data/decidim-proposals/app/controllers/decidim/proposals/proposal_votes_controller.rb +3 -1
- data/decidim-proposals/app/controllers/decidim/proposals/proposal_widgets_controller.rb +0 -5
- data/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +0 -1
- data/decidim-proposals/app/jobs/decidim/proposals/export_job.rb +21 -0
- data/decidim-proposals/app/models/decidim/proposals/proposal.rb +1 -1
- data/decidim-proposals/app/queries/decidim/proposals/filtered_proposals.rb +36 -0
- data/decidim-proposals/app/services/decidim/proposals/proposal_serializer.rb +72 -0
- data/decidim-proposals/app/views/decidim/proposals/admin/proposals/index.html.erb +15 -3
- data/decidim-proposals/app/views/decidim/proposals/proposal_widgets/show.html.erb +4 -25
- data/decidim-proposals/config/locales/ca.yml +4 -0
- data/decidim-proposals/config/locales/en.yml +6 -1
- data/decidim-proposals/config/locales/es.yml +4 -0
- data/decidim-proposals/config/locales/fr.yml +146 -1
- data/decidim-proposals/decidim-proposals.gemspec +2 -2
- data/decidim-proposals/lib/decidim/proposals/admin_engine.rb +5 -0
- data/decidim-proposals/lib/decidim/proposals/feature.rb +14 -0
- data/decidim-proposals/spec/factories.rb +1 -0
- data/decidim-proposals/spec/features/admin_manages_proposals_spec.rb +1 -0
- data/decidim-proposals/spec/features/process_admin_manages_proposals_spec.rb +1 -0
- data/decidim-proposals/spec/features/proposals_spec.rb +29 -28
- data/decidim-proposals/spec/features/report_proposal_spec.rb +2 -2
- data/decidim-proposals/spec/features/vote_proposal_spec.rb +36 -32
- data/decidim-proposals/spec/helpers/proposal_order_helper_spec.rb +3 -3
- data/decidim-proposals/spec/jobs/export_job_spec.rb +57 -0
- data/decidim-proposals/spec/lib/decidim/proposals/feature_spec.rb +1 -0
- data/decidim-proposals/spec/models/decidim/proposals/proposal_vote_spec.rb +3 -3
- data/decidim-proposals/spec/queries/decidim/proposals/filtered_proposals_spec.rb +21 -0
- data/decidim-proposals/spec/services/decidim/proposals/proposal_search_spec.rb +12 -12
- data/decidim-proposals/spec/services/decidim/proposals/proposal_serializer_spec.rb +71 -0
- data/decidim-proposals/spec/shared/admin_shared_context.rb +1 -0
- data/decidim-proposals/spec/shared/create_proposal_examples.rb +4 -3
- data/decidim-proposals/spec/shared/export_proposals_examples.rb +37 -0
- data/decidim-proposals/spec/shared/manage_proposals_examples.rb +12 -11
- data/decidim-proposals/spec/shared/proposal_form_examples.rb +9 -8
- data/decidim-proposals/spec/spec_helper.rb +1 -0
- data/decidim-results/app/controllers/decidim/results/result_widgets_controller.rb +1 -0
- data/decidim-results/app/controllers/decidim/results/results_controller.rb +1 -1
- data/decidim-results/app/queries/decidim/results/filtered_results.rb +36 -0
- data/decidim-results/app/services/decidim/results/result_stats_calculator.rb +1 -1
- data/decidim-results/app/views/decidim/results/result_widgets/show.html.erb +2 -10
- data/decidim-results/config/locales/fr.yml +75 -1
- data/decidim-results/decidim-results.gemspec +2 -2
- data/decidim-results/lib/decidim/results/feature.rb +9 -0
- data/decidim-results/spec/commands/create_result_spec.rb +4 -3
- data/decidim-results/spec/commands/update_result_spec.rb +5 -4
- data/decidim-results/spec/controllers/results_controller_spec.rb +31 -0
- data/decidim-results/spec/factories.rb +1 -0
- data/decidim-results/spec/features/explore_results_spec.rb +75 -74
- data/decidim-results/spec/forms/result_form_spec.rb +2 -1
- data/decidim-results/spec/queries/decidim/results/filtered_results_spec.rb +21 -0
- data/decidim-results/spec/services/result_search_spec.rb +4 -3
- data/decidim-results/spec/services/result_stats_calculator_spec.rb +1 -0
- data/decidim-results/spec/shared/admin_shared_context.rb +1 -0
- data/decidim-results/spec/spec_helper.rb +1 -0
- data/decidim-system/config/locales/fr.yml +64 -1
- data/decidim-system/decidim-system.gemspec +3 -3
- data/decidim-system/spec/factories.rb +1 -0
- data/decidim-system/spec/spec_helper.rb +1 -0
- data/docs/how_to_create_a_plugin.md +117 -139
- data/lib/generators/decidim/install_generator.rb +1 -1
- data/package.json +30 -31
- data/tslint.json +1 -2
- data/webpack.config.js +2 -3
- data/yarn.lock +976 -1326
- metadata +68 -31
- data/decidim-admin/yarn.lock +0 -4
- data/decidim-api/.gitignore +0 -7
- data/decidim-budgets/.gitignore +0 -7
- data/decidim-meetings/.gitignore +0 -7
- data/decidim-pages/.gitignore +0 -3
- data/decidim-proposals/.gitignore +0 -3
- data/decidim-results/.gitignore +0 -7
@@ -1,15 +1,15 @@
|
|
1
|
-
import { mount, shallow }
|
1
|
+
import { mount, shallow } from "enzyme";
|
2
2
|
import * as $ from "jquery";
|
3
3
|
import * as React from "react";
|
4
4
|
|
5
5
|
import { CommentFragment } from "../support/schema";
|
6
|
-
import AddCommentForm
|
7
|
-
import Comment
|
8
|
-
import DownVoteButton
|
9
|
-
import UpVoteButton
|
6
|
+
import AddCommentForm from "./add_comment_form.component";
|
7
|
+
import Comment from "./comment.component";
|
8
|
+
import DownVoteButton from "./down_vote_button.component";
|
9
|
+
import UpVoteButton from "./up_vote_button.component";
|
10
10
|
|
11
11
|
import generateCommentsData from "../support/generate_comments_data";
|
12
|
-
import generateUserData
|
12
|
+
import generateUserData from "../support/generate_user_data";
|
13
13
|
|
14
14
|
import { loadLocaleTranslations } from "../support/load_translations";
|
15
15
|
|
@@ -19,7 +19,7 @@ describe("<Comment />", () => {
|
|
19
19
|
|
20
20
|
beforeEach(() => {
|
21
21
|
loadLocaleTranslations("en");
|
22
|
-
|
22
|
+
const commentsData = generateCommentsData(1);
|
23
23
|
commentsData[0].comments = generateCommentsData(3);
|
24
24
|
|
25
25
|
comment = commentsData[0];
|
@@ -1,12 +1,12 @@
|
|
1
|
-
import * as classnames
|
2
|
-
import * as moment
|
3
|
-
import * as React
|
1
|
+
import * as classnames from "classnames";
|
2
|
+
import * as moment from "moment";
|
3
|
+
import * as React from "react";
|
4
4
|
|
5
5
|
import Icon from "../application/icon.component";
|
6
6
|
|
7
|
-
import AddCommentForm
|
8
|
-
import DownVoteButton
|
9
|
-
import UpVoteButton
|
7
|
+
import AddCommentForm from "./add_comment_form.component";
|
8
|
+
import DownVoteButton from "./down_vote_button.component";
|
9
|
+
import UpVoteButton from "./up_vote_button.component";
|
10
10
|
|
11
11
|
import {
|
12
12
|
AddCommentFormSessionFragment,
|
@@ -1,14 +1,14 @@
|
|
1
|
-
import { shallow }
|
1
|
+
import { shallow } from "enzyme";
|
2
2
|
import * as React from "react";
|
3
3
|
|
4
|
-
import AddCommentForm
|
4
|
+
import AddCommentForm from "./add_comment_form.component";
|
5
5
|
import CommentOrderSelector from "./comment_order_selector.component";
|
6
|
-
import CommentThread
|
6
|
+
import CommentThread from "./comment_thread.component";
|
7
7
|
import { Comments, commentsQuery } from "./comments.component";
|
8
8
|
|
9
9
|
import generateCommentsData from "../support/generate_comments_data";
|
10
|
-
import generateUserData
|
11
|
-
import resolveGraphQLQuery
|
10
|
+
import generateUserData from "../support/generate_user_data";
|
11
|
+
import resolveGraphQLQuery from "../support/resolve_graphql_query";
|
12
12
|
|
13
13
|
import { loadLocaleTranslations } from "../support/load_translations";
|
14
14
|
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import * as React
|
2
|
-
import { graphql }
|
1
|
+
import * as React from "react";
|
2
|
+
import { graphql } from "react-apollo";
|
3
3
|
|
4
|
-
import Application
|
4
|
+
import Application from "../application/application.component";
|
5
5
|
|
6
|
-
import AddCommentForm
|
6
|
+
import AddCommentForm from "./add_comment_form.component";
|
7
7
|
import CommentOrderSelector from "./comment_order_selector.component";
|
8
|
-
import CommentThread
|
8
|
+
import CommentThread from "./comment_thread.component";
|
9
9
|
|
10
10
|
import {
|
11
11
|
GetCommentsQuery,
|
@@ -18,7 +18,7 @@ interface CommentsProps extends GetCommentsQuery {
|
|
18
18
|
loading?: boolean;
|
19
19
|
orderBy: string;
|
20
20
|
reorderComments: (orderBy: string) => void;
|
21
|
-
}
|
21
|
+
}
|
22
22
|
|
23
23
|
/**
|
24
24
|
* The core class of the Decidim Comments engine.
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { shallow }
|
1
|
+
import { shallow } from "enzyme";
|
2
2
|
import * as React from "react";
|
3
3
|
|
4
|
-
import { DownVoteButton }
|
5
|
-
import VoteButton
|
4
|
+
import { DownVoteButton } from "./down_vote_button.component";
|
5
|
+
import VoteButton from "./vote_button.component";
|
6
6
|
|
7
7
|
import generateCommentsData from "../support/generate_comments_data";
|
8
8
|
|
@@ -13,7 +13,7 @@ describe("<DownVoteButton />", () => {
|
|
13
13
|
const downVote = jasmine.createSpy("downVote");
|
14
14
|
|
15
15
|
beforeEach(() => {
|
16
|
-
|
16
|
+
const commentsData = generateCommentsData(1);
|
17
17
|
|
18
18
|
comment = commentsData[0];
|
19
19
|
});
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import * as React
|
2
|
-
import { graphql }
|
1
|
+
import * as React from "react";
|
2
|
+
import { graphql } from "react-apollo";
|
3
3
|
|
4
|
-
import VoteButton
|
4
|
+
import VoteButton from "./vote_button.component";
|
5
5
|
|
6
6
|
import {
|
7
7
|
CommentFragment,
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { shallow }
|
1
|
+
import { shallow } from "enzyme";
|
2
2
|
import * as React from "react";
|
3
3
|
|
4
|
-
import { UpVoteButton }
|
5
|
-
import VoteButton
|
4
|
+
import { UpVoteButton } from "./up_vote_button.component";
|
5
|
+
import VoteButton from "./vote_button.component";
|
6
6
|
|
7
7
|
import generateCommentsData from "../support/generate_comments_data";
|
8
8
|
|
@@ -13,7 +13,7 @@ describe("<UpVoteButton />", () => {
|
|
13
13
|
const upVote = jasmine.createSpy("upVote");
|
14
14
|
|
15
15
|
beforeEach(() => {
|
16
|
-
|
16
|
+
const commentsData = generateCommentsData(1);
|
17
17
|
|
18
18
|
comment = commentsData[0];
|
19
19
|
});
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import * as React
|
2
|
-
import { graphql }
|
1
|
+
import * as React from "react";
|
2
|
+
import { graphql } from "react-apollo";
|
3
3
|
|
4
|
-
import VoteButton
|
4
|
+
import VoteButton from "./vote_button.component";
|
5
5
|
|
6
6
|
import {
|
7
7
|
CommentFragment,
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { shallow } from "enzyme";
|
2
2
|
import * as React from "react";
|
3
|
-
import Icon
|
4
|
-
import VoteButton
|
3
|
+
import Icon from "../application/icon.component";
|
4
|
+
import VoteButton from "./vote_button.component";
|
5
5
|
|
6
6
|
describe("<VoteButton />", () => {
|
7
7
|
const voteAction: jasmine.Spy = jasmine.createSpy("voteAction");
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as React from "react";
|
2
|
-
import * as ReactDOM
|
2
|
+
import * as ReactDOM from "react-dom";
|
3
3
|
|
4
4
|
import Comments, { CommentsApplicationProps } from "./comments/comments.component";
|
5
5
|
import loadTranslations from "./support/load_translations";
|
@@ -7,7 +7,7 @@ import loadTranslations from "./support/load_translations";
|
|
7
7
|
window.DecidimComments = window.DecidimComments || {};
|
8
8
|
|
9
9
|
window.DecidimComments.renderCommentsComponent = (nodeId: string, props: CommentsApplicationProps) => {
|
10
|
-
|
10
|
+
const node = window.$(`#${nodeId}`)[0];
|
11
11
|
|
12
12
|
ReactDOM.render(
|
13
13
|
React.createElement(Comments, props),
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { date, image, lorem, name, random } from "faker/locale/en";
|
2
2
|
|
3
|
-
import { CommentFragment }
|
3
|
+
import { CommentFragment } from "../support/schema";
|
4
4
|
|
5
5
|
/**
|
6
6
|
* Generate random comment data to emulate a database real content
|
@@ -8,7 +8,7 @@ import { CommentFragment } from "../support/schema";
|
|
8
8
|
* @returns {Object[]} - An array of objects representing comments data
|
9
9
|
*/
|
10
10
|
const generateCommentsData = (num = 1) => {
|
11
|
-
|
11
|
+
const commentsData: CommentFragment[] = [];
|
12
12
|
|
13
13
|
for (let idx = 0; idx < num; idx += 1) {
|
14
14
|
commentsData.push({
|
@@ -9,14 +9,14 @@ const { I18n } = require("react-i18nify");
|
|
9
9
|
* @returns {Void} - Nothing
|
10
10
|
*/
|
11
11
|
const loadTranslations = () => {
|
12
|
-
const translationsContext = (
|
12
|
+
const translationsContext = (require as any).context("../../../config/locales/", true, /\.yml$/);
|
13
13
|
const translationFiles = requireAll(translationsContext);
|
14
14
|
|
15
15
|
const translations = translationsContext.keys().reduce((acc: any, key: string, index: number) => {
|
16
16
|
const match = key.match(/\.\/(.*)\.yml/);
|
17
17
|
|
18
18
|
if (match) {
|
19
|
-
|
19
|
+
const locale = match[1];
|
20
20
|
acc[locale] = translationFiles[index][locale].decidim;
|
21
21
|
}
|
22
22
|
|
@@ -20,7 +20,7 @@ const resolver = (fieldName: string, root: any) => root[fieldName];
|
|
20
20
|
const resolveGraphQLQuery = (document: any, options: any = {}) => {
|
21
21
|
const { filterResult, rootValue, context, variables } = options;
|
22
22
|
|
23
|
-
|
23
|
+
const result = graphql(
|
24
24
|
resolver,
|
25
25
|
document,
|
26
26
|
rootValue,
|
@@ -32,7 +32,7 @@ module Decidim
|
|
32
32
|
private
|
33
33
|
|
34
34
|
def commentable_title
|
35
|
-
@commentable.title.
|
35
|
+
@commentable.title.is_a?(Hash) ? @commentable.title[I18n.locale.to_s] : @commentable.title
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -18,10 +18,11 @@ module Decidim
|
|
18
18
|
MAX_DEPTH = 3
|
19
19
|
|
20
20
|
belongs_to :commentable, foreign_key: "decidim_commentable_id", foreign_type: "decidim_commentable_type", polymorphic: true
|
21
|
+
belongs_to :root_commentable, foreign_key: "decidim_root_commentable_id", foreign_type: "decidim_root_commentable_type", polymorphic: true
|
21
22
|
has_many :up_votes, -> { where(weight: 1) }, foreign_key: "decidim_comment_id", class_name: CommentVote, dependent: :destroy
|
22
23
|
has_many :down_votes, -> { where(weight: -1) }, foreign_key: "decidim_comment_id", class_name: CommentVote, dependent: :destroy
|
23
24
|
|
24
|
-
validates :author, :commentable, :body, presence: true
|
25
|
+
validates :author, :commentable, :root_commentable, :body, presence: true
|
25
26
|
validates :depth, numericality: { greater_than_or_equal_to: 0 }
|
26
27
|
validates :alignment, inclusion: { in: [0, 1, -1] }
|
27
28
|
|
@@ -50,15 +51,9 @@ module Decidim
|
|
50
51
|
down_votes.any? { |vote| vote.author == user }
|
51
52
|
end
|
52
53
|
|
53
|
-
# Public: Returns the commentable object of the parent comment
|
54
|
-
def root_commentable
|
55
|
-
return commentable if depth == 0
|
56
|
-
commentable.root_commentable
|
57
|
-
end
|
58
|
-
|
59
54
|
# Public: Overrides the `reported_content` Reportable concern method.
|
60
55
|
def reported_content
|
61
|
-
|
56
|
+
body
|
62
57
|
end
|
63
58
|
|
64
59
|
private
|
@@ -1,5 +1,66 @@
|
|
1
1
|
fr:
|
2
|
+
activerecord:
|
3
|
+
errors:
|
4
|
+
messages:
|
5
|
+
cannot_have_comments: ne peut pas être commenté
|
2
6
|
decidim:
|
3
7
|
comments:
|
4
8
|
comment_notification_mailer:
|
5
|
-
|
9
|
+
comment_created:
|
10
|
+
new_comment_html: Un nouveau commentaire a été publié par <b>%{commenter}</b> dans <b>%{commentable_link}</b>
|
11
|
+
hello: Bonjour %{name},
|
12
|
+
manage_email_subscriptions_html: Vous pouvez arrêter de recevoir ces emails en modifiant vos paramètres dans %{link}.
|
13
|
+
notifications_settings_link: la page de configuration des notifications
|
14
|
+
reply_created:
|
15
|
+
new_reply_html: Il y a une nouvelle réponse à votre commentaire de <b>%{commenter}</b> dans <b>%{commentable_link}</b>
|
16
|
+
mailer:
|
17
|
+
comment_notification:
|
18
|
+
comment_created:
|
19
|
+
subject: Vous avez un nouveau commentaire
|
20
|
+
reply_created:
|
21
|
+
subject: Vous avez une nouvelle réponse à votre commentaire
|
22
|
+
components:
|
23
|
+
add_comment_form:
|
24
|
+
account_message: 'Pour ajouter votre commentaire <a href="%{sign_in_url}"> identifiez vous avec votre compte</a> ou <a href="%{sign_up_url}">inscrivez-vous</a>. '
|
25
|
+
form:
|
26
|
+
body:
|
27
|
+
label: Commentaire
|
28
|
+
placeholder: Que pensez-vous de cela?
|
29
|
+
form_error: Le texte est requis et ne peut pas dépasser %{length} caractères.
|
30
|
+
submit: Envoyer
|
31
|
+
user_group_id:
|
32
|
+
label: Commenter en tant que
|
33
|
+
opinion:
|
34
|
+
neutral: Neutre
|
35
|
+
title: Ajoutez votre commentaire
|
36
|
+
comment:
|
37
|
+
alignment:
|
38
|
+
against: Contre
|
39
|
+
in_favor: Pour
|
40
|
+
reply: Répondre
|
41
|
+
report:
|
42
|
+
action: Signaler
|
43
|
+
already_reported: Ce contenu a déjà été signalé et il sera examiné par un administrateur.
|
44
|
+
close: Fermer
|
45
|
+
description: Ce contenu est-il inapproprié?
|
46
|
+
details: Commentaires additionnels
|
47
|
+
reasons:
|
48
|
+
does_not_belong: Contient des activités illégales, des menaces suicidaires, des informations personnelles, ou autre chose que vous pensez ne pas être approprié à %{organization_name}.
|
49
|
+
offensive: Contient des propos racisme, sexiste, des insultes, des attaques personnelles, des menaces de mort, des incitations au suicide ou toute forme de discours de haine.
|
50
|
+
spam: Contient des piège-à-clic (clickbait), des publicités, des escroqueries ou des robots fonctionnant au script (script bots).
|
51
|
+
title: Signaler un problème
|
52
|
+
comment_order_selector:
|
53
|
+
order:
|
54
|
+
best_rated: Les mieux notés
|
55
|
+
most_discussed: Les plus débattus
|
56
|
+
older: Les plus anciens
|
57
|
+
recent: Les plus récents
|
58
|
+
title: 'Classement par :'
|
59
|
+
comment_thread:
|
60
|
+
title: Conversation avec %{authorName}
|
61
|
+
comments:
|
62
|
+
blocked_comments_warning: Les commentaires sont désactivés dans l'étape actuelle, mais vous pouvez lire les commentaires des étapes précédentes.
|
63
|
+
loading: Chargement des commentaires ...
|
64
|
+
title: "%{count} commentaires"
|
65
|
+
featured_comment:
|
66
|
+
title: Commentaire vedette
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class UpdateRootCommentableForComments < ActiveRecord::Migration[5.0]
|
2
|
+
def up
|
3
|
+
Decidim::Comments::Comment.where(depth: 0).update_all(
|
4
|
+
"decidim_root_commentable_id = decidim_commentable_id, decidim_root_commentable_type = decidim_commentable_type"
|
5
|
+
)
|
6
|
+
|
7
|
+
Decidim::Comments::Comment.where("depth > 0").find_each do |comment|
|
8
|
+
comment.root_commentable = root_commentable(comment)
|
9
|
+
comment.save(validate: false)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def down
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def root_commentable(comment)
|
19
|
+
return comment.commentable if comment.depth.zero?
|
20
|
+
root_commentable comment.commentable
|
21
|
+
end
|
22
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Since comments cannot exist without a real model we are not including
|
2
3
|
# specific seeds for this engine.
|
3
4
|
# Other engines are free to include comments on their seeds like this:
|
4
|
-
#
|
5
|
-
# n.times do
|
5
|
+
#
|
6
|
+
# n.times do
|
6
7
|
# Decidim::Comments::Comment.create!(
|
7
8
|
# author: author,
|
8
9
|
# commentable: commentable,
|
10
|
+
# root_commentable: commentable,
|
9
11
|
# body: Faker::Lorem.paragraph
|
10
12
|
# )
|
11
13
|
# end
|
@@ -29,6 +29,14 @@ module Decidim
|
|
29
29
|
initializer "decidim_comments.mutation_extensions" do
|
30
30
|
Comments::MutationExtensions.extend!(Decidim::Api::MutationType)
|
31
31
|
end
|
32
|
+
|
33
|
+
initializer "decidim.stats" do
|
34
|
+
Decidim.stats.register :comments_count, priority: StatsRegistry::MEDIUM_PRIORITY do |features, start_at, end_at|
|
35
|
+
Decidim.feature_manifests.sum do |feature|
|
36
|
+
feature.stats.filter(tag: :comments).with_context(features, start_at, end_at).map { |_name, value| value }.sum
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
32
40
|
end
|
33
41
|
end
|
34
42
|
end
|