sgalinski/sg-jobs

sgalinski Jobs 扩展 - 管理和显示您的职位招聘

安装: 0

依赖项: 0

建议者: 0

安全: 0

类型:typo3-cms-extension

6.1.12 2024-07-18 09:53 UTC

This package is not auto-updated.

Last update: 2024-09-16 18:45:22 UTC


README

许可: GNU GPL,版本 2

仓库: https://gitlab.sgalinski.de/typo3/sg_jobs

请在此处报告错误: https://gitlab.sgalinski.de/typo3/sg_jobs

关于

此扩展为 TYPO3 安装提供职位申请功能。

功能

  • 创建职位,包括相关细节,如公司和个人联系信息
  • 申请创建的职位
  • 申请包括文件上传
  • 每个申请都以 CSV 格式方便保存,包括上传的文件
  • 提交申请时发送邮件通知
  • 为 TYPO3 9 路由增强器提供 JobTitleMapper

集成

需要手动包含 Typoscript 文件。

plugin.tx_sgjobs {
	settings {
		allowedFileExtensions - allowed file extensions for the uploads (default pdf)
		allowedMimeTypes - allowed mime types for the uploads (default application/pdf)
	}
}

上传文件大小

默认情况下,上传文件的最大大小为 5MB/5000kB。您可以在 constants.ts 配置文件中更改此限制

settings {
    .....
    # cat=plugin.tx_sgjobs/other; type=string; label=Allowed maximum file size for uploads in kB
    allowedMaxFileSize = 5000
}

后端模块

后端模块位于 WEB 部分,名称为 职位招聘

您可以通过点击 新建职位招聘 按钮创建新的职位招聘。

设置联系电子邮件

当用户申请职位招聘时,将会发送一封电子邮件。这封电子邮件的地址来自分配给职位的 联系人,如果没有设置联系人,则从所选位置选择电子邮件地址。

只需提供联系记录的 uid,则每个没有联系人的职位都将使用所需的联系人。

设置职位列表插件记录页面 ID

您需要设置存储所有职位招聘、联系人和位置的页面(或 sys 文件夹)的 ID。为此,您可以在插件设置中选择页面/文件夹作为记录存储页面。

职位表单页面

当在页面上插入职位列表插件时,请确保选择包含申请表单的页面,在插件 -> 插件选项 -> 包含申请表单的页面中选择

自动电子邮件消息

扩展使用 sg_mail 来配置电子邮件模板。

.htaccess

包含申请文件夹的文件夹应通过 .htaccess 文件阻止外部访问。示例

RedirectMatch 403 ^/fileadmin/JobApplication/.*$

在 TYPO3 9 中实现职位名称映射

要启用 TYPO3 9 中的职位名称映射,您需要将此路由增强器配置添加到您的 config.yaml。

routeEnhancers:
    SgJobApplication:
        type: Extbase
        extension: SgJobs
        plugin: JobApplication
        routes:
            -   routePath: '/job/applyform/{job_title}'
                _controller: 'Joblist::applyForm'
                _arguments:
                    job_title: jobId
            -   routePath: '/job/apply'
                _controller: 'Joblist::apply'
        defaultController: 'Joblist::applyForm'
        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

此配置将使用 JobTitleMapper 将职位名称映射到职位记录。routePath 表示可说话的 URL 部分,其中 {job_title} 是职位名称的占位符。JobTitleMapper 通过方面分配给 job_title 占位符,并负责职位名称及其对应职位 ID 的编码和解码。

从版本 1 迁移到版本 2

如果您从 sg_jobs 版本 1 更新,则需要执行升级向导以迁移旧的区域字段。为此,请访问安装工具并单击升级向导。检查职位升级向导并执行它。此向导将迁移您的区域数据到部门记录。

此外,请注意有关区域 -> 部门迁移的 Fluid 模板更改,并相应地更改模板中变量的区域出现。

此版本还引入了表的正确排除字段配置,因此请检查后端用户和后端用户组权限,并相应地进行调整。

从版本 3.2 迁移到版本 3.3

这是一个纯粹可选的步骤!

新添加了 path_segment 字段以确保使用正确的 URL。为了使用它,请将以下代码添加到您的路由配置文件中。

此外,前往列表模块,在 TYPO3 后端打开您的作业目录。在点击作业表以将其展开到仅表视图后,在字段列表中选择 path_segment 字段。现在您将在 path_segment 标题上方看到一个编辑图标。点击它,为所有作业生成一个新的 URL。

    SgJobApplication:
        type: Extbase
        extension: SgJobs
        plugin: JobApplication
        routes:
            -   routePath: '/{localizedSegment}/{jobTitle}'
                _controller: 'Joblist::applyForm'
                _arguments: { 'jobTitle': jobId }
            -   routePath: '/{localizedSegment}'
                _controller: 'Joblist::apply'
        defaultController: 'Joblist::applyForm'
        # The following issue prevents us from using this code. This patch is not good enough to use it yet as
        # slashes are not converted and this causes to regex mismatches in the routing environment.
        # https://review.typo3.org/c/Packages/TYPO3.CMS/+/61044
        # aspects:
        #     jobTitle:
        #         type: PersistedPatternMapper
        #         tableName: tx_sgjobs_domain_model_job
        #         routeFieldPattern: '-(?P<uid>\d+)$'
        #         routeFieldResult: '{title}-{uid}'
        aspects:
            jobTitle:
                type: PersistedAliasMapper
                tableName: tx_sgjobs_domain_model_job
                routeFieldName: path_segment
            localizedSegment:
                type: LocaleModifier
                default: 'apply'
                localeMap:
                    -   locale: 'de_DE.*'
                        value: 'bewerbung'
    SgJobList:
        type: Extbase
        extension: SgJobs
        plugin: Joblist
        routes:
            -   routePath: '/job/{jobTitle}'
                _controller: 'Joblist::index'
                _arguments: { 'jobTitle': jobId }
        defaultController: 'Joblist::index'
        aspects:
            jobTitle:
                type: PersistedAliasMapper
                tableName: tx_sgjobs_domain_model_job
                routeFieldName: path_segment