summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/assets_controller.rb24
-rw-r--r--app/controllers/csp_reports_controller.rb4
-rw-r--r--app/controllers/nodes_controller.rb4
-rw-r--r--app/controllers/pages_controller.rb20
-rw-r--r--app/controllers/related_assets_controller.rb17
-rw-r--r--app/controllers/shared_previews_controller.rb2
6 files changed, 53 insertions, 18 deletions
diff --git a/app/controllers/assets_controller.rb b/app/controllers/assets_controller.rb
index d150e06..fbede0a 100644
--- a/app/controllers/assets_controller.rb
+++ b/app/controllers/assets_controller.rb
@@ -28,6 +28,7 @@ class AssetsController < ApplicationController
28 # GET /assets/new.xml 28 # GET /assets/new.xml
29 def new 29 def new
30 @asset = Asset.new 30 @asset = Asset.new
31 @attach_node = Node.not_in_trash.find_by(:id => params[:node_id]) if params[:node_id].present?
31 32
32 respond_to do |format| 33 respond_to do |format|
33 format.html # new.html.erb 34 format.html # new.html.erb
@@ -44,10 +45,12 @@ class AssetsController < ApplicationController
44 # POST /assets.xml 45 # POST /assets.xml
45 def create 46 def create
46 @asset = Asset.new(asset_params) 47 @asset = Asset.new(asset_params)
48 attach_node = Node.not_in_trash.find_by(:id => params[:node_id]) if params[:node_id].present?
47 49
48 respond_to do |format| 50 respond_to do |format|
49 if @asset.save 51 if @asset.save
50 flash[:notice] = 'Asset was successfully created.' 52 flash[:notice] = 'Asset was successfully created.'
53 attach_to(attach_node) if attach_node
51 format.html { redirect_to(@asset) } 54 format.html { redirect_to(@asset) }
52 format.xml { render :xml => @asset, :status => :created, :location => @asset } 55 format.xml { render :xml => @asset, :status => :created, :location => @asset }
53 else 56 else
@@ -89,6 +92,25 @@ class AssetsController < ApplicationController
89 private 92 private
90 93
91 def asset_params 94 def asset_params
92 params.require(:asset).permit(:name, :upload) 95 params.require(:asset).permit(:name, :upload, :creator, :source_url, :license_key)
96 end
97
98 def attach_to node
99 result = node.attach_asset!(@asset, :user => current_user,
100 :headline => params[:headline].present?)
101 flash[:notice] =
102 if result[:attached].zero?
103 "Asset saved — it was already attached to “#{node.title}”."
104 else
105 "Asset was successfully created and attached to “#{node.title}”."
106 end
107 case result[:headline]
108 when :set then flash[:notice] += " It is now the page's headline."
109 when :kept_existing then flash[:headline_kept_path] = node_path(node)
110 when :not_eligible then flash[:error] = "This asset type cannot be a headline."
111 end
112 rescue LockedByAnotherUser
113 flash[:locked_by] = node.lock_owner&.login
114 flash[:locked_node_path] = node_path(node)
93 end 115 end
94end 116end
diff --git a/app/controllers/csp_reports_controller.rb b/app/controllers/csp_reports_controller.rb
index a8f8edb..5a3b55e 100644
--- a/app/controllers/csp_reports_controller.rb
+++ b/app/controllers/csp_reports_controller.rb
@@ -12,9 +12,9 @@ class CspReportsController < ApplicationController
12 if report 12 if report
13 directive = report["effective-directive"] || report["violated-directive"] 13 directive = report["effective-directive"] || report["violated-directive"]
14 at = (URI.parse(report["document-uri"]).path rescue "unparsed") 14 at = (URI.parse(report["document-uri"]).path rescue "unparsed")
15 Rails.logger.warn("CSP violation: #{directive} blocked=#{report['blocked-uri']} at=#{at}") 15 CSP_LOGGER.warn("CSP violation: #{directive} blocked=#{report['blocked-uri']} at=#{at}")
16 else 16 else
17 Rails.logger.warn("CSP violation: unparseable report (#{raw.to_s.bytesize} bytes)") 17 CSP_LOGGER.warn("CSP violation: unparseable report (#{raw.to_s.bytesize} bytes)")
18 end 18 end
19 19
20 head :no_content 20 head :no_content
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb
index 6caa827..9c84420 100644
--- a/app/controllers/nodes_controller.rb
+++ b/app/controllers/nodes_controller.rb
@@ -223,10 +223,6 @@ class NodesController < ApplicationController
223 @nodes = index_matching(Node.drafts_and_autosaves) 223 @nodes = index_matching(Node.drafts_and_autosaves)
224 end 224 end
225 225
226 def recent
227 @nodes = index_matching(Node.recently_changed)
228 end
229
230 def mine 226 def mine
231 base = Node.joins(:pages) 227 base = Node.joins(:pages)
232 .where("pages.user_id = ? or pages.editor_id = ?", current_user, current_user) 228 .where("pages.user_id = ? or pages.editor_id = ?", current_user, current_user)
diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb
index 2d08dea..326fbd4 100644
--- a/app/controllers/pages_controller.rb
+++ b/app/controllers/pages_controller.rb
@@ -6,6 +6,19 @@ class PagesController < ApplicationController
6 6
7 def preview 7 def preview
8 @page = Page.find(params[:id]) 8 @page = Page.find(params[:id])
9 unless @page.node
10 node = Node.find_by(autosave_id: @page.id) ||
11 Node.find_by(draft_id: @page.id) ||
12 Node.find_by(head_id: @page.id)
13 @page.node = node if node
14 end
15
16 node ||= @page.node
17 if node && node.draft_id == @page.id && node.autosave
18 @page = node.autosave
19 @page.node = node
20 end
21
9 22
10 if @page 23 if @page
11 template = @page.valid_template 24 template = @page.valid_template
@@ -15,11 +28,4 @@ class PagesController < ApplicationController
15 ) 28 )
16 end 29 end
17 end 30 end
18
19 def sort_images
20 page = Page.find(params[:id])
21 page.update_assets(params[:images])
22
23 head :ok
24 end
25end 31end
diff --git a/app/controllers/related_assets_controller.rb b/app/controllers/related_assets_controller.rb
index 5af73fc..ca894f2 100644
--- a/app/controllers/related_assets_controller.rb
+++ b/app/controllers/related_assets_controller.rb
@@ -5,10 +5,10 @@ class RelatedAssetsController < ApplicationController
5 def search 5 def search
6 term = params[:search_term].to_s.strip 6 term = params[:search_term].to_s.strip
7 attached_ids = @node.editable_page.related_assets.pluck(:asset_id) 7 attached_ids = @node.editable_page.related_assets.pluck(:asset_id)
8 scope = Asset.images.where.not(id: attached_ids) 8 scope = Asset.headline_eligible.where.not(id: attached_ids)
9 9
10 results = if term.present? 10 results = if term.present?
11 scope.where("name ILIKE ?", "%#{term}%").limit(10) 11 scope.where("name ILIKE :term OR upload_file_name ILIKE :term", term: "%#{term}%").limit(10)
12 else 12 else
13 scope.order(created_at: :desc).limit(5) 13 scope.order(created_at: :desc).limit(5)
14 end 14 end
@@ -26,6 +26,7 @@ class RelatedAssetsController < ApplicationController
26 id: related.id, 26 id: related.id,
27 asset_id: asset.id, 27 asset_id: asset.id,
28 name: asset.name, 28 name: asset.name,
29 has_credit: asset.show_credit?,
29 thumb_url: asset.upload.url(:thumb), 30 thumb_url: asset.upload.url(:thumb),
30 large_url: asset.upload.url(:large), 31 large_url: asset.upload.url(:large),
31 original_url: asset.upload.url, 32 original_url: asset.upload.url,
@@ -39,7 +40,17 @@ class RelatedAssetsController < ApplicationController
39 end 40 end
40 41
41 def update 42 def update
42 @node.editable_page.related_assets.find(params[:id]).insert_at(params[:position].to_i) 43 related = @node.editable_page.related_assets.find(params[:id])
44
45 if params.key?(:headline)
46 RelatedAsset.transaction do
47 @node.editable_page.related_assets.update_all(headline: false)
48 related.update!(headline: true) if params[:headline] == "true"
49 end
50 else
51 related.insert_at(params[:position].to_i)
52 end
53
43 head :ok 54 head :ok
44 end 55 end
45 56
diff --git a/app/controllers/shared_previews_controller.rb b/app/controllers/shared_previews_controller.rb
index f6fb45a..65f744d 100644
--- a/app/controllers/shared_previews_controller.rb
+++ b/app/controllers/shared_previews_controller.rb
@@ -8,7 +8,7 @@ class SharedPreviewsController < ApplicationController
8 is_draft = node.draft_id == @page.id 8 is_draft = node.draft_id == @page.id
9 9
10 currently_public = is_head && @page.public? 10 currently_public = is_head && @page.public?
11 superseded = !is_head && !is_draft 11 superseded = !is_head && !is_draft
12 12
13 if superseded || currently_public 13 if superseded || currently_public
14 redirect_to @page.public_link 14 redirect_to @page.public_link