ソースを参照

add StructuresEvents template

Olivier Massot 5 年 前
コミット
7ad69a3ba1

+ 12 - 0
ot_templating/Classes/ViewHelpers/Events/GetAllViewHelper.php

@@ -54,6 +54,13 @@ class GetAllViewHelper extends AbstractViewHelper {
             'Id of the current structure',
             true
         );
+        $this->registerArgument(
+            'fromChildren',
+            'bool',
+            'Get events from children instead',
+            false,
+            0
+        );
     }
 
     /**
@@ -68,6 +75,7 @@ class GetAllViewHelper extends AbstractViewHelper {
         // Get current settings
         $as = $this->arguments['as'];
         $organizationId = $this->arguments['organizationId'];
+        $fromChildren = $this->arguments['fromChildren'];
 
         $searchParams = [];
 
@@ -86,6 +94,10 @@ class GetAllViewHelper extends AbstractViewHelper {
             $searchParams['datetimeEnd'] = $dateEnd->format('d-m-Y');
         }
 
+        if ($fromChildren) {
+            $searchParams['children'] = '1';
+        }
+
         $events = $this->eventRepository->searchBy($organizationId, $searchParams);
         $variables = [$as => $events];
         return $this->renderChildrenWithVariables($variables);

+ 112 - 0
ot_templating/Resources/Private/Layouts/Classic/StructuresEvents.html

@@ -0,0 +1,112 @@
+{namespace v=FluidTYPO3\Vhs\ViewHelpers}
+{namespace ot=Opentalent\OtTemplating\ViewHelpers}
+
+<f:comment><!-- Special layout for the All Structures Events page --></f:comment>
+<f:layout name="StructuresEvents" />
+
+<f:comment><!-- Render the header defined in partials/Header.html--></f:comment>
+<f:render partial="Classic/Header" arguments="{_all}" />
+
+<div class="main">
+
+    <f:comment><!-- Central column --></f:comment>
+    <div class="content">
+
+
+        <f:comment><!-- All structures' events --></f:comment>
+        <ot:events.getAll as="events"
+                          organizationId="{settings.organizationId}"
+                          fromChildren="1">
+
+            <div class="ot-all-events">
+                <div class="events-controls">
+                    <div class="event-search">
+                        <h3>Rechercher un évènement: </h3>
+                        <form>
+                            <input type="text"
+                                   name="search-loc"
+                                   placeholder="Où?"
+                                   value="{ot:request.getArgument(argument: 'search-loc')}"/>
+                            <input type="text"
+                                   name="search-name"
+                                   placeholder="Quoi?"
+                                   value="{ot:request.getArgument(argument: 'search-name')}" />
+                            <input type="text"
+                                   name="search-datestart"
+                                   placeholder="Depuis le..."
+                                   class="datepicker datetimepicker"
+                                   value="{ot:request.getArgument(argument: 'search-datestart')}" />
+                            <input type="text"
+                                   name="search-dateend"
+                                   placeholder="Jusqu'au..."
+                                   class="datepicker datetimepicker"
+                                   value="{ot:request.getArgument(argument: 'search-dateend')}" />
+
+                            <button name="search-submit">Rechercher</button>
+                        </form>
+                    </div>
+
+                    <div id="event-map" data-records="">
+                        <f:for each="{events}" as="event">
+                            <f:if condition="{event.longitude}">
+                                <f:then>
+                                    <i class="item-geodata" style="display: none;"
+                                       data-id="{event.id}"
+                                       data-long="{event.longitude}"
+                                       data-lat="{event.latitude}"
+                                       data-label="<b>{event.name}</b><br/>{event.streetAdress}">
+                                    </i>
+                                </f:then>
+                            </f:if>
+                        </f:for>
+                    </div>
+                </div>
+
+                <div class="events-results">
+                    <f:if condition="{events -> f:count()} == 0">
+                        <span>Aucun résultat</span>
+                    </f:if>
+
+                    <f:for each="{events}" as="event">
+                        <div class="event" data-id="{event.id}">
+                            <div class="event-preview">
+
+                                <div class="event-poster">
+                                    <f:if condition="{event.image}">
+                                        <f:then>
+                                            <img src='{event.image}' alt="poster" />
+                                        </f:then>
+                                        <f:else>
+                                            <f:image src="EXT:ot_templating/Resources/Public/media/event-default.jpg" alt="poster" />
+                                        </f:else>
+                                    </f:if>
+                                </div>
+
+                                <div class="event-summary">
+                    <span class="event-name">
+                        {event.name}
+                    </span>
+                                    <span class="event-loc-date">
+                        {event.locAndDate}
+                    </span>
+                                    <span class="event-description">
+                        {event.shortDescription}
+                    </span>
+                                </div>
+                            </div>
+
+                            <a href="{event.url}" target="_blank" class="event-see">
+                                <i class="fa fa-plus" style="margin-right: 5px;"></i>
+                                <span>Plus d'infos</span>
+                            </a>
+                        </div>
+                    </f:for>
+                </div>
+            </div>
+        </ot:events.getAll>
+
+    </div>
+</div>
+
+<f:comment><!-- Render the footer defined in partials/footer.html--></f:comment>
+<f:render partial="Classic/Footer" />

+ 119 - 0
ot_templating/Resources/Private/Layouts/Modern/StructuresEvents.html

@@ -0,0 +1,119 @@
+{namespace v=FluidTYPO3\Vhs\ViewHelpers}
+{namespace ot=Opentalent\OtTemplating\ViewHelpers}
+
+<f:comment><!-- Special layout for the All Structures Events page --></f:comment>
+<f:layout name="StructuresEvents" />
+
+<section class="t-container st-effect-3">
+    <div class="wrapper">
+
+        <f:comment><!-- Render the header defined in partials/Header.html--></f:comment>
+        <f:render partial="Modern/Header" arguments="{_all}" />
+
+        <section class="page-section-ptb">
+            <div class="container">
+                <div class="row">
+                    <div class="col-sm-12 mt-30">
+
+                        <f:comment><!-- All structures' events --></f:comment>
+                        <ot:events.getAll as="events"
+                                          organizationId="{settings.organizationId}"
+                                          fromChildren="1">
+
+                            <div class="ot-all-events">
+                                <div class="events-controls">
+                                    <div class="event-search">
+                                        <h3>Rechercher un évènement: </h3>
+                                        <form>
+                                            <input type="text"
+                                                   name="search-loc"
+                                                   placeholder="Où?"
+                                                   value="{ot:request.getArgument(argument: 'search-loc')}"/>
+                                            <input type="text"
+                                                   name="search-name"
+                                                   placeholder="Quoi?"
+                                                   value="{ot:request.getArgument(argument: 'search-name')}" />
+                                            <input type="text"
+                                                   name="search-datestart"
+                                                   placeholder="Depuis le..."
+                                                   class="datepicker datetimepicker"
+                                                   value="{ot:request.getArgument(argument: 'search-datestart')}" />
+                                            <input type="text"
+                                                   name="search-dateend"
+                                                   placeholder="Jusqu'au..."
+                                                   class="datepicker datetimepicker"
+                                                   value="{ot:request.getArgument(argument: 'search-dateend')}" />
+
+                                            <button name="search-submit">Rechercher</button>
+                                        </form>
+                                    </div>
+
+                                    <div id="event-map" data-records="">
+                                        <f:for each="{events}" as="event">
+                                            <f:if condition="{event.longitude}">
+                                                <f:then>
+                                                    <i class="item-geodata" style="display: none;"
+                                                       data-id="{event.id}"
+                                                       data-long="{event.longitude}"
+                                                       data-lat="{event.latitude}"
+                                                       data-label="<b>{event.name}</b><br/>{event.streetAdress}">
+                                                    </i>
+                                                </f:then>
+                                            </f:if>
+                                        </f:for>
+                                    </div>
+                                </div>
+
+                                <div class="events-results">
+                                    <f:if condition="{events -> f:count()} == 0">
+                                        <span>Aucun résultat</span>
+                                    </f:if>
+
+                                    <f:for each="{events}" as="event">
+                                        <div class="event" data-id="{event.id}">
+                                            <div class="event-preview">
+
+                                                <div class="event-poster">
+                                                    <f:if condition="{event.image}">
+                                                        <f:then>
+                                                            <img src='{event.image}' alt="poster" />
+                                                        </f:then>
+                                                        <f:else>
+                                                            <f:image src="EXT:ot_templating/Resources/Public/media/event-default.jpg" alt="poster" />
+                                                        </f:else>
+                                                    </f:if>
+                                                </div>
+
+                                                <div class="event-summary">
+                                    <span class="event-name">
+                                        {event.name}
+                                    </span>
+                                                    <span class="event-loc-date">
+                                        {event.locAndDate}
+                                    </span>
+                                                    <span class="event-description">
+                                        {event.shortDescription}
+                                    </span>
+                                                </div>
+                                            </div>
+
+                                            <a href="{event.url}" target="_blank" class="event-see">
+                                                <i class="fa fa-plus" style="margin-right: 5px;"></i>
+                                                <span>Plus d'infos</span>
+                                            </a>
+                                        </div>
+                                    </f:for>
+                                </div>
+                            </div>
+                        </ot:events.getAll>
+
+                    </div>
+                </div>
+            </div>
+        </section>
+
+        <f:comment><!-- Render the footer defined in partials/footer.html--></f:comment>
+        <f:render partial="Modern/Footer" />
+
+    </div>
+</section>

+ 17 - 0
ot_templating/Resources/Private/Templates/Page/StructuresEvents.html

@@ -0,0 +1,17 @@
+{namespace flux=FluidTYPO3\Flux\ViewHelpers}
+{namespace v=FluidTYPO3\Vhs\ViewHelpers}
+
+<f:comment><!-- uses the layout Events, defined in layouts/[templateName]/Events.html --></f:comment>
+<f:layout name="{settings.template}/StructuresEvents" />
+
+<f:section name='Configuration'>
+    <flux:form id="structuresEvents" label="Gabarit Evènements des structures" extensionName="Opentalent.OtTemplating">
+    </flux:form>
+
+    <!-- Backend layout grid -->
+    <flux:grid>
+        <flux:grid.row>
+        </flux:grid.row>
+    </flux:grid>
+</f:section>
+