App-SocialCalc-Multiplayer

 view release on metacpan or  search on metacpan

socialcalc/socialcalcserver.pl  view on Meta::CPAN

<style>
body, td, input, texarea
 {font-family:verdana,helvetica,sans-serif;font-size:small;}
 .smaller {font-size:smaller;}
</style>
</head>
<body>
EOF

   if (!$q->param('print')) {
      $response .= <<"EOF";
<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;">$statusmessage &nbsp;</div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<form name="f0" action="" method="POST">
<input class="smaller" type="submit" name="doneview" value="Done">
</form>
<a href="?pagename=$pagename&view=yes&print=yes" target="_blank">Printer-friendly</a>
</div>
EOF
      }

   $response .= <<"EOF";
<textarea name="savestr" id="sheetdata" style="display:none;">$sheetstr</textarea>
<div id="main">Sheet goes here</div>
<script>

// start everything

   var spreadsheet = new SocialCalc.SpreadsheetControl();

   SocialCalc.Constants.defaultImagePrefix = "$jsdir$imagedir";
   SocialCalc.Popup.imagePrefix = "$jsdir$imagedir";

   var savestr = document.getElementById("sheetdata").value;
   var parts = spreadsheet.DecodeSpreadsheetSave(savestr);
   if (parts) {
      if (parts.sheet) {
         spreadsheet.sheet.ResetSheet();
         spreadsheet.ParseSheetSave(savestr.substring(parts.sheet.start, parts.sheet.end));
         }
      }

   var html = spreadsheet.CreateSheetHTML();
   document.getElementById("main").innerHTML = html;

</script>
</body>
</html>
EOF

   return $response;

   }


# # # # # # # # # #
# special_chars($string)
#
# Returns $estring where &, <, >, " are HTML escaped
# 

sub special_chars {
   my $string = shift @_;

   $string =~ s/&/&amp;/g;
   $string =~ s/</&lt;/g;
   $string =~ s/>/&gt;/g;
   $string =~ s/"/&quot;/g;

   return $string;
}


#
# decode_from_ajax($string) - Returns a string with 
#       \n, \b, and \c escaped to \n, \, and :
#

sub decode_from_ajax {
   my $string = shift @_;

   $string =~ s/\\n/\n/g;
   $string =~ s/\\c/:/g;
   $string =~ s/\\b/\\/g;

   return $string;
}


#
# encode_for_ajax($string) - Returns a string with 
#       \n, \, :, and ]]> escaped to \n, \b, \c, and \e
#

sub encode_for_ajax {
   my $string = shift @_;

   $string =~ s/\\/\\b/g;
   $string =~ s/\n/\\n/g;
   $string =~ s/\r//g;
   $string =~ s/:/\\c/g;
   $string =~ s/]]>/\\e/g;

   return $string;
}



( run in 0.672 second using v1.01-cache-2.11-cpan-ceb78f64989 )