heimrichhannot / contao-haste_plus
An extension for the contao haste module.
Package info
github.com/heimrichhannot/contao-haste_plus
Type:contao-module
pkg:composer/heimrichhannot/contao-haste_plus
Requires
- php: ~7.0 || ^8.0
- codefog/contao-haste: ^4.0 || ^5.0
- contao/core-bundle: ^4.4.52 || ^4.13
- globalcitizen/php-iban: ~2.0 || ~3.0 || ~4.0
- hackzilla/password-generator: ^1.4
- heimrichhannot/contao-components: ^2.0
- phpfastcache/phpfastcache: ^7.0
- soundasleep/html2text: ^1.1
- tijsverkoyen/css-to-inline-styles: ^2.2
Suggests
- miljar/php-exif: Required for working with EXIF meta-data in version 0.6.3
- mpdf/mpdf: Required for PdfTemplate in version 6.1.*
This package is auto-updated.
Last update: 2026-06-15 16:37:20 UTC
README
Please note:
This bundle is deprecated and not actively maintained anymore!
Haste Plus
Haste plus extends codefog/contao-haste as a collection of tools and classes to ease working with Contao.
Module Preview
Features
Cache
The PHP high-performance object caching system, phpfastcache is part of hast_plus. Currently only File-Caching is supported, but Pull-Request are welcome.
Example : FileCache
// MyClass.php
public function getSelectOptions(array $arrNewsArchives)
{
// select a unique key
$strCacheKey = 'my_select_options' . implode('_', $arrNewsArchives);
if(FileCache::getInstance()->isExisting($strCacheKey))
{
return FileCache::getInstance()->get($strCacheKey);
}
$arrItems = array();
// heavy sql queries or http-requests (just an example)
$objItems = \NewsModel::findPublishedByPids($arrNewsArchives);
if($objItems === null)
{
return $arrItems;
}
$arrItems = $objItems->fetchEach('headline');
FileCache::getInstance()->set($strCacheKey, $arrItems);
return $arrItems;
}
Security
Add security headers to http request (configurable in tl_settings)
- IFRAME Clickjacking Protection: X-Frame-Options: SAMEORIGIN
- Allow Origins Check: Access-Control-Allow-Origins & Access-Control-Allow-Headers
These options don't work anymore with Contao 4! Further Information
Input/Widget rgxp
The following regular expression can be used to validate widget input.
| Name | Example | Description |
|---|---|---|
| customDate | customDate::d.m | Validate custom date format against input. |
| price | price | Validate price input. |
| posfloat | posfloat | Validate float numbers in input. |
| maxlength | maxlength::120 | Validate the user input without html elements against the input given length. |
Utils
The following Classes and Methods are helpers that ease the working with Contao.
| Class | Description |
|---|---|
| Files | Contains helper function for working with files and filenames. |
| PaymentUtils | Contains helper functions for payment relevant use cases. |
| StringUtils | Contains helper function for working with strings. |
| Type | Name | Method | Description |
|---|---|---|---|
| Url | addScheme | \HeimrichHannot\Haste\Util\Url::addScheme($strUrl, $strScheme) | Add the given protocol/scheme (http://,https://,ftp://…) to the given url if not present. |
| Arrays | filterByPrefixes | \HeimrichHannot\Haste\Util\Arrays::filterByPrefixes($arrData, $arrayPrefixes) | Filter an array by given prefixes and return the filtered array. |
| Arrays | getListPositonCssClass | \HeimrichHannot\Haste\Util\Arrays::getListPositonCssClass($key, $arrList, $blnReturnAsArray) | Create the class names for an item within a array list |
Google Maps
If you want to add google maps with ease that are build from dynamic entities, and not withing dlh_googlemaps backend module, use the following code.
# news_full.html5
<?php $objMap = new \HeimrichHannot\Haste\Map\GoogleMap(); ?>
<?php foreach ($this->venues as $arrVenue): ?>
<?php $objMap->setCenter($arrVenue['venueSingleCoords']); // lat and lon seperated by comma ?>
<?php $objMarker = new \HeimrichHannot\Haste\Map\GoogleMapMarker(); ?>
<?php $objMarker->setPosition($arrVenue['venueSingleCoords']); // lat and lon seperated by comma ?>
<?php $objMarker->setTitle($arrVenue['venueName']); // for full list of marker options see \HeimrichHannot\Haste\Map\GoogleMapMarker::prepare()?>
<?php $objMap->addMarker($objMarker); ?>
<?php endforeach; ?>
<?= $objMap->generate(
array(
'mapSize' => array('100%', '400px', ''),
'zoom' => 13,
)
// for full list of map options see \HeimrichHannot\Haste\Map\GoogleMap::prepare()
); ?>
Inserttags
| Tag | Arguments | Example |
|---|---|---|
| trimsplit | 1st: the delimiter, 2nd: the value | {{trimsplit::,::2,1}} |
| encrypt | 1st: the value | {{encrypt::my secret value}} |
Developer notes
- provide a minimum of 3 unit test for each test case of a util method
Notification Tokens
- Added
##form_submission_html_all##, an equivalent to##formsubmission##but for html format