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 )