@@ 10-122 (lines=113) @@ | ||
7 | use Scaffolder\Compilers\Support\FileToCompile; |
|
8 | use Scaffolder\Compilers\Support\PathParser; |
|
9 | ||
10 | class PageLayoutCompiler extends AbstractViewCompiler |
|
11 | { |
|
12 | /** |
|
13 | * Compiles the page layout. |
|
14 | * |
|
15 | * @param $stub |
|
16 | * @param $modelName |
|
17 | * @param $modelData |
|
18 | * @param $scaffolderConfig |
|
19 | * @param $hash |
|
20 | * @param null $extra |
|
21 | * |
|
22 | * @return string |
|
23 | */ |
|
24 | public function compile($stub, $modelName, $modelData, $scaffolderConfig, $hash, $extra = null) |
|
25 | { |
|
26 | $this->stub = $stub; |
|
27 | ||
28 | return $this->setPageTitle($scaffolderConfig) |
|
29 | ->setAppName($scaffolderConfig) |
|
30 | ->setLinks($extra['links'], $scaffolderConfig) |
|
31 | ->replaceRoutePrefix($scaffolderConfig->generator->routing->prefix) |
|
32 | ->store($modelName, $scaffolderConfig, $this->stub, new FileToCompile(null, null)); |
|
33 | } |
|
34 | ||
35 | /** |
|
36 | * Store the compiled stub. |
|
37 | * |
|
38 | * @param $modelName |
|
39 | * @param $scaffolderConfig |
|
40 | * @param $compiled |
|
41 | * @param FileToCompile $fileToCompile |
|
42 | * |
|
43 | * @return string |
|
44 | */ |
|
45 | protected function store($modelName, $scaffolderConfig, $compiled, FileToCompile $fileToCompile) |
|
46 | { |
|
47 | $path = PathParser::parse($scaffolderConfig->generator->paths->views) . 'layouts/page.blade.php'; |
|
48 | ||
49 | File::put($path, $compiled); |
|
50 | ||
51 | return $path; |
|
52 | } |
|
53 | ||
54 | /** |
|
55 | * Replace the page title. |
|
56 | * |
|
57 | * @param $scaffolderConfig |
|
58 | * |
|
59 | * @return $this |
|
60 | */ |
|
61 | private function setPageTitle($scaffolderConfig) |
|
62 | { |
|
63 | $this->stub = str_replace('{{page_title}}', $scaffolderConfig->userInterface->pageTitle, $this->stub); |
|
64 | ||
65 | return $this; |
|
66 | } |
|
67 | ||
68 | /** |
|
69 | * Replace the app name. |
|
70 | * |
|
71 | * @param $scaffolderConfig |
|
72 | * |
|
73 | * @return $this |
|
74 | */ |
|
75 | private function setAppName($scaffolderConfig) |
|
76 | { |
|
77 | $this->stub = str_replace('{{app_name}}', $scaffolderConfig->name, $this->stub); |
|
78 | ||
79 | return $this; |
|
80 | } |
|
81 | ||
82 | /** |
|
83 | * Add links to the nav. |
|
84 | * |
|
85 | * @param $links |
|
86 | * @param $scaffolderConfig |
|
87 | * |
|
88 | * @return $this |
|
89 | */ |
|
90 | private function setLinks($links, $scaffolderConfig) |
|
91 | { |
|
92 | $navLinks = ''; |
|
93 | ||
94 | foreach ($links as $link) |
|
95 | { |
|
96 | $navLinks .= sprintf(" |
|
97 | <li> |
|
98 | <a href='/%s' class='waves-effect'> |
|
99 | %ss |
|
100 | </a> |
|
101 | </li>", $scaffolderConfig->generator->routing->prefix . '/' . strtolower($link), $link); |
|
102 | } |
|
103 | ||
104 | $this->stub = str_replace('{{links}}', $navLinks, $this->stub); |
|
105 | ||
106 | return $this; |
|
107 | } |
|
108 | ||
109 | /** |
|
110 | * Replace the route prefix. |
|
111 | * |
|
112 | * @param $prefix |
|
113 | * |
|
114 | * @return $this |
|
115 | */ |
|
116 | private function replaceRoutePrefix($prefix) |
|
117 | { |
|
118 | $this->stub = str_replace('{{route_prefix}}', $prefix, $this->stub); |
|
119 | ||
120 | return $this; |
|
121 | } |
|
122 | } |
@@ 10-122 (lines=113) @@ | ||
7 | use Scaffolder\Compilers\Support\FileToCompile; |
|
8 | use Scaffolder\Compilers\Support\PathParser; |
|
9 | ||
10 | class PageLayoutCompiler extends AbstractViewCompiler |
|
11 | { |
|
12 | /** |
|
13 | * Compiles the page layout. |
|
14 | * |
|
15 | * @param $stub |
|
16 | * @param $modelName |
|
17 | * @param $modelData |
|
18 | * @param $scaffolderConfig |
|
19 | * @param $hash |
|
20 | * @param null $extra |
|
21 | * |
|
22 | * @return string |
|
23 | */ |
|
24 | public function compile($stub, $modelName, $modelData, $scaffolderConfig, $hash, $extra = null) |
|
25 | { |
|
26 | $this->stub = $stub; |
|
27 | ||
28 | return $this->setPageTitle($scaffolderConfig) |
|
29 | ->setAppName($scaffolderConfig) |
|
30 | ->setLinks($extra['links'], $scaffolderConfig) |
|
31 | ->replaceRoutePrefix($scaffolderConfig->routing->prefix) |
|
32 | ->store($modelName, $scaffolderConfig, $this->stub, new FileToCompile(null, null)); |
|
33 | } |
|
34 | ||
35 | /** |
|
36 | * Store the compiled stub. |
|
37 | * |
|
38 | * @param $modelName |
|
39 | * @param $scaffolderConfig |
|
40 | * @param $compiled |
|
41 | * @param FileToCompile $fileToCompile |
|
42 | * |
|
43 | * @return string |
|
44 | */ |
|
45 | protected function store($modelName, $scaffolderConfig, $compiled, FileToCompile $fileToCompile) |
|
46 | { |
|
47 | $path = PathParser::parse($scaffolderConfig->paths->views) . 'layouts/page.blade.php'; |
|
48 | ||
49 | File::put($path, $compiled); |
|
50 | ||
51 | return $path; |
|
52 | } |
|
53 | ||
54 | /** |
|
55 | * Replace the page title. |
|
56 | * |
|
57 | * @param $scaffolderConfig |
|
58 | * |
|
59 | * @return $this |
|
60 | */ |
|
61 | private function setPageTitle($scaffolderConfig) |
|
62 | { |
|
63 | $this->stub = str_replace('{{page_title}}', $scaffolderConfig->userInterface->pageTitle, $this->stub); |
|
64 | ||
65 | return $this; |
|
66 | } |
|
67 | ||
68 | /** |
|
69 | * Replace the app name. |
|
70 | * |
|
71 | * @param $scaffolderConfig |
|
72 | * |
|
73 | * @return $this |
|
74 | */ |
|
75 | private function setAppName($scaffolderConfig) |
|
76 | { |
|
77 | $this->stub = str_replace('{{app_name}}', $scaffolderConfig->name, $this->stub); |
|
78 | ||
79 | return $this; |
|
80 | } |
|
81 | ||
82 | /** |
|
83 | * Add links to the nav. |
|
84 | * |
|
85 | * @param $links |
|
86 | * @param $scaffolderConfig |
|
87 | * |
|
88 | * @return $this |
|
89 | */ |
|
90 | private function setLinks($links, $scaffolderConfig) |
|
91 | { |
|
92 | $navLinks = ''; |
|
93 | ||
94 | foreach ($links as $link) |
|
95 | { |
|
96 | $navLinks .= sprintf(" |
|
97 | <li> |
|
98 | <a href='/%s' class='waves-effect'> |
|
99 | %ss |
|
100 | </a> |
|
101 | </li>", $scaffolderConfig->routing->prefix . '/' . strtolower($link), $link); |
|
102 | } |
|
103 | ||
104 | $this->stub = str_replace('{{links}}', $navLinks, $this->stub); |
|
105 | ||
106 | return $this; |
|
107 | } |
|
108 | ||
109 | /** |
|
110 | * Replace the route prefix. |
|
111 | * |
|
112 | * @param $prefix |
|
113 | * |
|
114 | * @return $this |
|
115 | */ |
|
116 | private function replaceRoutePrefix($prefix) |
|
117 | { |
|
118 | $this->stub = str_replace('{{route_prefix}}', $prefix, $this->stub); |
|
119 | ||
120 | return $this; |
|
121 | } |
|
122 | } |