diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/pages_controller.rb | 20 | ||||
| -rw-r--r-- | app/controllers/related_assets_controller.rb | 1 | ||||
| -rw-r--r-- | app/controllers/shared_previews_controller.rb | 2 | ||||
| -rw-r--r-- | app/helpers/content_helper.rb | 6 | ||||
| -rw-r--r-- | app/models/asset.rb | 4 | ||||
| -rw-r--r-- | app/models/page.rb | 22 | ||||
| -rw-r--r-- | app/views/assets/show.html.erb | 1 | ||||
| -rw-r--r-- | app/views/content/_asset_credits.html.erb | 6 | ||||
| -rw-r--r-- | app/views/content/_headline_image.html.erb | 15 | ||||
| -rw-r--r-- | app/views/nodes/edit.html.erb | 1 | ||||
| -rw-r--r-- | app/views/nodes/show.html.erb | 10 |
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 | ||
| 25 | end | 31 | end |
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 | ||
| 176 | end | 180 | end |
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 | ||
| 18 | end | 22 | end |
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> |
