Guest User

Sample Admin page in Nitrogen

a guest
Mar 21st, 2023
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.42 KB | None | 0 0
  1. -module(user_admin).
  2. -include_lib("nitrogen_core/include/wf.hrl").
  3. -compile(export_all).
  4.  
  5. main() ->
  6.     #template{file="bare.html"}.
  7.  
  8. title() -> "User Admin Page".
  9.  
  10. body() ->
  11.     #panel{id=worker, body=draw_user_table()}.
  12.  
  13. draw_user_table() ->
  14.     Users = get_users_from_your_database(),
  15.     draw_user_table(Users).
  16.  
  17. draw_user_table(Users) ->
  18.     #table{rows=[
  19.         #tablerow{cells=[
  20.             #tableheader{text="Name"},
  21.             #tableheader{text="Email"}
  22.         ]},
  23.         [draw_user_rows(User) || User <- Users]
  24.     ]}.
  25.  
  26. draw_user_rows(User) ->
  27.     #{name:=Name, email:=Email, id:=ID} = User,
  28.     #tablerow{cells=[
  29.         #tablecell{text=Name},
  30.         #tablecell{text=Email},
  31.         #tablecell{body=[
  32.             #button{text="Edit", postback={edit_user, ID}}
  33.         ]}
  34.     ]}.
  35.  
  36. draw_user_form(ID) ->
  37.     User = get_user_from_database(ID),
  38.     #{name:=Name, email:=Email, id:=ID} = User,
  39.     [
  40.         #label{text="Name"},
  41.         #textbox{id=name, text=Name},
  42.         #label{text="Email"},
  43.         #textbox{id=email, type=email, text=Email},
  44.         #button{text="Save", postback={save_user, ID}},
  45.         #link{text="Cancel", postback=show_list}
  46.     ].
  47.  
  48. edit_user(ID) ->
  49.     wf:update(worker, draw_user_form(User)).
  50.  
  51. save_user(ID) ->
  52.     User = wf:q_map([name, email]),
  53.     User2 = maps:put(id, ID, User),
  54.     save_user_to_database(User2),
  55.     show_list().
  56.  
  57. show_list() ->
  58.     wf:update(worker, draw_user_table()).
  59.  
  60. event({edit_user, ID}) ->
  61.     edit_user(ID);
  62. event({save_user, ID}) ->
  63.     save_user(ID);
  64. event(show_list) ->
  65.     show_list().
Advertisement
Add Comment
Please, Sign In to add comment