Commit de116e9d178764e5cd2c1ba461502b86e0324e07

Authored by David RENÉ
1 parent 491c5383

Add draw_web_request in WEB_Session to allows to store the web request which ret…

…urn full draw html. When we need to redraw the html content in case of language change we can redirect to that draw_web_request.
Since we have an heavy use of load content redirect to previous can cause a drawing of the content of the ajax return during the load content. This fix that behavior.
web/CXM_making_a_web_site.anubis
@@ -3361,11 +3361,27 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3361,11 +3361,27 @@ define (Maybe(WEB_Session), HTTP_Answer)
3361 success(new_controller) then apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, new_session, failure, initial_session, logger), 3361 success(new_controller) then apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, new_session, failure, initial_session, logger),
3362 }, 3362 },
3363 success(action_name) then 3363 success(action_name) then
3364 - logger(logInfo, "ACTION_NAME ["+action_name+"]"); 3364 + logger(logInfo, "ACTION_NAME ["+action_name+"] from IP "+get_String(_session.fields, "IP", ""));
3365 if apply_action(_session, action_name, *controller.controller_actions) is 3365 if apply_action(_session, action_name, *controller.controller_actions) is
3366 { 3366 {
3367 - http_answer(session, answer) then (success(session), answer),  
3368 - http_answer(answer) then (success(_session), answer), 3367 + http_answer(session, answer) then
  3368 + since session is web_session(id, lang, entries, current, previous, _),
  3369 + with new_web_session = web_session(id, lang, entries, current, previous, current),
  3370 +// println("***** http_answer(session, answer) record new draw point to *****");
  3371 +// println("web arguments:"+
  3372 +// dump_web_arg_values(*current.lwa));
  3373 +// println("************************************");
  3374 + (success(new_web_session), answer),
  3375 +
  3376 + http_answer(answer) then
  3377 + since _session is web_session(id, lang, entries, current, previous, _),
  3378 + with new_web_session = web_session(id, lang, entries, current, previous, current),
  3379 +// println("***** http_answer(answer) record new draw point to *****");
  3380 +// println("web arguments:"+
  3381 +// dump_web_arg_values(*current.lwa));
  3382 +// println("************************************");
  3383 + (success(new_web_session), answer),
  3384 +
3369 redirect(new_session) then 3385 redirect(new_session) then
3370 if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers, logger) is 3386 if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers, logger) is
3371 { 3387 {
@@ -3386,16 +3402,16 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3386,16 +3402,16 @@ define (Maybe(WEB_Session), HTTP_Answer)
3386 { 3402 {
3387 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), 3403 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)),
3388 success(new_controller) then 3404 success(new_controller) then
3389 - since _session is web_session(id, lang, entries, _, previous),  
3390 - apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session, logger), 3405 + since _session is web_session(id, lang, entries, _, previous, draw),
  3406 + apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous, draw), failure, initial_session, logger),
3391 }, 3407 },
3392 redirect_to_previous(entries) then 3408 redirect_to_previous(entries) then
3393 if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers, logger) is 3409 if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers, logger) is
3394 { 3410 {
3395 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), 3411 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)),
3396 success(new_controller) then 3412 success(new_controller) then
3397 - since _session is web_session(id, lang, _, _, previous),  
3398 - apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session, logger), 3413 + since _session is web_session(id, lang, _, _, previous, draw),
  3414 + apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous, draw), failure, initial_session, logger),
