aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Lange <code@nerdmind.de>2016-10-22 01:08:22 +0200
committerThomas Lange <code@nerdmind.de>2016-10-22 01:08:22 +0200
commit19c0af6809b8db0b763565fa9b273c90da3d1894 (patch)
tree9abe45611cb8bc90ab9f91f84309e65e8b9e08ce
parent842379e0ca399bdb5f8b85c455d1136b519d1816 (diff)
downloadbigpipe-19c0af6809b8db0b763565fa9b273c90da3d1894.tar.gz
bigpipe-19c0af6809b8db0b763565fa9b273c90da3d1894.tar.xz
bigpipe-19c0af6809b8db0b763565fa9b273c90da3d1894.zip
The Pagelet representation class in PHP now has a separate method to add dependencies (either with the instance of the dependency Pagelet or the unique ID as string as argument).
-rwxr-xr-xinclude/classes/BigPipe/BigPipe.php2
-rwxr-xr-xinclude/classes/BigPipe/Pagelet.php16
-rw-r--r--include/pagelets.php9
3 files changed, 21 insertions, 6 deletions
diff --git a/include/classes/BigPipe/BigPipe.php b/include/classes/BigPipe/BigPipe.php
index 16df618..098e071 100755
--- a/include/classes/BigPipe/BigPipe.php
+++ b/include/classes/BigPipe/BigPipe.php
@@ -5,7 +5,7 @@
# #
# The BigPipe main class is responsible for sorting and rendering the pagelets #
# and their associated resources. This class also provides methods to turn off #
-# the pipelining mode or turn on the debugging mode. #
+# the pipeline mode or turn on the debugging mode. #
# #
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
namespace BigPipe;
diff --git a/include/classes/BigPipe/Pagelet.php b/include/classes/BigPipe/Pagelet.php
index 0df117c..df74876 100755
--- a/include/classes/BigPipe/Pagelet.php
+++ b/include/classes/BigPipe/Pagelet.php
@@ -34,9 +34,8 @@ class Pagelet extends Item {
const PHASE_LOADJS = 3; # After all the JS resources have been loaded
const PHASE_DONE = 4; # After the static JS code has been executed
- public function __construct($customID = NULL, $priority = self::PRIORITY_NORMAL, array $dependencies = []) {
+ public function __construct($customID = NULL, $priority = self::PRIORITY_NORMAL) {
$this->ID = $customID ?? 'P'.++self::$count;
- $this->dependencies = $dependencies;
$this->resources = array_pad($this->resources, 2, []);
$this->phaseDoneJS = array_pad($this->phaseDoneJS, 5, []);
@@ -69,7 +68,7 @@ class Pagelet extends Item {
# Return all display dependencies
#===============================================================================
public function getDependencies(): array {
- return $this->dependencies;
+ return array_unique($this->dependencies);
}
#===============================================================================
@@ -108,6 +107,17 @@ class Pagelet extends Item {
}
#===============================================================================
+ # Attach a display dependency
+ #===============================================================================
+ public function addDependency($Pagelet) {
+ if($Pagelet instanceof Pagelet) {
+ return $this->dependencies[] = $Pagelet->getID();
+ }
+
+ return $this->dependencies[] = $Pagelet;
+ }
+
+ #===============================================================================
# Set custom placeholder tagname
#===============================================================================
public function setTagname($tagname) {
diff --git a/include/pagelets.php b/include/pagelets.php
index 9725879..4a86d49 100644
--- a/include/pagelets.php
+++ b/include/pagelets.php
@@ -33,7 +33,7 @@ $PageletGreen = new BigPipe\Pagelet('greenPL');
#===============================================================================
# Pagelet within $PageletGreen
#===============================================================================
- // The third parameter is required to ensure that the $InnerPagelet will only be
+ // The addDependency call is required to ensure that $InnerPagelet will only be
// executed if the HTML from the $PageletGreen has ALREADY DISPLAYED. Otherwise,
// $InnerPagelet would not find his placeholder tag which is defined WITHIN the
// HTML on $PageletGreen. Of course, you can still add other pagelets as
@@ -44,7 +44,12 @@ $PageletGreen = new BigPipe\Pagelet('greenPL');
// the first which arrives, but it will first be displayed if his dependency
// pagelets are already displayed.
- $InnerPagelet = new BigPipe\Pagelet('innerPL', BigPipe\Pagelet::PRIORITY_HIGHEST, [$PageletGreen->getID()]);
+ $InnerPagelet = new BigPipe\Pagelet('innerPL', BigPipe\Pagelet::PRIORITY_HIGHEST);
+
+ // NOTICE: You can also use the Pagelet ID (as string) as argument. May be helpful
+ // if a dependency Pagelet object is not accessible within the current scope.
+ $InnerPagelet->addDependency($PageletGreen);
+
$InnerPagelet->addHTML('<section sytle="background:#FFF;padding:5px;">Inner Pagelet \(o_o)/</section>');
}