add lightbox overlay

This commit is contained in:
Régis Hanol 2013-06-21 18:29:40 +02:00
parent bb908d5913
commit 787555431c
2 changed files with 80 additions and 4 deletions

View File

@ -0,0 +1,57 @@
@import "foundation/variables";
@import "foundation/mixins";
.lightbox {
display: inline-block;
position: relative;
background: black;
img {
opacity: 1;
@include transition(opacity .2s);
}
span {
color: white;
position: absolute;
display: none;
font-size: 18px;
&.filename {
top: 0;
left: 0;
&:before {
font-family: "FontAwesome";
content: "\F03E";
margin-right: 5px;
}
}
&.informations {
color: $dark_gray;
top: 20px;
left: 0;
font-size: 14px;
}
&.expand {
top: 0;
right: 0;
&:before {
font-family: "FontAwesome";
content: "\F065";
}
}
}
@include hover {
img {
opacity: .2;
}
span {
display: inline;
margin: 10px;
}
}
}

View File

@ -4,6 +4,7 @@
require_dependency 'oneboxer' require_dependency 'oneboxer'
class CookedPostProcessor class CookedPostProcessor
include ActionView::Helpers::NumberHelper
def initialize(post, opts={}) def initialize(post, opts={})
@dirty = false @dirty = false
@ -43,7 +44,7 @@ class CookedPostProcessor
# optimize image # optimize image
img['src'] = optimize_image(img) img['src'] = optimize_image(img)
# lightbox treatment # lightbox treatment
convert_to_link!(img, upload.thumbnail_url) convert_to_link!(img, upload)
else else
convert_to_link!(img) convert_to_link!(img)
end end
@ -102,7 +103,7 @@ class CookedPostProcessor
# 2) .png vs. .jpg # 2) .png vs. .jpg
end end
def convert_to_link!(img, thumbnail=nil) def convert_to_link!(img, upload=nil)
src = img["src"] src = img["src"]
width, height = img["width"].to_i, img["height"].to_i width, height = img["width"].to_i, img["height"].to_i
@ -120,14 +121,32 @@ class CookedPostProcessor
end end
# not a hyperlink so we can apply # not a hyperlink so we can apply
img['src'] = thumbnail if thumbnail img['src'] = upload.thumbnail_url if upload
a = Nokogiri::XML::Node.new "a", @doc a = Nokogiri::XML::Node.new "a", @doc
img.add_next_sibling(a) img.add_next_sibling(a)
a["href"] = src a["href"] = src
a["class"] = "lightbox" a["class"] = "lightbox"
a.add_child(img) a.add_child(img)
@dirty = true
# some overlay informations
filename = upload ? upload.original_filename : File.basename(src)
informations = "#{original_width}x#{original_height}"
informations << " | #{number_to_human_size(upload.filesize)}" if upload
a.add_child create_span_node("filename", filename)
a.add_child create_span_node("informations", informations)
a.add_child create_span_node("expand")
# TODO: download
# TODO: views-count
@dirty = true
end
def create_span_node(klass, content=nil)
span = Nokogiri::XML::Node.new "span", @doc
span.content = content if content
span['class'] = klass
span
end end
def get_size_from_image_sizes(src, image_sizes) def get_size_from_image_sizes(src, image_sizes)