From 21824df56bd13d81f10ac0b86c5cad31def51f3e Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Sat, 25 Jun 2016 15:34:34 +0200 Subject: Update with new features and code improvements. + New classes have been added: "BigPipe\Resource", "BigPipe\Resource\CSS", "BigPipe\Resource\JS". If you wan't to add a resource to a Pagelet, you can now built a new resource object with the "CSS" or "JS" class (the "Resource" class is abstract and the parent class of "CSS" and "JS") and can add PhaseDoneJS callbacks for this resources with "Resource::addPhaseDoneJS()" similar to "Pagelet::addPhaseDoneJS()". To add the resource to your pagelet: "$Pagelet->addResource($Resource)". Of course, you can still use the two SHORT methods "Pagelet::addCSS()" and "Pagelet::addJS()" which needs only one parameter with the resource URL. + Each resource has now PhaseDoneJS callbacks for 3 phases (Object initializied [INIT], Loading started [LOAD], Loading complete [DONE]). + Check your usage of the PhaseDoneJS callback constants of the Pagelet class: These constants have been renamed. + Debugging mode: Just set BigPipe::debugging(TRUE) and each pagelet and resource will be pass through a function which adds PhaseDoneJS callbacks with debug informations (Look now at the Javascript console and enjoy the beautiful colors which makes the debug informations better readable for your eyes. \(o_o)/). + Several code improvements on almost all files. --- include/classes/BigPipe/Pagelet.php | 74 +++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 28 deletions(-) (limited to 'include/classes/BigPipe/Pagelet.php') diff --git a/include/classes/BigPipe/Pagelet.php b/include/classes/BigPipe/Pagelet.php index 436e12a..7502a02 100755 --- a/include/classes/BigPipe/Pagelet.php +++ b/include/classes/BigPipe/Pagelet.php @@ -2,11 +2,11 @@ namespace BigPipe; class Pagelet { - private $ID = NULL; + private $ID = ''; private $HTML = ''; private $JSCode = []; - private $JSFiles = []; - private $CSSFiles = []; + private $JSResources = []; + private $CSSResources = []; private $phaseDoneJS = []; private $dependencies = []; private $tagname = 'div'; @@ -24,11 +24,11 @@ class Pagelet { #=============================================================================== # Phase numbers for PhaseDoneJS #=============================================================================== - const PHASE_ARRIVE = 0; # After the pagelet reached BigPipe + const PHASE_INIT = 0; # After the pagelet object was initialized const PHASE_LOADCSS = 1; # After all the CSS resources have been loaded - const PHASE_PUTHTML = 2; # After the HTML content has been injected into the placeholders + const PHASE_HTML = 2; # After the placeholder HTML was replaced const PHASE_LOADJS = 3; # After all the JS resources have been loaded - const PHASE_EXECJS = 4; # After the static JS code has been executed + const PHASE_DONE = 4; # After the static JS code has been executed public function __construct($customID = NULL, $priority = self::PRIORITY_NORMAL, array $dependencies = []) { $this->phaseDoneJS = array_pad($this->phaseDoneJS, 5, []); @@ -52,20 +52,6 @@ class Pagelet { return $this->HTML; } - #=============================================================================== - # Return the CSS resources - #=============================================================================== - public function getCSSFiles() { - return $this->CSSFiles; - } - - #=============================================================================== - # Return the JS resources - #=============================================================================== - public function getJSFiles() { - return $this->JSFiles; - } - #=============================================================================== # Return the main JS code #=============================================================================== @@ -81,17 +67,35 @@ class Pagelet { } #=============================================================================== - # Attach a CSS resource + # Add resource + #=============================================================================== + public function addResource(Resource $Resource): Resource { + switch($Resource->getType()) { + case Resource::TYPE_STYLESHEET: + return $this->CSSResources[] = $Resource; + break; + + case Resource::TYPE_JAVASCRIPT: + return $this->JSResources[] = $Resource; + break; + + default: + return $Resource; + } + } + + #=============================================================================== + # Short: Add CSS resource by URL #=============================================================================== - public function addCSS($href) { - return $this->CSSFiles[] = $href; + public function addCSS($resourceURL): Resource { + return $this->addResource(new Resource\CSS($resourceURL)); } #=============================================================================== - # Attach a JS resource + # Short: Add JS resource by URL #=============================================================================== - public function addJS($href) { - return $this->JSFiles[] = $href; + public function addJS($resourceURL): Resource { + return $this->addResource(new Resource\JS($resourceURL)); } #=============================================================================== @@ -111,10 +115,24 @@ class Pagelet { #=============================================================================== # Return all registered PhaseDoneJS callbacks #=============================================================================== - public function getPhaseDoneJS() { + public function getPhaseDoneJS(): array { return $this->phaseDoneJS; } + #=============================================================================== + # Return the attached CSS resources + #=============================================================================== + public function getCSSResources(): array { + return $this->CSSResources; + } + + #=============================================================================== + # Return the attached JS resources + #=============================================================================== + public function getJSResources(): array { + return $this->JSResources; + } + #=============================================================================== # Return all display dependencies #=============================================================================== @@ -134,7 +152,7 @@ class Pagelet { #=============================================================================== public function __toString() { $pageletHTML = "<{$this->tagname} id=\"{$this->getID()}\">"; - $pageletHTML .= !BigPipe::isEnabled() ? $this->getHTML() : NULL; + $pageletHTML .= !BigPipe::enabled() ? $this->getHTML() : NULL; $pageletHTML .= "tagname}>"; return $pageletHTML; -- cgit v1.2.3