Add initial file upload

This commit is contained in:
Shadowfacts 2020-08-02 19:40:45 -04:00
parent 67b18d16f2
commit 06c5ccc7c1
Signed by: shadowfacts
GPG Key ID: 94A5AB95422746E5
4 changed files with 22 additions and 4 deletions

View File

@ -65,7 +65,7 @@ defmodule WikiWeb.PageController do
render(conn, "new.html", changeset: changeset) render(conn, "new.html", changeset: changeset)
end end
def create(conn, %{"page" => page_params}) do def create(conn, %{"page" => page_params} = params) do
key = get_session(conn, :content_encryption_key) key = get_session(conn, :content_encryption_key)
page_params = page_params =
@ -75,6 +75,18 @@ defmodule WikiWeb.PageController do
case Content.create_page(page_params) do case Content.create_page(page_params) do
{:ok, page} -> {:ok, page} ->
file = Map.get(params, "initial_file")
unless is_nil(file) do
decoded_key = Base.decode16!(key, case: :lower)
changeset =
Upload.create_from_plug(file, decoded_key)
|> Upload.changeset(%{page_id: page.id})
{:ok, _upload} = Repo.insert(changeset)
end
conn conn
|> put_flash(:info, "Page created successfully.") |> put_flash(:info, "Page created successfully.")
|> redirect(to: Routes.page_path(conn, :show, page)) |> redirect(to: Routes.page_path(conn, :show, page))

View File

@ -1,6 +1,6 @@
<h1>Edit Page</h1> <h1>Edit Page</h1>
<%= render "form.html", Map.put(assigns, :action, Routes.page_path(@conn, :update, @page)) %> <%= render "form.html", assigns |> Map.put(:action, Routes.page_path(@conn, :update, @page)) |> Map.put(:initial_file, false) %>
<h2>Uploaded Files</h2> <h2>Uploaded Files</h2>
<table> <table>

View File

@ -1,4 +1,4 @@
<%= form_for @changeset, @action, fn f -> %> <%= form_for @changeset, @action, [multipart: true], fn f -> %>
<%= if @changeset.action do %> <%= if @changeset.action do %>
<div class="alert alert-danger"> <div class="alert alert-danger">
<p>Oops, something went wrong! Please check the errors below.</p> <p>Oops, something went wrong! Please check the errors below.</p>
@ -13,6 +13,12 @@
<%= textarea f, :content %> <%= textarea f, :content %>
<%= error_tag f, :content %> <%= error_tag f, :content %>
<%= if @initial_file do %>
<label for="initial_file">File</label>
<input type="file" name="initial_file" id="initial_file">
<% end %>
<div> <div>
<%= submit "Save" %> <%= submit "Save" %>
</div> </div>

View File

@ -1,5 +1,5 @@
<h1>New Page</h1> <h1>New Page</h1>
<%= render "form.html", Map.put(assigns, :action, Routes.page_path(@conn, :create)) %> <%= render "form.html", assigns |> Map.put(:action, Routes.page_path(@conn, :create)) |> Map.put(:initial_file, true) %>
<span><%= link "Back", to: Routes.page_path(@conn, :index) %></span> <span><%= link "Back", to: Routes.page_path(@conn, :index) %></span>