Commit de116e9d178764e5cd2c1ba461502b86e0324e07
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.
Showing
2 changed files
with
57 additions
and
22 deletions
Show diff stats
web/CXM_making_a_web_site.anubis
| ... | ... | @@ -3361,11 +3361,27 @@ define (Maybe(WEB_Session), HTTP_Answer) |
| 3361 | 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 | 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 | 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 | 3385 | redirect(new_session) then |
| 3370 | 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 | 3402 | { |
| 3387 | 3403 | failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), |
| 3388 | 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 | 3408 | redirect_to_previous(entries) then |
| 3393 | 3409 | if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers, logger) is |
| 3394 | 3410 | { |
| 3395 | 3411 | failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), |
| 3396 | 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 | 3416 | //ajax(answer) then (failure, answer), |
| 3401 | 3417 | //ajax with modified session that must be saved |
| ... | ... | @@ -3408,8 +3424,14 @@ define (Maybe(WEB_Session), HTTP_Answer) |
| 3408 | 3424 | send_file(file_path, c_disposition) then (failure, send_file(file_path, c_disposition)), |
| 3409 | 3425 | renderer_content(session, content) then |
| 3410 | 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 | 3515 | out_of_date(previous_session) then |
| 3494 | 3516 | logger(logInfo, "previous out_of_date"); |
| 3495 | 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 | 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 | 92 | String language, |
| 93 | 93 | Var(List(WEB_Session_Field)) fields, |
| 94 | 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 | 99 | public type WEB_Session_No_Var: |
| ... | ... | @@ -101,7 +102,8 @@ public type WEB_Session_No_Var: |
| 101 | 102 | String language, |
| 102 | 103 | List(WEB_Session_Field_No_Var) fields, |
| 103 | 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 | 109 | public define Var(List(WEB_Session_Field)) |
| ... | ... | @@ -148,10 +150,11 @@ public define WEB_Session |
| 148 | 150 | ( |
| 149 | 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 | 154 | web_session(id, language, to_WEB_Session_Field(fields), |
| 153 | 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 | 163 | ( |
| 161 | 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 | 167 | web_session(id, language, to_WEB_Session_Field_No_Var(*fields), |
| 165 | 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 | 1179 | ( |
| 1176 | 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 | 1183 | "WEB Session Dump: \n"+ |
| 1180 | 1184 | "----------------- \n"+ |
| 1181 | 1185 | "Session ID : ["+id+"]\n"+ |
| ... | ... | @@ -1195,6 +1199,13 @@ public define String |
| 1195 | 1199 | "http_info:\n"+ |
| 1196 | 1200 | dump_http_info(previous_web_request.http_info)+"\n"+ |
| 1197 | 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 | . | ... | ... |