Skip to content

Commit db55ef3

Browse files
authored
Merge pull request #38 from pug-php/standard-logout
Use standard logout path/url
2 parents adaa6df + fda2929 commit db55ef3

File tree

19 files changed

+161
-67
lines changed

19 files changed

+161
-67
lines changed

.phan/config.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
return [
4+
'directory_list' => [
5+
'src',
6+
'vendor',
7+
],
8+
9+
'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
10+
11+
'exclude_analysis_directory_list' => [
12+
'vendor/',
13+
],
14+
];

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"symfony/framework-bundle": "^2.7 || ^3.0 || ^4.0",
1414
"symfony/http-foundation": "^2.7 || ^3.0 || ^4.0",
1515
"symfony/http-kernel": "^2.7 || ^3.0 || ^4.0",
16+
"symfony/security-bundle": "^2.7 || ^3.0 || ^4.0",
1617
"symfony/templating": "^2.7 || ^3.0 || ^4.0",
1718
"symfony/twig-bridge": "^2.7 || ^3.0 || ^4.0"
1819
},

src/Jade/JadeSymfonyBundle/Command/AssetsPublishCommand.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Jade\JadeSymfonyBundle\Command;
44

5-
use Jade\Jade;
65
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
76
use Symfony\Component\Console\Input\InputInterface;
87
use Symfony\Component\Console\Output\OutputInterface;

src/Jade/JadeSymfonyEngine.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public function __construct($kernel)
6565
$container = $kernel->getContainer();
6666
$this->container = $container;
6767
$environment = $kernel->getEnvironment();
68-
$appDir = $kernel->getRootDir();
68+
$appDir = $this->getAppDirectory($kernel);
6969
$rootDir = dirname($appDir);
7070
$assetsDirectories = [$appDir . '/Resources/assets'];
7171
$viewDirectories = [$appDir . '/Resources/views'];
@@ -114,6 +114,20 @@ public function __construct($kernel)
114114
}
115115
}
116116

