pages.html.twig 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. {% extends 'partials/base.html.twig' %}
  2. {% macro spanToggle(input, length) %}
  3. {{ (repeat('  ', (length - input|length) / 2) ~ input ~ repeat('  ', (length - input|length) / 2))|raw }}
  4. {% endmacro %}
  5. {% if admin.route %}
  6. {% set context = admin.page(true) %}
  7. {% endif %}
  8. {% if uri.param('new') %}
  9. {% set mode = 'new' %}
  10. {% elseif context %}
  11. {% set mode = 'edit' %}
  12. {% if context.exists %}
  13. {% set page_url = base_url ~ '/pages' ~ (context.header.routes.default ?: context.rawRoute) %}
  14. {% set exists = true %}
  15. {% set title = (context.exists ? "PLUGIN_ADMIN.EDIT"|tu : "PLUGIN_ADMIN.CREATE"|tu ) ~ " " ~ (context.header.title ?: context.title) %}
  16. {% else %}
  17. {% set title = "PLUGIN_ADMIN.ADD_PAGE"|tu %}
  18. {% endif %}
  19. {% else %}
  20. {% set mode = 'list' %}
  21. {% set title = "PLUGIN_ADMIN.PAGES"|tu %}
  22. {% endif %}
  23. {% set modular = context.modular ? 'modular_' : '' %}
  24. {% set warn = config.plugins.admin.warnings.delete_page %}
  25. {% set admin_lang = admin.session.admin_lang ?: 'en' %}
  26. {% set page_lang = context.language %}
  27. {% set type = 'page' %}
  28. {% block stylesheets %}
  29. {% if mode == 'edit' %}
  30. {% do assets.addCss(theme_url~'/css/codemirror/codemirror.css') %}
  31. {% endif %}
  32. {{ parent() }}
  33. {% endblock %}
  34. {% block javascripts %}
  35. {{ parent() }}
  36. {% endblock %}
  37. {% set preview_html = (base_url_relative_frontend|rtrim('/') ~ (context.home ? '' : context.route)) ?: '/' %}
  38. {% set preview_target = config.plugins.admin.frontend_pages_target %}
  39. {% set preview_link = context.routable ? '<a class="button" target="' ~ preview_target ~ '" href="' ~ preview_html ~ '" title="' ~ "PLUGIN_ADMIN.PREVIEW"|tu ~ '"> <i class="fa fa-fw fa-eye" style="font-size:18px;margin-right:0;"></i></a>' : '' %}
  40. {% macro loop(page, depth, twig_vars) %}
  41. {% set separator = twig_vars['config'].system.param_sep %}
  42. {% set display_field = twig_vars['config'].plugins.admin.pages_list_display_field %}
  43. {% set base_url = twig_vars['base_url_relative'] %}
  44. {% set base_url_simple = twig_vars['base_url_simple'] %}
  45. {% set admin_route = twig_vars['admin_route'] %}
  46. {% set admin_lang = twig_vars['admin_lang'] %}
  47. {% set warn = twig_vars['warn'] %}
  48. {% set uri = twig_vars['uri'] %}
  49. {% if page.header.admin.children_display_order == 'collection' and page.header.content.order.by %}
  50. {% if page.header.content.order.custom %}
  51. {% set pcol = page.children().order(page.header.content.order.by, page.header.content.order.dir|default('asc'), page.header.content.order.custom) %}
  52. {% else %}
  53. {% set pcol = page.children().order(page.header.content.order.by, page.header.content.order.dir|default('asc')) %}
  54. {% endif %}
  55. {% else %}
  56. {% set pcol = page.children() %}
  57. {% endif %}
  58. {% for p in pcol %}
  59. {% set description = (not p.page ? "PLUGIN_ADMIN.FOLDER"|tu ~ ' &bull; ' : "PLUGIN_ADMIN.PAGE"|tu ~ ' &bull; ') ~
  60. (p.modular ? "PLUGIN_ADMIN.MODULAR"|tu ~ ' &bull; ' : '') ~
  61. (p.routable ? "PLUGIN_ADMIN.ROUTABLE"|tu ~ ' &bull; ' : "PLUGIN_ADMIN.NON_ROUTABLE"|tu ~ ' &bull; ') ~
  62. (p.visible ? "PLUGIN_ADMIN.VISIBLE"|tu ~ ' &bull; ' : "PLUGIN_ADMIN.NON_VISIBLE"|tu ~ ' &bull; ') ~
  63. (p.published ? "PLUGIN_ADMIN.PUBLISHED"|tu ~ ' &bull; ' : "PLUGIN_ADMIN.NON_PUBLISHED"|tu ~ ' &bull; ') %}
  64. {#{% set page_route = p.rawRoute|trim('/') %}#}
  65. {#{% if p.language and p.language != admin_lang %}#}
  66. {#{% set page_url = base_url_simple ~ '/' ~ p.language ~ '/' ~ admin_route ~ '/pages/' ~ page_route %}#}
  67. {#{% else %}#}
  68. {#{% set page_url = base_url ~ '/pages/' ~ page_route %}#}
  69. {#{% endif %}#}
  70. {% set page_url = getPageUrl(p) %}
  71. <li class="page-item" data-nav-id="{{ p.route }}">
  72. <div class="row page-item__row">
  73. <span class="page-item__toggle" {{ p.children(0).count > 0 ? 'data-toggle="children"' : ''}}>
  74. <i class="page-icon fa fa-fw fa-circle-o {{ p.children(0).count > 0 ? 'children-closed' : ''}} {{ p.modular ? 'modular' : (not p.routable ? 'not-routable' : (not p.visible ? 'not-visible' : (not p.page ? 'folder' : ''))) }}"></i>
  75. </span>
  76. <div class="page-item__content">
  77. <div class="page-item__content-name">
  78. <span data-hint="{{ description|trim(' &bull; ')|raw }}" class="hint--top page-item__content-hint">
  79. {% set page_label = attribute(p.header, display_field)|defined(attribute(p, display_field))|defined(p.title) %}
  80. <a href="{{ page_url }}" class="page-edit">{{ page_label|e }}</a>
  81. </span>
  82. {% if p.language %}
  83. <span class="badge lang {% if p.language == admin_lang %}info{% endif %}">{{p.language}}</span>
  84. {% endif %}
  85. {% if p.home %}
  86. <span class="page-home"><i class="fa fa-home"></i></span>
  87. {% endif %}
  88. </div>
  89. <p class="page-route">{{ p.header.routes.default ?: p.route }} <span class="spacer"><i class="fa fa-long-arrow-right"></i></span> {{ p.template() }}</p>
  90. </div>
  91. <span class="page-item__tools">
  92. {% if warn %}
  93. <a href="#delete" data-remodal-target="delete" data-delete-url="{{ uri.addNonce(page_url ~ '/task' ~ separator ~ 'delete', 'admin-form', 'admin-nonce') }}" class="page-delete" ><i class="fa fa-close"></i></a>
  94. {% else %}
  95. <a href="{{ uri.addNonce(page_url ~ '/task' ~ separator ~ 'delete', 'admin-form', 'admin-nonce') }}" class="page-delete" ><i class="fa fa-close"></i></a>
  96. {% endif %}
  97. </span>
  98. </div>
  99. {% if p.children().count > 0 %}
  100. <ul class="depth-{{ depth + 1 }}" style="display:none;">
  101. {{ _self.loop(p, depth + 1, twig_vars) }}
  102. </ul>
  103. {% endif %}
  104. </li>
  105. {% endfor %}
  106. {% endmacro %}
  107. {% block titlebar %}
  108. <div class="button-bar">
  109. {% if mode == 'list' %}
  110. <a class="button" href="{{ base_url }}"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a>
  111. {% for key, add_modal in config.plugins.admin.add_modals %}
  112. {% if add_modal.show_in|defined('bar') == 'bar' %}
  113. <a class="button {{ add_modal.link_classes }}" href="#modal-add_modal-{{ key }}" data-remodal-target="modal-add_modal-{{ key }}"><i class="fa fa-plus"></i> {{ add_modal.label }}</a>
  114. {% endif %}
  115. {% endfor %}
  116. <div class="button-group">
  117. <button type="button" class="button disabled" href="#modal" data-remodal-target="modal">
  118. <i class="fa fa-plus"></i> {{ "PLUGIN_ADMIN.ADD"|tu }}
  119. </button>
  120. <button type="button" class="button dropdown-toggle" data-toggle="dropdown">
  121. <i class="fa fa-caret-down"></i>
  122. </button>
  123. <ul class="dropdown-menu">
  124. <li><a class="button" href="#modal" data-remodal-target="modal">{{ "PLUGIN_ADMIN.ADD_PAGE"|tu }}</a></li>
  125. <li><a class="button" href="#modal-folder" data-remodal-target="modal-folder">{{ "PLUGIN_ADMIN.ADD_FOLDER"|tu }}</a></li>
  126. {% if admin.modularTypes is not empty %}
  127. <li><a class="button" href="#modular" data-remodal-target="modular">{{ "PLUGIN_ADMIN.ADD_MODULAR"|tu }}</a></li>
  128. {% endif %}
  129. {% for key, add_modal in config.plugins.admin.add_modals %}
  130. {% if add_modal.show_in|defined('bar') == 'dropdown' %}
  131. <li><a class="button {{ add_modal.link_classes }}" href="#modal-add_modal-{{ key }}" data-remodal-target="modal-add_modal-{{ key }}">{{ add_modal.label }}</a></li>
  132. {% endif %}
  133. {% endfor %}
  134. </ul>
  135. </div>
  136. {% if admin.multilang %}
  137. <div class="button-group">
  138. <button type="button" class="button disabled">
  139. <i class="fa fa-flag-o"></i>
  140. {% set langName = admin.siteLanguages[admin_lang] %}
  141. {{ langName[:1]|upper ~ langName[1:] }}
  142. </button>
  143. {% if admin.languages_enabled|length > 1 %}
  144. <button type="button" class="button dropdown-toggle" data-toggle="dropdown">
  145. <i class="fa fa-caret-down"></i>
  146. </button>
  147. <ul class="dropdown-menu language-switcher">
  148. {% for langCode in admin.languages_enabled %}
  149. {% set langName = admin.siteLanguages[langCode] %}
  150. {% if langCode != admin_lang %}
  151. <li><a href="{{ uri.addNonce(base_url_relative ~ theme.slug ~ '/pages/task' ~ config.system.param_sep ~ 'switchlanguage/lang' ~ config.system.param_sep ~ langCode, 'admin-form', 'admin-nonce') }}">{{ langName[:1]|upper ~ langName[1:] }}</a></li>
  152. {% endif %}
  153. {% endfor %}
  154. </ul>
  155. {% endif %}
  156. </div>
  157. {% endif %}
  158. {% elseif mode == 'edit' %}
  159. {{ preview_link|raw }}
  160. <a class="button" href="{{ base_url }}/pages" title="{{ "PLUGIN_ADMIN.BACK"|tu }}"><i class="fa fa-reply"></i></a>
  161. {% set siblings = context.parent().children() %}
  162. {% if not siblings.isFirst(context.path) %}
  163. {% set sib = siblings.nextSibling(context.path) %}
  164. {% set sib_url = base_url ~ '/pages' ~ (sib.header.routes.default ?: sib.rawRoute) %}
  165. <a class="button hidden-mobile" href="{{ sib_url }}" title="{{ "PLUGIN_ADMIN.PREVIOUS"|tu }}"><i class="fa fa-chevron-left"></i></a>
  166. {% endif %}
  167. {% if not siblings.isLast(context.path) %}
  168. {% set sib = siblings.prevSibling(context.path) %}
  169. {% set sib_url = base_url ~ '/pages' ~ (sib.header.routes.default ?: sib.rawRoute) %}
  170. <a class="button hidden-mobile" href="{{ sib_url }}" title="{{ "PLUGIN_ADMIN.NEXT"|tu }}"><i class="fa fa-chevron-right"></i></a>
  171. {% endif %}
  172. {% if exists %}
  173. <div class="button-group">
  174. <button type="button" class="button disabled" href="#modal" data-remodal-target="modal">
  175. <i class="fa fa-plus"></i> {{ "PLUGIN_ADMIN.ADD"|tu }}
  176. </button>
  177. <button type="button" class="button dropdown-toggle" data-toggle="dropdown">
  178. <i class="fa fa-caret-down"></i>
  179. </button>
  180. <ul class="dropdown-menu">
  181. <li><a class="button" href="#modal" data-remodal-target="modal">{{ "PLUGIN_ADMIN.ADD_PAGE"|tu }}</a></li>
  182. <li><a class="button" href="#modal-folder" data-remodal-target="modal-folder">{{ "PLUGIN_ADMIN.ADD_FOLDER"|tu }}</a></li>
  183. {% if admin.modularTypes is not empty %}
  184. <li><a class="button" href="#modular" data-remodal-target="modular">{{ "PLUGIN_ADMIN.ADD_MODULAR"|tu }}</a></li>
  185. {% endif %}
  186. </ul>
  187. </div>
  188. <a class="button disable-after-click" href="{{ uri.addNonce(page_url ~ '/task' ~ config.system.param_sep ~ 'copy', 'admin-form', 'admin-nonce') }}" class="page-copy" ><i class="fa fa-copy"></i> {{ "PLUGIN_ADMIN.COPY"|tu }}</a>
  189. <a class="button" href="#" data-remodal-target="move"><i class="fa fa-arrows"></i> {{ "PLUGIN_ADMIN.MOVE"|tu }}</a>
  190. {% if config.plugins['admin-pro'].enabled %}
  191. <a class="button" href="#" data-remodal-target="revisions"><i class="fa fa-history"></i> {{ "PLUGIN_ADMIN_PRO.REVISIONS"|tu }}</a>
  192. {% endif %}
  193. {% if warn %}
  194. <a class="button" href="#delete" data-remodal-target="delete" data-delete-url="{{ uri.addNonce(page_url ~ '/task' ~ config.system.param_sep ~ 'delete', 'admin-form', 'admin-nonce') }}"><i class="fa fa-close"></i> {{ "PLUGIN_ADMIN.DELETE"|tu }}</a>
  195. {% else %}
  196. <a class="button disable-after-click" href="{{ uri.addNonce(uri.route(true) ~ '/task' ~ config.system.param_sep ~ 'delete', 'admin-form', 'admin-nonce') }}" class="page-delete" ><i class="fa fa-close"></i></a>
  197. {% endif %}
  198. {% endif %}
  199. <div class="button-group">
  200. <button class="button" name="task" value="save" form="blueprints" type="submit"><i class="fa fa-check"></i> {{ "PLUGIN_ADMIN.SAVE"|tu }}</button>
  201. {% if exists and admin.multilang %}
  202. {% if context.untranslatedLanguages %}
  203. <button type="button" class="button dropdown-toggle" data-toggle="dropdown">
  204. <i class="fa fa-caret-down"></i>
  205. </button>
  206. <ul class="dropdown-menu lang-switcher">
  207. {% for langCode in context.untranslatedLanguages %}
  208. {% set langName = admin.siteLanguages[langCode] %}
  209. {% if langCode != page_lang %}
  210. <li><button class="button task" name="task" value="saveas" lang="{{langCode}}" form="blueprints" type="submit">{{ "PLUGIN_ADMIN.SAVE_AS"|tu }} {{ langName[:1]|upper ~ langName[1:] }}</button>
  211. {% endif %}
  212. {% endfor %}
  213. </ul>
  214. {% endif %}
  215. {% endif %}
  216. </div>
  217. {% endif %}
  218. </div>
  219. {% if mode == 'new' %}
  220. <h1><i class="fa fa-fw fa-file-text-o"></i> {{ "PLUGIN_ADMIN.ADD_PAGE"|tu }}</h1>
  221. {% elseif mode == 'edit' %}
  222. <h1><i class="fa fa-fw fa-file-text-o"></i>
  223. {{ context.menu }}
  224. </h1>
  225. {% else %}
  226. <h1><i class="fa fa-fw fa-file-text-o"></i> {{ "PLUGIN_ADMIN.MANAGE_PAGES"|tu }}</h1>
  227. {% endif %}
  228. {% endblock %}
  229. {% block content %}
  230. <div class="clear admin-pages">
  231. {% if mode == 'new' %}
  232. {% include 'partials/blueprints-new.html.twig' with { blueprints: admin.blueprints('pages/page'), data: context } %}
  233. {% elseif mode == 'edit' %}
  234. <div class="admin-form-wrapper">
  235. <div id="admin-topbar">
  236. {% if admin.multilang and page_lang %}
  237. <div id="admin-lang-toggle" class="button-group">
  238. <button type="button" class="button disabled">
  239. {% if exists %}
  240. {{ page_lang }}
  241. {% else %}
  242. {{ admin_lang }}
  243. {% endif %}
  244. </button>
  245. {% if exists and context.translatedLanguages|length > 1 %}
  246. <button type="button" class="button dropdown-toggle" data-toggle="dropdown">
  247. <i class="fa fa-caret-down"></i>
  248. </button>
  249. <ul class="dropdown-menu language-switcher">
  250. {% for language, route in context.translatedLanguages %}
  251. {% if language != page_lang %}
  252. <li><button class="task" name="task" value="switchlanguage" lang="{{language}}" redirect="{{context.rawRoute|trim('/')}}" form="blueprints">{{ language }}</button>
  253. {% endif %}
  254. {% endfor %}
  255. </ul>
  256. {% endif %}
  257. </div>
  258. {% endif %}
  259. {% if context.blueprints.fields %}
  260. {% set normalText = "PLUGIN_ADMIN.NORMAL"|tu %}
  261. {% set expertText = "PLUGIN_ADMIN.EXPERT"|tu %}
  262. {% set maxLen = max([normalText|length, expertText|length]) %}
  263. {% set normalText = _self.spanToggle(normalText, maxLen) %}
  264. {% set expertText = _self.spanToggle(expertText, maxLen) %}
  265. <form id="admin-mode-toggle">
  266. <div class="switch-toggle switch-grav">
  267. <input type="radio" value="normal" data-leave-url="{{ base_url }}/pages/{{ admin.route|trim('/') }}/mode{{ config.system.param_sep }}normal" id="normal" name="mode-switch" class="highlight" {% if admin.session.expert == '0' %} checked="checked"{% endif %}>
  268. <label for="normal">{{ normalText|raw }}</label>
  269. <input type="radio" value="expert" data-leave-url="{{ base_url }}/pages/{{ admin.route|trim('/') }}/mode{{ config.system.param_sep }}expert" id="expert" name="mode-switch" class="highlight" {% if admin.session.expert == '1' %} checked="checked"{% endif %}>
  270. <label for="expert">{{ expertText|raw }}</label>
  271. <a></a>
  272. </div>
  273. </form>
  274. {% endif %}
  275. </div>
  276. {% if context.blueprints.fields and admin.session.expert == '0' %}
  277. {% include 'partials/blueprints.html.twig' with { blueprints: context.blueprints, data: context } %}
  278. {% else %}
  279. {% include 'partials/blueprints-raw.html.twig' with { blueprints: admin.blueprints('admin/pages/'~modular~'raw'), data: context } %}
  280. {% endif %}
  281. </div>
  282. {% else %}
  283. <form id="page-filtering">
  284. <div class="page-filters">
  285. <input type="text" data-filter-labels="{{ [{'id': 'mode', 'name': 'PLUGIN_ADMIN.PAGE_MODES'|tu}, {'id': 'type', 'name': 'PLUGIN_ADMIN.PAGE_TYPES'|tu}, {'id': 'access', 'name': 'PLUGIN_ADMIN.ACCESS_LEVELS'|tu}] |json_encode|e('html_attr')}}" data-filter-types="{{ admin.types|merge(admin.modularTypes)|json_encode|e('html_attr') }}" data-filter-access-levels="{{ admin.accessLevels|json_encode|e('html_attr') }}" placeholder="{{ "PLUGIN_ADMIN.ADD_FILTERS"|tu }}" class="page-filter" name="page-filter" />
  286. </div>
  287. <div class="page-search">
  288. <input type="text" placeholder="{{ "PLUGIN_ADMIN.SEARCH_PAGES"|tu }}" name="page-search" />
  289. </div>
  290. <div class="page-shortcuts">
  291. <span class="button button-x-small" data-page-toggleall="expand"><i class="fa fa-fw fa-plus-circle"></i> {{ "PLUGIN_ADMIN.EXPAND_ALL"|tu }}</span>
  292. <span class="button button-x-small" data-page-toggleall="collapse"><i class="fa fa-fw fa-minus-circle"></i> {{ "PLUGIN_ADMIN.COLLAPSE_ALL"|tu }}</span>
  293. </div>
  294. </form>
  295. <div class="pages-list">
  296. <ul class="depth-0">
  297. {{ _self.loop(pages, 0, _context) }}
  298. </ul>
  299. {% include 'partials/page-legend.html.twig' %}
  300. </div>
  301. {% endif %}
  302. </div>
  303. {% if context %}
  304. {% set obj_data = clone(context) %}
  305. {% if mode == 'edit' %}
  306. {% do obj_data.folder('') %}
  307. {% endif %}
  308. {% endif %}
  309. {% if mode == 'list' or mode == 'edit' %}
  310. <div class="remodal" data-remodal-id="modal" data-remodal-options="hashTracking: false">
  311. {% include 'partials/blueprints-new.html.twig' with { blueprints: admin.blueprints('admin/pages/new'), data: obj_data, form_id:'new-page' } %}
  312. </div>
  313. <div class="remodal" data-remodal-id="modal-folder" data-remodal-options="hashTracking: false">
  314. {% include 'partials/blueprints-new-folder.html.twig' with { blueprints: admin.blueprints('admin/pages/new_folder'), data: obj_data, form_id:'new-folder' } %}
  315. </div>
  316. <div class="remodal" data-remodal-id="modular" data-remodal-options="hashTracking: false">
  317. {% include 'partials/blueprints-new.html.twig' with { blueprints: admin.blueprints('admin/pages/modular_new'), data: obj_data, form_id:'new-modular' } %}
  318. </div>
  319. {% for key, add_modal in config.plugins.admin.add_modals %}
  320. <div class="remodal {{ add_modal.modal_classes|defined('') }}" data-remodal-id="modal-add_modal-{{ key }}" data-remodal-options="hashTracking: false">
  321. {% include add_modal.template|defined('partials/blueprints-new.html.twig') with { blueprints: admin.blueprints(add_modal.blueprint), data: context, form_id:'add-modal' }|merge(add_modal.with|defined({})) %}
  322. </div>
  323. {% endfor %}
  324. {% endif %}
  325. {% if mode == 'edit' %}
  326. <div class="remodal" data-remodal-id="move" data-remodal-options="hashTracking: false">
  327. {% include 'partials/page-move.html.twig' with { blueprints: admin.blueprints('admin/pages/move'), data: context } %}
  328. </div>
  329. <div class="remodal" data-remodal-id="revisions" data-remodal-options="hashTracking: false">
  330. {% include ['partials/page-revisions.html.twig', 'empty.html.twig'] ignore missing with { data: context } %}
  331. </div>
  332. {% endif %}
  333. {% include 'partials/modal-changes-detected.html.twig' %}
  334. <div class="remodal" data-remodal-id="delete" data-remodal-options="hashTracking: false">
  335. <form>
  336. <h1>{{ "PLUGIN_ADMIN.MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE"|tu }}</h1>
  337. <p class="bigger">
  338. {% if context %}
  339. <strong>{{ "PLUGIN_ADMIN.PAGE"|tu }}: {{ context.title }}</strong>
  340. {% endif %}
  341. </p>
  342. <p class="bigger">
  343. {{ "PLUGIN_ADMIN.MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC"|tu }}
  344. </p>
  345. <br>
  346. <div class="button-bar">
  347. <button data-remodal-action="cancel" class="button secondary remodal-cancel"><i class="fa fa-fw fa-close"></i> {{ "PLUGIN_ADMIN.CANCEL"|tu }}</button>
  348. <a class="button disable-after-click" data-delete-action href="#"><i class="fa fa-fw fa-check"></i> {{ "PLUGIN_ADMIN.CONTINUE"|tu }}</a>
  349. </div>
  350. </form>
  351. </div>
  352. {% include 'partials/admin-pro-pages-addons.html.twig' ignore missing %}
  353. {% endblock %}
  354. {% block bottom %}
  355. <script>
  356. $('.admin-pages .form-tabs .tabs-nav').css('margin-right', ($('#admin-topbar').width() + 20) + 'px');
  357. </script>
  358. {% endblock %}