decidim-meetings 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/meetings/admin/create_meeting.rb +6 -17
  3. data/app/commands/decidim/meetings/admin/update_meeting.rb +6 -7
  4. data/app/controllers/decidim/meetings/application_controller.rb +1 -0
  5. data/app/controllers/decidim/meetings/meetings_controller.rb +14 -9
  6. data/app/forms/decidim/meetings/admin/meeting_form.rb +12 -1
  7. data/app/helpers/decidim/meetings/admin/application_helper.rb +1 -1
  8. data/app/helpers/decidim/meetings/application_helper.rb +2 -1
  9. data/app/helpers/decidim/meetings/map_helper.rb +10 -32
  10. data/app/models/decidim/meetings/meeting.rb +2 -1
  11. data/app/services/decidim/meetings/meeting_search.rb +0 -5
  12. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +5 -3
  13. data/app/views/decidim/meetings/meetings/_filters.html.erb +5 -3
  14. data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +1 -1
  15. data/app/views/decidim/meetings/meetings/_meetings.html.erb +11 -1
  16. data/app/views/decidim/meetings/meetings/_tags.html.erb +1 -1
  17. data/app/views/decidim/meetings/meetings/index.html.erb +27 -32
  18. data/app/views/decidim/meetings/meetings/index.js.erb +2 -2
  19. data/app/views/decidim/meetings/meetings/show.html.erb +2 -15
  20. data/config/i18n-tasks.yml +1 -1
  21. data/config/locales/ca.yml +18 -3
  22. data/config/locales/en.yml +20 -3
  23. data/config/locales/es.yml +18 -3
  24. data/config/locales/eu.yml +75 -1
  25. data/config/locales/fi.yml +98 -0
  26. data/db/migrate/20170215132546_add_reference_to_meetings.rb +7 -0
  27. data/lib/decidim/meetings/admin_engine.rb +0 -26
  28. data/lib/decidim/meetings/list_engine.rb +1 -9
  29. metadata +14 -45
  30. data/app/assets/config/decidim_meetings_manifest.js +0 -2
  31. data/app/assets/javascripts/decidim/meetings/map.js.es6.erb +0 -97
  32. data/app/assets/stylesheets/decidim/meetings/map.css +0 -3
  33. data/app/services/decidim/meetings/static_map_generator.rb +0 -50
  34. data/app/views/decidim/meetings/meetings/_address_details.html.erb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8042c1ee86056372caec282e1b3e663492cfa664
4
- data.tar.gz: 76a12945a27cc259cec4131655c7630fed8bb142
3
+ metadata.gz: 9d6c1f40dbb0175a5cd5c11bc88557d06d66b89c
4
+ data.tar.gz: f2da758bcd9b1737ab28eecce25eff1b37fc8f97
5
5
  SHA512:
6
- metadata.gz: 46eb80f168fe576614772d45ed418e0301ede6628e60dc7ec7c874b3191c60ba8aeb0681fad4820a79036713fd65088a2db87c5c9a6a027d095120bcd2a80e75
7
- data.tar.gz: 193d415e8a9a3cb445ee1392c4fb4d4c509aad59255ddf8d0e865ea7195f3eb31d8ae57fc422fc54f835e43bd74fe5cfcff0544d4c2f59d1ca08a7133d0fab4d
6
+ metadata.gz: 7079774eb36091ab6fe3efed02111e85e32673449eb6565cbb43aae81555658af56c817bc44d2d559da164358c1a75a3d48ab31efff19b97424e3591e1be16af
7
+ data.tar.gz: 55329e0fbf37991eb434095e4ae2c6facbf37d8cf41b20cfc676aefb58967de57884b5db87cb94a6dfcc9652846f004594ec0846a9c6410b85f641e97fc8c294
@@ -15,17 +15,14 @@ module Decidim
15
15
  def call
16
16
  return broadcast(:invalid) if @form.invalid?
17
17
 
18
- build_meeting
19
- return broadcast(:invalid) if Decidim.geocoder.present? && !geocode_meeting
20
- create_meeting
21
-
22
- broadcast(:ok)
18
+ create_meeting!
19
+ broadcast(:ok, @meeting)
23
20
  end
24
21
 
25
22
  private
26
23
 
