summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/nodes_controller.rb18
-rw-r--r--app/controllers/shared_previews_controller.rb13
2 files changed, 31 insertions, 0 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb
index 380a659..69aa268 100644
--- a/app/controllers/nodes_controller.rb
+++ b/app/controllers/nodes_controller.rb
@@ -104,6 +104,24 @@ class NodesController < ApplicationController
104 redirect_to node_path(@node) 104 redirect_to node_path(@node)
105 end 105 end
106 106
107 def generate_shared_preview
108 @node = Node.find(params[:id])
109 if @node.draft
110 @node.draft.ensure_preview_token!
111 flash[:notice] = "Shareable preview link created - see below."
112 else
113 flash[:notice] = "Create or edit a draft first - shared preview links are only available for pages with an active draft."
114 end
115 redirect_to node_path(@node)
116 end
117
118 def revoke_shared_preview
119 @node = Node.find(params[:id])
120 @node.draft.revoke_preview_token! if @node.draft
121 flash[:notice] = "Shareable preview link revoked."
122 redirect_to node_path(@node)
123 end
124
107 def parameterize_preview 125 def parameterize_preview
108 render plain: slug_for(params[:title]) 126 render plain: slug_for(params[:title])
109 end 127 end
diff --git a/app/controllers/shared_previews_controller.rb b/app/controllers/shared_previews_controller.rb
new file mode 100644
index 0000000..a8a540f
--- /dev/null
+++ b/app/controllers/shared_previews_controller.rb
@@ -0,0 +1,13 @@
1class SharedPreviewsController < ApplicationController
2 def show
3 @page = Page.find_by!(preview_token: params[:token])
4
5 if @page.node && @page.node.head_id == @page.id
6 redirect_to node_path(@page.node)
7 return
8 end
9
10 response.headers['X-Robots-Tag'] = 'noindex'
11 render template: @page.valid_template, layout: "application"
12 end
13end