Module: Decidim::Meetings

Defined in:
lib/decidim/meetings.rb,
lib/decidim/meetings/api.rb,
lib/decidim/meetings/admin.rb,
lib/decidim/meetings/engine.rb,
lib/decidim/meetings/version.rb,
lib/decidim/meetings/directory.rb,
lib/decidim/meetings/admin_engine.rb,
app/models/decidim/meetings/agenda.rb,
app/models/decidim/meetings/invite.rb,
lib/decidim/api/services_interface.rb,
lib/decidim/meetings/registrations.rb,
app/models/decidim/meetings/meeting.rb,
app/models/decidim/meetings/minutes.rb,
app/models/decidim/meetings/service.rb,
lib/decidim/meetings/directory_engine.rb,
app/types/decidim/meetings/agenda_type.rb,
app/cells/decidim/meetings/meeting_cell.rb,
app/forms/decidim/meetings/meeting_form.rb,
app/helpers/decidim/meetings/map_helper.rb,
app/models/decidim/meetings/agenda_item.rb,
app/types/decidim/meetings/meeting_type.rb,
app/types/decidim/meetings/minutes_type.rb,
app/types/decidim/meetings/service_type.rb,
lib/decidim/meetings/meeting_serializer.rb,
app/models/decidim/meetings/registration.rb,
app/types/decidim/meetings/meetings_type.rb,
app/cells/decidim/meetings/meeting_m_cell.rb,
app/cells/decidim/meetings/meeting_s_cell.rb,
app/commands/decidim/meetings/join_meeting.rb,
app/queries/decidim/meetings/admin/invites.rb,
lib/decidim/api/linked_resources_interface.rb,
app/commands/decidim/meetings/leave_meeting.rb,
app/services/decidim/meetings/diff_renderer.rb,
app/types/decidim/meetings/agenda_item_type.rb,
app/cells/decidim/meetings/meetings_map_cell.rb,
app/commands/decidim/meetings/create_meeting.rb,
app/commands/decidim/meetings/update_meeting.rb,
app/forms/decidim/meetings/join_meeting_form.rb,
app/helpers/decidim/meetings/meetings_helper.rb,
app/permissions/decidim/meetings/permissions.rb,
app/services/decidim/meetings/meeting_search.rb,
app/forms/decidim/meetings/admin/meeting_form.rb,
app/forms/decidim/meetings/admin/minutes_form.rb,
app/models/decidim/meetings/application_record.rb,
app/queries/decidim/meetings/filtered_meetings.rb,
app/events/decidim/meetings/close_meeting_event.rb,
app/helpers/decidim/meetings/application_helper.rb,
app/services/decidim/meetings/calendar_renderer.rb,
app/cells/decidim/meetings/meeting_activity_cell.rb,
app/commands/decidim/meetings/admin/copy_meeting.rb,
app/commands/decidim/meetings/decline_invitation.rb,
app/events/decidim/meetings/create_meeting_event.rb,
app/events/decidim/meetings/update_meeting_event.rb,
app/mailers/decidim/meetings/registration_mailer.rb,
app/presenters/decidim/meetings/invite_presenter.rb,
app/cells/decidim/meetings/meeting_list_item_cell.rb,
app/commands/decidim/meetings/admin/close_meeting.rb,
app/commands/decidim/meetings/admin/create_agenda.rb,
app/commands/decidim/meetings/admin/update_agenda.rb,
app/helpers/decidim/meetings/meeting_cells_helper.rb,
app/presenters/decidim/meetings/meeting_presenter.rb,
lib/decidim/meetings/registrations/code_generator.rb,
app/commands/decidim/meetings/admin/create_meeting.rb,
app/commands/decidim/meetings/admin/create_minutes.rb,
app/commands/decidim/meetings/admin/update_meeting.rb,
app/commands/decidim/meetings/admin/update_minutes.rb,
app/events/decidim/meetings/upcoming_meeting_event.rb,
app/forms/decidim/meetings/admin/meeting_copy_form.rb,
app/permissions/decidim/meetings/admin/permissions.rb,
app/cells/decidim/meetings/join_meeting_button_cell.rb,
app/commands/decidim/meetings/admin/destroy_meeting.rb,
app/controllers/decidim/meetings/widgets_controller.rb,
app/forms/decidim/meetings/admin/close_meeting_form.rb,
app/cells/decidim/meetings/highlighted_meetings_cell.rb,
app/controllers/decidim/meetings/meetings_controller.rb,
app/controllers/decidim/meetings/versions_controller.rb,
app/forms/decidim/meetings/admin/meeting_agenda_form.rb,
app/services/decidim/meetings/calendar/base_calendar.rb,
app/controllers/decidim/meetings/calendars_controller.rb,
app/forms/decidim/meetings/admin/meeting_service_form.rb,
app/helpers/decidim/meetings/admin/application_helper.rb,
app/presenters/decidim/meetings/log/resource_presenter.rb,
app/controllers/decidim/meetings/application_controller.rb,
app/services/decidim/meetings/calendar/meeting_to_event.rb,
app/commands/decidim/meetings/admin/update_registrations.rb,
app/controllers/decidim/meetings/admin/agenda_controller.rb,
app/serializers/decidim/meetings/registration_serializer.rb,
app/controllers/decidim/meetings/admin/invites_controller.rb,
app/controllers/decidim/meetings/admin/minutes_controller.rb,
app/controllers/decidim/meetings/registrations_controller.rb,
app/presenters/decidim/meetings/official_author_presenter.rb,
app/services/decidim/meetings/calendar/component_calendar.rb,
app/controllers/decidim/meetings/admin/meetings_controller.rb,
app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb,
app/presenters/decidim/meetings/admin_log/invite_presenter.rb,
app/forms/decidim/meetings/admin/meeting_registrations_form.rb,
app/jobs/decidim/meetings/upcoming_meeting_notification_job.rb,
app/presenters/decidim/meetings/admin_log/meeting_presenter.rb,
app/presenters/decidim/meetings/admin_log/minutes_presenter.rb,
app/queries/decidim/meetings/metrics/meetings_metric_manage.rb,
app/services/decidim/meetings/calendar/organization_calendar.rb,
app/controllers/decidim/meetings/admin/application_controller.rb,
app/controllers/decidim/meetings/admin/attachments_controller.rb,
app/events/decidim/meetings/registration_code_validated_event.rb,
app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb,
app/cells/decidim/meetings/content_blocks/upcoming_events_cell.rb,
app/commands/decidim/meetings/admin/validate_registration_code.rb,
app/controllers/decidim/meetings/directory/meetings_controller.rb,
app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb,
app/controllers/decidim/meetings/admin/registrations_controller.rb,
app/events/decidim/meetings/meeting_registrations_enabled_event.rb,
app/commands/decidim/meetings/admin/export_meeting_registrations.rb,
app/controllers/decidim/meetings/admin/meeting_closes_controller.rb,
app/controllers/decidim/meetings/admin/meeting_copies_controller.rb,
app/forms/decidim/meetings/admin/validate_registration_code_form.rb,
app/forms/decidim/meetings/admin/meeting_registration_invite_form.rb,
app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb,
app/controllers/decidim/meetings/admin/registration_form_controller.rb,
app/events/decidim/meetings/meeting_registration_notification_event.rb,
app/serializers/decidim/meetings/data_portability_invite_serializer.rb,
app/queries/decidim/meetings/metrics/meeting_followers_metric_measure.rb,
app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb,
app/controllers/decidim/meetings/admin/attachment_collections_controller.rb,
app/serializers/decidim/meetings/data_portability_registration_serializer.rb,
app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb

