Reserve 

Extension key

reserve

Package name

jweiland/reserve

Version

4.1

Language

en

Author

Stefan Froemken

License

This document is published under the Creative Commons BY 4.0 license.

Rendered

Wed, 29 Oct 2025 14:34:33 +0000


The extension reserve allows you to reserve tickets for one or more persons using a period table and a form. Each reservation has it's own QR Code that can be scanned at the event.


Table of Contents:

Introduction 

The extension reserve allows you to reserve tickets for one or more persons using a period table and a form. Each reservation has it's own QR Code that can be scanned at the event.

Frontend screenshots 

Choose a period 

Period list

Enter your personal information for your reservation 

Reservation form

Installation 

Composer 

If your TYPO3 installation works in composer mode, please execute following command:

composer req jweiland/reserve
vendor/bin/typo3 extension:setup --extension=reserve
Copied!

If you work with DDEV please execute this command:

ddev composer req jweiland/reserve
ddev exec vendor/bin/typo3 extension:setup --extension=reserve
Copied!

ExtensionManager 

On non composer based TYPO3 installations you can install reserve still over the ExtensionManager:

  1. Login

    Login to backend of your TYPO3 installation as an administrator or system maintainer.

  2. Open ExtensionManager

    Click on Extensions from the left menu to open the ExtensionManager.

  3. Update Extensions

    Choose Get Extensions from the upper selectbox and click on the Update now button at the upper right.

  4. Install reserve

    Use the search field to find reserve. Choose the reserve line from the search result and click on the cloud icon to install reserve.

Example structure and plugin usage 

Example structure

The page "Get tickets" contains the plugin "Display and reserve periods [reserve_reservation]" that shows a list of available time slots and allows the user to get a ticket. The static templates "Reserve" and "Reserve reservation" are required! The Folder "Facility, Periods and Orders" is set as "Storage folder for orders" inside the plugin configuration.

The page "Scan tickets" contains the plugin "Manage reservations and scan reservation codes [reserve_management]" and is protected using the fe_user login. The plugin must not be accessible by website visitors! It will be used to activate the reservation codes using a QR Code scanner. The static templates "Reserve" and "Reserve management" are required!

Next step 

Configure reserve.

Automation using symfony commands 

This extension uses symfony commands to make some tasks easier and decoupled from frontend. You can use crontab or the "Execute console commands" scheduler task to execute them.

Remove inactive orders 

Command: reserve:remove_inactive_orders

Purpose: Remove inactive orders (orders with active = 0) after a given time.

Options:

Option Description Default Required?
--expiration-time Expiration time of an inactive order in seconds 3600 no
--locale Locale to be used inside templates and translations. Value that is available inside the Locales class (TYPO3 \CMS\Core\Localization\Locales). Example: "default" for english, "de" for german default = english no

Send mails 

Command: reserve:send_mails

Purpose: Send mails using all active tx_reserve_domain_model_mail records as queue items.

Options:

Option Description Default Required?
--mailLimit How many mails per execution? 100 no
--locale Locale to be used inside templates and translations. Value that is available inside the Locales class (TYPO3 \CMS\Core\Localization\Locales). Example: "default" for english, "de" for german default = english no

This command is a must have if you wanna notify your visitors when times of a period have changed! Notification mails will be sent using this mail queue!

E-Mail templates and configuration 

Configuration per Facility 

TCA

You can find all facility based "E-Mail settings" using the tab "E-Mail settings" when editing a facility in the backend.

Custom E-Mail templates 

There are some more options customization options if the customization of texts is not enough for you.

Override mail fluid templates 

You can override the mail fluid templates using the following constants. You can use the constant editor for it too. Important: Put those constants into Page ID 1 to override them in commands too!

plugin.tx_reserve {
  view {
    templateRootPath  = EXT:sitepackage/Resources/Private/Templates/
    partialRootPath = EXT:sitepackage/Resources/Private/Partials/
    layoutRootPath = EXT:sitepackage/Resources/Private/Layouts/
  }
}
Copied!

Override language labels 

Sometimes it's just a label that needs to be changed. In this case you can just override the label using TypoScript.

