* Navigation in Sidebar

* Seitenbaum: Jugendreisen und Reisemagazin mit einbeziehen; Ursprüngliche Sortierung berücksichtigen
* Neue Datenbank-Spalten für automatisch generierte Seitenübersichtsboxen und Datenbank
* Unterstützung statisch festgelegter URLs (page.real_url_path) - wird aus SEO-technischen Gründen benötigt, um vorerst die alten URLs zu behalten
* Redirect-Tabelle: Hier können alte URLs mit page-Einträge verknüpft werden. Bei Aufruf so einer URL wird auf die URL der verknüpften page umgeleitet

SQL:

UPDATE page SET template = 'overview' WHERE slug IN ('iran-reisen', 'marokko-urlaub');
UPDATE page SET `order` = 0 WHERE slug = 'aegypten-reisen';
UPDATE page SET `order` = 1 WHERE slug = 'israel-reisen';
UPDATE page SET `order` = 2 WHERE slug = 'jordanien-reisen';
UPDATE page SET `order` = 3 WHERE slug = 'iran-reisen';
UPDATE page SET `order` = 4 WHERE slug = 'marokko-urlaub';
UPDATE page SET `order` = 5 WHERE slug = 'oman-reisen';
UPDATE page SET `order` = 6 WHERE slug = 'tuerkei-urlaub';

UPDATE page SET template = 'overview' WHERE
  (slug IN ('jugendreisen', 'reisemagazin') AND lvl = 0) OR
  (catalog_id IN (6, 14) AND owner = 0);

-- Request URL /create-tree in browser to re-create the page tree

ALTER TABLE page ADD COLUMN real_url_path VARCHAR(200) DEFAULT NULL;
CREATE UNIQUE INDEX UNIQ_140AB620E2652A2A ON page (real_url_path);
UPDATE page p INNER JOIN catalog c ON c.id = p.catalog_id SET p.real_url_path = CONCAT('/', c.slug, '/', p.slug, '.html');

ALTER TABLE page ADD COLUMN box_body TEXT DEFAULT NULL;
ALTER TABLE page ADD COLUMN box_image_url VARCHAR(200) DEFAULT NULL;
ALTER TABLE page ADD COLUMN box_star VARCHAR(255) DEFAULT NULL;
ALTER TABLE page ADD COLUMN box_discount VARCHAR(255) DEFAULT NULL;
ALTER TABLE page ADD COLUMN content_new TEXT DEFAULT NULL AFTER content;

ALTER TABLE page DROP COLUMN preview_image_url;

