permissions.html.twig 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. {% extends "forms/field.html.twig" %}
  2. {% set value = (value is null ? field.default : value) %}
  3. {% set value = (value is same as(false) ? 0 : value) %}
  4. {% block global_attributes %}
  5. data-grav-disabled="{{ originalValue is null ? 'true' : 'false' }}"
  6. data-grav-default="{{ field.default|json_encode()|e('html_attr') }}"
  7. {% endblock %}
  8. {% macro spanToggle(input, length) %}
  9. {% set space = repeat('  ', (length - input|length) / 2) %}
  10. {{ (space ~ input ~ space)|raw }}
  11. {% endmacro %}
  12. {% block input %}
  13. <div class="permissions-container">
  14. {% set permissions = admin.getPermissions %}
  15. {% for index_existing_permission, value_existing_permission in value %}
  16. {% for index_segment1, value_segment1 in value_existing_permission %}
  17. {% set permissions = permissions|merge({ (index_existing_permission ~ "." ~ index_segment1): "boolean"}) %}
  18. {% endfor %}
  19. {% endfor %}
  20. {% for permission, type in permissions %}
  21. <div class="permission-container">
  22. {% set permission_segments = permission|split('.') %}
  23. {% set permission_value = value[permission_segments[0]][permission_segments[1]] %}
  24. {% if permission_value in ['on', 'true', 1] %}
  25. {% set permission_value = 'true' %}
  26. {% endif %}
  27. <input type="text" class="medium permission-value" value="{{ permission }}" />
  28. <div class="switch-toggle switch-grav medium switch-3">
  29. {% set options = { true: 'PLUGIN_ADMIN.YES', false: 'PLUGIN_ADMIN.NO', '': 'PLUGIN_ADMIN.NOT_SET' } %}
  30. {% set maxLen = 0 %}
  31. {% for value, text in options %}
  32. {% set translation = grav.twig.twig.filters['tu'] is defined ? text|tu : text|t %}
  33. {% set maxLen = max(translation|length, maxLen) %}
  34. {% endfor %}
  35. {% for key, text in options %}
  36. {% set id = "toggle_" ~ field.name ~ "." ~ permission ~ key %}
  37. {% set translation = (grav.twig.twig.filters['tu'] is defined ? text|tu : text|t)|trim %}
  38. <input type="radio"
  39. value="{{ key }}"
  40. id="{{ id }}"
  41. name="{{ (scope ~ field.name ~ "." ~ permission)|fieldName }}"
  42. class="{{ 'true' == '' ~ key ? 'highlight' : '' }}"
  43. {% if key|fieldName == '' ~ permission_value|fieldName %}
  44. checked="checked"
  45. {% endif %}
  46. {% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %}
  47. />
  48. <label for="{{ id }}">{{ (_self.spanToggle(translation, maxLen)|trim)|raw }}</label>
  49. {% endfor %}
  50. <a></a>
  51. </div>
  52. </div>
  53. {% endfor %}
  54. </div>
  55. {% endblock %}