]> mj.ucw.cz Git - gallery.git/blob - gal2/UCW/Gallery/Web/HighSlide.pm
fc9650b2661732a731582ee74ed01fb49d369423
[gallery.git] / gal2 / UCW / Gallery / Web / HighSlide.pm
1 # HighSlide JS Theme for MJ's Photo Gallery
2 # (c) 2012 Martin Mares <mj@ucw.cz>; GPL'ed
3
4 # CAVEAT: highslide/highslide.config.js contains an absolute URL path
5 # to other highslide files.
6
7 package UCW::Gallery::Web::HighSlide;
8
9 use strict;
10 use warnings;
11
12 use UCW::Gallery;
13 use UCW::Gallery::Web;
14
15 our @ISA = qw(UCW::Gallery::Web);
16
17 my $theme_name = "plain";
18 my $navw = 48;
19 my $navh = 48;
20 my $box_w = 130;
21 my $box_h = 110;
22 my $thumb_w = 114;
23 my $thumb_h = 94;
24
25 sub theme_dir($) {
26         my ($self) = @_;
27         return $self->get('ThemeUrlPrefix') . $theme_name;
28 }
29
30 sub theme_head_extras($) {
31         my ($self) = @_;
32         my $tdir = $self->theme_dir;
33         my $hsdir = $self->get('ThemeUrlPrefix') . "highslide";
34         return <<AMEN ;
35 <link rel=stylesheet href='$tdir/style.css' type='text/css' media=all>
36 <script type="text/javascript" src="$hsdir/highslide-with-gallery.js"></script>
37 <script type="text/javascript" src="$hsdir/highslide.config.js" charset="utf-8"></script>
38 <link rel="stylesheet" type="text/css" href="$hsdir/highslide.css">
39 <!--[if lt IE 7]>
40 <link rel="stylesheet" type="text/css" href="$hsdir/highslide-ie6.css">
41 <![endif]-->
42 <style type="text/css">
43 .brum { border: 1px solid green; }
44 </style>
45 AMEN
46 }
47
48 sub show_links($$$$) {
49         my ($self, $prev, $up, $next) = @_;
50         my $theme = $self->theme_dir;
51         print "<p class=parent>";
52         print "<span class=back style='width: ${navw}px; height: ${navh}px'>";
53         print "<a href='$prev'><img src='$theme/prev.png' width=${navw} height=${navh} alt='Back'></a>" if $prev ne "";
54         print "</span>\n";
55         printf "<span class=fwd style='width: ${navw}px; height: ${navh}px'>";
56         printf "<a href='$next'><img src='$theme/next.png' width=${navw} height=${navh} alt='Forward'></a>" if $next ne "";
57         print "</span>\n";
58         printf "<a href='$up'><img src='$theme/back.png' width=${navw} height=${navh} alt='Up'></a>" if $up ne "";
59 }
60
61 sub show_pre_thumbs($) {
62         my ($self) = @_;
63         print "<div class='highslide-gallery'>\n\n";
64         $self->{hs_thumb_counter} = 0;
65 }
66
67 sub show_post_thumbs($) {
68         my ($self) = @_;
69         print "</div>\n\n";
70 }
71
72 sub show_thumb($) {
73         my ($self, $meta, $photo_id, $click_url) = @_;
74         my $theme = $self->theme_dir;
75         my $m = $meta->{photo}->{$photo_id};
76         my $annot = UCW::CGI::html_escape($m->{title});
77         my $tf = $self->{thumb_fmt};
78         my $tm = $meta->{thumb}->{$tf}->{$photo_id} or die "No thumbnails for format $tf found!\n";
79         my $tw = $tm->{w};
80         my $th = $tm->{h};
81         my $thumb = $self->get('ThumbUrlPrefix') . "$tf/$photo_id.jpg";
82         my $ml = int(($box_w - $tw)/2);
83         my $mr = $box_w - $tw - $ml;
84         my $mt = int(($box_h - $th)/2);
85         my $mb = $box_h - $th - $mt;
86         # HighSlide requires title either for all images, or for none
87         my $tit = " title=\"$annot\"";
88         my $aid = $self->{hs_thumb_counter}++ ? "" : " id=thumb1";
89         print "<span style='border: 1px solid green; padding: ${mt}px ${mr}px ${mb}px ${ml}px'>\n";
90         print "<a$aid href='$click_url' class=highslide onclick='return hs.expand(this)'>";
91         print "<img src='$thumb' width=$tw height=$th alt='Photo'$tit></a>\n";
92         print "</span>\n";
93 }
94
95 sub attach($$) {
96         my ($class, $gal) = @_;
97         my $self = $class->SUPER::attach($gal);
98         $self->{thumb_fmt} = $gal->require_thumbnails($thumb_w, $thumb_h);
99         return $self;
100 }
101
102 1;