from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< Ferreteria‎ | v2‎ | class
Revision as of 10:54, 12 April 2019 by Woozle (talk | contribs) (Created page with "{{page/code/class}} * '''file''': {{l/version|file|page/page.php}} * '''extends''': {{l/version|class|fcpeSimple}} * '''extended by''': ** {{l/version|class|gcPageContent|proj...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
abstract class fcPageContent extends fcpeSimple {
    use ftExecutableTree, ftRenderableTree;
    // ++ RECORDS ++ //
    protected function GetSessionRecord() {
	return fcApp::Me()->GetSessionRecord();
    // -- RECORDS -- //
    // ++ THRUPUT ++ //
      PURPOSE: Adds a string to the main content.
	If the page is redirected before rendering, the content will be saved with the Session record
	and displayed after the redirect.
    protected function AddString($s) {
	$sSaved = $this->GetValue();
	$sSaved .= $s;
    // -- THRUPUT -- //
    // ++ OUTPUT ++ //

      NOTE: We shouldn't ever need to have RenderBefore()/RenderAfter() methods here.
	The only time this has come up so far, it turned out they belong in the page header.
	If we want to wrap the content in, say, <span> tags, then add a tag element node.
    public function Render() {
    // PURPOSE: Render any content that was stashed for a redirect (typically result-status messages)
    protected function RenderStashed() {
	$rcSess = $this->GetSessionRecord();
	$out = $rcSess->PullStashValue('page contents');
	// 2017-05-25 At this point, I totally don't get why this is being called here:
	//$rcSess->Save();	maybe it should actually LOAD the data?
	return $out;
      ACTION: Save anything which should be preserved across a redirect, and then do the redirect.
      PUBLIC so linkable objects can redirect without losing content
	2017-05-25 I previously did $rcSess->Save() after $rcSess->SetStashValue(), but this has proven to be
	  awkward since we don't have storage objects (at this level) to do the translation. I'm hoping this
	  is unnecessary in the short term; in the long term, it looks like we need a way to have storage objects
	  without a form.
    public function DoStashedRedirect($url) {
	// save the current page contents for redisplay after redirect
	$s = $this->GetValue();	// get content that won't be displayed because we're redirecting
	$rcSess = $this->GetSessionRecord();
	$rcSess->SetStashValue('page contents',$s);
	//$rcSess->Save();	// write to persistent storage

	// now actually redirect
	die();	// stop doing stuff; we're redirecting
      ACTION: Redirect the browser to the same page (path only; no domain, ?query, or #fragment)
      PUBLIC so widgets (so far, just the login widget) can call it
	2017-02-04 written as a companion to RedirectToDefaultPage()
    public function RedirectToSamePage() {
	$url = fcURL::GetCurrentString();
      ACTION: Redirect the browser to a sensible default URL (currently the base page).
	Later we might try to figure out where we were before, and go back there.
      PUBLIC so widgets (so far, just the login widget) can call it
	2016-12-25 moved here from the login widget, because this is the content we want to save
	2017-02-04 renamed from RedirectToEraseRequest() -> RedirectToDefaultPage()
    public function RedirectToDefaultPage() {
	$url = fcApp::Me()->GetKioskObject()->GetBasePath();	// until we can come up with something more fine-tuned