tabs.html.twig 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <div class="form-tabs {{ field.class }} {{ field.classes }}">
  2. {% if field.fields %}
  3. {% set tabsKey = field.fields|keys|join('.') %}
  4. {% set storedValue = get_cookie('grav-tabs-state')|default('{}')|json_decode %}
  5. {% set storedTab = attribute(storedValue, 'tab-' ~ tabsKey) %}
  6. {% if storedTab is empty %}
  7. {% if uri.params.tab %}
  8. {% set active = uri.params.tab %}
  9. {% elseif field.active %}
  10. {% set active = field.active %}
  11. {% else %}
  12. {% set active = 1 %}
  13. {% endif %}
  14. {% endif %}
  15. <div class="tabs-nav">
  16. {% for tab in field.fields %}
  17. {% if tab.type == 'tab' and (tab.security is empty or authorize(array(tab.security))) %}
  18. <a class="tab__link {{ (storedTab == scope ~ tab.name) or active == loop.index ? 'active' : '' }}" data-tabid="tab-{{ tabsKey ~ loop.index }}" data-tabkey="tab-{{ tabsKey }}" data-scope="{{ scope ~ tab.name }}">
  19. <span>
  20. {% if grav.twig.twig.filters['tu'] is defined %}{{ tab.title|tu }}{% else %}{{ tab.title|t }}{% endif %}
  21. </span>
  22. </a>
  23. {% endif %}
  24. {% endfor %}
  25. </div>
  26. <div class="tabs-content">
  27. {% for field in field.fields %}
  28. {% if field.type == 'tab' %}
  29. {% if field.security is empty or authorize(array(field.security)) %}
  30. {% set value = field.name ? data.value(field.name) : data.toArray %}
  31. <div id="tab-{{ tabsKey ~ loop.index }}" class="tab__content {{ (storedTab == scope ~ field.name) or active == loop.index ? 'active' : '' }}">
  32. {% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/text/text.html.twig'] %}
  33. </div>
  34. {% endif %}
  35. {% endif %}
  36. {% endfor %}
  37. </div>
  38. {% endif %}
  39. </div>