sypets / cal2calendarize
将cal插件迁移到calendarize
Requires
- typo3/cms-core: ^9.5.0 || ^10.4.0
- typo3/cms-extbase: ^9.5.0 || ^10.4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18.6
- jangregor/phpstan-prophecy: ^0.8.1
- phpstan/phpstan: ^0.12.64
This package is auto-updated.
Last update: 2024-08-30 01:23:33 UTC
README
从cal迁移插件到calendarize。
!!! 重要:cal事件和类别关系已在calendarize升级向导中处理。本扩展处理向导未处理的一些事情,例如插件迁移。
!!! 警告:这是插件迁移的初步尝试,它大大简化了迁移过程,并未考虑所有配置选项。插件迁移不可逆。使用时请自担风险。在生产环境中使用前请测试。请备份。
提示:有一个名为“cal2calendarize”的后端模块,可以在迁移后列出和可视化存在问题的迁移插件。目前,仅列出了几个问题,例如缺少detailPid和缺少storagePid。查看扩展配置以获取选项。
已知问题
- 仅考虑flexform(以及tt_content.pages和递归),不考虑flexform和TypoScript中的TypoScript。
- 无法完全映射视图(switchableControllerActions)
- cal有更多类别模式,而calendarize只有使用类别或不使用类别
- 并非所有配置都考虑并迁移
- 在cal中,可以选择“日历”。这被忽略。
- 在cal中,类别可以在FlexFrom 和 标签“类别”中选择。对于迁移,我们忽略标签中设置的类别。我们只考虑flexform中选择的类别。
用法
要运行控制台命令,使用没有Composer的安装设置
php typo3/sysext/core/bin/typo3
或与Composer一起
php vendor/bin/typo3
通常,用法是
php vendor/bin/typo3 cal2calendarize:migrateCalPlugins [options] [uid]
选项和uid参数是可选的。
显示帮助
php vendor/bin/typo3 cal2calendarize:migrateCalPlugins -h
模拟运行:显示将要迁移的内容
php vendor/bin/typo3 cal2calendarize:migrateCalPlugins --dry-run
迁移所有(增加详细程度)
php vendor/bin/typo3 cal2calendarize:migrateCalPlugins -vvv
抑制确认(不要求确认)
php vendor/bin/typo3 cal2calendarize:migrateCalPlugins -n
迁移所有,详细,不确认(使用所有动作,描述见下文)
php vendor/bin/typo3 cal2calendarize:migrateCalPlugins -v -n --all-actions
仅迁移tt_content中的uid=13221的一个记录(例如用于测试)
php vendor/bin/typo3 cal2calendarize:migrateCalPlugins 13221
命令选项
--all-actions
这将尝试将所有现有的Controller操作迁移到calendarize中相应的Controller操作,而不仅仅是calendarize中定义的Controller操作组合。结果是可能会激活更多操作,但在编辑插件时您会看到警告,您应手动修复并将它们转换为现有的控制器操作。这是一个快速而粗略的解决方案,可能直接在迁移后减少问题,但长远来看可能会产生更多问题。
映射
在这里我们不使用配置设置的完整名称。
- TS:TypoScript
- flex:Flexform
allowedViews的映射
在cal中,可以组合任何允许的视图。在calendarize中,我们有一组定义的可切换控制器操作(例如“list”,“detail”,“list+detail”,但不能是“month+detail”)。
对于list、detail和list+detail,我们得到精确匹配。对于年、月等,没有与detail结合的视图。建议为detail视图创建单独的页面。
我们尽可能进行映射,请参阅源代码。有关选项,请参阅--all-actions。
类别模式的映射
在cal中,有几个类别模式
- 类别模式=0(显示所有)
- 类别模式=1(精确):精确匹配
- 类别模式=2(无):显示不包含所选任何一个类别的所有事件
- 类别模式=3(任意):显示至少包含一个所选类别的所有事件
- 类别模式=4(最小):仅显示包含(至少)插件中所有所选类别的所有事件。
我们无法将其完全映射到calendarize:在calendarize中,只有一个类别模式。
模式0和3可以相当好地映射。对于其他模式,我们使用最合适的模式 - 要么使用现有的类别,要么不使用。
类别映射
cal中的类别可以在flexform和“类别”标签中定义。我们只考虑flexform。但现有的类别关系将保持不变。
由于类别模式(不完整)的映射以及cal中设置类别的方式,类别的行为可能与cal中的行为有很大不同。
起始时间/结束时间映射
起始时间
- cal:flexform:view.list.starttime
- cal:TypoScript:plugin.tx_cal_controller.view.list.event.starttime
- calendarize
- useRelativeDate=1:settings.overrideStartRelative
- useRelativeDate=0:settings.overrideStartdate
这可以在cal的三个地方定义:在flexform view.list.starttime、在“TypoScript”标签中、在Flexform中或在TypoScript中。结束时间
- cal:flexform:view.list.endtime
- cal:TypoScript:plugin.tx_cal_controller.view.list.event.endtime
- calendarize
- useRelativeDate=1:settings.overrideEndRelative
- useRelativeDate=0:settings.overrideEnddate
cal
view.list.starttime=2011-04-01 settings.overrideStartdate = 00:00 1-4-2011
cal配置
可以是以下之一
- flexform
- 在flexform中的TypoScript
- TypoScript
我们目前只考虑flexform。
calendarize配置
可以是以下之一
- flexform
- 配置记录
- TypoScript
示例
“旧”cal Flexform
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <T3FlexForms> <data> <sheet index="sDEF"> <language index="lDEF"> <field index="allowedViews"> <value index="vDEF">list,search_all,ics~icslist~single_ics,event</value> </field> <field index="calendarName"> <value index="vDEF">My Calendar</value> </field> <field index="subscription"> <value index="vDEF">0</value> </field> <field index="weekStartDay"> <value index="vDEF"></value> </field> <field index="calendarDistance"> <value index="vDEF">50</value> </field> <field index="subscribeWithCaptcha"> <value index="vDEF">0</value> </field> </language> </sheet> <sheet index="s_Cat"> <language index="lDEF"> <field index="calendarMode"> <value index="vDEF">0</value> </field> <field index="calendarSelection"> <value index="vDEF"></value> </field> <field index="categoryMode"> <value index="vDEF">3</value> </field> <field index="categorySelection"> <value index="vDEF">359</value> </field> </language> </sheet> <sheet index="s_Year_View"> <language index="lDEF"> <field index="yearViewPid"> <value index="vDEF"></value> </field> </language> </sheet> <sheet index="s_Month_View"> <language index="lDEF"> <field index="monthViewPid"> <value index="vDEF"></value> </field> <field index="monthShowListView"> <value index="vDEF">0</value> </field> <field index="monthMakeMiniCal"> <value index="vDEF">0</value> </field> </language> </sheet> <sheet index="s_Week_View"> <language index="lDEF"> <field index="weekViewPid"> <value index="vDEF"></value> </field> </language> </sheet> <sheet index="s_Day_View"> <language index="lDEF"> <field index="dayViewPid"> <value index="vDEF"></value> </field> <field index="dayStart"> <value index="vDEF">0700</value> </field> <field index="dayEnd"> <value index="vDEF">2300</value> </field> <field index="gridLength"> <value index="vDEF">15</value> </field> </language> </sheet> <sheet index="s_List_View"> <language index="lDEF"> <field index="listViewPid"> <value index="vDEF">53864</value> </field> <field index="starttime"> <value index="vDEF">cal:weekstart</value> </field> <field index="endtime"> <value index="vDEF">+1 year</value> </field> <field index="maxEvents"> <value index="vDEF"></value> </field> <field index="maxRecurringEvents"> <value index="vDEF"></value> </field> <field index="usePageBrowser"> <value index="vDEF"></value> </field> <field index="recordsPerPage"> <value index="vDEF"></value> </field> <field index="pagesCount"> <value index="vDEF"></value> </field> </language> </sheet> <sheet index="s_Event_View"> <language index="lDEF"> <field index="eventViewPid"> <value index="vDEF">61579</value> </field> <field index="isPreview"> <value index="vDEF">1</value> </field> </language> </sheet> <sheet index="s_Ics_View"> <language index="lDEF"> <field index="showIcsLinks"> <value index="vDEF">0</value> </field> </language> </sheet> <sheet index="s_Other_View"> <language index="lDEF"> <field index="showSearch"> <value index="vDEF">0</value> </field> <field index="showJumps"> <value index="vDEF">0</value> </field> <field index="showCalendarSelection"> <value index="vDEF">0</value> </field> <field index="showCategorySelection"> <value index="vDEF">1</value> </field> <field index="showTomorrowEvents"> <value index="vDEF">0</value> </field> <field index="showLogin"> <value index="vDEF">0</value> </field> </language> </sheet> <sheet index="s_TS_View"> <language index="lDEF"> <field index="myTS"> <value index="vDEF"></value> </field> </language> </sheet> </data> </T3FlexForms>
calendarize Flexform
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <T3FlexForms> <data> <sheet index="main"> <language index="lDEF"> <field index="settings.pluginConfiguration"> <value index="vDEF"></value> </field> <field index="settings.useRelativeDate"> <value index="vDEF">0</value> </field> <field index="settings.limit"> <value index="vDEF"></value> </field> <field index="settings.hidePagination"> <value index="vDEF">0</value> </field> <field index="settings.overrideStartdate"> <value index="vDEF"></value> </field> <field index="settings.overrideEnddate"> <value index="vDEF"></value> </field> <field index="switchableControllerActions"> <value index="vDEF">Calendar->list;Calendar->detail</value> </field> <field index="settings.overrideStartRelative"> <value index="vDEF"></value> </field> <field index="settings.overrideEndRelative"> <value index="vDEF"></value> </field> </language> </sheet> <sheet index="general"> <language index="lDEF"> <field index="settings.configuration"> <value index="vDEF">Event</value> </field> <field index="settings.sortBy"> <value index="vDEF">start</value> </field> <field index="settings.sorting"> <value index="vDEF">ASC</value> </field> <field index="persistence.storagePid"> <value index="vDEF"></value> </field> <field index="persistence.recursive"> <value index="vDEF"></value> </field> </language> </sheet> <sheet index="pages"> <language index="lDEF"> <field index="settings.detailPid"> <value index="vDEF"></value> </field> <field index="settings.listPid"> <value index="vDEF"></value> </field> <field index="settings.yearPid"> <value index="vDEF"></value> </field> <field index="settings.quarterPid"> <value index="vDEF"></value> </field> <field index="settings.monthPid"> <value index="vDEF"></value> </field> <field index="settings.weekPid"> <value index="vDEF"></value> </field> <field index="settings.dayPid"> <value index="vDEF"></value> </field> <field index="settings.bookingPid"> <value index="vDEF"></value> </field> </language> </sheet> </data> </T3FlexForms>