Ferreteria/v2/class/fcNavBase
< Ferreteria | v2 | class
Jump to navigation
Jump to search
- file: Template:L/ferreteria/file
- extends: Template:L/version
- extender: Template:L/version
- uses: Template:L/version
/*::::
PURPOSE: base class for links and folders
ADDS event-passing and consumption to PageElements
ABSTRACT: n/i = Render(), new = RenderContent()
*/
abstract class fcNavBase extends fcPageElement {
use ftExecutableTree;
// ++ SETUP ++ //
public function __construct($sText=NULL,$sPopup=NULL) {
$this->SetLinkText($sText);
$this->SetPopup($sPopup);
$this->SetupDefaults(); // ALWAYS CALL THIS from constructor
}
// -- SETUP -- //
// ++ EVENTS ++ //
protected function SetupDefaults() {
$this->SetVisible(TRUE); // default
}
// DEFAULT: Do nothing; items are added from outside.
protected function OnCreateElements(){}
// DEFAULT: Nothing to do.
protected function OnRunCalculations(){}
// -- EVENTS -- //
// ++ OUTPUT ++ //
public function Render(){
if ($this->GetShouldDisplay()) {
return $this->RenderFull();
} else {
return NULL;
}
}
/*----
CEMENT
PURPOSE: Renders everything that should show if the user has permission to use this node
*/
protected function RenderFull() {
return $this->RenderSelf();
}
protected function RenderSelf() {
$sTag = get_class($this).'-'.$this->GetName();
return "\n<li id='$sTag'>".$this->RenderContent()."</li>";
}
abstract protected function RenderContent();
// -- OUTPUT -- //
// ++ PROPERTY VALUES ++ //
protected function SetLinkText($s) {
$this->SetValue($s);
}
protected function GetLinkText() {
return $this->GetValue();
}
private $isVisible;
protected function SetVisible($b) {
$this->isVisible = $b;
}
protected function GetVisible() {
return $this->isVisible;
}
private $sPopup;
protected function SetPopup($s) {
$this->sPopup = $s;
}
protected function GetPopup() {
return $this->sPopup;
}
// -- PROPERTY VALUES -- //
// ++ PROPERTY CALCULATIONS ++ //
protected function GetShouldDisplay() {
return $this->GetVisible();
}
// -- PROPERTY CALCULATIONS -- //
}