App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/socialcalcserver.pl view on Meta::CPAN
{font-family:verdana,helvetica,sans-serif;font-size:small;}
.smaller {font-size:smaller;}
</style>
</head>
<body>
<form action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING SOCIALCALC FILES</div>
<div style="color:#FDD;font-weight:bold;">Initial Setup</div>
<div style="padding:6px;background-color:#80A9F3;">
Name of subdirectory of where the code is to hold spreadsheet data files:
<input name="datadir" type="text" value="scdata/"><br>
Name of subdirectory of server home page that has the JavaScript files and the images subdirectory
(only needed if running on Apache, etc., not when running standalone from the
command line in Perl): <input name="jsdir" type="text" value="/sgi/scjs/"><br>
<input type="submit" name="setup" value="Save">
</div>
<br>
</form>
</div>
<br>
</body>
</html>
EOF
return $response;
}
}
my $pagename = $q->param('pagename');
if ($q->param('newpage')) {
$pagename = $q->param('newpagename');
}
$pagename =~ s/[^a-zA-Z0-9_\-\.]*//g;
if (!$pagename) {
$pagename = "[None]";
return do_displaypage($q, $pagename, $statusmessage);
}
if ($q->param("editpage") || $q->param("editrawpage")) { # when one of the "editpage" buttons is pressed
return do_editpage($q, $pagename, $statusmessage);
}
if ($q->param("edit")) { # "edit" pressed
return start_editsheet($pagename, $q, $statusmessage);
}
if ($q->param("view")) { # "view" pressed
return start_viewsheet($pagename, $q, $statusmessage);
}
if ($q->param('savespreadsheet')) { # save the edited spreadsheet
my $pagestr = $q->param('newstr');
open (PAGEFILEOUT, ">$datadir$pagename");
print PAGEFILEOUT $pagestr;
close PAGEFILEOUT;
$statusmessage =
"Saved updated '$pagename'.<br>";
}
if ($q->param('filecontents')) { # return contents of file
my $fileurl = $q->param('filecontents');
open (PAGEFILEIN, "$fileurl");
my $filestr;
while (my $line = <PAGEFILEIN>) {
$filestr .= $line;
}
close PAGEFILEIN;
print $filestr;
return $filestr;
}
$response = do_displaypage($q, $pagename, $statusmessage); # Otherwise, display page
return $response;
}
#
# $response = do_displaypage($q, $pagename, $statusmessage) - Display page
#
sub do_displaypage {
my ($q, $pagename, $statusmessage) = @_;
my $response;
$response = <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>$titlestr</title>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
.smaller {font-size:smaller;}
</style>
<script>
function doedit(p) {
document.getElementById("pagename").value = p;
document.getElementById("edit").value = "yes";
}
function doview(p) {
document.getElementById("pagename").value = p;
document.getElementById("view").value = "yes";
}
</script>
</head>
<body>
<form action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING SOCIALCALC FILES</div>
( run in 2.417 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )