Changeset 16061 for lang/actionscript
- Timestamp:
- 07/21/08 21:42:48 (4 months ago)
- Location:
- lang/actionscript/todoshare
- Files:
-
- 9 modified
-
index.cgi (modified) (2 diffs)
-
jsonDB.html (modified) (2 diffs)
-
perl/ArrayUtil.pm (modified) (2 diffs)
-
perl/Html.pm (modified) (5 diffs)
-
perl/HtmlTag.pm (modified) (1 diff)
-
perl/Obj.pm (modified) (6 diffs)
-
swkText.cgi (modified) (2 diffs)
-
test/test.pl (modified) (1 diff)
-
todo.cgi (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/actionscript/todoshare/index.cgi
r16016 r16061 21 21 link("importObj.html","Import Objects(他のMySからHTTPで取得します)"), 22 22 [h3,"File-related Menu"], 23 link("backupDB. html","Backup DB"),24 link("restoreDB. html","Restore DB"),23 link("backupDB.cgi","Backup DB"), 24 link("restoreDB.cgi","Restore DB"), 25 25 ] 26 26 ]); … … 31 31 sub { 32 32 my $p=shift; 33 $p->p([a ,{href=>$href},$name])->brln;33 $p->p([a(href=>$href),$name])->brln; 34 34 }; 35 35 } -
lang/actionscript/todoshare/jsonDB.html
r16016 r16061 1 1 <html> 2 2 <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 3 <title>Database Console</title> 4 <script src="prototype.js"></script> 5 <script> 6 function exe() { 7 var cmd=$("cmd").value; 8 //alert(cmd); 9 new Ajax.Request("db.cgi", { 10 method: "put", 11 parameters: 'cmd='+encodeURI(cmd) , 12 onSuccess:function(httpObj){ 13 //alert(httpObj); 14 //alert(httpObj.responseText); 15 $("res").value=httpObj.responseText; 16 }, 17 onFailure:function(httpObj) { 18 $("res").value=httpObj.responseText; 19 } 20 }); 21 } 22 </script> 3 23 <body> 4 24 5 25 <form action="db.cgi" method="POST"> 6 <textarea rows=10 cols=40 name=cmd> 7 ["GET2",["content"], 8 {"content":["like","%る%"]} 9 ] 26 <textarea rows=10 cols=40 id=cmd> 27 ["GET3",{ 28 "id":["*"], 29 "class":["*"], 30 "content":["like","%る%"] 31 }] 10 32 </textarea> 33 <button onclick="exe();return false;" onsubmit="return false;">AJax</button> 11 34 <input type=submit> 35 <textarea rows=10 cols=40 id=res></textarea> 12 36 </form> 13 14 37 <BR> 15 38 <textarea rows=10 cols=40 name=cmd> … … 20 43 {"strength":"1", "type":"animal"} 21 44 ] 45 ["INSERT3", 46 {"strength":"1", "type":"animal", "content":"ごりら"} 47 48 ] 49 ["GET2",["content"], 50 {"content":["like","%る%"]} 51 ] 52 ["MAKEREL","りんご","色","赤"] 22 53 </textarea></br> 23 24 25 <form action="test/utf8.cgi" method="POST">26 <textarea rows=10 cols=40 name=str>%る%</textarea>27 <input type=submit>28 29 54 </body></html> -
lang/actionscript/todoshare/perl/ArrayUtil.pm
r16014 r16061 2 2 3 3 use strict; 4 our @EXPORT = qw(uniq getColumn array );4 our @EXPORT = qw(uniq getColumn array filter isArray); 5 5 use base qw(Exporter); 6 6 … … 16 16 } 17 17 18 sub isArray { 19 my $a=shift; 20 my $r="$a "; 21 (ref $a) and ($r =~ /ARRAY/); 22 } 23 sub filter { 24 my $a=shift; 25 my $sub=shift; 26 my $res=[]; 27 &each($a,sub { 28 my $e=shift; 29 push @$res,$e if (&{$sub}($e)); 30 }); 31 bless $res; 32 } 18 33 sub array { 19 34 bless $_[0]; 35 } 36 sub join { 37 my $a=shift; 38 my $sep=shift; 39 join $sep, @$a; 20 40 } 21 41 sub getColumn { -
lang/actionscript/todoshare/perl/Html.pm
r16014 r16061 1 1 package stream; 2 use strict; 2 3 3 4 sub new { … … 23 24 } 24 25 return; 26 } 27 #print (ref $tag); 28 if ((ref $tag) eq "CODE") { 29 my @args=@$c; 30 $args[0]=$t; 31 return &{$tag}(@args); 25 32 } 26 33 $t->out("<$tag "); … … 80 87 81 88 package Html; 89 use strict; 82 90 83 91 our @EXPORT = qw(header p brln); … … 85 93 86 94 sub header { 87 print "Content-type: text/html; charset=utf-8\n\n"; 95 my %args=(type=>"text/html" ,@_); 96 print "Content-type: $args{type}; charset=utf-8\n\n"; 88 97 } 89 98 sub brln { … … 91 100 } 92 101 93 sub p { 94 my $c=shift; 102 sub stdoutStream { 95 103 new stream(sub { 96 104 my $s=shift; 97 105 print $s; 98 })->p($c); 106 }); 107 } 108 sub p { 109 my $c=shift; 110 &stdoutStream->p($c); 99 111 } 100 112 1; -
lang/actionscript/todoshare/perl/HtmlTag.pm
r16014 r16061 118 118 ); 119 119 use base qw(Exporter); 120 121 sub a {q(a);} 122 sub abbr {q(abbr);} 123 sub acronym {q(acronym);} 124 sub address {q(address);} 125 sub applet {q(applet);} 126 sub area {q(area);} 127 sub b {q(b);} 128 sub base {q(base);} 129 sub basefont {q(basefont);} 130 sub bdo {q(bdo);} 131 sub bgsound {q(bgsound);} 132 sub big {q(big);} 133 sub blink {q(blink);} 134 sub blockquote {q(blockquote);} 135 sub body {q(body);} 136 sub br {q(br);} 137 sub button {q(button);} 138 sub caption {q(caption);} 139 sub center {q(center);} 140 sub cite {q(cite);} 141 sub code {q(code);} 142 sub col {q(col);} 143 sub colgroup {q(colgroup);} 144 sub comment {q(comment);} 145 sub dd {q(dd);} 146 sub del {q(del);} 147 sub dfn {q(dfn);} 148 sub dir {q(dir);} 149 sub div {q(div);} 150 sub dl {q(dl);} 151 sub dt {q(dt);} 152 sub em {q(em);} 153 sub embed {q(embed);} 154 sub fieldset {q(fieldset);} 155 sub font {q(font);} 156 sub form {q(form);} 157 sub frame {q(frame);} 158 sub frameset {q(frameset);} 159 sub h1 {q(h1);} 160 sub h2 {q(h2);} 161 sub h3 {q(h3);} 162 sub h4 {q(h4);} 163 sub h5 {q(h5);} 164 sub h6 {q(h6);} 165 sub head {q(head);} 166 sub hr {q(hr);} 167 sub html {q(html);} 168 sub i {q(i);} 169 sub iframe {q(iframe);} 170 sub ilayer {q(ilayer);} 171 sub img {q(img);} 172 sub input {q(input);} 173 sub ins {q(ins);} 174 sub isindex {q(isindex);} 175 sub kbd {q(kbd);} 176 sub keygen {q(keygen);} 177 sub label {q(label);} 178 sub layer {q(layer);} 179 sub legend {q(legend);} 180 sub li {q(li);} 181 sub link {q(link);} 182 sub listing {q(listing);} 183 sub map {q(map);} 184 sub marquee {q(marquee);} 185 sub menu {q(menu);} 186 sub meta {q(meta);} 187 sub multicol {q(multicol);} 188 sub nextid {q(nextid);} 189 sub nobr {q(nobr);} 190 sub noembed {q(noembed);} 191 sub noframes {q(noframes);} 192 sub nolayer {q(nolayer);} 193 sub noscript {q(noscript);} 194 sub object {q(object);} 195 sub ol {q(ol);} 196 sub optgroup {q(optgroup);} 197 sub option {q(option);} 198 sub p {q(p);} 199 sub param {q(param);} 200 sub plaintext {q(plaintext);} 201 sub pre {q(pre);} 202 sub q {q(q);} 203 sub rb {q(rb);} 204 sub rp {q(rp);} 205 sub rt {q(rt);} 206 sub ruby {q(ruby);} 207 sub s {q(s);} 208 sub samp {q(samp);} 209 sub script {q(script);} 210 sub select {q(select);} 211 sub server {q(server);} 212 sub small {q(small);} 213 sub spacer {q(spacer);} 214 sub span {q(span);} 215 sub strike {q(strike);} 216 sub strong {q(strong);} 217 sub style {q(style);} 218 sub sub {q(sub);} 219 sub sup {q(sup);} 220 sub table {q(table);} 221 sub tbody {q(tbody);} 222 sub td {q(td);} 223 sub textarea {q(textarea);} 224 sub tfoot {q(tfoot);} 225 sub th {q(th);} 226 sub thead {q(thead);} 227 sub title {q(title);} 228 sub tr {q(tr);} 229 sub tt {q(tt);} 230 sub u {q(u);} 231 sub ul {q(ul);} 232 sub var {q(var);} 233 sub wbr {q(wbr);} 234 sub xmp {q(xmp);} 120 use Html; 121 sub closure($@) { 122 my $tag=shift; 123 my %params=@_; 124 return sub { 125 my $t=shift; 126 $t->out("<$tag "); 127 while (my ($k,$v)= each %params) { 128 $t->out(&stream::sym($k)."=".&stream::attr($v)." " ); 129 } 130 if (@_>0) { 131 $t->out(">"); 132 for (@_) { 133 $t->p($_); 134 } 135 $t->out("</$tag>"); 136 } else { 137 $t->out("/>"); 138 } 139 }; 140 } 141 sub a { closure q(a),@_;} 142 sub abbr { closure q(abbr),@_;} 143 sub acronym { closure q(acronym),@_;} 144 sub address { closure q(address),@_;} 145 sub applet { closure q(applet),@_;} 146 sub area { closure q(area),@_;} 147 sub b { closure q(b),@_;} 148 sub base { closure q(base),@_;} 149 sub basefont { closure q(basefont),@_;} 150 sub bdo { closure q(bdo),@_;} 151 sub bgsound { closure q(bgsound),@_;} 152 sub big { closure q(big),@_;} 153 sub blink { closure q(blink),@_;} 154 sub blockquote { closure q(blockquote),@_;} 155 sub body { closure q(body),@_;} 156 sub br { closure q(br),@_;} 157 sub button { closure q(button),@_;} 158 sub caption { closure q(caption),@_;} 159 sub center { closure q(center),@_;} 160 sub cite { closure q(cite),@_;} 161 sub code { closure q(code),@_;} 162 sub col { closure q(col),@_;} 163 sub colgroup { closure q(colgroup),@_;} 164 sub comment { closure q(comment),@_;} 165 sub dd { closure q(dd),@_;} 166 sub del { closure q(del),@_;} 167 sub dfn { closure q(dfn),@_;} 168 sub dir { closure q(dir),@_;} 169 sub div { closure q(div),@_;} 170 sub dl { closure q(dl),@_;} 171 sub dt { closure q(dt),@_;} 172 sub em { closure q(em),@_;} 173 sub embed { closure q(embed),@_;} 174 sub fieldset { closure q(fieldset),@_;} 175 sub font { closure q(font),@_;} 176 sub form { closure q(form),@_;} 177 sub frame { closure q(frame),@_;} 178 sub frameset { closure q(frameset),@_;} 179 sub h1 { closure q(h1),@_;} 180 sub h2 { closure q(h2),@_;} 181 sub h3 { closure q(h3),@_;} 182 sub h4 { closure q(h4),@_;} 183 sub h5 { closure q(h5),@_;} 184 sub h6 { closure q(h6),@_;} 185 sub head { closure q(head),@_;} 186 sub hr { closure q(hr),@_;} 187 sub html { closure q(html),@_;} 188 sub i { closure q(i),@_;} 189 sub iframe { closure q(iframe),@_;} 190 sub ilayer { closure q(ilayer),@_;} 191 sub img { closure q(img),@_;} 192 sub input { closure q(input),@_;} 193 sub ins { closure q(ins),@_;} 194 sub isindex { closure q(isindex),@_;} 195 sub kbd { closure q(kbd),@_;} 196 sub keygen { closure q(keygen),@_;} 197 sub label { closure q(label),@_;} 198 sub layer { closure q(layer),@_;} 199 sub legend { closure q(legend),@_;} 200 sub li { closure q(li),@_;} 201 sub link { closure q(link),@_;} 202 sub listing { closure q(listing),@_;} 203 sub map { closure q(map),@_;} 204 sub marquee { closure q(marquee),@_;} 205 sub menu { closure q(menu),@_;} 206 sub meta { closure q(meta),@_;} 207 sub multicol { closure q(multicol),@_;} 208 sub nextid { closure q(nextid),@_;} 209 sub nobr { closure q(nobr),@_;} 210 sub noembed { closure q(noembed),@_;} 211 sub noframes { closure q(noframes),@_;} 212 sub nolayer { closure q(nolayer),@_;} 213 sub noscript { closure q(noscript),@_;} 214 sub object { closure q(object),@_;} 215 sub ol { closure q(ol),@_;} 216 sub optgroup { closure q(optgroup),@_;} 217 sub option { closure q(option),@_;} 218 sub p { closure q(p),@_;} 219 sub param { closure q(param),@_;} 220 sub plaintext { closure q(plaintext),@_;} 221 sub pre { closure q(pre),@_;} 222 sub q { closure q(q),@_;} 223 sub rb { closure q(rb),@_;} 224 sub rp { closure q(rp),@_;} 225 sub rt { closure q(rt),@_;} 226 sub ruby { closure q(ruby),@_;} 227 sub s { closure q(s),@_;} 228 sub samp { closure q(samp),@_;} 229 sub script { closure q(script),@_;} 230 sub select { closure q(select),@_;} 231 sub server { closure q(server),@_;} 232 sub small { closure q(small),@_;} 233 sub spacer { closure q(spacer),@_;} 234 sub span { closure q(span),@_;} 235 sub strike { closure q(strike),@_;} 236 sub strong { closure q(strong),@_;} 237 sub style { closure q(style),@_;} 238 sub sub { closure q(sub),@_;} 239 sub sup { closure q(sup),@_;} 240 sub table { closure q(table),@_;} 241 sub tbody { closure q(tbody),@_;} 242 sub td { closure q(td),@_;} 243 sub textarea { closure q(textarea),@_;} 244 sub tfoot { closure q(tfoot),@_;} 245 sub th { closure q(th),@_;} 246 sub thead { closure q(thead),@_;} 247 sub title { closure q(title),@_;} 248 sub tr { closure q(tr),@_;} 249 sub tt { closure q(tt),@_;} 250 sub u { closure q(u),@_;} 251 sub ul { closure q(ul),@_;} 252 sub var { closure q(var),@_;} 253 sub wbr { closure q(wbr),@_;} 254 sub xmp { closure q(xmp),@_;} 235 255 236 256 -
lang/actionscript/todoshare/perl/Obj.pm
r16014 r16061 5 5 use DBI; 6 6 use ArrayUtil; 7 #use JSON2; 7 8 8 9 our @EXPORT = qw(any); … … 22 23 my $any=["*"]; 23 24 sub any{$any;} 25 sub isAny{ 26 my $o=shift; 27 (isArray($o) and $o->[0] eq "*"); 28 } 24 29 sub newID { 25 30 my $prefix=shift; … … 58 63 $sth->finish; 59 64 return array($res); 65 } elsif ($cmd->[0] eq "UPDATE") { 66 # ["UPDATE",$table,$set,$where] 67 my $table=$cmd->[1]; 68 my $set =$cmd->[2]; 69 my $where=$cmd->[3]; 70 my $query="update ".&escapeSymbol($table)." set "; 71 return ["OK"] if ((keys %$set)<1); 72 my @sets; 73 for (keys %$set) { 74 my $key=$_; 75 push @sets, ( 76 &escapeSymbol($key)."=" &escapeLiteral($set->{$key}) 77 ); 78 } 79 $query.=join ",",@sets; 80 $query.=" where "; 81 for (keys 82 60 83 } elsif ($cmd->[0] eq 'POST' or $cmd->[0] eq 'PUT' ) { 61 84 my $data=$cmd->[1]; … … 108 131 if ($res) { $res=(["OK",$objectID, $query ]); } 109 132 else { $res=(["Fail",$query,$sth->errstr]); } 133 $sth->finish; 134 return array($res); 135 } elsif ($cmd->[0] eq 'INSERT3') { 136 # ["INSERT3", %$properties ,$idNameOvr ] 137 # -> ["OK", %$properties ] 138 my $properties=$cmd->[1]; 139 my $idNameOvr=$cmd->[2]; 140 $idNameOvr = $idName unless ($idNameOvr); 141 die ("1st arg not hash :$properties") unless ((ref $properties) eq "HASH"); 142 if ($properties->{$idNameOvr}) { 143 # update 144 my $objectID=$properties->{$idNameOvr}; 145 my $fields=filter (keys $properties),sub {$_[0] ne $idNameOvr}; 146 for (@$fields) { 147 return &exe(["UPDATE",$relName, 148 {value=>$properties->{$_}}, 149 {obj=>$objectID, name=>$_} 150 ]); 151 } 152 } else { 153 # insert 154 my $objectID=&newID; 155 my $values=&values2($objectID, $properties); 156 $properties->{$idNameOvr}=$objectID; 157 my $query =qq( 158 insert into @{[&escapeSymbol($relName)]} $values ; 159 ); 160 } 161 my $sth=$db->prepare($query); 162 my $res=$sth->execute; 163 &log($cmd,$query); 164 if ($res) { $res=["OK",$objectID, $query ]; } 165 else { die( "FAILED $query : $sth->errstr"); } 110 166 $sth->finish; 111 167 return array($res); … … 178 234 $sth->finish; 179 235 return array($res); 236 } elsif ($cmd->[0] eq 'GET3') { 237 # ["GET3", {a: b , c: d}, idNameopt ] 238 my $tmpl=$cmd->[1]; 239 my $idNameOvr=$cmd->[2]; 240 $idNameOvr = $idName unless ($idNameOvr); 241 242 my $fields = filter([keys %$tmpl],sub { 243 $_[0] ne $idNameOvr; 244 }); 245 #print STDERR ("\n".toJSON($fields)); 246 247 my $prim = $fields->[0]; 248 my $prime=&escapeSymbol($prim); 249 my $query="select $prime.obj as $idNameOvr, ".( 250 join ",", map &escapeSymbol($_).".val as ".&escapeSymbol($_) ,@{$fields} 251 )."\n from $relName $prime "; 252 my $prev=$prim; 253 shift @{$fields}; 254 for my $f (@{$fields}) { 255 $query .= 256 "\n inner join $relName ".&escapeSymbol($f). 257 " on ".&escapeSymbol($prev).".obj=".&escapeSymbol($f).".obj \n" 258 ; 259 $prev=$f; 260 } 261 unshift @{$fields}, $prim ; 262 my $wheres=[]; 263 for (@{$fields}) { 264 push @{$wheres}, ( 265 &escapeSymbol($_).".name=".&escapeLiteral($_) 266 ); 267 } 268 while (my ($k,$v)=each %{$tmpl}) { 269 next if (isAny($v)); 270 if ($k eq $idNameOvr) { 271 push @{$wheres}, &whereElem ("$prim.obj", $v); 272 } else { 273 push @{$wheres}, &whereElem ("$k.val",$v); 274 } 275 } 276 277 $query .= "\n where "; 278 $query .= join " and \n", @{$wheres} ; 279 #print "$query\n"; 280 281 my $sth = $db->prepare($query); 282 my $eres=$sth->execute; 283 &log($cmd,$query); 284 if (!$eres) { 285 my $exception="Exception ,$query, ".$sth->errstr; 286 $sth->finish; 287 die ($exception); 288 return array($eres); 289 } 290 my $num_rows = $sth->rows; 291 my $res=[]; 292 for (my $i=0; $i<$num_rows; $i++) { 293 my $a = $sth->fetchrow_hashref; 294 push @{$res}, $a; 295 } 296 $sth->finish; 297 return array($res); 180 298 } elsif ($cmd->[0] eq 'DELETE2') { 181 299 # ["DELETE2", objID] … … 291 409 sub log { 292 410 my ($cmd,$query)=@_; 293 print STDERR $query;411 print STDERR "\n$query"; 294 412 push @logBuf,$query; 295 413 } -
lang/actionscript/todoshare/swkText.cgi
r16016 r16061 34 34 return unless ($in->{cmd}); 35 35 my $p=shift; 36 my $ objs=&Obj::exe (36 my $findVal=&Obj::exe ( 37 37 ["FINDREL", any, any, ["like", "%".$in->{cmd}."%"]] 38 )->getColumn("obj")->uniq; 38 )->getColumn("obj"); 39 my $findName=&Obj::exe ( 40 ["FINDREL", any, ["like", "%".$in->{cmd}."%"],any] 41 )->getColumn("obj"); 42 my $findObj=&Obj::exe ( 43 ["FINDREL", ["like", "%".$in->{cmd}."%"],any,any] 44 )->getColumn("obj"); 45 my $objs=uniq([@$findVal,@$findName,@$findObj]); 39 46 47 my %disped; 40 48 &Obj::exe ( 41 49 ["GET2", ["content"],{id=>["in",@$objs]} ] … … 43 51 sub { 44 52 $p->p("$_->{id} - $_->{content}") 45 ->brln; 53 ->brln; 54 $disped{$_->{id}}=1; 46 55 } 47 56 ); 57 $objs->each(sub { 58 my $obj=shift; 59 return if ($disped{$obj}); 60 $p->p("$obj")->brln; 61 }); 48 62 49 63 #$p->p(["pre",&Obj::getLog])->ln; -
lang/actionscript/todoshare/test/test.pl
r16014 r16061 1 1 #!/usr/bin/perl 2 2 3 package main; 4 use pkg; 3 #package main; 4 #use pkg; 5 BEGIN{ 6 push @INC,"../perl"; 7 } 5 8 use strict; 9 use Html; 10 use HtmlTag; 6 11 7 print (b a b (a b),5); 12 &Html::p ([a(href=>"test.html")]); 8 13 14 #print (b a b (a b),5); 9 15 16 #sub a { 17 # my %args=("aho"=>"tensai",@_); 18 # print $args{"aho"}; 19 #} 20 #&a(aho=>"baka"); 21 -
lang/actionscript/todoshare/todo.cgi
r16014 r16061 8 8 use strict; 9 9 use Html; 10 use HtmlTag; 10 11 use JSON; 11 12 use CGI::Carp qw(fatalsToBrowser); … … 72 73 my $q; 73 74 $c->p( 74 [ "form", {action=>$script,method=>"POST"},75 [form(action=>$script,method=>"POST"), 75 76 "内容:",$br, 76 ["input",{type=>"text" , name=>"todoName",value=>$in->{todoName}}],$br,77 input(type=>"text" , name=>"todoName",value=>$in->{todoName}),$br, 77 78 "場所(条件):",$br, 78 [ "select",{name=>"when"},79 [select(name=>"when"), 79 80 sub { 80 81 my $out=shift;
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)