Exemplo n.º 1
0
 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>');
 }
Exemplo n.º 2
0
 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>');
 }
Exemplo n.º 3
0
 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));
 }
Exemplo n.º 4
0
 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));
 }
Exemplo n.º 5
0
 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>');
 }
Exemplo n.º 6
0
 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>');
 }
Exemplo n.º 7
0
 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;
 }