Login   Register  
PHP Classes
elePHPant
Icontem

File: ONEFILE_SAMPLE.PHP

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Mark Quah  >  PageLogic  >  ONEFILE_SAMPLE.PHP  >  Download  
File: ONEFILE_SAMPLE.PHP
Role: Example script
Content type: text/plain
Description: Display different html pages using one single file.
Class: PageLogic
A way to organize files in a web module
Author: By
Last change: Added more explanation
Date: 2002-12-05 05:38
Size: 6,585 bytes
 

Contents

Class file image Download
<?php
    
include_once "class_pagelogic.php";

//====== LOGIC CONTROLLER ========================
    // in-line data, so read itself with state 0
    // onlu data embeded between PARSERSTART and PARSEREND pair is read
    // to read external data file, $page=PAGELOGIC(filename)
    
$page = new PAGELOGIC(__FILE__0);
    
// preset some variables
    // this is used to replace the {} fields in the HTML template
    
$HTML_HOME=$HTTP_SERVER_VARS['PHP_SELF']."?".strftime("%H%M%S");
    
$page->SetItem("DATA.local""HTML_HOME"$HTML_HOME);
    
$page->SetItem("DATA.local""STYLE""style='background: lightblue; width: 100%'");
    
// Extract the action value, typicall for form use HTTP_POST_VARS
    // For index.html?action='abc', use $action=$HTTP_POST_VARS['action']
    
$action $HTTP_POST_VARS['action'];
    echo 
"<h6>ACTION: [$action]</h6>";
    
// ##### CALL OUT FORM LOGIC
    // Dependence on the category FORM.action in sample_main.dat,
    // the $action value determine which function to call and also
    // which web page to include.
    
DisplayBanner();
    
$page->FormLogic('HTML.logic'$action);
    
DisplayFooter();
    
// debug
    
foreach ( $HTTP_POST_VARS as $key => $value )
        echo 
"<H6>$key: [$value]</H6>";
    return;

/* THIS IS THE MODULE LOGIC, ALL FUNCTIONS IS WITHIN THIS FILE
PARSERSTART
[HTML.logic]
; if the DisplayMain() routine is in another file, use this:
; DEFAULT=DisplayMain, <file1> [, file2, file 3 ...]
; the file will be include_once before the function is executed.
; DEFAULT function will be called if there is no match
DEFAULT=DisplayMain
EDIT=EditPage
PROC=ProcPage
PARSEREND
*/

//====== SUPPORTING FUNCTION ========================
    
function DisplayMain()
    {   global 
$page;
        global 
$HTTP_SERVER_VARS;
        
// Display Header
        
DisplayHeader("HOME PAGE");
        
// Prepare a form for submision to itself
        
$page->CreateForm('FORM_MAIN'$HTML_HOME'POST');
        
$page->AddFormItem('FORM_MAIN',"action""");
        
$page->AddFormItem('FORM_MAIN',"rec_no""");
        
// add a javascript which set up to variable action and rec_no
        // to use it: javascript:DEMO2('EDIT', 3) will set action to EDIT
        // and rec_no to 3
        
$page->CreateJSScript('FORM_MAIN',"DEMO2", array('action''rec_no'));
        
// generate the js routines and the form statement
        // if you want to add more fields to your form
        // issue it with GenHiddenForm(form_name, PLOGIC_OPENFORM);
        
echo $page->GenHiddenForm('FORM_MAIN');
        
// Display Content
        
$page->UpdateCat("HTML.home""FORM_MAIN");
        echo 
$page->GetCatStr("HTML.home");
    }

