decidim-core 0.14.4 → 0.15.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-core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/app/assets/images/decidim/cc-badge.png +0 -0
- data/app/assets/images/decidim/gamification/badges/continuity.svg +73 -0
- data/app/assets/images/decidim/gamification/badges/followers.svg +115 -0
- data/app/assets/images/decidim/icons.svg +1 -0
- data/app/assets/javascripts/decidim/vizzs/areachart.js.es6 +186 -208
- data/app/assets/javascripts/decidim/vizzs/linechart.js.es6 +263 -0
- data/app/assets/javascripts/decidim/vizzs/metrics.js.es6 +36 -26
- data/app/assets/javascripts/decidim/vizzs/orgchart.js.es6 +3 -2
- data/app/assets/javascripts/decidim/vizzs/rowchart.js.es6 +324 -0
- data/app/assets/stylesheets/decidim/_decidim.scss +1 -0
- data/app/assets/stylesheets/decidim/modules/_cards.scss +1 -0
- data/app/assets/stylesheets/decidim/modules/_conference-diploma.scss +75 -0
- data/app/assets/stylesheets/decidim/modules/_conference-media.scss +44 -0
- data/app/assets/stylesheets/decidim/modules/_conference-programme.scss +5 -1
- data/app/assets/stylesheets/decidim/modules/_conference-registration.scss +34 -0
- data/app/assets/stylesheets/decidim/modules/_list-request.scss +16 -0
- data/app/assets/stylesheets/decidim/modules/_modules.scss +4 -4
- data/app/assets/stylesheets/decidim/modules/_process-phase.scss +1 -0
- data/app/assets/stylesheets/decidim/modules/_reveal.scss +6 -1
- data/app/assets/stylesheets/decidim/utils/_helpers.scss +1 -1
- data/app/assets/stylesheets/decidim/{modules → vizzs}/_areachart.scss +8 -11
- data/app/assets/stylesheets/decidim/{modules → vizzs}/_chart-tooltip.scss +0 -0
- data/app/assets/stylesheets/decidim/vizzs/_linechart.scss +115 -0
- data/app/assets/stylesheets/decidim/vizzs/_rowchart.scss +77 -0
- data/app/cells/decidim/activities/show.erb +3 -0
- data/app/cells/decidim/activities_cell.rb +38 -0
- data/app/cells/decidim/activity/show.erb +21 -0
- data/app/cells/decidim/activity_cell.rb +85 -0
- data/app/cells/decidim/address/details.erb +7 -0
- data/app/cells/decidim/address/show.erb +14 -0
- data/app/cells/decidim/address_cell.rb +19 -0
- data/app/cells/decidim/author/contact.erb +1 -1
- data/app/cells/decidim/author_cell.rb +1 -0
- data/app/cells/decidim/badge/show.erb +2 -2
- data/app/cells/decidim/badge/small.erb +5 -0
- data/app/cells/decidim/badge_cell.rb +36 -14
- data/app/cells/decidim/badges/show.erb +6 -3
- data/app/cells/decidim/badges_cell.rb +4 -4
- data/app/cells/decidim/coauthorships_cell.rb +8 -2
- data/app/cells/decidim/collapsible_authors/show.erb +9 -7
- data/app/cells/decidim/content_blocks/html/show.erb +3 -0
- data/app/cells/decidim/content_blocks/html_cell.rb +11 -0
- data/app/cells/decidim/content_blocks/html_settings_form/show.erb +3 -0
- data/app/cells/decidim/content_blocks/html_settings_form_cell.rb +17 -0
- data/app/cells/decidim/content_blocks/last_activity/show.erb +17 -0
- data/app/cells/decidim/content_blocks/last_activity_cell.rb +60 -0
- data/app/cells/decidim/content_blocks/metrics/show.erb +13 -0
- data/app/cells/decidim/content_blocks/metrics_cell.rb +18 -0
- data/app/cells/decidim/content_blocks/stats/show.erb +2 -1
- data/app/cells/decidim/groups/show.erb +10 -0
- data/app/cells/decidim/groups_cell.rb +19 -0
- data/app/cells/decidim/members/show.erb +9 -0
- data/app/cells/decidim/members_cell.rb +32 -0
- data/app/cells/decidim/profile/show.erb +3 -11
- data/app/cells/decidim/profile/user_group_tabs.erb +5 -0
- data/app/cells/decidim/profile/user_tabs.erb +12 -0
- data/app/cells/decidim/profile_cell.rb +7 -2
- data/app/cells/decidim/profile_sidebar/show.erb +108 -23
- data/app/cells/decidim/profile_sidebar_cell.rb +36 -2
- data/app/cells/decidim/user_group_admin_membership_profile/footer.erb +29 -0
- data/app/cells/decidim/user_group_admin_membership_profile_cell.rb +14 -0
- data/app/cells/decidim/user_group_membership_profile/tags.erb +1 -0
- data/app/cells/decidim/user_group_membership_profile_cell.rb +8 -0
- data/app/cells/decidim/user_group_pending_invitations_list/show.erb +23 -0
- data/app/cells/decidim/user_group_pending_invitations_list_cell.rb +26 -0
- data/app/cells/decidim/user_group_pending_requests_list/show.erb +23 -0
- data/app/cells/decidim/user_group_pending_requests_list_cell.rb +26 -0
- data/app/cells/decidim/user_profile/header.erb +1 -1
- data/app/cells/decidim/user_profile_cell.rb +15 -9
- data/app/commands/decidim/accept_group_invitation.rb +43 -0
- data/app/commands/decidim/accept_user_group_join_request.rb +53 -0
- data/app/commands/decidim/create_follow.rb +6 -0
- data/app/commands/decidim/create_registration.rb +13 -23
- data/app/commands/decidim/create_user_group.rb +57 -0
- data/app/commands/decidim/delete_follow.rb +7 -0
- data/app/commands/decidim/demote_membership.rb +57 -0
- data/app/commands/decidim/destroy_account.rb +6 -0
- data/app/commands/decidim/invite_user.rb +1 -3
- data/app/commands/decidim/invite_user_to_group.rb +62 -0
- data/app/commands/decidim/join_user_group.rb +63 -0
- data/app/commands/decidim/leave_user_group.rb +41 -0
- data/app/commands/decidim/promote_membership.rb +55 -0
- data/app/commands/decidim/reject_group_invitation.rb +42 -0
- data/app/commands/decidim/reject_user_group_join_request.rb +53 -0
- data/app/commands/decidim/remove_user_from_group.rb +53 -0
- data/app/commands/decidim/update_user_group.rb +53 -0
- data/app/controllers/concerns/decidim/locale_switcher.rb +3 -3
- data/app/controllers/concerns/decidim/paginable.rb +1 -0
- data/app/controllers/decidim/application_controller.rb +7 -0
- data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -1
- data/app/controllers/decidim/devise/sessions_controller.rb +1 -1
- data/app/controllers/decidim/gamification/badges_controller.rb +11 -0
- data/app/controllers/decidim/group_admins_controller.rb +41 -0
- data/app/controllers/decidim/group_invites_controller.rb +74 -0
- data/app/controllers/decidim/group_members_controller.rb +59 -0
- data/app/controllers/decidim/groups_controller.rb +85 -0
- data/app/controllers/decidim/last_activities_controller.rb +46 -0
- data/app/controllers/decidim/pages_controller.rb +9 -1
- data/app/controllers/decidim/profiles_controller.rb +35 -5
- data/app/controllers/decidim/user_group_join_requests_controller.rb +69 -0
- data/app/events/decidim/demoted_membership_event.rb +28 -0
- data/app/events/decidim/invited_to_group_event.rb +33 -0
- data/app/events/decidim/join_request_accepted_event.rb +28 -0
- data/app/events/decidim/join_request_created_event.rb +28 -0
- data/app/events/decidim/join_request_rejected_event.rb +28 -0
- data/app/events/decidim/promoted_to_admin_event.rb +28 -0
- data/app/events/decidim/removed_from_group_event.rb +28 -0
- data/app/forms/decidim/account_form.rb +1 -1
- data/app/forms/decidim/invite_user_to_group_form.rb +29 -0
- data/app/forms/decidim/notifications_settings_form.rb +4 -0
- data/app/forms/decidim/registration_form.rb +0 -27
- data/app/forms/decidim/user_group_form.rb +81 -0
- data/app/helpers/decidim/component_path_helper.rb +10 -0
- data/app/helpers/decidim/filters_helper.rb +3 -2
- data/app/helpers/decidim/icon_helper.rb +3 -1
- data/app/helpers/decidim/map_helper.rb +1 -1
- data/app/jobs/decidim/metric_job.rb +14 -0
- data/app/mailers/decidim/newsletter_mailer.rb +2 -0
- data/app/mailers/decidim/notification_mailer.rb +1 -1
- data/app/models/decidim/action_log.rb +66 -0
- data/app/models/decidim/coauthorship.rb +9 -0
- data/app/models/decidim/component.rb +5 -0
- data/app/models/decidim/continuity_badge_status.rb +9 -0
- data/app/models/decidim/gamification/badge_score.rb +1 -1
- data/app/models/decidim/messaging/message.rb +1 -0
- data/app/models/decidim/metric.rb +13 -0
- data/app/models/decidim/participatory_space_private_user.rb +4 -0
- data/app/models/decidim/user.rb +14 -38
- data/app/models/decidim/user_base_entity.rb +52 -0
- data/app/models/decidim/user_group.rb +48 -9
- data/app/models/decidim/user_group_membership.rb +8 -0
- data/app/permissions/decidim/permissions.rb +21 -0
- data/app/presenters/decidim/admin_log/organization_presenter.rb +0 -2
- data/app/presenters/decidim/admin_log/participatory_space_private_user_presenter.rb +38 -0
- data/app/presenters/decidim/metric_charts_presenter.rb +53 -0
- data/app/presenters/decidim/metric_object_presenter.rb +28 -0
- data/app/presenters/decidim/user_group_presenter.rb +16 -8
- data/app/presenters/decidim/user_presenter.rb +14 -0
- data/app/queries/decidim/metric_manage.rb +59 -0
- data/app/queries/decidim/metrics/users_metric_manage.rb +26 -0
- data/app/queries/decidim/user_groups/accepted_memberships.rb +36 -0
- data/app/queries/decidim/user_groups/accepted_user_groups.rb +38 -0
- data/app/queries/decidim/user_groups/accepted_users.rb +36 -0
- data/app/queries/decidim/user_groups/admin_memberships.rb +37 -0
- data/app/queries/decidim/user_groups/invited_memberships.rb +36 -0
- data/app/queries/decidim/user_groups/manageable_user_groups.rb +39 -0
- data/app/queries/decidim/user_groups/member_memberships.rb +37 -0
- data/app/resolvers/decidim/core/metric_resolver.rb +38 -0
- data/app/services/decidim/action_logger.rb +4 -2
- data/app/services/decidim/activity_search.rb +76 -0
- data/app/services/decidim/continuity_badge_tracker.rb +64 -0
- data/app/services/decidim/resource_search.rb +0 -1
- data/app/types/decidim/core/metric_history_type.rb +17 -0
- data/app/types/decidim/core/metric_type.rb +14 -0
- data/app/types/decidim/core/session_type.rb +1 -1
- data/app/types/decidim/core/user_group_type.rb +2 -2
- data/app/views/decidim/authorization_modals/show.html.erb +40 -27
- data/app/views/decidim/devise/registrations/new.html.erb +0 -19
- data/app/views/decidim/gamification/badges/index.html.erb +42 -0
- data/app/views/decidim/group_admins/index.html.erb +18 -0
- data/app/views/decidim/group_invites/index.html.erb +27 -0
- data/app/views/decidim/group_members/index.html.erb +19 -0
- data/app/views/decidim/groups/_form.html.erb +23 -0
- data/app/views/decidim/groups/edit.html.erb +26 -0
- data/app/views/decidim/groups/new.html.erb +26 -0
- data/app/views/decidim/last_activities/_activities.html.erb +13 -0
- data/app/views/decidim/last_activities/index.html.erb +18 -0
- data/app/views/decidim/last_activities/index.js.erb +6 -0
- data/app/views/decidim/profiles/show.html.erb +1 -1
- data/app/views/layouts/decidim/_user_menu.html.erb +0 -1
- data/app/views/layouts/decidim/_wrapper.html.erb +1 -1
- data/config/initializers/devise.rb +1 -1
- data/config/initializers/foundation_rails_helper.rb +1 -0
- data/config/locales/ca.yml +325 -32
- data/config/locales/de.yml +325 -32
- data/config/locales/en.yml +325 -32
- data/config/locales/es-PY.yml +325 -32
- data/config/locales/es.yml +325 -32
- data/config/locales/eu.yml +325 -32
- data/config/locales/fi.yml +330 -37
- data/config/locales/fr.yml +325 -32
- data/config/locales/gl.yml +325 -32
- data/config/locales/hu.yml +327 -34
- data/config/locales/it.yml +325 -32
- data/config/locales/nl.yml +325 -32
- data/config/locales/pl.yml +329 -32
- data/config/locales/pt-BR.yml +326 -33
- data/config/locales/pt.yml +325 -32
- data/config/locales/ru.yml +4 -33
- data/config/locales/sv.yml +346 -53
- data/config/locales/uk.yml +4 -33
- data/config/routes.rb +27 -1
- data/db/migrate/20170128112958_change_user_groups_verified_to_timestamp.rb +11 -0
- data/db/migrate/20180705134647_create_decidim_metrics.rb +16 -0
- data/db/migrate/20180730071851_add_core_content_blocks.rb +3 -3
- data/db/migrate/20180810092428_move_organization_fields_to_hero_content_block.rb +4 -2
- data/db/migrate/20180918072506_add_visibility_to_action_logs.rb +8 -0
- data/db/migrate/20181001124950_move_users_groups_to_users_table.rb +84 -0
- data/db/migrate/20181008102144_add_badge_switch_to_organizations.rb +8 -0
- data/db/migrate/20181010044613_create_decidim_continuity_badge_statuses.rb +11 -0
- data/db/migrate/20181011080252_add_roles_to_memberships.rb +24 -0
- data/db/migrate/20181016091601_make_authors_polymorphic.rb +31 -0
- data/db/migrate/20181029112820_fix_user_follows.rb +18 -0
- data/db/migrate/20181030090144_destroy_deleted_users_follows.rb +16 -0
- data/db/seeds.rb +18 -4
- data/lib/decidim/attributes.rb +1 -0
- data/lib/decidim/attributes/localized_date.rb +16 -0
- data/lib/decidim/attributes/time_with_zone.rb +3 -1
- data/lib/decidim/authorable.rb +5 -4
- data/lib/decidim/authorization_form_builder.rb +2 -2
- data/lib/decidim/coauthorable.rb +68 -18
- data/lib/decidim/content_block_manifest.rb +7 -0
- data/lib/decidim/content_processor.rb +17 -7
- data/lib/decidim/core.rb +12 -0
- data/lib/decidim/core/engine.rb +54 -6
- data/lib/decidim/core/test/factories.rb +63 -17
- data/lib/decidim/core/test/shared_examples/coauthorable.rb +27 -9
- data/lib/decidim/core/test/shared_examples/coauthorable_interface_examples.rb +2 -2
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/data_portability.rb +3 -1
- data/lib/decidim/data_portability_file_reader.rb +1 -1
- data/lib/decidim/events/author_event.rb +4 -1
- data/lib/decidim/events/coauthor_event.rb +4 -1
- data/lib/decidim/faker/localized.rb +5 -4
- data/lib/decidim/form_builder.rb +18 -17
- data/lib/decidim/gamification.rb +8 -2
- data/lib/decidim/gamification/badge.rb +34 -0
- data/lib/decidim/gamification/badge_scorer.rb +29 -14
- data/lib/decidim/gamification/badge_status.rb +2 -0
- data/lib/decidim/hashtaggable.rb +1 -1
- data/lib/decidim/manifest_registry.rb +5 -3
- data/lib/decidim/metric_manifest.rb +20 -0
- data/lib/decidim/metric_registry.rb +71 -0
- data/lib/decidim/participable.rb +1 -1
- data/lib/decidim/participatory_space_resourceable.rb +0 -1
- data/lib/decidim/query_extensions.rb +19 -0
- data/lib/decidim/resourceable.rb +1 -0
- data/lib/decidim/searchable.rb +2 -1
- data/lib/tasks/decidim_metrics_tasks.rake +41 -0
- data/lib/tasks/decidim_tasks.rake +1 -0
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.ca.js +1 -2
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.es.js +1 -2
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.fr.js +1 -2
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.gl.js +1 -2
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.pt.js +1 -2
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.ru.js +1 -2
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.uk.js +1 -2
- data/vendor/assets/javascripts/form_datepicker.js.es6 +1 -11
- metadata +144 -23
- data/app/cells/decidim/invitations_toggle/content.erb +0 -1
- data/app/cells/decidim/invitations_toggle/label.erb +0 -1
- data/app/cells/decidim/invitations_toggle_cell.rb +0 -27
- data/app/cells/decidim/toggle/show.erb +0 -8
- data/app/cells/decidim/toggle_cell.rb +0 -42
- data/app/commands/decidim/invite_friends.rb +0 -48
- data/app/controllers/decidim/invitations_controller.rb +0 -32
- data/app/forms/decidim/invitations_form.rb +0 -37
- data/app/views/decidim/invitations/index.html.erb +0 -48
- data/app/views/devise/mailer/invite_friend.html.erb +0 -27
- data/app/views/devise/mailer/invite_friend.text.erb +0 -19
- data/lib/decidim/rectify_ext.rb +0 -32
@@ -1 +0,0 @@
|
|
1
|
-
<%= form.text_area :custom_text, label: false %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<u><%= t "decidim.invitations.index.customize_message" %></u>
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
# This cell only holds two partials needed to use the ToggleCell in the
|
5
|
-
# invitations page.
|
6
|
-
class InvitationsToggleCell < Decidim::ViewModel
|
7
|
-
include LayoutHelper
|
8
|
-
|
9
|
-
def show
|
10
|
-
nil
|
11
|
-
end
|
12
|
-
|
13
|
-
def label
|
14
|
-
render
|
15
|
-
end
|
16
|
-
|
17
|
-
def content
|
18
|
-
render
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def form
|
24
|
-
options[:form]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<div data-toggle="toggle-<%= random_seed %> toggle-<%= random_seed %>-icon-bottom toggle-<%= random_seed %>-icon-right">
|
2
|
-
<span id="toggle-<%= random_seed %>-icon-bottom" class="<%= "hide" if !open? %>" data-toggler="hide"><%= icon "caret-bottom", class: "icon--small" %></span>
|
3
|
-
<span id="toggle-<%= random_seed %>-icon-right" class="<%= "hide" if open? %>" data-toggler="hide"><%= icon "caret-right", class: "icon--small" %></span>
|
4
|
-
<%= toggled_label %>
|
5
|
-
</div>
|
6
|
-
<div id="toggle-<%= random_seed %>" class="<%= "hide" if !open? %>" data-toggler=".hide">
|
7
|
-
<%= toggled_content %>
|
8
|
-
</div>
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
# Use this cell to add content that can be collapsed. Use `nil` as the `model`
|
5
|
-
# value.
|
6
|
-
#
|
7
|
-
# Options:
|
8
|
-
# open - If the collapsed content should be shown or not on page load.
|
9
|
-
# Defaults to `false`.
|
10
|
-
# label - The contents of the link that toggles the collapse. Use a cell
|
11
|
-
# partial for this.
|
12
|
-
# content - The HTML that should be collapsed. Use a cell partial for this.
|
13
|
-
#
|
14
|
-
# Usage:
|
15
|
-
# cell(
|
16
|
-
# "decidim/toggle",
|
17
|
-
# nil,
|
18
|
-
# label: cell("my/cell").my_view,
|
19
|
-
# content: cell("my/cell").another_view
|
20
|
-
# )
|
21
|
-
class ToggleCell < Decidim::ViewModel
|
22
|
-
include LayoutHelper
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def open?
|
27
|
-
@open ||= options[:open].to_s == "true"
|
28
|
-
end
|
29
|
-
|
30
|
-
def random_seed
|
31
|
-
@random_seed ||= Random.rand(9999)
|
32
|
-
end
|
33
|
-
|
34
|
-
def toggled_content
|
35
|
-
options[:content]
|
36
|
-
end
|
37
|
-
|
38
|
-
def toggled_label
|
39
|
-
options[:label]
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
# This command invites some user friends.
|
5
|
-
class InviteFriends < Rectify::Command
|
6
|
-
# Invites the user friends
|
7
|
-
#
|
8
|
-
# form - The form with the data.
|
9
|
-
def initialize(form)
|
10
|
-
@form = form
|
11
|
-
end
|
12
|
-
|
13
|
-
def call
|
14
|
-
return broadcast(:invalid) unless form.valid?
|
15
|
-
invite_friends
|
16
|
-
broadcast(:ok)
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
attr_reader :form
|
22
|
-
|
23
|
-
def invite_friends
|
24
|
-
form.clean_emails.each do |email|
|
25
|
-
InviteUser.call(build_invite_form(email)) do
|
26
|
-
on(:ok) do |user|
|
27
|
-
user
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def build_invite_form(email)
|
34
|
-
OpenStruct.new(
|
35
|
-
name: email.downcase.split("@").first,
|
36
|
-
email: email.downcase,
|
37
|
-
organization: form.current_organization,
|
38
|
-
admin: false,
|
39
|
-
role: nil,
|
40
|
-
invited_by: form.current_user,
|
41
|
-
extra_email_options: {
|
42
|
-
custom_text: form.custom_text
|
43
|
-
},
|
44
|
-
invitation_instructions: "invite_friend"
|
45
|
-
)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
# The controller to handle friends invitations by the current user.
|
5
|
-
class InvitationsController < Decidim::ApplicationController
|
6
|
-
include FormFactory
|
7
|
-
|
8
|
-
def index
|
9
|
-
@form = form(InvitationsForm).instance
|
10
|
-
end
|
11
|
-
|
12
|
-
def create
|
13
|
-
@form = form(InvitationsForm).from_params(params)
|
14
|
-
|
15
|
-
InviteFriends.call(@form) do
|
16
|
-
on(:ok) do
|
17
|
-
flash[:notice] = t("invitations.create.success", scope: "decidim")
|
18
|
-
redirect_to account_path
|
19
|
-
end
|
20
|
-
|
21
|
-
on(:invalid) do
|
22
|
-
flash.now[:alert] = if @form.emails.empty?
|
23
|
-
t("invitations.create.error_empty_form", scope: "decidim")
|
24
|
-
else
|
25
|
-
t("invitations.create.error", scope: "decidim")
|
26
|
-
end
|
27
|
-
render action: :index
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
# This form holds the data for the invitations system.
|
5
|
-
class InvitationsForm < Form
|
6
|
-
mimic :invitations
|
7
|
-
|
8
|
-
attribute :email_1, String
|
9
|
-
attribute :email_2, String
|
10
|
-
attribute :email_3, String
|
11
|
-
attribute :email_4, String
|
12
|
-
attribute :email_5, String
|
13
|
-
attribute :email_6, String
|
14
|
-
attribute :custom_text, String
|
15
|
-
|
16
|
-
validates :email_1,
|
17
|
-
:email_2,
|
18
|
-
:email_3,
|
19
|
-
:email_4,
|
20
|
-
:email_5,
|
21
|
-
:email_6,
|
22
|
-
"valid_email_2/email": true,
|
23
|
-
allow_blank: true
|
24
|
-
validates :emails, presence: true
|
25
|
-
|
26
|
-
def emails
|
27
|
-
[email_1, email_2, email_3, email_4, email_5, email_6].uniq.select(&:present?)
|
28
|
-
end
|
29
|
-
|
30
|
-
def clean_emails
|
31
|
-
existing_emails = Decidim::User
|
32
|
-
.where(organization: current_organization, email: emails)
|
33
|
-
.pluck(:email)
|
34
|
-
emails - existing_emails
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
<main class="wrapper">
|
2
|
-
<div class="row collapse">
|
3
|
-
<div class="columns medium-9 medium-centered">
|
4
|
-
<div class="card">
|
5
|
-
<div class="card__content">
|
6
|
-
<h3><%== t(".invitations_title", organization_name: content_tag(:strong, current_organization.name)) %></h3>
|
7
|
-
<p><%= t(".invitations_subtitle") %></p>
|
8
|
-
<%= decidim_form_for @form, url: account_invitations_path do |form| %>
|
9
|
-
<div class="row collapse mt-sm mb-s">
|
10
|
-
<% 3.times do |index| %>
|
11
|
-
<div class="row">
|
12
|
-
<div class="columns medium-6">
|
13
|
-
<label>
|
14
|
-
<%= t(".friend_email", index: 2 * index + 1) %>
|
15
|
-
<%= form.text_field "email_#{2 * index + 1}", placeholder: "email@example.org", required: false, label: false %>
|
16
|
-
</label>
|
17
|
-
</div>
|
18
|
-
<div class="columns medium-6">
|
19
|
-
<label>
|
20
|
-
<%= t(".friend_email", index: 2 * index + 2) %>
|
21
|
-
<%= form.text_field "email_#{2 * index + 2}", placeholder: "email@example.org", required: false, label: false %>
|
22
|
-
</label>
|
23
|
-
</div>
|
24
|
-
</div>
|
25
|
-
<% end %>
|
26
|
-
</div>
|
27
|
-
<div class="row collapse mb-sm">
|
28
|
-
<div class="text-medium">
|
29
|
-
<%= cell(
|
30
|
-
"decidim/toggle",
|
31
|
-
nil,
|
32
|
-
label: cell("decidim/invitations_toggle").label,
|
33
|
-
content: cell("decidim/invitations_toggle", nil, form: form).content
|
34
|
-
) %>
|
35
|
-
</div>
|
36
|
-
</div>
|
37
|
-
<%= form.submit t(".invite"), class: "button expanded" %>
|
38
|
-
<% end %>
|
39
|
-
</div>
|
40
|
-
</div>
|
41
|
-
</div>
|
42
|
-
</div>
|
43
|
-
<div class="row collapse">
|
44
|
-
<div class="columns text-center">
|
45
|
-
<%= link_to t(".visit_your_profile"), decidim.profile_path(current_user.nickname), class: "button secondary light" %>
|
46
|
-
</div>
|
47
|
-
</div>
|
48
|
-
</main>
|
@@ -1,27 +0,0 @@
|
|
1
|
-
<p><%= t("devise.mailer.invitation_instructions.hello", email: @resource.name) %></p>
|
2
|
-
|
3
|
-
<p>
|
4
|
-
<%= t("devise.mailer.invitation_instructions.invited_you_as_friend", invited_by: @resource.invited_by.name, application: @resource.organization.name) %>
|
5
|
-
</p>
|
6
|
-
|
7
|
-
<% if @opts[:custom_text].present? %>
|
8
|
-
<p><%= t("devise.mailer.invite_friend.friend_custom_text") %></p>
|
9
|
-
|
10
|
-
<p>
|
11
|
-
<em>
|
12
|
-
<%= @opts[:custom_text] %>
|
13
|
-
</em>
|
14
|
-
</p>
|
15
|
-
<% end %>
|
16
|
-
|
17
|
-
<p>
|
18
|
-
<%= t("devise.mailer.invite_friend.accept_invitation") %>
|
19
|
-
</p>
|
20
|
-
|
21
|
-
<p><%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token, invite_redirect: decidim_admin.root_path, host: @resource.organization.host) %></p>
|
22
|
-
|
23
|
-
<% if @resource.invitation_due_at %>
|
24
|
-
<p><%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :long)) %></p>
|
25
|
-
<% end %>
|
26
|
-
|
27
|
-
<p><%= t("devise.mailer.invitation_instructions.ignore").html_safe %></p>
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<%= t("devise.mailer.invitation_instructions.hello", email: @resource.name) %>
|
2
|
-
|
3
|
-
<%= t("devise.mailer.invitation_instructions.invited_you_as_friend", invited_by: @resource.invited_by.name, application: @resource.organization.name) %>
|
4
|
-
|
5
|
-
<% if @opts[:custom_text].present? %>
|
6
|
-
<%= t("devise.mailer.invite_friend.friend_custom_text") %>
|
7
|
-
|
8
|
-
<%= @opts[:custom_text] %>
|
9
|
-
<% end %>
|
10
|
-
|
11
|
-
<%= t("devise.mailer.invite_friend.accept_invitation") %>
|
12
|
-
|
13
|
-
<%= accept_invitation_url(@resource, invitation_token: @token, invite_redirect: decidim_admin.root_path, host: @resource.organization.host) %>
|
14
|
-
|
15
|
-
<% if @resource.invitation_due_at %>
|
16
|
-
<%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :long)) %>
|
17
|
-
<% end %>
|
18
|
-
|
19
|
-
<%= t("devise.mailer.invitation_instructions.ignore").html_safe %>
|
data/lib/decidim/rectify_ext.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Rectify
|
4
|
-
class FormatAttributesHash
|
5
|
-
private
|
6
|
-
|
7
|
-
def convert_indexed_hashes_to_arrays(attributes_hash)
|
8
|
-
array_attributes.each do |array_attribute|
|
9
|
-
name = array_attribute.name
|
10
|
-
attribute = attributes_hash[name]
|
11
|
-
next unless attribute.is_a?(Hash)
|
12
|
-
|
13
|
-
attributes_hash[name] = transform_values_for_type(
|
14
|
-
attribute.values,
|
15
|
-
array_attribute.member_type.primitive
|
16
|
-
)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def transform_values_for_type(values, element_type)
|
21
|
-
return values unless element_type < Rectify::Form
|
22
|
-
|
23
|
-
values.map do |value|
|
24
|
-
self.class.new(element_type.attribute_set).format(value)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def array_attributes
|
29
|
-
attribute_set.select { |attribute| attribute.primitive == Array }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|