decidim-core 0.10.1 → 0.11.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -11
- data/app/assets/images/decidim/icons.svg +25 -6
- data/app/assets/javascripts/decidim/account_form.js.es6 +8 -8
- data/app/assets/javascripts/decidim/append_elements.js.es6 +1 -1
- data/app/assets/javascripts/decidim/append_redirect_url_to_modals.js.es6 +5 -5
- data/app/assets/javascripts/decidim/data_picker.js.es6 +10 -10
- data/app/assets/javascripts/decidim/editor.js.es6 +37 -22
- data/app/assets/javascripts/decidim/filters.js.es6 +1 -1
- data/app/assets/javascripts/decidim/form_filter.component.js.es6 +15 -15
- data/app/assets/javascripts/decidim/form_filter.component.test.js +29 -29
- data/app/assets/javascripts/decidim/impersonation.js.es6 +3 -3
- data/app/assets/javascripts/decidim/input_mentions.js.es6 +100 -0
- data/app/assets/javascripts/decidim/input_tags.js.es6 +12 -0
- data/app/assets/javascripts/decidim/{map.js.es6.erb → map.js.es6} +9 -9
- data/app/assets/javascripts/decidim/notifications.js.es6 +10 -10
- data/app/assets/javascripts/decidim/orders.js.es6 +5 -5
- data/app/assets/javascripts/decidim/user_registrations.js.es6 +4 -4
- data/app/assets/javascripts/decidim/widget.js.es6 +1 -1
- data/app/assets/javascripts/decidim.js.es6 +10 -0
- data/app/assets/stylesheets/decidim/application.scss.erb +1 -1
- data/app/assets/stylesheets/decidim/modules/_author-avatar.scss +39 -0
- data/app/assets/stylesheets/decidim/modules/_cards.scss +158 -3
- data/app/assets/stylesheets/decidim/modules/_definition-data.scss +6 -0
- data/app/assets/stylesheets/decidim/modules/_extra.scss +1 -3
- data/app/assets/stylesheets/decidim/modules/_icons.scss +14 -6
- data/app/assets/stylesheets/decidim/modules/_inline-filters.scss +61 -0
- data/app/assets/stylesheets/decidim/modules/_input-mentions.scss +124 -0
- data/app/assets/stylesheets/decidim/modules/_input-tags.scss +55 -0
- data/app/assets/stylesheets/decidim/modules/_modules.scss +3 -0
- data/app/assets/stylesheets/decidim/modules/_status-labels.scss +4 -0
- data/app/assets/stylesheets/decidim/modules/_typography.scss +16 -0
- data/app/assets/stylesheets/decidim/utils/_helpers.scss +29 -0
- data/app/assets/stylesheets/decidim/utils/_mixins.scss +6 -0
- data/app/cells/decidim/author_box/show.erb +10 -0
- data/app/cells/decidim/author_box_cell.rb +21 -0
- data/app/cells/decidim/card/show.erb +17 -0
- data/app/cells/decidim/card_cell.rb +29 -0
- data/app/cells/decidim/profile/profile_inline.erb +21 -0
- data/app/cells/decidim/profile/show.erb +13 -0
- data/app/cells/decidim/profile_cell.rb +17 -0
- data/app/commands/decidim/create_omniauth_registration.rb +3 -2
- data/app/commands/decidim/create_report.rb +1 -1
- data/app/commands/decidim/invite_user.rb +2 -0
- data/app/constraints/decidim/current_component.rb +41 -0
- data/app/controllers/concerns/decidim/action_authorization.rb +3 -3
- data/app/controllers/concerns/decidim/devise_controllers.rb +2 -1
- data/app/controllers/concerns/decidim/filter_resource.rb +1 -1
- data/app/controllers/concerns/decidim/form_factory.rb +1 -1
- data/app/controllers/concerns/decidim/impersonate_users.rb +6 -2
- data/app/controllers/concerns/decidim/needs_authorization.rb +2 -2
- data/app/controllers/concerns/decidim/participatory_space_context.rb +15 -0
- data/app/controllers/concerns/decidim/settings.rb +5 -5
- data/app/controllers/decidim/application_controller.rb +2 -1
- data/app/controllers/decidim/{features → components}/base_controller.rb +16 -8
- data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +3 -1
- data/app/controllers/decidim/devise/registrations_controller.rb +1 -3
- data/app/controllers/decidim/doorkeeper/authorizations_controller.rb +16 -0
- data/app/controllers/decidim/doorkeeper/credentials_controller.rb +46 -0
- data/app/controllers/decidim/doorkeeper/token_info_controller.rb +9 -0
- data/app/controllers/decidim/doorkeeper/tokens_controller.rb +9 -0
- data/app/controllers/decidim/widgets_controller.rb +1 -1
- data/app/forms/decidim/follow_form.rb +1 -1
- data/app/forms/decidim/form.rb +1 -1
- data/app/forms/decidim/omniauth_registration_form.rb +1 -0
- data/app/forms/decidim/registration_form.rb +5 -5
- data/app/helpers/decidim/card_helper.rb +16 -0
- data/app/helpers/decidim/component_path_helper.rb +36 -0
- data/app/helpers/decidim/icon_helper.rb +7 -7
- data/app/helpers/decidim/messaging/conversation_helper.rb +4 -3
- data/app/helpers/decidim/paginate_helper.rb +1 -1
- data/app/helpers/decidim/resource_helper.rb +2 -2
- data/app/jobs/decidim/export_job.rb +3 -3
- data/app/mailers/decidim/messaging/conversation_mailer.rb +0 -2
- data/app/middleware/decidim/current_organization.rb +2 -2
- data/app/models/decidim/abilities/admin_ability.rb +1 -1
- data/app/models/decidim/abilities/everyone_ability.rb +1 -1
- data/app/models/decidim/abilities/participatory_process_admin_ability.rb +2 -2
- data/app/models/decidim/abilities/participatory_process_collaborator_ability.rb +2 -2
- data/app/models/decidim/action_log.rb +7 -5
- data/app/models/decidim/area.rb +7 -0
- data/app/models/decidim/authorization.rb +14 -0
- data/app/models/decidim/{feature.rb → component.rb} +15 -15
- data/app/models/decidim/moderation.rb +1 -1
- data/app/models/decidim/oauth_application.rb +24 -0
- data/app/models/decidim/organization.rb +5 -0
- data/app/models/decidim/participatory_space_link.rb +20 -0
- data/app/models/decidim/participatory_space_private_user.rb +19 -0
- data/app/models/decidim/user.rb +7 -0
- data/app/presenters/decidim/admin_log/area_presenter.rb +38 -0
- data/app/presenters/decidim/admin_log/{feature_presenter.rb → component_presenter.rb} +5 -5
- data/app/presenters/decidim/admin_log/newsletter_resource_presenter.rb +1 -1
- data/app/presenters/decidim/admin_log/oauth_application_presenter.rb +50 -0
- data/app/presenters/decidim/admin_log/oauth_application_resource_presenter.rb +18 -0
- data/app/presenters/decidim/home_stats_presenter.rb +7 -7
- data/app/presenters/decidim/log/value_types/area_presenter.rb +1 -1
- data/app/presenters/decidim/log/value_types/area_type_presenter.rb +28 -0
- data/app/presenters/decidim/log/value_types/currency_presenter.rb +20 -0
- data/app/presenters/decidim/log/value_types/scope_presenter.rb +1 -1
- data/app/presenters/decidim/log/value_types/scope_type_presenter.rb +1 -1
- data/app/presenters/decidim/resource_locator_presenter.rb +3 -3
- data/app/services/decidim/action_authorizer.rb +9 -9
- data/app/services/decidim/action_logger.rb +9 -7
- data/app/services/decidim/email_notification_generator.rb +1 -1
- data/app/services/decidim/notification_generator_for_recipient.rb +1 -1
- data/app/services/decidim/resource_search.rb +8 -8
- data/app/services/decidim/settings_change.rb +5 -5
- data/app/services/decidim/static_map_generator.rb +1 -1
- data/app/types/decidim/core/attachment_type.rb +14 -0
- data/app/types/decidim/core/category_type.rb +16 -0
- data/app/types/decidim/core/coordinates_type.rb +19 -0
- data/app/types/decidim/core/scope_api_type.rb +16 -0
- data/app/uploaders/decidim/oauth_application_logo_uploader.rb +9 -0
- data/app/validators/geocoding_validator.rb +2 -2
- data/app/views/decidim/account/delete.html.erb +7 -7
- data/app/views/decidim/application/_collection.html.erb +1 -1
- data/app/views/decidim/application/_document.html.erb +1 -1
- data/app/views/decidim/application/_photos.html.erb +1 -1
- data/app/views/decidim/devise/invitations/edit.html.erb +1 -1
- data/app/views/decidim/devise/omniauth_registrations/new.html.erb +1 -1
- data/app/views/decidim/devise/registrations/new.html.erb +1 -1
- data/app/views/decidim/devise/sessions/new.html.erb +2 -2
- data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +1 -1
- data/app/views/decidim/devise/shared/_omniauth_buttons_mini.html.erb +1 -1
- data/app/views/decidim/doorkeeper/authorizations/new.html.erb +58 -0
- data/app/views/decidim/messaging/conversations/_show.html.erb +1 -1
- data/app/views/decidim/messaging/conversations/index.html.erb +1 -1
- data/app/views/decidim/notifications/index.html.erb +1 -1
- data/app/views/decidim/notifications_settings/show.html.erb +2 -2
- data/app/views/decidim/own_user_groups/index.html.erb +3 -3
- data/app/views/decidim/scopes/_scopes_picker_input.html.erb +4 -4
- data/app/views/decidim/scopes/picker.html.erb +3 -3
- data/app/views/decidim/shared/_action_authorization_modal.html.erb +1 -1
- data/app/views/decidim/shared/_author.html.erb +1 -1
- data/app/views/decidim/shared/_author_reference.html.erb +1 -12
- data/app/views/decidim/shared/{_feature_announcement.html.erb → _component_announcement.html.erb} +2 -2
- data/app/views/decidim/shared/_embed_modal.html.erb +1 -1
- data/app/views/decidim/shared/_flag_modal.html.erb +5 -5
- data/app/views/decidim/shared/_login_modal.html.erb +3 -3
- data/app/views/decidim/shared/_private_participatory_space.html.erb +5 -0
- data/app/views/decidim/shared/_share_modal.html.erb +1 -1
- data/app/views/decidim/shared/_tags.html.erb +1 -1
- data/app/views/decidim/shared/_version_author.html.erb +1 -1
- data/app/views/decidim/widgets/_data_picker.html.erb +4 -4
- data/app/views/devise/mailer/confirmation_instructions.html.erb +3 -3
- data/app/views/devise/mailer/invite_private_user.html.erb +17 -0
- data/app/views/devise/mailer/invite_private_user.text.erb +15 -0
- data/app/views/devise/mailer/password_change.html.erb +2 -2
- data/app/views/devise/mailer/reset_password_instructions.html.erb +5 -5
- data/app/views/kaminari/decidim/_first_page.html.erb +2 -3
- data/app/views/kaminari/decidim/_gap.html.erb +2 -3
- data/app/views/kaminari/decidim/_last_page.html.erb +2 -3
- data/app/views/kaminari/decidim/_next_page.html.erb +2 -3
- data/app/views/kaminari/decidim/_page.html.erb +2 -3
- data/app/views/kaminari/decidim/_paginator.html.erb +1 -2
- data/app/views/kaminari/decidim/_prev_page.html.erb +2 -3
- data/app/views/layouts/decidim/_application.html.erb +4 -4
- data/app/views/layouts/decidim/_component_authorization_modals.html.erb +5 -0
- data/app/views/layouts/decidim/_cookie_warning.html.erb +2 -2
- data/app/views/layouts/decidim/_head.html.erb +4 -4
- data/app/views/layouts/decidim/_impersonation_warning.html.erb +4 -4
- data/app/views/layouts/decidim/_language_chooser.html.erb +1 -1
- data/app/views/layouts/decidim/_social_media_links.html.erb +5 -5
- data/app/views/layouts/decidim/_wrapper.html.erb +5 -5
- data/app/views/layouts/decidim/mailer.html.erb +1 -1
- data/app/views/layouts/decidim/widget.html.erb +5 -5
- data/app/views/pages/home/_hero.html.erb +1 -1
- data/app/views/pages/home.html.erb +6 -6
- data/config/locales/ca.yml +66 -27
- data/config/locales/en.yml +69 -30
- data/config/locales/es.yml +66 -27
- data/config/locales/eu.yml +69 -30
- data/config/locales/fi.yml +69 -30
- data/config/locales/fr.yml +85 -46
- data/config/locales/gl.yml +69 -30
- data/config/locales/it.yml +69 -30
- data/config/locales/nl.yml +122 -83
- data/config/locales/pl.yml +69 -30
- data/config/locales/pt-BR.yml +69 -30
- data/config/locales/pt.yml +69 -30
- data/config/locales/ru.yml +0 -7
- data/config/locales/sv.yml +69 -30
- data/config/locales/uk.yml +0 -13
- data/config/routes.rb +8 -0
- data/db/migrate/20180206183235_create_participatory_space_private_users.rb +15 -0
- data/db/migrate/20180221101934_fix_nickname_index.rb +5 -6
- data/db/migrate/20180226140756_add_version_to_action_logs.rb +5 -1
- data/db/migrate/20180227131727_create_participatory_space_links.rb +12 -0
- data/db/migrate/20180305132906_rename_features_to_components.rb +13 -0
- data/db/migrate/20180308113207_doorkeeper_models.rb +85 -0
- data/db/migrate/20180314085339_rename_maximum_votes_per_proposal_to_threshold_per_proposal.rb +2 -2
- data/db/migrate/{20180326075746_change_event_name_and_class_to_rename_to_publish_proposal_event.rb → 20180323102631_change_event_name_and_class_to_rename_to_publish_proposal_event.rb} +0 -0
- data/db/seeds.rb +12 -2
- data/lib/decidim/api/attachable_interface.rb +13 -0
- data/lib/decidim/api/authorable_interface.rb +13 -0
- data/lib/decidim/api/categorizable_interface.rb +13 -0
- data/lib/decidim/api/participatory_space_interface.rb +4 -4
- data/lib/decidim/api/scopable_interface.rb +13 -0
- data/lib/decidim/authorable.rb +8 -0
- data/lib/decidim/{feature_manifest.rb → component_manifest.rb} +24 -21
- data/lib/decidim/{feature_validator.rb → component_validator.rb} +6 -6
- data/lib/decidim/{features → components}/export_manifest.rb +4 -4
- data/lib/decidim/components/namer.rb +35 -0
- data/lib/decidim/components.rb +9 -0
- data/lib/decidim/content_parsers/user_parser.rb +1 -1
- data/lib/decidim/core/api.rb +13 -0
- data/lib/decidim/core/engine.rb +76 -3
- data/lib/decidim/core/test/factories.rb +43 -10
- data/lib/decidim/core/test/shared_examples/announcements_examples.rb +9 -9
- data/lib/decidim/core/test/shared_examples/attachable_interface_examples.rb +16 -0
- data/lib/decidim/core/test/shared_examples/authorable_interface_examples.rb +33 -0
- data/lib/decidim/core/test/shared_examples/categorizable_interface_examples.rb +19 -0
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +3 -3
- data/lib/decidim/core/test/shared_examples/follows_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/has_component.rb +21 -0
- data/lib/decidim/core/test/shared_examples/has_reference.rb +2 -2
- data/lib/decidim/core/test/shared_examples/localised_email.rb +1 -1
- data/lib/decidim/core/test/shared_examples/paginated_resource_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/reportable.rb +8 -6
- data/lib/decidim/core/test/shared_examples/reports_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/scopable_interface_examples.rb +19 -0
- data/lib/decidim/core/test/shared_examples/scope_helper_examples.rb +8 -3
- data/lib/decidim/core/test/shared_examples/simple_event.rb +1 -1
- data/lib/decidim/core/test/shared_examples/user_localised_email_examples.rb +1 -1
- data/lib/decidim/core/test.rb +1 -1
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/core.rb +35 -37
- data/lib/decidim/events/base_event.rb +5 -5
- data/lib/decidim/events/simple_event.rb +8 -8
- data/lib/decidim/form_builder.rb +48 -3
- data/lib/decidim/has_attachment_collections.rb +1 -1
- data/lib/decidim/has_attachments.rb +1 -1
- data/lib/decidim/has_category.rb +2 -2
- data/lib/decidim/has_component.rb +23 -0
- data/lib/decidim/has_private_users.rb +26 -0
- data/lib/decidim/has_reference.rb +3 -3
- data/lib/decidim/page_finder.rb +1 -1
- data/lib/decidim/participatory_space_manifest.rb +3 -3
- data/lib/decidim/participatory_space_resourceable.rb +80 -0
- data/lib/decidim/publicable.rb +2 -2
- data/lib/decidim/query_extensions.rb +2 -2
- data/lib/decidim/rectify_ext.rb +32 -0
- data/lib/decidim/reportable.rb +1 -1
- data/lib/decidim/resource_manifest.rb +13 -13
- data/lib/decidim/resourceable.rb +8 -8
- data/lib/decidim/scopable.rb +1 -1
- data/lib/decidim/{scopable_feature.rb → scopable_component.rb} +1 -1
- data/lib/decidim/settings_manifest.rb +1 -1
- data/lib/decidim/stats_registry.rb +1 -1
- data/lib/decidim/view_model.rb +9 -0
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.fr.js +4 -1
- data/vendor/assets/javascripts/form_datepicker.js.es6 +10 -10
- data/vendor/assets/javascripts/quill.min.js +2 -2
- data/vendor/assets/javascripts/quill.min.js.map +1 -1
- data/vendor/assets/javascripts/tagsinput.js +683 -0
- data/vendor/assets/javascripts/tribute.js +1607 -0
- data/vendor/assets/stylesheets/quill.bubble.css +30 -16
- data/vendor/assets/stylesheets/quill.core.css +19 -9
- data/vendor/assets/stylesheets/quill.snow.css +30 -16
- data/vendor/assets/stylesheets/tagsinput.css +55 -0
- data/vendor/assets/stylesheets/tribute.css +27 -0
- metadata +164 -27
- data/app/constraints/decidim/current_feature.rb +0 -41
- data/app/helpers/decidim/feature_path_helper.rb +0 -36
- data/app/views/layouts/decidim/_feature_authorization_modals.html.erb +0 -5
- data/lib/decidim/core/test/shared_examples/has_feature.rb +0 -21
- data/lib/decidim/features/namer.rb +0 -35
- data/lib/decidim/features.rb +0 -9
- data/lib/decidim/has_feature.rb +0 -23
data/config/locales/sv.yml
CHANGED
@@ -6,11 +6,13 @@ sv:
|
|
6
6
|
report:
|
7
7
|
details: Ytterligare kommentarer
|
8
8
|
user:
|
9
|
+
about: Handla om
|
9
10
|
email: Din e-post
|
10
11
|
name: Ditt namn
|
11
|
-
nickname: Din korta, unika identifierare
|
12
|
+
nickname: Din korta, unika identifierare
|
12
13
|
password: Nytt lösenord
|
13
14
|
password_confirmation: Bekräfta ditt nya lösenord
|
15
|
+
personal_url: Personlig URL
|
14
16
|
remove_avatar: Ta bort avatar
|
15
17
|
user_group_document_number: Organisationsdokumentnummer
|
16
18
|
user_group_name: Organisationsnamn
|
@@ -54,11 +56,15 @@ sv:
|
|
54
56
|
success: Ditt konto har uppdaterats.
|
55
57
|
success_with_email_confirmation: Ditt konto har uppdaterats. Du får ett e-postmeddelande för att bekräfta din nya e-postadress.
|
56
58
|
admin_log:
|
57
|
-
|
58
|
-
create: "%{user_name}
|
59
|
-
delete: "%{user_name}
|
60
|
-
|
61
|
-
|
59
|
+
area:
|
60
|
+
create: "%{user_name} skapade området %{resource_name}"
|
61
|
+
delete: "%{user_name} raderade området %{resource_name}"
|
62
|
+
update: "%{user_name} uppdaterade området %{resource_name}"
|
63
|
+
component:
|
64
|
+
create: "%{user_name} lade till %{resource_name} komponenten till %{space_name} utrymmet"
|
65
|
+
delete: "%{user_name} tog bort komponenten %{resource_name} från %{space_name} -utrymmet"
|
66
|
+
publish: "%{user_name} publicerade %{resource_name} -komponenten i %{space_name} -utrymmet"
|
67
|
+
unpublish: "%{user_name} opublicerade %{resource_name} -komponenten från %{space_name} -utrymmet"
|
62
68
|
moderation:
|
63
69
|
hide: "%{user_name} gömde en resurs av typ %{resource_type} i %{space_name} rymden"
|
64
70
|
unreport: "%{user_name} unreported en resurs av typ %{resource_type} i %{space_name} rymden"
|
@@ -67,6 +73,10 @@ sv:
|
|
67
73
|
delete: "%{user_name} raderade %{resource_name} nyhetsbrev"
|
68
74
|
deliver: "%{user_name} levererade %{resource_name} nyhetsbrev"
|
69
75
|
update: "%{user_name} uppdaterade %{resource_name} nyhetsbrev"
|
76
|
+
oauth_application:
|
77
|
+
create: "%{user_name} skapade OAuth-applikationen %{resource_name}"
|
78
|
+
delete: "%{user_name} raderade OAuth-applikationen %{resource_name}"
|
79
|
+
update: "%{user_name} uppdaterade OAuth-applikationen %{resource_name}"
|
70
80
|
organization:
|
71
81
|
update: "%{user_name} uppdaterade organisationsinställningarna"
|
72
82
|
scope:
|
@@ -118,6 +128,21 @@ sv:
|
|
118
128
|
name: Foo godkännande
|
119
129
|
granted_at: Beviljas vid %{timestamp}
|
120
130
|
started_at: Börjat vid %{timestamp}
|
131
|
+
components:
|
132
|
+
dummy:
|
133
|
+
actions:
|
134
|
+
bar: Bar
|
135
|
+
foo: foo
|
136
|
+
name: Dummy Komponent
|
137
|
+
settings:
|
138
|
+
global:
|
139
|
+
comments_enabled: Kommentarer aktiverade
|
140
|
+
dummy_global_attribute_1: Dummy Attribut 1
|
141
|
+
dummy_global_attribute_2: Dummy Attribut 2
|
142
|
+
step:
|
143
|
+
comments_blocked: Kommentarer blockerade
|
144
|
+
dummy_step_attribute_1: Dummy Step Attribut 1
|
145
|
+
dummy_step_attribute_2: Dummy Step Attribut 2
|
121
146
|
contact: Kontakt
|
122
147
|
core:
|
123
148
|
actions:
|
@@ -128,7 +153,7 @@ sv:
|
|
128
153
|
email_already_exists: Ett annat konto använder samma e-postadress
|
129
154
|
new:
|
130
155
|
complete_profile: Komplett profil
|
131
|
-
nickname_help: Din korta, unika identifierare i
|
156
|
+
nickname_help: Din korta, unika identifierare i %{organization}
|
132
157
|
sign_up: Vänligen fyll i din profil
|
133
158
|
subtitle: Vänligen fyll i följande formulär för att slutföra registreringen
|
134
159
|
username_help: Offentligt namn som visas på dina inlägg. I syfte att garantera anonymitet kan det vara något namn.
|
@@ -136,7 +161,7 @@ sv:
|
|
136
161
|
new:
|
137
162
|
already_have_an_account?: Har du redan ett konto?
|
138
163
|
newsletter: Få ett tillfälligt nyhetsbrev med relevant information
|
139
|
-
nickname_help: Din korta, unika identifierare i
|
164
|
+
nickname_help: Din korta, unika identifierare i %{organization}
|
140
165
|
sign_in: Logga in
|
141
166
|
sign_up: Registrera
|
142
167
|
sign_up_as:
|
@@ -154,6 +179,21 @@ sv:
|
|
154
179
|
shared:
|
155
180
|
omniauth_buttons:
|
156
181
|
or: Eller
|
182
|
+
doorkeeper:
|
183
|
+
authorizations:
|
184
|
+
new:
|
185
|
+
authorize: Godkänn ansökan
|
186
|
+
by_organization_link_html: <small class="heading-small">av %{link}</small>
|
187
|
+
cancel: Avbryt
|
188
|
+
connect_your_account_html: Anslut ditt konto genom att logga in på <strong>%{organization}</strong>
|
189
|
+
publish_content: Publicera innehåll för dig
|
190
|
+
see_email: Se din email
|
191
|
+
see_name: Se ditt namn
|
192
|
+
see_username: Se ditt användarnamn
|
193
|
+
this_application_will_be_able_to: 'Denna ansökan kommer att kunna:'
|
194
|
+
this_application_will_not_be_able_to: 'Den här applikationen kommer inte att kunna:'
|
195
|
+
update_profile: Uppdatera din profil
|
196
|
+
wants_to_use_your_account_html: "<strong>%{application_name}</strong> vill använda ditt konto"
|
157
197
|
errors:
|
158
198
|
internal_server_error:
|
159
199
|
title: Det uppstod ett problem med vår server
|
@@ -169,17 +209,17 @@ sv:
|
|
169
209
|
email_outro: Du har fått den här meddelandet eftersom du följer %{resource_title}. Du kan sluta ta emot meddelanden efter föregående länk.
|
170
210
|
email_subject: En uppdatering till %{resource_title}
|
171
211
|
notification_title: Ett <a href="%{resource_path}"> nytt dokument</a> har lagts till <a href="%{attached_to_url}">%{resource_title}</a>
|
212
|
+
components:
|
213
|
+
component_published:
|
214
|
+
email_intro: 'Komponenten %{resource_title} är nu aktiv för %{participatory_space_title}. Du kan se den från den här sidan:'
|
215
|
+
email_outro: Du har fått den här meddelandet eftersom du följer %{participatory_space_title}. Du kan sluta ta emot meddelanden efter föregående länk.
|
216
|
+
email_subject: En uppdatering till %{participatory_space_title}
|
217
|
+
notification_title: '%{resource_title} komponenten är nu aktiv för <a href="%{resource_path}">%{participatory_space_title}</a>'
|
172
218
|
email_event:
|
173
219
|
email_greeting: Hej %{user_name},
|
174
220
|
email_intro: 'Det har skett en uppdatering till "%{resource_title}". Du kan se den från den här sidan:'
|
175
221
|
email_outro: Du har fått den här meddelandet eftersom du följer "%{resource_title}". Du kan följa det från föregående länk.
|
176
222
|
email_subject: En uppdatering till %{resource_title}
|
177
|
-
features:
|
178
|
-
feature_published:
|
179
|
-
email_intro: 'Komponenten %{resource_title} är nu aktiv för %{participatory_space_title}. Du kan se den från den här sidan:'
|
180
|
-
email_outro: Du har fått den här meddelandet eftersom du följer %{participatory_space_title}. Du kan sluta ta emot meddelanden efter föregående länk.
|
181
|
-
email_subject: En uppdatering till %{participatory_space_title}
|
182
|
-
notification_title: '%{resource_title} komponenten är nu aktiv för <a href="%{resource_path}">%{participatory_space_title}</a>'
|
183
223
|
notification_event:
|
184
224
|
notification_title: En händelse uppstod till <a href="%{resource_path}">%{resource_title}</a>.
|
185
225
|
users:
|
@@ -192,21 +232,6 @@ sv:
|
|
192
232
|
export:
|
193
233
|
ready: Vänligen se bifogad en zippad version av din export.
|
194
234
|
subject: Din export "%{name}" är klar
|
195
|
-
features:
|
196
|
-
dummy:
|
197
|
-
actions:
|
198
|
-
bar: Bar
|
199
|
-
foo: foo
|
200
|
-
name: Dummy-funktionen
|
201
|
-
settings:
|
202
|
-
global:
|
203
|
-
comments_enabled: Kommentarer aktiverade
|
204
|
-
dummy_global_attribute_1: Dummy Attribut 1
|
205
|
-
dummy_global_attribute_2: Dummy Attribut 2
|
206
|
-
step:
|
207
|
-
comments_blocked: Kommentarer blockerade
|
208
|
-
dummy_step_attribute_1: Dummy Step Attribut 1
|
209
|
-
dummy_step_attribute_2: Dummy Step Attribut 2
|
210
235
|
filters:
|
211
236
|
linked_classes:
|
212
237
|
all: Alla
|
@@ -242,6 +267,8 @@ sv:
|
|
242
267
|
value_types:
|
243
268
|
area_presenter:
|
244
269
|
not_found: 'Området hittades inte i databasen (ID: %{id})'
|
270
|
+
area_type_presenter:
|
271
|
+
not_found: 'Områdetypen hittades inte i databasen (ID: %{id})'
|
245
272
|
scope_presenter:
|
246
273
|
not_found: 'Omfattningen hittades inte i databasen (ID: %{id})'
|
247
274
|
scope_type_presenter:
|
@@ -307,6 +334,10 @@ sv:
|
|
307
334
|
pages:
|
308
335
|
index:
|
309
336
|
title: Mer information
|
337
|
+
participatory_space_private_users:
|
338
|
+
not_allowed: Du får inte se det här innehållet
|
339
|
+
profile:
|
340
|
+
deleted: Ta bort användare
|
310
341
|
profiles:
|
311
342
|
default_officialization_text: Denna deltagare är offentligt verifierad, hans / hennes namn eller roll har verifierats för att motsvara hans / hennes riktiga namn och roll
|
312
343
|
show:
|
@@ -394,7 +425,7 @@ sv:
|
|
394
425
|
invitations:
|
395
426
|
edit:
|
396
427
|
header: Ange ditt lösenord
|
397
|
-
nickname_help: Din unika identifierare i
|
428
|
+
nickname_help: Din unika identifierare i %{organization}.
|
398
429
|
submit_button: Spara
|
399
430
|
mailer:
|
400
431
|
invitation_instructions:
|
@@ -404,18 +435,25 @@ sv:
|
|
404
435
|
ignore: |-
|
405
436
|
Om du inte vill acceptera inbjudan, ignorerar du detta email.<br /> Ditt konto kommer inte att skapas förrän du öppnar länken ovan och anger ditt lösenord.
|
406
437
|
invited_you_as_admin: "%{invited_by} har bjudit in dig som administratör av %{application}. Du kan acceptera det via länken nedan."
|
438
|
+
invited_you_as_private_user: "%{invited_by} har bjudit in dig som privatperson av %{application}. Du kan acceptera det via länken nedan."
|
407
439
|
someone_invited_you: Någon har bjudit in dig till %{application}. Du kan acceptera det via länken nedan.
|
408
440
|
someone_invited_you_as_admin: Någon har bjudit in dig som administratör av %{application}, du kan acceptera den via länken nedan.
|
441
|
+
someone_invited_you_as_private_user: Någon har bjudit in dig som privat_användare av %{application}, du kan acceptera den via länken nedan.
|
409
442
|
invite_admin:
|
410
443
|
subject: Du har blivit inbjuden att hantera %{organization}
|
411
444
|
invite_collaborator:
|
412
445
|
subject: Du har blivit inbjuden att samarbeta på %{organization}
|
446
|
+
invite_private_user:
|
447
|
+
subject: Du har blivit inbjuden till en privat deltagande process på %{organization}
|
413
448
|
organization_admin_invitation_instructions:
|
414
449
|
subject: Du har blivit inbjuden att hantera %{organization}
|
415
450
|
password_change:
|
416
451
|
greeting: Hej %{recipient}!
|
417
452
|
message: Vi kontaktar dig för att meddela dig att ditt lösenord har ändrats.
|
418
453
|
subject: Lösenord ändrat
|
454
|
+
doorkeeper:
|
455
|
+
scopes:
|
456
|
+
public: Din offentliga information.
|
419
457
|
errors:
|
420
458
|
messages:
|
421
459
|
content_type_whitelist_error: Filtypen är inte giltig
|
@@ -495,6 +533,7 @@ sv:
|
|
495
533
|
answers_count: Avslutade Undersökningar
|
496
534
|
assemblies_count: Assemblies
|
497
535
|
comments_count: Kommentarer
|
536
|
+
debates_count: Debatter
|
498
537
|
endorsements_count: påskrifter
|
499
538
|
headline: Aktuellt tillstånd %{organization}
|
500
539
|
meetings_count: Möten
|
data/config/locales/uk.yml
CHANGED
@@ -8,7 +8,6 @@ uk:
|
|
8
8
|
user:
|
9
9
|
email: Адреса вашої електронної пошти
|
10
10
|
name: Ваше ім’я
|
11
|
-
nickname: Ваш короткий, унікальний псевдонім в Десідім
|
12
11
|
password: Новий пароль
|
13
12
|
password_confirmation: Підтвердьте свій новий пароль
|
14
13
|
remove_avatar: Видалити аватар
|
@@ -54,9 +53,6 @@ uk:
|
|
54
53
|
success: Вашу обліковку успішно оновлено.
|
55
54
|
success_with_email_confirmation: Ваш обліковий запис успішно оновлено. Ви отримаєте електронний лист для підтвердження адреси електронної пошти.
|
56
55
|
admin_log:
|
57
|
-
feature:
|
58
|
-
create: "%{user_name} додав складову %{resource_name} до простору %{space_name}"
|
59
|
-
delete: "%{user_name} вилучив складову %{resource_name} з простору %{space_name}"
|
60
56
|
moderation:
|
61
57
|
hide: "%{user_name} приховав ресурс типу %{resource_type} у просторі %{space_name}"
|
62
58
|
unreport: "%{user_name} відкликав скаргу на ресурс типу %{resource_type} у просторі %{space_name}"
|
@@ -121,7 +117,6 @@ uk:
|
|
121
117
|
email_already_exists: Інший обліковий запис використовує ту ж саму адресу електронної пошти
|
122
118
|
new:
|
123
119
|
complete_profile: Заповнити профіль
|
124
|
-
nickname_help: Ваш короткий, унікальний псевдонім в Десідім
|
125
120
|
sign_up: Будь ласка, заповніть свій профіль
|
126
121
|
subtitle: Щоб завершити реєстрацію, заповніть наступну форму
|
127
122
|
username_help: Загальнодоступне ім'я, яке відображається у ваших публікаціях. З метою гарантування анонімності, може бути будь-яким.
|
@@ -129,7 +124,6 @@ uk:
|
|
129
124
|
new:
|
130
125
|
already_have_an_account?: Вже маєте обліковий запис?
|
131
126
|
newsletter: Отримувати іноді розсилання з цього приводу
|
132
|
-
nickname_help: Ваш короткий, унікальний псевдонім в Десідім
|
133
127
|
sign_in: Увійти
|
134
128
|
sign_up: Зареєструватися
|
135
129
|
sign_up_as:
|
@@ -179,12 +173,6 @@ uk:
|
|
179
173
|
export:
|
180
174
|
ready: Нижче додається стиснута в архів версія вашого збереженого файлу.
|
181
175
|
subject: Ваш збережений файл "%{name}" готовий
|
182
|
-
features:
|
183
|
-
dummy:
|
184
|
-
actions:
|
185
|
-
bar: Приклад змінної 1
|
186
|
-
foo: Приклад змінної 2
|
187
|
-
name: Приклад складової
|
188
176
|
filters:
|
189
177
|
linked_classes:
|
190
178
|
all: Усі
|
@@ -357,7 +345,6 @@ uk:
|
|
357
345
|
invitations:
|
358
346
|
edit:
|
359
347
|
header: Встановіть свій пароль
|
360
|
-
nickname_help: Ваш унікальний псевдонім в Десідім.
|
361
348
|
submit_button: Зберегти
|
362
349
|
mailer:
|
363
350
|
invitation_instructions:
|
data/config/routes.rb
CHANGED
@@ -67,5 +67,13 @@ Decidim::Core::Engine.routes.draw do
|
|
67
67
|
get :unsubscribe, on: :collection
|
68
68
|
end
|
69
69
|
|
70
|
+
use_doorkeeper do
|
71
|
+
skip_controllers :applications, :authorized_applications
|
72
|
+
end
|
73
|
+
|
74
|
+
scope :oauth do
|
75
|
+
get "/me" => "doorkeeper/credentials#me"
|
76
|
+
end
|
77
|
+
|
70
78
|
root to: "pages#show", id: "home"
|
71
79
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateParticipatorySpacePrivateUsers < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :decidim_participatory_space_private_users do |t|
|
6
|
+
t.references :decidim_user, index: { name: "index_decidim_spaces_users_on_private_user_id" }
|
7
|
+
t.integer :privatable_to_id
|
8
|
+
t.string :privatable_to_type
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index(:decidim_participatory_space_private_users, [:privatable_to_type, :privatable_to_id], name: "space_privatable_to_privatable_id")
|
14
|
+
end
|
15
|
+
end
|
@@ -6,14 +6,13 @@ class FixNicknameIndex < ActiveRecord::Migration[5.1]
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def change
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
User.where(nickname: nil)
|
10
|
+
.where(deleted_at: nil)
|
11
|
+
.where(managed: false)
|
12
|
+
.find_each { |u| u.update(nickname: User.nicknamize(u.name)) }
|
13
13
|
|
14
14
|
# rubocop:disable Rails/SkipsModelValidations
|
15
|
-
|
16
|
-
.update_all("nickname = ''")
|
15
|
+
User.where(nickname: nil).update_all("nickname = ''")
|
17
16
|
# rubocop:enable Rails/SkipsModelValidations
|
18
17
|
|
19
18
|
change_column_default :decidim_users, :nickname, ""
|
@@ -1,10 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class AddVersionToActionLogs < ActiveRecord::Migration[5.1]
|
4
|
+
class ActionLog < ApplicationRecord
|
5
|
+
self.table_name = :decidim_action_logs
|
6
|
+
end
|
7
|
+
|
4
8
|
def up
|
5
9
|
add_column :decidim_action_logs, :version_id, :integer, index: true
|
6
10
|
|
7
|
-
|
11
|
+
ActionLog.find_each do |action_log|
|
8
12
|
version_id = action_log.extra.dig("version", "id")
|
9
13
|
next unless version_id
|
10
14
|
# rubocop:disable Rails/SkipsModelValidations
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateParticipatorySpaceLinks < ActiveRecord::Migration[5.0]
|
4
|
+
def change
|
5
|
+
create_table :decidim_participatory_space_links do |t|
|
6
|
+
t.references :from, null: false, polymorphic: true, index: { name: "index_participatory_space_links_on_from" }
|
7
|
+
t.references :to, null: false, polymorphic: true, index: { name: "index_participatory_space_links_on_to" }
|
8
|
+
t.string :name, null: false, index: { name: "index_participatory_space_links_name" }
|
9
|
+
t.jsonb :data
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class RenameFeaturesToComponents < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
rename_table :decidim_features, :decidim_components
|
6
|
+
rename_column :decidim_action_logs, :decidim_feature_id, :decidim_component_id
|
7
|
+
rename_index :decidim_action_logs, "index_action_logs_on_feature_id", "index_action_logs_on_component_id"
|
8
|
+
|
9
|
+
if index_name_exists?(:decidim_components, "index_decidim_features_on_decidim_participatory_space")
|
10
|
+
rename_index :decidim_components, "index_decidim_features_on_decidim_participatory_space", "index_decidim_components_on_decidim_participatory_space"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class DoorkeeperModels < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :oauth_applications do |t|
|
6
|
+
t.string :name, null: false
|
7
|
+
t.string :organization_name, null: false
|
8
|
+
t.string :organization_url, null: false
|
9
|
+
t.string :organization_logo, null: false
|
10
|
+
t.string :uid, null: false
|
11
|
+
t.string :secret, null: false
|
12
|
+
t.text :redirect_uri, null: false
|
13
|
+
t.string :scopes, null: false, default: ""
|
14
|
+
t.references :decidim_organization, foreign_key: true, index: true
|
15
|
+
t.timestamps null: false
|
16
|
+
t.string :type
|
17
|
+
end
|
18
|
+
|
19
|
+
add_index :oauth_applications, :uid, unique: true
|
20
|
+
|
21
|
+
create_table :oauth_access_grants do |t|
|
22
|
+
t.integer :resource_owner_id, null: false
|
23
|
+
t.references :application, null: false
|
24
|
+
t.string :token, null: false
|
25
|
+
t.integer :expires_in, null: false
|
26
|
+
t.text :redirect_uri, null: false
|
27
|
+
t.datetime :created_at, null: false
|
28
|
+
t.datetime :revoked_at
|
29
|
+
t.string :scopes
|
30
|
+
end
|
31
|
+
|
32
|
+
add_index :oauth_access_grants, :token, unique: true
|
33
|
+
add_foreign_key(
|
34
|
+
:oauth_access_grants,
|
35
|
+
:oauth_applications,
|
36
|
+
column: :application_id
|
37
|
+
)
|
38
|
+
|
39
|
+
create_table :oauth_access_tokens do |t|
|
40
|
+
t.integer :resource_owner_id
|
41
|
+
t.references :application
|
42
|
+
|
43
|
+
# If you use a custom token generator you may need to change this column
|
44
|
+
# from string to text, so that it accepts tokens larger than 255
|
45
|
+
# characters. More info on custom token generators in:
|
46
|
+
# https://github.com/doorkeeper-gem/doorkeeper/tree/v3.0.0.rc1#custom-access-token-generator
|
47
|
+
#
|
48
|
+
# t.text :token, null: false
|
49
|
+
t.string :token, null: false
|
50
|
+
|
51
|
+
t.string :refresh_token
|
52
|
+
t.integer :expires_in
|
53
|
+
t.datetime :revoked_at
|
54
|
+
t.datetime :created_at, null: false
|
55
|
+
t.string :scopes
|
56
|
+
|
57
|
+
# If there is a previous_refresh_token column,
|
58
|
+
# refresh tokens will be revoked after a related access token is used.
|
59
|
+
# If there is no previous_refresh_token column,
|
60
|
+
# previous tokens are revoked as soon as a new access token is created.
|
61
|
+
# Comment out this line if you'd rather have refresh tokens
|
62
|
+
# instantly revoked.
|
63
|
+
t.string :previous_refresh_token, null: false, default: ""
|
64
|
+
end
|
65
|
+
|
66
|
+
add_index :oauth_access_tokens, :token, unique: true
|
67
|
+
add_index :oauth_access_tokens, :resource_owner_id
|
68
|
+
add_index :oauth_access_tokens, :refresh_token, unique: true
|
69
|
+
add_foreign_key(
|
70
|
+
:oauth_access_tokens,
|
71
|
+
:oauth_applications,
|
72
|
+
column: :application_id
|
73
|
+
)
|
74
|
+
add_foreign_key(
|
75
|
+
:oauth_access_tokens,
|
76
|
+
:decidim_users,
|
77
|
+
column: :resource_owner_id
|
78
|
+
)
|
79
|
+
add_foreign_key(
|
80
|
+
:oauth_access_grants,
|
81
|
+
:decidim_users,
|
82
|
+
column: :resource_owner_id
|
83
|
+
)
|
84
|
+
end
|
85
|
+
end
|
data/db/migrate/20180314085339_rename_maximum_votes_per_proposal_to_threshold_per_proposal.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
class RenameMaximumVotesPerProposalToThresholdPerProposal < ActiveRecord::Migration[5.1]
|
4
4
|
def up
|
5
5
|
execute <<~SQL
|
6
|
-
UPDATE
|
6
|
+
UPDATE decidim_components
|
7
7
|
SET settings = jsonb_set(
|
8
8
|
settings::jsonb,
|
9
9
|
array['global'],
|
@@ -15,7 +15,7 @@ class RenameMaximumVotesPerProposalToThresholdPerProposal < ActiveRecord::Migrat
|
|
15
15
|
|
16
16
|
def down
|
17
17
|
execute <<~SQL
|
18
|
-
UPDATE
|
18
|
+
UPDATE decidim_components
|
19
19
|
SET settings = jsonb_set(
|
20
20
|
settings::jsonb,
|
21
21
|
array['global'],
|
File without changes
|
data/db/seeds.rb
CHANGED
@@ -87,7 +87,7 @@ if !Rails.env.production? || ENV["SEED"]
|
|
87
87
|
|
88
88
|
admin.update!(
|
89
89
|
name: Faker::Name.name,
|
90
|
-
nickname: Faker::
|
90
|
+
nickname: Faker::Twitter.unique.screen_name,
|
91
91
|
password: "decidim123456",
|
92
92
|
password_confirmation: "decidim123456",
|
93
93
|
organization: organization,
|
@@ -103,7 +103,7 @@ if !Rails.env.production? || ENV["SEED"]
|
|
103
103
|
|
104
104
|
regular_user.update!(
|
105
105
|
name: Faker::Name.name,
|
106
|
-
nickname: Faker::
|
106
|
+
nickname: Faker::Twitter.unique.screen_name,
|
107
107
|
password: "decidim123456",
|
108
108
|
password_confirmation: "decidim123456",
|
109
109
|
confirmed_at: Time.current,
|
@@ -136,4 +136,14 @@ if !Rails.env.production? || ENV["SEED"]
|
|
136
136
|
)
|
137
137
|
end
|
138
138
|
end
|
139
|
+
|
140
|
+
Decidim::OAuthApplication.create!(
|
141
|
+
name: "Test OAuth application",
|
142
|
+
organization_name: "Example organization",
|
143
|
+
organization_url: "http://www.example.org",
|
144
|
+
organization_logo: File.new(File.join(seeds_root, "homepage_image.jpg")),
|
145
|
+
redirect_uri: "https://www.example.org/oauth/decidim",
|
146
|
+
scopes: "public",
|
147
|
+
organization: organization
|
148
|
+
)
|
139
149
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Core
|
5
|
+
# This interface represents a commentable object.
|
6
|
+
AttachableInterface = GraphQL::InterfaceType.define do
|
7
|
+
name "AttachableInterface"
|
8
|
+
description "An interface that can be used in objects with attachments"
|
9
|
+
|
10
|
+
field :attachments, !types[Decidim::Core::AttachmentType], "This object's attachments"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Core
|
5
|
+
# This interface represents a commentable object.
|
6
|
+
AuthorableInterface = GraphQL::InterfaceType.define do
|
7
|
+
name "AuthorableInterface"
|
8
|
+
description "An interface that can be used in authorable objects."
|
9
|
+
|
10
|
+
field :author, !Decidim::Core::AuthorInterface, "The comment's author", property: :normalized_author
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Core
|
5
|
+
# This interface represents a commentable object.
|
6
|
+
CategorizableInterface = GraphQL::InterfaceType.define do
|
7
|
+
name "CategorizableInterface"
|
8
|
+
description "An interface that can be used in categorizable objects."
|
9
|
+
|
10
|
+
field :category, !Decidim::Core::CategoryType, "The object's category"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -14,7 +14,7 @@ module Decidim
|
|
14
14
|
description "Lists the components this space contains."
|
15
15
|
|
16
16
|
resolve ->(participatory_space, _args, _ctx) {
|
17
|
-
Decidim::
|
17
|
+
Decidim::Component.where(
|
18
18
|
participatory_space: participatory_space
|
19
19
|
).published
|
20
20
|
}
|
@@ -22,10 +22,10 @@ module Decidim
|
|
22
22
|
|
23
23
|
field :stats, types[Decidim::Core::StatisticType] do
|
24
24
|
resolve ->(participatory_space, _args, _ctx) {
|
25
|
-
|
25
|
+
published_components = Component.where(participatory_space: participatory_space).published
|
26
26
|
|
27
|
-
stats = Decidim.
|
28
|
-
|
27
|
+
stats = Decidim.component_manifests.map do |component_manifest|
|
28
|
+
component_manifest.stats.with_context(published_components).map { |name, data| [name, data] }.flatten
|
29
29
|
end
|
30
30
|
|
31
31
|
stats.reject(&:empty?)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Core
|
5
|
+
# This interface represents a commentable object.
|
6
|
+
ScopableInterface = GraphQL::InterfaceType.define do
|
7
|
+
name "ScopableInterface"
|
8
|
+
description "An interface that can be used in scopable objects."
|
9
|
+
|
10
|
+
field :scope, !Decidim::Core::ScopeApiType, "The object's scope"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/decidim/authorable.rb
CHANGED
@@ -20,6 +20,14 @@ module Decidim
|
|
20
20
|
author == user || user.user_groups.include?(user_group)
|
21
21
|
end
|
22
22
|
|
23
|
+
# Returns the normalized author, whether it's a user group or a user. Ideally this should be
|
24
|
+
# the *author* method, but it's pending a refactor.
|
25
|
+
#
|
26
|
+
# Returns an Author, a UserGroup or nil.
|
27
|
+
def normalized_author
|
28
|
+
user_group || author
|
29
|
+
end
|
30
|
+
|
23
31
|
private
|
24
32
|
|
25
33
|
def verified_user_group
|