summaryrefslogtreecommitdiff
path: root/editor/actions.ml
blob: c02584f5363b25f5955349743d8faa068f5fa038 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
open StdLabels
open Brr
open Brr_note

type button_actions =
  { edit : El.t * (unit Note.event)
  }

let populate_menu () =
  match Blog.Sidebar.get () with
  | None -> None
  | Some element ->
    let () = Blog.Sidebar.clean element in
    let uri = Brr.Window.location Brr.G.window in

    let edit_button = El.button
        ~at:At.[ class' (Jstr.v "action-button") ]
        [ El.i
            []
            ~at:At.[ class' (Jstr.v "fa")
                   ; class' (Jstr.v "fa-2x")
                   ; class' (Jstr.v "fa-pen")
                   ]
        ] in

    let edit_event =
      Evr.on_el
        Ev.click
        Evr.unit
        edit_button in

    let pages =

      List.map (Storage.get_ids ())
        ~f:(fun name ->
            let target =
              Jstr.( (Brr.Uri.path uri)
                     + (Jstr.v "?page=")
                     + name) in
            El.li
              [ El.a
                  ~at:[At.href target]
                  [ El.txt name ] ]
          ) in

    let childs =
      [ El.button
          ~at:At.[class' (Jstr.v "action-button")]
          [ El.i
              []
              ~at:At.[ class' (Jstr.v "fa")
                     ; class' (Jstr.v "fa-2x")
                     ; class' (Jstr.v "fa-home") ]
          ]
      ; edit_button
      ; El.button
          ~at:At.[class' (Jstr.v "action-button")]
          [ El.i
              []
              ~at:At.[ class' (Jstr.v "fa")
                     ; class' (Jstr.v "fa-2x")
                     ; class' (Jstr.v "fa-plus") ]
          ]
      ; El.button
          ~at:At.[class' (Jstr.v "action-button")]
          [ El.i
              []
              ~at:At.[ class' (Jstr.v "fa")
                     ; class' (Jstr.v "fa-2x")
                     ; class' (Jstr.v "fa-download") ]
          ]
      ; El.button
          ~at:At.[class' (Jstr.v "action-button")]
          [ El.i
              []
              ~at:At.[ class' (Jstr.v "fa")
                     ; class' (Jstr.v "fa-2x")
                     ; class' (Jstr.v "fa-trash") ]
          ]
      ; El.button
          ~at:At.[class' (Jstr.v "action-button")]
          [ El.i
              []
              ~at:At.[ class' (Jstr.v "fa")
                     ; class' (Jstr.v "fa-2x")
                     ; class' (Jstr.v "fa-cog") ]
          ]
      ; El.hr ()
      ; El.ul
          pages
      ] in

    let () = El.append_children element childs in
    Some
      { edit = (edit_button, edit_event)
      }