117+
protected function getAppDirectory($kernel)
118+
{
119+
/* @var KernelInterface $kernel */
120+
if (method_exists($kernel, 'getProjectDir') &&
121+
($directory = $kernel->getProjectDir()) &&
122+
file_exists($directory = "$directory/app")
123+
) {
124+
return realpath($directory);
125+
}
126+
127+
/* @var Kernel $kernel */
128+
return $kernel->getRootDir(false); // @codeCoverageIgnore
129+
}
130+
117131
protected function getEngineClassName()
118132
{
119133
$engineName = class_exists('\\Pug\\Pug') ? 'Pug' : 'Jade';

src/Jade/Symfony/Logout.php

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/Jade/Symfony/MixedLoader.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@
77

88
class MixedLoader implements Twig_LoaderInterface
99
{
10+
/**
11+
* @var Twig_LoaderInterface
12+
*/
1013
protected $base;
14+
15+
/**
16+
* @var array
17+
*/
1118
protected $extraTemplates = [];
1219

1320
public function __construct(Twig_LoaderInterface $base)

src/Jade/Symfony/Traits/Filters.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
namespace Jade\Symfony\Traits;
44

55
/**
6-
* @internal
7-
*
86
* Trait Filters.
7+
*
8+
* @property-read \Pug\Pug $jade
99
*/
1010
trait Filters
1111
{

src/Jade/Symfony/Traits/HelpersHandler.php

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
namespace Jade\Symfony\Traits;
44

55
use Jade\Symfony\Css;
6-
use Jade\Symfony\Logout;
76
use Jade\Symfony\MixedLoader;
87
use Symfony\Bridge\Twig\Extension\HttpFoundationExtension;
98
use Symfony\Component\DependencyInjection\ContainerInterface;
109

1110
/**
12-
* @internal
13-
*
1411
* Trait HelpersHandler.
12+
*
13+
* @property-read \Pug\Pug $jade
1514
*/
1615
trait HelpersHandler
1716
{
@@ -38,7 +37,6 @@ trait HelpersHandler
3837
'assets',
3938
'code',
4039
'form',
41-
'logout_url',
4240
'request',
4341
'router',
4442
'security',
@@ -55,8 +53,30 @@ protected function getTemplatingHelper($name)
5553
return isset($this->helpers[$name]) ? $this->helpers[$name] : null;
5654
}
5755

56+
protected function compileTwigCallable(\Twig_Environment $twig, $name)
57+
{
58+
$callable = function () use ($twig, $name) {
59+
$variables = [];
60+
foreach (func_get_args() as $index => $argument) {
61+
$variables['arg' . $index] = $argument;
62+
}
63+
64+
/* @var MixedLoader $loader */
65+
$loader = $twig->getLoader();
66+
67+
$template = $loader->uniqueTemplate(
68+
'{{' . $name . '(' . implode(', ', array_keys($variables)) . ') }}'
69+
);
70+
71+
return $twig->render($template, $variables);
72+
};
73+
74+
return $callable->bindTo($twig);
75+
}
76+
5877
protected function getTwigCallable(\Twig_Environment $twig, $function, $name)
5978
{
79+
/* @var \Twig_Function $function */
6080
$callable = $function->getCallable();
6181

6282
if (!$callable ||
@@ -65,19 +85,7 @@ protected function getTwigCallable(\Twig_Environment $twig, $function, $name)
6585
is_string($callable[0]) && is_string($callable[1]) &&
6686
!(new \ReflectionMethod($callable[0], $callable[1]))->isStatic()
6787
) {
68-
$callable = function () use ($twig, $name) {
69-
$variables = [];
70-
foreach (func_get_args() as $index => $argument) {
71-
$variables['arg' . $index] = $argument;
72-
}
73-
74-
$template = $twig->getLoader()->uniqueTemplate(
75-
'{{' . $name . '(' . implode(', ', array_keys($variables)) . ') }}'
76-
);
77-
78-
return $twig->render($template, $variables);
79-
};
80-
$callable = $callable->bindTo($twig);
88+
$callable = $this->compileTwigCallable($twig, $name);
8189
}
8290

8391
return $callable;
@@ -103,6 +111,7 @@ protected function copyTwigFunction(\Twig_Environment $twig, $function)
103111
protected function copyTwigFunctions(ContainerInterface $services)
104112
{
105113
$this->twigHelpers = [];
114+
106115
if ($services->has('twig') &&
107116
($twig = $services->get('twig')) instanceof \Twig_Environment
108117
) {
@@ -112,6 +121,7 @@ protected function copyTwigFunctions(ContainerInterface $services)
112121
$loader = new MixedLoader($twig->getLoader());
113122
$twig->setLoader($loader);
114123
$this->share('twig', $twig);
124+
115125
foreach ($twig->getExtensions() as $extension) {
116126
/* @var \Twig_Extension $extension */
117127
foreach ($extension->getFunctions() as $function) {
@@ -135,9 +145,6 @@ protected function copyStandardHelpers(ContainerInterface $services)
135145

136146
protected function copySpecialHelpers(ContainerInterface $services)
137147
{
138-
if ($helper = $this->getTemplatingHelper('logout_url')) {
139-
$this->helpers['logout'] = new Logout($helper);
140-
}
141148
$this->helpers['css'] = new Css($this->getTemplatingHelper('assets'));
142149
/* @var \Symfony\Component\HttpFoundation\RequestStack $stack */
143150
$stack = $services->get('request_stack');
@@ -167,8 +174,6 @@ protected function storeReplacements()
167174
'csrf_token' => ['form', 'csrfToken'],
168175
'url' => ['router', 'url'],
169176
'path' => ['router', 'path'],
170-
'logout_url' => ['logout', 'url'],
171-
'logout_path' => ['logout', 'path'],
172177
'absolute_url' => ['http', 'generateAbsoluteUrl'],
173178
'relative_path' => ['http', 'generateRelativePath'],
174179
'is_granted' => ['security', 'isGranted'],

src/Jade/Symfony/Traits/Installer.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
use Jade\Symfony\Contracts\InstallerInterface;
77

88
/**
9-
* @internal
10-
*
119
* Trait Installer.
1210
*/
1311
trait Installer

src/Jade/Symfony/Traits/Options.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
use Pug\Pug;
66

77
/**
8-
* @internal
9-
*
108
* Trait Options.
9+
*
10+
* @property-read \Pug\Pug $jade
1111
*/
1212
trait Options
1313
{

0 commit comments

Comments
 (0)