Haste Plus

August 30, 2024 · View on GitHub

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.

NameExampleDescription
customDatecustomDate::d.mValidate custom date format against input.
pricepriceValidate price input.
posfloatposfloatValidate float numbers in input.
maxlengthmaxlength::120Validate 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.

ClassDescription
FilesContains helper function for working with files and filenames.
PaymentUtilsContains helper functions for payment relevant use cases.
StringUtilsContains helper function for working with strings.
TypeNameMethodDescription
UrladdScheme\HeimrichHannot\Haste\Util\Url::addScheme(strUrl,strUrl, strScheme)Add the given protocol/scheme (http://,https://,ftp://…) to the given url if not present.
ArraysfilterByPrefixes\HeimrichHannot\Haste\Util\Arrays::filterByPrefixes(arrData,arrData, arrayPrefixes)Filter an array by given prefixes and return the filtered array.
ArraysgetListPositonCssClass\HeimrichHannot\Haste\Util\Arrays::getListPositonCssClass(key,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

TagArgumentsExample
trimsplit1st: the delimiter, 2nd: the value{{trimsplit::,::2,1}}
encrypt1st: 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