VbzCart/v1/class/vcPageContent ckout/DoPage

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< VbzCart‎ | v1/class‎ | vcPageContent ckout
Revision as of 13:10, 8 June 2019 by Woozle (talk | contribs) (Woozle moved page VbzCart/v1/class/vcPageContent ckout/ProcessPage to VbzCart/v1/class/vcPageContent ckout/DoPage: renamed method)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.

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

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());
    }