From b20f122c2fd778079754828beedcb52bd52edcdb Mon Sep 17 00:00:00 2001
From: Torsten Oppermann <torsten@sgalinski.de>
Date: Tue, 12 Dec 2017 13:47:35 +0100
Subject: [PATCH] [TASK] Adding limit jobs per page config to the ajax
 controller

---
 Classes/Controller/Ajax/JoblistController.php        | 5 ++---
 Classes/Controller/JoblistController.php             | 1 +
 Resources/Private/Partials/Filter.html               | 1 +
 Resources/Private/Templates/Ajax/Joblist/Filter.html | 2 +-
 Resources/Private/Templates/Joblist/Index.html       | 2 +-
 Resources/Public/JavaScript/sgJobs.js                | 1 +
 6 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/Classes/Controller/Ajax/JoblistController.php b/Classes/Controller/Ajax/JoblistController.php
index 907ca34f..3207037e 100644
--- a/Classes/Controller/Ajax/JoblistController.php
+++ b/Classes/Controller/Ajax/JoblistController.php
@@ -27,11 +27,9 @@ namespace SGalinski\SgJobs\Controller\Ajax;
  ***************************************************************/
 
 use SGalinski\SgAjax\Controller\Ajax\AbstractAjaxController;
-use SGalinski\SgJobs\Service\BackendService;
 use SGalinski\SgJobs\Service\FrontendFilterService;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
 
 /**
  * Ajax Controller
@@ -70,7 +68,7 @@ class JoblistController extends AbstractAjaxController {
 		$this->assignFilterValues($recordPageId);
 
 		// pagination logic
-		$jobLimit = (int) $this->settings['jobLimit'];
+		$jobLimit = (int) $_POST['parameters']['limit'];
 		$offset = 0;
 		$currentPageBrowserPage = (int) GeneralUtility::_GP('tx_sgjobs_pagebrowser')['currentPage'];
 		if ($currentPageBrowserPage && $jobLimit) {
@@ -94,6 +92,7 @@ class JoblistController extends AbstractAjaxController {
 		$this->view->assign('selectedLocation', $filters['location']);
 		$this->view->assign('selectedArea', $filters['area']);
 		$this->view->assign('selectedFunction', $filters['function']);
+		$this->view->assign('limit', $jobLimit);
 	}
 
 	/**
diff --git a/Classes/Controller/JoblistController.php b/Classes/Controller/JoblistController.php
index 2b23079d..f193a3aa 100644
--- a/Classes/Controller/JoblistController.php
+++ b/Classes/Controller/JoblistController.php
@@ -85,6 +85,7 @@ class JoblistController extends ActionController {
 		$numberOfPages = ($jobLimit <= 0 ? 0 : ceil($jobsCount / $jobLimit));
 
 		$this->view->assign('jobs', $jobs);
+		$this->view->assign('limit', $jobLimit);
 		$this->view->assign('numberOfPages', $numberOfPages);
 	}
 
diff --git a/Resources/Private/Partials/Filter.html b/Resources/Private/Partials/Filter.html
index d5e2ca21..29b9424e 100644
--- a/Resources/Private/Partials/Filter.html
+++ b/Resources/Private/Partials/Filter.html
@@ -4,4 +4,5 @@
 	<f:form.select class="sgjobs-select form-control" multiple="0" size="1" value="{selectedCompany}" property="filterCompany" optionValueField="value" options="{companies}" id="filter-companies" />
 	<f:form.select class="sgjobs-select form-control" multiple="0" size="1" value="{selectedArea}" property="filterArea" optionValueField="value" options="{areas}" id="filter-areas" />
 	<f:form.select class="sgjobs-select form-control" multiple="0" size="1" value="{selectedFunction}" property="filterFunction" optionValueField="value" options="{functions}" id="filter-functions" />
+	<f:form.hidden value="{limit}" id="filter-limit" />
 </f:form>
diff --git a/Resources/Private/Templates/Ajax/Joblist/Filter.html b/Resources/Private/Templates/Ajax/Joblist/Filter.html
index 5d9bbcbd..5fdeffc6 100644
--- a/Resources/Private/Templates/Ajax/Joblist/Filter.html
+++ b/Resources/Private/Templates/Ajax/Joblist/Filter.html
@@ -2,7 +2,7 @@
 	partial="Filter"
 	arguments="{filters: filters, countries: countries, cities: cities, companies: companies, areas: areas,
 	 functions: functions, selectedCountry: selectedCountry, selectedCompany: selectedCompany,
-	 selectedLocation: selectedLocation, selectedArea: selectedArea, selectedFunction: selectedFunction}"
+	 selectedLocation: selectedLocation, selectedArea: selectedArea, selectedFunction: selectedFunction, limit: limit}"
 />
 
 <f:for each="{jobs}" as="job">
diff --git a/Resources/Private/Templates/Joblist/Index.html b/Resources/Private/Templates/Joblist/Index.html
index 04b440d5..ee1921d5 100644
--- a/Resources/Private/Templates/Joblist/Index.html
+++ b/Resources/Private/Templates/Joblist/Index.html
@@ -5,7 +5,7 @@
 	<div id="sgjobs-joblist">
 		<f:render
 			partial="Filter"
-			arguments="{filters: filters, countries: countries, cities: cities, companies: companies, areas: areas, functions: functions}"
+			arguments="{filters: filters, countries: countries, cities: cities, companies: companies, areas: areas, functions: functions, limit: limit}"
 		/>
 
 		<f:for each="{jobs}" as="job">
diff --git a/Resources/Public/JavaScript/sgJobs.js b/Resources/Public/JavaScript/sgJobs.js
index 67265db4..369061a2 100644
--- a/Resources/Public/JavaScript/sgJobs.js
+++ b/Resources/Public/JavaScript/sgJobs.js
@@ -52,6 +52,7 @@ export default class SgJobs {
 					company: $('#filter-companies').val(),
 					area: $('#filter-areas').val(),
 					function: $('#filter-functions').val(),
+					limit: $('#filter-limit').val()
 				}
 			}
 		).done(function(result) {
-- 
GitLab