Skip to content

Commit

Permalink
Merge pull request #17 from contao-estatemanager/support/1.0
Browse files Browse the repository at this point in the history
Feature: Hide residential units within real estate lists
  • Loading branch information
eki89 authored Feb 22, 2023
2 parents 3810454 + 52713b6 commit cd13deb
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 18 deletions.
12 changes: 9 additions & 3 deletions src/Resources/contao/classes/Project.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ class Project
* @param $arrOptions
* @param $mode
* @param $addFragments
* @param $objModule
* @param $context
*/
public function setFilterParameter(&$arrColumns, &$arrValues, &$arrOptions, $mode, $addFragments, $context): void
public function setFilterParameter(&$arrColumns, &$arrValues, &$arrOptions, $mode, $addFragments, $objModule, $context): void
{
$t = static::$strTable;

Expand All @@ -49,6 +50,11 @@ public function setFilterParameter(&$arrColumns, &$arrValues, &$arrOptions, $mod
{
$arrColumns[] = "$t.master=''";
}

if ('hideUnits' === $mode)
{
$arrColumns[] = "$t.gruppenKennung=''";
}
}

/**
Expand Down Expand Up @@ -101,7 +107,7 @@ public function setEstatesControllerParameter(&$arrColumns, &$arrValues, &$arrOp
*
* @return int: marketing status in percent
*/
public static function getProjectMarketingStatus($objMaster): int
public static function getProjectMarketingStatus($objMaster)
{
$t = static::$strTable;

Expand Down Expand Up @@ -243,7 +249,7 @@ public static function getProjectSpecificDetails($realEstate): array
*
* @param $realEstate
*/
public static function getNumberOfChildren($realEstate): int
public static function getNumberOfChildren($realEstate)
{
// If we have received a master property and the number of units has been transferred, return it directly
if ((bool) $realEstate->master && $realEstate->anzahlWohneinheiten)
Expand Down
3 changes: 3 additions & 0 deletions src/Resources/contao/dca/tl_module.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
// Extend estate manager statusTokens field options
$GLOBALS['TL_DCA']['tl_module']['fields']['statusTokens']['options'][] = 'project';

// Extend estate manager filterMode field options
$GLOBALS['TL_DCA']['tl_module']['fields']['filterMode']['options'][] = 'hideUnits';

// Add module palette for projects
$GLOBALS['TL_DCA']['tl_module']['palettes']['realEstateProjectList'] = '{title_legend},name,headline,type;{config_legend},realEstateGroups,numberOfItems,perPage,filterMode,childrenObserveFiltering,addSorting;{redirect_legend},jumpTo,jumpToProject;{item_extension_legend:hide},addProvider,addContactPerson;{template_legend:hide},statusTokens,customTpl,realEstateProjectTemplate,realEstateTemplate,realEstateProviderTemplate,realEstateContactPersonTemplate;{image_legend:hide},imgSize,projectImgSize,providerImgSize,contactPersonImgSize;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';

Expand Down
5 changes: 5 additions & 0 deletions src/Resources/contao/languages/de/tl_real_estate_misc.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@
<source>No projects are currently under construction.</source>
<target>Derzeit befinden sich keine Projekte im Bau.</target>
</trans-unit>

<trans-unit id="tl_real_estate_misc.hideUnits">
<source>Hide residential units</source>
<target>Wohneinheiten ausblenden</target>
</trans-unit>
</body>
</file>
</xliff>
4 changes: 4 additions & 0 deletions src/Resources/contao/languages/en/tl_real_estate_misc.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
<trans-unit id="tl_real_estate_project_misc.noProjectResults">
<source>No projects are currently under construction.</source>
</trans-unit>

<trans-unit id="tl_real_estate_misc.hideUnits">
<source>Hide residential units</source>
</trans-unit>
</body>
</file>
</xliff>
36 changes: 21 additions & 15 deletions src/Resources/contao/modules/ModuleRealEstateProjectList.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,6 @@ class ModuleRealEstateProjectList extends ModuleRealEstate
*/
protected $strTemplate = 'mod_realEstateProjectList';

/**
* Template.
*
* @var string
*/
protected $strProjectTemplate = 'real_estate_project_default';

/**
* Do not display the module if there are no real estates.
*
Expand Down Expand Up @@ -106,6 +99,8 @@ public function generate()
*/
protected function compile(): void
{
$strProjectTemplate = $this->realEstateProjectTemplate ?: 'real_estate_project_default';

$this->addSorting();

[$arrColumns, $arrValues, $arrOptions] = $this->getProjectParameters();
Expand Down Expand Up @@ -138,7 +133,9 @@ protected function compile(): void
{
[$arrColumns, $arrValues, $arrOptions] = $this->objFilterSession->getParameter($this->realEstateGroups, $this->filterMode, (bool) $this->childrenObserveFiltering);

$arrColumns[] = "$this->strTable.gruppenKennung IN(".implode(',', $projectIds).')';
$queryProjects = "'".implode("','", $projectIds)."'";

$arrColumns[] = "$this->strTable.gruppenKennung IN(".$queryProjects.')';
$arrColumns[] = "$this->strTable.master=''";

$objChildren = RealEstateModel::findPublishedBy($arrColumns, $arrValues, $arrOptions);
Expand All @@ -147,7 +144,7 @@ protected function compile(): void
if ((bool) $this->childrenObserveFiltering)
{
$arrNumberOfChildren = [];
$objNumberOfChildren = $this->Database->execute("SELECT COUNT(id) as cnt, gruppenKennung FROM $this->strTable WHERE gruppenKennung IN(".implode(',', $projectIds).") AND master='' GROUP BY gruppenKennung");
$objNumberOfChildren = $this->Database->execute("SELECT COUNT(id) as cnt, gruppenKennung FROM $this->strTable WHERE gruppenKennung IN(".$queryProjects.") AND master='' GROUP BY gruppenKennung");

while ($objNumberOfChildren->next())
{
Expand All @@ -166,13 +163,22 @@ protected function compile(): void

$objProjects->reset();

while ($objProjects->next())
if (isset($GLOBALS['TL_HOOKS']['compileRealEstateProject']) && \is_array($GLOBALS['TL_HOOKS']['compileRealEstateProject']))
{
foreach ($GLOBALS['TL_HOOKS']['compileRealEstateProject'] as $callback)
{
$this->import($callback[0]);
$this->{$callback[0]}->{$callback[1]}($objProjects, $arrProjects, $this);
}
}

foreach ($objProjects as $objProject)
{
$realEstate = new RealEstateModulePreparation($objProjects->current(), $this, null);
$objTemplate = new FrontendTemplate($this->strProjectTemplate);
$realEstate = new RealEstateModulePreparation($objProject, $this,null);
$objTemplate = new FrontendTemplate($strProjectTemplate);

$objTemplate->realEstate = $realEstate;
$objTemplate->children = $arrProjects[$objProjects->master]['children'] ?: [];
$objTemplate->children = $arrProjects[$objProject->master]['children'] ?: [];
$objTemplate->jumpTo = $this->jumpToProject;
$objTemplate->imgSize = $this->projectImgSize;
$objTemplate->details = Project::getProjectSpecificDetails($realEstate);
Expand All @@ -187,11 +193,11 @@ protected function compile(): void
}
elseif ((bool) $this->childrenObserveFiltering)
{
$objTemplate->numberOfChildren = $arrNumberOfChildren[$objProjects->master];
$objTemplate->numberOfChildren = $arrNumberOfChildren[$objProject->master];
}
else
{
$objTemplate->numberOfChildren = \count($arrProjects[$objProjects->master]['children']);
$objTemplate->numberOfChildren = \count($arrProjects[$objProject->master]['children']);
}

// add provider
Expand Down

0 comments on commit cd13deb

Please sign in to comment.