/* * Created by PyramIDE. * User: フランスのトトロ aka (David RENÉ) * Date: 29/05/2019 * Time: 17:26 * © 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_left_menu ( (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 ", 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 ", p([class(item_class+"clickable "+_menu_id+"_icon"+(if _menu_id=selected then " selected" 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 ", p([class(item_class+"clickable "+_menu_id+"_icon"+(if _menu_id=selected then " selected" else "")+ " "+join(" ", _classes)), event(onclick, load_content(_target_id, _action, _extra, _replace, _overlay))],text(_T(_text))), title(_title_id, subtitle, _classes, _text) then p([class(if subtitle then "menu_subtitle" else "menu_title"), class((if _title_id=selected then " selected" 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_left_menu(_T, t, selected, [ entry . so_far]) }. public define HTML make_left_menu ( (String) -> String _T, //translator function Left_Menu l_menu )= if l_menu is { no_left_menu then empty, left_menu(entries, selected) then head_tags([css(css_file("/css/left_menu.css"))], make_left_menu(_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", "").