- Added an event manager. Also, fixed some more bugs within Block and Section tokens
This commit is contained in:
1 parent
58f73d914b
commit
08211282c2
14 files changed
+164
-18
No files matched your search
@@ -49,7 +49,9 @@ class BlockToken implements ControlStructure {
|
||||
$def = end($slotDefinitions);
|
||||
|
||||
list($name, $definition) = array_pad(explode(',', $arguments, 2), 2, "");
|
||||
|
||||
|
||||
$loops = count($context->iterationStack ?? []) ? ",". implode(', ', array_filter(array_column($context->iterationStack, 'uid'), fn($e) => strpos($e, '[') === false)) : null;
|
||||
|
||||
if ($def->hasDefinitions() ) {
|
||||
$slotName = eval("return $name;");
|
||||
$def->currentSlot = $slotName;
|
||||
@@ -62,7 +64,7 @@ class BlockToken implements ControlStructure {
|
||||
}
|
||||
|
||||
return <<<PHP
|
||||
<?php \$this->printSlot($name, function($definition array \$___using = []) use (\$picea) { extract(\$___using, \EXTR_SKIP); ?>
|
||||
<?php \$this->printSlot($name, function($definition array \$___using = []) use (\$picea $loops) { extract(\$___using, \EXTR_SKIP); ?>
|
||||
PHP;
|
||||
}
|
||||
else {
|
||||
@@ -71,7 +73,7 @@ class BlockToken implements ControlStructure {
|
||||
}
|
||||
|
||||
return <<<PHP
|
||||
<?php (\$___block ?? \$this)->slotIsSet($name) || \$___block->setSlot($name, function($definition array \$___using = []) use (\$picea) { extract(\$___using, \EXTR_SKIP); ?>
|
||||
<?php (\$___block ?? \$this)->slotIsSet($name) || \$___block->setSlot($name, function($definition array \$___using = []) use (\$picea $loops) { extract(\$___using, \EXTR_SKIP); ?>
|
||||
PHP;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,14 +46,26 @@ class SectionToken implements ControlStructure {
|
||||
$order = $options['order'] ?? "count(\$___class__template->sectionList[$name]['$action'])";
|
||||
|
||||
return "<?php \$___class__template->sectionList[$name] ??= [ 'prepend' => [], 'append' => [], 'default' => [] ];".
|
||||
"\$___class__template->sectionList[$name]['$action'][] = [ 'order' => $order, 'callback' => function() use (\$picea, \$___class__template, \$___global_variables, \$___variables) {".
|
||||
"extract(\$___global_variables); extract(\$___variables, \EXTR_OVERWRITE); \$___class__template->sectionStack[] = '$name'; ?>";
|
||||
"\$___class__template->sectionList[$name]['$action'][] = [
|
||||
'order' => $order,
|
||||
'callback' => function() use (\$picea, \$___class__template, \$___global_variables, \$___variables, \$__event) {".
|
||||
"extract(\$___global_variables); extract(\$___variables, \EXTR_OVERWRITE);
|
||||
\$___class__template->sectionStack[] = $name;
|
||||
\$__event->eventExecute(\Picea\Event\Builder\ClassTemplateRenderSection::class, $name);?>";
|
||||
}
|
||||
|
||||
protected function printEndSection($context) : string
|
||||
{
|
||||
$section = array_pop($context->sections);
|
||||
$build = $context->extendFrom ? "!empty(\$___class__template->sectionStack) && \$___class__template->renderSection({$section['name']});" : "\$___class__template->renderSection({$section['name']});";
|
||||
return "<?php array_pop(\$___class__template->sectionStack); }]; $build?>";
|
||||
$build = $context->extendFrom ? "!empty(\$___class__template->sectionStack) && \$___class__template->renderSection({$section['name']}, false);" : "\$___class__template->renderSection({$section['name']}, false);";
|
||||
|
||||
return <<<PHP
|
||||
<?php
|
||||
\$__event->eventExecute(\Picea\Event\Builder\ClassTemplateRenderSectionDone::class, {$section['name']});
|
||||
array_pop(\$___class__template->sectionStack); }];
|
||||
$build
|
||||
?>
|
||||
PHP;
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user