function printLinksAsDropDown() { $this->actions->add('foo', Mockster::mock(Action::class)); $this->links->add(new IdentifierLink(\DateTime::class, 'foo', 'id')); $rendered = $this->renderer->render(new Identifier(\DateTime::class, 'foo-id')); $this->assert->contains($rendered, "DateTime\n<span class=\"caret\"></span>"); $this->assert->contains($rendered, '<ul class="dropdown-menu">' . '<li><a class="" href="foo?id=foo-id"></a></li>' . '</ul>'); }
function printLinks() { $this->renderers->add(new ElementRenderer()); $this->renderers->add(new PrimitiveRenderer()); $this->actions->add('foo', Mockster::mock(Action::class)); $this->actions->add('bar', Mockster::mock(Action::class)); $this->links->add(new ClassLink(\StdClass::class, 'foo')); $this->links->add(new ClassLink(\StdClass::class, 'bar')); $rendered = $this->tableRenderer->render(new ObjectTable([new \StdClass()], $this->types)); $this->assert->contains($rendered, '<div class="dropdown">' . "\n" . '<button class="btn btn-xs btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">' . "\n" . 'stdClass' . "\n" . '<span class="caret"></span>' . "\n" . '</button>' . "\n" . '<ul class="dropdown-menu">' . "\n" . '<li><a class="" href="foo"></a></li>' . "\n" . '<li><a class="" href="bar"></a></li>' . "\n" . '</ul>' . "\n" . '</div>'); }
private function createLinks($object, $classes = '') { return array_map(function (Link $link) use($object, $classes) { $action = $this->actions->getAction($link->actionId()); $url = $this->baseUrl->appended($link->actionId())->withParameters(new Map($link->parameters($object))); $attributes = ['class' => $classes, 'href' => $url]; if ($link->confirm() !== null) { $attributes['onclick'] = "return confirm('{$link->confirm()}');"; } $description = $action->description(); if (!is_null($description)) { $attributes['title'] = str_replace('"', "'", strip_tags($this->parser->shorten($description))); } return new Element('a', $attributes, [$action->caption()]); }, $this->links->getLinks($object)); }
private function createLinks($object, $classes = '') { return array_map(function (Link $link) use($object, $classes) { $action = $this->actions->getAction($link->actionId()); $parameters = $link->parameters($object); if ($action->isModifying() && $this->token) { $parameters[ExecutionResource::TOKEN_ARG] = $this->token->generate($link->actionId()); } $url = (string) Url::relative($link->actionId(), $parameters); $attributes = ['class' => $classes, 'href' => $url]; if ($link->confirm() !== null) { $attributes['onclick'] = "return confirm('{$link->confirm()}');"; } $description = $action->description(); if (!is_null($description)) { $attributes['title'] = str_replace('"', "'", strip_tags($this->parser->shorten($description))); } return new Element('a', $attributes, [$action->caption()]); }, $this->links->getLinks($object)); }
function confirmActions() { $this->renderers->add(new PrimitiveRenderer()); $link = Mockster::of(Link::class); $this->links->add(Mockster::mock($link)); $this->actions->add('', Mockster::mock(Action::class)); Mockster::stub($link->handles(Argument::any()))->will()->return_(true); Mockster::stub($link->confirm())->will()->return_('Foo?'); $object = new \StdClass(); $object->foo = 'bar'; $this->assert->contains($this->renderer->render($object), '<a class="btn btn-xs btn-primary" href="" onclick="return confirm(\'Foo?\');"></a>'); }
function printLinks() { $this->renderers->add(new ElementRenderer()); $this->renderers->add(new PrimitiveRenderer()); $this->actions->add('foo', Mockster::mock(Action::class)); $this->actions->add('bar', Mockster::mock(Action::class)); $this->actions->add('baz', Mockster::mock(Action::class)); $this->links->add(new GenericLink('foo', function ($item) { return $item['id'] == 'foo item'; })); $this->links->add(new GenericLink('bar', function ($item) { return $item['id'] == 'bar item'; })); $this->links->add(new GenericLink('baz', function ($item) { return $item['id'] == 'bar item'; })); $rendered = $this->tableRenderer->render(new ArrayTable([['id' => 'foo item'], ['id' => 'bar item']])); $this->assert->contains($rendered, '<div class="dropdown">' . "\n" . '<button class="btn btn-xs btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">' . "\n" . 'Actions' . "\n" . '<span class="caret"></span>' . "\n" . '</button>' . "\n" . '<ul class="dropdown-menu">' . '<li><a class="" href="http://example.com/base/foo"></a></li>' . '</ul>' . "\n" . '</div>' . "\n" . '</td>' . "\n" . '<td>foo item</td>'); $this->assert->contains($rendered, '<div class="dropdown">' . "\n" . '<button class="btn btn-xs btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">' . "\n" . 'Actions' . "\n" . '<span class="caret"></span>' . "\n" . '</button>' . "\n" . '<ul class="dropdown-menu">' . "\n" . '<li><a class="" href="http://example.com/base/bar"></a></li>' . "\n" . '<li><a class="" href="http://example.com/base/baz"></a></li>' . "\n" . '</ul>' . "\n" . '</div>' . "\n" . '</td>' . "\n" . '<td>bar item</td>'); }
private function initLinks(LinkRegistry $links) { $postParameters = function (Post $post) { return ['id' => $post->getId()]; }; $links->add($this->makeAuthorLink('show')); $links->add($this->makeAuthorLink('changePicture')); $links->add($this->makeAuthorLink('changeName')); $links->add(new ClassLink(Author::class, 'listPosts', function (Author $author) { return ['author' => $author->getEmail()]; })); $links->add(new ClassLink(Post::class, 'showPost', $postParameters)); $links->add(new ClassLink(Post::class, 'changePostTags', $postParameters)); $links->add(new ClassLink(Post::class, 'updatePost', $postParameters)); $links->add((new ClassLink(Post::class, 'publishPost', $postParameters))->setHandles(function ($post) { return $post instanceof Post && !$post->isPublished(); })); $links->add((new ClassLink(Post::class, 'unpublishPost', $postParameters))->setHandles(function ($post) { return $post instanceof Post && $post->isPublished(); })); $links->add((new ClassLink(Post::class, 'deletePost', $postParameters))->setConfirmation('Are you sure?')); $links->add(new IdentifierLink(Author::class, MethodActionGenerator::actionId(Authors::class, 'show'), 'email')); $links->add(new IdentifierLink(Author::class, 'listPosts', 'author')); $links->add(new ClassLink(Bar::class, 'demoTables')); $links->add(new ClassLink(Bar::class, 'demoCharts')); return $this; }