summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xlib/App/Dthumb.pm25
-rw-r--r--lib/App/Dthumb/Data.pm.PL74
-rw-r--r--share/close.gifbin0 -> 109 bytes
-rw-r--r--share/html_end3
-rw-r--r--share/html_start51
-rw-r--r--share/lightbox.js (renamed from lib/App/Dthumb/Data.pm)171
-rw-r--r--share/loading.gifbin0 -> 2364 bytes
-rw-r--r--share/overlay.pngbin0 -> 279 bytes
9 files changed, 136 insertions, 189 deletions
diff --git a/.gitignore b/.gitignore
index e6992f5..cb3cf66 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
new file mode 100644
index 0000000..773013b
--- /dev/null
+++ b/share/close.gif
Binary files differ
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
new file mode 100644
index 0000000..fbe57be
--- /dev/null
+++ b/share/loading.gif
Binary files differ
diff --git a/share/overlay.png b/share/overlay.png
new file mode 100644
index 0000000..7cee298
--- /dev/null
+++ b/share/overlay.png
Binary files differ