3399 }, 3415 },
3400 //ajax(answer) then (failure, answer), 3416 //ajax(answer) then (failure, answer),
3401 //ajax with modified session that must be saved 3417 //ajax with modified session that must be saved
@@ -3408,8 +3424,14 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3408,8 +3424,14 @@ define (Maybe(WEB_Session), HTTP_Answer)
3408 send_file(file_path, c_disposition) then (failure, send_file(file_path, c_disposition)), 3424 send_file(file_path, c_disposition) then (failure, send_file(file_path, c_disposition)),
3409 renderer_content(session, content) then 3425 renderer_content(session, content) then
3410 with the_session = if session is {failure then _session, success(__session) then __session}, 3426 with the_session = if session is {failure then _session, success(__session) then __session},
3411 - with page_renderer = get_page_renderer(the_session, _current_page_renderer, page_renderers, logger),  
3412 - (session, page_renderer.page_layout(the_session, plugins, content)) 3427 + since the_session is web_session(id, lang, entries, current, previous, _),
  3428 + with new_web_session = web_session(id, lang, entries, current, previous, current),
  3429 +// println("***** renderer_content(session, content) record new draw point to *****");
  3430 +// println("web arguments:"+
  3431 +// dump_web_arg_values(*current.lwa));
  3432 +// println("************************************");
  3433 + with page_renderer = get_page_renderer(new_web_session, _current_page_renderer, page_renderers, logger),
  3434 + (success(new_web_session), page_renderer.page_layout(new_web_session, plugins, content))
3413 } 3435 }
3414 } 3436 }
3415 . 3437 .
@@ -3493,12 +3515,14 @@ public define Web_Site @@ -3493,12 +3515,14 @@ public define Web_Site
3493 out_of_date(previous_session) then 3515 out_of_date(previous_session) then
3494 logger(logInfo, "previous out_of_date"); 3516 logger(logInfo, "previous out_of_date");
3495 //expired_session(previous_session, http_info, var(_lwa), is_https), 3517 //expired_session(previous_session, http_info, var(_lwa), is_https),
3496 - since previous_session is web_session(id, lang, entries, previous, _),  
3497 - web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous) 3518 + since previous_session is web_session(id, lang, entries, previous, _, draw),
  3519 + replace_String(entries, "IP", get_String(_lwa, "x-forwarded-for", ip_addr_to_string(http_info.ip_address)));
  3520 + web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous, draw)
3498 3521
3499 still_valid(previous_session) then 3522 still_valid(previous_session) then
3500 - since previous_session is web_session(id, lang, entries, previous, _),  
3501 - web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous) 3523 + since previous_session is web_session(id, lang, entries, previous, _, draw),
  3524 + replace_String(entries, "IP", get_String(_lwa, "x-forwarded-for", ip_addr_to_string(http_info.ip_address)));
  3525 + web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous, draw)
3502 }, 3526 },
3503 3527
3504 3528
web/CXM_web_session.anubis
@@ -92,7 +92,8 @@ public type WEB_Session: @@ -92,7 +92,8 @@ public type WEB_Session:
92 String language, 92 String language,
93 Var(List(WEB_Session_Field)) fields, 93 Var(List(WEB_Session_Field)) fields,
94 WEB_Request web_request, 94 WEB_Request web_request,
95 - WEB_Request previous_web_request 95 + WEB_Request previous_web_request,
  96 + WEB_Request draw_web_request
96 ). 97 ).
97 98
98 public type WEB_Session_No_Var: 99 public type WEB_Session_No_Var:
@@ -101,7 +102,8 @@ public type WEB_Session_No_Var: @@ -101,7 +102,8 @@ public type WEB_Session_No_Var:
101 String language, 102 String language,
102 List(WEB_Session_Field_No_Var) fields, 103 List(WEB_Session_Field_No_Var) fields,
103 WEB_Request_No_Var web_request, 104 WEB_Request_No_Var web_request,
104 - WEB_Request_No_Var previous_web_request 105 + WEB_Request_No_Var previous_web_request,
  106 + WEB_Request_No_Var draw_web_request,
