Skip to content

Commit 7d27c5b

Browse files
authored
Merge branch 'master' into scroll-depth-imported-pages-migration
2 parents a6e92ff + 8de2b49 commit 7d27c5b

File tree

5 files changed

+77
-8
lines changed

5 files changed

+77
-8
lines changed

extra/lib/plausible/help_scout.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ defmodule Plausible.HelpScout do
106106
sites_count: Plausible.Teams.owned_sites_count(team),
107107
sites_link:
108108
Routes.kaffy_resource_url(PlausibleWeb.Endpoint, :index, :sites, :site,
109-
search: user.email
109+
custom_search: user.email
110110
)
111111
}}
112112
end

lib/plausible/billing/enterprise_plan_admin.ex

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,22 @@ defmodule Plausible.Billing.EnterprisePlanAdmin do
2929
]
3030
end
3131

32-
def custom_index_query(_conn, _schema, query) do
33-
from(r in query, preload: [team: :owner])
32+
def custom_index_query(conn, _schema, query) do
33+
search =
34+
(conn.params["custom_search"] || "")
35+
|> String.trim()
36+
|> String.replace("%", "\%")
37+
|> String.replace("_", "\_")
38+
39+
search_term = "%#{search}%"
40+
41+
from(r in query,
42+
inner_join: t in assoc(r, :team),
43+
inner_join: o in assoc(t, :owner),
44+
or_where: ilike(r.paddle_plan_id, ^search_term),
45+
or_where: ilike(o.email, ^search_term) or ilike(o.name, ^search_term),
46+
preload: [team: {t, owner: o}]
47+
)
3448
end
3549

3650
def custom_show_query(_conn, _schema, query) do

lib/plausible/crm_extensions.ex

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ defmodule Plausible.CrmExtensions do
66
use Plausible
77

88
on_ee do
9+
# Kaffy uses String.to_existing_atom when listing params
10+
@custom_search :custom_search
11+
912
def javascripts(%{assigns: %{context: "auth", resource: "user", entry: %{} = user}}) do
1013
[
1114
Phoenix.HTML.raw("""
@@ -45,6 +48,36 @@ defmodule Plausible.CrmExtensions do
4548
]
4649
end
4750

51+
def javascripts(%{assigns: %{context: context}})
52+
when context in ["sites", "billing"] do
53+
[
54+
Phoenix.HTML.raw("""
55+
<script type="text/javascript">
56+
(() => {
57+
const publicField = document.querySelector("#kaffy-search-field")
58+
const searchForm = document.querySelector("#kaffy-filters-form")
59+
const searchField = document.querySelector("#kaffy-filter-search")
60+
61+
if (publicField && searchForm && searchField) {
62+
publicField.name = "#{@custom_search}"
63+
searchField.name = "#{@custom_search}"
64+
65+
const params = new URLSearchParams(window.location.search)
66+
publicField.value = params.get("#{@custom_search}")
67+
68+
const searchInput = document.createElement("input")
69+
searchInput.name = "search"
70+
searchInput.type = "hidden"
71+
searchInput.value = ""
72+
73+
searchForm.appendChild(searchInput)
74+
}
75+
})()
76+
</script>
77+
""")
78+
]
79+
end
80+
4881
def javascripts(%{assigns: %{context: "billing", resource: "enterprise_plan", changeset: %{}}}) do
4982
[
5083
Phoenix.HTML.raw("""

lib/plausible/site/admin.ex

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,32 @@ defmodule Plausible.SiteAdmin do
1313
]
1414
end
1515

16-
def custom_index_query(_conn, _schema, query) do
16+
def custom_index_query(conn, _schema, query) do
17+
search =
18+
(conn.params["custom_search"] || "")
19+
|> String.trim()
20+
|> String.replace("%", "\%")
21+
|> String.replace("_", "\_")
22+
23+
search_term = "%#{search}%"
24+
25+
member_query =
26+
from s in Plausible.Site,
27+
left_join: gm in assoc(s, :guest_memberships),
28+
left_join: tm in assoc(gm, :team_membership),
29+
left_join: u in assoc(tm, :user),
30+
where: s.id == parent_as(:site).id,
31+
where: ilike(u.email, ^search_term) or ilike(u.name, ^search_term),
32+
select: 1
33+
1734
from(r in query,
35+
as: :site,
1836
inner_join: o in assoc(r, :owner),
19-
preload: [owner: o, team: [team_memberships: :user]]
37+
preload: [owner: o, team: [team_memberships: :user]],
38+
or_where: ilike(r.domain, ^search_term),
39+
or_where: ilike(o.email, ^search_term),
40+
or_where: ilike(o.name, ^search_term),
41+
or_where: exists(member_query)
2042
)
2143
end
2244

test/plausible/help_scout_test.exs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ defmodule Plausible.HelpScoutTest do
6161
crm_url = "#{PlausibleWeb.Endpoint.url()}/crm/auth/user/#{user_id}"
6262

6363
owned_sites_url =
64-
"#{PlausibleWeb.Endpoint.url()}/crm/sites/site?search=#{URI.encode_www_form(email)}"
64+
"#{PlausibleWeb.Endpoint.url()}/crm/sites/site?custom_search=#{URI.encode_www_form(email)}"
6565

6666
assert {:ok,
6767
%{
@@ -410,7 +410,7 @@ defmodule Plausible.HelpScoutTest do
410410
crm_url = "#{PlausibleWeb.Endpoint.url()}/crm/auth/user/#{user_id}"
411411

412412
owned_sites_url =
413-
"#{PlausibleWeb.Endpoint.url()}/crm/sites/site?search=#{URI.encode_www_form(email)}"
413+
"#{PlausibleWeb.Endpoint.url()}/crm/sites/site?custom_search=#{URI.encode_www_form(email)}"
414414

415415
assert {:ok,
416416
%{
@@ -448,7 +448,7 @@ defmodule Plausible.HelpScoutTest do
448448
crm_url = "#{PlausibleWeb.Endpoint.url()}/crm/auth/user/#{user2.id}"
449449

450450
owned_sites_url =
451-
"#{PlausibleWeb.Endpoint.url()}/crm/sites/site?search=#{URI.encode_www_form(user2.email)}"
451+
"#{PlausibleWeb.Endpoint.url()}/crm/sites/site?custom_search=#{URI.encode_www_form(user2.email)}"
452452

453453
assert {:ok,
454454
%{

0 commit comments

Comments
 (0)