base_edit_form.html.twig 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. {% block form %}
  2. {{ sonata_block_render_event('sonata.admin.edit.form.top', { 'admin': admin, 'object': object }) }}
  3. {% set url = admin.id(object) is not null ? 'edit' : 'create' %}
  4. {% if not admin.hasRoute(url)%}
  5. <div>
  6. {{ "form_not_available"|trans({}, "SonataAdminBundle") }}
  7. </div>
  8. {% else %}
  9. <form
  10. {% if admin_pool.getOption('form_type') == 'horizontal' %}class="form-horizontal"{% endif %}
  11. role="form"
  12. action="{{ admin.generateUrl(url, {'id': admin.id(object), 'uniqid': admin.uniqid, 'subclass': app.request.get('subclass')}) }}" {{ form_enctype(form) }}
  13. method="POST"
  14. {% if not admin_pool.getOption('html5_validate') %}novalidate="novalidate"{% endif %}
  15. >
  16. {% if form.vars.errors|length > 0 %}
  17. <div class="sonata-ba-form-error">
  18. {{ form_errors(form) }}
  19. </div>
  20. {% endif %}
  21. {% block sonata_pre_fieldsets %}
  22. <div class="row">
  23. {% endblock %}
  24. {% block sonata_tab_content %}
  25. {% set has_tab = ((admin.formtabs|length == 1 and admin.formtabs|keys[0] != 'default') or admin.formtabs|length > 1 ) %}
  26. <div class="col-md-12">
  27. {% if has_tab %}
  28. <div class="nav-tabs-custom">
  29. <ul class="nav nav-tabs" role="tablist">
  30. {% for name, form_tab in admin.formtabs %}
  31. <li{% if loop.index == 1 %} class="active"{% endif %}><a href="#tab_{{ admin.uniqid }}_{{ loop.index }}" data-toggle="tab"><span class="glyphicon glyphicon-exclamation-sign has-errors hide"></span> {{ admin.trans(name, {}, form_tab.translation_domain) }}</a></li>
  32. {% endfor %}
  33. </ul>
  34. <div class="tab-content">
  35. {% for code, form_tab in admin.formtabs %}
  36. <div class="tab-pane fade{% if loop.first %} in active{% endif %}" id="tab_{{ admin.uniqid }}_{{ loop.index }}">
  37. <div class="box-body container-fluid">
  38. <div class="sonata-ba-collapsed-fields">
  39. {% if form_tab.description != false %}
  40. <p>{{ form_tab.description|raw }}</p>
  41. {% endif %}
  42. {{ form_helper.render_groups(admin, form, form_tab['groups'], has_tab) }}
  43. </div>
  44. </div>
  45. </div>
  46. {% endfor %}
  47. </div>
  48. </div>
  49. {% else %}
  50. {{ form_helper.render_groups(admin, form, admin.formtabs['default'].groups, has_tab) }}
  51. {% endif %}
  52. </div>
  53. {% endblock %}
  54. {% block sonata_post_fieldsets %}
  55. </div>
  56. {% endblock %}
  57. {{ form_rest(form) }}
  58. {% block formactions %}
  59. <div class="well well-small form-actions">
  60. {% if app.request.isxmlhttprequest %}
  61. {% if admin.id(object) is not null %}
  62. <button type="submit" class="btn btn-success" name="btn_update"><i class="fa fa-save"></i> {{ 'btn_update'|trans({}, 'SonataAdminBundle') }}</button>
  63. {% else %}
  64. <button type="submit" class="btn btn-success" name="btn_create"><i class="fa fa-plus-circle"></i> {{ 'btn_create'|trans({}, 'SonataAdminBundle') }}</button>
  65. {% endif %}
  66. {% else %}
  67. {% if admin.supportsPreviewMode %}
  68. <button class="btn btn-info persist-preview" name="btn_preview" type="submit">
  69. <i class="fa fa-eye"></i>
  70. {{ 'btn_preview'|trans({}, 'SonataAdminBundle') }}
  71. </button>
  72. {% endif %}
  73. {% if admin.id(object) is not null %}
  74. <button type="submit" class="btn btn-success" name="btn_update_and_edit"><i class="fa fa-save"></i> {{ 'btn_update_and_edit_again'|trans({}, 'SonataAdminBundle') }}</button>
  75. {% if admin.hasroute('list') and admin.isGranted('LIST') %}
  76. <button type="submit" class="btn btn-success" name="btn_update_and_list"><i class="fa fa-save"></i> <i class="fa fa-list"></i> {{ 'btn_update_and_return_to_list'|trans({}, 'SonataAdminBundle') }}</button>
  77. {% endif %}
  78. {% if admin.hasroute('delete') and admin.isGranted('DELETE', object) %}
  79. {{ 'delete_or'|trans({}, 'SonataAdminBundle') }}
  80. <a class="btn btn-danger" href="{{ admin.generateObjectUrl('delete', object) }}"><i class="fa fa-minus-circle"></i> {{ 'link_delete'|trans({}, 'SonataAdminBundle') }}</a>
  81. {% endif %}
  82. {% if admin.isAclEnabled() and admin.hasroute('acl') and admin.isGranted('MASTER', object) %}
  83. <a class="btn btn-info" href="{{ admin.generateObjectUrl('acl', object) }}"><i class="fa fa-users"></i> {{ 'link_edit_acl'|trans({}, 'SonataAdminBundle') }}</a>
  84. {% endif %}
  85. {% else %}
  86. {% if admin.hasroute('edit') and admin.isGranted('EDIT') %}
  87. <button class="btn btn-success" type="submit" name="btn_create_and_edit"><i class="fa fa-save"></i> {{ 'btn_create_and_edit_again'|trans({}, 'SonataAdminBundle') }}</button>
  88. {% endif %}
  89. {% if admin.hasroute('list') and admin.isGranted('LIST') %}
  90. <button type="submit" class="btn btn-success" name="btn_create_and_list"><i class="fa fa-save"></i> <i class="fa fa-list"></i> {{ 'btn_create_and_return_to_list'|trans({}, 'SonataAdminBundle') }}</button>
  91. {% endif %}
  92. <button class="btn btn-success" type="submit" name="btn_create_and_create"><i class="fa fa-plus-circle"></i> {{ 'btn_create_and_create_a_new_one'|trans({}, 'SonataAdminBundle') }}</button>
  93. {% endif %}
  94. {% endif %}
  95. </div>
  96. {% endblock formactions %}
  97. </form>
  98. {% endif%}
  99. {{ sonata_block_render_event('sonata.admin.edit.form.bottom', { 'admin': admin, 'object': object }) }}
  100. {% endblock %}