share('currentUrl', \Request::url()); $this->extendBlade(); Shortcode::register('widget', Widget::class); } /** * Register the application services. * * @return void */ public function register() { } /** * Creates pattern for matching Blade directives * * @param $function * * @return string */ private function createPattern($function) { return '/(?createPattern('extendVisitor'); $code = '@extends(\App\CMS\Helpers\Template::name($2))'; return preg_replace($pattern, $code, $view); }); $macros = [ 'upload' => 'echo \App\CMS\Helpers\Path::upload($2);', 'thumbnail' => 'echo \App\CMS\Helpers\Path::thumbnail($2);', 'gravatar' => 'echo \App\CMS\Helpers\Gravatar::img($2);', 'asset' => 'echo \App\CMS\Helpers\Path::asset($2);', 'date' => 'echo \App\CMS\Helpers\Date::date($2);', 'customDate' => 'echo \App\CMS\Helpers\Date::dateFormatted($2);', 'monthName' => 'echo \App\CMS\Helpers\Date::monthName($2);', 'widgetArea' => '\App\CMS\Helpers\WidgetAreas::render($2);', 'widgetPreview' => 'echo \App\CMS\Helpers\Widget::render($2)' ]; foreach ($macros as $macro => $code) { Blade::extend(function ($view) use ($macro, $code) { $pattern = $this->createPattern($macro); $code = ''; return preg_replace($pattern, $code, $view); }); } } }