use CGI;
my $database = "comment_db";
my $scriptUrl = "/~me/205/bookmarklets/comments.cgi";
my $q = new CGI;
my $url = $q->param("url");
my $comment;
if ($q->param("save")) {
$comment = $q->param("comment") || "";
saveComment($url, $comment);
} else {
$comment = getComment($url);
}
print $q->header("text/html"),
$q->start_html(-title => $url, -bgcolor => "yellow"),
$q->start_form({ action => $scriptUrl }),
$q->hidden("url"), # inherits value
$q->textarea(-name => "comment", -cols => 30,
-rows => 8, -value => $comment, -wrap),
$q->p(
$q->submit(-name => "save", -value => "Save Comment")),
$q->end_form,
$q->end_html;
sub getComment {
my $url = shift;
my %db;
dbmopen(%db, "comment_db", 0666) ||
die "unable to open comment database";
requestLock("comment_db"),
my $comment = $db{$url};
releaseLock("comment_db"),
dbmclose(%db);
return $comment;
}
sub saveComment {
my ($url, $comment) = @_;
my %db;
dbmopen(%db, "comment_db", 0666) ||
die "unable to open comment database";
requestLock("comment_db"),
$db{$url} = $comment;
releaseLock("comment_db"),
dbmclose(%db);
}
url = document.location.href;
open('http://localhost/~me/205/bookmarklets/comments.cgi?url=' + escape(url),
'commentlet', 'width=400,height=250');
void(0);
<a href="javascript:url = document.location.href; open('http://localhost/~me/205/bookmarklets/comments.cgi?url=' + escape(url), 'commentlet', 'width=400,height=250'); void(0);">Commentlet</a>
use WDDX;
my $wddx = new WDDX;
my $now = time;
my $wddx_now = $wddx->datetime($now);
print $wddx_now->as_javascript("serverTime");
<script language="wddx.js"</script> <script> var serverTime = new Date(100,0,5,14,20,39); </script>
Artist Concert Song Venue Date Duration Size Filename ...
data = new WddxRecordSet(); data.artist = new Array(); data.artist[0] = "The Grateful Dead"; data.artist[1] = "The Grateful Dead"; data.artist[2] = "Widespread Panic"; ...
buildList(document.mbrowser.artistList,
"artist", "", "");
buildList(document.mbrowser.concertList,
"concert", "artist", selected);
buildList(document.mbrowser.artistList,
"song", "concert", selected);
function buildList(list, field,
conditionField, conditionValue) {
...
}
use WDDX;
use HTML::Template;
my $DATA_FILE = ...
my $TEMPLATE = ...
my $wddx = new WDDX;
my $rec = build_recordset($wddx, $DATA_FILE);
my $js_rec = $rec->as_javascript("data");
my $tmpl = new HTML::Template(filename => $TEMPLATE);
my $tmpl->param(song_data => %js_rec);
print $tmpl->output;
sub build_recordset {
...
}