PHP Classes

File: ControlGroup.class.php

Recommend this page to a friend!
  Classes of Bulent Tezcan   AdvancedForm   ControlGroup.class.php   Download  
File: ControlGroup.class.php
Role: Documentation
Content type: text/plain
Description: one of the main classes
Class: AdvancedForm
Generate forms inside a table, which supports CSS.
Author: By
Last change:
Date: 21 years ago
Size: 10,271 bytes
 

Contents

Class file image Download
<?php include_once "Table.class.php"; include_once "FormElements.class.php"; include_once "FormVerifications.php"; /** * A Class to be used in Form.class.php. Even though you can use it stand alone, its better * to be used thru Form.class.php. This way Form can contain multiple instances of this * classes objects. * Requires Table.class.php, FormElements.class.php, FormVerifications.php * @author Bulent Tezcan */ class ControlGroup { var $mFormObjects; var $mFormObjectNames; var $mName; var $mNumberOfColumns; var $mHiddenObjects; var $mFormErrorMessage; /** * Constructor of the class ControlGroup. * @public */ function ControlGroup($name="myform") { $this->mFormObjects = array( ); $this->mName = $name; $this->mFormObjects = array(); $this->mFormObjectNames = array(); $this->mHiddenObjects = array(); $this->mAlign = ""; $this->mValign = ""; $this->mCSS = ""; $this->mNumberOfColumns = 2; $this->mFillEmptyCells = true; $this->mDefaultClassForAllCells = ""; $this->mFormHeader = ""; } /** * Method to add a new object like a textbox or maybe a radio button. * @public * @returns void */ function Add($object) { if ($object->IsObjectAnArray( )) { $getObjects = $object->GetObjects( ); $newArray = array( ); foreach ($getObjects as $objectArray) { $objectArray->SetName("form_" .$this->mName ."[" .$objectArray->GetName() ."]"); array_push($newArray, $objectArray); } $object->SetObjects($newArray); } else $object->SetName("form_".$this->mName."[".$object->GetName()."]"); array_push($this->mFormObjectNames, "$this->mName.$object->mName"); array_push($this->mFormObjects, $object); } /** * Method to add a new object to a new line like a textbox or maybe a radio button. * @public * @returns void */ function AddToNewLine($object) { $object->SetNewLine( ); $this->Add($object); } /** * Method to set the error message to be returned with the form. * @public * @returns void */ function SetErrorMessage($message) { $this->mFormErrorMessage = $message; } /** * Method to set the alignment of the table cells. * @public * @returns void */ function SetAlign($stringValue) { $this->mAlign = $stringValue; } /** * Method to set the vertical alignment of the table cells. * @public * @returns void */ function SetValign($stringValue) { $this->mValign = $stringValue; } /** * Method to set the class (CSS) of the table cells. * @public * @returns void */ function SetCellClass($stringValue) { $this->mCellClass = $stringValue; } /** * Method to set the class (CSS) of the table cells. * @public * @returns void */ function SetEmptyCells($trueFalse) { if ($trueFalse) $this->mFillEmptyCells = true; else $this->mFillEmptyCells = false; } /** * Method to set the TR mouseover color. * @public * @returns void */ function SetTRMouseOverColor( $overcolor, $outcolor, $startingRow ) { $this->mTableTRMouseoverColor = $overcolor; $this->mTableTRMouseoutColor = $outcolor; $this->mTableTRMouseoverColorStartingRow = $startingRow; } /** * Method to set the class (CSS) for the table and Form elements. * @public * @returns void */ function SetCSS($css) { $this->mCSS = $css; } /** * Method to set the table attributes. * @public * @returns void */ function SetTableAttributes($tableAttributes) { # this has to be an array if (is_array($tableAttributes)) $this->mTableAttributes = $tableAttributes; } /** * Method to set the class for all cells in the table. * @public * @returns void */ function SetDefaultClassForAllCells($class) { $this->mDefaultClassForAllCells = $class; } /** * Method to set the header for the form. * @public * @returns void */ function SetFormHeader($header) { $this->mFormHeader = $header; } /** * Method to get the form in plain html format. * @public * @returns string */ function GetString( ) { if ( !is_array($this->mFormObjects) ) return ""; $bFirstTime = TRUE; $nColumns = 0; foreach ($this->mFormObjects as $object) { if ( $object->IsNewLine( ) ) { $nColumns = 0; } if ( !$bFirstTime ) if ( 0==$nColumns ) { $string .= "<br>\n"; } else { $string .= "&nbsp;\n"; } if ($object->IsHidden( )) array_push($this->mHiddenObjects, $object); else { $string .= $object->GetString( ); $nColumns = ($nColumns + 1) %$this->mNumberOfColumns; } $bFirstTime = FALSE; } # this loop is to print the hidden values inside the table foreach ($this->mHiddenObjects as $object) { $string .= $object->GetString( ); } return $string; } /** * Method to get the form in plain html inside a table.(Formatted) * @public * @returns string */ function GetStringInTable( ) { $table = new Table( ); $table->AddRow(); #if ($this->mCellClass) #$table->AddRowAttribute ( "class", (array)$this->mCellClass ); #if ($this->mAlign) #$table->AddColAttribute("align",$this->mAlign ); #if ($this->mValign) #$table->AddColAttribute("valign",$this->mValign ); if ($this->mCSS) { $table->SetTableClass($this->mCSS."FormTABLE"); $FormHeaderFont = $this->mCSS."FormHeaderFont"; } if (is_array($this->mTableAttributes)) $table->SetTableAttributes($this->mTableAttributes); if ($this->mDefaultClassForAllCells != "") $table->SetDefaultClassForAllCells ( $this->mDefaultClassForAllCells ); if ($this->mTableTRMouseoverColor != "" and $this->mTableTRMouseoutColor != "" and $this->mTableTRMouseoverColorStartingRow != "") { $table-> SetTRMouseOverColor($this->mTableTRMouseoverColor, $this->mTableTRMouseoutColor, $this->mTableTRMouseoverColorStartingRow); } if ( !is_array($this->mFormObjects) ) return ""; if ($this->mFormHeader) { $table->SetCellColSpan( $table->GetCurrentRow( ), $Col=1, $this->mNumberOfColumns ); $table->SetCellAttributes( $table->GetCurrentRow( ), $Col=1, array("class"=>$FormHeaderFont,"width"=>"100%","align"=>"middle")); $table->SetCellContent( $table->GetCurrentRow( ), $Col=1, $this->mFormHeader ); $table->AddRow(); } # the following code is for error messages to appear at the # beginning of the table. # if ($this->mFormErrorMessage != "") { $table->SetCellColSpan( $table->GetCurrentRow( ), $Col=1, $this->mNumberOfColumns ); $table->SetCellAttribute( $table->GetCurrentRow( ), $Col=1, "width", "100%" ); $table->SetCellClass($table->GetCurrentRow( ), $Col=1, $this->mCSS."Error"); $table->SetCellContent( $table->GetCurrentRow( ), $Col=1, $this->mFormErrorMessage ); } else $doNotAddFirstRow = 1; $nColumns = 0; # the purpose of the -1 is like a switch. $col = 1; $dummyObject = new Dummy(); $dummyObject->SetCSS($this->mCSS); foreach ($this->mFormObjects as $object) { if ( $object->IsNewLine( ) ) { if ($nColumns and $this->mFillEmptyCells) for ($i = $col; $i < $this->mNumberOfColumns+1-$colspan; $i ++) { if ($dummyObject->GetCSS( ) == "") { $dummyObject->SetCSS($this->mCSS); $CSS = $dummyObject->GetCSS( ); } # The class takes presidence of the general CSS # if ($dummyObject->GetClass( ) != "") $CSS = $dummyObject->GetClass( ); $content = $dummyObject->GetString( ); $table->SetCellContent( $table->GetCurrentRow (), $i, $content ); $table->SetCellClass( $table->GetCurrentRow (), $i, $CSS ); } $nColumns = 0; } if ( 0 == $nColumns and $doNotAddFirstRow == 0) { $table->AddRow(); $col = 1; $colspan = 0; } elseif (1 == $doNotAddFirstRow) $doNotAddFirstRow = 0; if ($object->IsHidden( )) array_push($this->mHiddenObjects, $object); else { if ($this->mCSS != "") { # if the object has a Style sheet, than we will use it's CSS, # otherwise we will set it to the common CSS for that form. if ($object->GetCSS( ) == "") { $object->SetCSS($this->mCSS); $CSS = $object->GetCSS( ); } # The class takes presidence of the general CSS # if ($object->GetClass( ) != "") $CSS = $object->GetClass( ); } else $CSS = ""; $content = $object->GetString( ); $table->SetCellClass( $table->GetCurrentRow (), $col, $CSS ); $table->SetCellContent( $table->GetCurrentRow (), $col, $content ); $arrayCellAttr = $object->GetCellAttributes(); if ($object->GetColSpan( )) $arrayCellAttr['colspan'] = $object->GetColSpan( ); if (is_array($arrayCellAttr)) $table->SetCellAttributes( $table->GetCurrentRow (), $col, $arrayCellAttr ); if ($object-> GetColspan( )) $colspan += $object-> GetColspan( ) - 1; $col++; $nColumns = ($nColumns + 1 + $colspan) % $this->mNumberOfColumns; } } if ($nColumns and $this->mFillEmptyCells) { for ($i = $col; $i < $this->mNumberOfColumns+1-$colspan; $i ++) { if ($dummyObject->GetClass( ) != "") $CSS = $dummyObject->GetClass( ); if ($dummyObject->GetCSS( ) == "") { $dummyObject->SetCSS($this->mCSS); $CSS = $dummyObject->GetCSS( ); } $content = $dummyObject->GetString( ); $table->SetCellContent( $table->GetCurrentRow (), $i, $content ); $table->SetCellClass( $table->GetCurrentRow (), $i, $CSS ); } } $table->AddPassTru("\n\n<!-- Start of Hidden Values -->\n"); # this loop is to print the hidden values inside the table foreach ($this->mHiddenObjects as $object) { $table->AddPassTru( $object->GetString( ) ); } return $table->GetTable( ); } } # end of class ControlGroup ?>