From 9ecbe67277e00f84c996d8c18fb8785b800de4c6 Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Thu, 30 Jun 2022 18:46:32 +0200
Subject: [PATCH] preview for page, post and program

---
 .../websites/pages_controller.rb              |  1 -
 .../websites/posts_controller.rb              |  4 +++
 .../admin/education/programs_controller.rb    |  5 ++++
 .../websites/posts/preview.html.erb           |  6 +++++
 .../websites/posts/show.html.erb              |  7 -----
 .../admin/education/programs/preview.html.erb | 27 +++++++++++++++++++
 .../admin/education/programs/show.html.erb    | 21 ---------------
 app/views/admin/layouts/preview.html.erb      | 19 ++++---------
 config/routes/admin/communication.rb          |  1 +
 config/routes/admin/education.rb              |  1 +
 10 files changed, 49 insertions(+), 43 deletions(-)
 create mode 100644 app/views/admin/communication/websites/posts/preview.html.erb
 create mode 100644 app/views/admin/education/programs/preview.html.erb

diff --git a/app/controllers/admin/communication/websites/pages_controller.rb b/app/controllers/admin/communication/websites/pages_controller.rb
index d4c34e112..c6c290817 100644
--- a/app/controllers/admin/communication/websites/pages_controller.rb
+++ b/app/controllers/admin/communication/websites/pages_controller.rb
@@ -36,7 +36,6 @@ class Admin::Communication::Websites::PagesController < Admin::Communication::We
   end
 
   def preview
-    @url = @website.url
     render layout: 'admin/layouts/preview'
   end
 
diff --git a/app/controllers/admin/communication/websites/posts_controller.rb b/app/controllers/admin/communication/websites/posts_controller.rb
index 3c711ef52..0b432a856 100644
--- a/app/controllers/admin/communication/websites/posts_controller.rb
+++ b/app/controllers/admin/communication/websites/posts_controller.rb
@@ -36,6 +36,10 @@ class Admin::Communication::Websites::PostsController < Admin::Communication::We
     breadcrumb
   end
 
+  def preview
+    render layout: 'admin/layouts/preview'
+  end
+
   def static
     @about = @post
     render layout: false
diff --git a/app/controllers/admin/education/programs_controller.rb b/app/controllers/admin/education/programs_controller.rb
index 230760853..edb228022 100644
--- a/app/controllers/admin/education/programs_controller.rb
+++ b/app/controllers/admin/education/programs_controller.rb
@@ -54,6 +54,11 @@ class Admin::Education::ProgramsController < Admin::Education::ApplicationContro
     breadcrumb
   end
 
+  def preview
+    @website = @program.websites&.first
+    render layout: 'admin/layouts/preview'
+  end
+
   def new
     breadcrumb
   end
diff --git a/app/views/admin/communication/websites/posts/preview.html.erb b/app/views/admin/communication/websites/posts/preview.html.erb
new file mode 100644
index 000000000..2e02e0662
--- /dev/null
+++ b/app/views/admin/communication/websites/posts/preview.html.erb
@@ -0,0 +1,6 @@
+<div class="container">
+    <%= @post.text.to_s %>
+</div>
+<% @post.blocks.ordered.each do |block| %>
+    <%= render 'admin/communication/blocks/preview', block: block %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/admin/communication/websites/posts/show.html.erb b/app/views/admin/communication/websites/posts/show.html.erb
index fd1c4ea35..77aee23f8 100644
--- a/app/views/admin/communication/websites/posts/show.html.erb
+++ b/app/views/admin/communication/websites/posts/show.html.erb
@@ -87,13 +87,6 @@
   </div>
 <% end %>
 
-<% content_for :preview do %>
-  <%= @post.text.to_s %>
-  <% @post.blocks.ordered.each do |block| %>
-    <%= render 'admin/communication/blocks/preview', block: block %>
-  <% end %>
-<% end %>
-
 <% content_for :action_bar_left do %>
   <%= destroy_link @post %>
   <%= link_to t('static'),
