2019-09-02 14:29:19 +03:00
|
|
|
defmodule PlausibleWeb do
|
2024-01-09 14:28:31 +03:00
|
|
|
def live_view(opts \\ []) do
|
|
|
|
quote do
|
|
|
|
use Plausible
|
|
|
|
use Phoenix.LiveView, global_prefixes: ~w(x-)
|
|
|
|
use PlausibleWeb.Live.Flash
|
|
|
|
|
|
|
|
unless :no_sentry_context in unquote(opts) do
|
|
|
|
use PlausibleWeb.Live.SentryContext
|
|
|
|
end
|
|
|
|
|
|
|
|
alias PlausibleWeb.Router.Helpers, as: Routes
|
|
|
|
alias Phoenix.LiveView.JS
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-09-02 14:29:19 +03:00
|
|
|
def controller do
|
|
|
|
quote do
|
|
|
|
use Phoenix.Controller, namespace: PlausibleWeb
|
|
|
|
|
|
|
|
import Plug.Conn
|
|
|
|
import PlausibleWeb.ControllerHelpers
|
|
|
|
alias PlausibleWeb.Router.Helpers, as: Routes
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def view do
|
|
|
|
quote do
|
|
|
|
use Phoenix.View,
|
|
|
|
root: "lib/plausible_web/templates",
|
|
|
|
namespace: PlausibleWeb
|
|
|
|
|
|
|
|
# Import convenience functions from controllers
|
2023-05-09 11:51:35 +03:00
|
|
|
import Phoenix.Controller, only: [view_module: 1]
|
2019-09-02 14:29:19 +03:00
|
|
|
|
|
|
|
# Use all HTML functionality (forms, tags, etc)
|
|
|
|
use Phoenix.HTML
|
2023-06-01 16:26:23 +03:00
|
|
|
use Phoenix.Component
|
2021-01-13 18:04:01 +03:00
|
|
|
|
2019-09-02 14:29:19 +03:00
|
|
|
import PlausibleWeb.ErrorHelpers
|
2022-03-24 13:25:07 +03:00
|
|
|
import PlausibleWeb.FormHelpers
|
2023-09-21 13:55:56 +03:00
|
|
|
import PlausibleWeb.Components.Generic
|
2019-09-02 14:29:19 +03:00
|
|
|
alias PlausibleWeb.Router.Helpers, as: Routes
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def router do
|
|
|
|
quote do
|
|
|
|
use Phoenix.Router
|
|
|
|
import Plug.Conn
|
|
|
|
import Phoenix.Controller
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def channel do
|
|
|
|
quote do
|
|
|
|
use Phoenix.Channel
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2023-10-02 12:18:49 +03:00
|
|
|
def plugins_api_controller do
|
|
|
|
quote do
|
|
|
|
use Phoenix.Controller, namespace: PlausibleWeb.Plugins.API
|
|
|
|
import Plug.Conn
|
|
|
|
import PlausibleWeb.Plugins.API.Router.Helpers
|
|
|
|
import PlausibleWeb.Plugins.API, only: [base_uri: 0]
|
|
|
|
|
|
|
|
alias PlausibleWeb.Plugins.API.Schemas
|
|
|
|
alias PlausibleWeb.Plugins.API.Views
|
2023-10-05 12:54:18 +03:00
|
|
|
alias PlausibleWeb.Plugins.API.Errors
|
|
|
|
alias Plausible.Plugins.API
|
2023-10-02 12:18:49 +03:00
|
|
|
|
|
|
|
plug(OpenApiSpex.Plug.CastAndValidate, json_render_error_v2: true, replace_params: false)
|
|
|
|
|
|
|
|
use OpenApiSpex.ControllerSpecs
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def plugins_api_view do
|
|
|
|
quote do
|
|
|
|
use Phoenix.View,
|
|
|
|
namespace: PlausibleWeb.Plugins.API,
|
|
|
|
root: ""
|
|
|
|
|
|
|
|
alias PlausibleWeb.Plugins.API.Router.Helpers
|
|
|
|
import PlausibleWeb.Plugins.API.Views.Pagination, only: [render_metadata_links: 4]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def open_api_schema do
|
|
|
|
quote do
|
|
|
|
require OpenApiSpex
|
|
|
|
alias OpenApiSpex.Schema
|
|
|
|
alias PlausibleWeb.Plugins.API.Schemas
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-09-02 14:29:19 +03:00
|
|
|
@doc """
|
|
|
|
When used, dispatch to the appropriate controller/view/etc.
|
|
|
|
"""
|
|
|
|
defmacro __using__(which) when is_atom(which) do
|
|
|
|
apply(__MODULE__, which, [])
|
|
|
|
end
|
2024-01-09 14:28:31 +03:00
|
|
|
|
|
|
|
defmacro __using__([{which, opts}]) when is_atom(which) do
|
|
|
|
apply(__MODULE__, which, [List.wrap(opts)])
|
|
|
|
end
|
2019-09-02 14:29:19 +03:00
|
|
|
end
|