Skip to content

Commit d717f10

Browse files
committed
fix import content
1 parent fe9abc6 commit d717f10

File tree

8 files changed

+70
-11
lines changed

8 files changed

+70
-11
lines changed

lib/chubi_web/admin_router.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ defmodule ChubiWeb.AdminRouter do
4040

4141
get("/settings/set_theme", SettingController, :set_theme)
4242
get("/settings/export", SettingController, :export_content)
43+
get("/settings/select_import", SettingController, :select_import)
4344
post("/settings/import", SettingController, :import_content)
4445
end
4546
end

lib/chubi_web/controllers/admin/.#setting_controller.ex

Lines changed: 0 additions & 1 deletion
This file was deleted.

lib/chubi_web/controllers/admin/setting_controller.ex

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
defmodule ChubiWeb.Admin.SettingController do
2-
use ChubiWeb, :controller
2+
use ChubiWeb, :admin_controller
33
alias Chubi.Content
44

55
def set_theme(conn, %{"theme" => theme}) do
@@ -41,12 +41,15 @@ defmodule ChubiWeb.Admin.SettingController do
4141
end
4242

4343
def select_import(conn, _) do
44+
render(conn, "select_import.html")
4445
end
4546

46-
def import_content(conn, %{%{path: path} => file}) do
47-
with {:ok, files} <- :zip.extract(path, [:memory]) do
47+
def import_content(conn, %{"file" => %{path: path}}) do
48+
with {:ok, files} <- :zip.extract(String.to_charlist(path), [:memory]) do
4849
rs =
49-
Enum.map(files, fn {_filename, content} ->
50+
Enum.map(files, fn {file_path, content} ->
51+
file_path = to_string(file_path)
52+
5053
attrs =
5154
case Path.extname(file_path) do
5255
".md" -> %{"content" => content, "format" => "markdown"}
@@ -63,12 +66,16 @@ defmodule ChubiWeb.Admin.SettingController do
6366
success = Enum.filter(rs, &(elem(&1, 0) == :ok))
6467

6568
conn
66-
|> put_flash(:error, gettext("Cannot import content"))
67-
|> redirect(to: Routes.setting_path(conn, :select_import))
69+
|> put_flash(
70+
:info,
71+
gettext("%{success}/%{total} is imported", %{success: length(success), total: length(rs)})
72+
)
73+
|> redirect(to: Routes.post_path(conn, :index))
6874
else
69-
conn
70-
|> put_flash(:error, gettext("Cannot import content"))
71-
|> redirect(to: Routes.setting_path(conn, :select_import))
75+
err ->
76+
conn
77+
|> put_flash(:error, gettext("Cannot import content"))
78+
|> redirect(to: Routes.setting_path(conn, :select_import))
7279
end
7380
end
7481
end
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<%= if message = get_flash(@conn, :error) do %>
2+
<div class="alert alert-icon alert-danger border-danger alert-dismissible fade show" role="alert">
3+
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true"></span>
4+
</button> <i class="fe fe-x-circle list-icon"></i> <%= message %>
5+
</div>
6+
<% end %>
7+
8+
<%= if message = get_flash(@conn, :info) do %>
9+
<div class="alert alert-icon alert-info border-info alert-dismissible fade show" role="alert">
10+
<button type="button" class="close" data-dismiss="alert"><span></span>
11+
</button> <i class="fe fe-info list-icon"></i> <%= message %></div>
12+
<% end %>
13+
14+
<%= if message = get_flash(@conn, :success) do %>
15+
<div class="alert alert-icon alert-success border-info alert-dismissible fade show" role="alert">
16+
<button type="button" class="close" data-dismiss="alert"><span></span>
17+
</button> <i class="fe fe-check-circle list-icon"></i> <%= message %></div>
18+
<% end %>
19+
20+
<%= if message = get_flash(@conn, :warning) do %>
21+
<div class="alert alert-icon alert-warning border-info alert-dismissible fade show" role="alert">
22+
<button type="button" class="close" data-dismiss="alert"><span></span>
23+
</button> <i class="fe fe-alert-triangle list-icon"></i> <%= message %></div>
24+
<% end %>

lib/chubi_web/templates/admin/layout/_navigation.html.eex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fe fe-settings"></i> <%= gettext "Settings" %></a>
3838
<div class="dropdown-menu dropdown-menu-arrow" x-placement="bottom-start">
3939
<a href="<%= Routes.setting_path(@conn, :export_content) %>" class="dropdown-item "><%= gettext "Export" %></a>
40-
<a href="import" class="dropdown-item "><%= gettext "Import" %></a>
40+
<a href="<%= Routes.setting_path(@conn, :select_import) %>" class="dropdown-item "><%= gettext "Import" %></a>
4141
</div>
4242
</li>
4343

lib/chubi_web/templates/admin/layout/app.html.eex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
<div class="flex-grow-1" >
3636

3737
<div class="" style="height: 100%;">
38+
<div class="m-3">
39+
<%= render "_alert.html", assigns %>
40+
</div>
3841
<%= render @view_module, @view_template, assigns %>
3942
</div>
4043

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<div class="container">
2+
<div class="row row-cards row-deck mt-md-5">
3+
<div class="col-md-8 offset-md-2">
4+
<div class="card profile">
5+
<div class="card-body p-6 clearfix">
6+
<h2 class="fw-bold mb-0 text-primary"><%= gettext("Select ZIP file content") %></h2>
7+
8+
<form method="post" class="mt-5" action="<%= Routes.setting_path(@conn, :import_content) %>" enctype="multipart/form-data">
9+
<div class="form-group">
10+
<input type="hidden" name="_csrf_token" value="<%= Plug.CSRFProtection.get_csrf_token() %>" >
11+
<input type="file" name="file" >
12+
</div>
13+
<button class="btn btn-primary"> <i class="fe fe-flash mr-1"></i> <%= gettext("Import") %></button>
14+
</form>
15+
16+
</div>
17+
</div>
18+
</div>
19+
20+
</div>
21+
</div>
22+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
defmodule ChubiWeb.Admin.SettingView do
2+
use ChubiWeb, :admin_view
3+
end

0 commit comments

Comments
 (0)