118 lines
3.7 KiB
Perl
Executable File
118 lines
3.7 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
# ==================================================================
|
|
# Links SQL - enhanced directory management system
|
|
#
|
|
# Website : http://gossamer-threads.com/
|
|
# Support : http://gossamer-threads.com/scripts/support/
|
|
# CVS Info : 087,070,087,092,085
|
|
# Revision : $Id: showpicture.cgi,v 1.6 2006/12/29 15:37:20 aki Exp $
|
|
#
|
|
# Copyright (c) 2001 Gossamer Threads Inc. All Rights Reserved.
|
|
# Redistribution in part or in whole strictly prohibited. Please
|
|
# see LICENSE file for full details.
|
|
# ==================================================================
|
|
|
|
use strict;
|
|
use lib 'admin';
|
|
use Links qw/$DB $IN $USER $CFG/;
|
|
use Links::Plugins;
|
|
|
|
Links::init('admin');
|
|
Links::init_user();
|
|
|
|
local $SIG{__DIE__} = \&Links::fatal;
|
|
|
|
|
|
main();
|
|
|
|
sub main {
|
|
# -------------------------------------------------------------------
|
|
# display an html page for a picture frame
|
|
#
|
|
|
|
my $tbl = $DB->table('Links');
|
|
my $id = $IN->param('ID');
|
|
my $rec = $tbl->get( $id ) || {};
|
|
my $col = $IN->param('v');
|
|
|
|
# go through and find out what columsn have images
|
|
my $conf = Links::Plugins::get_plugin_user_cfg( 'SlideShow' );
|
|
my @image_cols = grep $_, map { s,^(\s*),,; s,(\s*)$,,; $_ } split /,/, $conf->{seq_image_cols};
|
|
|
|
$col ||= $image_cols[ int( $IN->param( 'index' ) || 0 ) || 0];
|
|
$col ||= $image_cols[0];
|
|
|
|
my $cached = eval $rec->{SlideShowCache};
|
|
my $changed = 1;
|
|
my ( $linksdb, $linkscols, %image_lookup );
|
|
|
|
require Plugins::SlideShow;
|
|
my $paths = Plugins::SlideShow::generate_paths( $id, $rec );
|
|
@$rec{ keys %$paths } = values %$paths;
|
|
|
|
# find out which columns have files (assume images) populated
|
|
# create
|
|
# - @images order array with column names
|
|
# - %images hash with the index lookup
|
|
my ( @images, %images, $index );
|
|
foreach my $colname ( @image_cols ) {
|
|
$rec->{$colname} or next;
|
|
push @images, $colname;
|
|
$images{$colname} = $index++;
|
|
}
|
|
|
|
# find out where we are in the list
|
|
my ( $Image_Previous, $Image_Next, $Image_First, $Image_Last,
|
|
$Image_Count, $Image_Tool, $Image_Current );
|
|
$Image_Count = scalar( @images );
|
|
$index = $images{ $col }; # convert from column name to index #
|
|
|
|
# get the next and previous
|
|
( $index > 0 ) and $Image_Previous = $images[$index-1];
|
|
( $index < $Image_Count ) and $Image_Next = $images[$index+1];
|
|
|
|
# get the first and last
|
|
$Image_Current = $index + 1;
|
|
$index and $Image_First = $images[0];
|
|
$index+1 < $Image_Count and $Image_Last = $images[$Image_Count-1];
|
|
|
|
# for the toolbar
|
|
$index = 1;
|
|
foreach my $colname ( @images ) {
|
|
push @{$Image_Tool}, {
|
|
Image_Colname => $colname,
|
|
Image_Index => $index++,
|
|
Image_Selected => ( $colname eq $col ? 1 : 0 ),
|
|
};
|
|
}
|
|
|
|
|
|
print $IN->header();
|
|
print Links::user_page(
|
|
'pictureframe.html',
|
|
{
|
|
%{$USER || {} },
|
|
%{$IN->get_hash},
|
|
%$rec,
|
|
%{$image_lookup{$col}||{}},
|
|
Image_Previous => $Image_Previous,
|
|
Image_First => $Image_First,
|
|
Image_Last => $Image_Last,
|
|
Image_Next => $Image_Next,
|
|
Image_Count => $Image_Count,
|
|
Image_Current => $Image_Current,
|
|
Image_Description => $rec->{$col."_description"},
|
|
Image_Tool => $Image_Tool,
|
|
image_url_path => sub {
|
|
my $col = join( "_", @_ ) or return;
|
|
my $tags = GT::Template->tags;
|
|
return $tags->{$col.'_path'};
|
|
}
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|