Difference between revisions of "VbzCart/v1/class/vcPageContent ckout/DoPage"
< VbzCart | v1/class | vcPageContent ckout
Jump to navigation
Jump to search
m (Woozle moved page VbzCart/v1/class/vcPageContent ckout/ProcessPage to VbzCart/v1/class/vcPageContent ckout/DoPage: renamed method) |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{page/code/class/method}} | {{page/code/class/method}} | ||
==Notes== | ==Notes== | ||
− | '''2019- | + | '''2019-05-05''' Revised order of events: |
− | * | + | * PHASE I: receive |
− | * detect | + | ** '''detect submitted page''' - $this->GetPageKey_forData(); |
− | * load | + | ** '''load controls to receive that''' |
− | * receive | + | ** '''receive form data''' |
− | * | + | ** '''save form data''' |
− | * determine page to | + | *** save back to blob -- the Cart should save the blob field on return |
− | ** calculate if requested page should be displayed | + | * PHASE II: display |
+ | ** '''determine page to show''' - $this->HandlePageRequest(); | ||
+ | *** calculate if requested page should be displayed (if any required fields are missing, can't advance) | ||
+ | ** '''load controls to display that''' | ||
+ | ** '''load any saved values from blob''' | ||
+ | ** DON'T '''display the page''' because that is handled by the {{l/version/method|vcPageContent_ckout|Render}}() event. | ||
− | + | Old notes: | |
− | * | + | ==History== |
− | * | + | * '''2019-05-22''' This has been renamed to DoPage() and substantially rewritten; other related objects gutted |
+ | * '''2019-05-05''' Order of events revised | ||
+ | * '''{{l/sub|2019-04-27}}''' old notes archived | ||
==Calls== | ==Calls== | ||
* {{l/version/method|vcPageContent_ckout|OnRunCalculations}}() [protected; events system] calls... | * {{l/version/method|vcPageContent_ckout|OnRunCalculations}}() [protected; events system] calls... | ||
** {{hilite|{{l/version/method|vcPageContent_ckout|ProcessPage}}()}} calls | ** {{hilite|{{l/version/method|vcPageContent_ckout|ProcessPage}}()}} calls | ||
− | |||
*** {{l/version/method|vcPageContent_ckout|DetectPageRequest}}() | *** {{l/version/method|vcPageContent_ckout|DetectPageRequest}}() | ||
*** {{l/version/method|vcPageContent_ckout|HandlePageRequest}}() | *** {{l/version/method|vcPageContent_ckout|HandlePageRequest}}() | ||
+ | *** {{l/version/method|vcPageContent_ckout|CapturePage}}($oRes); | ||
+ | * Internal states: | ||
+ | ** {Set/Get}PageKey_Request() - the page requested by the user | ||
+ | ** {Set/Get}PageKey_forShow() - the page to display | ||
+ | ** {{l/version/method|vcPageContent_ckout|GetPageKey_forData}}() | ||
==Code== | ==Code== | ||
<source lang=php> | <source lang=php> | ||
Line 40: | Line 51: | ||
$gotPgDest = FALSE; | $gotPgDest = FALSE; | ||
$gotPgSrce = FALSE; | $gotPgSrce = FALSE; | ||
+ | |||
+ | // 2019-04-28 Should this bit be moved into HandlePageRequest()? | ||
$sKey = fcHTTP::Request()->GetString(KSQ_ARG_PAGE_DEST); | $sKey = fcHTTP::Request()->GetString(KSQ_ARG_PAGE_DEST); | ||
if (is_null($sKey)) { | if (is_null($sKey)) { | ||
Line 47: | Line 60: | ||
$this->SetPageKey_forShow($sKey); | $this->SetPageKey_forShow($sKey); | ||
} | } | ||
+ | // [end of "this bit"] | ||
// get actual page to display | // get actual page to display | ||
Line 77: | Line 91: | ||
$this->doRefrBtn = FALSE; | $this->doRefrBtn = FALSE; | ||
− | // | + | $this->DetectPageRequest(); |
+ | $this->HandlePageRequest(); | ||
+ | |||
+ | // controls need to get added by this point | ||
+ | echo 'RECEIVING FORM IN ['.$this->GetName().']<br>'; | ||
$oRes = $this->GetFormObject()->Receive($_POST); // returns fcFormResult | $oRes = $this->GetFormObject()->Receive($_POST); // returns fcFormResult | ||
− | + | ||
− | |||
$this->CapturePage($oRes); | $this->CapturePage($oRes); | ||
− | |||
− | |||
//$this->GetSkinObject()->Content('main',$this->RenderPage()); | //$this->GetSkinObject()->Content('main',$this->RenderPage()); | ||
} | } | ||
</source> | </source> |
Latest revision as of 13:10, 8 June 2019
Notes
2019-05-05 Revised order of events:
- PHASE I: receive
- detect submitted page - $this->GetPageKey_forData();
- load controls to receive that
- receive form data
- save form data
- save back to blob -- the Cart should save the blob field on return
- PHASE II: display
- determine page to show - $this->HandlePageRequest();
- calculate if requested page should be displayed (if any required fields are missing, can't advance)
- load controls to display that
- load any saved values from blob
- DON'T display the page because that is handled by the vcPageContent_ckout::Render() event.
- determine page to show - $this->HandlePageRequest();
Old notes:
History
- 2019-05-22 This has been renamed to DoPage() and substantially rewritten; other related objects gutted
- 2019-05-05 Order of events revised
- 2019-04-27 old notes archived
Calls
- vcPageContent_ckout::OnRunCalculations() [protected; events system] calls...
- Internal states:
- {Set/Get}PageKey_Request() - the page requested by the user
- {Set/Get}PageKey_forShow() - the page to display
- vcPageContent_ckout::GetPageKey_forData()
Code
/*----
PURPOSE: core form processing & page rendering
ACTIONS:
* dispatches to ParseInput_Login() & HandleInput_Login() to render/handle login controls
* logs a Cart event to record which page was displayed
* sets PageKey_forShow()
* dispatches to RenderPage() to render the page
HISTORY:
2018-07-21
* ParseInput_Login() and HandleInput_Login() were defined in files which have now
been removed from VbzCart. This *should* now be handled automatically by Ferreteria
if the right page component class is used.
* Also, PageKey_forShow_default() no longer exists; I'm going to assume
that we can just use PageKey_forShow().
TODO: Consider whether maybe this functionality should be moved into $oContent.
*/
protected function ProcessPage() {
$gotPgDest = FALSE;
$gotPgSrce = FALSE;
// 2019-04-28 Should this bit be moved into HandlePageRequest()?
$sKey = fcHTTP::Request()->GetString(KSQ_ARG_PAGE_DEST);
if (is_null($sKey)) {
$this->SetPageKey_forShow(KSQ_PAGE_SHIP);
} else {
$gotPgDest = TRUE;
$this->SetPageKey_forShow($sKey);
}
// [end of "this bit"]
// get actual page to display
$sShow = $this->GetPageKey_forShow();
/*
$arEv = array(
fcrEvent::KF_CODE => 'PG-IN',
fcrEvent::KF_DESCR_FINISH => 'showing page "'.$sShow.'"',
fcrEvent::KF_WHERE => 'HandleInput()',
); */
$rcCart = $this->GetCartRecord_ifWriteable();
if (is_null($rcCart)) {
$sMsg = fcApp::Me()->MessagesString();
$wpCart = vcGlobals::Me()->GetWebPath_forCartPage();
if (is_null($sMsg)) {
// 2016-04-24 This can happen when browser fingerprint changes.
//throw new exception('In checkout with no current cart set, but there are no error messages.');
$sMsg = "You don't seem to have a shopping cart yet, so you can't check out. If you had one before, your IP address or browser version may have changed.";
fcHTTP::DisplayOnReturn($sMsg);
fcHTTP::Redirect($wpCart);
} else {
fcHTTP::DisplayOnReturn($sMsg);
fcHTTP::Redirect($wpCart);
}
}
//$rcEv = $rcCart->CreateEvent($arEv);
$rcEv = $rcCart->CreateEvent('PG-IN',"showing page '$sShow'"); // 2018-07-22 can add array (3rd arg) with additional info if needed
$this->doBackBtn = TRUE;
$this->doRefrBtn = FALSE;
$this->DetectPageRequest();
$this->HandlePageRequest();
// controls need to get added by this point
echo 'RECEIVING FORM IN ['.$this->GetName().']<br>';
$oRes = $this->GetFormObject()->Receive($_POST); // returns fcFormResult
$this->CapturePage($oRes);
//$this->GetSkinObject()->Content('main',$this->RenderPage());
}