From 6f088f86a15ae00fc9f5768484aa7798348c0942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Diedrich?= Date: Sun, 2 Jun 2024 15:23:32 +0200 Subject: [PATCH] fixed form --- .../controllers/page_controller.ex | 41 ++++++++++++++++++- .../controllers/page_html/home.html.heex | 11 +++-- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/lib/something_erlang_web/controllers/page_controller.ex b/lib/something_erlang_web/controllers/page_controller.ex index 8a93aee..a22dac5 100644 --- a/lib/something_erlang_web/controllers/page_controller.ex +++ b/lib/something_erlang_web/controllers/page_controller.ex @@ -1,9 +1,46 @@ defmodule SomethingErlangWeb.PageController do use SomethingErlangWeb, :controller - def home(conn, _params) do + def home(conn, params) do # The home page is often custom made, # so skip the default app layout. - render(conn, :home, layout: false) + conn = assign(conn, :params, params) + render(conn, :home) + end + + def to_forum_path(conn, %{"forum_path" => path} = _params) do + with {:ok, thread, page} <- resolve_url(path) do + redirect(conn, to: ~p"/thread/#{thread}?page=#{page}") + else + _ -> + put_flash(conn, :error, "Could not resolve URL") + render(conn, :home) + end + end + + def to_forum_path(conn, _params) do + render(conn, :home) + end + + defp resolve_url(url) do + threadid = + case Regex.run(~r{threadid=(\d+)}, url) do + [_, threadid] -> {:ok, threadid} + nil -> {:error, :nothreadid} + end + + page = + case Regex.run(~r{pagenumber=(\d+)}, url) do + [_, page] -> {:ok, page} + nil -> {:ok, 1} + end + + with {:ok, threadid} <- threadid, + {:ok, page} <- page do + {:ok, threadid, page} + else + _ -> + {:error, :cantparseurl} + end end end diff --git a/lib/something_erlang_web/controllers/page_html/home.html.heex b/lib/something_erlang_web/controllers/page_html/home.html.heex index e67d593..19ced7f 100644 --- a/lib/something_erlang_web/controllers/page_html/home.html.heex +++ b/lib/something_erlang_web/controllers/page_html/home.html.heex @@ -1,8 +1,11 @@ <.flash_group flash={@flash} /> -<.form :let={f} for={@conn} action={~p"/"}> - - - + +<.simple_form for={@conn.params} action={~p"/"} phx-submit="save"> + <.input field={@conn.params[:forum_path]} name="forum_path" value="" label="SA Url" /> + <:actions> + <.button class="btn btn-sm">Redirect + +
 	<%= inspect(@current_user) %>