# override english label
plugin.tx_reserve._LOCAL_LANG.default.form.order.submit = Get your ticket!
# override german label
plugin.tx_reserve._LOCAL_LANG.de.form.order.submit = Hol dir dein Ticket!
Copied!

Extension configuration 

Block multiple orders for a amount of time 

There is an option that blocks new orders for given amount of time after an order has been submitted. This is not a guarantee against spam because the user can bypass the check by deleting the fe_typo_user cookie.

Extension configuration

Frontend configuration 

Configuration using Plugin Settings (Flexform) 

Flexform

You can decide which fields should be displayed to the user in the frontend.

You can also decide whether additional participants must also enter their names or whether the number of additional participants is sufficient.

QR Code configuration 

Configuration per Facility 

TCA

You can find all facility based configuration options using the tab "QR Code settings" when editing a facility in the backend.

QR Code Disable 

You can disable the QR Code as attachment and confirmation page inside extension settings.

TCA

Route Enhancers example configuration 

This example contains all actions from CheckoutController.

ReservePlugin:
  type: Extbase
  extension: Reserve
  plugin: Reservation
  routes:
    - routePath: '/checkout/list'
      _controller: 'Checkout::list'
    - routePath: '/checkout/form/{period_uid}'
      _controller: 'Checkout::form'
      _arguments:
        period_uid: period
    - routePath: '/checkout/create'
      _controller: 'Checkout::create'
    - routePath: '/checkout/confirm/{order_email}/{order_activation_code}'
      _controller: 'Checkout::confirm'
      _arguments:
        order_email: email
        order_activation_code: activationCode
    - routePath: '/checkout/cancel/{order_email}/{order_activation_code}'
      _controller: 'Checkout::cancel'
      _arguments:
        order_email: email
        order_activation_code: activationCode
  requirements:
    period_uid: '^[0-9]+$'
    order_activation_code: '^[a-zA-Z0-9]+$'
  defaultController: 'Checkout::list'
  aspects:
    period_uid:
      type: PersistedAliasMapper
      tableName: tx_reserve_domain_model_period
      routeFieldName: uid
Copied!

Extend reserve 

The class JWeiland\Reserve\Service\ReserveService is the official public API for ext:reserve. You can use this class in your own extension to get some information like remaining participants of a period.

If you want even more, then you can use the other Service classes, Repositories and so on too but make sure that some functionality can change in upcoming versions. We try to keep compatibility but sometimes breaking changes are required.

Events 

Several events can be used to modify the behaviour of EXT:reserve.

Available events 

When register to an event you can always access the class where the event is fired. For additional items see column "Access to" in the table below.

Event class Fired in class Access to
SendReservationEmailEvent CheckoutService getMailMessage()
ValidateOrderEvent OrderValidator getOrder();getErrorResults()

Examples 

Alter the Mail Object send after confirmation 

To connect to an event, you need to register an event listener in your custom extension. All what it needs is an entry in your Configuration/Services.yaml file:

services:
  Vendor\Extension\EventListener\YourListener:
    tags:
      - name: event.listener
        identifier: 'your-self-choosen-identifier'
        method: 'methodToConnectToEvent'
        event: JWeiland\Reserve\Event\SendReservationEmailEvent
Copied!

An example event listener can look like this:

<?php

declare(strict_types=1);

namespace Vendor\Extension\EventListener;

use JWeiland\Reserve\Event\SendReservationEmailEvent;

class YourListener
{
    /**
     * Do what you want...
     */
    public function methodToConnectToEvent(SendReservationEmailEvent $event): void
    {
        $mailMessage = $event->getMailMessage();

        // Do some stuff

        $event->setMailMessage($mailMessage);
    }
}
Copied!

ViewHelper for your own extension 

You are using reserve for your ticket registrations and want to combine that with some other extensions like news or events2? Then try out the PeriodRegistrationViewHelper. This ViewHelper allows you to render remaining participants of one or more periods and can provide a link to the registration form.

Example usage 

It can look like this:

Example screenshot

All you need to do is using the ViewHelper in your own Fluid template. Lets try it out:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
      xmlns:jw="http://typo3.org/ns/JWeiland/Reserve/ViewHelpers"
      data-namespace-typo3-fluid="true">
