sidebar.anubis
3.62 KB
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
/*
* Created by PyramIDE.
* User: フランスのトトロ aka (David RENÉ)
* Date: 01/05/2026
* Time: 15:11
* © David RENÉ
*/
transmit xlib/web/widgets/left_menu.anubis
read xlib/web/making_a_web_site.anubis
read xlib/web/web_action.anubis
read xlib/web/load_content.anubis
define List(HTML)
make_sidebar
(
(String) -> String _T, //translator function
List(Left_Menu_Entry) entries,
String selected,
List(HTML) so_far
)=
if entries is
{
[] then reverse(so_far), //reverse to be in the right direction
[h . t] then
with entry =
if h is
{
left_menu_entry(_menu_id, subentry, _classes, _action, _text, _extra) then
with item_class = if subentry then "subitem " else "item ",
li(class("nav-item"),
p([class(item_class+_menu_id+"_icon"+(if _menu_id=selected then " selected" else "")+ " "+join(" ", _classes))],actioner(same,same, link(_T(_text)),_action,_extra))),
left_menu_entry_js(_menu_id, subentry, _classes, _js_to_call, _text) then
with item_class = if subentry then "subitem " else "item ",
li(class("nav-item"),
p([class(item_class+"clickable "+_menu_id+"_icon"+(if _menu_id=selected then " active" else "")+ " "+join(" ", _classes)),
event(onclick, _js_to_call)],text(_T(_text)))),
left_menu_entry_load_content(_menu_id, subentry, _classes, _action, _text, _extra, _target_id, _replace, _overlay) then
with item_class = if subentry then "subitem " else "item ",
li(class("nav-item"),
p([class(item_class+"clickable "+_menu_id+"_icon"+(if _menu_id=selected then " active" else "")+ " "+join(" ", _classes)),
event(onclick, load_content(_target_id, _action, _extra, _replace, _overlay))],text(_T(_text)))),
title(_title_id, subtitle, _classes, _text) then
li([class(if subtitle then "menu_subtitle" else "nav-header"), class((if _title_id=selected then " active" else "")+ " "+join(" ", _classes))], text([],_T(_text)))
// p([class("menu_title"), class("item "+_title_id+"_icon"+if _title_id=selected then " selected" else ""+ " "+join(" ", _classes))], text([],_T(_text)))
},
make_sidebar(_T, t, selected, [ entry . so_far])
}.
public define HTML
make_sidebar
(
(String) -> String _T, //translator function
Left_Menu l_menu
)=
if l_menu is
{
no_left_menu then empty,
left_menu(entries, selected) then
partial_content([css(css_file("/css/left_menu.css"))],
make_sidebar(_T, entries, selected, [])
)
}
.
public define One set_current_left_menu(WEB_Session s, String v) = replace_String(s.fields, "AWS_CURRENT_LEFT_MENU", v).
public define One set_current_left_menu(Var(List(Session_Field)) fields, String v) = replace_String(fields, "AWS_CURRENT_LEFT_MENU", v).
public define String get_current_left_menu(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_LEFT_MENU", "").
public define One set_selected_left_menu_entry(WEB_Session s, String v) = replace_String(s.fields, "AWS_SELECTED_LEFT_MENU_ENTRY", v).
public define One set_selected_left_menu_entry(Var(List(Session_Field)) fields, String v) = replace_String(fields, "AWS_SELECTED_LEFT_MENU_ENTRY", v).
public define String get_selected_left_menu_entry(WEB_Session s) = get_String (s.fields, "AWS_SELECTED_LEFT_MENU_ENTRY", "").