TSconfig für Seiten und Benutzer
================================

TSconfig ist von der Syntax her an TypoScript angelegt und dient der Konfiguration des Backend auf
Seiten- und Nutzerbasis.

Eine vollständige Referenz ist unter https://docs.typo3.org/typo3cms/TSconfigReference/Index.html zu
finden.

Wie bei TypoScript auch, gibt es hier Conditions. Grundsätzlich ist TSconfig in User- und
Page-TSconfig unterteilt.

PageTS Beispiel
---------------

Durch die Vererbung können hier einzelne Seitenbereiche im Backend angepasst werden. So z.B. die
erlaubten Datensätze, Labels etc. Außerdem ist dies wichtig für ein sauberes Caching. Hier kann
eingestellt werden welche Caches mit geleert werden sollen. So kann z.B. die Startseite bei neuen
News geleert werden.

Wird in den Seiteneigenschaften hinterlegt. Kann zudem bei Benutzern hinterlegt werden.

Beispiel:

.. code-block:: text

    mod {
        wizards {
            newContentElement {
                wizardItems {
                    common {
                        show := removeFromList(table)
                    }
                }
            }
        }
    }

    TCEFORM {
        tt_content {
            CType {
                removeItems = table
            }
        }
    }

Alternativ per PHP für alle, z.B. in :file:`typo3conf/AdditionalConfiguration.php`.
Zu beachten ist hier die Ladereihenfolge.

.. code-block:: php

    <?php

    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('');

Kann im Module *Info* im Dropdown unter *Page TSConfig* kontrolliert werden.
Dies bietet auch einen guten Anhaltspunkt für das Überschreiben der Wizards.

UserTS Beispiel
---------------

Kann nicht vom Nutzer selbst gesetzt werden, aber per Modul *Backend users* oder *List*.

Kann alle Werte aus PageTS gezielt überschreiben, siehe
https://docs.typo3.org/typo3cms/TSconfigReference/UserTsconfig/Field/Index.html#relationship-to-values-set-in-page-tsconfig.

Kann einem Nutzer oder einer Nutzergruppe hinterlegt werden.

.. code-block:: text

    options {
        pageTree {
            showPageIdWithTitle = 1
            showDomainNameWithTitle = 1
            showPathAboveMounts = 1
            searchInAlias = 1
        }
    }

Alternativ per PHP für alle, z.B. in :file:`typo3conf/AdditionalConfiguration.php`:

.. code-block:: php

    <?php

    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('
        options {
            pageTree {
                backgroundColor {
                    1 = #74d1ff5c
                }
            }
        }
    ');

Admin Panel
-----------

Muss beim Nutzer aktiviert werden, sowie im Frontend.

UserTS:

.. code-block:: text

    ADMPANEL {
        enable {
            all = 1
        }
    }

TypoScript:

.. code-block:: text

    config {
        admPanel = 1
    }

Eingabefelder ausblenden
------------------------

Oft brauchen Redakteure nicht alle Eingabefelder. So werden manche schlicht nicht verwendet. Um hier
Fehler und Irritationen zu vermeiden können diese deaktiviert werden. Dazu reicht folgendes TSconfig
beim Nutzer:

.. code-block:: text

    page {
        tt_content {
            newUntil {
                disabled = 1
            }
        }

        TCEFORM {
            tt_content {
                CType {
                    removeItems = header
                }
            }
        }
    }

Da die Felder über PageTS konfiguriert werden, wir aber die Einstellungen auf Nutzerebene
hinterlegen, müssen wir dies mit ``page`` prefixen, siehe: https://docs.typo3.org/typo3cms/TSconfigReference/UserTsconfig/Field/Index.html#relationship-to-values-set-in-page-tsconfig
Anschließnd kann dann ein einzelnes Feld deaktiviert werden, oder Einträge aus einem Dropdown
entfernt werden. Dies findet man hier dokumentiert: https://docs.typo3.org/typo3cms/TSconfigReference/PageTsconfig/TCEform/Index.html#tceform-confobj
