diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rwxr-xr-x | lib/App/Dthumb.pm | 25 | ||||
-rw-r--r-- | lib/App/Dthumb/Data.pm.PL | 74 | ||||
-rw-r--r-- | share/close.gif | bin | 0 -> 109 bytes | |||
-rw-r--r-- | share/html_end | 3 | ||||
-rw-r--r-- | share/html_start | 51 | ||||
-rw-r--r-- | share/lightbox.js (renamed from lib/App/Dthumb/Data.pm) | 171 | ||||
-rw-r--r-- | share/loading.gif | bin | 0 -> 2364 bytes | |||
-rw-r--r-- | share/overlay.png | bin | 0 -> 279 bytes |
9 files changed, 136 insertions, 189 deletions
@@ -2,3 +2,4 @@ /build/ /_build/ /blib/ +/lib/App/Dthumb/Data.pm diff --git a/lib/App/Dthumb.pm b/lib/App/Dthumb.pm index d61fec5..5b493ee 100755 --- a/lib/App/Dthumb.pm +++ b/lib/App/Dthumb.pm @@ -30,7 +30,7 @@ sub new { $ref->{data} = App::Dthumb::Data->new(); $ref->{tar} = Archive::Tar->new(); - $ref->{html} = $ref->{data}->html_start(); + $ref->{html} = $ref->{data}->get('html_start'); $ref->{current_file_id} = 0; @@ -86,7 +86,6 @@ sub create_files { my ($self) = @_; my $thumbdir = $self->{config}->{dir_thumbs}; my $datadir = $self->{config}->{dir_data}; - my $fh; if (not -d $thumbdir) { mkdir($thumbdir); @@ -96,21 +95,11 @@ sub create_files { mkdir($datadir); } - open($fh, '>', "${datadir}/lightbox.js"); - print {$fh} $self->{data}->lightbox(); - close($fh); - - open($fh, '>', "${datadir}/overlay.png"); - print {$fh} $self->{data}->overlay_png(); - close($fh); - - open($fh, '>', "${datadir}/loading.gif"); - print {$fh} $self->{data}->loading_gif(); - close($fh); - - open($fh, '>', "${datadir}/close.gif"); - print {$fh} $self->{data}->close_gif(); - close($fh); + for my $file (qw(lightbox.js overlay.png loading.gif close.gif)) { + open(my $fh, '>', "${datadir}/${file}"); + print {$fh} $self->{data}->get($file); + close($fh); + } } sub delete_old_thumbnails { @@ -191,7 +180,7 @@ sub create_thumbnail_image { sub write_out_html { my ($self) = @_; - $self->{html} .= $self->{data}->html_end(); + $self->{html} .= $self->{data}->get('html_end'); open(my $fh, '>', $self->{config}->{file_index}); print {$fh} $self->{html}; diff --git a/lib/App/Dthumb/Data.pm.PL b/lib/App/Dthumb/Data.pm.PL new file mode 100644 index 0000000..1f04800 --- /dev/null +++ b/lib/App/Dthumb/Data.pm.PL @@ -0,0 +1,74 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.010; +use autodie; +use MIME::Base64 qw(encode_base64); + +local $/ = undef; +my ($out_file) = @ARGV; + +open(my $out_fh, '>', $out_file); +opendir(my $share_dh, 'share'); + +print {$out_fh} <DATA>; + +for my $file (readdir($share_dh)) { + if (substr($file, 0, 1) eq '.') { + next; + } + + open(my $fh, '<', "share/${file}"); + my $content = <$fh>; + close($fh); + + if ($file =~ qr{ \. (png | gif) $ }ox) { + $content = encode_base64($content); + } + + printf {$out_fh} ( + "______[ %s ]______\n%s\n", + $file, + $content, + ); +} +closedir($share_dh); +close($out_fh); + + +__DATA__ +package App::Dthumb::Data; + +use strict; +use warnings; +use base 'Exporter'; + +use Data::Section -setup; +use MIME::Base64 qw(decode_base64); + +our @EXPORT_OK = (); + +sub new { + my ($obj) = @_; + my $ref = {}; + return bless($ref, $obj); +} + +sub get { + my ($self, $name) = @_; + my $data = $self->section_data($name); + + if (not $data) { + die("No such data: ${name}\n"); + } + + if ($name =~ qr{ \. (png | gif) $ }ox) { + return decode_base64(${$data}); + } + return ${$data}; +} + +1; + +__DATA__ + diff --git a/share/close.gif b/share/close.gif Binary files differnew file mode 100644 index 0000000..773013b --- /dev/null +++ b/share/close.gif diff --git a/share/html_end b/share/html_end new file mode 100644 index 0000000..9943ff0 --- /dev/null +++ b/share/html_end @@ -0,0 +1,3 @@ +</div> +</body> +</html> diff --git a/share/html_start b/share/html_start new file mode 100644 index 0000000..a3539be --- /dev/null +++ b/share/html_start @@ -0,0 +1,51 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> + <title>dthumb</title> + <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> + <script type="text/javascript" src=".dthumb/lightbox.js"></script> + <style type="text/css"> + +#lightbox { + background-color:#eee; + padding: 10px; + border-bottom: 2px solid #666; + border-right: 2px solid #666; +} + +#lightboxDetails { + font-size: 0.8em; + padding-top: 0.4em; +} + +#lightboxCaption { + float: left; +} + +#keyboardMsg { + float: right; +} + +#closeButton { + top: 5px; + right: 5px; +} + +#lightbox img { + border: none; + clear: both; +} + +#overlay img { + border: none; +} + +#overlay { + color: transparent; + background-image: url(.dthumb/overlay.png); +} + + </style> +</head> +<body><div> diff --git a/lib/App/Dthumb/Data.pm b/share/lightbox.js index 9065e35..df9e8e4 100644 --- a/lib/App/Dthumb/Data.pm +++ b/share/lightbox.js @@ -1,174 +1,3 @@ -package App::Dthumb::Data; - -use strict; -use warnings; -use base 'Exporter'; - -use Data::Section -setup; -use MIME::Base64 qw(decode_base64); - -our @EXPORT_OK = (); - -sub new { - my ($obj) = @_; - my $ref = {}; - return bless($ref, $obj); -} - -sub html_start { - my ($self) = @_; - return ${$self->section_data('html_and_css')}; -} - -sub html_end { - my ($self) = @_; - return ${$self->section_data('html_end')}; -} - -sub lightbox { - my ($self) = @_; - return ${$self->section_data('lightbox.js')}; -} - -sub overlay_png { - my ($self) = @_; - return decode_base64(${$self->section_data('overlay.png')}); -} - -sub loading_gif { - my ($self) = @_; - return decode_base64(${$self->section_data('loading.gif')}); -} - -sub close_gif { - my ($self) = @_; - return decode_base64(${$self->section_data('close.gif')}); -} - -1; - -__DATA__ - -______[ html_and_css ]______ - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> -<head> - <title>dthumb</title> - <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> - <script type="text/javascript" src=".dthumb/lightbox.js"></script> - <style type="text/css"> - -#lightbox { - background-color:#eee; - padding: 10px; - border-bottom: 2px solid #666; - border-right: 2px solid #666; -} - -#lightboxDetails { - font-size: 0.8em; - padding-top: 0.4em; -} - -#lightboxCaption { - float: left; -} - -#keyboardMsg { - float: right; -} - -#closeButton { - top: 5px; - right: 5px; -} - -#lightbox img { - border: none; - clear: both; -} - -#overlay img { - border: none; -} - -#overlay { - color: transparent; - background-image: url(.dthumb/overlay.png); -} - - </style> -</head> -<body><div> - -______[ html_end ]______ - -</div> -</body> -</html> - -______[ overlay.png ]______ - -iVBORw0KGgoAAAANSUhEUgAAAGUAAABlCAYAAABUfC3PAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 -U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACpSURBVHja7NEBDQAACMOwg39PWMMGCZ2E -tZJMdKq2AIqgQBEUKIICRVAEBYqgQBEUKIIiKFAEBYqgQBEUQYEiKFAEBYqgCAoUQYEiKFAERVCg -CAoUQYEiKIICRVCgCAoUQREUKIICRVCgCIqgQBEUKIICRVAEBYqgQBEUKIIiKFAEBYqgQBEUQYEi -KFAEBYqgQLEAiqBAERQoggJFUAQFiqBAEZTHrQADAOi7AYkbZwBkAAAAAElFTkSuQmCC - -______[ loading.gif ]______ - -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 -Tnx82NliY97mSWxsfkLZR+fnV1lYW1JdQQA7 - -______[ close.gif ]______ - -R0lGODlhFAAUAJEDAJeXl0BAQO7u7vr69SH5BAEAAAMALAAAAAAUABQAAAI+nI+py+0PYxO02puu -trmCcAUA1VHBWZ2gUJqoWrUuHCMbXR+aiuZG+OqxbCkhrfUJjYa6zUbmJEGdiygHUQAAOw== - -______[ lightbox.js ]______ - /* Lightbox JS: Fullsize Image Overlays by Lokesh Dhakar - http://www.huddletogether.com diff --git a/share/loading.gif b/share/loading.gif Binary files differnew file mode 100644 index 0000000..fbe57be --- /dev/null +++ b/share/loading.gif diff --git a/share/overlay.png b/share/overlay.png Binary files differnew file mode 100644 index 0000000..7cee298 --- /dev/null +++ b/share/overlay.png |