Overview

This holds the decidim-meetings version.

Defined Under Namespace

Modules: Admin, AdminLog, ApplicationHelper, Calendar, ContentBlocks, Directory, Log, MapHelper, MeetingCellsHelper, MeetingsHelper, MeetingsTypeHelper, Metrics, Registrations Classes: AdminEngine, Agenda, AgendaItem, ApplicationController, ApplicationRecord, CalendarRenderer, CalendarsController, CloseMeetingEvent, CreateMeeting, CreateMeetingEvent, DataPortabilityInviteSerializer, DataPortabilityRegistrationSerializer, DeclineInvitation, DiffRenderer, DirectoryEngine, Engine, FilteredMeetings, HighlightedMeetingsCell, HighlightedMeetingsForComponentCell, Invite, InvitePresenter, JoinMeeting, JoinMeetingButtonCell, JoinMeetingForm, LeaveMeeting, Meeting, MeetingActivityCell, MeetingCell, MeetingForm, MeetingListItemCell, MeetingMCell, MeetingPresenter, MeetingRegistrationNotificationEvent, MeetingRegistrationsEnabledEvent, MeetingRegistrationsOverPercentageEvent, MeetingSCell, MeetingSearch, MeetingSerializer, MeetingsController, MeetingsMapCell, Minutes, OfficialAuthorPresenter, Permissions, Registration, RegistrationCodeValidatedEvent, RegistrationMailer, RegistrationSerializer, RegistrationsController, Service, UpcomingMeetingEvent, UpcomingMeetingNotificationJob, UpdateMeeting, UpdateMeetingEvent, VersionsController, WidgetsController