diff --git a/app/views/admin/education/programs/preview.html.erb b/app/views/admin/education/programs/preview.html.erb
new file mode 100644
index 000000000..1826c48e8
--- /dev/null
+++ b/app/views/admin/education/programs/preview.html.erb
@@ -0,0 +1,27 @@
+<%  [
+    :presentation,
+    :objectives
+    ].each do |property| %>
+    <%= @program.send(property).to_s %>
+<% end %>
+
+<% @program.blocks.ordered.each do |block| %>
+    <%= render 'admin/communication/blocks/preview', block: block %>
+<% end %>
+
+<%  [
+    :opportunities,
+    :results,
+    :accessibility,
+    :duration,
+    :pricing,
+    :content,
+    :pedagogy,
+    :evaluation,
+    :prerequisites,
+    :registration,
+    :other,
+    :contacts
+    ].each do |property| %>
+    <%= @program.send(property).to_s %>
+<% end %>
diff --git a/app/views/admin/education/programs/show.html.erb b/app/views/admin/education/programs/show.html.erb
index 1699cb9e8..7c6c26596 100644
--- a/app/views/admin/education/programs/show.html.erb
+++ b/app/views/admin/education/programs/show.html.erb
@@ -179,27 +179,6 @@
   </div>
 </div>
 
-<% content_for :preview do %>
-  <%  [
-        :presentation,
-        :objectives,
-        :opportunities,
-        :results,
-        :accessibility,
-        :duration,
-        :pricing,
-        :content,
-        :pedagogy,
-        :evaluation,
-        :prerequisites,
-        :registration,
-        :other,
-        :contacts
-      ].each do |property| %>
-    <%= @program.send(property).to_s %>
-  <% end %>
-<% end %>
-
 <% content_for :action_bar_left do %>
   <%= destroy_link @program %>
 <% end %>
diff --git a/app/views/admin/layouts/preview.html.erb b/app/views/admin/layouts/preview.html.erb
index 8012119e1..791854a7d 100644
--- a/app/views/admin/layouts/preview.html.erb
+++ b/app/views/admin/layouts/preview.html.erb
@@ -1,23 +1,14 @@
-<%
-@html = Nokogiri::HTML open(@url)
-@css_files = @html.xpath '//link[@rel="stylesheet"]/@href'
-@css = ''
-@css_files.each do |url|
-  uri = URI.parse url
-  data = Net::HTTP.get uri
-  data = data.force_encoding("UTF-8")
-  data = data.gsub "src:url(../", "src:url(#{@url}/assets/"
-  data = data.gsub ",url(../", ",url(#{@url}/assets/"
-  @css << data
-end
-%>
 <!DOCTYPE html>
 <html>
   <head>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <title><%= yield :title %></title>
-    <link rel="stylesheet" media="all" href="<%= style_admin_communication_website_path @website.id, website_id: nil %>" />
+    <% if @website %>
+      <link rel="stylesheet" media="all" href="<%= style_admin_communication_website_path @website.id, website_id: nil %>" />
+    <% else %>
+      <%= stylesheet_link_tag 'admin', media: 'all' %>
+    <% end %>
   </head>
   <body>
     <main class="page-with-blocks" id="main" role="main" tabindex="-1">
diff --git a/config/routes/admin/communication.rb b/config/routes/admin/communication.rb
index 03f7821a3..2d1b47145 100644
--- a/config/routes/admin/communication.rb
+++ b/config/routes/admin/communication.rb
@@ -30,6 +30,7 @@ namespace :communication do
       post :publish, on: :collection
       member do
         get :static
+        get :preview
       end
     end
     resources :curations,
diff --git a/config/routes/admin/education.rb b/config/routes/admin/education.rb
index b2ebafe49..acac8d244 100644
--- a/config/routes/admin/education.rb
+++ b/config/routes/admin/education.rb
@@ -30,6 +30,7 @@ namespace :education do
     end
     member do
       get :children
+      get :preview
     end
   end
   resources :academic_years
-- 
GitLab