#!/usr/bin/perl
use strict;
use warnings;
use CGI qw( :all );
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use Tie::File;
# Initialisierung
##################
my $cgi = new CGI;
my %params = $cgi->Vars();
my $file = '/SAN/content/cgi-bin/links';
my $save_error = "";
my $i = 0;
my $k = 0;
# Link speichern
#################
if ( defined $params{write} && $params{write} eq "true" ) { #
$params{text} =~ s/\r\n/
/sg;
if (! -f $file ) {
&create_linklist;
}
else {
if ( $params{url} =~ /^http:\/\/.*$/ ) {
open ( D, '>>', $file ) or die "Could not save data. $!";
print D "#" x80, "\nLINK: $params{url}\nTEXT: $params{text}\n";
close D;
}
else {
$save_error = "
Bitte geben Sie den kompletten URL an, sonst kann ";
$save_error .= "Ihr Link nicht gespeichert werden.
Beispiel: ";
$save_error .= "http://ihr.neuer.link.com/
";
}
}
}
elsif(defined $params{action} and $params{action} eq 'delete'){
delete_link($params{link});
}
# Links laden
##############
my ( @data, @links, @texts );
if (! -f $file ) {
&create_linklist;
}
else {
open ( F, '<', $file ) || die "Could not open $file. $!";
@data = grep { /^[^#]/ } ;
close F;
$i = $k = 0;
foreach ( @data ) {
chomp ( $_ );
if ( $_ =~ /^LINK:\s/ ) {
$_ =~ s/^LINK:\s//;
$links[$i] = $_;
$i++;
}
else {
$_ =~ s/^TEXT:\s//;
$texts[$k] = $_;
$k++;
}
}
}
# Dokument ausgeben
####################
my $author = "Andre Hornig";
print $cgi->header(),
$cgi->start_html(
-title => "Linkit - Eine kleine Favoritenliste.",
-bgcolor => "#99ccff",
'Linkit'
),
$cgi->h1('Linkit'),
$cgi->p({-style => 'color:red'}, "Verfasst von: ", $cgi->i($author)),
$cgi->hr({-noshade => undef, -size => '1'}),
$cgi->p('Eine kleine Favoritenliste');
$i = 0;
foreach ( @links ) {
print qq~
~;
print $cgi->p(
{-style => "margin:5px;"}, $i+1, ") ", $cgi->a( {-href => $_}, $texts[$i] )
);
$i++;
}
print << "EOF";
Neuen Link eintragen
$save_error
EOF
$cgi->end_html();
sub delete_link{
my ($link_text) = @_;
tie my @array,'Tie::File',$file or die $!;
my ($index) = grep{$array[$_] =~ /TEXT:\s$link_text/}(0..scalar(@array)-1);
@array[$index-2..$index] = ('') x 3;
untie @array;
}