Skip to content

Commit 96c7511

Browse files
wachterjohannesniklasnatter
authored andcommitted
05 - Add a page template Event overview to the website
1 parent a902ba9 commit 96c7511

File tree

3 files changed

+148
-0
lines changed

3 files changed

+148
-0
lines changed
+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?xml version="1.0" ?>
2+
<template xmlns="http://schemas.sulu.io/template/template"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://schemas.sulu.io/template/template http://schemas.sulu.io/template/template-1.0.xsd">
5+
6+
<key>event_overview</key>
7+
8+
<view>pages/event_overview</view>
9+
<controller>Sulu\Bundle\WebsiteBundle\Controller\DefaultController::indexAction</controller>
10+
<cacheLifetime>86400</cacheLifetime>
11+
12+
<meta>
13+
<title lang="en">Event Overview</title>
14+
<title lang="de">Veranstaltungsübersicht</title>
15+
</meta>
16+
17+
<properties>
18+
<property name="title" type="text_line" mandatory="true">
19+
<meta>
20+
<title lang="en">Title</title>
21+
<title lang="de">Titel</title>
22+
</meta>
23+
<params>
24+
<param name="headline" value="true"/>
25+
</params>
26+
27+
<tag name="sulu.rlp.part"/>
28+
</property>
29+
30+
<property name="url" type="resource_locator" mandatory="true">
31+
<meta>
32+
<title lang="en">Resourcelocator</title>
33+
<title lang="de">Adresse</title>
34+
</meta>
35+
36+
<tag name="sulu.rlp"/>
37+
</property>
38+
39+
<property name="article" type="text_editor">
40+
<meta>
41+
<title lang="en">Article</title>
42+
<title lang="de">Artikel</title>
43+
</meta>
44+
</property>
45+
46+
<property name="events" type="smart_content">
47+
<meta>
48+
<title lang="en">Events</title>
49+
<title lang="de">Veranstaltungen</title>
50+
</meta>
51+
52+
<params>
53+
<param name="provider" value="events"/>
54+
</params>
55+
</property>
56+
</properties>
57+
</template>
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{% extends "base.html.twig" %}
2+
3+
{% block content %}
4+
<section class="jumbotron text-center">
5+
<div class="container">
6+
<h1 class="jumbotron-heading">{{ content.title }}</h1>
7+
<p class="lead text-muted">{{ content.article|raw }}</p>
8+
</div>
9+
</section>
10+
11+
<div class="container marketing">
12+
<div class="row">
13+
{% for event in content.events %}
14+
<div class="col-lg-4 text-center">
15+
<h2 class="event-title">{{ event.title }}</h2>
16+
<p>{{ event.teaser }}</p>
17+
<p>
18+
<a class="btn btn-secondary" href="{{ path('app.event', {id: event.id}) }}" role="button">
19+
View details »
20+
</a>
21+
</p>
22+
</div>
23+
{% endfor %}
24+
</div>
25+
</div>
26+
{% endblock %}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional\Pages;
6+
7+
use App\Tests\Functional\Traits\EventTrait;
8+
use App\Tests\Functional\Traits\PageTrait;
9+
use Sulu\Bundle\TestBundle\Testing\SuluTestCase;
10+
use Sulu\Component\DocumentManager\DocumentManagerInterface;
11+
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
12+
use Symfony\Component\HttpFoundation\Request;
13+
use Symfony\Component\HttpFoundation\Response;
14+
15+
class EventOverviewTest extends SuluTestCase
16+
{
17+
use EventTrait;
18+
use PageTrait;
19+
20+
/**
21+
* @var KernelBrowser
22+
*/
23+
private $client;
24+
25+
protected function setUp(): void
26+
{
27+
$this->client = $this->createWebsiteClient();
28+
$this->initPhpcr();
29+
}
30+
31+
public function testEventOverview(): void
32+
{
33+
$event1 = $this->createEvent('Sulu is awesome', 'en');
34+
$this->enableEvent($event1);
35+
$event2 = $this->createEvent('Symfony Live is awesome', 'en');
36+
$this->enableEvent($event2);
37+
$event3 = $this->createEvent('Disabled', 'en');
38+
39+
$this->createPage(
40+
'event_overview',
41+
'example',
42+
[
43+
'title' => 'Symfony Live',
44+
'url' => '/events',
45+
'published' => true,
46+
]
47+
);
48+
49+
$crawler = $this->client->request(Request::METHOD_GET, '/en/events');
50+
51+
$response = $this->client->getResponse();
52+
$this->assertInstanceOf(Response::class, $response);
53+
$this->assertSame(Response::HTTP_OK, $response->getStatusCode());
54+
$this->assertStringContainsString('Symfony Live', $crawler->filter('h1')->html());
55+
$this->assertNotNull($content = $crawler->filter('.event-title')->eq(0)->html());
56+
$this->assertStringContainsString($event1->getTitle() ?: '', $content);
57+
$this->assertNotNull($content = $crawler->filter('.event-title')->eq(1)->html());
58+
$this->assertStringContainsString($event2->getTitle() ?: '', $content);
59+
}
60+
61+
protected static function getDocumentManager(): DocumentManagerInterface
62+
{
63+
return static::getContainer()->get('sulu_document_manager.document_manager');
64+
}
65+
}

0 commit comments

Comments
 (0)