Skip to content

Commit 158070f

Browse files
committed
Template: added custom functions isLinkCurrent() and isModuleCurrent()
1 parent 3be9d41 commit 158070f

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

src/Bridges/ApplicationLatte/TemplateFactory.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ public function createTemplate(UI\Control $control = null): UI\ITemplate
8787
});
8888
}
8989

90+
if ($presenter) {
91+
$latte->addFunction('isLinkCurrent', [$presenter, 'isLinkCurrent']);
92+
$latte->addFunction('isModuleCurrent', [$presenter, 'isModuleCurrent']);
93+
}
94+
9095
// default parameters
9196
$template->user = $this->user;
9297
$template->baseUrl = $this->httpRequest ? rtrim($this->httpRequest->getUrl()->withoutUserInfo()->getBaseUrl(), '/') : null;

tests/Bridges.Latte/UIMacros.isLinkCurrent.phpt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,28 @@
66

77
declare(strict_types=1);
88

9-
use Nette\Bridges\ApplicationLatte\UIMacros;
109
use Tester\Assert;
1110

1211

1312
require __DIR__ . '/../bootstrap.php';
1413

1514

15+
Tester\Environment::bypassFinals();
16+
1617
$latte = new Latte\Engine;
18+
19+
$latteFactory = Mockery::mock(Nette\Bridges\ApplicationLatte\ILatteFactory::class);
20+
$latteFactory->shouldReceive('create')->andReturn($latte);
21+
22+
$presenter = Mockery::mock(Nette\Application\UI\Presenter::class);
23+
$presenter->shouldReceive('getPresenterIfExists')->andReturn($presenter);
24+
$presenter->shouldReceive('getHttpResponse')->andReturn((Mockery::mock(Nette\Http\IResponse::class))->shouldIgnoreMissing());
25+
$presenter->shouldIgnoreMissing();
26+
27+
$factory = new Nette\Bridges\ApplicationLatte\TemplateFactory($latteFactory);
28+
$factory->createTemplate($presenter);
29+
1730
$latte->setLoader(new Latte\Loaders\StringLoader);
18-
UIMacros::install($latte->getCompiler());
1931

2032
Assert::matchFile(__DIR__ . '/expected/UIMacros.isLinkCurrent.phtml', $latte->compile(
2133
'<a n:href="default" n:class="$presenter->isLinkCurrent() ? current">n:href before n:class</a>
@@ -29,4 +41,6 @@ Assert::matchFile(__DIR__ . '/expected/UIMacros.isLinkCurrent.phtml', $latte->co
2941
{ifCurrent}empty{/ifCurrent}
3042
3143
{ifCurrent default}default{/ifCurrent}
44+
45+
<a n:class="isLinkCurrent(default) ? current" n:href="default">custom function</a>
3246
'));

tests/Bridges.Latte/expected/UIMacros.isLinkCurrent.phtml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@
1717
if ($this->global->uiPresenter->isLinkCurrent("default")) {
1818
?>default<?php
1919
}
20+
?>
21+
22+
23+
<a href="%A%"%A%($this->global->_fnislinkcurrent)('default') ? 'current' : null%A%>custom function</a>
2024
%A%

0 commit comments

Comments
 (0)