TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:14 +02:00
commit ff4622ba97
138 changed files with 9045 additions and 0 deletions
@@ -0,0 +1,8 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Module" />
<f:section name="Content">
<typo3-dashboard></typo3-dashboard>
</f:section>
</html>
@@ -0,0 +1,14 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget"/>
<f:section name="main">
<typo3-dashboard-bookmarks-widget
limit="{settings.limit}"
group="{f:if(condition: '{settings.group} != \'\'', then: settings.group)}"
></typo3-dashboard-bookmarks-widget>
</f:section>
<f:section name="footer">
<typo3-backend-bookmark-manager-button class="widget-cta">
<f:translate key="widget.bookmarks.manageBookmarks" domain="dashboard.widget_bookmarks" />
</typo3-backend-bookmark-manager-button>
</f:section>
</html>
@@ -0,0 +1,13 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget" />
<f:section name="main">
<div class="widget-chart">
<canvas></canvas>
</div>
</f:section>
<f:section name="footer">
<f:render partial="Widget/Button" arguments="{button: button}"/>
</f:section>
</html>
@@ -0,0 +1,13 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget"/>
<f:section name="main">
<f:if condition="{text}">
<f:translate id='{text}' default='{text}' />
</f:if>
</f:section>
<f:section name="footer">
<f:render partial="Widget/Button" arguments="{button: button}"/>
</f:section>
</html>
@@ -0,0 +1,66 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:be="http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers"
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget"/>
<f:section name="main">
<f:if condition="{items}">
<f:then>
<div class="widget-table-wrapper">
<table class="widget-table table table-striped table-hover">
<thead>
<tr>
<th colspan="2">{f:translate(key: 'widgets.latestBeLogins.column.user', domain: 'dashboard.messages')}</th>
<th class="col-time">{f:translate(key: 'widgets.latestBeLogins.column.time', domain: 'dashboard.messages')}</th>
</tr>
</thead>
<tbody>
<f:for each="{items}" as="item">
<tr>
<td class="col-avatar">
<be:avatar backendUser="{item.userId}" size="32" showIcon="true" />
</td>
<td class="col-username">
<f:if condition="{item.realName}">
<f:then>
<be:link.editRecord table="be_users" uid="{item.userId}" title="{f:translate(key: 'widgets.latestBeLogins.column.user.edit', domain: 'dashboard.messages')}" returnUrl="{f:be.uri(route: 'dashboard')}">{item.realName}</be:link.editRecord>
<f:if condition="{item.username}">
<div class="text-muted">({item.username})</div>
</f:if>
</f:then>
<f:else>
<be:link.editRecord table="be_users" uid="{item.userId}" title="{f:translate(key: 'widgets.latestBeLogins.column.user.edit', domain: 'dashboard.messages')}" returnUrl="{f:be.uri(route: 'dashboard')}">{f:if(condition: item.username, then: item.username, else: '{f:translate(key: \'widgets.latestBeLogins.column.user.notFound\', domain: \'dashboard.messages\')}')}</be:link.editRecord>
</f:else>
</f:if>
</td>
<td class="col-datetime">
{item.timestamp -> f:format.date(format: dateFormat)}
</td>
</tr>
</f:for>
</tbody>
</table>
</div>
</f:then>
<f:else>
<div class="callout callout-info">
<div class="callout-icon">
<span class="icon-emphasized">
<core:icon identifier="content-widget-list" />
</span>
</div>
<div class="callout-content">
<div class="callout-title">
{f:translate(key: 'widgets.latestBeLogins.empty', domain: 'dashboard.messages')}
</div>
</div>
</div>
</f:else>
</f:if>
</f:section>
<f:section name="footer">
<f:render partial="Widget/Button" arguments="{button: button}"/>
</f:section>
</html>
@@ -0,0 +1,122 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:be="http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers"
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget"/>
<f:section name="main">
<f:if condition="{latestPages}">
<f:then>
<div class="widget-table-wrapper">
<table class="widget-table table table-striped table-hover">
<thead>
<tr>
<th class="col-time">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.change')}</th>
<th colspan="2">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.user')}</th>
<th colspan="2">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.page')}</th>
<th class="col-control nowrap"><span class="visually-hidden">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.control')}</span></th>
</tr>
</thead>
<tbody>
<f:for each="{latestPages}" as="page">
<tr>
<td class="col-datetime">
{page.pageRecord.tstamp -> f:format.date(format: dateFormat)}<br/>
<span class="badge badge-notice">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.table.{page.history.tablename}')}</span>
</td>
<td class="col-avatar">
<be:avatar backendUser="{page.history.userid}" size="32" showIcon="true" />
</td>
<td class="col-username col-responsive">
<f:if condition="{page.realName}">
<f:then>
{page.realName}
<f:if condition="{page.userName}">
<div class="text-variant">({page.userName})</div>
</f:if>
</f:then>
<f:else>
{f:if(condition: page.userName, then: page.userName, else: '{f:translate(key: \'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.user.userNotFound\')}')}
</f:else>
</f:if>
</td>
<td class="col-icon col-nowrap">
<span title="id={page.pageRecord.uid}">
<core:iconForRecord table="pages" row="{page}" />
</span>
<f:if condition="{page.siteLanguage}">
<span title="{page.siteLanguage.title}">
<core:icon identifier="{page.siteLanguage.flagIdentifier}" />
</span>
</f:if>
<f:if condition="{page.pageRecord.t3ver_wsid}">
<span title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.page.workspace')}">
<core:icon identifier="actions-workspace" size="small" />
</span>
</f:if>
</td>
<td class="col-title">
{page.pageRecord.title}
<f:if condition="{page.rootline}">
<div><small class="text-variant" title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.page.pagetree')}">{page.rootline}</small></div>
</f:if>
</td>
<td class="col-control nowrap">
<div class="btn-group">
<f:be.link
route="record_history"
parameters="{element: 'pages:{page.pageRecord.uid}'}"
class="btn btn-default btn-sm"
title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.control.recordHistory')}">
<core:icon identifier="actions-history" />
</f:be.link>
<a href="{page.viewLink}"
class="btn btn-default btn-sm"
title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.control.viewWebpage')}"
target="_blank">
<core:icon identifier="actions-view-page" />
</a>
<f:be.link
route="web_layout"
parameters="{id: page.pageRecord._uid, function: 2, language: page.pageRecord.sys_language_uid}"
class="btn btn-default btn-sm"
title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.control.editPageContent')}">
<core:icon identifier="actions-document-edit" />
</f:be.link>
<be:link.editRecord
uid="{page.pageRecord.uid}"
table="pages"
class="btn btn-default btn-sm"
title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.column.control.editPage')}"
returnUrl="{f:be.uri(route: 'dashboard')}">
<core:icon identifier="actions-page-open" />
</be:link.editRecord>
</div>
</td>
</tr>
</f:for>
</tbody>
</table>
</div>
</f:then>
<f:else>
<div class="callout callout-info">
<div class="callout-icon">
<span class="icon-emphasized">
<core:icon identifier="actions-history" />
</span>
</div>
<div class="callout-content">
<div class="callout-title">
<f:translate key="LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.latestChangedPages.empty" />
</div>
</div>
</div>
</f:else>
</f:if>
</f:section>
</html>
@@ -0,0 +1,17 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget" />
<f:section name="main">
<f:if condition="{items}">
<ul>
<f:for each="{items}" as="item">
<li>{item}</li>
</f:for>
</ul>
</f:if>
</f:section>
<f:section name="footer">
<f:render partial="Widget/Button" arguments="{button: button}"/>
</f:section>
</html>
@@ -0,0 +1,21 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget" />
<f:section name="main">
<div class="widget-number">
<f:if condition="{icon}">
<div class="widget-number-icon">
<core:icon identifier="{icon}" size="large" alternativeMarkupIdentifier="inline" />
</div>
</f:if>
<div class="widget-number-content">
<div class="widget-number-title"><f:translate key="{title}" default="{title}" /></div>
<f:if condition="{subtitle}">
<div class="widget-number-subtitle"><small><f:translate key="{subtitle}" default="{subtitle}" /></small></div>
</f:if>
<div class="widget-number-number">{number}</div>
</div>
</div>
</f:section>
</html>
@@ -0,0 +1,36 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget" />
<f:section name="main">
<f:if condition="{items}">
<f:then>
<div class="widget-table-wrapper">
<table class="widget-table table table-striped table-hover">
<f:for each="{items}" as="item">
<tr>
<td>
<f:link.external uri="{item.link}" target="_blank" rel="noreferrer"><strong>{item.title}</strong></f:link.external>
<small><time datetime="{item.pubDate -> f:format.date(format: '%Y-%m-%d')}">{item.pubDate -> f:format.date()}</time><f:if condition="{item.author.name}"> | {item.author.name}</f:if></small>
<p>{item.description -> f:format.crop(maxCharacters: 180)}</p>
</td>
</tr>
</f:for>
</table>
</div>
</f:then>
<f:else if="!{feedUrl}">
<f:be.infobox title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang_widget_rss.xlf:widget.rss.missingFeedConfiguration.title')}" state="-1">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang_widget_rss.xlf:widget.rss.missingFeedConfiguration.message')}</f:be.infobox>
</f:else>
<f:else if="{invalidFeed}">
<f:be.infobox title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang_widget_rss.xlf:widget.rss.feedError.title')}" state="2">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang_widget_rss.xlf:widget.rss.feedError.message', arguments: '{0: feedUrl}')}</f:be.infobox>
</f:else>
<f:else>
<f:be.infobox title="{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang_widget_rss.xlf:widget.rss.noItems.title')}" state="1">{f:translate(key: 'LLL:EXT:dashboard/Resources/Private/Language/locallang_widget_rss.xlf:widget.rss.noItems.message', arguments: '{0: feedUrl}')}</f:be.infobox>
</f:else>
</f:if>
</f:section>
<f:section name="footer">
<f:render partial="Widget/Button" arguments="{button: button}"/>
</f:section>
</html>
@@ -0,0 +1,27 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Widget/Widget" />
<f:section name="main">
<div class="row">
<div class="col-sm-8">
<f:if condition="{currentVersion} && {copyrightYear}">
<p>
{f:translate(key: 'widgets.t3information.text',
extensionName: 'dashboard',
arguments: '{
0: currentVersion,
1: "&copy; {copyrightYear}",
2: "Kasper Sk&aring;rh&oslash;j"
}') -> f:format.raw()}
</p>
</f:if>
</div>
<div class="col-sm-4">
<img src="{f:uri.resource(path: 'EXT:core/Resources/Public/Images/typo3_light_dark.svg')}"
class="widget-t3information-logo"
alt="{f:translate(key:'widgets.t3information.logo', extensionName: 'dashboard')}"/>
</div>
</div>
</f:section>
</html>