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

[FEATURE] Heavy Cleanup, Fix Module Icon Rendering, Configurable JobApplication Path

parent f685d320
No related branches found
No related tags found
No related merge requests found
......@@ -38,9 +38,10 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
* Uploads for the applicationForm
*/
class UploadController extends AbstractAjaxController {
public const JOB_APPLICATION_FOLDER = 'JobApplication';
public const JOB_APPLICATION_TEMP_FOLDER = 'temp';
public $jobFolderPath = 'JobApplication';
/**
* @var FileAndFolderService
*/
......@@ -54,6 +55,18 @@ class UploadController extends AbstractAjaxController {
$this->fileAndFolderService = $fileAndFolderService;
}
/**
* Initializes the class
*/
public function __construct() {
$extensionConfiguration = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['sg_jobs'] ?? [];
if (isset($extensionConfiguration['jobFolderPath']) && $extensionConfiguration['jobFolderPath'] !== '') {
$this->jobFolderPath = $extensionConfiguration['jobFolderPath'];
} else {
$this->jobFolderPath = 'JobApplication';
}
}
/**
* Returns the calculated max file size.
*
......@@ -128,10 +141,10 @@ class UploadController extends AbstractAjaxController {
)
);
// if the job application folder is not existing, create it
if (!$storage->hasFolder(self::JOB_APPLICATION_FOLDER)) {
$folder = $storage->createFolder(self::JOB_APPLICATION_FOLDER);
if (!$storage->hasFolder($this->jobFolderPath)) {
$folder = $storage->createFolder($this->jobFolderPath);
} else {
$folder = $storage->getFolder(self::JOB_APPLICATION_FOLDER);
$folder = $storage->getFolder($this->jobFolderPath);
}
// if temp folder is not existing, create one
if ($folder && !$storage->hasFolderInFolder(self::JOB_APPLICATION_TEMP_FOLDER, $folder)) {
......@@ -139,7 +152,7 @@ class UploadController extends AbstractAjaxController {
}
$filePath = Environment::getPublicPath() . '/fileadmin/' .
self::JOB_APPLICATION_FOLDER . DIRECTORY_SEPARATOR .
$this->jobFolderPath . DIRECTORY_SEPARATOR .
self::JOB_APPLICATION_TEMP_FOLDER . DIRECTORY_SEPARATOR . $fileName;
$tempFilePath = $firstFile['tmp_name'];
$success = GeneralUtility::upload_copy_move($tempFilePath, $filePath);
......
......@@ -112,6 +112,8 @@ class JoblistController extends ActionController {
*/
protected $fileAndFolderService;
public $jobFolderPath = 'JobApplication';
/**
* Inject the CompanyRepository
*
......@@ -166,6 +168,18 @@ class JoblistController extends ActionController {
$this->jobRepository = $jobRepository;
}
/**
* Initializes the class
*/
public function __construct() {
$extensionConfiguration = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['sg_jobs'] ?? [];
if (isset($extensionConfiguration['jobFolderPath']) && $extensionConfiguration['jobFolderPath'] !== '') {
$this->jobFolderPath = $extensionConfiguration['jobFolderPath'];
} else {
$this->jobFolderPath = 'JobApplication';
}
}
/**
* Initialize the indexAction to set the currentPageBrowserPage parameter
*/
......@@ -424,7 +438,7 @@ class JoblistController extends ActionController {
* @return void
* @throws StopActionException
*/
protected function submitApplicationFiles(JobApplication $applicationData, string $folderName): void {
protected function createCsvSummary(JobApplication $applicationData, string $folderName): void {
$resourceFactory = $this->objectManager->get(ResourceFactory::class);
$newName = \date('Ymd-His') . '_' . $applicationData->getJobId() . '-' . $applicationData->getFirstName()
. '-' . $applicationData->getLastName();
......@@ -555,7 +569,7 @@ class JoblistController extends ActionController {
}
$this->moveTmpFolder($folderName, $applyData);
$this->submitApplicationFiles($applyData, $folderName);
$this->createCsvSummary($applyData, $folderName);
/** @noinspection PhpParamsInspection */
$mailService = $this->objectManager->get(
......@@ -716,13 +730,13 @@ class JoblistController extends ActionController {
$storage = $resourceFactory->getStorageObject(1); // fileadmin
$newFolder = $tempFolder = NULL;
$folder = $storage->getFolder(UploadController::JOB_APPLICATION_FOLDER);
$folder = $storage->getFolder($this->jobFolderPath);
if ($folder) {
$tempFolder = $storage->getFolderInFolder(UploadController::JOB_APPLICATION_TEMP_FOLDER, $folder);
if (!$storage->hasFolderInFolder($folderName, $folder)) {
$newFolder = $storage->createFolder($folderName, $folder);
} else {
$newFolder = $storage->getFolder(UploadController::JOB_APPLICATION_FOLDER . $folderName);
$newFolder = $storage->getFolder($this->jobFolderPath . $folderName);
}
}
......
<?php
$icons = [];
/**
* Important! Do not return a variable named $icons, because it will result in an error.
* The core requires this file and then the variable names will clash.
* Either use a closure here, or do not call your variable $icons.
*/
$iconList = [];
$sgJobsIcons = [
'extension-sg_jobs-module' => 'module-sgjobs.svg',
];
foreach ($sgJobsIcons as $identifier => $path) {
$icons[$identifier] = [
$iconList[$identifier] = [
'provider' => \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
'source' => 'EXT:sg_jobs/Resources/Public/Icons/' . $path,
];
}
return $icons;
return $iconList;
......@@ -18,7 +18,7 @@ This extension provides job application functionality for a TYPO3 installation.
* Applying for the created jobs
* Applications include file uploads
* Every application is saved conveniently in a CSV format, along with the
uploaded files
uploaded files
* Sends mail notifications when applications are submitted
* Provides a JobTitleMapper for the TYPO3 9 route enhancers
......@@ -92,7 +92,7 @@ To enable the job title mapping in TYPO3 9, you need to add this routeEnhancer c
```yaml
routeEnhancers:
SgJobApplication:
SgJobApplication:
type: Extbase
extension: SgJobs
plugin: JobApplication
......@@ -107,19 +107,19 @@ routeEnhancers:
aspects:
job_title:
type: JobTitleMapper
SgJobList:
type: Extbase
extension: SgJobs
plugin: Joblist
routes:
- routePath: '/job/{job_title}'
_controller: 'Joblist::index'
_arguments:
job_title: jobId
defaultController: 'Joblist::index'
aspects:
job_title:
type: JobTitleMapper
SgJobList:
type: Extbase
extension: SgJobs
plugin: Joblist
routes:
- routePath: '/job/{job_title}'
_controller: 'Joblist::index'
_arguments:
job_title: jobId
defaultController: 'Joblist::index'
aspects:
job_title:
type: JobTitleMapper
```
This configuration will use the JobTitleMapper to map the job title to the jobs is.
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2022-06-20T17:21:14Z">
<file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2023-09-06T17:30:53Z">
<header>
<type>module</type>
<description>General language labels used in frontend and backend.</description>
......@@ -142,33 +142,37 @@
<source><![CDATA[Please select one of the following pages:]]></source>
<target><![CDATA[Bitte wählen Sie eine der folgenden Seiten aus:]]></target>
</trans-unit>
<trans-unit id="error.maxFileSizeMessage" approved="yes">
<source><![CDATA[The selected file exceeds the maximum file size]]></source>
<target><![CDATA[Die ausgewählte Datei ist zu groß!]]></target>
<trans-unit id="configuration.jobFolderPath" approved="yes">
<source><![CDATA[Job Folder Path (Relative to fileadmin, defaults to "JobApplication")]]></source>
<target><![CDATA[Job-Verzeichnis-Pfad (relativ zu fileadmin, Standardwert ist "JobApplication")]]></target>
</trans-unit>
<trans-unit id="error.NoSuchArgumentException">
<trans-unit id="error.NoSuchArgumentException" approved="yes">
<source><![CDATA[Some file could not be uploaded. Is it too large?]]></source>
<target><![CDATA[Einige Dateien konnten nicht hochgeladen werden. Ist eine Datei zu groß?]]></target>
</trans-unit>
<trans-unit id="error.TypeConverterException.type">
<source><![CDATA[File extension is not allowed!]]></source>
<target><![CDATA[Dateityp nicht erlaubt!]]></target>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.">
<source><![CDATA[Missing file %s]]></source>
<trans-unit id="error.TypeConverterException.missing." approved="yes">
<source><![CDATA[Missing some file]]></source>
<target><![CDATA[Eine Datei fehlt]]></target>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.coverLetter">
<trans-unit id="error.TypeConverterException.missing.certificate" approved="yes">
<source><![CDATA[Missing certificate file]]></source>
<target><![CDATA[Datei für Zeugnis fehlt]]></target>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.coverLetter" approved="yes">
<source><![CDATA[Missing coverletter file]]></source>
<target><![CDATA[Datei für Motivationsschreiben fehlt]]></target>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.cv">
<trans-unit id="error.TypeConverterException.missing.cv" approved="yes">
<source><![CDATA[Missing cv file]]></source>
<target><![CDATA[Datei für Lebenslauf fehlt]]></target>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.certificate">
<source><![CDATA[Missing certificate file]]></source>
<target><![CDATA[Datei für Zeugnis fehlt]]></target>
<trans-unit id="error.TypeConverterException.type" approved="yes">
<source><![CDATA[File extension is not allowed!]]></source>
<target><![CDATA[Dateityp nicht erlaubt!]]></target>
</trans-unit>
<trans-unit id="error.maxFileSizeMessage" approved="yes">
<source><![CDATA[The selected file exceeds the maximum file size]]></source>
<target><![CDATA[Die ausgewählte Datei ist zu groß!]]></target>
</trans-unit>
<trans-unit id="frontend.allVacancies" approved="yes">
<source><![CDATA[All vacancies]]></source>
......@@ -183,9 +187,9 @@
<target><![CDATA[Bewerbung als]]></target>
</trans-unit>
<trans-unit id="frontend.apply.applyAsNow" approved="yes">
<source><![CDATA[Apply now as %s]]></source>
<target><![CDATA[Jetzt als %s bewerben]]></target>
</trans-unit>
<source><![CDATA[Apply now as %s]]></source>
<target><![CDATA[Jetzt als %s bewerben]]></target>
</trans-unit>
<trans-unit id="frontend.apply.birthDate" approved="yes">
<source><![CDATA[Birth date *]]></source>
<target><![CDATA[Geburtsdatum *]]></target>
......@@ -226,10 +230,6 @@
<source><![CDATA[Highest achieved education *]]></source>
<target><![CDATA[Höchster Abschluss *]]></target>
</trans-unit>
<trans-unit id="frontend.apply.relatedJobs" approved="yes">
<source><![CDATA[Related Jobs]]></source>
<target><![CDATA[Verwandte Stellenanzeigen]]></target>
</trans-unit>
<trans-unit id="frontend.apply.email" approved="yes">
<source><![CDATA[Email *]]></source>
<target><![CDATA[E-Mail *]]></target>
......@@ -298,6 +298,10 @@
<source><![CDATA[Recommend job]]></source>
<target><![CDATA[Stelle weiterempfehlen]]></target>
</trans-unit>
<trans-unit id="frontend.apply.relatedJobs" approved="yes">
<source><![CDATA[Related Jobs]]></source>
<target><![CDATA[Verwandte Stellenanzeigen]]></target>
</trans-unit>
<trans-unit id="frontend.apply.salutation" approved="yes">
<source><![CDATA[Salutation]]></source>
<target><![CDATA[Anrede]]></target>
......@@ -450,14 +454,14 @@
<source><![CDATA[Location]]></source>
<target><![CDATA[Standort]]></target>
</trans-unit>
<trans-unit id="frontend.locationCountLabel" approved="yes">
<source><![CDATA[Locations]]></source>
<target><![CDATA[Standorte]]></target>
</trans-unit>
<trans-unit id="frontend.locationLabel" approved="yes">
<source><![CDATA[<b>Location:</b>]]></source>
<target><![CDATA[<b>Standort:</b>]]></target>
</trans-unit>
<trans-unit id="frontend.locationCountLabel">
<source><![CDATA[<b>Locations</b>]]></source>
<target><![CDATA[Standorte]]></target>
</trans-unit>
<trans-unit id="frontend.organisation" approved="yes">
<source><![CDATA[Organisation]]></source>
<target><![CDATA[Organisation]]></target>
......@@ -470,6 +474,10 @@
<source><![CDATA[Qualification]]></source>
<target><![CDATA[Qualifikation]]></target>
</trans-unit>
<trans-unit id="frontend.remote" approved="yes">
<source><![CDATA[Remote]]></source>
<target><![CDATA[Remote]]></target>
</trans-unit>
<trans-unit id="frontend.task" approved="yes">
<source><![CDATA[Task]]></source>
<target><![CDATA[Aufgabe]]></target>
......@@ -478,10 +486,6 @@
<source><![CDATA[Vacancies worldwide]]></source>
<target><![CDATA[Offene Stellen weltweit]]></target>
</trans-unit>
<trans-unit id="frontend.remote" approved="yes">
<source><![CDATA[Remote]]></source>
<target><![CDATA[Remote]]></target>
</trans-unit>
</body>
</file>
</xliff>
</xliff>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2022-06-20T17:21:14Z">
<file source-language="en" datatype="plaintext" original="messages" date="2023-09-06T17:30:53Z">
<header>
<type>module</type>
<description>General language labels used in frontend and backend.</description>
......@@ -111,26 +111,41 @@
<trans-unit id="backend.selectRootPage">
<source><![CDATA[Please select one of the following pages:]]></source>
</trans-unit>
<trans-unit id="error.maxFileSizeMessage">
<source><![CDATA[The selected file exceeds the maximum file size]]></source>
<trans-unit id="configuration.jobFolderPath">
<source><![CDATA[Job Folder Path (Relative to fileadmin, defaults to "JobApplication")]]></source>
</trans-unit>
<trans-unit id="error.NoSuchArgumentException">
<source><![CDATA[Some file could not be uploaded. Is it too large?]]></source>
</trans-unit>
<trans-unit id="error.TypeConverterException.type">
<source><![CDATA[File extension is not allowed!]]></source>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.">
<source><![CDATA[Missing some file]]></source>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.certificate">
<source><![CDATA[Missing certificate file]]></source>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.coverLetter">
<source><![CDATA[Missing coverletter file]]></source>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.cv">
<source><![CDATA[Missing cv file]]></source>
</trans-unit>
<trans-unit id="error.TypeConverterException.missing.certificate">
<source><![CDATA[Missing certificate file]]></source>
<trans-unit id="error.TypeConverterException.type">
<source><![CDATA[File extension is not allowed!]]></source>
</trans-unit>
<trans-unit id="error.maxFileSizeMessage">
<source><![CDATA[The selected file exceeds the maximum file size]]></source>
</trans-unit>
<trans-unit id="frontend.CancelUpload">
<source><![CDATA[Stop upload]]></source>
</trans-unit>
<trans-unit id="frontend.DropFiles">
<source><![CDATA[Drop file here]]></source>
</trans-unit>
<trans-unit id="frontend.FileType">
<source><![CDATA[Filetype]]></source>
</trans-unit>
<trans-unit id="frontend.RemoveFile">
<source><![CDATA[Remove file]]></source>
</trans-unit>
<trans-unit id="frontend.allVacancies">
<source><![CDATA[All vacancies]]></source>
......@@ -142,8 +157,8 @@
<source><![CDATA[Apply as]]></source>
</trans-unit>
<trans-unit id="frontend.apply.applyAsNow">
<source><![CDATA[Apply now as %s]]></source>
</trans-unit>
<source><![CDATA[Apply now as %s]]></source>
</trans-unit>
<trans-unit id="frontend.apply.birthDate">
<source><![CDATA[Birth date *]]></source>
</trans-unit>
......@@ -225,6 +240,9 @@
<trans-unit id="frontend.apply.recommend">
<source><![CDATA[Recommend job]]></source>
</trans-unit>
<trans-unit id="frontend.apply.relatedJobs">
<source><![CDATA[Related Jobs]]></source>
</trans-unit>
<trans-unit id="frontend.apply.salutation">
<source><![CDATA[Salutation]]></source>
</trans-unit>
......@@ -234,9 +252,6 @@
<trans-unit id="frontend.apply.thank_you">
<source><![CDATA[Thank you for your application!]]></source>
</trans-unit>
<trans-unit id="frontend.apply.relatedJobs">
<source><![CDATA[Related Jobs]]></source>
</trans-unit>
<trans-unit id="frontend.apply.title">
<source><![CDATA[Job title *]]></source>
</trans-unit>
......@@ -258,6 +273,15 @@
<trans-unit id="frontend.attachment">
<source><![CDATA[Download job advertisement]]></source>
</trans-unit>
<trans-unit id="frontend.certificateUplodadButton">
<source><![CDATA[Upload certificate]]></source>
</trans-unit>
<trans-unit id="frontend.coverLetterUplodadButton">
<source><![CDATA[Upload coverletter]]></source>
</trans-unit>
<trans-unit id="frontend.cvUplodadButton">
<source><![CDATA[Upload cv]]></source>
</trans-unit>
<trans-unit id="frontend.department">
<source><![CDATA[Department]]></source>
</trans-unit>
......@@ -342,12 +366,12 @@
<trans-unit id="frontend.location">
<source><![CDATA[Location]]></source>
</trans-unit>
<trans-unit id="frontend.locationLabel">
<source><![CDATA[<b>Location:</b>]]></source>
</trans-unit>
<trans-unit id="frontend.locationCountLabel">
<source><![CDATA[Locations]]></source>
</trans-unit>
<trans-unit id="frontend.locationLabel">
<source><![CDATA[<b>Location:</b>]]></source>
</trans-unit>
<trans-unit id="frontend.organisation">
<source><![CDATA[Organisation]]></source>
</trans-unit>
......@@ -357,36 +381,15 @@
<trans-unit id="frontend.qualification">
<source><![CDATA[Qualification]]></source>
</trans-unit>
<trans-unit id="frontend.remote">
<source><![CDATA[Remote]]></source>
</trans-unit>
<trans-unit id="frontend.task">
<source><![CDATA[Task]]></source>
</trans-unit>
<trans-unit id="frontend.teaserHeadline">
<source><![CDATA[Vacancies worldwide]]></source>
</trans-unit>
<trans-unit id="frontend.DropFiles">
<source><![CDATA[Drop file here]]></source>
</trans-unit>
<trans-unit id="frontend.CancelUpload">
<source><![CDATA[Stop upload]]></source>
</trans-unit>
<trans-unit id="frontend.RemoveFile">
<source><![CDATA[Remove file]]></source>
</trans-unit>
<trans-unit id="frontend.FileType">
<source><![CDATA[Filetype]]></source>
</trans-unit>
<trans-unit id="frontend.coverLetterUplodadButton">
<source><![CDATA[Upload coverletter]]></source>
</trans-unit>
<trans-unit id="frontend.cvUplodadButton">
<source><![CDATA[Upload cv]]></source>
</trans-unit>
<trans-unit id="frontend.certificateUplodadButton">
<source><![CDATA[Upload certificate]]></source>
</trans-unit>
<trans-unit id="frontend.remote">
<source><![CDATA[Remote]]></source>
</trans-unit>
</body>
</file>
</xliff>
</xliff>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" target-language="zh" datatype="plaintext" original="messages" date="2022-06-20T17:21:14Z">
<file source-language="en" target-language="zh" datatype="plaintext" original="messages" date="2023-09-06T17:30:53Z">
<header>
<type>module</type>
<description>General language labels used in frontend and backend.</description>
......@@ -239,4 +239,4 @@
</trans-unit>
</body>
</file>
</xliff>
</xliff>
\ No newline at end of file
......@@ -2,15 +2,22 @@
- Dropped TYPO3 9 support
- Dropped php 7.3 support
- Dropped city, street, zip and hide_in_frontend fields from the contact table. There is no upgrade wizard. The fields were not used inside the main template/code since some time. The latter one was depcrated since a while. Adjust your local template to use the company fields instead.
- Job location field is deprecated, use different Companies instead; job.location is unused in default templates/settings
- Dropped city, street, zip and hide_in_frontend fields from the contact table. There is no upgrade wizard. The fields
were not used inside the main template/code since some time. The latter one was depcrated since a while. Adjust your
local template to use the company fields instead.
- Job location field is deprecated, use different Companies instead; job.location is unused in default
templates/settings
- Dropped support for sg_seo < 6.0
- Dropped support for sg_mail < 8.0
The handling of sorting inside plugins might have changed. Up until this release there was an extension setting, which disabled
manual sorting by default and made order by title default, while the actual chosen plugin option was using manual sorting.
In effect the default sorting was always by title. We removed the option to disable manual sorting, and switched the values
inside the plugin settings. This way the default still is sorting by title, but with clearer intend. If you want manual sorting,
The handling of sorting inside plugins might have changed. Up until this release there was an extension setting, which
disabled
manual sorting by default and made order by title default, while the actual chosen plugin option was using manual
sorting.
In effect the default sorting was always by title. We removed the option to disable manual sorting, and switched the
values
inside the plugin settings. This way the default still is sorting by title, but with clearer intend. If you want manual
sorting,
you will need to edit your Plugins.
## Version 4 Breaking Changes
......
......@@ -13,7 +13,7 @@
"require": {
"typo3/cms-core": "^10.4.0 || ^11.5.0",
"sgalinski/sg-mail": ">=8.0.0",
"sgalinski/sg-ajax": ">=4.0.0",
"sgalinski/sg-ajax": ">=4.0.0",
"sgalinski/sg-seo": ">=6.0.0"
},
"replace": {
......
# cat=general; type=string; label=LLL:EXT:sg_jobs/Resources/Private/Language/locallang.xlf:configuration.jobFolderPath
jobFolderPath = JobApplication
<?php
defined('TYPO3') or die();
/***************************************************************
* 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!
***************************************************************/
call_user_func(
static function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(
......
<?php
defined('TYPO3') or die();
/***************************************************************
* 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!
***************************************************************/
call_user_func(
static function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages(
......@@ -57,7 +32,7 @@ call_user_func(
],
[
'access' => 'user,group',
'iconIdentifier' => 'extension-sg_forms-module',
'iconIdentifier' => 'extension-sg_jobs-module',
'labels' => 'LLL:EXT:sg_jobs/Resources/Private/Language/locallang_backend.xlf',
]
);
......
......@@ -57,7 +57,7 @@ CREATE TABLE tx_sgjobs_domain_model_contact (
last_name varchar(255) DEFAULT '' NOT NULL,
email varchar(255) DEFAULT '' NOT NULL,
phone varchar(255) DEFAULT '' NOT NULL,
image int(11) unsigned DEFAULT '0',
image int(11) unsigned DEFAULT '0'
);
CREATE TABLE tx_sgjobs_domain_model_job_application (
......
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