App-SocialCalc-Multiplayer

 view release on metacpan or  search on metacpan

socialcalc/simpleedit15.pl  view on Meta::CPAN

            }
         }

      $c->close;
      undef($c);
      }

#
# Main routine starts here:
#

sub process_request {

   my ($request) = @_;
   my $q = new CGI($request);

   my $response;

   my ($statusmessage);

   if ($q->param("loadsheet")) { # Ajax request: loadsheet=pagename.sheetname
      my $fullsheetname = $q->param("loadsheet");
      $fullsheetname =~ m/^(.*)\.(.*)$/;
      my $pagename = $1;
      my $sheetname = $2;
      my $page = {};
      load_page($q, $pagename, $page);
      my $sheetstr = $page->{items}{$sheetname}{text};
      my $htmlpos = index($sheetstr, "\nHTML:\n");
      if ($htmlpos >= 0) {
         $sheetstr = substr($sheetstr, 0, $htmlpos);
         }
sleep 1;
      return $sheetstr;
      }

   if ($q->param("wikitext")) { # Ajax request: wikitext=wikitext-url-encoded
      my $wikitext = $q->param("wikitext");
      $wikitext = expand_wikitext($wikitext);
sleep 1;
      return $wikitext;
      }

   if ($q->param("rpc")) { # Ajax request: rpc=functionname&arg1=...&arg2=...
      # assume socialtext() function
      my $nargs = $q->param("a")-0;
      if (!$nargs) {
         return "e#VALUE!:Bad arguments";
         }
      my (@argvals, @argtypes, $returnstr);
      for (my $i=1;$i<=$nargs;$i++) {
         $q->param("a$i") =~ m/^(.*?)\:(.*)$/;
         $argvals[$i] = $2;
         $argtypes[$i] = $1;
         }
      my $func = $argvals[1];
      if ($func eq "regexget") {
         my $ua = LWP::UserAgent->new; 
         $ua->agent("WKCcallableUtilities");
         $ua->timeout(5);
         my $req = HTTP::Request->new("GET", $argvals[2]);
         $req->header('Accept' => '*/*');
         my $res = $ua->request($req);
         if ($res->is_success) {
             my $returnedhtml = $res->content;
             if ($argvals[3] && $returnedhtml =~ m/$argvals[3]/s) {
                $returnstr = $1;
                }
             else {
                $returnstr = $returnedhtml;
                }
             $returnstr = ($argvals[4] || "t") . ":" . $returnstr;
             }
         else {
             $returnstr = "t:Unable to do regexget HTTP request: " . $res->status_line;
             }
         return $returnstr;
         }
      elsif ($func eq "wait") {
         my $waittime = $argvals[2] > 0 ? $argvals[2] : 1;
         sleep $waittime < 30 ? $waittime : 30;
         return "b:0";
         }
      else {
         for (my $i=1;$i<=$nargs;$i++) {
            $returnstr .= " $argvals[$i]($argtypes[$i])";
            }
         return "t:$returnstr";
         }
      }

   my $pagename = $q->param('pagename');

   if ($q->param('newpage')) {
      $pagename = $q->param('newpagename');
      }

   $pagename =~ s/[^a-zA-Z0-9_\-]*//g;
   if (!$pagename) {
      $pagename = "home";
      $statusmessage .= "No pagename given - using '$pagename'<br>";
      }

   if ($q->param('savepageedit')) {
      my $newstr;
      $newstr = $q->param('pagetext');
      if ($q->param('edittype') eq "clean") {
         my $page = {};
         load_page($q, $pagename, $page);
         $newstr =~ s/^\[(spreadsheet|datatable|drawing)\:(.+?)\]/"[$1:$2:\n" . $page->{items}{$2}{text} . "\n:$1]"/gme;
         }
      open (PAGEFILEOUT, ">$datadir$pagename.page.txt");
      print PAGEFILEOUT $newstr;
      close PAGEFILEOUT;
      $statusmessage .= "Saved updated page '$pagename'.<br>";
      }

   if ($q->param("editpage") || $q->param("editrawpage")) { # when one of the "editpage" buttons is pressed
      return do_editpage($q, $pagename, $statusmessage);
      }



( run in 0.578 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )