diff --git a/app/helpers/admin/application_helper.rb b/app/helpers/admin/application_helper.rb
index 7ecd56b565737828bd5ca8676aa3bf4b48c24cd8..802c701136e0f07490f292de0049a3be4fb94750 100644
--- a/app/helpers/admin/application_helper.rb
+++ b/app/helpers/admin/application_helper.rb
@@ -37,6 +37,10 @@ module Admin::ApplicationHelper
             class: button_classes
   end
 
+  def preview_link
+    raw "<button class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#preview\" aria-controls=\"preview\">#{ t 'preview.button'}</button>"
+  end
+
   def button_classes(additional = '', **options)
     classes = "btn btn-primary btn-xs #{additional}"
     classes += ' disabled' if options[:disabled]
diff --git a/app/views/admin/application/_preview.html.erb b/app/views/admin/application/_preview.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..12ee4fca52f1461e4f750b2c9792a560073bbce9
--- /dev/null
+++ b/app/views/admin/application/_preview.html.erb
@@ -0,0 +1,9 @@
+<div class="offcanvas offcanvas-start preview" tabindex="-1" id="preview" aria-labelledby="offcanvasRightLabel" aria-modal="true" role="dialog">
+  <div class="offcanvas-header">
+    <h5 id="offcanvasRightLabel"><%= t 'preview.title' %></h5>
+    <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
+  </div>
+  <div class="offcanvas-body">
+    <%= yield :preview %>
+  </div>
+</div>
diff --git a/app/views/admin/communication/website/posts/show.html.erb b/app/views/admin/communication/website/posts/show.html.erb
index f26b141b904555ce0ec29ac1b26913c83806e16c..0208047e9e1b3fa139c3ef74248c70a8dab4017a 100644
--- a/app/views/admin/communication/website/posts/show.html.erb
+++ b/app/views/admin/communication/website/posts/show.html.erb
@@ -62,17 +62,11 @@
   </div>
 <% end %>
 
-<div class="offcanvas offcanvas-start preview" tabindex="-1" id="preview" aria-labelledby="offcanvasRightLabel" aria-modal="true" role="dialog">
-  <div class="offcanvas-header">
-    <h5 id="offcanvasRightLabel"><%= t 'preview.title' %></h5>
-    <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-  </div>
-  <div class="offcanvas-body">
-    <%= @post.text.to_s %>
-  </div>
-</div>
+<% content_for :preview do %>
+  <%= @post.text.to_s %>
+<% end %>
 
 <% content_for :action_bar_right do %>
-  <button class="btn btn-primary my-1" type="button" data-bs-toggle="offcanvas" data-bs-target="#preview" aria-controls="preview"><%= t 'preview.button' %></button>
+  <%= preview_link %>
   <%= edit_link @post %>
 <% end %>
diff --git a/app/views/admin/layouts/application.html.erb b/app/views/admin/layouts/application.html.erb
index adabf291c242ffb062667deaa3a1c155e140ea4c..91f08ea3ac2b3b3fefdab42ab475ce630c29a158 100644
--- a/app/views/admin/layouts/application.html.erb
+++ b/app/views/admin/layouts/application.html.erb
@@ -37,6 +37,7 @@
             </div>
             <%= yield %>
           </div>
+          <%= render 'admin/application/preview' %>
         </main>
       </div>
     </div>