File: D:/HostingSpaces/SBogers10/rentman2019.komma.pro/app/Komma/Pages/PageController.php
<?php
namespace App\Komma\Pages;
use App\Http\Controllers\Controller;
use App\Komma\Components\ComponentService;
use App\Komma\Pages\Models\Page;
class PageController extends Controller
{
public function home()
{
if (\App::getLanguage()->iso_2 != 'en') {
\App::changeLanguageByIso2('en');
return \App::reload();
}
return $this->show($this->pageService->getPageByCodeName('home'));
}
/**
* @param Page $page
* @return \Illuminate\Contracts\View\View
*/
public function show(Page $page)
{
if (! isset($this->links->{$page->code_name})) {
if (! $previewPage = $this->links->{'_'.$page->code_name}) {
abort(404);
}
$page = Page::where('code_name', $page->code_name)->with('translation')->with('translations')->has('translation')->first();
if (! $page) {
abort(404);
}
if (! $page->translation->preview) {
abort(404);
} else {
$this->links->{$page->code_name} = (object) [
'name' => $page->translation->name,
'route' => $page->translation->route->alias,
'node' => $page,
];
}
} else {
$page = $this->links->{$page->code_name}->node;
}
$this->checkIfModelShouldThrowAbort($page);
if (app()->getLocale() != 'en' && $page->translation->populate_from_english) {
$fallbackTranslation = $page->translations->where('language_id', 40)->first();
$page->translation = $fallbackTranslation;
$page->used_fallback_translation = true;
}
$componentService = \App::make(ComponentService::class);
$components = $componentService->getViewComponents($page->translation);
// Make language menu for given page
$languageMenu = $this->pageService->makeLanguageSwitchForPage($this->links->{$page->code_name}, $this->links->home);
// Check if specific template exist
$view = 'site.templates.'.$page->code_name;
if (! \View::exists($view)) {
$view = 'site.templates.default';
// Squeezed version of the default template
if (in_array($page->code_name, ['privacy', 'impressum', 'disclaimer', 'legal', 'dataSecurity'])) {
$view = 'site.templates.squeezed';
}
}
$pageData = [
'page' => $page,
'links' => $this->links,
'languageMenu' => $languageMenu,
'components' => $components,
'images' => $page->languageImages(),
];
if (in_array($page->code_name, ['home', 'customers'])) {
$pageData['alterHeadings'] = true;
}
// Return view
return \View::make($view, $pageData);
}
/**
* Create export of the translatable variable of all the pages
*
* @return \Illuminate\Http\JsonResponse
*/
public function oneSkyExport()
{
\App::changeLanguageByIso2('en');
$pages = $this->site
->pages()
->where('lft', '!=', 1)
->orderBy('lft', 'asc')
->with('translation')
->has('translation')
->get();
$exportJson = [];
foreach ($pages as $page) {
// Generate the page JSON
$pageJson = $this->oneSkyExporterService->generateModelJson($page, ['name', 'visual_name', 'description', 'meta_title', 'meta_description']);
if (count($pageJson) == 0) {
continue;
}
// Generate the components JSON
$componentsJson = $this->oneSkyExporterService->generateComponentJson($page->translation);
if (count($componentsJson) !== 0) {
$pageJson['components'] = $componentsJson;
}
$exportJson[$page->code_name] = $pageJson;
}
return response()->json($exportJson);
}
}