/* HTML home template
PARSERSTART
[HTML.home, FREE]
;This is the HTML template, note that the category is HTML.home and
;it is of FREE format, ie not <index>=<value> but line by line type.
<TABLE BORDER=1 WIDTH=80% ALIGN=CENTER>
<TR><TD><A HREF="javascript:DEMO2('EDIT', 1);">Edit Record 1</A>
<TR><TD><A HREF="javascript:DEMO2('EDIT', 2);">Edit Record 2</A>
<TR><TD><A HREF="javascript:DEMO2('EDIT', 3);">Edit Record 3</A>
</TABLE>

PARSEREND
*/


    
function EditPage()
    {   global 
$page;
        global 
$HTTP_SERVER_VARS;
        global 
$HTTP_POST_VARS;
        
//----- DATA PREPARATION
        // create hidden form
        
$page->CreateForm('FORM_MAIN'""'POST');
        
$page->AddFormItem('FORM_MAIN',"action""");
        
$page->AddFormItem('FORM_MAIN',"rec_no""");
        
$page->AddFormItem('FORM_MAIN',"rec_data""");
        
$page->CreateJSScript('FORM_MAIN',"SUBMIT", array('action'));
        echo 
$page->GenHiddenForm('FORM_MAIN'PLOGIC_OPEN);
        
// Get record data
        
$rec_no $HTTP_POST_VARS['rec_no'];
        
$page->SetItem("DATA.local""REC_NO"$rec_no);
        
$rec_data "[$rec_no] GENERATE YOUR DATA HERE";
        
$page->SetItem("DATA.local""REC_DATA"$rec_data);
        
// replace the keyword in the HTML template
        
$page->UpdateCat("HTML.edit""DATA.local");
        
//----- HTML GENERATION
        // Display Header
        
DisplayHeader("EDIT");
        
// Display Content
        
echo $page->GetCatStr("HTML.edit");
    }

/* HTML EDIT PAGE TEMPLATE
PARSERSTART
[HTML.edit, FREE]
<INPUT TYPE=HIDDEN NAME=rec_no VALUE='{REC_NO}'>
<TABLE BORDER=1 WIDTH=80% ALIGN=CENTER>
<TR><TD COLSPAN=2 BGCOLOR=LIGHTGREEN><B>Edit Record No: {REC_NO}</B>
<TR><TD>DATA<TD><INPUT NAME=REC_DATA VALUE='{REC_DATA}'>
<TR><TD COLSPAN=2>
    <INPUT TYPE=SUBMIT VALUE="SUBMIT" ONCLICK='SUBMIT("PROC");'>
    <INPUT TYPE=RESET VALUE="RESET">
    <INPUT TYPE=SUBMIT VALUE="CANCEL" ONCLICK='SUBMIT("");'>
</TABLE>
</FORM>

PARSEREND
*/

    
function ProcPage()
    {   global 
$page;
        global 
$HTTP_POST_VARS;
        
DisplayHeader("Process Record");
        
//==== validation
        
$rec_no $HTTP_POST_VARS['rec_no'];
        echo 
"<B>You have enter data for record: [$rec_no]</B><BR>\n";
        
$rec_data $HTTP_POST_VARS['REC_DATA'];
        echo 
"<B>the data is: [ $rec_data ]</B><BR><HR>\n";
        
//==== Generate hidden form to jump back
        
$method 1;
        echo 
"<script>alert('Press any key to continue');
                   location='"
.$page->item["DATA.local"]["HTML_HOME"]."';";
        echo 
"</script>";
    }

    function 
DisplayHeader($title)
    {
        global 
$page;
        
$page->SetItem("DATA.local""TITLE"$title);
        
$page->SetItem("DATA.local""TIME"strftime("%d %b %y %H:%M"));
        
$page->UpdateCat("HTML.header""DATA.local");
        echo 
$page->GetCatStr("HTML.header");
    }
/* HTML Header Template
PARSERSTART
[HTML.header, FREE]
; Note that {TITLE} and {TIME} value is to be replaced by
; actual values from another category using UpdateCat()
<H2>{TITLE}</H2></DIV>
<H6>{TIME}</H6>
<BR>
PARSEREND
*/


    
function DisplayBanner()
    {
        global 
$page;
        
$page->UpdateCat("HTML.banner""DATA.local");
        echo 
$page->GetCatStr("HTML.banner");
    }
/* HTML Banner Template
PARSERSTART
[HTML.banner, FREE]
<DIV {STYLE}><H1><CENTER>PAGELOGIC DEMO</center></H1></DIV>
PARSEREND
*/

    
function DisplayFooter()
    {
        global 
$page;
        
$page->UpdateCat("HTML.footer""DATA.local");
        echo 
$page->GetCatStr("HTML.footer");
    }
/* HTML Footer Template
PARSERSTART
[HTML.footer, FREE]
<BR>
<DIV {STYLE} ALIGN=CENTER PADDING=0><H6>Page Logic Demo Footer</H6></DIV>
<BR>
PARSEREND
*/

?>