Skip to content
Snippets Groups Projects
Commit 5c41c7d7 authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

Merge branch 'master' into 'feature_sgmail_security'

# Conflicts:
#   ext_localconf.php
parents 102a28bc 091a70ff
No related branches found
No related tags found
1 merge request!8[TASK] Refactored mail template registration, moved template content to config file
......@@ -73,6 +73,10 @@ class BackendController extends ActionController {
// create docheader + buttons
$pageInfo = BackendUtility::readPageAccess($pageUid, $GLOBALS['BE_USER']->getPagePermsClause(1));
if ($pageInfo === FALSE) {
$pageInfo = ['uid' => $pageUid];
}
$this->docHeaderComponent = GeneralUtility::makeInstance(DocHeaderComponent::class);
$this->docHeaderComponent->setMetaInformation($pageInfo);
BackendService::makeButtons($this->docHeaderComponent, $this->request);
......@@ -91,14 +95,15 @@ class BackendController extends ActionController {
/** @var QueryResultInterface $companies */
$companies = $this->companyRepository->findByPid($pageUid);
$this->view->assign('locationOptions', $companies);
$this->view->assign('typo3Version', VersionNumberUtility::convertVersionNumberToInteger(TYPO3_version));
if ($totalJobCount || $companies->count()) {
$this->view->assign('jobs', $jobs);
$this->view->assign('filters', $filters);
$this->view->assign('pageUid', $pageUid);
$this->view->assign('typo3Version', VersionNumberUtility::convertVersionNumberToInteger(TYPO3_version));
} else {
$this->view->assign('noRecords', 1);
$this->view->assign('isAdmin', $GLOBALS['BE_USER']->isAdmin());
$this->addFlashMessage(
LocalizationUtility::translate('backend.notice.noRecords', 'SgJobs'), '', FlashMessage::INFO
);
......
<?php
namespace SGalinski\SgJobs\SignalSlot;
/***************************************************************
* Copyright notice
*
* (c) sgalinski Internet Services (https://www.sgalinski.de)
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
/**
* Signal functions regarding sg_seo sitemap generation
*/
class SitemapSignalSlot {
const PLUGIN_NAME = 'sgjobs_jobapplication';
/**
* @var UriBuilder
*/
protected $uriBuilder;
/**
* Before the sitemap is generated
*
* @param array $pageList
* @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException
*/
public function beforeSitemapGeneration(array &$pageList) {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$request = $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Request::class);
$request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'));
$request->setBaseUri(GeneralUtility::getIndpEnv('TYPO3_SITE_URL'));
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$contentObjectRenderer = $objectManager->get(ContentObjectRenderer::class);
$configurationManager = $objectManager->get(ConfigurationManager::class);
$configurationManager->setContentObject($contentObjectRenderer);
$this->uriBuilder = $objectManager->get(UriBuilder::class);
$this->uriBuilder->injectConfigurationManager($configurationManager);
// find sites where job detail plugin is added
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
$databaseResource = $queryBuilder->select('pid', 'pages')
->from('tt_content')
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('list')),
$queryBuilder->expr()->eq('list_type', $queryBuilder->createNamedParameter(self::PLUGIN_NAME))
)
)
->execute();
$rows = $databaseResource->fetchAll();
foreach ($rows as $row) {
$jobs = $this->getJobsByPid($row['pages']);
foreach ($jobs as $job) {
$url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments(
['tx_sgjobs_jobapplication' => ['jobId' => $job['uid']]]
)->setCreateAbsoluteUri(TRUE)->buildFrontendUri();
$pageList[] = [
'url' => $url,
'title' => ''
];
}
}
}
/**
* Get all jobs stored on specific page ids
*
* @param string $pageList
* @return array|null
*/
private function getJobsByPid($pageList) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
$databaseResource = $queryBuilder->select('*')
->from('tx_sgjobs_domain_model_job')
->where($queryBuilder->expr()->in('pid', $queryBuilder->createNamedParameter($pageList)))
->execute();
return $databaseResource->fetchAll();
}
}
......@@ -4,6 +4,8 @@ return [
'ctrl' => [
'title' => 'LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tx_sgjobs_domain_model_contact',
'label' => 'last_name',
'label_alt' => 'email, city',
'label_alt_force' => 1,
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
......
......@@ -133,7 +133,7 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim, required'
'eval' => 'trim, required, unique'
],
],
'job_id' => [
......
......@@ -53,7 +53,9 @@
</f:then>
<f:else>
<f:render partial="SelectRoot" arguments="{pages: pages}" />
<f:render partial="CreateJob" arguments="{pageUid:pageUid}" />
<f:if condition="{isAdmin}">
<f:render partial="CreateJob" arguments="{pageUid:pageUid}" />
</f:if>
</f:else>
</f:if>
......
......@@ -6,7 +6,7 @@
"license": [
"GPL-2.0-or-later"
],
"version": "1.15.0",
"version": "1.18.1",
"support": {
"issues": "https://gitlab.sgalinski.de/typo3/sg_jobs"
},
......
......@@ -4,7 +4,7 @@ $EM_CONF[$_EXTKEY] = array (
'title' => 'Jobs',
'description' => 'Manage and display your Job offers.',
'category' => 'plugin',
'version' => '1.15.0',
'version' => '1.18.1',
'state' => 'stable',
'uploadfolder' => FALSE,
'createDirs' => '',
......
......@@ -62,3 +62,15 @@ if (TYPO3_MODE === 'BE') {
// register mail templates
$GLOBALS['sgmail']['sg_jobs']['ApplicationMail'] = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('sg_jobs') . '/Configuration/SgMail/ApplicationMail.php';
// signal slot for sg_seo integration
/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class
);
$signalSlotDispatcher->connect(
\SGalinski\SgSeo\Generator\PagesSitemapGenerator::class,
'accessPageList',
\SGalinski\SgJobs\SignalSlot\SitemapSignalSlot::class,
'beforeSitemapGeneration'
);
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