27
- def build_meeting
28
- @meeting = Meeting.new(
24
+ def create_meeting!
25
+ @meeting = Meeting.create!(
29
26
  scope: @form.scope,
30
27
  category: @form.category,
31
28
  title: @form.title,
@@ -33,21 +30,13 @@ module Decidim
33
30
  end_time: @form.end_time,
34
31
  start_time: @form.start_time,
35
32
  address: @form.address,
33
+ latitude: @form.latitude,
34
+ longitude: @form.longitude,
36
35
  location: @form.location,
37
36
  location_hints: @form.location_hints,
38
37
  feature: @form.current_feature
39
38
  )
40
39
  end
41
-
42
- def geocode_meeting
43
- result = @meeting.geocode
44
- @form.errors.add :address, :invalid unless result
45
- result
46
- end
47
-
48
- def create_meeting
49
- @meeting.save!
50
- end
51
40
  end
52
41
  end
53
42
  end
@@ -20,17 +20,14 @@ module Decidim
20
20
  def call
21
21
  return broadcast(:invalid) if @form.invalid?
22
22
 
23
- change_meeting
24
- return broadcast(:invalid) if Decidim.geocoder.present? && @meeting.address_changed? && !geocode_meeting
25
- update_meeting
26
-
27
- broadcast(:ok)
23
+ update_meeting!
24
+ broadcast(:ok, @meeting)
28
25
  end
29
26
 
30
27
  private
31
28
 
32
- def change_meeting
33
- @meeting.assign_attributes(
29
+ def update_meeting!
30
+ @meeting.update_attributes!(
34
31
  scope: @form.scope,
35
32
  category: @form.category,
36
33
  title: @form.title,
@@ -38,6 +35,8 @@ module Decidim
38
35
  end_time: @form.end_time,
39
36
  start_time: @form.start_time,
40
37
  address: @form.address,
38
+ latitude: @form.latitude,
39
+ longitude: @form.longitude,
41
40
  location: @form.location,
42
41
  location_hints: @form.location_hints
43
42
  )
@@ -8,6 +8,7 @@ module Decidim
8
8
  # Note that it inherits from `Decidim::Components::BaseController`, which
9
9
  # override its layout and provide all kinds of useful methods.
10
10
  class ApplicationController < Decidim::Features::BaseController
11
+ helper Decidim::Meetings::ApplicationHelper
11
12
  end
12
13
  end
13
14
  end
@@ -8,15 +8,24 @@ module Decidim
8
8
 
9
9
  helper_method :meetings, :geocoded_meetings, :meeting
10
10
 
11
- def index; end
12
-
13
- def static_map
14
- @meeting = Meeting.where(feature: current_feature).find(params[:id])
15
- send_data StaticMapGenerator.new(@meeting).data, type: "image/jpeg", disposition: "inline"
11
+ def index
12
+ if search.results.empty? && params.dig("filter", "date") != "past"
13
+ @past_meetings = search_klass.new(search_params.merge(date: "past"))
14
+ unless @past_meetings.results.empty?
15
+ params[:filter] ||= {}
16
+ params[:filter][:date] = "past"
17
+ @forced_past_meetings = true
18
+ @search = @past_meetings
19
+ end
20
+ end
16
21
  end
17
22
 
18
23
  private
19
24
 
25
+ def meeting
26
+ @meeting ||= Meeting.where(feature: current_feature).find(params[:id])
27
+ end
28
+
20
29
  def meetings
21
30
  @meetings ||= search.results.page(params[:page]).per(12)
22
31
  end
@@ -25,10 +34,6 @@ module Decidim
25
34
  @geocoded_meetings ||= search.results.select(&:geocoded?)
26
35
  end
27
36
 
28
- def meeting
29
- @meeting ||= Meeting.where(feature: current_feature).find(params[:id])
30
- end
31
-
32
37
  def search_klass
33
38
  MeetingSearch
34
39
  end
@@ -11,6 +11,8 @@ module Decidim
11
11
  translatable_attribute :location, String
12
12
  translatable_attribute :location_hints, String
13
13
  attribute :address, String
14
+ attribute :latitude, Float
15
+ attribute :longitude, Float
14
16
  attribute :start_time, Decidim::Attributes::TimeWithZone
15
17
  attribute :end_time, Decidim::Attributes::TimeWithZone
16
18
  attribute :decidim_scope_id, Integer
@@ -20,6 +22,7 @@ module Decidim
20
22
  validates :description, translatable_presence: true
21
23
  validates :location, translatable_presence: true
22
24
  validates :address, presence: true
25
+ validates :address, geocoding: true, if: -> { Decidim.geocoder.present? }
23
26
  validates :start_time, presence: true, date: { before: :end_time }
24
27
  validates :end_time, presence: true, date: { after: :start_time }
25
28
 
@@ -27,15 +30,23 @@ module Decidim
27
30
  validates :scope, presence: true, if: ->(form) { form.decidim_scope_id.present? }
28
31
  validates :category, presence: true, if: ->(form) { form.decidim_category_id.present? }
29
32
 
33
+ def process_scope
34
+ current_feature.participatory_process.scope
35
+ end
36
+
30
37
  def scope
31
38
  return unless current_feature
32
- @scope ||= current_feature.scopes.where(id: decidim_scope_id).first
39
+ @scope ||= process_scope || current_feature.scopes.where(id: decidim_scope_id).first
33
40
  end
34
41
 
35
42
  def category
36
43
  return unless current_feature
37
44
  @category ||= current_feature.categories.where(id: decidim_category_id).first
38
45
  end
46
+
47
+ def feature
48
+ current_feature
49
+ end
39
50
  end
40
51
  end
41
52
  end
@@ -5,7 +5,7 @@ module Decidim
5
5
  # Custom helpers, scoped to the meetings admin engine.
6
6
  #
7
7
  module ApplicationHelper
8
- include MapHelper
8
+ include Decidim::MapHelper
9
9
  end
10
10
  end
11
11
  end
@@ -5,7 +5,8 @@ module Decidim
5
5
  #
6
6
  module ApplicationHelper
7
7
  include PaginateHelper
8
- include MapHelper
8
+ include Decidim::MapHelper
9
+ include Decidim::Meetings::MapHelper
9
10
  end
10
11
  end
11
12
  end
@@ -1,45 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
  module Decidim
3
3
  module Meetings
4
- # This helper include some methods for rendering meetings static and dynamic maps.
4
+ # This helper include some methods for rendering meetings dynamic maps.
5
5
  module MapHelper
6
- # Renders a link to openstreetmaps with the meeting latitude and longitude.
7
- # The link's content is a static map image.
8
- #
9
- # meeting - A Decidim::Meetings::Meeting object
10
- # options - An optional hash of options (default: { zoom: 17 })
11
- # * zoom: A number to represent the zoom value of the map
12
- def static_map_link(meeting, options = {})
13
- if meeting.geocoded?
14
- zoom = options[:zoom] || 17
15
- latitude = meeting.latitude
16
- longitude = meeting.longitude
17
-
18
- map_url = "https://www.openstreetmap.org/?mlat=#{latitude}&mlon=#{longitude}#map=#{zoom}/#{latitude}/#{longitude}"
19
-
20
- link_to map_url, target: "_blank" do
21
- image_tag decidim_meetings.static_map_meeting_path(feature_id: meeting.feature,
22
- participatory_process_id: meeting.feature.participatory_process,
23
- id: meeting)
24
- end
25
- end
26
- end
27
-
28
6
  # Serialize a collection of geocoded meetings to be used by the dynamic map component
29
7
  #
30
8
  # geocoded_meetings - A collection of geocoded meetings
31
9
  def meetings_data_for_map(geocoded_meetings)
32
10
  geocoded_meetings.map do |meeting|
33
11
  meeting.slice(:latitude, :longitude, :address).merge(title: translated_attribute(meeting.title),
34
- description: translated_attribute(meeting.description),
35
- startTimeDay: l(meeting.start_time, format: "%d"),
36
- startTimeMonth: l(meeting.start_time, format: "%B"),
37
- startTimeYear: l(meeting.start_time, format: "%Y"),
38
- startTime: "#{meeting.start_time.strftime("%H:%M")} - #{meeting.end_time.strftime("%H:%M")}",
39
- icon: icon("meetings", width: 40, height: 70, remove_icon_class: true),
40
- location: translated_attribute(meeting.location),
41
- locationHints: translated_attribute(meeting.location_hints),
42
- link: meeting_path(meeting))
12
+ description: translated_attribute(meeting.description),
13
+ startTimeDay: l(meeting.start_time, format: "%d"),
14
+ startTimeMonth: l(meeting.start_time, format: "%B"),
15
+ startTimeYear: l(meeting.start_time, format: "%Y"),
16
+ startTime: "#{meeting.start_time.strftime("%H:%M")} - #{meeting.end_time.strftime("%H:%M")}",
17
+ icon: icon("meetings", width: 40, height: 70, remove_icon_class: true),
18
+ location: translated_attribute(meeting.location),
19
+ locationHints: translated_attribute(meeting.location_hints),
20
+ link: meeting_path(meeting))
43
21
  end
44
22
  end
45
23
  end
@@ -8,6 +8,7 @@ module Decidim
8
8
  include Decidim::Resourceable
9
9
  include Decidim::HasAttachments
10
10
  include Decidim::HasFeature
11
+ include Decidim::HasReference
11
12
  include Decidim::HasScope
12
13
  include Decidim::HasCategory
13
14
 
@@ -15,7 +16,7 @@ module Decidim
15
16
 
16
17
  validates :title, presence: true
17
18
 
18
- geocoded_by :address
19
+ geocoded_by :address, http_headers: lambda { |proposal| { "Referer" => proposal.feature.organization.host } }
19
20
 
20
21
  def closed?
21
22
  closed_at.present?
@@ -29,11 +29,6 @@ module Decidim
29
29
  end
30
30
  end
31
31
 
32
- # Handle the scope_id filter
33
- def search_scope_id
34
- query.where(decidim_scope_id: scope_id)
35
- end
36
-
37
32
  private
38
33
 
39
34
  # Internal: builds the needed query to search for a text in the organization's
@@ -26,9 +26,11 @@
26
26
  <%= form.datetime_field :end_time %>
27
27
  </div>
28
28
 
29
- <div class="field" >
30
- <%= form.collection_select :decidim_scope_id, current_organization.scopes, :id, :name, include_blank: true %>
31
- </div>
29
+ <% if !@form.process_scope %>
30
+ <div class="field" >
31
+ <%= form.collection_select :decidim_scope_id, organization_scopes, :id, :name %>
32
+ </div>
33
+ <% end %>
32
34
 
33
35
  <div class="field" >
34
36
  <%= form.categories_select :decidim_category_id, current_participatory_process.categories, prompt: "", disable_parents: false %>
@@ -12,10 +12,12 @@
12
12
  </div>
13
13
  </div>
14
14
 
15
- <%= form.collection_radio_buttons :date, [["upcoming", t(".upcoming")], ["past", t(".past")]], :first, :last, legend_title: t(".date") %>
15
+ <% unless @forced_past_meetings %>
16
+ <%= form.collection_radio_buttons :date, [["upcoming", t(".upcoming")], ["past", t(".past")]], :first, :last, legend_title: t(".date") %>
17
+ <% end %>
16
18
 
17
- <% if current_organization.scopes.any? %>
18
- <%= form.collection_check_boxes :scope_id, current_organization.scopes, lambda {|scope| scope.id.to_s}, :name, legend_title: t(".scopes") %>
19
+ <% if !current_participatory_process.scope && current_organization.scopes.any? %>
20
+ <%= form.collection_check_boxes :scope_id, search_organization_scopes, lambda {|scope| scope.id.to_s}, :name, legend_title: t(".scopes") %>
19
21
  <% end %>
20
22
 
21
23
  <% if current_feature.categories.any? %>
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div class="reveal" id="filter-box" data-reveal>
9
9
  <div class="reveal__header">
10
- <h3 class="reveal__title"><%= t ".filter_for" %>:</h3>
10
+ <h3 class="reveal__title"><%= t ".filter_by" %>:</h3>
11
11
  <button class="close-button" data-close aria-label="<%= t(".close_modal") %>" type="button">
12
12
  <span aria-hidden="true">&times;</span>
13
13
  </button>
@@ -1,3 +1,13 @@
1
+ <% if @forced_past_meetings %>
2
+ <div class="callout warning">
3
+ <%= t ".upcoming_meetings_warning" %>
4
+ </div>
5
+ <% elsif meetings.length == 0 %>
6
+ <div class="callout warning">
7
+ <%= t ".no_meetings_warning" %>
8
+ </div>
9
+ <% end %>
10
+
1
11
  <div class="row small-up-1 medium-up-2 card-grid">
2
12
  <% meetings.each do |meeting| %>
3
13
  <div class="column">
@@ -13,7 +23,7 @@
13
23
  <div class="address__icon">
14
24
  <%= icon "meetings", remove_icon_class: true, width: 40, height: 70 %>
15
25
  </div>
16
- <%= render partial: "address_details", locals: { meeting: meeting } %>
26
+ <%= render partial: "decidim/shared/address_details", locals: { icon_name: "meetings", geolocalizable: meeting } %>
17
27
  </div>
18
28
  </div>
19
29
  </article>
@@ -3,7 +3,7 @@
3
3
  <% if meeting.category.present? %>
4
4
  <li><%= link_to translated_attribute(meeting.category.name), decidim_meetings.meetings_path(filter: { category_id: meeting.category.id }) %></li>
5
5
  <% end %>
6
- <% if meeting.scope.present? %>
6
+ <% if !current_participatory_process.scope && meeting.scope.present? %>
7
7
  <li><%= link_to meeting.scope.name, decidim_meetings.meetings_path(filter: { scope_id: [meeting.scope.id] }) %></li>
8
8
  <% end %>
9
9
  </ul>
@@ -1,40 +1,35 @@
1
- <% if Decidim.geocoder.present? %>
2
- <div class="row column">
3
- <div class="google-map" id="meetings-map" data-meetings="<%= meetings_data_for_map(geocoded_meetings).to_json %>" data-here-app-id="<%= Decidim.geocoder[:here_app_id] %>" data-here-app-code="<%= Decidim.geocoder[:here_app_code] %>">
4
- </div>
5
-
6
- <template id="meeting-popup">
7
- <div class="map-info__content">
8
- <h3>${title}</h3>
9
- <div id="bodyContent">
10
- <p>{{html description}}</p>
11
- <div class="map__date-adress">
12
- <div class="card__datetime">
13
- <div class="card__datetime__date">
14
- ${startTimeDay} <span class="card__datetime__month">${startTimeMonth} ${startTimeYear}</span>
15
- </div>
16
- <div class="card__datetime__time">${starTime}</div>
17
- </div>
18
- <div class="address card__extra">
19
- <div class="address__icon">{{html icon}}</div>
20
- <div class="address__details">
21
- <strong>{{html location}}</strong><br />
22
- <span>${address}</span><br />
23
- <span>{{html locationHints}}</span>
24
- </div>
1
+ <%= dynamic_map_for meetings_data_for_map(geocoded_meetings) do %>
2
+ <template id="marker-popup">
3
+ <div class="map-info__content">
4
+ <h3>${title}</h3>
5
+ <div id="bodyContent">
6
+ <p>{{html description}}</p>
7
+ <div class="map__date-adress">
8
+ <div class="card__datetime">
9
+ <div class="card__datetime__date">
10
+ ${startTimeDay} <span class="card__datetime__month">${startTimeMonth} ${startTimeYear}</span>
25
11
  </div>
12
+ <div class="card__datetime__time">${starTime}</div>
26
13
  </div>
27
- <div class="map-info__button">
28
- <a href="${link}" class="button button--sc">
29
- <%= t('.view_meeting') %>
30
- </a>
14
+ <div class="address card__extra">
15
+ <div class="address__icon">{{html icon}}</div>
16
+ <div class="address__details">
17
+ <strong>{{html location}}</strong><br />
18
+ <span>${address}</span><br />
19
+ <span>{{html locationHints}}</span>
20
+ </div>
31
21
  </div>
32
22
  </div>
23
+ <div class="map-info__button">
24
+ <a href="${link}" class="button button--sc">
25
+ <%= t('.view_meeting') %>
26
+ </a>
27
+ </div>
33
28
  </div>
34
- </template>
35
- <%= stylesheet_link_tag "decidim/meetings/map" %>
36
- <%= javascript_include_tag "decidim/meetings/map" %>
37
- </div>
29
+ </div>
30
+ </template>
31
+ <%= stylesheet_link_tag "decidim/map" %>
32
+ <%= javascript_include_tag "decidim/map" %>
38
33
  <% end %>
39
34
 
40
35
  <div class="row">
@@ -2,7 +2,7 @@ var $meetings = $('#meetings');
2
2
 
3
3
  $meetings.html('<%= j(render partial: "meetings") %>');
4
4
 
5
- window.DecidimMeetings.currentMap = window.DecidimMeetings.loadMap(
6
- 'meetings-map',
5
+ window.Decidim.currentMap = window.Decidim.loadMap(
6
+ 'map',
7
7
  JSON.parse('<%= escape_javascript meetings_data_for_map(geocoded_meetings).to_json.html_safe %>')
8
8
  );
@@ -45,26 +45,13 @@
45
45
  </div>
46
46
  </div>
47
47
  <% end %>
48
+ <%= feature_reference(meeting) %>
48
49
  <%= render partial: "decidim/shared/share_modal" %>
49
50
  </div>
50
51
  <div class="columns mediumlarge-8 mediumlarge-pull-4">
51
52
  <div class="section">
52
53
  <p><%== translated_attribute meeting.description %></p>
53
- <div class="card card--secondary">
54
- <div class="card__content address">
55
- <div class="address__info">
56
- <div class="address__icon">
57
- <%= icon "meetings", width: 40, height: 70 %>
58
- </div>
59
- <%= render partial: "address_details", locals: { meeting: meeting } %>
60
- </div>
61
- <% if Decidim.geocoder.present? %>
62
- <div class="address__map">
63
- <%= static_map_link(meeting) %>
64
- </div>
65
- <% end %>
66
- </div>
67
- </div>
54
+ <%= render partial: "decidim/shared/static_map", locals: { icon_name: "meetings", geolocalizable: meeting } %>
68
55
  <%= render partial: "tags", locals: { meeting: meeting } %>
69
56
  </div>
70
57
  <% if meeting.closed? %>
@@ -2,5 +2,5 @@ base_locale: en
2
2
  locales: [en]
3
3
  ignore_unused:
4
4
  - "decidim.features.meetings.name"
5
- - "activemodel.attributes.close_meeting.*"
5
+ - "activemodel.attributes.*"
6
6
  - "decidim.resource_links.*"
@@ -7,6 +7,16 @@ ca:
7
7
  closing_report: Informe
8
8
  contributions_count: Nombre de contribucions
9
9
  proposal_ids: Propostes creades en una trobada
10
+ meeting:
11
+ adress: Adreça
12
+ decidim_category_id: Categoria
13
+ decidim_scope_id: Àmbit
14
+ description: Descripció
15
+ end_time: Hora de finalització
16
+ location: Ubicació
17
+ location_hints: Detalls d'ubicació
18
+ start_time: Hora d'inici
19
+ title: Editar trobada
10
20
  decidim:
11
21
  features:
12
22
  meetings:
@@ -59,10 +69,13 @@ ca:
59
69
  filters_small_view:
60
70
  close_modal: Tancar finestra
61
71
  filter: Filtra
62
- filter_for: Filtra per
72
+ filter_by: Filtra per
63
73
  unfold: Desplegar
64
74
  index:
65
75
  view_meeting: Veure trobada
76
+ meetings:
77
+ no_meetings_warning: No hi ha trobades que coincideixin amb el criteri de cerca o no hi ha cap trobada programada.
78
+ upcoming_meetings_warning: Actualment no hi ha trobades programades, però pots veure les anteriors trobades.
66
79
  show:
67
80
  attendees: Nombre d'assistents
68
81
  contributions: Nombre d'aportacions
@@ -78,6 +91,8 @@ ca:
78
91
  title: Títol
79
92
  resource_links:
80
93
  meetings_through_proposals:
81
- results: 'Resultats relacionats:'
94
+ meeting_results: 'Resultats relacionats:'
95
+ result_meetings: 'Trobades relacionades:'
82
96
  proposals_from_meeting:
83
- proposals: Propostes relacionades
97
+ meeting_proposals: 'Propostes relacionades:'
98
+ proposal_meetings: 'Trobades relacionades:'
@@ -8,6 +8,16 @@ en:
8
8
  closing_report: Report
9
9
  contributions_count: Number of contributions
10
10
  proposal_ids: Proposals created in the meeting
11
+ meeting:
12
+ adress: Adress
13
+ decidim_category_id: Category
14
+ decidim_scope_id: Scope
15
+ description: Description
16
+ end_time: End Time
17
+ location: Location
18
+ location_hints: Location hints
19
+ start_time: Start Time
20
+ title: Title
11
21
  decidim:
12
22
  features:
13
23
  meetings:
@@ -60,10 +70,15 @@ en:
60
70
  filters_small_view:
61
71
  close_modal: Close modal
62
72
  filter: Filter
63
- filter_for: Filter by
73
+ filter_by: Filter by
64
74
  unfold: Unfold
65
75
  index:
66
76
  view_meeting: View meeting
77
+ meetings:
78
+ no_meetings_warning: No meetings match your search criteria or there isn't
79
+ any meeting scheduled.
80
+ upcoming_meetings_warning: Currently, there are no scheduled meetings, but
81
+ here you can find all the past meetings listed.
67
82
  show:
68
83
  attendees: Attendees count
69
84
  contributions: Contributions count
@@ -79,6 +94,8 @@ en:
79
94
  title: Title
80
95
  resource_links:
81
96
  meetings_through_proposals:
82
- results: 'Related results:'
97
+ meeting_results: 'Related results:'
98
+ result_meetings: 'Related meetings:'
83
99
  proposals_from_meeting:
84
- proposals: Related proposals
100
+ meeting_proposals: 'Related proposals:'
101
+ proposal_meetings: 'Related meetings:'
@@ -7,6 +7,16 @@ es:
7
7
  closing_report: Informe
8
8
  contributions_count: Número de contribuciones
9
9
  proposal_ids: Propuestas creadas en el encuentro
10
+ meeting:
11
+ adress: Dirección
12
+ decidim_category_id: Categoría
13
+ decidim_scope_id: Ámbito
14
+ description: Descripción
15
+ end_time: Hora de finalización
16
+ location: Ubicación
17
+ location_hints: Pistas de ubicación
18
+ start_time: Hora de inicio
19
+ title: Título
10
20
  decidim:
11
21
  features:
12
22
  meetings:
@@ -59,10 +69,13 @@ es:
59
69
  filters_small_view:
60
70
  close_modal: Cerrar ventana
61
71
  filter: Filtrar
62
- filter_for: Filtrar por
72
+ filter_by: Filtrar por
63
73
  unfold: Desplegar
64
74
  index:
65
75
  view_meeting: Ver encuentro
76
+ meetings:
77
+ no_meetings_warning: No hay encuentros que coincidan con el criterio de búsqueda o no hay ningún encuentro programado.
78
+ upcoming_meetings_warning: Actualmente no hay encuentros programados, pero puedes ver los encuentros anteriores.
66
79
  show:
67
80
  attendees: Número de asistentes
68
81
  contributions: Número de contribuciones
@@ -78,6 +91,8 @@ es:
78
91
  title: Título
79
92
  resource_links:
80
93
  meetings_through_proposals:
81
- results: 'Resultados relacionados:'
94
+ meeting_results: 'Resultados relacionados:'
95
+ result_meetings: 'Encuentros relacionados:'
82
96
  proposals_from_meeting:
83
- proposals: Propuestas relacionadas
97
+ meeting_proposals: 'Propuestas relacionadas:'
98
+ proposal_meetings: 'Encuentros relacionados:'
@@ -1,5 +1,79 @@
1
1
  eu:
2
+ activemodel:
3
+ attributes:
4
+ close_meeting:
5
+ attendees_count: Bertaratuen kopurua
6
+ attending_organizations: 'Parte hartu duten erakundeen zerrenda:'
7
+ closing_report: Txostena
8
+ contributions_count: Ekarpen-kopurua
9
+ proposal_ids: Topaketan sortutako proposamenak
2
10
  decidim:
11
+ features:
12
+ meetings:
13
+ name: Topaketa-zerrenda
3
14
  meetings:
4
15
  actions:
5
- close: Itxi
16
+ attachments: Fitxategi erantsiak
17
+ close: Itxi
18
+ confirm_destroy: Ziur zaude topaketa hau ezabatu nahi duzula?
19
+ destroy: Garbitu
20
+ edit: Editatu
21
+ new: '%{name} berria'
22
+ title: Ekintzak
23
+ admin:
24
+ meeting_closes:
25
+ edit:
26
+ close: Itxi
27
+ title: Itxi topaketa
28
+ meetings:
29
+ close:
30
+ invalid: Arazo bat izan da topaketa hau ixtean.
31
+ success: Topaketa ongi itxi da
32
+ create:
33
+ invalid: Arazo bat izan da topaketa hau sortzean.
34
+ success: Topaketa ongi sortu da
35
+ destroy:
36
+ success: Topaketa zuzen ezabatu da.
37
+ edit:
38
+ title: Editatu topaketa
39
+ update: Eguneratu topaketa
40
+ index:
41
+ title: Topaketa-zerrenda
42
+ new:
43
+ create: Sortu topaketa
44
+ title: Topaketa berria
45
+ update:
46
+ invalid: Arazo bat izan da topaketa hau eguneratzean.
47
+ success: Topaketa zuzen eguneratu da.
48
+ models:
49
+ meeting:
50
+ name: Topaketa
51
+ meetings:
52
+ filters:
53
+ category: Kategoria
54
+ date: Jaioteguna
55
+ scopes: Esparruak
56
+ search: Bilatu
57
+ filters_small_view:
58
+ close_modal: Itxi leihoa
59
+ filter: Iragazi
60
+ filter_by: 'Iragazi honen arabera:'
61
+ unfold: Zabaldu
62
+ index:
63
+ view_meeting: Ikusi topaketa
64
+ show:
65
+ attendees: Bertaratuen kopurua
66
+ contributions: Ekarpen-kopurua
67
+ meeting_report: Topaketaren txostena
68
+ organizations: Bertaratutako erakundeak
69
+ models:
70
+ meeting:
71
+ fields:
72
+ closed: Itxita
73
+ end_time: Bukaera-data
74
+ map: Mapa
75
+ start_time: Hasiera-data
76
+ title: Izenburua
77
+ resource_links:
78
+ meetings_through_proposals:
79
+ meeting_results: 'Honekin lotutako emaitzak:'
@@ -0,0 +1,98 @@
1
+ fi:
2
+ activemodel:
3
+ attributes:
4
+ close_meeting:
5
+ attendees_count: Osallistujien määrä
6
+ attending_organizations: Osallistuvien organisaatioiden lista
7
+ closing_report: Raportti
8
+ contributions_count: Kontribuutioiden määrä
9
+ proposal_ids: Ehdotusta luotu tapaamisessa
10
+ meeting:
11
+ adress: Adressi
12
+ decidim_category_id: Kategoria
13
+ decidim_scope_id: Konteksti
14
+ description: Kuvaus
15
+ end_time: Lopetusaika
16
+ location: Paikka
17
+ location_hints: Paikan tarkemmat tiedot
18
+ start_time: Aloitusaika
19
+ title: Otsikko
20
+ decidim:
21
+ features:
22
+ meetings:
23
+ name: Tapaamiset
24
+ meetings:
25
+ actions:
26
+ attachments: Liitteet
27
+ close: Sulje
28
+ confirm_destroy: Haluatko varmasti poistaa tämän tapaamisen?
29
+ destroy: Poista
30
+ edit: Muokkaa
31
+ new: Uusi %{name}
32
+ title: Toiminnot
33
+ admin:
34
+ meeting_closes:
35
+ edit:
36
+ close: Lopeta
37
+ title: Lopeta tapaaminen
38
+ meetings:
39
+ close:
40
+ invalid: Tapaamisen lopettamisessa tapahtui virhe
41
+ success: Tapaaminen onnistuneesti lopetettu
42
+ create:
43
+ invalid: Tapaamisen luonnissa tapahtui virhe
44
+ success: Tapaaminen onnistuneesti luotu
45
+ destroy:
46
+ success: Tapaaminen onnistuneesti poistettu
47
+ edit:
48
+ title: Muokkaa tapaamista
49
+ update: Päivitä tapaaminen
50
+ index:
51
+ title: Tapaamiset
52
+ new:
53
+ create: Luo tapaaminen
54
+ title: Uusi tapaaminen
55
+ update:
56
+ invalid: Tapaamisen luonnissa tapahtui virhe
57
+ success: Tapaaminen luotu onnistuneesti
58
+ models:
59
+ meeting:
60
+ name: Tapaaminen
61
+ meetings:
62
+ filters:
63
+ category: Kategoria
64
+ date: Päivämäärä
65
+ past: Menneet
66
+ scopes: Kontekstit
67
+ search: Etsi
68
+ upcoming: Tulevat
69
+ filters_small_view:
70
+ close_modal: Sulje ikkuna
71
+ filter: Suodata
72
+ filter_by: Suodata
73
+ unfold: Avaa
74
+ index:
75
+ view_meeting: Näytä tapaaminen
76
+ meetings:
77
+ no_meetings_warning: Yksikään tapaaminen ei vastaa hakukriteerejäsi tai yhtään tapaamista ei ole määritelty
78
+ upcoming_meetings_warning: Tällä hetkellä tapaamisia ei ole määritelty, mutta täältä löydät kaikki aikaisemmat tapaamiset.
79
+ show:
80
+ attendees: Osallistujamäärä
81
+ contributions: Kontribuutioiden määrä
82
+ meeting_report: Tapaamisraportti
83
+ organizations: Osallistuneet organisaatiot
84
+ models:
85
+ meeting:
86
+ fields:
87
+ closed: Suljettu
88
+ end_time: Lopetusaika
89
+ map: Kartta
90
+ start_time: Aloitusaika
91
+ title: Otsikko
92
+ resource_links:
93
+ meetings_through_proposals:
94
+ meeting_results: 'Liittyvät tulokset:'
95
+ result_meetings: 'Liittyvät tapaamiset:'
96
+ proposals_from_meeting:
97
+ meeting_proposals: 'Liittyvät ehdotukset:'
98
+ proposal_meetings: 'Liittyvät tapaamiset:'
@@ -0,0 +1,7 @@
1
+ class AddReferenceToMeetings < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :decidim_meetings_meetings, :reference, :string
4
+ Decidim::Meetings::Meeting.find_each(&:save)
5
+ change_column_null :decidim_meetings_meetings, :reference, false
6
+ end
7
+ end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- require "geocoder"
3
2
 
4
3
  module Decidim
5
4
  module Meetings
@@ -22,31 +21,6 @@ module Decidim
22
21
  def load_seed
23
22
  nil
24
23
  end
25
-
26
- initializer "decidim_meetings.geocoder" do |_app|
27
- if Decidim.geocoder.present?
28
- Geocoder.configure(
29
- # geocoding service (see below for supported options):
30
- lookup: :here,
31
-
32
- # IP address geocoding service (see below for supported options):
33
- # :ip_lookup => :maxmind,
34
-
35
- # to use an API key:
36
- api_key: [Decidim.geocoder&.fetch(:here_app_id), Decidim.geocoder&.fetch(:here_app_code)]
37
-
38
- # geocoding service request timeout, in seconds (default 3):
39
- # :timeout => 5,
40
-
41
- # set default units to kilometers:
42
- # :units => :km,
43
-
44
- # caching (see below for details):
45
- # :cache => Redis.new,
46
- # :cache_prefix => "..."
47
- )
48
- end
49
- end
50
24
  end
51
25
  end
52
26
  end
@@ -12,17 +12,9 @@ module Decidim
12
12
  isolate_namespace Decidim::Meetings
13
13
 
14
14
  routes do
15
- resources :meetings, only: [:index, :show] do
16
- member do
17
- get :static_map
18
- end
19
- end
15
+ resources :meetings, only: [:index, :show]
20
16
  root to: "meetings#index"
21
17
  end
22
-
23
- initializer "decidim_meetings.assets" do |app|
24
- app.config.assets.precompile += %w(decidim_meetings_manifest.js)
25
- end
26
18
  end
27
19
  end
28
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-meetings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-02-17 00:00:00.000000000 Z
13
+ date: 2017-03-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: decidim-core
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.5
21
+ version: 0.0.6
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 0.0.5
28
+ version: 0.0.6
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rectify
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -82,20 +82,6 @@ dependencies:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
84
  version: 1.0.1
85
- - !ruby/object:Gem::Dependency
86
- name: geocoder
87
- requirement: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: 1.4.2
92
- type: :runtime
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: 1.4.2
99
85
  - !ruby/object:Gem::Dependency
100
86
  name: httparty
101
87
  requirement: !ruby/object:Gem::Requirement
@@ -130,70 +116,56 @@ dependencies:
130
116
  requirements:
131
117
  - - '='
132
118
  - !ruby/object:Gem::Version
133
- version: 0.0.5
119
+ version: 0.0.6
134
120
  type: :development
135
121
  prerelease: false
136
122
  version_requirements: !ruby/object:Gem::Requirement
137
123
  requirements:
138
124
  - - '='
139
125
  - !ruby/object:Gem::Version
140
- version: 0.0.5
126
+ version: 0.0.6
141
127
  - !ruby/object:Gem::Dependency
142
128
  name: decidim-proposals
143
129
  requirement: !ruby/object:Gem::Requirement
144
130
  requirements:
145
131
  - - '='
146
132
  - !ruby/object:Gem::Version
147
- version: 0.0.5
133
+ version: 0.0.6
148
134
  type: :development
149
135
  prerelease: false
150
136
  version_requirements: !ruby/object:Gem::Requirement
151
137
  requirements:
152
138
  - - '='
153
139
  - !ruby/object:Gem::Version
154
- version: 0.0.5
140
+ version: 0.0.6
155
141
  - !ruby/object:Gem::Dependency
156
142
  name: decidim-admin
157
143
  requirement: !ruby/object:Gem::Requirement
158
144
  requirements:
159
145
  - - '='
160
146
  - !ruby/object:Gem::Version
161
- version: 0.0.5
147
+ version: 0.0.6
162
148
  type: :development
163
149
  prerelease: false
164
150
  version_requirements: !ruby/object:Gem::Requirement
165
151
  requirements:
166
152
  - - '='
167
153
  - !ruby/object:Gem::Version
168
- version: 0.0.5
169
- - !ruby/object:Gem::Dependency
170
- name: webmock
171
- requirement: !ruby/object:Gem::Requirement
172
- requirements:
173
- - - "~>"
174
- - !ruby/object:Gem::Version
175
- version: 2.3.2
176
- type: :development
177
- prerelease: false
178
- version_requirements: !ruby/object:Gem::Requirement
179
- requirements:
180
- - - "~>"
181
- - !ruby/object:Gem::Version
182
- version: 2.3.2
154
+ version: 0.0.6
183
155
  - !ruby/object:Gem::Dependency
184
156
  name: decidim-results
185
157
  requirement: !ruby/object:Gem::Requirement
186
158
  requirements:
187
159
  - - '='
188
160
  - !ruby/object:Gem::Version
189
- version: 0.0.5
161
+ version: 0.0.6
190
162
  type: :development
191
163
  prerelease: false
192
164
  version_requirements: !ruby/object:Gem::Requirement
193
165
  requirements:
194
166
  - - '='
195
167
  - !ruby/object:Gem::Version
196
- version: 0.0.5
168
+ version: 0.0.6
197
169
  description: ''
198
170
  email:
199
171
  - josepjaume@gmail.com
@@ -205,10 +177,7 @@ extra_rdoc_files: []
205
177
  files:
206
178
  - README.md
207
179
  - Rakefile
208
- - app/assets/config/decidim_meetings_manifest.js
209
180
  - app/assets/images/decidim/meetings/icon.svg
210
- - app/assets/javascripts/decidim/meetings/map.js.es6.erb
211
- - app/assets/stylesheets/decidim/meetings/map.css
212
181
  - app/commands/decidim/meetings/admin/close_meeting.rb
213
182
  - app/commands/decidim/meetings/admin/create_meeting.rb
214
183
  - app/commands/decidim/meetings/admin/update_meeting.rb
@@ -226,14 +195,12 @@ files:
226
195
  - app/models/decidim/meetings/application_record.rb
227
196
  - app/models/decidim/meetings/meeting.rb
228
197
  - app/services/decidim/meetings/meeting_search.rb
229
- - app/services/decidim/meetings/static_map_generator.rb
230
198
  - app/views/decidim/meetings/admin/meeting_closes/_form.html.erb
231
199
  - app/views/decidim/meetings/admin/meeting_closes/edit.html.erb
232
200
  - app/views/decidim/meetings/admin/meetings/_form.html.erb
233
201
  - app/views/decidim/meetings/admin/meetings/edit.html.erb
234
202
  - app/views/decidim/meetings/admin/meetings/index.html.erb
235
203
  - app/views/decidim/meetings/admin/meetings/new.html.erb
236
- - app/views/decidim/meetings/meetings/_address_details.html.erb
237
204
  - app/views/decidim/meetings/meetings/_datetime.html.erb
238
205
  - app/views/decidim/meetings/meetings/_filters.html.erb
239
206
  - app/views/decidim/meetings/meetings/_filters_small_view.html.erb
@@ -248,10 +215,12 @@ files:
248
215
  - config/locales/en.yml
249
216
  - config/locales/es.yml
250
217
  - config/locales/eu.yml
218
+ - config/locales/fi.yml
251
219
  - db/migrate/20161130121354_create_meetings.rb
252
220
  - db/migrate/20170110142105_close_a_meeting.rb
253
221
  - db/migrate/20170123151650_add_latitude_and_longitude_to_meetings.rb
254
222
  - db/migrate/20170129153716_remove_short_description_from_meetings.rb
223
+ - db/migrate/20170215132546_add_reference_to_meetings.rb
255
224
  - lib/decidim/meetings.rb
256
225
  - lib/decidim/meetings/admin.rb
257
226
  - lib/decidim/meetings/admin_engine.rb
@@ -1,2 +0,0 @@
1
- //= link decidim/meetings/map.js
2
- //= link decidim/meetings/map.css
@@ -1,97 +0,0 @@
1
- // = require leaflet
2
- // = require leaflet-tilelayer-here
3
- // = require leaflet-svg-icon
4
- // = require leaflet.markercluster
5
- // = require jquery-tmpl
6
- // = require_self
7
-
8
- /* globals L */
9
-
10
- L.DivIcon.SVGIcon.DecidimIcon = L.DivIcon.SVGIcon.extend({
11
- options: {
12
- fillColor: '#ef604d',
13
- opacity: 0
14
- },
15
- _createPathDescription: function() {
16
- return 'M14 1.17a11.685 11.685 0 0 0-11.685 11.685c0 11.25 10.23 20.61 10.665 21a1.5 1.5 0 0 0 2.025 0c0.435-.435 10.665-9.81 10.665-21A11.685 11.685 0 0 0 14 1.17Zm0 17.415A5.085 5.085 0 1 1 19.085 13.5 5.085 5.085 0 0 1 14 18.585Z';
17
- },
18
- _createCircle: function() {
19
- return ""
20
- }
21
- });
22
-
23
- const popupTemplateId = 'meeting-popup';
24
- $.template('meeting-popup', $(`#${popupTemplateId}`).html());
25
-
26
- const addMarkers = (meetingsData, markerClusters, map) => {
27
- const bounds = new L.LatLngBounds(meetingsData.map((meeting) => [meeting.latitude, meeting.longitude]));
28
-
29
- meetingsData.forEach((meeting) => {
30
- let marker = L.marker([meeting.latitude, meeting.longitude], {
31
- icon: new L.DivIcon.SVGIcon.DecidimIcon()
32
- });
33
- let node = document.createElement('div');
34
-
35
- $.tmpl('meeting-popup', meeting).appendTo(node);
36
-
37
- marker.bindPopup(node, {
38
- maxwidth: 640,
39
- minWidth: 500,
40
- keepInView: true,
41
- className: 'map-info'
42
- }).openPopup();
43
-
44
- markerClusters.addLayer(marker);
45
- });
46
-
47
- map.addLayer(markerClusters);
48
- map.fitBounds(bounds, { padding: [100, 100] });
49
- };
50
-
51
- const loadMap = (mapId, meetingsData) => {
52
- let markerClusters = L.markerClusterGroup();
53
- const { hereAppId, hereAppCode } = window.DecidimMeetings.mapConfiguration;
54
-
55
- if (window.DecidimMeetings.currentMap) {
56
- window.DecidimMeetings.currentMap.remove();
57
- window.DecidimMeetings.currentMap = null;
58
- }
59
-
60
- const map = L.map(mapId);
61
-
62
- L.tileLayer.here({
63
- appId: hereAppId,
64
- appCode: hereAppCode,
65
- }).addTo(map);
66
-
67
- if (meetingsData.length > 0) {
68
- addMarkers(meetingsData, markerClusters, map);
69
- } else {
70
- map.fitWorld();
71
- }
72
-
73
- map.scrollWheelZoom.disable();
74
-
75
- return map;
76
- };
77
-
78
- window.DecidimMeetings = {
79
- loadMap,
80
- currentMap: null,
81
- mapConfiguration: {}
82
- };
83
-
84
- $(() => {
85
- const mapId = 'meetings-map';
86
- const $map = $(`#${mapId}`);
87
-
88
- const meetingsData = $map.data('meetings');
89
- const hereAppId = $map.data('here-app-id');
90
- const hereAppCode = $map.data('here-app-code');
91
-
92
- window.DecidimMeetings.mapConfiguration = { hereAppId, hereAppCode };
93
-
94
- if ($map.length > 0) {
95
- window.DecidimMeetings.currentMap = loadMap(mapId, meetingsData);
96
- }
97
- });
@@ -1,3 +0,0 @@
1
- /* = require leaflet */
2
- /* = require MarkerCluster */
3
- /* = require MarkerCluster.Default */
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
- require "httparty"
3
-
4
- module Decidim
5
- module Meetings
6
- # This class generates a url to create a static map image for a geocoded meeting
7
- class StaticMapGenerator
8
- BASE_HOST = "image.maps.cit.api.here.com"
9
- BASE_PATH = "/mia/1.6/mapview"
10
-
11
- def initialize(meeting, options = {})
12
- @meeting = meeting
13
- @options = options
14
-
15
- @options[:zoom] ||= 15
16
- @options[:width] ||= 120
17
- @options[:height] ||= 120
18
- end
19
-
20
- def data
21
- return if Decidim.geocoder.nil?
22
-
23
- Rails.cache.fetch(@meeting.cache_key) do
24
- request = HTTParty.get(uri)
25
- request.body
26
- end
27
- end
28
-
29
- private
30
-
31
- def uri
32
- params = {
33
- c: "#{@meeting.latitude}, #{@meeting.longitude}",
34
- z: @options[:zoom],
35
- w: @options[:width],
36
- h: @options[:height],
37
- f: "1",
38
- app_id: Decidim.geocoder&.fetch(:here_app_id),
39
- app_code: Decidim.geocoder&.fetch(:here_app_code)
40
- }
41
-
42
- uri = URI.parse("https://#{BASE_HOST}#{BASE_PATH}").tap do |uri|
43
- uri.query = URI.encode_www_form params
44
- end
45
-
46
- uri
47
- end
48
- end
49
- end
50
- end
@@ -1,5 +0,0 @@
1
- <div class="address__details">
2
- <strong><%== translated_attribute meeting.location %></strong><br />
3
- <span><%= meeting.address %></span><br />
4
- <span><%== translated_attribute meeting.location_hints %></span>
5
- </div>