decidim-core 0.27.5 → 0.27.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/cells/decidim/activity_cell.rb +2 -2
- data/app/cells/decidim/card_cell.rb +2 -2
- data/app/cells/decidim/card_m/top.erb +1 -1
- data/app/cells/decidim/card_m_cell.rb +1 -1
- data/app/cells/decidim/follow_button_cell.rb +1 -1
- data/app/cells/decidim/notification/moderated.erb +24 -0
- data/app/cells/decidim/notification_cell.rb +5 -1
- data/app/cells/decidim/scopes_picker/scope_picker_values.erb +1 -1
- data/app/cells/decidim/tags_cell.rb +3 -1
- data/app/cells/decidim/user_profile_cell.rb +1 -1
- data/app/commands/decidim/create_omniauth_registration.rb +2 -4
- data/app/commands/decidim/messaging/reply_to_conversation.rb +3 -0
- data/app/commands/decidim/messaging/start_conversation.rb +3 -0
- data/app/controllers/concerns/decidim/devise_authentication_methods.rb +36 -0
- data/app/controllers/concerns/decidim/force_authentication.rb +1 -1
- data/app/controllers/concerns/decidim/paginable.rb +1 -1
- data/app/controllers/concerns/decidim/use_organization_time_zone.rb +1 -1
- data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -22
- data/app/controllers/decidim/devise/sessions_controller.rb +1 -24
- data/app/controllers/decidim/links_controller.rb +13 -1
- data/app/controllers/decidim/widgets_controller.rb +6 -0
- data/app/events/decidim/welcome_notification_event.rb +6 -9
- data/app/helpers/decidim/cells_paginate_helper.rb +1 -1
- data/app/helpers/decidim/check_boxes_tree_helper.rb +4 -4
- data/app/helpers/decidim/newsletters_helper.rb +83 -16
- data/app/helpers/decidim/resource_helper.rb +1 -1
- data/app/helpers/decidim/sanitize_helper.rb +9 -0
- data/app/helpers/decidim/user_profile_helper.rb +7 -2
- data/app/mailers/decidim/application_mailer.rb +40 -6
- data/app/mailers/decidim/messaging/conversation_mailer.rb +3 -72
- data/app/models/decidim/push_notification_message.rb +39 -0
- data/app/packs/images/decidim/.keep +0 -0
- data/app/packs/src/decidim/input_hashtags.js +1 -1
- data/app/packs/src/decidim/input_mentions.js +1 -1
- data/app/packs/src/decidim/input_multiple_mentions.js +1 -1
- data/app/packs/src/decidim/vizzs/index.js +1 -1
- data/app/packs/stylesheets/decidim/plugins/leaflet.scss +118 -114
- data/app/presenters/decidim/admin_log/oauth_application_resource_presenter.rb +1 -1
- data/app/presenters/decidim/admin_log/organization_presenter.rb +1 -1
- data/app/presenters/decidim/log/resource_presenter.rb +7 -1
- data/app/presenters/decidim/notification_to_mailer_presenter.rb +9 -0
- data/app/services/decidim/events_manager.rb +6 -0
- data/app/services/decidim/log/diff_changeset_calculator.rb +1 -1
- data/app/services/decidim/push_notification_message_sender.rb +36 -0
- data/app/services/decidim/send_push_notification.rb +22 -8
- data/app/views/decidim/devise/registrations/new.html.erb +2 -2
- data/app/views/decidim/links/new.html.erb +2 -0
- data/app/views/decidim/notifications_digest_mailer/_email_content.html.erb +7 -0
- data/app/views/decidim/shared/_address_details.html.erb +2 -2
- data/app/views/layouts/decidim/_js_configuration.html.erb +1 -0
- data/config/locales/ar.yml +4 -3
- data/config/locales/bg.yml +484 -1
- data/config/locales/ca.yml +23 -22
- data/config/locales/cs.yml +0 -1
- data/config/locales/de.yml +28 -27
- data/config/locales/el.yml +5 -4
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +3 -0
- data/config/locales/es-MX.yml +6 -5
- data/config/locales/es-PY.yml +6 -5
- data/config/locales/es.yml +25 -24
- data/config/locales/eu.yml +12 -2
- data/config/locales/fi-plain.yml +1 -0
- data/config/locales/fi.yml +4 -3
- data/config/locales/fr-CA.yml +5 -4
- data/config/locales/fr.yml +3 -2
- data/config/locales/ga-IE.yml +5 -0
- data/config/locales/gl.yml +3 -0
- data/config/locales/he-IL.yml +1 -0
- data/config/locales/hu.yml +41 -9
- data/config/locales/it.yml +5 -4
- data/config/locales/ja.yml +5 -3
- data/config/locales/lb.yml +5 -4
- data/config/locales/lt.yml +4 -4
- data/config/locales/lv.yml +4 -1
- data/config/locales/nl.yml +4 -1
- data/config/locales/no.yml +5 -4
- data/config/locales/pl.yml +168 -1
- data/config/locales/pt-BR.yml +113 -22
- data/config/locales/pt.yml +5 -4
- data/config/locales/ro-RO.yml +1 -3
- data/config/locales/ru.yml +13 -0
- data/config/locales/sk.yml +6 -1
- data/config/locales/sl.yml +5 -0
- data/config/locales/sv.yml +26 -3
- data/config/locales/tr-TR.yml +3 -3
- data/config/locales/uk.yml +15 -0
- data/config/locales/zh-CN.yml +0 -4
- data/config/locales/zh-TW.yml +4 -4
- data/decidim-core.gemspec +78 -0
- data/lib/decidim/acts_as_tree.rb +14 -1
- data/lib/decidim/asset_router/storage.rb +4 -0
- data/lib/decidim/attribute_encryptor.rb +6 -4
- data/lib/decidim/core/engine.rb +7 -3
- data/lib/decidim/core/test/factories.rb +314 -95
- data/lib/decidim/core/test/shared_examples/amendable/amendment_created_event_examples.rb +6 -26
- data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +8 -26
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +32 -0
- data/lib/decidim/core/test/shared_examples/embed_resource_examples.rb +187 -11
- data/lib/decidim/core/test/shared_examples/has_attachment_collections.rb +8 -6
- data/lib/decidim/core/test/shared_examples/has_attachments.rb +4 -4
- data/lib/decidim/core/test/shared_examples/has_category.rb +27 -0
- data/lib/decidim/core/test/shared_examples/has_reference.rb +1 -1
- data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +1 -2
- data/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb +6 -3
- data/lib/decidim/core/test/shared_examples/resource_locator_presenter_examples.rb +134 -0
- data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/simple_event.rb +50 -2
- data/lib/decidim/core/test.rb +1 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/core.rb +1 -0
- data/lib/decidim/engine_router.rb +17 -4
- data/lib/decidim/events/base_event.rb +9 -2
- data/lib/decidim/events/simple_event.rb +3 -17
- data/lib/decidim/form_builder.rb +13 -1
- data/lib/decidim/has_category.rb +1 -1
- data/lib/decidim/has_conversations.rb +91 -0
- data/lib/decidim/organization_settings.rb +10 -2
- data/lib/decidim/participable.rb +17 -0
- data/lib/decidim/view_model.rb +1 -0
- data/lib/decidim/webpacker/webpack/.modernizrrc +9 -0
- data/lib/premailer/adapter/decidim.rb +5 -4
- data/lib/tasks/decidim_reminders_tasks.rake +1 -0
- data/lib/tasks/upgrade/decidim_fix_categorization.rake +15 -0
- metadata +29 -27
- data/config/environment.rb +0 -3
@@ -7,23 +7,57 @@ module Decidim
|
|
7
7
|
include LocalisedMailer
|
8
8
|
include MultitenantAssetHost
|
9
9
|
after_action :set_smtp
|
10
|
+
after_action :set_from
|
10
11
|
|
11
12
|
default from: Decidim.config.mailer_sender
|
12
13
|
layout "decidim/mailer"
|
13
14
|
|
14
15
|
private
|
15
16
|
|
17
|
+
attr_reader :organization
|
18
|
+
|
16
19
|
def set_smtp
|
17
|
-
return if
|
20
|
+
return if organization.nil? || organization.smtp_settings.blank? || organization.smtp_settings.except("from", "from_label", "from_email").all?(&:blank?)
|
18
21
|
|
19
|
-
mail.from = @organization.smtp_settings["from"].presence || mail.from
|
20
22
|
mail.reply_to = mail.reply_to || Decidim.config.mailer_reply
|
21
23
|
mail.delivery_method.settings.merge!(
|
22
|
-
address:
|
23
|
-
port:
|
24
|
-
user_name:
|
25
|
-
password: Decidim::AttributeEncryptor.decrypt(
|
24
|
+
address: organization.smtp_settings["address"],
|
25
|
+
port: organization.smtp_settings["port"],
|
26
|
+
user_name: organization.smtp_settings["user_name"],
|
27
|
+
password: Decidim::AttributeEncryptor.decrypt(organization.smtp_settings["encrypted_password"])
|
26
28
|
) { |_k, o, v| v.presence || o }.compact_blank!
|
27
29
|
end
|
30
|
+
|
31
|
+
def set_from
|
32
|
+
return if organization.nil?
|
33
|
+
return if already_defined_name_in_mail?(mail.from.first)
|
34
|
+
|
35
|
+
mail.from = sender
|
36
|
+
end
|
37
|
+
|
38
|
+
def sender
|
39
|
+
return Decidim.config.mailer_sender if return_mailer_sender?
|
40
|
+
return default_sender if organization.smtp_settings.blank?
|
41
|
+
return default_sender if organization.smtp_settings["from"].nil?
|
42
|
+
return default_sender if organization.smtp_settings["from"].empty?
|
43
|
+
|
44
|
+
smtp_settings_from = organization.smtp_settings["from"]
|
45
|
+
return smtp_settings_from if already_defined_name_in_mail?(smtp_settings_from)
|
46
|
+
|
47
|
+
email_address_with_name(smtp_settings_from, organization.name)
|
48
|
+
end
|
49
|
+
|
50
|
+
def default_sender
|
51
|
+
email_address_with_name(Decidim.config.mailer_sender, organization.name)
|
52
|
+
end
|
53
|
+
|
54
|
+
def already_defined_name_in_mail?(mail_address)
|
55
|
+
# if there is an space, there is already a name in the address
|
56
|
+
mail_address.match?(/ /)
|
57
|
+
end
|
58
|
+
|
59
|
+
def return_mailer_sender?
|
60
|
+
already_defined_name_in_mail?(Decidim.config.mailer_sender) && organization.smtp_settings.present?
|
61
|
+
end
|
28
62
|
end
|
29
63
|
end
|
@@ -5,74 +5,12 @@ module Decidim
|
|
5
5
|
# A custom mailer for sending notifications to users when they receive
|
6
6
|
# private messages
|
7
7
|
class ConversationMailer < Decidim::ApplicationMailer
|
8
|
-
|
9
|
-
notification_mail(
|
10
|
-
from: originator,
|
11
|
-
to: user,
|
12
|
-
conversation: conversation,
|
13
|
-
message: conversation.messages.first.body,
|
14
|
-
action: "new_conversation"
|
15
|
-
)
|
16
|
-
end
|
17
|
-
|
18
|
-
def new_group_conversation(originator, manager, conversation, group)
|
19
|
-
notification_mail(
|
20
|
-
from: originator,
|
21
|
-
to: manager,
|
22
|
-
conversation: conversation,
|
23
|
-
message: conversation.messages.first.body,
|
24
|
-
action: "new_group_conversation",
|
25
|
-
third_party: group
|
26
|
-
)
|
27
|
-
end
|
28
|
-
|
29
|
-
def comanagers_new_conversation(group, user, conversation, manager)
|
30
|
-
notification_mail(
|
31
|
-
from: group,
|
32
|
-
to: user,
|
33
|
-
conversation: conversation,
|
34
|
-
message: conversation.messages.first.body,
|
35
|
-
action: "comanagers_new_conversation",
|
36
|
-
third_party: manager
|
37
|
-
)
|
38
|
-
end
|
39
|
-
|
40
|
-
def new_message(sender, user, conversation, message)
|
41
|
-
notification_mail(
|
42
|
-
from: sender,
|
43
|
-
to: user,
|
44
|
-
conversation: conversation,
|
45
|
-
message: message.body,
|
46
|
-
action: "new_message"
|
47
|
-
)
|
48
|
-
end
|
49
|
-
|
50
|
-
def new_group_message(sender, user, conversation, message, group)
|
51
|
-
notification_mail(
|
52
|
-
from: sender,
|
53
|
-
to: user,
|
54
|
-
conversation: conversation,
|
55
|
-
message: message.body,
|
56
|
-
action: "new_group_message",
|
57
|
-
third_party: group
|
58
|
-
)
|
59
|
-
end
|
60
|
-
|
61
|
-
def comanagers_new_message(sender, user, conversation, message, manager)
|
62
|
-
notification_mail(
|
63
|
-
from: sender,
|
64
|
-
to: user,
|
65
|
-
conversation: conversation,
|
66
|
-
message: message.body,
|
67
|
-
action: "comanagers_new_message",
|
68
|
-
third_party: manager
|
69
|
-
)
|
70
|
-
end
|
8
|
+
include HasConversations
|
71
9
|
|
72
10
|
private
|
73
11
|
|
74
12
|
# rubocop:disable Metrics/ParameterLists
|
75
|
-
def
|
13
|
+
def send_notification(from:, to:, conversation:, action:, message: nil, third_party: nil)
|
76
14
|
with_user(to) do
|
77
15
|
@organization = to.organization
|
78
16
|
@conversation = conversation
|
@@ -81,14 +19,7 @@ module Decidim
|
|
81
19
|
@third_party = third_party
|
82
20
|
@message = message
|
83
21
|
@host = @organization.host
|
84
|
-
|
85
|
-
subject = I18n.t(
|
86
|
-
"conversation_mailer.#{action}.subject",
|
87
|
-
scope: "decidim.messaging",
|
88
|
-
sender: @sender.name,
|
89
|
-
manager: @third_party&.name,
|
90
|
-
group: @third_party&.name
|
91
|
-
)
|
22
|
+
subject = get_subject(action: action, sender: @sender, third_party: @third_party)
|
92
23
|
|
93
24
|
mail(to: to.email, subject: subject)
|
94
25
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
# A messsage from a conversation that will be sent as a push notification
|
5
|
+
class PushNotificationMessage
|
6
|
+
class InvalidActionError < StandardError; end
|
7
|
+
|
8
|
+
include SanitizeHelper
|
9
|
+
include Decidim::TranslatableAttributes
|
10
|
+
|
11
|
+
def initialize(recipient:, conversation:, message:)
|
12
|
+
@recipient = recipient
|
13
|
+
@conversation = conversation
|
14
|
+
@message = message
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :recipient, :conversation, :message
|
18
|
+
|
19
|
+
alias user recipient
|
20
|
+
|
21
|
+
def body
|
22
|
+
decidim_html_escape(translated_attribute(message))
|
23
|
+
end
|
24
|
+
|
25
|
+
def icon
|
26
|
+
organization.attached_uploader(:favicon).variant_url(:big, host: organization.host)
|
27
|
+
end
|
28
|
+
|
29
|
+
def url
|
30
|
+
EngineRouter.new("decidim", {}).public_send(:conversation_path, host: organization.host, id: @conversation)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def organization
|
36
|
+
@organization ||= recipient.organization
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
File without changes
|
@@ -26,7 +26,7 @@ $(() => {
|
|
26
26
|
|
27
27
|
/* eslint no-use-before-define: ["error", { "variables": false }]*/
|
28
28
|
let remoteSearch = function(text, cb) {
|
29
|
-
$.post("
|
29
|
+
$.post(window.Decidim.config.get("api_path"), {query: `{hashtags(name:"${text}") {name}}`}).
|
30
30
|
|
31
31
|
then((response) => {
|
32
32
|
let data = response.data.hashtags || {};
|
@@ -42,7 +42,7 @@ $(() => {
|
|
42
42
|
/* eslint no-use-before-define: ["error", { "variables": false }]*/
|
43
43
|
let remoteSearch = function(text, cb) {
|
44
44
|
let query = `{users(filter:{wildcard:"${text}"}){nickname,name,avatarUrl,__typename,...on UserGroup{membersCount}}}`;
|
45
|
-
$.post("
|
45
|
+
$.post(window.Decidim.config.get("api_path"), {query: query}).
|
46
46
|
then((response) => {
|
47
47
|
let data = response.data.users || {};
|
48
48
|
cb(data)
|
@@ -42,7 +42,7 @@ $(() => {
|
|
42
42
|
const autoComplete = new AutoComplete($searchInput[0], {
|
43
43
|
dataMatchKeys: ["name", "nickname"],
|
44
44
|
dataSource: (query, callback) => {
|
45
|
-
$.post("
|
45
|
+
$.post(window.Decidim.config.get("api_path"), {
|
46
46
|
"query": `
|
47
47
|
{
|
48
48
|
users(filter:{wildcard:"${query}",excludeIds:[]})
|
@@ -19,7 +19,7 @@ $(() => {
|
|
19
19
|
metricsParams.spaceId = $("#metrics #metrics-space_id").val() || null;
|
20
20
|
}
|
21
21
|
|
22
|
-
const fetch = (metrics) => $.post("
|
22
|
+
const fetch = (metrics) => $.post(window.Decidim.config.get("api_path"), query(metrics));
|
23
23
|
|
24
24
|
const downloadMetricData = (event) => {
|
25
25
|
event.preventDefault();
|
@@ -22,8 +22,6 @@
|
|
22
22
|
.leaflet-tile,
|
23
23
|
.leaflet-marker-icon,
|
24
24
|
.leaflet-marker-shadow{
|
25
|
-
-webkit-user-select: none;
|
26
|
-
-moz-user-select: none;
|
27
25
|
user-select: none;
|
28
26
|
-webkit-user-drag: none;
|
29
27
|
}
|
@@ -45,34 +43,53 @@
|
|
45
43
|
display: block;
|
46
44
|
}
|
47
45
|
|
48
|
-
/* .leaflet-container svg: reset svg max-width
|
46
|
+
/* .leaflet-container svg: reset svg max-width declaration shipped in Joomla! (joomla.org) 3.x */
|
49
47
|
|
50
48
|
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
|
51
|
-
.leaflet-container .leaflet-overlay-pane svg
|
49
|
+
.leaflet-container .leaflet-overlay-pane svg{
|
50
|
+
max-width: none !important;
|
51
|
+
max-height: none !important;
|
52
|
+
}
|
53
|
+
|
52
54
|
.leaflet-container .leaflet-marker-pane img,
|
53
55
|
.leaflet-container .leaflet-shadow-pane img,
|
54
56
|
.leaflet-container .leaflet-tile-pane img,
|
55
|
-
.leaflet-container img.leaflet-image-layer
|
57
|
+
.leaflet-container img.leaflet-image-layer,
|
58
|
+
.leaflet-container .leaflet-tile{
|
56
59
|
max-width: none !important;
|
60
|
+
max-height: none !important;
|
61
|
+
width: auto;
|
62
|
+
padding: 0;
|
63
|
+
}
|
64
|
+
|
65
|
+
.leaflet-container img.leaflet-tile{
|
66
|
+
/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
|
67
|
+
mix-blend-mode: plus-lighter;
|
57
68
|
}
|
58
69
|
|
59
70
|
.leaflet-container.leaflet-touch-zoom{
|
60
|
-
-ms-touch-action: pan-x pan-y;
|
61
71
|
touch-action: pan-x pan-y;
|
62
72
|
}
|
63
73
|
|
64
74
|
.leaflet-container.leaflet-touch-drag{
|
65
|
-
|
75
|
+
/* Fallback for FF which does not support pinch-zoom */
|
76
|
+
touch-action: none;
|
66
77
|
touch-action: pinch-zoom;
|
67
78
|
}
|
68
79
|
|
69
80
|
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{
|
70
|
-
-ms-touch-action: none;
|
71
81
|
touch-action: none;
|
72
82
|
}
|
73
83
|
|
84
|
+
.leaflet-container{
|
85
|
+
-webkit-tap-highlight-color: transparent;
|
86
|
+
}
|
87
|
+
|
88
|
+
.leaflet-container a{
|
89
|
+
-webkit-tap-highlight-color: rgba(51, 181, 229, .4);
|
90
|
+
}
|
91
|
+
|
74
92
|
.leaflet-tile{
|
75
|
-
filter: inherit;
|
76
93
|
visibility: hidden;
|
77
94
|
}
|
78
95
|
|
@@ -83,7 +100,6 @@
|
|
83
100
|
.leaflet-zoom-box{
|
84
101
|
width: 0;
|
85
102
|
height: 0;
|
86
|
-
-moz-box-sizing: border-box;
|
87
103
|
box-sizing: border-box;
|
88
104
|
z-index: 800;
|
89
105
|
}
|
@@ -94,27 +110,40 @@
|
|
94
110
|
user-select: none;
|
95
111
|
}
|
96
112
|
|
97
|
-
.leaflet-pane{
|
113
|
+
.leaflet-pane{
|
114
|
+
z-index: 400;
|
115
|
+
}
|
98
116
|
|
99
|
-
.leaflet-tile-pane{
|
100
|
-
|
101
|
-
|
102
|
-
.leaflet-marker-pane{ z-index: 600; }
|
103
|
-
.leaflet-tooltip-pane{ z-index: 650; }
|
104
|
-
.leaflet-popup-pane{ z-index: 700; }
|
117
|
+
.leaflet-tile-pane{
|
118
|
+
z-index: 200;
|
119
|
+
}
|
105
120
|
|
106
|
-
.leaflet-
|
107
|
-
|
121
|
+
.leaflet-overlay-pane{
|
122
|
+
z-index: 400;
|
123
|
+
}
|
108
124
|
|
109
|
-
.leaflet-
|
110
|
-
|
111
|
-
height: 1px;
|
125
|
+
.leaflet-shadow-pane{
|
126
|
+
z-index: 500;
|
112
127
|
}
|
113
128
|
|
114
|
-
.
|
115
|
-
|
116
|
-
|
117
|
-
|
129
|
+
.leaflet-marker-pane{
|
130
|
+
z-index: 600;
|
131
|
+
}
|
132
|
+
|
133
|
+
.leaflet-tooltip-pane{
|
134
|
+
z-index: 650;
|
135
|
+
}
|
136
|
+
|
137
|
+
.leaflet-popup-pane{
|
138
|
+
z-index: 700;
|
139
|
+
}
|
140
|
+
|
141
|
+
.leaflet-map-pane canvas{
|
142
|
+
z-index: 100;
|
143
|
+
}
|
144
|
+
|
145
|
+
.leaflet-map-pane svg{
|
146
|
+
z-index: 200;
|
118
147
|
}
|
119
148
|
|
120
149
|
/* control positioning */
|
@@ -122,7 +151,6 @@
|
|
122
151
|
.leaflet-control{
|
123
152
|
position: relative;
|
124
153
|
z-index: 800;
|
125
|
-
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
126
154
|
pointer-events: auto;
|
127
155
|
}
|
128
156
|
|
@@ -176,15 +204,8 @@
|
|
176
204
|
|
177
205
|
/* zoom and fade animations */
|
178
206
|
|
179
|
-
.leaflet-fade-anim .leaflet-tile{
|
180
|
-
will-change: opacity;
|
181
|
-
}
|
182
|
-
|
183
207
|
.leaflet-fade-anim .leaflet-popup{
|
184
208
|
opacity: 0;
|
185
|
-
-webkit-transition: opacity .2s linear;
|
186
|
-
-moz-transition: opacity .2s linear;
|
187
|
-
-o-transition: opacity .2s linear;
|
188
209
|
transition: opacity .2s linear;
|
189
210
|
}
|
190
211
|
|
@@ -193,8 +214,6 @@
|
|
193
214
|
}
|
194
215
|
|
195
216
|
.leaflet-zoom-animated{
|
196
|
-
-webkit-transform-origin: 0 0;
|
197
|
-
-ms-transform-origin: 0 0;
|
198
217
|
transform-origin: 0 0;
|
199
218
|
}
|
200
219
|
|
@@ -203,17 +222,11 @@
|
|
203
222
|
}
|
204
223
|
|
205
224
|
.leaflet-zoom-anim .leaflet-zoom-animated{
|
206
|
-
-webkit-transition: -webkit-transform .25s cubic-bezier(0, 0, .25, 1);
|
207
|
-
-moz-transition: -moz-transform .25s cubic-bezier(0, 0, .25, 1);
|
208
|
-
-o-transition: -o-transform .25s cubic-bezier(0, 0, .25, 1);
|
209
225
|
transition: transform .25s cubic-bezier(0, 0, .25, 1);
|
210
226
|
}
|
211
227
|
|
212
228
|
.leaflet-zoom-anim .leaflet-tile,
|
213
229
|
.leaflet-pan-anim .leaflet-tile{
|
214
|
-
-webkit-transition: none;
|
215
|
-
-moz-transition: none;
|
216
|
-
-o-transition: none;
|
217
230
|
transition: none;
|
218
231
|
}
|
219
232
|
|
@@ -228,8 +241,7 @@
|
|
228
241
|
}
|
229
242
|
|
230
243
|
.leaflet-grab{
|
231
|
-
cursor:
|
232
|
-
cursor: -moz-grab;
|
244
|
+
cursor: grab;
|
233
245
|
}
|
234
246
|
|
235
247
|
.leaflet-crosshair,
|
@@ -245,9 +257,7 @@
|
|
245
257
|
.leaflet-dragging .leaflet-grab,
|
246
258
|
.leaflet-dragging .leaflet-grab .leaflet-interactive,
|
247
259
|
.leaflet-dragging .leaflet-marker-draggable{
|
248
|
-
cursor:
|
249
|
-
cursor: -webkit-grabbing;
|
250
|
-
cursor: -moz-grabbing;
|
260
|
+
cursor: grabbing;
|
251
261
|
}
|
252
262
|
|
253
263
|
/* marker & overlays interactivity */
|
@@ -262,7 +272,6 @@
|
|
262
272
|
.leaflet-marker-icon.leaflet-interactive,
|
263
273
|
.leaflet-image-layer.leaflet-interactive,
|
264
274
|
.leaflet-pane > svg path.leaflet-interactive{
|
265
|
-
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
266
275
|
pointer-events: auto;
|
267
276
|
}
|
268
277
|
|
@@ -277,10 +286,6 @@
|
|
277
286
|
color: #0078a8;
|
278
287
|
}
|
279
288
|
|
280
|
-
.leaflet-container a.leaflet-active{
|
281
|
-
outline: 2px solid orange;
|
282
|
-
}
|
283
|
-
|
284
289
|
.leaflet-zoom-box{
|
285
290
|
border: 2px dotted #38f;
|
286
291
|
background: rgba(255, 255, 255, .5);
|
@@ -288,7 +293,10 @@
|
|
288
293
|
|
289
294
|
/* general typography */
|
290
295
|
.leaflet-container{
|
291
|
-
font:
|
296
|
+
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
297
|
+
font-size: 12px;
|
298
|
+
font-size: .75rem;
|
299
|
+
line-height: 1.5;
|
292
300
|
}
|
293
301
|
|
294
302
|
/* general toolbar styles */
|
@@ -318,7 +326,8 @@
|
|
318
326
|
display: block;
|
319
327
|
}
|
320
328
|
|
321
|
-
.leaflet-bar a:hover
|
329
|
+
.leaflet-bar a:hover,
|
330
|
+
.leaflet-bar a:focus{
|
322
331
|
background-color: #f4f4f4;
|
323
332
|
}
|
324
333
|
|
@@ -345,24 +354,27 @@
|
|
345
354
|
line-height: 30px;
|
346
355
|
}
|
347
356
|
|
357
|
+
.leaflet-touch .leaflet-bar a:first-child{
|
358
|
+
border-top-left-radius: 2px;
|
359
|
+
border-top-right-radius: 2px;
|
360
|
+
}
|
361
|
+
|
362
|
+
.leaflet-touch .leaflet-bar a:last-child{
|
363
|
+
border-bottom-left-radius: 2px;
|
364
|
+
border-bottom-right-radius: 2px;
|
365
|
+
}
|
366
|
+
|
348
367
|
/* zoom control */
|
349
368
|
|
350
369
|
.leaflet-control-zoom-in,
|
351
370
|
.leaflet-control-zoom-out{
|
352
|
-
font: bold 18px
|
371
|
+
font: bold 18px "Lucida Console", Monaco, monospace;
|
353
372
|
text-indent: 1px;
|
354
373
|
}
|
355
374
|
|
356
|
-
.leaflet-control-zoom-
|
357
|
-
font-size: 20px;
|
358
|
-
}
|
359
|
-
|
360
|
-
.leaflet-touch .leaflet-control-zoom-in{
|
361
|
-
font-size: 22px;
|
362
|
-
}
|
363
|
-
|
375
|
+
.leaflet-touch .leaflet-control-zoom-in,
|
364
376
|
.leaflet-touch .leaflet-control-zoom-out{
|
365
|
-
font-size:
|
377
|
+
font-size: 22px;
|
366
378
|
}
|
367
379
|
|
368
380
|
/* layers control */
|
@@ -399,6 +411,12 @@
|
|
399
411
|
position: relative;
|
400
412
|
}
|
401
413
|
|
414
|
+
.leaflet-control-layers-list{
|
415
|
+
border: 0;
|
416
|
+
margin: 0;
|
417
|
+
padding: 0;
|
418
|
+
}
|
419
|
+
|
402
420
|
.leaflet-control-layers-expanded{
|
403
421
|
padding: 6px 10px 6px 6px;
|
404
422
|
color: #333;
|
@@ -406,7 +424,7 @@
|
|
406
424
|
}
|
407
425
|
|
408
426
|
.leaflet-control-layers-scrollbar{
|
409
|
-
overflow
|
427
|
+
overflow: hidden scroll;
|
410
428
|
padding-right: 5px;
|
411
429
|
}
|
412
430
|
|
@@ -418,6 +436,8 @@
|
|
418
436
|
|
419
437
|
.leaflet-control-layers label{
|
420
438
|
display: block;
|
439
|
+
font-size: 13px;
|
440
|
+
font-size: 1.08333em;
|
421
441
|
}
|
422
442
|
|
423
443
|
.leaflet-control-layers-separator{
|
@@ -443,19 +463,24 @@
|
|
443
463
|
.leaflet-control-scale-line{
|
444
464
|
padding: 0 5px;
|
445
465
|
color: #333;
|
466
|
+
line-height: 1.4;
|
446
467
|
}
|
447
468
|
|
448
469
|
.leaflet-control-attribution a{
|
449
470
|
text-decoration: none;
|
450
471
|
}
|
451
472
|
|
452
|
-
.leaflet-control-attribution a:hover
|
473
|
+
.leaflet-control-attribution a:hover,
|
474
|
+
.leaflet-control-attribution a:focus{
|
453
475
|
text-decoration: underline;
|
454
476
|
}
|
455
477
|
|
456
|
-
.leaflet-
|
457
|
-
|
458
|
-
|
478
|
+
.leaflet-attribution-flag{
|
479
|
+
display: inline !important;
|
480
|
+
vertical-align: baseline !important;
|
481
|
+
width: 1em;
|
482
|
+
height: .6669em;
|
483
|
+
margin-right: .277em;
|
459
484
|
}
|
460
485
|
|
461
486
|
.leaflet-left .leaflet-control-scale{
|
@@ -471,13 +496,10 @@
|
|
471
496
|
border-top: none;
|
472
497
|
line-height: 1.1;
|
473
498
|
padding: 2px 5px 1px;
|
474
|
-
font-size: 11px;
|
475
499
|
white-space: nowrap;
|
476
|
-
overflow: hidden;
|
477
|
-
-moz-box-sizing: border-box;
|
478
500
|
box-sizing: border-box;
|
479
|
-
background: #fff;
|
480
501
|
background: rgba(255, 255, 255, .5);
|
502
|
+
text-shadow: 1px 1px #fff;
|
481
503
|
}
|
482
504
|
|
483
505
|
.leaflet-control-scale-line:not(:first-child){
|
@@ -517,8 +539,11 @@
|
|
517
539
|
}
|
518
540
|
|
519
541
|
.leaflet-popup-content{
|
520
|
-
margin: 13px
|
521
|
-
line-height: 1.
|
542
|
+
margin: 13px 24px 13px 20px;
|
543
|
+
line-height: 1.3;
|
544
|
+
font-size: 13px;
|
545
|
+
font-size: 1.08333em;
|
546
|
+
min-height: 1px;
|
522
547
|
}
|
523
548
|
|
524
549
|
.leaflet-popup-content p{
|
@@ -530,6 +555,7 @@
|
|
530
555
|
height: 20px;
|
531
556
|
position: absolute;
|
532
557
|
left: 50%;
|
558
|
+
margin-top: -1px;
|
533
559
|
margin-left: -20px;
|
534
560
|
overflow: hidden;
|
535
561
|
pointer-events: none;
|
@@ -540,10 +566,7 @@
|
|
540
566
|
height: 17px;
|
541
567
|
padding: 1px;
|
542
568
|
margin: -10px auto 0;
|
543
|
-
-
|
544
|
-
-moz-transform: rotate(45deg);
|
545
|
-
-ms-transform: rotate(45deg);
|
546
|
-
-o-transform: rotate(45deg);
|
569
|
+
pointer-events: auto;
|
547
570
|
transform: rotate(45deg);
|
548
571
|
}
|
549
572
|
|
@@ -558,48 +581,23 @@
|
|
558
581
|
position: absolute;
|
559
582
|
top: 0;
|
560
583
|
right: 0;
|
561
|
-
padding: 4px 4px 0 0;
|
562
584
|
border: none;
|
563
585
|
text-align: center;
|
564
|
-
width:
|
565
|
-
height:
|
586
|
+
width: 24px;
|
587
|
+
height: 24px;
|
566
588
|
font: 16px/14px Tahoma, Verdana, sans-serif;
|
567
|
-
color: #
|
589
|
+
color: #757575;
|
568
590
|
text-decoration: none;
|
569
|
-
font-weight: bold;
|
570
591
|
background: transparent;
|
571
592
|
}
|
572
593
|
|
573
|
-
.leaflet-container a.leaflet-popup-close-button:hover
|
574
|
-
|
594
|
+
.leaflet-container a.leaflet-popup-close-button:hover,
|
595
|
+
.leaflet-container a.leaflet-popup-close-button:focus{
|
596
|
+
color: #585858;
|
575
597
|
}
|
576
598
|
|
577
599
|
.leaflet-popup-scrolled{
|
578
600
|
overflow: auto;
|
579
|
-
border-bottom: 1px solid #ddd;
|
580
|
-
border-top: 1px solid #ddd;
|
581
|
-
}
|
582
|
-
|
583
|
-
.leaflet-oldie .leaflet-popup-content-wrapper{
|
584
|
-
zoom: 1;
|
585
|
-
}
|
586
|
-
|
587
|
-
.leaflet-oldie .leaflet-popup-tip{
|
588
|
-
width: 24px;
|
589
|
-
margin: 0 auto;
|
590
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
591
|
-
filter: progid:dximagetransform.microsoft.matrix(M11=.70710678, M12=.70710678, M21=-.70710678, M22=.70710678);
|
592
|
-
}
|
593
|
-
|
594
|
-
.leaflet-oldie .leaflet-popup-tip-container{
|
595
|
-
margin-top: -1px;
|
596
|
-
}
|
597
|
-
|
598
|
-
.leaflet-oldie .leaflet-control-zoom,
|
599
|
-
.leaflet-oldie .leaflet-control-layers,
|
600
|
-
.leaflet-oldie .leaflet-popup-content-wrapper,
|
601
|
-
.leaflet-oldie .leaflet-popup-tip{
|
602
|
-
border: 1px solid #999;
|
603
601
|
}
|
604
602
|
|
605
603
|
/* div icon */
|
@@ -620,15 +618,12 @@
|
|
620
618
|
border-radius: 3px;
|
621
619
|
color: #222;
|
622
620
|
white-space: nowrap;
|
623
|
-
-webkit-user-select: none;
|
624
|
-
-moz-user-select: none;
|
625
|
-
-ms-user-select: none;
|
626
621
|
user-select: none;
|
627
622
|
pointer-events: none;
|
628
623
|
box-shadow: 0 1px 3px rgba(0, 0, 0, .4);
|
629
624
|
}
|
630
625
|
|
631
|
-
.leaflet-tooltip.leaflet-
|
626
|
+
.leaflet-tooltip.leaflet-interactive{
|
632
627
|
cursor: pointer;
|
633
628
|
pointer-events: auto;
|
634
629
|
}
|
@@ -698,3 +693,12 @@
|
|
698
693
|
margin-left: -12px;
|
699
694
|
border-right-color: #fff;
|
700
695
|
}
|
696
|
+
|
697
|
+
/* Printing */
|
698
|
+
|
699
|
+
@media print{
|
700
|
+
/* Prevent printers from removing background-images of controls. */
|
701
|
+
.leaflet-control{
|
702
|
+
-webkit-print-color-adjust: exact;
|
703
|
+
}
|
704
|
+
}
|