Constant Summary collapse

ServicesInterface =

This interface represents a categorizable object.

GraphQL::InterfaceType.define do
  name "ServicesInterface"
  description "An interface that can be used with services."

  field :services, !types[ServiceType], "The object's services"
end
AgendaType =
GraphQL::ObjectType.define do
  name "MeetingAgenda"
  description "A meeting agenda"

  field :id, !types.ID, "The ID for the agenda"
  field :title, Decidim::Core::TranslatedFieldType, "The title for the agenda"
  field :items, !types[AgendaItemType], "Items and sub-items of the agenda", property: :agenda_items
  # probably useful in the future, when handling user permissions
  # field :visible, !types.Boolean, "Whether this minutes is public or not", property: :visible

  field :createdAt, Decidim::Core::DateTimeType do
    description "The date and time this agenda was created"
    property :created_at
  end
  field :updatedAt, Decidim::Core::DateTimeType do
    description "The date and time this agenda was updated"
    property :updated_at
  end
end
MeetingType =
GraphQL::ObjectType.define do
  name "Meeting"
  description "A meeting"

  interfaces [
    -> { Decidim::Comments::CommentableInterface },
    -> { Decidim::Core::CategorizableInterface },
    -> { Decidim::Core::ScopableInterface },
    -> { Decidim::Core::AttachableInterface },
    -> { Decidim::Core::TimestampsInterface },
    -> { Decidim::Meetings::ServicesInterface },
    -> { Decidim::Meetings::LinkedResourcesInterface },
    -> { Decidim::Forms::QuestionnaireEntityInterface }
  ]

  field :id, !types.ID, "ID of this meeting"
  field :reference, !types.String, "Reference for this meeting"
  field :title, !Decidim::Core::TranslatedFieldType, "The title of this meeting."
  field :description, Decidim::Core::TranslatedFieldType, "The description of this meeting."
  field :startTime, !Decidim::Core::DateTimeType, "The time this meeting starts", property: :start_time
  field :endTime, !Decidim::Core::DateTimeType, "The time this meeting ends", property: :end_time
  field :author, Decidim::Core::AuthorInterface, "If specified, the author of this meeting"
  field :agenda, AgendaType, "Agenda for this meeting, if available" do
    resolve ->(meeting, _args, _ctx) {
      meeting.agenda if meeting.agenda&.visible?
    }
  end

  field :closed, !types.Boolean, "Whether this meeting is closed or not.", property: :closed?
  field :closingReport, Decidim::Core::TranslatedFieldType, "The closing report of this meeting.", property: :closing_report
  field :attendingOrganizations, types.String, "list of attending organizations", property: :attending_organizations
  field :attendeeCount, types.Int, "Amount of attendees to this meeting", property: :attendees_count
  field :contributionCount, types.Int, "Amount of contributions to this meeting", property: :contributions_count
  field :minutes, MinutesType, "Minutes for this meeting, if available" do
    resolve ->(meeting, _args, _ctx) {
      meeting.minutes if meeting.minutes&.visible?
    }
  end
  field :privateMeeting, !types.Boolean, "Whether the meeting is private or not (it can only be true if transparent)", property: :private_meeting
  field :transparent, !types.Boolean, "For private meetings, information is public if transparent", property: :transparent
  field :registrationsEnabled, !types.Boolean, "Whether the registrations are enabled or not", property: :registrations_enabled
  field :registrationTerms, Decidim::Core::TranslatedFieldType, "The registration terms", property: :registration_terms
  field :remainingSlots, types.Int, "Amount of slots available for this meeting", property: :remaining_slots
  field :registrationFormEnabled, !types.Boolean, "Whether the registrations have a form or not", property: :registration_form_enabled
  field :registrationForm, Decidim::Forms::QuestionnaireType do
    description "If registration requires to fill a form, this is the questionnaire"
    resolve ->(meeting, _args, _ctx) {
      meeting.questionnaire if meeting.registration_form_enabled?
    }
  end
  field :location, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)"
  field :locationHints, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)", property: :location_hints
  field :address, types.String, "The physical address of this meeting (used for geolocation)"
  field :coordinates, Decidim::Core::CoordinatesType, "Physical coordinates for this meeting" do
    resolve ->(meeting, _args, _ctx) {
      [meeting.latitude, meeting.longitude]
    }
  end
