mirror of
https://github.com/kieraneglin/pinchflat.git
synced 2026-01-24 02:45:54 +00:00
* Updated model with new attribute * Update app logic to use new cookie logic * lots of tests * Updated UI and renamed attribute * Updated tests
93 lines
2.8 KiB
Elixir
93 lines
2.8 KiB
Elixir
defmodule PinchflatWeb.Sources.SourceHTML do
|
|
use PinchflatWeb, :html
|
|
|
|
embed_templates "source_html/*"
|
|
|
|
@doc """
|
|
Renders a source form.
|
|
"""
|
|
attr :changeset, Ecto.Changeset, required: true
|
|
attr :action, :string, required: true
|
|
attr :media_profiles, :list, required: true
|
|
attr :method, :string, required: true
|
|
|
|
def source_form(assigns)
|
|
|
|
def friendly_index_frequencies do
|
|
[
|
|
{"Only once when first created", -1},
|
|
{"30 minutes", 30},
|
|
{"1 Hour", 60},
|
|
{"3 Hours", 3 * 60},
|
|
{"6 Hours", 6 * 60},
|
|
{"12 Hours", 12 * 60},
|
|
{"Daily (recommended)", 24 * 60},
|
|
{"Weekly", 7 * 24 * 60},
|
|
{"Monthly", 30 * 24 * 60}
|
|
]
|
|
end
|
|
|
|
def friendly_cookie_behaviours do
|
|
[
|
|
{"Disabled", :disabled},
|
|
{"When Needed", :when_needed},
|
|
{"All Operations", :all_operations}
|
|
]
|
|
end
|
|
|
|
def cutoff_date_presets do
|
|
[
|
|
{"7 days", compute_date_offset(7)},
|
|
{"14 days", compute_date_offset(14)},
|
|
{"30 days", compute_date_offset(30)},
|
|
{"60 days", compute_date_offset(60)},
|
|
{"90 days", compute_date_offset(90)},
|
|
{"180 days", compute_date_offset(180)},
|
|
{"365 days", compute_date_offset(365)}
|
|
]
|
|
end
|
|
|
|
def rss_feed_url(conn, source) do
|
|
# NOTE: The reason for this concatenation is to avoid what appears to be a bug in Phoenix
|
|
# See: https://github.com/phoenixframework/phoenix/issues/6033
|
|
url(conn, ~p"/sources/#{source.uuid}/feed") <> ".xml"
|
|
end
|
|
|
|
def opml_feed_url(conn) do
|
|
url(conn, ~p"/sources/opml.xml?#{[route_token: Settings.get!(:route_token)]}")
|
|
end
|
|
|
|
def output_path_template_override_placeholders(media_profiles) do
|
|
media_profiles
|
|
|> Enum.map(&{&1.id, &1.output_path_template})
|
|
|> Map.new()
|
|
|> Phoenix.json_library().encode!()
|
|
end
|
|
|
|
def title_filter_regex_help do
|
|
url = "https://github.com/nalgeon/sqlean/blob/main/docs/regexp.md#supported-syntax"
|
|
classes = "underline decoration-bodydark decoration-1 hover:decoration-white"
|
|
|
|
"""
|
|
A PCRE-compatible regex. Only media with titles that match this regex will be downloaded. <a href="#{url}" class="#{classes}" target="_blank">See here</a> for syntax
|
|
"""
|
|
end
|
|
|
|
def output_path_template_override_help do
|
|
help_button_classes = "underline decoration-bodydark decoration-1 hover:decoration-white cursor-pointer"
|
|
help_button = ~s{<span class="#{help_button_classes}" x-on:click="$dispatch('load-template')">Click here</span>}
|
|
|
|
"""
|
|
Must end with .{{ ext }}. Same rules as Media Profile output path templates. #{help_button} to load your media profile's output template
|
|
"""
|
|
end
|
|
|
|
defp compute_date_offset(days) do
|
|
timezone = Application.get_env(:pinchflat, :timezone)
|
|
|
|
timezone
|
|
|> Timex.now()
|
|
|> Timex.shift(days: -days)
|
|
|> Timex.format!("{YYYY}-{0M}-{0D}")
|
|
end
|
|
end
|