105 ). 107 ).
106 108
107 public define Var(List(WEB_Session_Field)) 109 public define Var(List(WEB_Session_Field))
@@ -148,10 +150,11 @@ public define WEB_Session @@ -148,10 +150,11 @@ public define WEB_Session
148 ( 150 (
149 WEB_Session_No_Var _session 151 WEB_Session_No_Var _session
150 )= 152 )=
151 - since _session is web_session(id, language, fields, c_web_request, p_web_request), 153 + since _session is web_session(id, language, fields, c_web_request, p_web_request, d_web_request),
152 web_session(id, language, to_WEB_Session_Field(fields), 154 web_session(id, language, to_WEB_Session_Field(fields),
153 web_request(c_web_request.http_info, var(c_web_request.lwa), c_web_request.is_https), 155 web_request(c_web_request.http_info, var(c_web_request.lwa), c_web_request.is_https),
154 - web_request(p_web_request.http_info, var(p_web_request.lwa), p_web_request.is_https) 156 + web_request(p_web_request.http_info, var(p_web_request.lwa), p_web_request.is_https),
  157 + web_request(d_web_request.http_info, var(d_web_request.lwa), d_web_request.is_https),
155 ) 158 )
156 . 159 .
157 160
@@ -160,10 +163,11 @@ public define WEB_Session_No_Var @@ -160,10 +163,11 @@ public define WEB_Session_No_Var
160 ( 163 (
161 WEB_Session _session 164 WEB_Session _session
162 )= 165 )=
163 - since _session is web_session(id, language, fields, c_web_request, p_web_request), 166 + since _session is web_session(id, language, fields, c_web_request, p_web_request, d_web_request),
164 web_session(id, language, to_WEB_Session_Field_No_Var(*fields), 167 web_session(id, language, to_WEB_Session_Field_No_Var(*fields),
165 web_request(c_web_request.http_info, *c_web_request.lwa, c_web_request.is_https), 168 web_request(c_web_request.http_info, *c_web_request.lwa, c_web_request.is_https),
166 - web_request(p_web_request.http_info, *p_web_request.lwa, p_web_request.is_https) 169 + web_request(p_web_request.http_info, *p_web_request.lwa, p_web_request.is_https),
  170 + web_request(d_web_request.http_info, *d_web_request.lwa, d_web_request.is_https),
167 ) 171 )
168 . 172 .
169 173
@@ -1175,7 +1179,7 @@ public define String @@ -1175,7 +1179,7 @@ public define String
1175 ( 1179 (
1176 WEB_Session _session 1180 WEB_Session _session
1177 )= 1181 )=
1178 - since _session is web_session(id, language, fields, web_request, previous_web_request), 1182 + since _session is web_session(id, language, fields, web_request, previous_web_request, draw_web_request),
1179 "WEB Session Dump: \n"+ 1183 "WEB Session Dump: \n"+
1180 "----------------- \n"+ 1184 "----------------- \n"+
1181 "Session ID : ["+id+"]\n"+ 1185 "Session ID : ["+id+"]\n"+
@@ -1195,6 +1199,13 @@ public define String @@ -1195,6 +1199,13 @@ public define String
1195 "http_info:\n"+ 1199 "http_info:\n"+
1196 dump_http_info(previous_web_request.http_info)+"\n"+ 1200 dump_http_info(previous_web_request.http_info)+"\n"+
1197 "web arguments:"+ 1201 "web arguments:"+
1198 - dump_web_arg_values(*previous_web_request.lwa)+"\n"  
1199 - 1202 + dump_web_arg_values(*previous_web_request.lwa)+"\n\n"+
  1203 + "-----------------------------------------------------------------------------\n"+
  1204 + "Draw WEB REQUEST:\n"+
  1205 + "-----------------------------------------------------------------------------\n"+
  1206 + "is https "+to_String(draw_web_request.is_https)+"\n"+
  1207 + "http_info:\n"+
  1208 + dump_http_info(draw_web_request.http_info)+"\n"+
  1209 + "web arguments:"+
  1210 + dump_web_arg_values(*draw_web_request.lwa)+"\n"
1200 . 1211 .