#!/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") . "]"; }