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. See here 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{Click here} """ 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