Skip to content

Commit 9f5b1e2

Browse files
wachterjohannesniklasnatter
authored andcommitted
05 - Add a page template Event overview to the website
1 parent 4d47830 commit 9f5b1e2

File tree

3 files changed

+145
-0
lines changed

3 files changed

+145
-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.resource.title }}</h2>
16+
<p>{{ event.resource.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,62 @@
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+
private KernelBrowser $client;
21+
22+
protected function setUp(): void
23+
{
24+
$this->client = $this->createWebsiteClient();
25+
$this->initPhpcr();
26+
}
27+
28+
public function testEventOverview(): void
29+
{
30+
$event1 = $this->createEvent('Sulu is awesome', 'en');
31+
$this->enableEvent($event1);
32+
$event2 = $this->createEvent('Symfony Live is awesome', 'en');
33+
$this->enableEvent($event2);
34+
$event3 = $this->createEvent('Disabled', 'en');
35+
36+
$this->createPage(
37+
'event_overview',
38+
'example',
39+
[
40+
'title' => 'Symfony Live',
41+
'url' => '/events',
42+
'published' => true,
43+
],
44+
);
45+
46+
$crawler = $this->client->request(Request::METHOD_GET, '/en/events');
47+
48+
$response = $this->client->getResponse();
49+
$this->assertInstanceOf(Response::class, $response);
50+
$this->assertResponseIsSuccessful();
51+
$this->assertStringContainsString('Symfony Live', $crawler->filter('h1')->html());
52+
$this->assertNotNull($content = $crawler->filter('.event-title')->eq(0)->html());
53+
$this->assertStringContainsString($event1->getTitle() ?: '', $content);
54+
$this->assertNotNull($content = $crawler->filter('.event-title')->eq(1)->html());
55+
$this->assertStringContainsString($event2->getTitle() ?: '', $content);
56+
}
57+
58+
protected static function getDocumentManager(): DocumentManagerInterface
59+
{
60+
return static::getContainer()->get('sulu_document_manager.document_manager');
61+
}
62+
}

0 commit comments

Comments
 (0)