<jw:periodRegistration facilityUid="3" dateAndBegin="2051548200">
  <f:if condition="{periods}">
    <f:then>
      <f:comment><!--Most time there is just one period!--></f:comment>
      <f:for each="{periods}" as="period">
        <p>Remaining participants: {period.remainingParticipants}</p>
        <f:if condition="{period.isBookable}">
          <f:link.action pageUid="45" extensionName="reserve" pluginName="Reservation" controller="Checkout" action="form" arguments="{period: period}">Get a ticket!</f:link.action><br />
          <f:link.action pageUid="19" extensionName="reserve" pluginName="Reservation" controller="Checkout" action="list">Show all periods</f:link.action>
        </f:if>
      </f:for>
    </f:then>
    <f:else>
      Could not find any period for given time.
    </f:else>
  </f:if>
</jw:periodRegistration>
</html>
Copied!

You can completely customize the output of this ViewHelper. The Variable {periods} will be added and contains all matching periods (\JWeiland\Reserve\Domain\Model\Period[]). It's an array so either use a foreach or {periods.0} if you have just one period.

Extended example 

Can I render some more information? Of course you can! You can use the whole \JWeiland\Reserve\Domain\Model\Period model with all its relations. Here is a an extended example that uses some more functionality of the Period model:

Example screenshot
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
      xmlns:jw="http://typo3.org/ns/JWeiland/Reserve/ViewHelpers"
      data-namespace-typo3-fluid="true">
<jw:periodRegistration facilityUid="3" dateAndBegin="2051548200">
  <f:if condition="{periods}">
    <f:then>
      <f:comment><!--Most time there is just one period!--></f:comment>
      <f:for each="{periods}" as="period">
        <h3>{period.facility.name}</h3>
        <table class="table table-responsive">
          <tr>
            <th>Date</th>
            <td><f:format.date format="d.m.Y">{period.date}</f:format.date></td>
          </tr>
          <tr>
            <th>Begins at</th>
            <td><f:format.date format="H:i">{period.begin}</f:format.date></td>
          </tr>
          <tr>
            <th>Ends at</th>
            <td><f:if condition="{period.end}"><f:then><f:format.date format="H:i">{period.end}</f:format.date></f:then><f:else>Open end</f:else></f:if></li></td>
          </tr>
        </table>
        <p>Remaining participants: {period.remainingParticipants}</p>
        <p>Already <strong>{period.countActiveReservations}</strong> reservations!</p>
        <f:if condition="{period.isBookable}">
          <f:link.action pageUid="45" extensionName="reserve" pluginName="Reservation" controller="Checkout" action="form" arguments="{period: period}">Get a ticket!</f:link.action><br />
          <f:link.action pageUid="19" extensionName="reserve" pluginName="Reservation" controller="Checkout" action="list">Show all periods</f:link.action>
        </f:if>
      </f:for>
    </f:then>
    <f:else>
      Could not find any period for given time.
    </f:else>
  </f:if>
</jw:periodRegistration>
</html>
Copied!

Reserve service 

The class JWeiland\Reserve\Service\ReserveService is the official public API for ext:reserve. You can use this class in your own extension to get some information like remaining participants of a period.

The following example shows a controller that uses FlexForms or TypoScript for Facility and DateTime selection. This selection will be used to get the remaining participants of a matching period.

<?php

declare(strict_types=1);

/*
 * This file is part of the package my/example.
 *
 * For the full copyright and license information, please read the
 * LICENSE file that was distributed with this source code.
 */

namespace My\Example\Controller;

use JWeiland\Reserve\Service\ReserveService;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;

class ExampleController extends ActionController
{
    /**
     * @var ReserveService
     */
    protected $reserveService;

    public function __construct(ReserveService $reserveService)
    {
        $this->reserveService = $reserveService;
    }

    public function showAction(): void
    {
        $dateTime = new \DateTime();
        $dateTime->setTimestamp((int)$this->settings['dateTimeOfEvent']);
        $this->view->assign(
            'remainingParticipants',
            $this->reserveService->getRemainingParticipants((int)$this->settings['facility'], $dateTime)
        );
    }
}
Copied!

