summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/pages_controller.rb20
-rw-r--r--app/controllers/related_assets_controller.rb1
-rw-r--r--app/controllers/shared_previews_controller.rb2
-rw-r--r--app/helpers/content_helper.rb6
-rw-r--r--app/models/asset.rb4
-rw-r--r--app/models/page.rb22
-rw-r--r--app/views/assets/show.html.erb1
-rw-r--r--app/views/content/_asset_credits.html.erb6
-rw-r--r--app/views/content/_headline_image.html.erb15
-rw-r--r--app/views/nodes/edit.html.erb1
-rw-r--r--app/views/nodes/show.html.erb10
11 files changed, 51 insertions, 37 deletions
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 da82cde..2fefaf7 100644
--- a/app/controllers/related_assets_controller.rb
+++ b/app/controllers/related_assets_controller.rb
@@ -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.has_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,
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
diff --git a/app/helpers/content_helper.rb b/app/helpers/content_helper.rb
index 5b67259..b3c6bad 100644
--- a/app/helpers/content_helper.rb
+++ b/app/helpers/content_helper.rb
@@ -153,7 +153,7 @@ module ContentHelper
153 153
154 def asset_credit(asset) 154 def asset_credit(asset)
155 return nil unless asset 155 return nil unless asset
156 return nil if asset.creator.blank? && asset.source_url.blank? && asset.license_key.blank? 156 return nil unless asset.has_credit?
157 157
158 license = AssetLicense.find(asset.license_key) 158 license = AssetLicense.find(asset.license_key)
159 159
@@ -173,4 +173,8 @@ module ContentHelper
173 full = license_text ? safe_join([attribution, license_text], ", ") : attribution 173 full = license_text ? safe_join([attribution, license_text], ", ") : attribution
174 safe_join([full, "."]) 174 safe_join([full, "."])
175 end 175 end
176
177 def glightbox_data(image, title)
178 "title: #{title.to_s.tr(';', ',')};"
179 end
176end 180end
diff --git a/app/models/asset.rb b/app/models/asset.rb
index 8bea1b3..4a295d8 100644
--- a/app/models/asset.rb
+++ b/app/models/asset.rb
@@ -15,4 +15,8 @@ class Asset < ApplicationRecord
15 def image? 15 def image?
16 IMAGE_CONTENT_TYPES.include?(upload_content_type) 16 IMAGE_CONTENT_TYPES.include?(upload_content_type)
17 end 17 end
18
19 def has_credit?
20 creator.present? || source_url.present? || license_key.present?
21 end
18end 22end
diff --git a/app/models/page.rb b/app/models/page.rb
index f33d88d..c1498fc 100644
--- a/app/models/page.rb
+++ b/app/models/page.rb
@@ -220,7 +220,12 @@ class Page < ApplicationRecord
220 end 220 end
221 221
222 # Clone asset references 222 # Clone asset references
223 self.assets = page.assets 223 self.related_assets.delete_all
224 page.related_assets.each do |related|
225 self.related_assets.create!(:asset_id => related.asset_id,
226 :position => related.position,
227 :headline => related.headline)
228 end
224 229
225 self.save 230 self.save
226 end 231 end
@@ -314,21 +319,6 @@ class Page < ApplicationRecord
314 end 319 end
315 end 320 end
316 321
317 def update_assets image_ids
318
319 transaction do
320 self.related_assets.delete_all
321
322 if image_ids
323 image_ids.each_with_index do |id, index|
324 asset = Asset.find(id)
325 self.related_assets.create!(:asset_id => asset.id, :position => index+1)
326 end
327 end
328 end
329
330 end
331
332 # Installs (or re-installs) the trigger that keeps page_translations' 322 # Installs (or re-installs) the trigger that keeps page_translations'
333 # search_vector in sync. Idempotent, safe to call on every boot. 323 # search_vector in sync. Idempotent, safe to call on every boot.
334 # search_vector is populated by a raw Postgres trigger, not anything 324 # search_vector is populated by a raw Postgres trigger, not anything
diff --git a/app/views/assets/show.html.erb b/app/views/assets/show.html.erb
index a0e4e46..e551e35 100644
--- a/app/views/assets/show.html.erb
+++ b/app/views/assets/show.html.erb
@@ -16,7 +16,6 @@
16 </div> 16 </div>
17 </div> 17 </div>
18 18
19 <div class="node_description">Thumbnail</div>
20 <% if @asset.has_variant?(:medium) %> 19 <% if @asset.has_variant?(:medium) %>
21 <div class="node_description">Thumbnail</div> 20 <div class="node_description">Thumbnail</div>
22 <div class="node_content"><%= image_tag @asset.upload.url(:medium), style: "max-width: 300px; max-height: 300px;" %></div> 21 <div class="node_content"><%= image_tag @asset.upload.url(:medium), style: "max-width: 300px; max-height: 300px;" %></div>
diff --git a/app/views/content/_asset_credits.html.erb b/app/views/content/_asset_credits.html.erb
index 85739d0..5959abd 100644
--- a/app/views/content/_asset_credits.html.erb
+++ b/app/views/content/_asset_credits.html.erb
@@ -1,11 +1,9 @@
1<% if @page.assets.images.any? %> 1<% if @page.assets.images.any? %>
2 <div id="asset_credits"> 2 <div id="asset_credits">
3 <% @page.assets.images.each do |image| %> 3 <% @page.assets.images.each do |image| %>
4 <% credit = asset_credit(image) %>
5 <% next unless credit %>
6 <div id="credit_for_asset_<%= image.id %>" 4 <div id="credit_for_asset_<%= image.id %>"
7 class="glightbox-desc<%= " headline_credit" if image == @headline_asset %>"> 5 class="asset_credit_block<%= " headline_credit" if image == @headline_asset %>">
8 <%= credit %> 6 <%= asset_credit(image) %>
9 </div> 7 </div>
10 <% end %> 8 <% end %>
11 </div> 9 </div>
diff --git a/app/views/content/_headline_image.html.erb b/app/views/content/_headline_image.html.erb
index c764d22..e7b821b 100644
--- a/app/views/content/_headline_image.html.erb
+++ b/app/views/content/_headline_image.html.erb
@@ -5,8 +5,9 @@
5 image_tag(@headline_asset.upload.url(:headline)), 5 image_tag(@headline_asset.upload.url(:headline)),
6 @headline_asset.upload.url, 6 @headline_asset.upload.url,
7 :class => "glightbox", 7 :class => "glightbox",
8 :data => { :gallery => "page-#{@page.node.id}", :title => @headline_asset.name, 8 :data => { :gallery => "page-#{@page.node.id}",
9 :description => "#credit_for_asset_#{@headline_asset.id}" } 9 :glightbox => glightbox_data(@headline_asset, @headline_asset.name),
10 :"credit-selector" => (@headline_asset.has_credit? ? "#credit_for_asset_#{@headline_asset.id}" : nil) }
10 ) %> 11 ) %>
11 <% if gallery_images.size > 1 %> 12 <% if gallery_images.size > 1 %>
12 <div class="right"><%= "#{gallery_images.size} #{t(:images)}" %></div> 13 <div class="right"><%= "#{gallery_images.size} #{t(:images)}" %></div>
@@ -15,14 +16,16 @@
15 <%= link_to "#{gallery_images.size} #{t(:images)}, #{t(:open_gallery)}", 16 <%= link_to "#{gallery_images.size} #{t(:images)}, #{t(:open_gallery)}",
16 gallery_images.first.upload.url, 17 gallery_images.first.upload.url,
17 :class => "glightbox right", 18 :class => "glightbox right",
18 :data => { :gallery => "page-#{@page.node.id}", :title => gallery_images.first.name, 19 :data => { :gallery => "page-#{@page.node.id}",
19 :description => "#credit_for_asset_#{gallery_images.first.id}" } %> 20 :glightbox => glightbox_data(gallery_images.first, gallery_images.first.name),
21 :"credit-selector" => (gallery_images.first.has_credit? ? "#credit_for_asset_#{gallery_images.first.id}" : nil) } %>
20<% end %> 22<% end %>
21 23
22<% gallery_images.each do |image| %> 24<% gallery_images.each do |image| %>
23 <% next if image == @headline_asset %> 25 <% next if image == @headline_asset %>
24 <% next if !@headline_asset && image == gallery_images.first %> 26 <% next if !@headline_asset && image == gallery_images.first %>
25 <%= link_to "", image.upload.url, :class => "glightbox", :style => "display: none", 27 <%= link_to "", image.upload.url, :class => "glightbox", :style => "display: none",
26 :data => { :gallery => "page-#{@page.node.id}", :title => image.name, 28 :data => { :gallery => "page-#{@page.node.id}",
27 :description => "#credit_for_asset_#{image.id}" } %> 29 :glightbox => glightbox_data(image, image.name),
30 :"credit-selector" => (image.has_credit? ? "#credit_for_asset_#{image.id}" : nil) } %>
28<% end %> 31<% end %>
diff --git a/app/views/nodes/edit.html.erb b/app/views/nodes/edit.html.erb
index da682f0..07b42d4 100644
--- a/app/views/nodes/edit.html.erb
+++ b/app/views/nodes/edit.html.erb
@@ -86,6 +86,7 @@
86 data-large-url="<%= related.asset.upload.url(:large) %>" 86 data-large-url="<%= related.asset.upload.url(:large) %>"
87 data-original-url="<%= related.asset.upload.url %>" 87 data-original-url="<%= related.asset.upload.url %>"
88 data-name="<%= related.asset.name %>" 88 data-name="<%= related.asset.name %>"
89 data-has-credit="<%= related.asset.has_credit? %>"
89 data-headline="<%= related.headline? %>" 90 data-headline="<%= related.headline? %>"
90 class="<%= "is_headline" if related.headline? %>"> 91 class="<%= "is_headline" if related.headline? %>">
91 <span class="related_asset_handle"><%= icon("grip-vertical", library: "tabler", "aria-hidden": true) %></span> 92 <span class="related_asset_handle"><%= icon("grip-vertical", library: "tabler", "aria-hidden": true) %></span>
diff --git a/app/views/nodes/show.html.erb b/app/views/nodes/show.html.erb
index af05778..a7be3c6 100644
--- a/app/views/nodes/show.html.erb
+++ b/app/views/nodes/show.html.erb
@@ -254,11 +254,19 @@
254 </div> 254 </div>
255 255
256 <% if @page.assets.images.any? %> 256 <% if @page.assets.images.any? %>
257 <% headline_asset_id = @page.related_assets.find_by(headline: true)&.asset_id %>
257 <div class="node_description">Images</div> 258 <div class="node_description">Images</div>
258 <div class="node_content node_info_group"> 259 <div class="node_content node_info_group">
259 <ul class="thumbnail_list"> 260 <ul class="thumbnail_list">
260 <% @page.assets.images.each do |asset| %> 261 <% @page.assets.images.each do |asset| %>
261 <li><%= link_to image_tag(asset.upload.url(:thumb)), asset_path(asset) %></li> 262 <li class="<%= "is_headline" if asset.id == headline_asset_id %>">
263 <%= link_to image_tag(asset.upload.url(:thumb)), asset_path(asset) %>
264 <% if asset.id == headline_asset_id %>
265 <span class="headline_indicator" title="This page's headline image">
266 <%= icon("star", library: "tabler", "aria-hidden": true) %>
267 </span>
268 <% end %>
269 </li>
262 <% end %> 270 <% end %>
263 </ul> 271 </ul>
264 </div> 272 </div>