CREATE TABLE redirect (id INT AUTO_INCREMENT NOT NULL, page_id INT DEFAULT NULL, source_url_path VARCHAR(200) NOT NULL, UNIQUE INDEX UNIQ_C30C9E2B56207465 (source_url_path), INDEX IDX_C30C9E2BC4663E4 (page_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
ALTER TABLE redirect ADD CONSTRAINT FK_C30C9E2BC4663E4 FOREIGN KEY (page_id) REFERENCES page (id);
ALTER TABLE redirect MODIFY COLUMN page_id INT NOT NULL;



git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3293 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
uli 2017-02-15 15:36:15 +00:00
parent 03f50fc03c
commit 6bb5c271c6
15 changed files with 596 additions and 125 deletions

View file

@ -80,7 +80,7 @@ class BookingController extends Controller
$bookingPriceInfo = [];
$totalPrice = $this->calculatePrice($travelDate, $bookingRequest, $htmlSummary, $bookingPriceInfo);
if ($action == 'buchen')
if ($action == '/buchen')
{
$breadcrumbEntries = Util::createBreadcrumb($travelProgramPage);
$breadcrumbEntries[] = new BreadcrumbEntry('Buchen', $travelProgramPage->getUrlPath() .'/buchen');
@ -119,8 +119,7 @@ class BookingController extends Controller
$this->renderView('default/email/bookingServiceEmail.txt.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'crm_url' => $crmBookingUrl .'/edit',
'travel_program_url' => 'http' . (($_SERVER['SERVER_PORT'] == 443) ? 's://' : '://') .
$_SERVER['HTTP_HOST'] . $travelProgramPage->getUrlPath(),
'travel_program_url' => Util::getBaseUrl() . $travelProgramPage->getUrlPath(),
'booking_request' => $bookingRequest,
'booking_price_info' => $bookingPriceInfo,
'travel_date' => $travelDate,
@ -150,7 +149,7 @@ class BookingController extends Controller
'total_price' => $totalPrice
]);
}
elseif ($action == 'berechne-gesamtpreis')
elseif ($action == '/berechne-gesamtpreis')
{
return $this->render('default/components/booking/summary.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,

View file

@ -56,8 +56,14 @@ class DefaultController extends Controller
public function cmsOverviewAction(Page $page)
{
return $this->render('default/pages/overview.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'page' => $page
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'page' => $page,
// #WORKAROUND Special navigation logic here adapted from the old website: Don't show child entries
// #TODO Only applies at level 0
'nav_pages' => $page->getChildren(),
'nav_child_pages' => [],
'nav_open_node' => null
]);
}
@ -126,7 +132,7 @@ class DefaultController extends Controller
->where('page.status > 0')
->andWhere('page.template = \'overview\'')
->andWhere('page.lvl = 0')
->orderBy('page.title,childPage.title')
->orderBy('page.lft,page.title,childPage.lft,childPage.title')
->getQuery()
->execute()
;
@ -144,6 +150,39 @@ class DefaultController extends Controller
]);
}
public function navSidebarWidgetAction(Page $page)
{
$pageRepo = $this->getEntityManager()->getRepository('AppBundle:Page');
$view = [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'page' => $page,
];
if ($page->getHasChildren())
{
$view['nav_pages'] = $pageRepo->getSiblings($page);
$view['nav_child_pages'] = $pageRepo->getChildren($page);
$view['nav_open_node'] = $page;
}
else
{
$parent = $page->getParent();
if ($parent)
{
$view['nav_pages'] = $pageRepo->getSiblings($parent);
$view['nav_child_pages'] = $pageRepo->getSiblings($page);
$view['nav_open_node'] = $parent;
}
else
{
$view['nav_pages'] = $pageRepo->getSiblings($page);
$view['nav_child_pages'] = [];
$view['nav_open_node'] = null;
}
}
return $this->render('default/components/sidebar/navSidebarWidget.html.twig', $view);
}
/*
Suche Kindknoten
Für jeden Kindknoten
@ -178,11 +217,23 @@ class DefaultController extends Controller
}
$em->beginTransaction();
// Add missing owner relation for catalog root pages (e.g. children of 'aegypten-reisen')
$em->getConnection()->executeUpdate('UPDATE page SET owner = 47 WHERE catalog_id = 3 AND owner = 0');
$em->getConnection()->executeUpdate('UPDATE page SET owner = 66 WHERE catalog_id = 6 AND owner = 0');
$em->getConnection()->executeUpdate('UPDATE page SET owner = 2803 WHERE catalog_id = 14 AND owner = 0');
$lft = 0;
$this->createTree(0, $lft, 0);
$em->commit();
$em->flush();
// Reset the owner field to avoid problems in the old website
$em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 47 AND catalog_id = 3');
$em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 66 AND catalog_id = 6');
$em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 2803 AND catalog_id = 14');
$em->commit();
die("DONE.");
}
@ -196,7 +247,8 @@ class DefaultController extends Controller
{
$qb->orWhere('p.owner IS NULL');
}
$qb->orderBy('p.title');
$qb->orderBy('p.order');
$qb->addOrderBy('p.title');
$pages = $qb->getQuery()->execute();
foreach ($pages as $page)
{