The FlexForms.xml may look like this.

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3DataStructure>
  <sheets>
    <sDEF>
      <ROOT>
        <TCEforms>
          <sheetTitle>Main</sheetTitle>
        </TCEforms>
        <type>array</type>
        <el>
          <settings.dateTimeOfEvent>
            <label>Date of the event</label>
            <config>
              <type>input</type>
              <size>10</size>
              <renderType>inputDateTime</renderType>
              <eval>datetime</eval>
              <default>0</default>
            </config>
          </settings.dateTimeOfEvent>
          <settings.facility>
            <TCEforms>
              <label>Choose a Facility</label>
              <config>
                <type>group</type>
                <internal_type>db</internal_type>
                <allowed>tx_reserve_domain_model_facility</allowed>
                <maxitems>1</maxitems>
                <minitems>1</minitems>
                <size>1</size>
                <default>0</default>
              </config>
            </TCEforms>
          </settings.facility>
        </el>
      </ROOT>
    </sDEF>
  </sheets>
</T3DataStructure>
Copied!

Update templates 

This extension uses fluid templates so you are able to override them like in most other TYPO3 extensions.

Override template using TypoScript 

Do you have a site package? Put the templates into your site package extension. Otherwise you can put them into fileadmin if you really want.

plugin.tx_reserve {
  view {
    templateRootPaths >
    templateRootPaths {
      0 = EXT:reserve/Resources/Private/Templates/
      1 = EXT:site_package/Resources/Private/Extensions/reserve/Templates/
    }
    partialRootPaths >
    partialRootPaths {
      0 = EXT:reserve/Resources/Private/Partials/
      1 = EXT:site_package/Resources/Private/Extensions/reserve/Partials/
    }
    layoutRootPaths >
    layoutRootPaths {
      0 = EXT:reserve/Resources/Private/Layouts/
      1 = EXT:site_package/Resources/Private/Extensions/reserve/Layouts/
    }
  }
}
Copied!

Override template using constant editor 

TYPO3 Backend > Templates > Constant Editor

Constant editor

Changelog 

Version 4.1.4 

  • [BUGFIX] SiteSet identifier renamed by removing default

Version 4.1.3 

  • [BUGFIX] Avoid deprecation warning by explicitly marking Email parameter as nullable
  • [BUGFIX] Fixed PHP warning for implicitly nullable Email parameter in lockEmail()
  • [BUGFIX] Added explicit nullable type ?Email to resolve PHP 8.4 deprecation warning
  • [BUGFIX] Prevent implicit nullability warning in lockEmail method
  • [BUGFIX] Cleaned up method signature to be compatible with future PHP versions

Version 4.1.2 

  • [BUGFIX] Update testing directory

Version 4.1.1 

  • [BUGFIX] Fixed an issue in IfStringInCommaSeparatedListViewHelper where it incorrectly returned false even when the field was checked.

Version 4.1.0 

  • [TASK] Added new feature to disable double optin.
  • [TASK] Added SendReservationEmailEvent
  • [TASK] Added SendCancellationEmailEvent
  • [TASK] Added SendEmailEvent
  • [BUGFIX] Fixed template of Cancellation Email

Version 4.0.0 

  • [TASK] Fixes for TYPO3 13 Compatibility
  • [TASK] Removed TYPO3 12 Compatibility
  • [TASK] Updated QR Code Library to version 6
  • [TASK] Added new PSR 14 Events
  • [TASK] Changed General Plugins to CType
  • [TASK] New Update Wizard migrating plugins to CType

Version 3.0.2 

  • [BUGFIX] HTML Response not set properly on controller
  • [BUGFIX] StandAloneView initialization issue fixed
  • [BUGFIX] Replaced deprecated function strftime
  • [BUGFIX] Reserve management module broken because of relative path 'typo3conf' usage in javascript

Version 3.0.0 

  • Add TYPO3 12 compatibility
  • Remove TYPO3 11 compatibility
  • Remove TYPO3 10 compatibility

Version 2.1.0 

