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
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="messages" date="2018-11-27T22:26:21Z" product-name="dashboard">
<header/>
<body>
<trans-unit id="be_dashboard">
<source>Dashboard</source>
</trans-unit>
<trans-unit id="identifier">
<source>Identifier</source>
</trans-unit>
<trans-unit id="title">
<source>Title</source>
</trans-unit>
</body>
</file>
</xliff>
+329
View File
@@ -0,0 +1,329 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="messages" date="2018-11-27T22:26:21Z" product-name="dashboard">
<header/>
<body>
<trans-unit id="close">
<source>Close</source>
</trans-unit>
<trans-unit id="title">
<source>Dashboard</source>
</trans-unit>
<trans-unit id="widget.add">
<source>Add widget</source>
</trans-unit>
<trans-unit id="widget.addToDashboard">
<source>Add widget to "%s"</source>
</trans-unit>
<trans-unit id="widget.addToDashboard.searchLabel">
<source>Search for dashboard widgets</source>
</trans-unit>
<trans-unit id="widget.addToDashboard.searchNotFound">
<source>Unfortunately no dashboard widget matches your query, please try a different one.</source>
</trans-unit>
<trans-unit id="widget.addToDashboard.userNotAllowed">
<source>No widgets are available with your current permissions.</source>
</trans-unit>
<trans-unit id="widget.add.button.close">
<source>Close</source>
</trans-unit>
<trans-unit id="widget.add.button.ok">
<source>Add widget</source>
</trans-unit>
<trans-unit id="widget.refresh">
<source>Refresh Widget</source>
</trans-unit>
<trans-unit id="widget.settings">
<source>Widget Settings</source>
</trans-unit>
<trans-unit id="widget.settings.button.close">
<source>Close</source>
</trans-unit>
<trans-unit id="widget.settings.button.save">
<source>Save</source>
</trans-unit>
<trans-unit id="widget.settings.unchanged">
<source>Settings unchanged</source>
</trans-unit>
<trans-unit id="widget.move">
<source>Move Widget</source>
</trans-unit>
<trans-unit id="widget.remove">
<source>Remove Widget</source>
</trans-unit>
<trans-unit id="widget.remove.button.close">
<source>Close</source>
</trans-unit>
<trans-unit id="widget.remove.button.ok">
<source>Remove</source>
</trans-unit>
<trans-unit id="widget.remove.confirm.title">
<source>Remove widget</source>
</trans-unit>
<trans-unit id="widget.remove.confirm.message">
<source>Are you sure you want to remove this widget?</source>
</trans-unit>
<trans-unit id="widget.error">
<source>An error occurred while retrieving information for this widget. Please try again, and if the problem persists, contact your administrator.</source>
</trans-unit>
<trans-unit id="dashboard.headline">
<source>Dashboard "%s"</source>
</trans-unit>
<trans-unit id="dashboard.default">
<source>My dashboard</source>
</trans-unit>
<trans-unit id="dashboard.default.description">
<source>Create a new dashboard with some general TYPO3 widgets on it</source>
</trans-unit>
<trans-unit id="dashboard.empty">
<source>Empty dashboard</source>
</trans-unit>
<trans-unit id="dashboard.empty.description">
<source>Your dashboard will be created without any widget on it.</source>
</trans-unit>
<trans-unit id="dashboard.add">
<source>Add dashboard</source>
</trans-unit>
<trans-unit id="dashboard.add.button.close">
<source>Close</source>
</trans-unit>
<trans-unit id="dashboard.add.button.ok">
<source>Add Dashboard</source>
</trans-unit>
<trans-unit id="dashboard.configure">
<source>Configure dashboard</source>
</trans-unit>
<trans-unit id="dashboard.configure.button.close">
<source>Close</source>
</trans-unit>
<trans-unit id="dashboard.configure.button.ok">
<source>Save Dashboard</source>
</trans-unit>
<trans-unit id="dashboard.delete">
<source>Delete dashboard</source>
</trans-unit>
<trans-unit id="dashboard.delete.sure">
<source>Are you sure you want to delete this dashboard?</source>
</trans-unit>
<trans-unit id="dashboard.delete.ok">
<source>Yes, delete it</source>
</trans-unit>
<trans-unit id="dashboard.delete.cancel">
<source>Cancel</source>
</trans-unit>
<trans-unit id="dashboard.title">
<source>Title of dashboard</source>
</trans-unit>
<trans-unit id="widgets.documentation.gettingStarted.title">
<source>Getting Started with TYPO3</source>
</trans-unit>
<trans-unit id="widgets.documentation.gettingStarted.description">
<source>Add a shortcut to the TYPO3 Getting Started Tutorial.</source>
</trans-unit>
<trans-unit id="widgets.documentation.gettingStarted.text">
<source>New to TYPO3? In our Getting Started Tutorial you will learn the basics how to use TYPO3.</source>
</trans-unit>
<trans-unit id="widgets.documentation.gettingStarted.content.label">
<source>Getting Started Tutorial</source>
</trans-unit>
<trans-unit id="widgets.documentation.typoscriptReference.title">
<source>TypoScript Template Reference</source>
</trans-unit>
<trans-unit id="widgets.documentation.typoscriptReference.description">
<source>Add a shortcut to the TYPO3 TypoScript Template Reference.</source>
</trans-unit>
<trans-unit id="widgets.documentation.typoscriptReference.text">
<source>This document is a reference, used to lookup TypoScript templating.</source>
</trans-unit>
<trans-unit id="widgets.documentation.typoscriptReference.content.label">
<source>TypoScript Template Reference</source>
</trans-unit>
<trans-unit id="widgets.documentation.TSconfigReference.title">
<source>TSconfig Reference</source>
</trans-unit>
<trans-unit id="widgets.documentation.TSconfigReference.description">
<source>Add a shortcut to the TYPO3 TSconfig Reference.</source>
</trans-unit>
<trans-unit id="widgets.documentation.TSconfigReference.text">
<source>This document describes TSconfig and its options.</source>
</trans-unit>
<trans-unit id="widgets.documentation.TSconfigReference.content.label">
<source>TSconfig Reference</source>
</trans-unit>
<trans-unit id="widgets.t3news.title">
<source>TYPO3 news</source>
</trans-unit>
<trans-unit id="widgets.t3news.description">
<source>Add a list of news items from the TYPO3 project</source>
</trans-unit>
<trans-unit id="widgets.t3news.moreItems">
<source>More TYPO3 news</source>
</trans-unit>
<trans-unit id="widgets.t3information.title">
<source>About TYPO3</source>
</trans-unit>
<trans-unit id="widgets.t3information.description">
<source>Some general information about TYPO3 and the version used</source>
</trans-unit>
<trans-unit id="widgets.t3information.text">
<source><![CDATA[TYPO3 CMS is an enterprise-class, Open Source Content Management System, used internationally to build and manage websites of all types, from small sites for non-profits to multilingual enterprise solutions for large corporations.<br /><br />For further information visit <a href="https://typo3.org/typo3-cms/" target="_blank" rel="noreferrer">typo3.org</a>.<br /><br />TYPO3 CMS is <b>freely available</b> under the <a href="https://typo3.org/project/licenses/" target="_blank" rel="noreferrer">TYPO3-license (GNU/GPL)</a>.<br /><br />You are using version %s - Copyright %s %s]]></source>
</trans-unit>
<trans-unit id="widgets.t3information.logo">
<source>TYPO3 CMS logo</source>
</trans-unit>
<trans-unit id="widgets.sysLogErrors.title">
<source>Number of errors in system log</source>
</trans-unit>
<trans-unit id="widgets.sysLogErrors.description">
<source>Shows the number of errors in the sys log of the last month, grouped by date</source>
</trans-unit>
<trans-unit id="widgets.sysLogErrors.buttonText">
<source>Show all errors in log</source>
</trans-unit>
<trans-unit id="widgets.sysLogUsers.buttonText">
<source>Show all user logins</source>
</trans-unit>
<trans-unit id="widgets.sysLogErrors.chart.dataSet.0">
<source>Number of errors</source>
</trans-unit>
<trans-unit id="widgets.typeOfUsers.title">
<source>Type of backend users</source>
</trans-unit>
<trans-unit id="widgets.typeOfUsers.description">
<source>Shows the amount of normal- and admin-users</source>
</trans-unit>
<trans-unit id="widgets.typeOfUsers.normalUsers">
<source>Normal users</source>
</trans-unit>
<trans-unit id="widgets.typeOfUsers.adminUsers">
<source>Admin users</source>
</trans-unit>
<trans-unit id="widgets.failedLogins.title">
<source>Failed backend logins</source>
</trans-unit>
<trans-unit id="widgets.failedLogins.subtitle">
<source>In last 24 hours</source>
</trans-unit>
<trans-unit id="widgets.failedLogins.description">
<source>Information about the number of failed logins during the last 24 hours.</source>
</trans-unit>
<trans-unit id="widgets.t3securityAdvisories.title">
<source>TYPO3 security advisories</source>
</trans-unit>
<trans-unit id="widgets.t3securityAdvisories.description">
<source>Add a list of security advisories from the TYPO3 project</source>
</trans-unit>
<trans-unit id="widgets.t3securityAdvisories.moreItems">
<source>More TYPO3 security advisories</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.title">
<source>Latest changed pages</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.title.restrictToCurrentUser">
<source>My latest changed pages</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.description">
<source>Show a list of pages where the latest changes were made</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.empty">
<source>No history found</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.settings.restrictToCurrentUser">
<source>Only show my changes</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.change">
<source>Change</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.user">
<source>User</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.user.userNotFound">
<source>Not Found</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.page">
<source>Page</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.page.workspace">
<source>Changes in current selected workspace</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.page.pagetree">
<source>Position in pagetree</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.control">
<source>Control</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.control.recordHistory">
<source>Show history</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.control.viewWebpage">
<source>View webpage</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.control.editPageContent">
<source>Edit page content</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.column.control.editPage">
<source>Edit page properties</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.table.tt_content">
<source>Content</source>
</trans-unit>
<trans-unit id="widgets.latestChangedPages.table.pages">
<source>Page</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.title">
<source>Latest backend logins</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.description">
<source>Shows the latest backend user logins.</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.empty">
<source>No backend login history found</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.column.time">
<source>Time</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.column.user">
<source>User</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.column.user.notFound">
<source>Not found</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.column.user.edit">
<source>Edit user</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.settings.limit">
<source>Number of logins to display</source>
</trans-unit>
<trans-unit id="widgets.latestBeLogins.settings.limit.description">
<source>Maximum number of backend user logins to show in the widget</source>
</trans-unit>
<trans-unit id="widget_group.general">
<source>General</source>
</trans-unit>
<trans-unit id="widget_group.typo3">
<source>TYPO3 community</source>
</trans-unit>
<trans-unit id="widget_group.news">
<source>News</source>
</trans-unit>
<trans-unit id="widget_group.documentation">
<source>Documentation</source>
</trans-unit>
<trans-unit id="widget_group.system">
<source>System Information</source>
</trans-unit>
<trans-unit id="widget_group.content">
<source>Content</source>
</trans-unit>
<trans-unit id="dashboard.empty.content.title">
<source>No widgets</source>
</trans-unit>
<trans-unit id="dashboard.empty.content.description">
<source>There are no widgets on this dashboard yet. You can add widgets now by clicking on the button below.</source>
</trans-unit>
<trans-unit id="dashboard.empty.content.button">
<source>Add a widget</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="messages" date="2018-11-27T22:26:21Z" product-name="dashboard">
<header/>
<body>
<trans-unit id="widget.bookmarks.title" xml:space="preserve">
<source>Bookmarks</source>
</trans-unit>
<trans-unit id="widget.bookmarks.description" xml:space="preserve">
<source>Display your bookmarks as a dashboard widget.</source>
</trans-unit>
<trans-unit id="widget.bookmarks.setting.groups.label" xml:space="preserve">
<source>Bookmark groups</source>
</trans-unit>
<trans-unit id="widget.bookmarks.setting.groups.description" xml:space="preserve">
<source>Bookmark groups to be displayed.</source>
</trans-unit>
<trans-unit id="widget.bookmarks.setting.limit.label" xml:space="preserve">
<source>Limit</source>
</trans-unit>
<trans-unit id="widget.bookmarks.setting.limit.description" xml:space="preserve">
<source>Maximum number of bookmarks to display.</source>
</trans-unit>
<trans-unit id="widget.bookmarks.setting.showAll" xml:space="preserve">
<source>Show all bookmarks</source>
</trans-unit>
<trans-unit id="widget.bookmarks.manageBookmarks" xml:space="preserve">
<source>Manage bookmarks</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="messages" date="2018-11-27T22:26:21Z" product-name="dashboard">
<header/>
<body>
<trans-unit id="widget.rss.title">
<source>RSS Feed</source>
</trans-unit>
<trans-unit id="widget.rss.description">
<source>Displays the latest entries from a customizable RSS feed.</source>
</trans-unit>
<trans-unit id="widget.rss.setting.label.label">
<source>Label</source>
</trans-unit>
<trans-unit id="widget.rss.setting.label.description">
<source>Defines the label of the widget.</source>
</trans-unit>
<trans-unit id="widget.rss.setting.fieldUrl.label">
<source>RSS Feed</source>
</trans-unit>
<trans-unit id="widget.rss.setting.fieldUrl.description">
<source>Defines the URL or file providing the RSS Feed. This is read by the widget in order to fetch entries to show.</source>
</trans-unit>
<trans-unit id="widget.rss.setting.limit.label">
<source>Limit</source>
</trans-unit>
<trans-unit id="widget.rss.setting.limit.description">
<source>Defines how many RSS items should be shown.</source>
</trans-unit>
<trans-unit id="widget.rss.setting.lifetime.label">
<source>Lifetime</source>
</trans-unit>
<trans-unit id="widget.rss.setting.lifetime.description">
<source>Defines how long to wait, in seconds, until fetching RSS Feed again.</source>
</trans-unit>
<trans-unit id="widget.rss.missingFeedConfiguration.title">
<source>Missing feed configuration</source>
</trans-unit>
<trans-unit id="widget.rss.missingFeedConfiguration.message">
<source>Please configure a feed URL to retrieve items from.</source>
</trans-unit>
<trans-unit id="widget.rss.feedError.title">
<source>Feed error</source>
</trans-unit>
<trans-unit id="widget.rss.feedError.message">
<source>The feed at "%1$s" could not be parsed.</source>
</trans-unit>
<trans-unit id="widget.rss.noItems.title">
<source>No items to display</source>
</trans-unit>
<trans-unit id="widget.rss.noItems.message">
<source>The feed at "%1$s" does not contain any items.</source>
</trans-unit>
</body>
</file>
</xliff>
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="EXT:dashboard/Resources/Private/Language/module.xlf" date="2026-11-10T13:37:37Z" product-name="dashboard">
<header/>
<body>
<trans-unit id="short_description">
<source>Dashboard</source>
</trans-unit>
<trans-unit id="description">
<source>A dashboard that can show widgets of all kind of extensions</source>
</trans-unit>
<trans-unit id="title">
<source>Dashboard</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,11 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="widget-content-main">
<f:render section="main" optional="true" />
</div>
<f:variable name="footer" value="{f:render(section:'footer', optional: 'true')}" />
<f:if condition="{footer -> f:spaceless()}">
<div class="widget-content-footer">
{footer -> f:format.raw()}
</div>
</f:if>
</html>
@@ -0,0 +1,7 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:dashboard="http://typo3.org/ns/TYPO3/CMS/Dashboard/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:if condition="{button}">
<dashboard:widget.button button="{button}" class="widget-cta">{f:translate(id: button.title, default: button.title)}</dashboard:widget.button>
</f:if>
</html>
@@ -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>