porthd / webhelp
使用 viewhelpers 构建简单的 Webcomponents,例如 icalendar
Requires
- php: ~7.4.0 || ~8.0.0
- typo3/cms-core: ^10.4.0 || ^11.5.0
Replaces
- typo3-ter/webhelp: 11.0.0
This package is auto-updated.
Last update: 2024-09-09 15:00:49 UTC
README
最后更改
通知:该扩展目前仍处于实验阶段。Webcomponents 还不够成熟。我很乐意接受改进建议。如果您有自己的 WebComponent 代码,我很乐意将其包含在这个扩展中。邮箱:info@mobger.de
扩展的目标是什么?
它为集成者提供 viewhelpers,从而允许使用 WebComponents。Webcomponents 适用于:
- 提供地址数据作为可下载的 VCard
- 提供事件作为可下载的 ICalendar 文件
- 提供联系人详细信息作为可下载的 VCard 文件
- 容易集成弹出窗口,例如辅助测试的示例
- ....
安装
通过下载或 composer 安装扩展。然后激活它们。TypoScript 不需要此服务。
Viewhelper
目前定义了两个 viewhelper。您可以在 Fluid 模板中使用前缀 webhelp:
。
EasyIcalendar 用于 ICS 文件
<webhelp: easyIcalendar>
允许创建 ICS 文件。您可以单独传递必要的信息,作为 JSON 字符串或作为 fluid 数组/模型。
Fluid 中的示例代码
<!-- TYPO3-Fluidtemplate:-->
<!-- ==================== -->
<div>
<webhelp:easyICalendar
description="Meine Beschreibung2"
location="Mein Ort2"
organizer="IchSchauWeg"
contact="info@mobger.de"
summary="Test2"
url="Irgendwo im Universum2"
dateStart="1995-12-17T03:24:00"
dateEnd="1995-12-17T05:24:00"
fileName="Klaus2.ics"
>
Mein Event (Limits)
</webhelp:easyICalendar>
Mein Event (EndDate)
</div>
<!-- Output (Frontend-HTML / Firefox):-->
<!-- ==================== -->
<div>
<easy-icalendar eventJson="{"description":"Meine Beschreibung2","location":"Mein Ort2","summary":"Test2","uid":"Irgendwo im Universum2","url":"Irgendwo im Universum2","dateStart":"19951217T022400","dateEnd":"19951217T042400","duration":"","organizer":"IchSchauWeg","contact":"info@mobger.de","fileName":""}">
Mein Event (Limits)
</easy-icalendar>
Mein Event (EndDate)
</div>
<!-- TYPO3-Fluidtemplate:-->
<!-- ==================== -->
<div>
<webhelp:easyICalendar
description="Meine Beschreibung"
location="Mein Ort"
organizer="IchSchauWeg"
contact="info@mobger.de"
summary="Test"
url="Irgendwo im Universum"
dateStart="1995-12-17T03:24:00"
dateEnd=""
duration="PT12H"
fileName="Klaus.ics"
>
Mein Event (Duration)
</webhelp:easyICalendar>
</div>
<!-- Output (Frontend-HTML / Firefox):-->
<!-- ==================== -->
<div>
<easy-icalendar eventJson="{"description":"Meine Beschreibung","location":"Mein Ort","summary":"Test","uid":"Irgendwo im Universum","url":"Irgendwo im Universum","dateStart":"19951217T022400","dateEnd":"","duration":"PT12H","organizer":"IchSchauWeg","contact":"info@mobger.de","fileName":""}">
Mein Event (Duration)
</easy-icalendar>
</div>
<!-- TYPO3-Fluidtemplate:-->
<!-- ==================== -->
<div>
<webhelp:easyICalendar
fluidData="{description:'Meine Beschreibung2',
location:'Mein Ort2',
summary:'Test2',
url:'Irgendwo im Universum2',
dateStart:'1995-12-17T03:24:00',
dateEnd:'1995-12-17T05:24:00',
duration:'',
organizer:'IchSchauWeg',
fileName:'Klaus2.ics',
contact:'info@mobger.de'}"
>
Mein Event (FluidData)
</webhelp:easyICalendar>
</div>
<!-- Output (Frontend-HTML / Firefox):-->
<!-- ==================== -->
<div>
<easy-icalendar eventJson="{"description":"Meine Beschreibung2","location":"Mein Ort2","summary":"Test2","uid":"Irgendwo im Universum2","url":"Irgendwo im Universum2","dateStart":"19951217T022400","dateEnd":"19951217T042400","duration":"","organizer":"IchSchauWeg","contact":"info@mobger.de","fileName":""}">
Mein Event (FluidData)
</easy-icalendar>
</div>
<!-- TYPO3-Fluidtemplate:-->
<!-- ==================== -->
<div>
<!-- prohibit Fluid from building an array from JSON -->
<f:alias map="{jsonOneFluid: '{\" description\":\"Meine Beschreibung2\",\"location\":\"Mein Ort2\",\"summary\":\"Test2\",',
jsonTwoFluid :'\"url\":\"Irgendwo im Universum2\",\"dateStart\":\"1995-12-17T03:24:00\",\"dateEnd\":\"1995-12-17T05:24:00\",\"duration\":\"\",\"organizer\":\"IchSchauWeg\",\"fileName\":\"Klaus2.ics\",\"contact\":\"info@mobger.de\"}'}">
<webhelp:easyICalendar
jsonData="{jsonOneFluid}{jsonTwoFluid}"
>
Mein Event (JsonData)
</webhelp:easyICalendar>
</f:alias>
</div>
<!-- Output (Frontend-HTML / Firefox):-->
<!-- ==================== -->
<div>
<!-- prohibit Fluid from building an array from JSON -->
<easy-icalendar eventJson="{"description":"Test2","location":"Mein Ort2","summary":"Test2","uid":"Irgendwo im Universum2","url":"Irgendwo im Universum2","dateStart":"19951217T022400","dateEnd":"19951217T042400","duration":"","organizer":"IchSchauWeg","contact":"info@mobger.de","fileName":""}">
Mein Event (JsonData)
</easy-icalendar>
</div>
EasyVCard 用于 ICS 文件
<webhelp: easyVCard>
允许创建 ICS 文件。您可以单独传递必要的信息,作为 JSON 字符串或作为 fluid 数组/模型。用法与上面 <webhelp: easyIcalendar>
的用法相同。
Fluid 中的示例代码
<!-- example input (TYPO3-template)-->
<!-- ===================================== -->
<webhelp:easyVCard
n="Porth;Dieter;;Dr;"
fn="Dr. Dieter Porth"
adr="{first:';;Grünenstraße 23;Bremen;;28199;Germany'}"
adrtype="{first:'TYPE=home;LABEL=\"Grünenstraße 23\n28199 Bremen\nDeutschland\"'}"
email="info@mobger.de"
tel="{first: 'tel:049-421-51483548', second:'+49-160-99180688'}"
teltype="{first:'TYPE=home,voice',second:'TYPE=mobile,voice'}"
url="https://www.düddelei.de"
uid="https://www.mobger.de/"
role="TYPO3-Developer"
>
my Imprint (detailData needed)
</webhelp:easyVCard>
<!-- example output-->
<!-- ===============================-->
<easy-vcard eventJson="{"n":"Porth;Dieter;;Dr;","uid":"https:\/\/www.d\u00fcddelei.de","email":"info@mobger.de","fn":"Dr. Dieter Porth","geo":"","logo":"","note":"","org":"private","photo":"","role":"TYPO3-Developer","tz":"","url":"https:\/\/www.d\u00fcddelei.de","adr":[";TYPE=TYPE=home;LABEL=\"Gr\u00fcnenstra\u00dfe 23\\n28199 Bremen\\nDeutschland\":;;Gr\u00fcnenstra\u00dfe 23;Bremen;;28199;Germany"],"key":"","keytype":"","tel":[";MEDIATYPE=TYPE=mobile,voice:+49-160-99180688",";MEDIATYPE=TYPE=home,voice:tel:049-421-51483548"],"filename":""}">
my Imprint (detailData needed)
</easy-vcard>
EasyTextLogo 用于基于标志的弹出窗口
<webhelp: easyTextLogo>
预期一个(HTML)文本和标志的路径。如果缺少标志,则使用默认的停止标志。
Fluid 中的示例代码
<!-- TYPO3-Fluidtemplate:-->
<!-- ==================== -->
<div>
<webhelp:EasyTextLogo
value="Hallo Welt, morgen sind wir schon weiter. Heute stehen wir vor dem Abgrund; die Hungerkriege haben längst begonnen, wie die Corona-Maßnahmen in den Entwicklungsländern zeigen."
logopath="EXT:webhelp/Resources/Public/Icons/Cursor/DownloadCursor.svg"
/>
</div>
<!-- Output (Frontend-HTML / Firefox):-->
<!-- ==================== -->
<div>
<popup-info
value="Hallo Welt, morgen sind wir schon weiter. Heute stehen wir vor dem Abgrund; die Hungerkriege haben längst begonnen, wie die Corona-Maßnahmen in den Entwicklungsländern zeigen."
logopath="EXT:webhelp/Resources/Public/Icons/Cursor/DownloadCursor.svg"
my-text-json=""Hallo Welt, morgen sind wir schon weiter. Heute stehen wir vor dem Abgrund; die Hungerkriege haben l\u00e4ngst begonnen, wie die Corona-Ma\u00dfnahmen in den Entwicklungsl\u00e4ndern zeigen.""
my-logo="/typo3conf/ext/webhelp/Resources/Public/Icons/Cursor/DownloadCursor.svg">
</popup-info>
</div>
<!-- TYPO3-Fluidtemplate:-->
<!-- ---------------------->
<div>
<webhelp:EasyTextLogo
value="Hallo Welt, alles ist super; dann vieler Politiker, die +über Forschung und Technik reden, oder?"/>
</div>
<!--Output (Frontend-HTML / Firefox):-->
<!-- ==================== -->
<div>
<popup-info value="Hallo Welt, alles ist Super"
my-ext="Hallo Welt, alles ist Super"
my-logo="">
</popup-info>
</div>
<!-- TYPO3-Fluidtemplate:-->
<!-- ---------------------->
<webhelp:easyTextLogo>
<h1>Hallo Welt,</h1>
<div>Ohne Klimaschutzmaßnahmen muss bis 2050 die Menschheitsmasse auf 4G Menschen ausgedünnt werden, weil Öl und
Phosphate als Dünger fehlen. <br/> Ohne Klimaschutzmaßnahmen wird dank Verbot der Pfanzenschutzmitteln 2050 die
Menschheitsmasse durch Verhungern auf 3G Menschen ausgedünnt. Öl und Phosphate als Dünger fehlen auch dann, weil
die Rohstoffe in Elektroautos investiert wurden. <br> Heil dem Ökofaschismus!
</div>
</webhelp:easyTextLogo>
<!-- Output (Frontend-HTML / Firefox):-->
<!-- ==================== -->
<div>
<popup-info my-ext="&lt;h1&gt;Hallo Welt&lt;/h1&gt;&lt;div&gt;alles ist Super.&lt;/div&gt;"
my-logo="">
</popup-info>
</div>
开发您自己的 web components 吗?
Viewhelper
您可以编写和使用自己的 viewhelpers 和 JavaScript 代码。
JavaScript 和样式表扩展
使用扩展 webhelp
的常量编辑器,您可以在逗号分隔的列表中指定 JavaScript 和 CSS 文件的路径,这样 JavaScript 和样式表将通过中间件上传。