2023-03-21 Add better structure to DataTablesService (Commit 821e7de by Stefan Froemken) 2023-03-21 Remove spaces from scanner link list (Commit c4071ff by Stefan Froemken) 2023-03-21 Add entry for newContentElementWizard (Commit 4774955 by Stefan Froemken) 2023-03-21 Merge pull request #118 from jweiland-net/applyNewPhpCsFixerConfiguration (Commit e851e41 by Stefan Frömken) 2023-03-21 Split two GitHub actions by enter (Commit 7513aba by Stefan Froemken) 2023-03-21 Repair tests (Commit 98e8777 by Stefan Froemken) 2023-03-21 Inject Dispatcher as SingletonInterface (Commit ff1aa85 by Stefan Froemken) 2023-03-21 Repair tests (Commit a0bbba0 by Stefan Froemken) 2023-03-21 Apply php-cs-fixer format to Test files (Commit f7705e4 by Stefan Froemken) 2023-03-21 Do not modernize strpos in php-cs-fixer because of PHP 7 support (Commit 8943eb3 by Stefan Froemken) 2023-03-21 Remove tests against PHP 7.3 (Commit 3509bcb by Stefan Froemken) 2023-03-21 Add missing caret to TYPO3 version in composer.json (Commit c1faddf by Stefan Froemken) 2023-03-21 Update version to 2.1.0 (Commit 6807fcc by Stefan Froemken) 2023-03-21 Update installation documentation (Commit 63d9795 by Stefan Froemken) 2023-03-21 Update ChangeLog (Commit 958eee6 by Stefan Froemken) 2023-03-21 Get translations from core instead of EXT:lang (Commit 9c3706d by Stefan Froemken) 2023-03-21 Move QueryBuilder instanciation into own methods (Commit 0da8dee by Stefan Froemken) 2023-03-21 Use logicalAnd with array (Commit 37efb12 by Stefan Froemken) 2023-03-21 Remove unused name attribute from clearPageCacheAndAddFacilityName (Commit 62e3ff2 by Stefan Froemken) 2023-03-21 Remove unused name attribute from clearPageCacheAndAddFacilityName (Commit 62e3ff2 by Stefan Froemken) 2023-03-21 Update indents of docs to 4 spaces (Commit eb788f5 by Stefan Froemken) 2023-03-21 Add new format to HTML templates (Commit 8139cc9 by Stefan Froemken) 2023-03-21 Update format in ext_tables.sql (Commit 41ca215 by Stefan Froemken) 2023-03-21 Update developer in ext_emconf.php (Commit f36c6da by Stefan Froemken) 2023-03-21 Update php-cs-fixer to at least version 3.14 (Commit cf4b900 by Stefan Froemken) 2023-03-21 Add .gitattributes file (Commit c245736 by Stefan Froemken) 2023-03-21 Update README.md (Commit fce9c5c by Stefan Froemken) 2023-03-21 Implement new editor config file (Commit 8124236 by Stefan Froemken) 2023-03-21 Implement new .gitignore (Commit daf38dc by Stefan Froemken) 2023-03-21 Migrate Commands.php to Services.yaml (Commit 804864e by Stefan Froemken) 2023-03-21 Apply php-cs-fixer to TCA files (Commit 9773ff1 by Stefan Froemken) 2023-03-21 CleanUp ViewHelpers. Make ReserveService public in DI (Commit 4dccf22 by Stefan Froemken) 2023-03-21 Migrate AbstractUtility to Trait (Commit 6442822 by Stefan Froemken) 2023-03-21 Remove superflous method annotations from CreateForeignTableColumns (Commit c800908 by Stefan Froemken) 2023-03-21 Remove superflous method annotations from ReserviceService (Commit 8b96ea9 by Stefan Froemken) 2023-03-21 Remove superflous type cast in MailService (Commit da0eecb by Stefan Froemken) 2023-03-21 Move MailService into constructor DI in CheckoutService (Commit 09ca545 by Stefan Froemken) 2023-03-21 Do not instantiate StandaloneView with constructor DI (Commit 65280d8 by Stefan Froemken) 2023-03-21 Use Core PageRenderer instead of instantiating a new one (Commit 9d7f285 by Stefan Froemken) 2023-03-21 Apply php-cs-fixer settings to ext_localconf.php (Commit efcc468 by Stefan Froemken) 2023-03-21 Use 32bit compatible timestamps in validator (Commit dd4bcaf by Stefan Froemken) 2023-03-21 Update structure of ReservationRepository (Commit e567f2a by Stefan Froemken) 2023-03-21 Remove constructor from PeriodRepository (Commit 1adda04 by Stefan Froemken) 2023-03-21 Restructure OrderRepository (Commit 059b194 by Stefan Froemken) 2023-03-21 Move DB functions into own method (Commit 29adfb3 by Stefan Froemken) 2023-03-21 Remove superflous annotations from methods in models (Commit 97e0ffa by Stefan Froemken) 2023-03-21 Move DB instantiation into own methods (Commit 9dbc6b3 by Stefan Froemken) 2023-03-21 Set hook classes as public in DI (Commit f49a0b6 by Stefan Froemken) 2023-03-21 Move instantiation of classes into own methods (Commit e7f1bab by Stefan Froemken) 2023-03-21 Remove superflous annotations from FacilityRepository (Commit 2a6f08a by Stefan Froemken) 2023-03-21 Move additional default config into own method (Commit 3f3ec56 by Stefan Froemken) 2023-03-21 Remove superflous condition from ManagementController (Commit caf7675 by Stefan Froemken) 2023-03-21 Move instantiation of View in to own method (Commit 5160787 by Stefan Froemken) 2023-03-21 Implement better structure to DataTablesService (Commit 577a9b5 by Stefan Froemken) 2023-03-21 Remove superfluous type cast in QrCodeController (Commit 2cfac54 by Stefan Froemken) 2023-03-21 Move instantiation of ExtConf into own method (Commit c5df780 by Stefan Froemken) 2023-03-21 Declare ExtConf as public for DI (Commit 65920c6 by Stefan Froemken) 2023-03-21 Use DI for ExtensionConfiguration in ExtConf (Commit 7cf249f by Stefan Froemken) 2023-03-21 Implement new php-cs-fixer config (Commit a014fa5 by Stefan Froemken) 2023-03-21 Use secure dependencies to TYPO3 (Commit 4910755 by Stefan Froemken) 2023-03-21 Use secure homepage in composer.json (Commit e07f214 by Stefan Froemken) 2023-03-21 Update developers in composer.json (Commit cb3762c by Stefan Froemken)

