- Fixed a bug where a custom form context would never be applied

This commit is contained in:
Dave M. 2020-03-31 11:09:08 -04:00
parent 23e8eb71f6
commit ff57fed699
6 changed files with 92 additions and 6 deletions

View File

@ -19,12 +19,12 @@ class UiPopup extends UiElement implements Extension {
public function parse(/*\Picae\Compiler\Context*/ &$context, ?string $arguments, string $token) : string
{
return "<?php echo ( new \\" . static::class . "() )->buildAttributes($arguments) ?>";
return "<?php echo 'ui-popup=\"' . ( new \\" . static::class . "() )->buildAttributes($arguments) . '\"' ?>";
}
public function buildAttributes(string $name, array $variables = []) : string
{
return json_encode([ "name" => $name, "vars" => $variables ], JSON_HEX_APOS | JSON_HEX_QUOT);
return htmlentities(json_encode([ "name" => $name, "vars" => $variables ], JSON_HEX_APOS | JSON_HEX_QUOT), ENT_QUOTES, 'UTF-8');
}
}

View File

@ -50,6 +50,6 @@ class Form implements Extension {
public function formClass(FormInterface $form, ? FormContext $formContext = null) : FormHandler
{
return new FormHandler($this->request, $form, $formContext ?? $this->formContext ?? null);
return new FormHandler($this->request, $form, $formContext);
}
}

View File

@ -7,6 +7,8 @@ use Psr\Http\Message\ServerRequestInterface;
class FormHandler {
public bool $sent = false;
public ? bool $executionStatus = null;
public FormContext $context;
protected ServerRequestInterface $request;
@ -18,7 +20,7 @@ class FormHandler {
$this->request = $request;
$this->sent = $this->requestSent();
$this->form = $form;
if ( $context ) {
$this->context = $context;
}
@ -45,7 +47,7 @@ class FormHandler {
if ( $this->sent ) {
if ( $this->form->validate($this->context) ) {
$this->form->execute($this->context);
$this->executionStatus = $this->form->execute($this->context);
}
}
}

View File

@ -2,7 +2,7 @@
namespace Picea\Ui\Method\Message;
use Picea\Ui\Metohd\FormMessage;
use Picea\Ui\Method\FormMessage;
class ErrorMessage implements FormMessage {

37
src/Method/Pagination.php Normal file
View File

@ -0,0 +1,37 @@
<?php
namespace Picea\Ui\Method;
use Picea\Extension\Extension,
Picea\Extension\ExtensionTrait;
use Picea\Compiler\Context;
use Psr\Http\Message\ServerRequestInterface;
class Pagination implements Extension {
use ExtensionTrait;
public array $tokens;
public string $token;
public ServerRequestInterface $request;
public function __construct(ServerRequestInterface $request, Context $context) {
$this->request = $request;
$this->register($context);
}
public function parse(/*\Picae\Compiler\Context*/ &$context, ?string $arguments, string $token) : string { }
public function register(Context $context) : void
{
$context->pushFunction("pagination", [ $this, 'paginationClass' ]);
}
public function paginationClass(string $name, ?string $url = null, ?array $params = null) : PaginationHandler
{
return new PaginationHandler($this->request, $name, $url, $params);
}
}

View File

@ -0,0 +1,47 @@
<?php
namespace Picea\Ui\Method;
use Psr\Http\Message\ServerRequestInterface;
class PaginationHandler {
protected ServerRequestInterface $request;
protected FormInterface $form;
public int $limit;
public int $offset;
public int $page = 1;
public int $count;
public string $url;
public array $params;
public function __construct(ServerRequestInterface $request, string $name, ? string $url, ? array $params)
{
$this->request = $request;
$query = $request->getQueryParams();
$this->page = $query['page'] ?? 1;
$this->limit = 15;
$this->offset = 1;
$this->count = $this->page * $this->limit;
if ( $url ) {
$this->url = $url;
}
$this->params = $params ?? [];
}
public function __toString() {
return "hello world";
}
}