您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

169 行
7.9 KiB

  1. {# templates/account/index.html.twig #}
  2. {% extends 'base.html.twig' %}
  3. {% block title %}
  4. {% if tab == 'account' %}Account{% else %}Mein Benutzer{% endif %}
  5. {% endblock %}
  6. {% block body %}
  7. <script>
  8. window.ACCOUNT = {
  9. tab: '{{ tab }}',
  10. isSuperAdmin: {{ superAdminUserId is not null and superAdminUserId == user.id ? 'true' : 'false' }},
  11. };
  12. </script>
  13. <div class="account-page">
  14. <div class="account-header">
  15. <h1 class="account-header__title">
  16. {% if tab == 'account' %}Account{% else %}Mein Benutzer{% endif %}
  17. </h1>
  18. {% if isAdmin %}
  19. <nav class="account-tabs">
  20. <a href="{{ path('account_index', {tab: 'account'}) }}"
  21. class="account-tab{% if tab == 'account' %} account-tab--active{% endif %}">
  22. Account
  23. </a>
  24. <a href="{{ path('account_index', {tab: 'user'}) }}"
  25. class="account-tab{% if tab == 'user' %} account-tab--active{% endif %}">
  26. Mein Benutzer
  27. </a>
  28. </nav>
  29. {% endif %}
  30. </div>
  31. <div class="account-content">
  32. <div class="account-card">
  33. {# ── Account-Tab (nur Admin) ────────────────────────────────────────── #}
  34. {% if tab == 'account' and isAdmin %}
  35. <div class="account-form__grid" id="account-form">
  36. <label class="account-form__label" for="account-name">Firmenname</label>
  37. <div class="account-form__field">
  38. <input type="text" id="account-name" class="input"
  39. value="{{ account.name|e('html_attr') }}" />
  40. <span class="account-form__hint">
  41. Subdomain: <strong>{{ account.slug }}.{{ app.request.host|split('.')|slice(1)|join('.') }}</strong> — ändert sich nicht.
  42. </span>
  43. </div>
  44. <label class="account-form__label" for="account-interval">Zeitintervall</label>
  45. <div class="account-form__field">
  46. <select id="account-interval" class="select">
  47. {% for value, label in intervalOptions %}
  48. <option value="{{ value }}"{% if account.trackingInterval == value %} selected{% endif %}>
  49. {{ label }}
  50. </option>
  51. {% endfor %}
  52. </select>
  53. <span class="account-form__hint">Auf welche Einheit werden erfasste Zeiten aufgerundet.</span>
  54. </div>
  55. <div class="account-form__actions">
  56. <button type="button" class="btn btn-primary" id="btn-account-save">Sichern</button>
  57. <a href="{{ path('account_index', {tab: 'account'}) }}" class="btn btn-secondary">Abbrechen</a>
  58. </div>
  59. </div>
  60. {# ── Benutzer-Tab ──────────────────────────────────────────────────── #}
  61. {% else %}
  62. <div class="account-form__grid" id="user-form">
  63. <label class="account-form__label" for="user-firstname">Vorname</label>
  64. <div class="account-form__field">
  65. <input type="text" id="user-firstname" class="input"
  66. value="{{ user.firstName|e('html_attr') }}" />
  67. </div>
  68. <label class="account-form__label" for="user-lastname">Nachname</label>
  69. <div class="account-form__field">
  70. <input type="text" id="user-lastname" class="input"
  71. value="{{ user.lastName|e('html_attr') }}" />
  72. </div>
  73. <label class="account-form__label" for="user-email">E-Mail</label>
  74. <div class="account-form__field">
  75. <input type="email" id="user-email" class="input"
  76. value="{{ user.email|e('html_attr') }}" />
  77. </div>
  78. <label class="account-form__label">Passwort</label>
  79. <div class="account-form__field">
  80. <a href="#" class="account-form__link" id="btn-pw-toggle">ändern</a>
  81. </div>
  82. <div class="account-form__pw-section" id="pw-section" hidden>
  83. <label class="account-form__label" for="user-pw-current">Aktuelles Passwort</label>
  84. <div class="account-form__field">
  85. <input type="password" id="user-pw-current" class="input" autocomplete="current-password" />
  86. </div>
  87. <label class="account-form__label" for="user-pw-new">Neues Passwort</label>
  88. <div class="account-form__field">
  89. <input type="password" id="user-pw-new" class="input" autocomplete="new-password" minlength="8" />
  90. </div>
  91. <label class="account-form__label" for="user-pw-repeat">Wiederholen</label>
  92. <div class="account-form__field">
  93. <input type="password" id="user-pw-repeat" class="input" autocomplete="new-password" />
  94. </div>
  95. </div>
  96. <div class="account-form__actions">
  97. <button type="button" class="btn btn-primary" id="btn-user-save">Sichern</button>
  98. <a href="{{ path('account_index', {tab: 'user'}) }}" class="btn btn-secondary">Abbrechen</a>
  99. </div>
  100. </div>
  101. {% endif %}
  102. </div>
  103. {# ── Besitzer des Accounts (nur Admin, Account-Tab) ─────────────────── #}
  104. {% if tab == 'account' and isAdmin %}
  105. <div class="account-card account-card--owner">
  106. <div class="account-form__grid">
  107. <label class="account-form__label" for="superadmin-select">Besitzer des Accounts</label>
  108. <div class="account-form__field">
  109. <select id="superadmin-select" class="select"
  110. {% if superAdminUserId != user.id %}disabled{% endif %}>
  111. {% for admin in adminUsers %}
  112. <option value="{{ admin.id }}"{% if admin.id == superAdminUserId %} selected{% endif %}>
  113. {{ admin.name }}
  114. </option>
  115. {% endfor %}
  116. </select>
  117. <p class="account-form__hint account-form__hint--owner">
  118. Der Besitzer des Accounts ist für die Verwaltung der Zahlungsdaten zuständig.
  119. Nur er kann den Account kündigen.
  120. </p>
  121. </div>
  122. </div>
  123. </div>
  124. {% endif %}
  125. </div>
  126. </div>
  127. <div class="account-toast" id="account-toast"></div>
  128. {% endblock %}
  129. {% block javascripts %}
  130. {{ parent() }}
  131. {{ encore_entry_script_tags('account') }}
  132. {% endblock %}