Version 2.0.3 

2022-05-16 Check date for DateTime before calling format() (Commit 9243ba3 by Stefan Froemken) 2022-05-16 Add Test for empty begin in period model (Commit 7a0abe6 by Stefan Froemken) 2022-05-16 Check date for DateTime before calling format() (Commit 03987e9 by Stefan Froemken) 2022-05-16 Remove .DS_Store files (Commit 74f97ac by Stefan Froemken) 2022-03-15 [TASK] Remove strict type from Order::getParticipants (Commit aa773e4 by Pascal Rinker)

Version 2.0.2 

2022-03-14 [TASK] Fix injection of dispatcher for v11 (Commit cb556ed by Pascal Rinker) 2022-03-14 [TASK] Use di for dispatcher in validator (Commit 63d93ae by Pascal Rinker) 2022-03-14 [TASK] Fix ManagementController namespace (Commit 70b543e by Pascal Rinker)

This list has been created by using git log $(git describe --tags --abbrev=0)..HEAD --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

Version 2.0.1 

2022-03-11 [BUGFIX] Fix order of periods in list table (Commit 78ed415 by Pascal Rinker)

Version 2.0.0 

2022-03-10 [TASK] Fix isBookable() condition, use redirect instead of forward (Commit 952ed9c by Pascal Rinker) 2022-03-10 Merge pull request #107 from jweiland-net/typo311 (Commit db041f8 by Pascal Rinker) 2022-03-10 [TASK] Fix CheckoutServiceTest (Commit 54df921 by Pascal Rinker) 2022-03-10 [TASK] Fix fixture (Commit c508e5e by Pascal Rinker) 2022-03-10 [TASK] Remove PHP 7.2 from CI (Commit cf1982d by Pascal Rinker) 2022-03-10 [TASK] Check in formAction and createAction if period if bookable (Commit 23e0355 by Pascal Rinker) 2022-03-09 [TASK] Use Environent class instead of checking constant (Commit a6f4046 by Pascal Rinker) 2022-03-09 [TASK] Add qr-code library to composer.json and fallback without phar, fix tests for v11 (Commit 051f0e1 by Pascal Rinker) 2022-03-04 [TASK] Fix tests (Commit e05d5eb by Pascal Rinker) 2022-03-04 [TASK] Increase testing framework version (Commit e359301 by Pascal Rinker) 2022-03-04 [TASK] Update workflow (Commit 7fda09c by Pascal Rinker) 2022-02-11 [TASK] Use new way to register and configure plugin (Commit cb0a3ef by Pascal Rinker) 2022-02-11 [TASK] Add TYPO3 v11 compatibility and remove TYPO3 v9 support (Commit 7de6eda by Pascal Rinker)

