#!/usr/bin/perl
###########################################
# bm -- Administer bookmarks CGI
# Mike Schilli, 2004 (m@perlmeister.com)
###########################################
use warnings;
use strict;

my $DB_FILE = "/tmp/bm.sto";

use CGI qw(:all *table);
use CGI::Carp qw(fatalsToBrowser);
use Bookmarks;

my $bm = Bookmarks->new();

$bm = Bookmarks->restore($DB_FILE) if 
                              -f $DB_FILE;

if(param('t') and param('a') and 
   param('s')) {
  my $f = param('f');

    # String overrides box selection
  $f = param('fnew') if param('fnew');
  die "No folder defined" unless length($f);
    
  $bm->insert(param('t'), param('a'), $f);
}

$bm->delete(param('del')) if param('del');
$bm->move_up(param('mvu')) if param('mvu');
$bm->move_down(
             param('mvd')) if param('mvd');

print header(),
      start_html(-title => "Bookmarks");

print $bm->as_html(\&nav);
$bm->save($DB_FILE);

print start_form(),
  start_table(),
  TR(td("Title"), td(textfield(
    -name => 't', -size => 80))),
  TR(td("URL"), td(textfield(
    -name => 'a', -size => 80))),
  TR(td("Folder"), td(popup_menu(
    -name => 'f', -values =>
                  [$bm->folders()]))),
  TR(td("New Folder"), td(textfield(
    -name => 'fnew', -size => 80))),
  end_table(),
  hidden(s => 1),
  submit(),
  end_form(),
  end_html(),
  ;

print "Use this in your toolbar: ",
  pre("javascript:void(win=window.open('" .
  url(-path_info => 1) . "?a='+location." .
  "href+'&t='+document.title))");

###########################################
sub nav {
###########################################
  my($n) = @_;

  return " [" .
    a({href => url() . "?mvu=$n"}, 
      "+") . " " .
    a({href => url() . "?mvd=$n"}, 
      "-") . " " .
    a({href => url() . "?del=$n"}, 
      "x") . "]";
}
