Skip to content
Snippets Groups Projects
Commit 81a5d976 authored by Michael Kessler's avatar Michael Kessler
Browse files

[FEATURE] Finish job teaser filter settings

parent 46b2e9e3
No related branches found
No related tags found
1 merge request!40Feature advanced filters
......@@ -53,21 +53,20 @@ class JobTeaserController extends ActionController {
*/
public function indexAction(): ?\Psr\Http\Message\ResponseInterface {
$filters = [];
$filters['filterByDepartment'] = $this->settings['filterByDepartment'] ?? '';
$filters['filterByExperienceLevel'] = $this->settings['filterByExperienceLevel'] ?? '';
$filters['filterByLocation'] = $this->settings['filterByLocation'] ?? '';
foreach ($filters as $name => &$filter) {
if ($name === 'filterByLocation' || $name === 'filterByExperienceLevel' || $name === 'filterByDepartment') {
$filter = $filter ? GeneralUtility::trimExplode(',', $filter) : NULL;
if (!$filter) {
continue;
}
if (isset($this->settings['filterByDepartment']) && $this->settings['filterByDepartment'] !== '') {
$filters['filterByDepartment'] = $this->settings['filterByDepartment'];
}
if (isset($this->settings['filterByExperienceLevel']) && $this->settings['filterByExperienceLevel'] !== '') {
$filters['filterByExperienceLevel'] = $this->settings['filterByExperienceLevel'];
}
if (isset($this->settings['filterByLocation']) && $this->settings['filterByLocation'] !== '') {
$filters['filterByLocation'] = $this->settings['filterByLocation'];
}
foreach ($filter as &$value) {
$value = (int) $value;
}
foreach ($filters as &$filter) {
$filter = $filter ? GeneralUtility::trimExplode(',', $filter) : NULL;
foreach ($filter as &$value) {
$value = (int) $value;
}
}
......@@ -77,11 +76,9 @@ class JobTeaserController extends ActionController {
$querySettings->setIgnoreEnableFields(FALSE);
$this->jobRepository->setDefaultQuerySettings($querySettings);
$featuredOffers = $this->jobRepository->findByFeaturedOffer($filters);
$featuredOffers = $this->jobRepository->findByFeaturedOffer($filters, $this->settings['jobLimit'] ?? 3);
$this->view->assign('totalAmountOfOffers', $totalAmountOfOffers);
$this->view->assign('filterByDepartment', $filters['filterByDepartment']);
$this->view->assign('filterByExperienceLevel', $filters['filterByExperienceLevel']);
$this->view->assign('filterByLocation', $filters['filterByLocation']);
$this->view->assign('filters', $filters);
$this->view->assign('featuredOffers', $featuredOffers);
if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
......
......@@ -380,7 +380,7 @@ class JobRepository extends Repository {
$query->getQuerySettings()->setRespectStoragePage(FALSE);
}
if (count($filters) < 1) {
if (count($filters) > 0) {
$constraints = $this->getFilterConstraints($query, $filters);
$query->matching($query->logicalAnd($constraints));
}
......@@ -389,7 +389,7 @@ class JobRepository extends Repository {
}
/**
* Gets the featured jobs filtered by companies
* Gets the featured jobs filtered
*
* @param array $filters
* @param int $limit
......@@ -404,7 +404,7 @@ class JobRepository extends Repository {
$query->getQuerySettings()->setRespectStoragePage(FALSE);
}
if (count($filters) < 1) {
if (count($filters) > 0) {
$constraints = $this->getFilterConstraints($query, $filters);
$query->matching($query->logicalAnd($constraints));
}
......
......@@ -46,6 +46,17 @@
</config>
</TCEforms>
</settings.applyPage>
<settings.jobLimit>
<TCEforms>
<label>LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tx_sgjobs_domain_model_job.teaserLimit</label>
<config>
<type>input</type>
<size>5</size>
<eval>int</eval>
<default>3</default>
</config>
</TCEforms>
</settings.jobLimit>
<settings.filterByLocation>
<TCEforms>
<label>LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tx_sgjobs_domain_model_job.teaser_locations</label>
......
......@@ -281,6 +281,10 @@
<source><![CDATA[Number of offers per page]]></source>
<target><![CDATA[Anzahl der Anzeigen pro Seite]]></target>
</trans-unit>
<trans-unit id="tx_sgjobs_domain_model_job.teaserLimit" approved="yes">
<source><![CDATA[Number of offers]]></source>
<target><![CDATA[Anzahl der Anzeigen]]></target>
</trans-unit>
<trans-unit id="tx_sgjobs_domain_model_job.location" approved="yes">
<source><![CDATA[Location (deprecated)]]></source>
<target><![CDATA[Arbeitsort (veraltet)]]></target>
......
......@@ -219,6 +219,9 @@
<trans-unit id="tx_sgjobs_domain_model_job.jobLimit">
<source><![CDATA[Number of offers per page]]></source>
</trans-unit>
<trans-unit id="tx_sgjobs_domain_model_job.teaserLimit">
<source><![CDATA[Number of offers]]></source>
</trans-unit>
<trans-unit id="tx_sgjobs_domain_model_job.location">
<source><![CDATA[Location (deprecated)]]></source>
</trans-unit>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment