mirror of
https://github.com/werkraum-media/events.git
synced 2024-12-22 16:46:10 +01:00
Merge
This commit is contained in:
commit
552986b2aa
35 changed files with 1076 additions and 431 deletions
|
@ -23,29 +23,23 @@ class DestinationDataImportCommand extends Command {
|
|||
'storage-pid',
|
||||
InputArgument::OPTIONAL,
|
||||
'What is the storage pid?',
|
||||
'281'
|
||||
'284'
|
||||
);
|
||||
$this->addArgument(
|
||||
'region-uid',
|
||||
InputArgument::OPTIONAL,
|
||||
'What is the region uid?',
|
||||
'3'
|
||||
);
|
||||
$this->addArgument(
|
||||
'category-parent-uid',
|
||||
InputArgument::OPTIONAL,
|
||||
'What is the default category parent uid?',
|
||||
'6'
|
||||
);
|
||||
$this->addArgument('rest-experience',
|
||||
InputArgument::OPTIONAL,
|
||||
'What is the rest experience?',
|
||||
'arnstadt'
|
||||
'stadtmarketing-erfurt'
|
||||
);
|
||||
$this->addArgument('files-folder',
|
||||
InputArgument::OPTIONAL,
|
||||
'Where to save the image files?',
|
||||
'redaktion/arnstadt/events/'
|
||||
'staedte/erfurt/events/'
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -59,7 +53,6 @@ class DestinationDataImportCommand extends Command {
|
|||
$input->getArgument('rest-experience'),
|
||||
$input->getArgument('storage-pid'),
|
||||
$input->getArgument('region-uid'),
|
||||
$input->getArgument('category-parent-uid'),
|
||||
$input->getArgument('files-folder')
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
namespace Wrm\Events\Controller;
|
||||
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use Wrm\Events\Domain\Model\Dto\DateDemand;
|
||||
use Wrm\Events\Domain\Repository\DateRepository;
|
||||
use Wrm\Events\Domain\Repository\RegionRepository;
|
||||
|
@ -63,8 +64,17 @@ class DateController extends ActionController
|
|||
*/
|
||||
public function listAction()
|
||||
{
|
||||
$demand = $this->createDemandFromSettings();
|
||||
$dates = $this->dateRepository->findByDemand($demand);
|
||||
if (($this->request->hasArgument('searchword') && $this->request->getArgument('searchword') != '') ||
|
||||
($this->request->hasArgument('region') && $this->request->getArgument('region') != '') ||
|
||||
($this->request->hasArgument('start') && $this->request->getArgument('start') != '') ||
|
||||
($this->request->hasArgument('end') && $this->request->getArgument('end') != ''))
|
||||
{
|
||||
$demand = $this->createDemandFromSearch();
|
||||
$dates = $this->dateRepository->findByDemand($demand);
|
||||
} else {
|
||||
$demand = $this->createDemandFromSettings();
|
||||
$dates = $this->dateRepository->findByDemand($demand);
|
||||
}
|
||||
$this->view->assign('dates', $dates);
|
||||
}
|
||||
|
||||
|
@ -73,42 +83,21 @@ class DateController extends ActionController
|
|||
*/
|
||||
public function searchAction()
|
||||
{
|
||||
|
||||
$searchword = null;
|
||||
$regions = null;
|
||||
$selRegion = null;
|
||||
$dates = null;
|
||||
$start = null;
|
||||
$end = null;
|
||||
|
||||
if ($this->request->hasArgument('searchword') && $this->request->getArgument('searchword') != '') {
|
||||
$searchword = $this->request->getArgument('searchword');
|
||||
}
|
||||
|
||||
if ($this->request->hasArgument('region') && $this->request->getArgument('region') != '') {
|
||||
$selRegion = $this->request->getArgument('region');
|
||||
}
|
||||
|
||||
if ($this->request->hasArgument('start') && $this->request->getArgument('start') != '') {
|
||||
$start = date( "d.m.y", strtotime( $this->request->getArgument('start')));
|
||||
}
|
||||
|
||||
if ($this->request->hasArgument('end') && $this->request->getArgument('end') != '') {
|
||||
$end = date( "d.m.y", strtotime( $this->request->getArgument('end')));
|
||||
}
|
||||
|
||||
$demand = $this->createDemandFromSearch();
|
||||
$dates = $this->dateRepository->findByDemand($demand);
|
||||
$arguments = GeneralUtility::_GET('tx_events_datelist');
|
||||
$searchword = $arguments['searchword'];
|
||||
$selRegion = $arguments['region'];
|
||||
$start = $arguments['start'];
|
||||
$end = $arguments['end'];
|
||||
$considerDate = $arguments['considerDate'];
|
||||
|
||||
$regions = $this->regionRepository->findAll();
|
||||
$this->view->assign('regions', $regions);
|
||||
|
||||
$this->view->assign('searchword', $searchword);
|
||||
$this->view->assign('regions', $regions);
|
||||
$this->view->assign('selRegion', $selRegion);
|
||||
$this->view->assign('dates', $dates);
|
||||
$this->view->assign('start', $start);
|
||||
$this->view->assign('end', $end);
|
||||
|
||||
$this->view->assign('considerDate', $considerDate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -172,13 +161,14 @@ class DateController extends ActionController
|
|||
if ($this->request->hasArgument('searchword') && $this->request->getArgument('searchword') != '')
|
||||
$demand->setSearchword((string)$this->request->getArgument('searchword'));
|
||||
|
||||
if ($this->request->hasArgument('start') && $this->request->getArgument('start') != '') {
|
||||
$demand->setStart(date( "Y-m-d", strtotime( $this->request->getArgument('start'))));
|
||||
}
|
||||
if ($this->request->hasArgument('start') && $this->request->getArgument('start') != '')
|
||||
$demand->setStart(strtotime($this->request->getArgument('start') . ' 00:00'));
|
||||
|
||||
if ($this->request->hasArgument('end') && $this->request->getArgument('end') != '') {
|
||||
$demand->setEnd(date( "Y-m-d", strtotime( $this->request->getArgument('end'))));
|
||||
}
|
||||
if ($this->request->hasArgument('end') && $this->request->getArgument('end') != '')
|
||||
$demand->setEnd(strtotime($this->request->getArgument('end') . ' 23:59'));
|
||||
|
||||
if ($this->request->hasArgument('considerDate') && $this->request->getArgument('considerDate') != '')
|
||||
$demand->setConsiderDate(strtotime($this->request->getArgument('considerDate')));
|
||||
|
||||
$demand->setSortBy((string)$this->settings['sortByDate']);
|
||||
$demand->setSortOrder((string)$this->settings['sortOrder']);
|
||||
|
|
|
@ -49,10 +49,10 @@ class Date extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string $end
|
||||
* @param \DateTime $end
|
||||
* @return void
|
||||
*/
|
||||
public function setEnd($end)
|
||||
public function setEnd(\DateTime $end)
|
||||
{
|
||||
$this->end = $end;
|
||||
}
|
||||
|
|
|
@ -59,6 +59,11 @@ class DateDemand {
|
|||
*/
|
||||
protected $searchword = '';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $considerDate = 0;
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
|
@ -235,4 +240,20 @@ class DateDemand {
|
|||
$this->end = $end;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function getConsiderDate(): bool
|
||||
{
|
||||
return $this->considerDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $considerDate
|
||||
*/
|
||||
public function setConsiderDate(string $considerDate): void
|
||||
{
|
||||
$this->considerDate = $considerDate;
|
||||
}
|
||||
|
||||
}
|
|
@ -105,6 +105,13 @@ class Event extends AbstractEntity
|
|||
*/
|
||||
protected $country = '';
|
||||
|
||||
/**
|
||||
* web
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $phone = '';
|
||||
|
||||
/**
|
||||
* web
|
||||
*
|
||||
|
@ -381,6 +388,22 @@ class Event extends AbstractEntity
|
|||
$this->zip = $zip;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getPhone()
|
||||
{
|
||||
return $this->phone;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $phone
|
||||
*/
|
||||
public function setPhone($phone)
|
||||
{
|
||||
$this->phone = $phone;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string $web
|
||||
*/
|
||||
|
|
|
@ -38,7 +38,7 @@ class DateRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
|
|||
|
||||
// For testing purposes
|
||||
// $query = $this->createDemandQueryViaBuilder($demand);
|
||||
//return $query->execute()->fetchAll();
|
||||
// return $query->execute()->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -82,9 +82,12 @@ class DateRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
|
|||
$constraints['daterange'] = $query->logicalAnd(
|
||||
[
|
||||
$query->greaterThanOrEqual('start', $demand->getStart()),
|
||||
$query->lessThanOrEqual('start', $demand->getEnd())
|
||||
$query->lessThanOrEqual('end', $demand->getEnd())
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$now = new \DateTime('now', new \DateTimeZone('Europe/Berlin'));
|
||||
$constraints['untilnow'] = $query->greaterThanOrEqual('start', $now);
|
||||
}
|
||||
|
||||
if ($demand->getLimit() !== '') {
|
||||
|
|
|
@ -42,6 +42,10 @@ class DestinationDataImportService {
|
|||
* @var
|
||||
*/
|
||||
protected $restLimit;
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
protected $restMode;
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
|
@ -185,27 +189,27 @@ class DestinationDataImportService {
|
|||
);
|
||||
|
||||
// Set properties
|
||||
$this->restUrl = $this->settings['destinationData']['restUrl'];
|
||||
$this->restLicenseKey = $this->settings['destinationData']['license'];
|
||||
$this->restType = $this->settings['destinationData']['restType'];
|
||||
$this->restLimit = $this->settings['destinationData']['restLimit'];
|
||||
$this->restTemplate = $this->settings['destinationData']['restTemplate'];
|
||||
$this->sysCategoriesPid = $this->settings['destinationData']['categoriesPid'];
|
||||
$this->restUrl = $this->settings['destinationData']['restUrl'];
|
||||
$this->restLicenseKey = $this->settings['destinationData']['license'];
|
||||
$this->restType = $this->settings['destinationData']['restType'];
|
||||
$this->restLimit = $this->settings['destinationData']['restLimit'];
|
||||
$this->restMode = $this->settings['destinationData']['restMode'];
|
||||
$this->restTemplate = $this->settings['destinationData']['restTemplate'];
|
||||
$this->sysCategoriesPid = $this->settings['destinationData']['categoriesPid'];
|
||||
$this->categoryParentUid = $this->settings['destinationData']['categoryParentUid'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $restExperience
|
||||
* @param $storagePid
|
||||
* @param $regionUid
|
||||
* @param $categoryParentUid
|
||||
* @param $filesFolder
|
||||
*/
|
||||
public function import($restExperience, $storagePid, $regionUid, $categoryParentUid, $filesFolder) {
|
||||
public function import($restExperience, $storagePid, $regionUid, $filesFolder) {
|
||||
|
||||
$this->restExperience = $restExperience;
|
||||
$this->storagePid = $storagePid;
|
||||
$this->regionUid = $regionUid;
|
||||
$this->categoryParentUid = $categoryParentUid;
|
||||
$this->filesFolder = $filesFolder;
|
||||
|
||||
// Get configuration
|
||||
|
@ -222,16 +226,14 @@ class DestinationDataImportService {
|
|||
|
||||
// Set Configuration
|
||||
$this->configurationManager->setConfiguration(array_merge($frameworkConfiguration, $persistenceConfiguration));
|
||||
|
||||
$this->logger = GeneralUtility::makeInstance(LogManager::class)->getLogger(__CLASS__);
|
||||
|
||||
$this->logger->info('Starting Destination Data Import Service');
|
||||
|
||||
$restUrl = $this->restUrl . '?experience=' . $this->restExperience . '&licensekey=' . $this->restLicenseKey . '&type=' . $this->restType . '&limit=' . $this->restLimit . '&template=' . $this->restTemplate;
|
||||
|
||||
$restUrl = $this->restUrl . '?experience=' . $this->restExperience . '&licensekey=' . $this->restLicenseKey . '&type=' . $this->restType . '&mode=' . $this->restMode . '&limit=' . $this->restLimit . '&template=' . $this->restTemplate;
|
||||
$this->logger->info('Try to get data from ' . $restUrl);
|
||||
|
||||
if ($jsonResponse = json_decode(file_get_contents($restUrl),true)) {
|
||||
$this->logger->info('Received data with ' . count($jsonResponse) . 'items');
|
||||
$this->logger->info('Received data with ' . count($jsonResponse['items']) . ' items');
|
||||
return $this->processData($jsonResponse);
|
||||
} else {
|
||||
$this->logger->error('Could not receive data.');
|
||||
|
@ -246,7 +248,9 @@ class DestinationDataImportService {
|
|||
*/
|
||||
public function processData($data) {
|
||||
|
||||
// Get seleceted region
|
||||
$this->logger->info('Processing json ' . count($data['items']));
|
||||
|
||||
// Get selected region
|
||||
$selectedRegion = $this->regionRepository->findByUid($this->regionUid);
|
||||
|
||||
foreach ($data['items'] as $event) {
|
||||
|
@ -271,8 +275,9 @@ class DestinationDataImportService {
|
|||
$this->setTexts($event['texts']);
|
||||
|
||||
// Set address and geo data
|
||||
if($event['name'] && $event['street'] && $event['city'] && $event['zip'] && $event['country'])
|
||||
$this->setAddress($event['name'], $event['street'], $event['city'], $event['zip'], $event['country']);
|
||||
|
||||
if($event['name'] || $event['street'] || $event['city'] || $event['zip'] || $event['country'])
|
||||
$this->setAddress($event);
|
||||
|
||||
// Set LatLng
|
||||
if($event['geo']['main']['latitude'] && $event['geo']['main']['longitude'])
|
||||
|
@ -301,10 +306,12 @@ class DestinationDataImportService {
|
|||
|
||||
}
|
||||
$this->doSlugUpdate();
|
||||
$this->logger->info('Finished import');
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array $categories
|
||||
*/
|
||||
protected function setCategories(Array $categories) {
|
||||
|
@ -331,7 +338,7 @@ class DestinationDataImportService {
|
|||
*/
|
||||
protected function setDates(Array $timeIntervals) {
|
||||
|
||||
// TODO: does not seem to work -->
|
||||
// @TODO: does not seem to work -->
|
||||
//$currentEventDates = $this->tmpCurrentEvent->getDates();
|
||||
//$this->tmpCurrentEvent->removeAllDates($currentEventDates);
|
||||
// <--
|
||||
|
@ -341,19 +348,18 @@ class DestinationDataImportService {
|
|||
$this->logger->info('Found ' . count($currentEventDates) . ' to delete');
|
||||
|
||||
foreach ($currentEventDates as $currentDate) {
|
||||
//$this->logger->info('Delete ' . $currentDate->getStart()->format('Y-m-d'));
|
||||
$this->dateRepository->remove($currentDate);
|
||||
}
|
||||
|
||||
$now = new \DateTime();
|
||||
$now = $now->getTimestamp();
|
||||
$today = new \DateTime('today');
|
||||
$today = $today->getTimestamp();
|
||||
|
||||
foreach ($timeIntervals as $date) {
|
||||
|
||||
// Check if dates are given as interval or not
|
||||
if (empty($date['interval'])) {
|
||||
|
||||
if (strtotime($date['start']) > $now) {
|
||||
if (strtotime($date['start']) > $today) {
|
||||
$this->logger->info('Setup single date');
|
||||
$dateObj = $this->objectManager->get(\Wrm\Events\Domain\Model\Date::class);
|
||||
$start = new \DateTime($date['start'], new \DateTimeZone($date['tz']));
|
||||
|
@ -367,16 +373,16 @@ class DestinationDataImportService {
|
|||
|
||||
} else {
|
||||
|
||||
|
||||
if ($date['freq'] == 'Daily' && empty($date['weekdays'])) {
|
||||
if ($date['freq'] == 'Daily' && empty($date['weekdays']) && !empty($date['repeatUntil'])) {
|
||||
|
||||
$this->logger->info('Setup daily interval dates');
|
||||
$this->logger->info('Start ' . $date['start']);
|
||||
$this->logger->info('End ' . $date['repeatUntil']);
|
||||
$start = new \DateTime($date['start'], new \DateTimeZone($date['tz']));
|
||||
$until = new \DateTime($date['repeatUntil'], new \DateTimeZone($date['tz']));
|
||||
|
||||
for($i = strtotime($start->format('l'), $start->getTimestamp()); $i <= $until->getTimestamp(); $i = strtotime('+1 day', $i)) {
|
||||
if ($i > $now) {
|
||||
if ($i >= $today) {
|
||||
$eventStart = new \DateTime();
|
||||
$eventStart->setTimestamp($i);
|
||||
$eventStart->setTime($start->format('H'), $start->format('i'));
|
||||
|
@ -392,8 +398,7 @@ class DestinationDataImportService {
|
|||
|
||||
}
|
||||
|
||||
else if ($date['freq'] == 'Weekly' && !empty($date['weekdays'])) {
|
||||
|
||||
else if ($date['freq'] == 'Weekly' && !empty($date['weekdays']) && !empty($date['repeatUntil'])) {
|
||||
foreach ($date['weekdays'] as $day) {
|
||||
$this->logger->info('Setup weekly interval dates for ' . $day);
|
||||
$this->logger->info('Start ' . $date['start']);
|
||||
|
@ -402,7 +407,7 @@ class DestinationDataImportService {
|
|||
$until = new \DateTime($date['repeatUntil'], new \DateTimeZone($date['tz']));
|
||||
|
||||
for($i = strtotime($day, $start->getTimestamp()); $i <= $until->getTimestamp(); $i = strtotime('+1 week', $i)) {
|
||||
if ($i > $now) {
|
||||
if ($i >= $today) {
|
||||
$eventStart = new \DateTime();
|
||||
$eventStart->setTimestamp($i);
|
||||
$eventStart->setTime($start->format('H'), $start->format('i'));
|
||||
|
@ -416,12 +421,10 @@ class DestinationDataImportService {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
$this->logger->info('Finished setup dates');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -436,9 +439,7 @@ class DestinationDataImportService {
|
|||
$this->tmpCurrentEvent->setOrganizer($tmpOrganizer);
|
||||
continue;
|
||||
}
|
||||
|
||||
$tmpOrganizer = $this->objectManager->get(\Wrm\Events\Domain\Model\Organizer::class);
|
||||
|
||||
$tmpOrganizer->setName($address['name']);
|
||||
$tmpOrganizer->setCity($address['city']);
|
||||
$tmpOrganizer->setZip($address['zip']);
|
||||
|
@ -447,27 +448,30 @@ class DestinationDataImportService {
|
|||
$tmpOrganizer->setWeb($address['web']);
|
||||
$tmpOrganizer->setEmail($address['email']);
|
||||
$tmpOrganizer->setDistrict($address['district']);
|
||||
|
||||
$this->organizerRepository->add($tmpOrganizer);
|
||||
$this->tmpCurrentEvent->setOrganizer($tmpOrganizer);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string $street
|
||||
* @param string $city
|
||||
* @param string $zip
|
||||
* @param string $country
|
||||
* @param array $event
|
||||
*/
|
||||
protected function setAddress(String $name, String $street, String $city, String $zip, String $country) {
|
||||
$this->tmpCurrentEvent->setName($name);
|
||||
$this->tmpCurrentEvent->setStreet($street);
|
||||
$this->tmpCurrentEvent->setCity($city);
|
||||
$this->tmpCurrentEvent->setZip($zip);
|
||||
$this->tmpCurrentEvent->setCountry($country);
|
||||
protected function setAddress(Array $event) {
|
||||
if (!empty($event['name']))
|
||||
$this->tmpCurrentEvent->setName($event['name']);
|
||||
if (!empty($event['street']))
|
||||
$this->tmpCurrentEvent->setStreet($event['street']);
|
||||
if (!empty($event['city']))
|
||||
$this->tmpCurrentEvent->setCity($event['city']);
|
||||
if (!empty($event['zip']))
|
||||
$this->tmpCurrentEvent->setZip($event['zip']);
|
||||
if (!empty($event['country']))
|
||||
$this->tmpCurrentEvent->setCountry($event['country']);
|
||||
if (!empty($event['phone']))
|
||||
$this->tmpCurrentEvent->setPhone($event['phone']);
|
||||
if (!empty($event['web']))
|
||||
$this->tmpCurrentEvent->setWeb($event['web']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -492,6 +496,9 @@ class DestinationDataImportService {
|
|||
if ($text['rel'] == "teaser" && $text['type'] == "text/plain") {
|
||||
$this->tmpCurrentEvent->setTeaser($text['value']);
|
||||
}
|
||||
if ($text['rel'] == "PRICE_INFO" && $text['type'] == "text/plain") {
|
||||
$this->tmpCurrentEvent->setPriceInfo($text['value']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -528,6 +535,8 @@ class DestinationDataImportService {
|
|||
*/
|
||||
protected function setAssets(Array $assets) {
|
||||
|
||||
$this->logger->info("Set assets");
|
||||
|
||||
$error = false;
|
||||
|
||||
foreach ($assets as $media_object)
|
||||
|
@ -536,6 +545,11 @@ class DestinationDataImportService {
|
|||
|
||||
$this->storage = $this->resourceFactory->getDefaultStorage();
|
||||
|
||||
if ($this->storage == null) {
|
||||
$this->logger->error('No default storage defined. Cancel import.');
|
||||
die();
|
||||
}
|
||||
|
||||
// Check if file already exists
|
||||
if (file_exists($this->environment->getPublicPath() . '/fileadmin/' . $this->filesFolder . strtolower(basename($media_object['url'])))) {
|
||||
$this->logger->info('File already exists');
|
||||
|
@ -634,7 +648,6 @@ class DestinationDataImportService {
|
|||
*/
|
||||
protected function doSlugUpdate()
|
||||
{
|
||||
|
||||
$this->logger->info('Update slugs');
|
||||
|
||||
$slugHelper = GeneralUtility::makeInstance(
|
||||
|
@ -674,4 +687,4 @@ class DestinationDataImportService {
|
|||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
9
Classes/ViewHelpers/FormViewHelper.php
Normal file
9
Classes/ViewHelpers/FormViewHelper.php
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Wrm\Events\ViewHelpers;
|
||||
|
||||
class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper {
|
||||
protected function renderHiddenReferrerFields(){
|
||||
return '';
|
||||
}
|
||||
}
|
236
Configuration/FlexForms/DateList.xml
Normal file
236
Configuration/FlexForms/DateList.xml
Normal file
|
@ -0,0 +1,236 @@
|
|||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>Options</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.sortByDate>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Sort By</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<numIndex index="0">Start</numIndex>
|
||||
<numIndex index="1">start</numIndex>
|
||||
</numIndex>
|
||||
<numIndex index="1" type="array">
|
||||
<numIndex index="0">End</numIndex>
|
||||
<numIndex index="1">end</numIndex>
|
||||
</numIndex>
|
||||
</items>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.sortByDate>
|
||||
|
||||
<settings.sortOrder>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Sort Order</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<numIndex index="0">
|
||||
Ascending
|
||||
</numIndex>
|
||||
<numIndex index="1">ASC</numIndex>
|
||||
</numIndex>
|
||||
<numIndex index="1" type="array">
|
||||
<numIndex index="0">
|
||||
Descending
|
||||
</numIndex>
|
||||
<numIndex index="1">DESC</numIndex>
|
||||
</numIndex>
|
||||
</items>
|
||||
<default>ASC</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.sortOrder>
|
||||
|
||||
<settings.limit>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Max Items</label>
|
||||
<config>
|
||||
<type>input</type>
|
||||
<size>10</size>
|
||||
<max>30</max>
|
||||
<eval>trim</eval>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.limit>
|
||||
|
||||
<settings.highlight>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Highlights only</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.highlight>
|
||||
|
||||
<settings.todayOnly>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Today only</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.todayOnly>
|
||||
|
||||
<settings.pagination>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Show pagination</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.pagination>
|
||||
|
||||
<settings.showPID>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Detail page</label>
|
||||
<config>
|
||||
<type>group</type>
|
||||
<internal_type>db</internal_type>
|
||||
<allowed>pages</allowed>
|
||||
<size>1</size>
|
||||
<maxitems>1</maxitems>
|
||||
<minitems>0</minitems>
|
||||
<show_thumbs>1</show_thumbs>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.showPID>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
<sTemplate>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>Template</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.template>
|
||||
<exclude>1</exclude>
|
||||
<label>Layout option</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<numIndex index="0">Default</numIndex>
|
||||
<numIndex index="1">default</numIndex>
|
||||
</numIndex>
|
||||
<numIndex index="1" type="array">
|
||||
<numIndex index="0">Costum</numIndex>
|
||||
<numIndex index="1">costum</numIndex>
|
||||
</numIndex>
|
||||
<numIndex index="2" type="array">
|
||||
<numIndex index="0">Table</numIndex>
|
||||
<numIndex index="1">table</numIndex>
|
||||
</numIndex>
|
||||
<numIndex index="3" type="array">
|
||||
<numIndex index="0">Grid</numIndex>
|
||||
<numIndex index="1">grid</numIndex>
|
||||
</numIndex>
|
||||
</items>
|
||||
<default>default</default>
|
||||
</config>
|
||||
</settings.template>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sTemplate>
|
||||
<sConstrains>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>Regions & Categories</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.region>
|
||||
<TCEforms>
|
||||
<label>Region</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<foreign_table>tx_events_domain_model_region</foreign_table>
|
||||
<foreign_table_where>AND tx_events_domain_model_region.deleted = 0 AND tx_events_domain_model_region.hidden = 0</foreign_table_where>
|
||||
<size>3</size>
|
||||
<minitems>0</minitems>
|
||||
<maxitems>2</maxitems>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.region>
|
||||
|
||||
<settings.categoryCombination>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Combination</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<numIndex index="0">And</numIndex>
|
||||
<numIndex index="1">0</numIndex>
|
||||
</numIndex>
|
||||
<numIndex index="1" type="array">
|
||||
<numIndex index="0">Or</numIndex>
|
||||
<numIndex index="1">1</numIndex>
|
||||
</numIndex>
|
||||
</items>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.categoryCombination>
|
||||
|
||||
<settings.categories>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>
|
||||
Category
|
||||
</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<autoSizeMax>20</autoSizeMax>
|
||||
<foreign_table>sys_category</foreign_table>
|
||||
<foreign_table_where> AND sys_category.sys_language_uid IN (-1, 0) ORDER BY sys_category.title ASC</foreign_table_where>
|
||||
<maxitems>1</maxitems>
|
||||
<renderMode>tree</renderMode>
|
||||
<size>8</size>
|
||||
<treeConfig>
|
||||
<appearance>
|
||||
<expandAll>1</expandAll>
|
||||
<showHeader>1</showHeader>
|
||||
</appearance>
|
||||
<parentField>parent</parentField>
|
||||
</treeConfig>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.categories>
|
||||
|
||||
<settings.includeSubcategories>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Include Subcategories</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.includeSubcategories>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sConstrains>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
39
Configuration/FlexForms/DateSearch.xml
Normal file
39
Configuration/FlexForms/DateSearch.xml
Normal file
|
@ -0,0 +1,39 @@
|
|||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sSearch>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>Options</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.pageUid>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Results page</label>
|
||||
<config>
|
||||
<type>group</type>
|
||||
<internal_type>db</internal_type>
|
||||
<allowed>pages</allowed>
|
||||
<size>1</size>
|
||||
<maxitems>1</maxitems>
|
||||
<minitems>0</minitems>
|
||||
<show_thumbs>1</show_thumbs>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.pageUid>
|
||||
<settings.showRegions>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Show Regions</label>
|
||||
<config>
|
||||
<type>check</type>
|
||||
<default>0</default>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.showRegions>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sSearch>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
57
Configuration/FlexForms/DateShow.xml
Normal file
57
Configuration/FlexForms/DateShow.xml
Normal file
|
@ -0,0 +1,57 @@
|
|||
<T3DataStructure>
|
||||
<sheets>
|
||||
<sDEF>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>Options</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.backPID>
|
||||
<TCEforms>
|
||||
<exclude>1</exclude>
|
||||
<label>Back page</label>
|
||||
<config>
|
||||
<type>group</type>
|
||||
<internal_type>db</internal_type>
|
||||
<allowed>pages</allowed>
|
||||
<size>1</size>
|
||||
<maxitems>1</maxitems>
|
||||
<minitems>0</minitems>
|
||||
<show_thumbs>1</show_thumbs>
|
||||
</config>
|
||||
</TCEforms>
|
||||
</settings.backPID>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sDEF>
|
||||
<sTemplate>
|
||||
<ROOT>
|
||||
<TCEforms>
|
||||
<sheetTitle>Template</sheetTitle>
|
||||
</TCEforms>
|
||||
<type>array</type>
|
||||
<el>
|
||||
<settings.template>
|
||||
<exclude>1</exclude>
|
||||
<label>Layout option</label>
|
||||
<config>
|
||||
<type>select</type>
|
||||
<items type="array">
|
||||
<numIndex index="0" type="array">
|
||||
<numIndex index="0">Default</numIndex>
|
||||
<numIndex index="1">default</numIndex>
|
||||
</numIndex>
|
||||
<numIndex index="1" type="array">
|
||||
<numIndex index="0">Costum</numIndex>
|
||||
<numIndex index="1">costum</numIndex>
|
||||
</numIndex>
|
||||
</items>
|
||||
<default>default</default>
|
||||
</config>
|
||||
</settings.template>
|
||||
</el>
|
||||
</ROOT>
|
||||
</sTemplate>
|
||||
</sheets>
|
||||
</T3DataStructure>
|
|
@ -20,5 +20,53 @@ call_user_func(function () {
|
|||
'FILE:EXT:events/Configuration/FlexForms/Pi1.xml'
|
||||
);
|
||||
|
||||
/* Search Plugin */
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Wrm.Events',
|
||||
'DateSearch',
|
||||
'Events: Date Search',
|
||||
'EXT:events/Resources/Public/Icons/user_plugin_events.svg'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['events_datesearch'] = 'pi_flexform';
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
'events_datesearch',
|
||||
'FILE:EXT:events/Configuration/FlexForms/DateSearch.xml'
|
||||
);
|
||||
|
||||
/* Date List Plugin */
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Wrm.Events',
|
||||
'DateList',
|
||||
'Events: Date List',
|
||||
'EXT:events/Resources/Public/Icons/user_plugin_events.svg'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['events_datelist'] = 'pi_flexform';
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
'events_datelist',
|
||||
'FILE:EXT:events/Configuration/FlexForms/DateList.xml'
|
||||
);
|
||||
|
||||
/* Date Show Plugin */
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'Wrm.Events',
|
||||
'DateShow',
|
||||
'Events: Date Show',
|
||||
'EXT:events/Resources/Public/Icons/user_plugin_events.svg'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['events_dateshow'] = 'pi_flexform';
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
|
||||
'events_dateshow',
|
||||
'FILE:EXT:events/Configuration/FlexForms/DateShow.xml'
|
||||
);
|
||||
|
||||
|
||||
});
|
||||
|
|
|
@ -120,7 +120,7 @@ return [
|
|||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:tx_events_domain_model_date.start',
|
||||
'config' => [
|
||||
'dbType' => 'datetime',
|
||||
//'dbType' => 'datetime',
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'size' => 12,
|
||||
|
@ -132,7 +132,7 @@ return [
|
|||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:tx_events_domain_model_date.end',
|
||||
'config' => [
|
||||
'dbType' => 'datetime',
|
||||
//'dbType' => 'datetime',
|
||||
'type' => 'input',
|
||||
'renderType' => 'inputDateTime',
|
||||
'size' => 12,
|
||||
|
@ -141,14 +141,6 @@ return [
|
|||
],
|
||||
],
|
||||
|
||||
/*
|
||||
'event' => [
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
*/
|
||||
|
||||
'event' => array(
|
||||
'exclude' => 1,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:tx_events_domain_model_date.event',
|
||||
|
|
|
@ -20,10 +20,10 @@ return [
|
|||
'iconfile' => 'EXT:events/Resources/Public/Icons/tx_events_domain_model_event.gif'
|
||||
],
|
||||
'interface' => [
|
||||
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, global_id, slug, highlight, teaser, details, price_info, name, street, district, city, zip, country, web, booking, ticket, facebook, youtube, latitude, longitude, images, categories, dates, organizer, region',
|
||||
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, global_id, slug, highlight, teaser, details, price_info, name, street, district, city, zip, country, phone, web, booking, ticket, facebook, youtube, latitude, longitude, images, categories, dates, organizer, region',
|
||||
],
|
||||
'types' => [
|
||||
'1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, global_id, slug, highlight, teaser, details, price_info, name, street, district, city, zip, country, web, booking, ticket, facebook, youtube, latitude, longitude, images, categories, dates, organizer, region, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
|
||||
'1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, global_id, slug, highlight, teaser, details, price_info, name, street, district, city, zip, country, phone, web, booking, ticket, facebook, youtube, latitude, longitude, images, categories, dates, organizer, region, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
|
||||
],
|
||||
'columns' => [
|
||||
'sys_language_uid' => [
|
||||
|
@ -150,17 +150,6 @@ return [
|
|||
'default' => '',
|
||||
],
|
||||
],
|
||||
/*
|
||||
'slug' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:tx_events_domain_model_event.slug',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim'
|
||||
],
|
||||
],
|
||||
*/
|
||||
'highlight' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:tx_events_domain_model_event.highlight',
|
||||
|
@ -266,6 +255,15 @@ return [
|
|||
'eval' => 'trim'
|
||||
],
|
||||
],
|
||||
'phone' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:tx_events_domain_model_event.phone',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim'
|
||||
],
|
||||
],
|
||||
'web' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:tx_events_domain_model_event.web',
|
||||
|
|
|
@ -13,6 +13,8 @@ plugin.tx_events {
|
|||
storagePid =
|
||||
}
|
||||
settings {
|
||||
# cat=plugin.tx_events//a; type=string; label=Default Image
|
||||
defaultImagePath = typo3conf/ext/events/Resources/Public/Images/default.jpg
|
||||
destinationData {
|
||||
# cat=plugin.tx_events//a; type=string; label=Rest Url
|
||||
restUrl = http://meta.et4.de/rest.ashx/search/
|
||||
|
@ -21,11 +23,15 @@ plugin.tx_events {
|
|||
# cat=plugin.tx_events//a; type=string; label=Data Type
|
||||
restType = Event
|
||||
# cat=plugin.tx_events//a; type=string; label=Data Limit
|
||||
restLimit = 200
|
||||
restLimit = 500
|
||||
# cat=plugin.tx_events//a; type=string; label=Mode
|
||||
restMode = next_months,12
|
||||
# cat=plugin.tx_events//a; type=string; label=Data Template
|
||||
restTemplate = ET2014A.json
|
||||
# cat=plugin.tx_events//a; type=string; Label=Category Storage
|
||||
categoriesPid = 54
|
||||
# cat=plugin.tx_events//a; type=string; Label=Category Parent ID
|
||||
categoryParentUid = 6
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ plugin.tx_events {
|
|||
|
||||
defaulDetailEventsPid =
|
||||
defaultDetailDatesPid =
|
||||
defaultImagePath = {$plugin.tx_events.settings.defaultImagePath}
|
||||
|
||||
paginate {
|
||||
# can be overriden by plugin
|
||||
|
@ -50,10 +51,12 @@ plugin.tx_events {
|
|||
license = {$plugin.tx_events.settings.destinationData.license}
|
||||
restType = {$plugin.tx_events.settings.destinationData.restType}
|
||||
restLimit = {$plugin.tx_events.settings.destinationData.restLimit}
|
||||
restMode = {$plugin.tx_events.settings.destinationData.restMode}
|
||||
restTemplate = {$plugin.tx_events.settings.destinationData.restTemplate}
|
||||
categoriesPid = {$plugin.tx_events.settings.destinationData.categoriesPid}
|
||||
categoryParentUid = {$plugin.tx_events.settings.destinationData.categoryParentUid}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.tx_events < plugin.tx_events
|
||||
module.tx_events < plugin.tx_events
|
||||
|
|
|
@ -48,6 +48,9 @@
|
|||
<trans-unit id="tx_events_domain_model_event.web">
|
||||
<source>Web</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_event.phone">
|
||||
<source>Phone</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_event.booking">
|
||||
<source>Booking</source>
|
||||
</trans-unit>
|
||||
|
@ -125,4 +128,4 @@
|
|||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
</xliff>
|
||||
|
|
|
@ -51,6 +51,9 @@
|
|||
<trans-unit id="tx_events_domain_model_event.web">
|
||||
<source>Web</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_event.phone">
|
||||
<source>Phone</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_event.booking">
|
||||
<source>Booking</source>
|
||||
</trans-unit>
|
||||
|
@ -137,4 +140,4 @@
|
|||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
</xliff>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="tx-events">
|
||||
<f:render section="content" />
|
||||
</div>
|
||||
<div class="tx-events">
|
||||
<f:render section="content" />
|
||||
</div>
|
||||
</html>
|
|
@ -6,11 +6,13 @@
|
|||
<f:if condition="{date.event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="480" height="320" class="img-fluid img-thumbnail"/>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
<f:image src="{settings.defaultImagePath}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
|
@ -19,14 +21,18 @@
|
|||
{date.event.region.title} | <f:format.date format="d. m. Y - H:i">{date.start}</f:format.date>
|
||||
<h4>{date.event.title}</h4>
|
||||
<p>{date.event.teaser}</p>
|
||||
<f:if condition="{date.event.highlight}">
|
||||
<f:then>
|
||||
<b>Hightlight</b>
|
||||
</f:then>
|
||||
</f:if>
|
||||
<f:comment>
|
||||
<!--
|
||||
<f:if condition="{date.event.highlight}">
|
||||
<f:then>
|
||||
<b>Hightlight</b>
|
||||
</f:then>
|
||||
</f:if>
|
||||
-->
|
||||
</f:comment>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
|
||||
<f:widget.paginate objects="{dates}" as="paginatedDates" configuration="{itemsPerPage: 25, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 5}">
|
||||
<f:for each="{paginatedDates}" as="date">
|
||||
<div class="row mb-3">
|
||||
<f:widget.paginate objects="{dates}" as="paginatedDates" configuration="{itemsPerPage: 25, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 5, addQueryStringMethod: 'POST,GET'}">
|
||||
<f:for each="{paginatedDates}" as="date" iteration="index">
|
||||
<div class="row mt-3 mb-3 pb-3">
|
||||
<div class="col-2">
|
||||
<b><f:format.date format="H:i">{date.start}</f:format.date></b><br>
|
||||
<b><f:format.date format="%a">{date.start}</f:format.date></b><br>
|
||||
|
@ -11,29 +11,47 @@
|
|||
{date.event.region.title}<br>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h4>{date.event.title}</h4>
|
||||
<h5>{date.event.teaser}</h5>
|
||||
<f:format.crop maxCharacters="150">{date.event.details}</f:format.crop>
|
||||
|
||||
<f:comment>
|
||||
<!--
|
||||
<f:if condition="{date.event.highlight}">
|
||||
<f:then>
|
||||
<b>Hightlight</b>
|
||||
<b>Highlight</b>
|
||||
</f:then>
|
||||
</f:if>
|
||||
-->
|
||||
</f:comment>
|
||||
<h4>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
{date.event.title}
|
||||
</f:link.action>
|
||||
</h4>
|
||||
<p><strong>{date.event.teaser}</strong></p>
|
||||
<f:format.crop maxCharacters="150">{date.event.details}</f:format.crop>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="col-4">
|
||||
<f:if condition="{date.event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="" width="480c" height="240c" class="img-fluid img-thumbnail"/>
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="" width="400c" height="280c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="320" height="320" class="img-fluid img-thumbnail"/>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
<img src="{settings.defaultImagePath}" alt="Dummy" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
<f:if condition="{index.isLast}">
|
||||
<f:then>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="mb-3 border-bottom"></div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</f:widget.paginate>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{namespace wrm=Wrm\Events\ViewHelpers}
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="row">
|
||||
<div class="col-8 mb-5">
|
||||
<!-- TODO bg color classes not loaded in scss -->
|
||||
|
||||
<f:form action="search" controller="Date" additionalAttributes="{role: 'form'}" method="get">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-5">
|
||||
<!-- TODO bg color classes not loaded in scss -->
|
||||
<f:form action="list" controller="Date" pluginName="DateList" method="get" addQueryString="1" id="events_search" name="events_search">
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
|
@ -60,6 +61,5 @@
|
|||
<f:form.submit value="Suchen" class="btn btn-primary" />
|
||||
</div>
|
||||
</f:form>
|
||||
|
||||
</div>
|
||||
</div>
|
|
@ -1,16 +1,16 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<f:switch expression="{settings.template}">
|
||||
<f:case value="table">
|
||||
<f:render partial="Date/ListTable" arguments="{dates:dates}" />
|
||||
</f:case>
|
||||
<f:case value="grid">
|
||||
<f:render partial="Date/ListDefault" arguments="{dates:dates}" />
|
||||
</f:case>
|
||||
<f:defaultCase>
|
||||
<f:render partial="Date/ListDefault" arguments="{dates:dates}" />
|
||||
</f:defaultCase>
|
||||
</f:switch>
|
||||
</f:section>
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<f:switch expression="{settings.template}">
|
||||
<f:case value="table">
|
||||
<f:render partial="Date/ListTable" arguments="{dates:dates}" />
|
||||
</f:case>
|
||||
<f:case value="grid">
|
||||
<f:render partial="Date/ListDefault" arguments="{dates:dates}" />
|
||||
</f:case>
|
||||
<f:defaultCase>
|
||||
<f:render partial="Date/ListDefault" arguments="{dates:dates}" />
|
||||
</f:defaultCase>
|
||||
</f:switch>
|
||||
</f:section>
|
||||
</html>
|
|
@ -1,59 +1,75 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-5">
|
||||
<f:form action="list" controller="Date" pluginName="DateList" method="get" id="events_search" name="events_search">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<label for="searchword">Suchwort</label>
|
||||
<f:form.textfield type="text" class="form-control" id="searchword" name="searchword" value="{searchword}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<f:comment><!--
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="form-group form-check">
|
||||
<f:form.checkbox class="form-check-input" id="considerDate" name="considerDate" value="1" checked="{considerDate} == 1" />
|
||||
<label class="form-check-label" for="considerDate">Datum berücksichtigen?</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
--></f:comment>
|
||||
<div class="row">
|
||||
<div class="col col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="start">Datum von</label>
|
||||
<div class="input-group date" id="date_start" data-target-input="nearest">
|
||||
<f:form.textfield type="text" class="form-control datetimepicker-input" id="start" name="start" value="{start}" additionalAttributes="{data-target: '#date_start'}" />
|
||||
<div class="input-group-append" data-target="#date_start" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="end">Datum bis</label>
|
||||
<div class="input-group date" id="date_end" data-target-input="nearest">
|
||||
<f:form.textfield type="text" class="form-control datetimepicker-input" id="start" name="end" value="{end}" additionalAttributes="{data-target: '#date_end'}" />
|
||||
<div class="input-group-append" data-target="#date_end" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<f:if condition="{settings.showRegions}">
|
||||
<div class="row">
|
||||
<div class="col-4 col-md-3 col-lg-3">
|
||||
<div class="form-check">
|
||||
<f:form.radio class="form-check-input" name="region" value="{region.uid}" checked="{selRegion}==0" id="radio_0"/>
|
||||
<label class="form-check-label" for="radio_0">Alle Städte</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<f:render partial="Date/SearchForm" arguments="{searchword: searchword, dates: dates, regions: regions, selRegion: selRegion, start: start, end: end}"/>
|
||||
|
||||
<hr class="mt-2 mb-4">
|
||||
|
||||
<f:widget.paginate objects="{dates}" as="paginatedDates" configuration="{itemsPerPage: 25, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 5, addQueryStringMethod: 'POST,GET'}">
|
||||
<f:for each="{paginatedDates}" as="date" iteration="index">
|
||||
<div class="row mt-3 mb-3 pb-3">
|
||||
<div class="col-2">
|
||||
<b><f:format.date format="H:i">{date.start}</f:format.date></b><br>
|
||||
<b><f:format.date format="%a">{date.start}</f:format.date></b><br>
|
||||
<b><f:format.date format="d.m.">{date.start}</f:format.date></b><br>
|
||||
{date.event.region.title}<br>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<f:if condition="{date.event.highlight}">
|
||||
<f:then>
|
||||
<b>Hightlight</b>
|
||||
</f:then>
|
||||
<f:for each="{regions}" as="region">
|
||||
<div class="col-3">
|
||||
<div class="form-check">
|
||||
<f:form.radio class="form-check-input" name="region" value="{region.uid}" checked="{selRegion}=={region.uid}" id="radio_{region.uid}"/>
|
||||
<label class="form-check-label" for="radio_{region.uid}">{region.title}</label>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</f:if>
|
||||
<h4>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
{date.event.title}
|
||||
</f:link.action>
|
||||
</h4>
|
||||
<p><strong>{date.event.teaser}</strong></p>
|
||||
<f:format.crop maxCharacters="150">{date.event.details}</f:format.crop>
|
||||
<pre style="margin-top:15px; font-size:80%;">
|
||||
DEBUGGING:
|
||||
GLOBAL EVENT ID: {date.event.globalId}
|
||||
</pre>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<f:if condition="{date.event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="" width="400c" height="280c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Date" arguments="{date: date}">
|
||||
<img src="https://dummyimage.com/400x280/ddd/ccc" alt="Dummy" width="400" height="280" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="form-group mt-3">
|
||||
<f:form.submit value="Suchen" class="btn btn-primary" />
|
||||
</div>
|
||||
</f:form>
|
||||
</div>
|
||||
<f:if condition="{index.isLast}">
|
||||
<f:then>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="mb-3 border-bottom"></div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</f:widget.paginate>
|
||||
|
||||
</html>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
|
|
68
Resources/Private/Templates/Date/SearchHtml.html
Normal file
68
Resources/Private/Templates/Date/SearchHtml.html
Normal file
|
@ -0,0 +1,68 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-5">
|
||||
<!-- TODO bg color classes not loaded in scss -->
|
||||
<form action="{settings.resultPID}" controller="Date" extensionName="events" method="get" addQueryString="1" id="events_search" name="events_search">
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<label for="searchword">Suchwort</label>
|
||||
<input type="text" class="form-control" id="searchword" name="searchword" value="{searchword}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<label for="start">Datum von</label>
|
||||
<div class="input-group date" id="date_start" data-target-input="nearest">
|
||||
<input type="text" class="form-control datetimepicker-input" id="start" name="start" value="{start}" additionalAttributes="{data-target: '#date_start'}" />
|
||||
<div class="input-group-append" data-target="#date_start" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<label for="end">Datum bis</label>
|
||||
<div class="input-group date" id="date_end" data-target-input="nearest">
|
||||
<input type="text" class="form-control datetimepicker-input" id="end" name="end" value="{end}" additionalAttributes="{data-target: '#date_end'}" />
|
||||
<div class="input-group-append" data-target="#date_end" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<div class="form-check">
|
||||
<input type="radio" class="form-check-input" name="region" value="{region.uid}" checked="{selRegion}==0" id="radio_0"/>
|
||||
<label class="form-check-label" for="radio_0">Alle Städte</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<f:for each="{regions}" as="region">
|
||||
<div class="col-3">
|
||||
<div class="form-check">
|
||||
<input type="radio" class="form-check-input" name="region" value="{region.uid}" checked="{selRegion}=={region.uid}" id="radio_{region.uid}"/>
|
||||
<label class="form-check-label" for="radio_{region.uid}">{region.title}</label>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
<div class="form-group mt-3">
|
||||
<input type="submit" value="Suchen" class="btn btn-primary" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
|
||||
</html>
|
|
@ -1,38 +1,70 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<f:if condition="{date.event.images}">
|
||||
<f:then>
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="480" height="320" class="img-fluid img-thumbnail"/>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h4>
|
||||
<f:format.date format="%a">{date.start}</f:format.date>
|
||||
<f:format.date format="d.m.">{date.start}</f:format.date>
|
||||
<f:format.date format="H:i">{date.start}</f:format.date> Uhr
|
||||
</h4>
|
||||
<h2>{date.event.title}</h2>
|
||||
<h3>{date.event.teaser}</h3>
|
||||
<f:format.html>{date.event.details}</f:format.html>
|
||||
<p>{event.price_info}</p>
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<f:if condition="{date.event.images}">
|
||||
<f:then>
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="{settings.defaultImagePath}" alt="Dummy" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h4>
|
||||
<f:format.date format="%a">{date.start}</f:format.date>
|
||||
<f:format.date format="d.m.">{date.start}</f:format.date>
|
||||
<f:format.date format="H:i">{date.start}</f:format.date> Uhr
|
||||
</h4>
|
||||
<h2>{date.event.title}</h2>
|
||||
<h3>{date.event.teaser}</h3>
|
||||
<f:format.html>{date.event.details}</f:format.html>
|
||||
<p>{event.price_info}</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<p>Veranstaltungsort:<br>
|
||||
{date.event.street}<br>
|
||||
{date.event.zip} {date.event.city}<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col mt-3 mb-3">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<p><b>Preis:</b><br>
|
||||
<f:if condition="{date.event.priceInfo}">
|
||||
<f:then>
|
||||
<f:format.nl2br>{date.event.priceInfo}</f:format.nl2br>
|
||||
</f:then>
|
||||
<f:else>
|
||||
Keine Information
|
||||
</f:else>
|
||||
</f:if>
|
||||
</p>
|
||||
|
||||
<f:if condition="{date.event.web}">
|
||||
<p><b>Weitere Informationen:</b><br>
|
||||
<a href="{date.event.web}" target="_blank">Website</a>
|
||||
</p>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<p><b>Veranstaltungsort:</b><br>
|
||||
{date.event.street}<br>
|
||||
{date.event.zip} {date.event.city}<br>
|
||||
{date.event.phone}<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<p><b>Veranstalter:</b><br>
|
||||
{date.event.organizer.name}<br>
|
||||
{date.event.organizer.street}<br>
|
||||
{date.event.organizer.zip} {date.event.organizer.city}<br>
|
||||
{date.event.organizer.phone}<br>
|
||||
<a href="{date.event.organizer.web}" target="_blank">Website</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
|
|
|
@ -13,11 +13,13 @@
|
|||
<f:if condition="{date.event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
<f:image src="{date.event.images.originalResource.originalFile.uid}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="480" height="320" class="img-fluid img-thumbnail"/>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{settings.defaultImagePath}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
|
|
|
@ -1,31 +1,33 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="Default" />
|
||||
<f:layout name="Default" />
|
||||
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<f:for each="{events}" as="event">
|
||||
<div class="col-sm-12 col-md-6 col-lg-4 col-xl-4">
|
||||
<div class="menu-tile">
|
||||
<f:if condition="{event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="480" height="320" class="img-fluid img-thumbnail"/>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="caption">
|
||||
<div class="caption-text mt-3">
|
||||
{event.region.title}
|
||||
<h4>{event.title}</h4>
|
||||
<p>{event.teaser}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</f:section>
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<f:for each="{events}" as="event">
|
||||
<div class="col-sm-12 col-md-6 col-lg-4 col-xl-4">
|
||||
<div class="menu-tile">
|
||||
<f:if condition="{event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{event.images.originalResource.originalFile.uid}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{settings.defaultImagePath}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="caption">
|
||||
<div class="caption-text mt-3">
|
||||
{event.region.title}
|
||||
<h4>{event.title}</h4>
|
||||
<p>{event.teaser}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
|
@ -11,7 +11,9 @@
|
|||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="480" height="320" class="img-fluid img-thumbnail"/>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<img src="{settings.defaultImagePath}" alt="Dummy" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
|
|
|
@ -1,35 +1,37 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<f:if condition="{event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="480" height="320" class="img-fluid img-thumbnail"/>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h2>{event.title}</h2>
|
||||
<h3>{event.teaser}</h3>
|
||||
<f:format.html>{event.details}</f:format.html>
|
||||
<p>{event.price_info}</p>
|
||||
<f:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<f:if condition="{event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<img src="{settings.defaultImagePath}" alt="Dummy" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h2>{event.title}</h2>
|
||||
<h3>{event.teaser}</h3>
|
||||
<f:format.html>{event.details}</f:format.html>
|
||||
<p>{event.price_info}</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<p>Veranstaltungsort:<br>
|
||||
{event.street}<br>
|
||||
{event.zip} {event.city}<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<p>Veranstaltungsort:<br>
|
||||
{event.street}<br>
|
||||
{event.zip} {event.city}<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
|
@ -9,11 +9,13 @@
|
|||
<f:if condition="{event.images}">
|
||||
<f:then>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{event.images.originalResource.originalFile.uid}" alt="" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
<f:image src="{event.images.originalResource.originalFile.uid}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<img src="https://dummyimage.com/480x320/ddd/ccc" alt="Dummy" width="480" height="320" class="img-fluid img-thumbnail"/>
|
||||
<f:link.action pageUid="{settings.showPID}" action="show" controller="Event" arguments="{event: event}">
|
||||
<f:image src="{settings.defaultImagePath}" alt="{date.event.title}" title="{date.event.title}" width="480c" height="320c" class="img-fluid img-thumbnail"/>
|
||||
</f:link.action>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
|
|
|
@ -1,91 +1,91 @@
|
|||
<f:if condition="{configuration.insertAbove}">
|
||||
<f:render section="paginator" arguments="{pagination: pagination, configuration: configuration}" />
|
||||
<f:render section="paginator" arguments="{pagination: pagination, configuration: configuration}" />
|
||||
</f:if>
|
||||
|
||||
<f:renderChildren arguments="{contentArguments}" />
|
||||
|
||||
<f:if condition="{configuration.insertBelow}">
|
||||
<f:render section="paginator" arguments="{pagination: pagination, configuration: configuration}" />
|
||||
<f:render section="paginator" arguments="{pagination: pagination, configuration: configuration}" />
|
||||
</f:if>
|
||||
|
||||
<f:section name="paginator">
|
||||
<nav>
|
||||
<ul class="pagination">
|
||||
<f:if condition="{pagination.previousPage}">
|
||||
<li class="page-item">
|
||||
<f:if condition="{pagination.previousPage} > 1">
|
||||
<f:then>
|
||||
<f:widget.link class="page-link" rel="prev"
|
||||
arguments="{currentPage: pagination.previousPage}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}"><span aria-hidden="true">«</span>
|
||||
</f:widget.link>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:widget.link class="page-link" rel="prev"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}"><span aria-hidden="true">«</span>
|
||||
</f:widget.link>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.displayRangeStart} > 1">
|
||||
<li class="page-item">
|
||||
<f:widget.link class="page-link" addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">1
|
||||
</f:widget.link>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.hasLessPages}">
|
||||
<li class="page-item"><span class="page-link">…</span></li>
|
||||
</f:if>
|
||||
<f:for each="{pagination.pages}" as="page">
|
||||
<f:if condition="{page.isCurrent}">
|
||||
<f:then>
|
||||
<li class="page-item active">
|
||||
<span class="page-link">{page.number}</span>
|
||||
</li>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li class="page-item">
|
||||
<f:if condition="{page.number} > 1">
|
||||
<f:then>
|
||||
<f:widget.link class="page-link" arguments="{currentPage: page.number}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">{page.number}
|
||||
</f:widget.link>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:widget.link class="page-link"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">{page.number}
|
||||
</f:widget.link>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</li>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
<f:if condition="{pagination.hasMorePages}">
|
||||
<li class="page-item"><span class="page-link">…</span></li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.displayRangeEnd} < {pagination.numberOfPages}">
|
||||
<li class="page-item">
|
||||
<f:widget.link class="page-link" arguments="{currentPage: pagination.numberOfPages}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">{pagination.numberOfPages}
|
||||
</f:widget.link>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.nextPage}">
|
||||
<li class="page-item">
|
||||
<f:widget.link class="page-link" rel="next" arguments="{currentPage: pagination.nextPage}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}"><span aria-hidden="true">»</span>
|
||||
</f:widget.link>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav>
|
||||
<ul class="pagination">
|
||||
<f:if condition="{pagination.previousPage}">
|
||||
<li class="page-item">
|
||||
<f:if condition="{pagination.previousPage} > 1">
|
||||
<f:then>
|
||||
<f:widget.link class="page-link" rel="prev"
|
||||
arguments="{currentPage: pagination.previousPage}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}"><span aria-hidden="true">«</span>
|
||||
</f:widget.link>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:widget.link class="page-link" rel="prev"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}"><span aria-hidden="true">«</span>
|
||||
</f:widget.link>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.displayRangeStart} > 1">
|
||||
<li class="page-item">
|
||||
<f:widget.link class="page-link" addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">1
|
||||
</f:widget.link>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.hasLessPages}">
|
||||
<li class="page-item"><span class="page-link">…</span></li>
|
||||
</f:if>
|
||||
<f:for each="{pagination.pages}" as="page">
|
||||
<f:if condition="{page.isCurrent}">
|
||||
<f:then>
|
||||
<li class="page-item active">
|
||||
<span class="page-link">{page.number}</span>
|
||||
</li>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li class="page-item">
|
||||
<f:if condition="{page.number} > 1">
|
||||
<f:then>
|
||||
<f:widget.link class="page-link" arguments="{currentPage: page.number}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">{page.number}
|
||||
</f:widget.link>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:widget.link class="page-link"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">{page.number}
|
||||
</f:widget.link>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</li>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
<f:if condition="{pagination.hasMorePages}">
|
||||
<li class="page-item"><span class="page-link">…</span></li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.displayRangeEnd} < {pagination.numberOfPages}">
|
||||
<li class="page-item">
|
||||
<f:widget.link class="page-link" arguments="{currentPage: pagination.numberOfPages}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}">{pagination.numberOfPages}
|
||||
</f:widget.link>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.nextPage}">
|
||||
<li class="page-item">
|
||||
<f:widget.link class="page-link" rel="next" arguments="{currentPage: pagination.nextPage}"
|
||||
addQueryStringMethod="{configuration.addQueryStringMethod}"
|
||||
section="{configuration.section}"><span aria-hidden="true">»</span>
|
||||
</f:widget.link>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</f:section>
|
||||
|
|
BIN
Resources/Public/Images/default.jpg
Normal file
BIN
Resources/Public/Images/default.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
|
@ -5,6 +5,7 @@ call_user_func(
|
|||
function()
|
||||
{
|
||||
|
||||
/*
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
|
||||
'Wrm.Events',
|
||||
'Pi1',
|
||||
|
@ -17,6 +18,49 @@ call_user_func(
|
|||
'Date' => 'teaser, list, show, search'
|
||||
]
|
||||
);
|
||||
*/
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
|
||||
'Wrm.Events',
|
||||
'DateSearch',
|
||||
[
|
||||
'Date' => 'search'
|
||||
],
|
||||
[
|
||||
'Date' => 'search'
|
||||
]
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
|
||||
'Wrm.Events',
|
||||
'DateList',
|
||||
[
|
||||
'Date' => 'list'
|
||||
],
|
||||
[
|
||||
'Date' => 'list'
|
||||
]
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
|
||||
'Wrm.Events',
|
||||
'DateShow',
|
||||
[
|
||||
'Date' => 'show'
|
||||
],
|
||||
[
|
||||
'Date' => 'show'
|
||||
]
|
||||
);
|
||||
|
||||
/*
|
||||
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
|
||||
|
||||
$iconRegistry->registerIcon(
|
||||
'events-plugin',
|
||||
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
|
||||
['source' => 'EXT:events/Resources/Public/Icons/user_plugin_events.svg']
|
||||
);
|
||||
|
||||
// wizards
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
|
||||
|
@ -37,14 +81,6 @@ call_user_func(
|
|||
}
|
||||
}'
|
||||
);
|
||||
|
||||
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
|
||||
|
||||
$iconRegistry->registerIcon(
|
||||
'events-plugin',
|
||||
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
|
||||
['source' => 'EXT:events/Resources/Public/Icons/user_plugin_events.svg']
|
||||
);
|
||||
|
||||
*/
|
||||
}
|
||||
);
|
||||
|
|
|
@ -28,8 +28,33 @@ CREATE TABLE tx_events_domain_model_event (
|
|||
dates int(11) unsigned DEFAULT '0' NOT NULL,
|
||||
organizer int(11) unsigned DEFAULT '0',
|
||||
region int(11) unsigned DEFAULT '0',
|
||||
title varchar(255) DEFAULT '' NOT NULL,
|
||||
global_id varchar(255) DEFAULT '' NOT NULL,
|
||||
slug varchar(255) DEFAULT '' NOT NULL,
|
||||
highlight smallint(5) unsigned DEFAULT '0' NOT NULL,
|
||||
teaser text,
|
||||
details text,
|
||||
price_info text,
|
||||
street varchar(255) DEFAULT '' NOT NULL,
|
||||
district varchar(255) DEFAULT '' NOT NULL,
|
||||
city varchar(255) DEFAULT '' NOT NULL,
|
||||
zip varchar(255) DEFAULT '' NOT NULL,
|
||||
country varchar(255) DEFAULT '' NOT NULL,
|
||||
web varchar(255) DEFAULT '' NOT NULL,
|
||||
phone varchar(255) DEFAULT '' NOT NULL,
|
||||
booking varchar(255) DEFAULT '' NOT NULL,
|
||||
ticket varchar(255) DEFAULT '' NOT NULL,
|
||||
facebook varchar(255) DEFAULT '' NOT NULL,
|
||||
youtube varchar(255) DEFAULT '' NOT NULL,
|
||||
latitude varchar(255) DEFAULT '' NOT NULL,
|
||||
longitude varchar(255) DEFAULT '' NOT NULL,
|
||||
images int(11) unsigned NOT NULL default '0',
|
||||
categories int(11) DEFAULT '0' NOT NULL,
|
||||
dates int(11) unsigned DEFAULT '0' NOT NULL,
|
||||
organizer int(11) unsigned DEFAULT '0',
|
||||
region int(11) unsigned DEFAULT '0',
|
||||
|
||||
KEY dataHandler (l10n_parent, t3ver_oid, deleted, t3ver_wsid, t3ver_state)
|
||||
KEY dataHandler (l10n_parent, t3ver_oid, deleted, t3ver_wsid, t3ver_state)
|
||||
);
|
||||
|
||||
#
|
||||
|
@ -37,30 +62,27 @@ CREATE TABLE tx_events_domain_model_event (
|
|||
#
|
||||
CREATE TABLE tx_events_domain_model_organizer (
|
||||
|
||||
name varchar(255) DEFAULT '' NOT NULL,
|
||||
street varchar(255) DEFAULT '' NOT NULL,
|
||||
district varchar(255) DEFAULT '' NOT NULL,
|
||||
city varchar(255) DEFAULT '' NOT NULL,
|
||||
zip varchar(255) DEFAULT '' NOT NULL,
|
||||
phone varchar(255) DEFAULT '' NOT NULL,
|
||||
web varchar(255) DEFAULT '' NOT NULL,
|
||||
email varchar(255) DEFAULT '' NOT NULL,
|
||||
name varchar(255) DEFAULT '' NOT NULL,
|
||||
street varchar(255) DEFAULT '' NOT NULL,
|
||||
district varchar(255) DEFAULT '' NOT NULL,
|
||||
city varchar(255) DEFAULT '' NOT NULL,
|
||||
zip varchar(255) DEFAULT '' NOT NULL,
|
||||
phone varchar(255) DEFAULT '' NOT NULL,
|
||||
web varchar(255) DEFAULT '' NOT NULL,
|
||||
email varchar(255) DEFAULT '' NOT NULL,
|
||||
|
||||
KEY dataHandler (l10n_parent, sys_language_uid, deleted)
|
||||
KEY dataHandler (l10n_parent, sys_language_uid, deleted)
|
||||
);
|
||||
|
||||
#
|
||||
# Table structure for table 'tx_events_domain_model_date'
|
||||
#
|
||||
CREATE TABLE tx_events_domain_model_date (
|
||||
|
||||
event int(11) unsigned DEFAULT '0' NOT NULL,
|
||||
|
||||
start datetime DEFAULT NULL,
|
||||
end datetime DEFAULT NULL,
|
||||
|
||||
KEY event (event),
|
||||
KEY dataHandler (event, t3ver_wsid, pid)
|
||||
event int(11) unsigned DEFAULT '0' NOT NULL,
|
||||
start int(11) DEFAULT NULL,
|
||||
end int(11) DEFAULT NULL,
|
||||
KEY event (event),
|
||||
KEY dataHandler (event, t3ver_wsid, pid)
|
||||
);
|
||||
|
||||
#
|
||||
|
@ -68,7 +90,7 @@ CREATE TABLE tx_events_domain_model_date (
|
|||
#
|
||||
CREATE TABLE tx_events_domain_model_region (
|
||||
|
||||
title varchar(255) DEFAULT '' NOT NULL,
|
||||
title varchar(255) DEFAULT '' NOT NULL,
|
||||
|
||||
);
|
||||
|
||||
|
@ -77,6 +99,6 @@ CREATE TABLE tx_events_domain_model_region (
|
|||
#
|
||||
CREATE TABLE tx_events_domain_model_date (
|
||||
|
||||
event int(11) unsigned DEFAULT '0' NOT NULL,
|
||||
event int(11) unsigned DEFAULT '0' NOT NULL,
|
||||
|
||||
);
|
||||
|
|
Loading…
Reference in a new issue