This list has been created by using git log $(git describe --tags --abbrev=0)..HEAD --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

Version 1.2.5 

2021-12-16 Add organization and remarks to possible order fields (Commit 515089d by Stefan Froemken)

Version 1.2.4 

2021-12-16 Add tests with negative values (Commit d8d8667 by Stefan Froemken) 2021-12-16 Add much more tests. Fix canBeBooked (Commit 2266665 by Stefan Froemken)

This list has been created by using git log $(git describe --tags --abbrev=0)..HEAD --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

Version 1.2.3 

2021-11-30 [TASK] Remove required field check for further participants (Commit 1df8d5a by Pascal Rinker)

Version 1.2.2 

2021-11-23 [BUGFIX] Change return type of staticRender back to string in QrCodeViewHelper (Commit by Stefan Froemken)

Version 1.2.1 

2021-11-19 [BUGFIX] Allow NULL as return value for getBegin (Commit by Stefan Froemken)

Version 1.2.0 

The list of changes includes changes before 1.1.1 because it was no TER release.

2021-11-12 [TASK] Prepare for release 1.2.0 (Commit d3bc6d0 by Pascal Rinker) 2021-10-29 Merge pull request #95 from jweiland-net/addMissingStrictTypes (Commit bfc371c by Pascal Rinker) 2021-10-29 [TASK] Fix CheckoutController return type of actions with redirect (Commit ce8f636 by Pascal Rinker) 2021-10-27 Update dependencies to secure TYPO3 versions (Commit 9f3538c by Stefan Froemken) 2021-10-27 Add ChangLog and update version to 1.1.1 (Commit 0e3fddc by Stefan Froemken) 2021-10-27 Use source insteadof source in translation file (Commit 63ed80f by Stefan Froemken) 2021-10-22 Merge pull request #97 from jweiland-net/multipleFixes (Commit 0935cef by Pascal Rinker) 2021-10-22 Merge pull request #96 from jweiland-net/modifyExtEmConf (Commit cf0c758 by Pascal Rinker) 2021-10-22 [TASK] cs fixer (Commit 895d8a6 by Pascal Rinker) 2021-10-22 [TASK] Add missing pluginName to PeriodRegistrationViewHelper examples (Commit 1ba2792 by Pascal Rinker) 2021-10-22 [TASK] Shorten nearly endless row in VH (Commit 6f9af29 by Pascal Rinker) 2021-10-22 [TASK] Remove unnecessary items from ext_emconf (Commit b207517 by Pascal Rinker) 2021-10-22 [TASK] Add missing strict types (Commit 17890c5 by Pascal Rinker) 2021-10-15 Add softRefParser to RTE fields (Commit 990937d by Stefan Frömken) 2021-10-15 Add softRefParser to body field (Commit 6a19138 by Stefan Frömken) 2021-06-11 Merge pull request #83 from jweiland-net/featureDynamicButton (Commit 3e64d37 by Pascal Rinker) 2021-06-11 [TASK] Add sprintf (Commit 9b6b950 by Pascal Rinker) 2021-06-11 [TASK] Update findByDateAndBegin and make DateTime more readable (Commit 05167ea by Pascal Rinker) 2021-06-10 [TASK] Move test fluid templates into Fixtures directory (Commit a612f4e by Pascal Rinker) 2021-06-09 [DOCS] Update docs (Commit a134f64 by Pascal Rinker) 2021-06-09 [TASK] Add "as" option to PeriodRegistrationViewHelper, update tests (Commit d22e364 by Pascal Rinker) 2021-06-09 [DOCS] Add documentation for the new PeriodRegistrationViewHelper (Commit 8e0f9f8 by Pascal Rinker) 2021-06-09 [FEATURE] Add ViewHelper that can display remaining participants of a period (Commit abd3592 by Pascal Rinker) 2021-06-09 Merge pull request #82 from jweiland-net/featureApi (Commit f81cc83 by Pascal Rinker) 2021-06-08 [TASK] Some fixes (Commit 1591a06 by Pascal Rinker) 2021-06-08 [TASK] Fix tests (Commit c9a4625 by Pascal Rinker) 2021-06-08 [TASK] Use dynamic dates in functional tests (Commit 8c3ca98 by Pascal Rinker) 2021-06-08 [TASK] Update ci (Commit 1ab6d89 by Pascal Rinker) 2021-06-08 [FEATURE] Add ReserveService as part of a public API (Commit f473d31 by Pascal Rinker) 2021-06-07 [TASK] Remove unused method (Commit 8c3a297 by Pascal Rinker) 2021-06-07 Merge branch 'master' of github.com:jweiland-net/reserve (Commit 293ac7a by Pascal Rinker) 2021-06-07 [FEATURE] Support multiple facilities in one list view (Commit 7898add by Pascal Rinker) 2021-06-07 Add new fields to register for an EXT:events2 location (Commit 4269885 by Stefan Froemken) 2021-03-26 [TASK] Add reserve class to scanner modal (Commit c1d8007 by Pascal Rinker)

