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 )