From 045c7412fb0c12d67b57a143bc855b010b13cd85 Mon Sep 17 00:00:00 2001 From: totoro Date: Sun, 10 May 2020 01:58:42 +0900 Subject: [PATCH] add new type in session which is also session --- generic/session.anubis | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- generic/types/session.anubis | 25 ++++++++++++++++++++++--- web/CXM_web_session.anubis | 46 ++++++++++++++++++++++++++++++++-------------- web/plugin/plugin.anubis | 2 +- web_controllers/language/language_management.anubis | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 5 files changed, 213 insertions(+), 31 deletions(-) diff --git a/generic/session.anubis b/generic/session.anubis index 3185d67..802048e 100644 --- a/generic/session.anubis +++ b/generic/session.anubis @@ -25,7 +25,7 @@ public define Session_Field public define Var(List(Session_Field)) to_Session_Field ( - List(Session_Field_No_Var) fields + List(Session_Field_No_Var) _fields )= var(map((Session_Field_No_Var field) |-> with datum = if field.field_datum is{ @@ -42,11 +42,12 @@ public define Var(List(Session_Field)) word16(v) then word16(v), word8(v) then word8(v), word4(v) then word4(v), - fields_set(v) then fields_set(to_Session_Field(v)) + fields_set(v) then fields_set(to_Session_Field(v)), + session(v) then session(session(v.session_id, to_Session_Field(v.fields))), }, session_field(field.field_name, field.field_type, var(datum)) , - fields) + _fields) ) . @@ -54,7 +55,7 @@ public define Var(List(Session_Field)) public define List(Session_Field_No_Var) to_Session_Field_No_Var ( - List(Session_Field) fields + List(Session_Field) _fields )= map((Session_Field field) |-> with datum = if *field.field_datum is{ @@ -72,8 +73,12 @@ public define List(Session_Field_No_Var) word8(v) then word8(v), word4(v) then word4(v), fields_set(v) then fields_set(to_Session_Field_No_Var(*v)) + session(v) then session(session(v.session_id, to_Session_Field_No_Var(*v.fields))) }, - session_field(field.field_name, field.field_type, datum), fields) + session_field(field.field_name, field.field_type, datum) + , + _fields + ) . @@ -997,8 +1002,8 @@ public define One /*************** Fields_set *****************/ - Maybe(Word4) get_Word4(fields, _field_name) - Word4 get_Word4(fields, _field_name, default_value) + Maybe(Var(List(Session_Field))) get_Fields_set(fields, _field_name) + Var(List(Session_Field)) get_Fields_set(fields, _field_name, default_value) public define Maybe(Var(List(Session_Field))) get_Fields_set @@ -1060,6 +1065,71 @@ public define One remove_any(_fields, fields_set_t, _field_name) . + /*************** Session *****************/ + + Maybe(Session) get_Session(fields, _field_name) + Session get_Session(fields, _field_name, default_value) + +public define Maybe(Session) + get_Session + ( + Var(List(Session_Field)) fields, + String _field_name, + ) = + if get_field(*fields, session_t, _field_name) is + { + failure then failure, + success(datum) then + if datum is session(value) then + success(value) + else + failure + } +. + +public define Session + get_Session + ( + Var(List(Session_Field)) fields, + String _field_name, + Session default_value + ) = + if get_Session(fields, _field_name) is + { + failure then default_value + success(value) then value + }. + + +public define One + put_Session + ( + Var(List(Session_Field)) _fields, + String _field_name, + Session _field_value + )= + _fields <- [session_field(_field_name, session_t, var(session(_field_value))) . *_fields] +. + +public define One + replace_Session + ( + Var(List(Session_Field)) _fields, + String _field_name, + Session _field_value + )= + replace_any(_fields, session_t, _field_name, session(_field_value)) +. + +public define One + remove_Session + ( + Var(List(Session_Field)) _fields, + String _field_name + )= + remove_any(_fields, session_t, _field_name) +. + /*************** Serialized Type *****************/ public define One @@ -1151,7 +1221,8 @@ public define String word16(_word16) then name+", Type = Word16, Value = ["+to_decimal(_word16)+"]", word8(_word8) then name+", Type = Word8, Value = ["+to_decimal(_word8)+"]", word4(_word4) then name+", Type = Word4, Value = ["+to_decimal(_word4)+"]", - fields_set(_fields) then name+", Type = Fields_set, \n"+dump_Session_Field_list(*_fields, indent+" ") + fields_set(_fields) then name+", Type = Fields_set, \n"+dump_Session_Field_list(*_fields, indent+" "), + session(_session) then name+", Type = Session, session id = ["+_session.session_id+"]\n"+dump_Session_Field_list(*_session.fields, indent+" "), } . diff --git a/generic/types/session.anubis b/generic/types/session.anubis index 4a87af1..73944e8 100644 --- a/generic/types/session.anubis +++ b/generic/types/session.anubis @@ -11,6 +11,8 @@ transmit xlib/database/db_types.anubis public type Session_Field:... public type Session_Field_No_Var:... +public type Session:... +public type Session_No_Var:... public type Session_Field_Datum: string(String), //fully implented @@ -26,7 +28,8 @@ public type Session_Field_Datum: word16(Word16), word8(Word8), word4(Word4), - fields_set(Var(List(Session_Field))) + fields_set(Var(List(Session_Field))), + session(Session) //WEB_Request . @@ -44,7 +47,8 @@ public type Session_Field_Datum_No_Var: word16(Word16), word8(Word8), word4(Word4), - fields_set(List(Session_Field_No_Var)) + fields_set(List(Session_Field_No_Var)), + session(Session_No_Var) //WEB_Request . @@ -62,7 +66,8 @@ public type Session_Field_Type: word16_t, word8_t, word4_t, - fields_set_t + fields_set_t, + session_t . public type Session_Field: @@ -80,3 +85,17 @@ public type Session_Field_No_Var: Session_Field_Datum_No_Var field_datum //Var because it can be replaced ) . + +public type Session: + session( + String session_id, + Var(List(Session_Field)) fields + ) +. + +public type Session_No_Var: + session( + String session_id, + List(Session_Field_No_Var) fields + ) +. diff --git a/web/CXM_web_session.anubis b/web/CXM_web_session.anubis index efe65ac..d2d8048 100644 --- a/web/CXM_web_session.anubis +++ b/web/CXM_web_session.anubis @@ -68,6 +68,8 @@ public define WEB_Session_No_Var ) . +public define One replace_String(WEB_Session s, String n, String v) = replace_String(s.fields, n, v). + /************************************************/ "AWS_CURRENT_PAGE_TITLE" String current web page title "AWS_CURRENT_PAGE" String current web page @@ -77,32 +79,32 @@ public define WEB_Session_No_Var "AWS_CURRENT_PAGE_RENDERER" String current page renderer -public define One set_web_site_directory(WEB_Session s, String n) = replace_String(s.fields, "AWS_WEB_SITE_DIR", n). -public define One set_web_site_directory(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_WEB_SITE_DIR", n). +public define One set_web_site_directory(WEB_Session s, String v) = replace_String(s.fields, "AWS_WEB_SITE_DIR", v). +public define One set_web_site_directory(Var(List(Session_Field)) fields, String v) = replace_String(fields, "AWS_WEB_SITE_DIR", v). public define String get_web_site_directory(WEB_Session s) = get_String (s.fields, "AWS_WEB_SITE_DIR", ""). -public define One set_web_app(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_APP", n). -public define One set_web_app(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_APP", n). +public define One set_web_app(WEB_Session s, String v) = replace_String(s.fields, "AWS_CURRENT_APP", v). +public define One set_web_app(Var(List(Session_Field)) fields, String v) = replace_String(fields, "AWS_CURRENT_APP", v). public define String get_web_app(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_APP", ""). -public define One set_web_space(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_SPACE", n). -public define One set_web_space(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_SPACE", n). +public define One set_web_space(WEB_Session s, String v)= replace_String(s.fields, "AWS_CURRENT_SPACE", v). +public define One set_web_space(Var(List(Session_Field)) fields, String v)= replace_String(fields, "AWS_CURRENT_SPACE", v). public define String get_web_space(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_SPACE", ""). -public define One set_web_content(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_CONTENT", n). -public define One set_web_content(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_CONTENT", n). +public define One set_web_content(WEB_Session s, String v)= replace_String(s.fields, "AWS_CURRENT_CONTENT", v). +public define One set_web_content(Var(List(Session_Field)) fields, String v)= replace_String(fields, "AWS_CURRENT_CONTENT", v). public define String get_web_content(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_CONTENT", ""). -public define One set_page(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_PAGE", n). -public define One set_page(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_PAGE", n). +public define One set_page(WEB_Session s, String v)= replace_String(s.fields, "AWS_CURRENT_PAGE", v). +public define One set_page(Var(List(Session_Field)) fields, String v)= replace_String(fields, "AWS_CURRENT_PAGE", v). public define String get_page(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE", ""). -public define One set_page_title(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_PAGE_TITLE", n). -public define One set_page_title(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_PAGE_TITLE", n). +public define One set_page_title(WEB_Session s, String v) = replace_String(s.fields, "AWS_CURRENT_PAGE_TITLE", v). +public define One set_page_title(Var(List(Session_Field)) fields, String v) = replace_String(fields, "AWS_CURRENT_PAGE_TITLE", v). public define String get_page_title(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE_TITLE", ""). -public define One set_renderer(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_PAGE_RENDERER", n). -public define One set_renderer(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_PAGE_RENDERER", n). +public define One set_renderer(WEB_Session s, String v) = replace_String(s.fields, "AWS_CURRENT_PAGE_RENDERER", v). +public define One set_renderer(Var(List(Session_Field)) fields, String v) = replace_String(fields, "AWS_CURRENT_PAGE_RENDERER", v). public define String get_renderer(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE_RENDERER", ""). public define One put_Serialized_type(WEB_Session s, String n, $T type) = put_Serialized_type(s.fields, n, type). @@ -127,12 +129,28 @@ public define String public define String dump_WEB_Session_Fields ( + List(Session_Field) _fields + )= + dump_WEB_Session_Fields(_fields, "") +. + +public define String + dump_WEB_Session_Fields + ( Var(List(Session_Field)) _fields, String indent )= dump_WEB_Session_Fields(*_fields, indent) . +public define String + dump_WEB_Session_Fields + ( + Var(List(Session_Field)) _fields + )= + dump_WEB_Session_Fields(*_fields, "") +. + *---------------------- DUMP ------------------* String language, diff --git a/web/plugin/plugin.anubis b/web/plugin/plugin.anubis index e3cae40..ce5accf 100644 --- a/web/plugin/plugin.anubis +++ b/web/plugin/plugin.anubis @@ -10,7 +10,7 @@ read system/logger.anubis //read app/app_constants.anubis read xlib/web/widgets/left_menu.anubis transmit xlib/web/types/making_a_web_site.anubis -read xlib/web/types/controllers_web_site.anubis +transmit xlib/web/types/controllers_web_site.anubis read xlib/web/widgets/menu.anubis read hayamiki_lib/model/database.anubis read hayamiki_lib/view/view_table_manager_types.anubis diff --git a/web_controllers/language/language_management.anubis b/web_controllers/language/language_management.anubis index 7458df8..9b8bb60 100644 --- a/web_controllers/language/language_management.anubis +++ b/web_controllers/language/language_management.anubis @@ -12,21 +12,23 @@ read locale/L3LanguageInfo.anubis read xlib/web/types/controllers_web_site.anubis read xlib/web/CXM_web_session.anubis +public define One set_dictionary(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_DICTIONARY", n). +public define One set_dictionary(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_DICTIONARY", n). +public define String get_dictionary(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_DICTIONARY", ""). public define String default_language = "en". public define (String symbolic_name) -> String make_translate_function ( - WEB_Session _session, + String dictionary_collection_name, + String lang, (LogLevel, String) -> One logger ) = - with lang = _session.language, - app_dictionnary = get_String(_session.fields, "AWS_CURRENT_DICTIONARY", ""), - if l3_load_base(app_dictionnary) is + if l3_load_base(dictionary_collection_name) is { failure then - logger(logError, "Can't load translation dictionnary for '"+app_dictionnary+"'"); + logger(logError, "Can't load translation dictionnary for '"+dictionary_collection_name+"'"); (String symbolic_name) |-> "<" + symbolic_name + ">", success(L3 local) then @@ -39,6 +41,17 @@ public define (String symbolic_name) -> String (String symbolic_name) |-> l3_get_text(l3_object, symbolic_name) } . +public define (String symbolic_name) -> String + make_translate_function + ( + WEB_Session _session, + (LogLevel, String) -> One logger + ) = + with lang = _session.language, + app_dictionnary = get_String(_session.fields, "AWS_CURRENT_DICTIONARY", ""), + + make_translate_function(app_dictionnary, lang, logger) +. public define (String symbolic_name) -> String make_translate_function @@ -64,3 +77,64 @@ public define List((List(CoreAttrs),WebArgValue, String)) l3_get_all_dicos(dictionary_collection_name) ) . + +define HTML_Off_Form + language_line + ( + String language_code, + String language + )= + li([style("background-image: url(../flags/"+language_code+".png);"), + event(onclick, "language_changed('"+language_code+"');")], text(language)) +. + +public define HTML_Partial_Content + flags_menu + ( + String dictionary_collection_name, + String lang, + Bool show_symbolic, + (LogLevel, String) -> One logger + ) = + with make_line = (L3LangDicProperty dico_prop) |-> + if dico_prop is l3LangDicProperty( _, sha1, lang_code, user_def, creat, update) then + with lang_info = l3_get_language_info(lang_code), + if lang_code = lang then + empty + else + language_line(lang_code, self_name(lang_info)), + partial_content([ + css(css_file("css/flags_menu.css")), + js(js_file("js/cxm/cxm.js")) + ], + [ + dl([ + //literal("
 
\n"), + literal(""), + dd([style("display: none"),id("drapo1"), event(onmouseover, "montre('drapo1');"), event(onmouseout, "montre();")], + ul( + map(make_line, l3_get_all_dicos(dictionary_collection_name))+ + [ + if show_symbolic then + language_line("symb", "symbolic") + else + empty + ] + )), + ]) //!dl + ] + ) +. + +public define HTML_Partial_Content + flags_menu + ( + WEB_Session _session, + Bool show_symbolic, + (LogLevel, String) -> One logger + ) = + with lang = _session.language, + app_dictionnary = get_dictionary(_session), + + flags_menu(app_dictionnary, lang, show_symbolic, logger) +. -- libgit2 0.21.4