TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,333 @@
|
||||
<html
|
||||
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true"
|
||||
>
|
||||
<f:layout name="Module" />
|
||||
|
||||
<f:section name="Before">
|
||||
<f:asset.module identifier="@typo3/form/backend/form-manager/main.js"/>
|
||||
<f:for each="{stylesheets}" as="stylesheet">
|
||||
<f:asset.css href="{stylesheet}" identifier="{stylesheet}"/>
|
||||
</f:for>
|
||||
</f:section>
|
||||
|
||||
<f:section name="Content">
|
||||
<h1><f:translate key="form.database:formManager.headline" /></h1>
|
||||
<f:if condition="{hasForms}">
|
||||
<form
|
||||
class="form-inline"
|
||||
data-global-event="submit"
|
||||
data-action-navigate="$form=~s/$value/"
|
||||
data-navigate-value="{f:uri.action(action:'index', arguments:'{searchTerm: \'$[value]\', orderField: orderField, orderDirection: orderDirection}')}"
|
||||
data-value-selector="input[name='searchTerm']"
|
||||
>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="search_field" class="form-label">
|
||||
<f:translate id="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.label.searchString"/>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<input
|
||||
type="search"
|
||||
autocomplete="off"
|
||||
id="search_field"
|
||||
name="searchTerm"
|
||||
class="form-control"
|
||||
value="{searchTerm}"
|
||||
/>
|
||||
<button class="btn btn-default" type="submit" name="search">
|
||||
<f:translate id="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.title.search"/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</f:if>
|
||||
<f:if condition="{paginator.paginatedItems}">
|
||||
<f:then>
|
||||
<div class="table-fit">
|
||||
<table id="forms" class="table table-striped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-50 col-responsive" colspan="2">
|
||||
<f:render section="listHeaderSorting" arguments="{field: 'name', label: 'formManager.form_name', searchTerm: searchTerm, orderField: orderField, orderDirection: orderDirection}"/>
|
||||
</th>
|
||||
<th class="col-path">
|
||||
<f:render section="listHeaderSorting" arguments="{field: 'storageLocation', label: 'formManager.location', searchTerm: searchTerm, orderField: orderField, orderDirection: orderDirection}"/>
|
||||
</th>
|
||||
<th class="col-state">
|
||||
<f:render section="listHeaderSorting" arguments="{field: 'duplicateIdentifier', label: 'formManager.integrity', searchTerm: searchTerm, orderField: orderField, orderDirection: orderDirection}"/>
|
||||
</th>
|
||||
<th class="col-state">
|
||||
<f:render section="listHeaderSorting" arguments="{field: 'referenceCount', label: 'formManager.references', searchTerm: searchTerm, orderField: orderField, orderDirection: orderDirection}"/>
|
||||
</th>
|
||||
<th class="col-control">
|
||||
<span class="visually-hidden">{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels._CONTROL_')}</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<f:for each="{paginator.paginatedItems}" as="form">
|
||||
<tr>
|
||||
<td class="col-icon">
|
||||
<span title="identifier={form.identifier}"><core:icon identifier="content-form" overlay="{f:if(condition: form.invalid, then: 'overlay-missing', else: '{f:if(condition: form.readOnly, then: \'overlay-locked\')}')}" /></span>
|
||||
</td>
|
||||
<td class="col-50 col-responsive">
|
||||
<f:if condition="{form.invalid} || {form.readOnly}">
|
||||
<f:then>
|
||||
{form.name}
|
||||
<f:if condition="{form.invalid}">
|
||||
<span class="badge badge-danger">
|
||||
<f:translate key="form.database:formManager.invalid" />
|
||||
</span>
|
||||
</f:if>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:if condition="{form.editUrl}">
|
||||
<f:then>
|
||||
<a href="{form.editUrl}" title="{f:translate(key: 'form.database:formManager.edit_form')}">
|
||||
{form.name}
|
||||
</a>
|
||||
</f:then>
|
||||
<f:else>
|
||||
{form.name}
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</td>
|
||||
<td class="col-50 col-path">
|
||||
{form.storageLocation}
|
||||
</td>
|
||||
<td class="col-state">
|
||||
<f:if condition="{form.invalid}">
|
||||
<f:then>
|
||||
<span title="{f:translate(key: 'form.database:formManager.invalid')}">
|
||||
<core:icon identifier="status-dialog-error" />
|
||||
</span>
|
||||
</f:then>
|
||||
<f:else if="{form.duplicateIdentifier}">
|
||||
<span title="{f:translate(key: 'form.database:formManager.duplicate_identifier')}">
|
||||
<core:icon identifier="status-dialog-error" />
|
||||
</span>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</td>
|
||||
<td class="col-state">
|
||||
<f:if condition="{form.referenceCount}">
|
||||
<f:then>
|
||||
<a href="#" data-identifier="showReferences" data-form-persistence-identifier="{form.persistenceIdentifier}" data-form-name="{form.name}">
|
||||
{form.referenceCount}
|
||||
</a>
|
||||
</f:then>
|
||||
<f:else>-</f:else>
|
||||
</f:if>
|
||||
</td>
|
||||
<td class="col-control">
|
||||
<div class="btn-group" role="group">
|
||||
<f:if condition="{form.invalid} || {form.readOnly}">
|
||||
<f:then>
|
||||
<span class="btn btn-default disabled" aria-hidden="true"><core:icon identifier="empty-empty" /></span>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:if condition="{form.editUrl}">
|
||||
<f:then>
|
||||
<a href="{form.editUrl}" class="btn btn-default" title="{f:translate(key: 'form.database:formManager.edit_form')}">
|
||||
<core:icon identifier="actions-open" />
|
||||
</a>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<span class="btn btn-default disabled" aria-hidden="true"><core:icon identifier="empty-empty" /></span>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<f:if condition="{form.removable} && ({form.invalid} == '0') && ({form.referenceCount} == '0')">
|
||||
<f:then>
|
||||
<a
|
||||
href="#"
|
||||
class="btn btn-default"
|
||||
data-bs-original-title="{f:translate(key: 'form.database:formManager.delete_form')}"
|
||||
data-identifier="removeForm"
|
||||
data-form-persistence-identifier="{form.persistenceIdentifier}"
|
||||
data-form-name="{form.name}"
|
||||
title="{f:translate(key: 'form.database:formManager.delete_form')}"
|
||||
>
|
||||
<core:icon identifier="actions-edit-delete" />
|
||||
</a>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<span class="btn btn-default disabled" aria-hidden="true"><core:icon identifier="empty-empty" /></span>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="btn-group dropdown" role="group">
|
||||
<f:if condition="{form.invalid}">
|
||||
<f:then>
|
||||
<span class="btn btn-default disabled" aria-hidden="true"><core:icon identifier="empty-empty" /></span>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<a
|
||||
href="#actions-{form.identifier}"
|
||||
class="btn btn-default dropdown-toggle dropdown-toggle-no-chevron"
|
||||
data-bs-toggle="dropdown"
|
||||
data-bs-boundary="window"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<core:icon identifier="actions-menu-alternative" />
|
||||
</a>
|
||||
<ul id="actions-{form.identifier}" class="dropdown-menu">
|
||||
<li>
|
||||
<a
|
||||
href="#"
|
||||
class="dropdown-item dropdown-item-spaced"
|
||||
data-bs-original-title="{f:translate(id: 'form.database:formManager.duplicate_this_form')}"
|
||||
data-identifier="duplicateForm"
|
||||
data-form-persistence-identifier="{form.persistenceIdentifier}"
|
||||
data-form-name="{form.name}"
|
||||
>
|
||||
<span class="dropdown-item-columns">
|
||||
<span class="dropdown-item-column dropdown-item-column-icon text-{cacheAction.severity}">
|
||||
<core:icon identifier="actions-duplicate" />
|
||||
</span>
|
||||
<span class="dropdown-item-column dropdown-item-column-text">
|
||||
<f:translate id="form.database:formManager.duplicate_this_form" />
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<f:if condition="{form.actions.recordHistoryUrl}">
|
||||
<li>
|
||||
<a class="dropdown-item dropdown-item-spaced"
|
||||
href="{form.actions.recordHistoryUrl}"
|
||||
title="{f:translate(id: 'form.database:formManager.showHistory')}">
|
||||
<span class="dropdown-item-columns">
|
||||
<span class="dropdown-item-column dropdown-item-column-icon">
|
||||
<core:icon identifier="actions-document-history-open" />
|
||||
</span>
|
||||
<span class="dropdown-item-column dropdown-item-column-text">
|
||||
<f:translate id="form.database:formManager.showHistory" />
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</f:for>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<f:variable name="totalAmountOfPaginatedItems" value="{paginator.paginatedItems -> f:count()}" />
|
||||
<f:if condition="{paginator.paginatedItems -> f:count()} > 1">
|
||||
<f:then>{totalAmountOfPaginatedItems} <f:translate key="form.database:formManager.table.amount.forms" /></f:then>
|
||||
<f:else>{totalAmountOfPaginatedItems} <f:translate key="form.database:formManager.table.amount.form" /></f:else>
|
||||
</f:if>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
<f:render partial="Backend/FormManager/Pagination" arguments="{_all}" />
|
||||
</f:then>
|
||||
<f:else if="{hasForms}">
|
||||
<f:be.infobox
|
||||
state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}"
|
||||
title="{f:translate(key: 'form.database:formManager.forms_not_found.title')}"
|
||||
>
|
||||
<p><f:translate key="form.database:formManager.forms_not_found_by_search_term.message" arguments="{0: searchTerm}" /></p>
|
||||
<a class="btn btn-primary" href="{f:be.uri(route:'web_FormFormbuilder')}">
|
||||
<f:translate key="form.database:formManager.remove_search_term"/>
|
||||
</a>
|
||||
</f:be.infobox>
|
||||
</f:else>
|
||||
<f:else>
|
||||
<f:be.infobox
|
||||
state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}"
|
||||
title="{f:translate(key: 'form.database:formManager.forms_not_found.title')}"
|
||||
>
|
||||
<p><f:translate key="form.database:formManager.forms_not_found.message" /></p>
|
||||
<a class="btn btn-primary" href="#" data-identifier="newForm"><f:translate key="form.database:formManager.create_new_form" /></a>
|
||||
</f:be.infobox>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
||||
|
||||
<f:section name="listHeaderSorting">
|
||||
<div class="dropdown dropdown-static">
|
||||
<button class="dropdown-toggle dropdown-toggle-link" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<f:translate key="form.database:{label}"/>
|
||||
<f:if condition="{orderField} === {field}">
|
||||
<f:then>
|
||||
<div class="text-primary">
|
||||
<f:if condition="{orderDirection} === 'asc'">
|
||||
<f:then>
|
||||
<core:icon identifier="actions-sort-amount-up" />
|
||||
</f:then>
|
||||
<f:else>
|
||||
<core:icon identifier="actions-sort-amount-down" />
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div>
|
||||
<core:icon identifier="empty-empty" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
href="{f:uri.action(action:'index', arguments:'{searchTerm: searchTerm, orderField: field, orderDirection: \'asc\'}')}"
|
||||
title="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.sorting.asc')}"
|
||||
aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.sorting.asc')}"
|
||||
>
|
||||
<span class="dropdown-item-columns">
|
||||
<span class="dropdown-item-column dropdown-item-column-icon text-primary">
|
||||
<f:if condition="{orderField} === {field}">
|
||||
<f:if condition="{orderDirection} === 'asc'">
|
||||
<core:icon identifier="actions-dot" />
|
||||
</f:if>
|
||||
</f:if>
|
||||
</span>
|
||||
<span class="dropdown-item-column dropdown-item-column-title">
|
||||
{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.sorting.asc')}
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
href="{f:uri.action(action:'index', arguments:'{searchTerm: searchTerm, orderField: field, orderDirection: \'desc\'}')}"
|
||||
title="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.sorting.desc')}"
|
||||
aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.sorting.desc')}"
|
||||
>
|
||||
<span class="dropdown-item-columns">
|
||||
<span class="dropdown-item-column dropdown-item-column-icon text-primary">
|
||||
<f:if condition="{orderField} === {field}">
|
||||
<f:if condition="{orderDirection} === 'desc'">
|
||||
<core:icon identifier="actions-dot" />
|
||||
</f:if>
|
||||
</f:if>
|
||||
</span>
|
||||
<span class="dropdown-item-column dropdown-item-column-title">
|
||||
{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.sorting.desc')}
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</f:section>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user