cpsit / typo3-personio-jobs
TYPO3 CMS 扩展,用于集成来自 Personio 招聘 API 的工作
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-json: *
- ext-mbstring: *
- cuyz/valinor: ^1.3
- eliashaeussler/valinor-xml: ^1.0
- psr/event-dispatcher: ^1.0
- psr/http-message: ^1.0 || ^2.0
- symfony/console: ^5.4 || ^6.0 || ^7.0
- typo3/cms-core: ^11.5 || ^12.4 || ~13.0.0
- typo3/cms-extbase: ^11.5 || ^12.4 || ~13.0.0
- typo3/cms-frontend: ^11.5 || ^12.4 || ~13.0.0
Requires (Dev)
- armin/editorconfig-cli: ^1.5 || ^2.0
- brotkrueml/schema: ^2.7 || ^3.0
- ergebnis/composer-normalize: ^2.29
- friendsofphp/php-cs-fixer: ^3.57
- helmich/typo3-typoscript-lint: ^3.0
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpunit/phpcov: ^8.2 || ^9.0 || ^10.0
- saschaegerer/phpstan-typo3: ^1.8
- ssch/typo3-rector: ^2.0
- typo3/coding-standards: ^0.7.0 || ^0.8.0
- typo3/testing-framework: ^7.0.2 || ^8.0.9
Suggests
- brotkrueml/schema: Include JSON schema on job detail pages (^2.7 || ^3.0)
Conflicts
- cuyz/valinor: 1.8.0
This package is auto-updated.
Last update: 2024-09-17 14:18:34 UTC
README
TYPO3 扩展 personio_jobs
📦 Packagist | 🐥 TYPO3 扩展仓库 | 💾 仓库 | 🐛 问题跟踪器
一个TYPO3 CMS 扩展,它将Personio招聘API中的工作集成到TYPO3中。它提供了一个控制台命令来将工作导入到现代类型化的值对象中。此外,还提供了列表和详细视图的插件,并预配置了对Bootstrap v5组件的支持。
🚀 功能
- 控制台命令,用于从Personio招聘API导入工作
- 导入过程中使用现代类型化的值对象
- 列表和详细视图的插件
- 可选支持使用 EXT:schema 在工作详细页面上使用JSON Schema
- 兼容TYPO3 11.5 LTS、12.4 LTS 和 13.0
🔥 安装
Composer
composer require cpsit/typo3-personio-jobs
💡 如果您想使用 JSON schema 功能,您还必须要求 schema
扩展
composer require brotkrueml/schema
TER
或者,您也可以通过 TYPO3 扩展仓库 (TER) 下载扩展。
第一步配置
安装后,请确保在您的根模板中包含 EXT:personio_jobs/Configuration/TypoScript
中的TypoScript设置。
⚡ 使用
插件
该扩展提供了两个插件
命令行使用
personio-jobs:import
typo3 personio-jobs:import <storage-pid> [options]
以下命令参数可用
💡 使用 --verbose
或 -v
增加详细程度,以显示所有更改,即使是跳过的未更改工作。
代码使用
Personio工作导入过程也可以直接在PHP中触发。为此,存在两个服务
PersonioApiService
提供从Personio API获取工作并作为强类型值对象返回的主功能Job
模型。请注意,这些工作尚未持久化。相反,它们仅代表当前Personio工作源作为强类型值对象。PersonioImportService
提供实际持久化导入工作的一些附加功能。在底层,前面提到的PersonioApiService
被调用以获取工作,然后是它们的实际持久化。对于导入过程,有一组导入设置可用int $storagePid
:新或更新的工作要持久化的页面ID。bool $updateExistingJobs = true
:定义是否更新已导入但在同时期间更改的工作。bool $deleteOrphans = true
:定义是否删除在Personio上不再可用的工作。bool $forceImport = false
:选择是否重新导入现有未更改的工作。bool $dryRun = false
:不执行任何持久化操作,仅获取和验证工作。
从Personio API获取工作
use CPSIT\Typo3PersonioJobs\Service\PersonioApiService; use TYPO3\CMS\Core\Utility\GeneralUtility; $apiService = GeneralUtility::makeInstance(PersonioApiService::class); $jobs = $apiService->getJobs(); foreach ($jobs as $job) { echo 'Successfully fetched job: ' . $job->getName() . PHP_EOL; }
从Personio API导入工作
use CPSIT\Typo3PersonioJobs\Service\PersonioImportService; use TYPO3\CMS\Core\Utility\GeneralUtility; $importService = GeneralUtility::makeInstance(PersonioImportService::class); $result = $importService->import(); foreach ($result->getNewJobs() as $newJob) { echo 'Imported new job: ' . $newJob->getName() . PHP_EOL; } foreach ($result->getUpdatedJobs() as $updatedJob) { echo 'Updated job: ' . $updatedJob->getName() . PHP_EOL; } foreach ($result->getRemovedJobs() as $removedJob) { echo 'Removed job: ' . $removedJob->getName() . PHP_EOL; } foreach ($result->getSkippedJobs() as $skippedJob) { echo 'Skipped job: ' . $skippedJob->getName() . PHP_EOL; }
JSON模式
结合EXT:schema,在单个工作详情页面上包含了一个JSON模式。它以类型JobPosting
渲染,并包含一些通用的工作属性。
⚠️ 要使用此功能,必须安装schema
扩展。请在上面的安装部分中查看更多信息。
📂 配置
TypoScript
以下TypoScript常量可用
扩展配置
以下扩展配置选项可用
路由配置
在每次导入时,都会生成一个别名。别名可以用于工作详情页面的高级路由配置。
示例
# config/sites/<identifier>/config.yaml routeEnhancers: PersonioJobDetail: type: Extbase limitToPages: # Replace with the actual detail page id - 10 extension: PersonioJobs plugin: Show routes: - routePath: '/job/{job_title}' _controller: 'Job::show' _arguments: job_title: job defaultController: 'Job::show' aspects: job_title: type: PersistedAliasMapper tableName: tx_personiojobs_domain_model_job routeFieldName: slug
⏰ 事件
可以使用PSR-14事件来修改工作和工作模式。以下事件可用
🚧 迁移
0.4.x → 0.5.x
解耦导入过程
导入过程已移动到独立的服务类。
- 所有导入操作现在都由新的
PersonioImportService
类执行。 PersonioService
已被重命名为PersonioApiService
。请将此类所有用法替换为新类名。- 导入结果现在通过新
ImportResult
类的对象正确显示。 AfterJobsImportedEvent
中的公共方法已更改,以匹配新的ImportResult
类。请使用新的公共方法AfterJobsImportedEvent::getImportResult()
代替之前可用的方法。
0.3.x → 0.4.x
最终确定SchemaFactory
SchemaFactory
现在是最终的,不能再扩展。
- 删除从
SchemaFactory
扩展的类。 - 将
SchemaFactory
的自定义修改替换为EnrichJobPostingSchemaEvent
PSR-14事件的监听器。
🧑💻 贡献
请参阅CONTRIBUTING.md
。
💎 致谢
作为所有分发图标的一部分,Personio标志是Personio SE & Co. KG的商标。
⭐ 许可证
本项目根据GNU通用公共许可证2.0(或更新版)许可。