discourse-legacysite-perl/site/slowtwitch.com/cgi-bin/articles/showpicture.cgi
2024-06-17 21:49:12 +10:00

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'};
}
}
);
}