This list has been created by using git log $(git describe --tags --abbrev=0)..HEAD --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

Version 1.1.1 

2021-10-27 Use source instead of target in translation file (Commit 2f80f5d by Stefan Froemken)

Version 1.1.0 

2021-03-22 Merge branch 'master' of github.com:jweiland-net/reserve (Commit ce140aa by Pascal Rinker) 2021-03-22 [TASK] Add flash message if order could not be canceled (Commit 1b26235 by Pascal Rinker) 2021-03-22 Merge pull request #77 from DanielSiepmann/feature/8417-reset-countdown-after-cancel (Commit eec2529 by Pascal Rinker) 2021-03-22 [TASK] Check if period update affects orders before rendering the modal (Commit 7675c37 by Pascal Rinker) 2021-03-22 [TASK] Update github workflow (Commit 58c210d by Pascal Rinker) 2021-03-22 [BUGFIX] Flash message is beeing cached in Checkout::listAction (Commit b53b7bc by Pascal Rinker) 2021-03-22 [FEATURE] Add setting to decide which form fields are marked as required (Commit a7e65a4 by Pascal Rinker) 2021-03-10 Reset session after cancel was successful (Commit 0587968 by Daniel Siepmann) 2021-03-09 [TASK] Fix scanner exception (Commit 51538a1 by Pascal Rinker) 2021-03-04 Add extension key to composer.json #73 (Commit 0954547 by Stefan Frömken) 2021-02-26 Update locallang.xlf (Commit 6f15f3b by og-fox) 2021-02-26 Use correct spaces in de.locallang.xlf (Commit abe1fc2 by Stefan Frömken) 2021-02-26 Add space to make translation available in CrowdIn (Commit ff75ddf by Stefan Frömken) 2021-02-26 [BUGFIX] Fix max amount of further participants if further participants is a number field (Commit 38e3357 by Pascal Rinker)

This list has been created by using git log $(git describe --tags --abbrev=0)..HEAD --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

Version 1.0.0 

2021-01-28 [DOCS] Add route enhancers example configuration (Commit 6f29df9 by Pascal Rinker) 2021-01-27 [TASK] Add some more functional tests for CheckoutService (Commit ba2f6fb by Pascal Rinker) 2021-01-27 [TASK] Fix unit test (Commit 92851bf by Pascal Rinker) 2021-01-27 [FEATURE] Allow time slots with open end (Commit b009b72 by Pascal Rinker) 2021-01-27 [TASK] Remove unused stuff for TYPO3 v8 (Commit 26ea89d by Pascal Rinker) 2021-01-27 Merge branch 'master' of https://github.com/jweiland-net/reserve (Commit 742f39a by Pascal Rinker) 2021-01-27 [FEATURE] Add more customization options for frontend (Commit d5600b4 by Pascal Rinker)

This list has been created by using git log $(git describe --tags --abbrev=0)..HEAD --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

Version 0.0.2 

Bugfix: Use correct Namespace for QR Controller

Version 0.0.1 

Initial upload

Sitemap