end
MinutesType =
GraphQL::ObjectType.define do
  name "MeetingMinutes"
  description "A meeting minutes"

  field :id, !types.ID, "The ID for the minutes"
  field :description, Decidim::Core::TranslatedFieldType, "The description for the minutes"
  field :videoUrl, types.String, "URL for the video of the session, if any", property: :video_url
  field :audioUrl, types.String, "URL for the audio of the session, if any", property: :audio_url
  # probably useful in the future, when handling user permissions
  # field :visible, !types.Boolean, "Whether this minutes is public or not", property: :visible

  field :createdAt, Decidim::Core::DateTimeType do
    description "The date and time this minutes was created"
    property :created_at
  end
  field :updatedAt, Decidim::Core::DateTimeType do
    description "The date and time this minutes was updated"
    property :updated_at
  end
end
ServiceType =
GraphQL::ObjectType.define do
  name "MeetingService"
  description "A meeting service"

  field :title, Decidim::Core::TranslatedFieldType, "The title for the service"
  field :description, Decidim::Core::TranslatedFieldType, "The description for the service"
end
MeetingsType =
GraphQL::ObjectType.define do
  interfaces [-> { Decidim::Core::ComponentInterface }]

  name "Meetings"
  description "A meetings component of a participatory space."

  connection :meetings, MeetingType.connection_type do
    resolve ->(component, _args, _ctx) {
              MeetingsTypeHelper.base_scope(component).includes(:component)
            }
  end

  field(:meeting, MeetingType) do
    argument :id, !types.ID

    resolve ->(component, args, _ctx) {
      MeetingsTypeHelper.base_scope(component).find_by(id: args[:id])
    }
  end
end
LinkedResourcesInterface =

This interface represents all linked resources available in the module meetings

GraphQL::InterfaceType.define do
  name "MeetinsLinkedResourcewInterface"
  description "An interface that can be used with Resourceable models."

  field :proposalsFromMeeting, !types[Decidim::Proposals::ProposalType], "Proposals created in this meeting" do
    resolve ->(meeting, _args, _ctx) {
      meeting.linked_resources(:proposals, :proposals_from_meeting)
    }
  end
end
AgendaItemType =
GraphQL::ObjectType.define do
  name "MeetingAgendaItem"
  description "A meeting agenda item"

  field :id, !types.ID, "The ID for this agenda item"
  field :title, Decidim::Core::TranslatedFieldType, "The title for this agenda item"
  field :description, Decidim::Core::TranslatedFieldType, "The description for this agenda item"
  field :items, !types[AgendaItemType], "Sub-items (children) of this agenda item", property: :agenda_item_children
  field :parent, AgendaItemType, "Parent agenda item, if available"
  field :agenda, AgendaType, "Belonging agenda"
  field :duration, !types.Int, "Duration in number of minutes for this item in this agenda"
  field :position, !types.Int, "Order position for this agenda item"

  field :createdAt, Decidim::Core::DateTimeType do
    description "The date and time this agenda item was created"
    property :created_at
  end
  field :updatedAt, Decidim::Core::DateTimeType do
    description "The date and time this agenda item was updated"
    property :updated_at
  end
end

Class Method Summary collapse

Class Method Details

.versionObject



6
7
8
# File 'lib/decidim/meetings/version.rb', line 6

def self.version
  "0.23.5"
end