narf 0.6.3 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +0 -237
- data/InstalledFiles +488 -0
- data/README +2 -0
- data/bin/narf +0 -0
- data/bin/narftest +17 -17
- data/build.rb +57 -93
- data/build.rb~ +278 -0
- data/config.save +12 -0
- data/doc/apache_cgi.txt +14 -4
- data/doc/apache_cgi.txt~ +23 -0
- data/doc/fastcgi.txt +10 -6
- data/doc/fastcgi.txt~ +21 -0
- data/doc/mod_ruby.txt +16 -2
- data/doc/mod_ruby.txt~ +7 -0
- data/doc/rdoc/classes/PHPRB.html +188 -0
- data/doc/rdoc/classes/PHPRB.src/M000001.html +15 -0
- data/doc/rdoc/classes/PHPRB.src/M000002.html +19 -0
- data/doc/rdoc/classes/PHPRB.src/M000003.html +25 -0
- data/doc/rdoc/classes/PHPRB.src/M000004.html +15 -0
- data/doc/rdoc/classes/PHPRB.src/M000005.html +23 -0
- data/doc/rdoc/classes/PHPRB.src/M000006.html +15 -0
- data/doc/rdoc/classes/PHPRB.src/M000007.html +17 -0
- data/doc/rdoc/classes/PHPRB.src/M000008.html +17 -0
- data/doc/rdoc/classes/PHPRB/Compiler.html +156 -0
- data/doc/rdoc/classes/PHPRB/Compiler.src/M000014.html +75 -0
- data/doc/rdoc/classes/PHPRB/Compiler.src/M000015.html +35 -0
- data/doc/rdoc/classes/PHPRB/Compiler.src/M000016.html +15 -0
- data/doc/rdoc/classes/PHPRB/Compiler.src/M000017.html +18 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Buffer.html +122 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Buffer.src/M000018.html +20 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Buffer.src/M000019.html +15 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Buffer.src/M000020.html +17 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Buffer.src/M000021.html +20 -0
- data/doc/rdoc/classes/PHPRB/Compiler/ExplicitScanner.html +81 -0
- data/doc/rdoc/classes/PHPRB/Compiler/ExplicitScanner.src/M000028.html +41 -0
- data/doc/rdoc/classes/PHPRB/Compiler/PercentLine.html +95 -0
- data/doc/rdoc/classes/PHPRB/Compiler/PercentLine.src/M000031.html +15 -0
- data/doc/rdoc/classes/PHPRB/Compiler/PercentScanner.html +81 -0
- data/doc/rdoc/classes/PHPRB/Compiler/PercentScanner.src/M000030.html +36 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Scanner.html +132 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Scanner.src/M000023.html +15 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Scanner.src/M000024.html +15 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Scanner.src/M000025.html +16 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Scanner.src/M000026.html +16 -0
- data/doc/rdoc/classes/PHPRB/Compiler/Scanner.src/M000027.html +13 -0
- data/doc/rdoc/classes/PHPRB/Compiler/SimpleScanner.html +81 -0
- data/doc/rdoc/classes/PHPRB/Compiler/SimpleScanner.src/M000022.html +20 -0
- data/doc/rdoc/classes/PHPRB/Compiler/SimpleScanner2.html +81 -0
- data/doc/rdoc/classes/PHPRB/Compiler/SimpleScanner2.src/M000029.html +24 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.html +164 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000032.html +26 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000033.html +25 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000034.html +24 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000035.html +18 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000036.html +23 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000037.html +30 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000038.html +27 -0
- data/doc/rdoc/classes/PHPRB/Compiler/TrimScanner.src/M000039.html +15 -0
- data/doc/rdoc/classes/PHPRB/DefMethod.html +73 -0
- data/doc/rdoc/classes/PHPRB/DefMethod.src/M000009.html +21 -0
- data/doc/rdoc/classes/PHPRB/Util.html +115 -0
- data/doc/rdoc/classes/PHPRB/Util.src/M000010.html +15 -0
- data/doc/rdoc/classes/PHPRB/Util.src/M000012.html +15 -0
- data/doc/rdoc/classes/Web.html +816 -0
- data/doc/rdoc/classes/Web.src/M000001.html +15 -0
- data/doc/rdoc/classes/Web.src/M000002.html +15 -0
- data/doc/rdoc/classes/Web.src/M000003.html +15 -0
- data/doc/rdoc/classes/Web.src/M000004.html +15 -0
- data/doc/rdoc/classes/Web.src/M000005.html +20 -0
- data/doc/rdoc/classes/Web.src/M000006.html +17 -0
- data/doc/rdoc/classes/Web.src/M000007.html +15 -0
- data/doc/rdoc/classes/Web.src/M000008.html +18 -0
- data/doc/rdoc/classes/Web.src/M000009.html +18 -0
- data/doc/rdoc/classes/Web.src/M000010.html +16 -0
- data/doc/rdoc/classes/Web.src/M000011.html +15 -0
- data/doc/rdoc/classes/Web.src/M000012.html +15 -0
- data/doc/rdoc/classes/Web.src/M000013.html +15 -0
- data/doc/rdoc/classes/Web.src/M000014.html +15 -0
- data/doc/rdoc/classes/Web.src/M000015.html +15 -0
- data/doc/rdoc/classes/Web.src/M000016.html +15 -0
- data/doc/rdoc/classes/Web.src/M000017.html +15 -0
- data/doc/rdoc/classes/Web.src/M000018.html +15 -0
- data/doc/rdoc/classes/Web.src/M000019.html +15 -0
- data/doc/rdoc/classes/Web.src/M000020.html +122 -0
- data/doc/rdoc/classes/Web.src/M000021.html +19 -0
- data/doc/rdoc/classes/Web.src/M000022.html +15 -0
- data/doc/rdoc/classes/Web.src/M000023.html +15 -0
- data/doc/rdoc/classes/Web.src/M000024.html +46 -0
- data/doc/rdoc/classes/Web.src/M000025.html +23 -0
- data/doc/rdoc/classes/Web.src/M000026.html +23 -0
- data/doc/rdoc/classes/Web.src/M000032.html +18 -0
- data/doc/rdoc/classes/Web.src/M000033.html +15 -0
- data/doc/rdoc/classes/Web.src/M000034.html +15 -0
- data/doc/rdoc/classes/Web.src/M000035.html +15 -0
- data/doc/rdoc/classes/Web.src/M000037.html +19 -0
- data/doc/rdoc/classes/Web.src/M000038.html +19 -0
- data/doc/rdoc/classes/Web.src/M000039.html +135 -0
- data/doc/rdoc/classes/Web.src/M000040.html +15 -0
- data/doc/rdoc/classes/Web.src/M000041.html +15 -0
- data/doc/rdoc/classes/Web.src/M000042.html +15 -0
- data/doc/rdoc/classes/Web.src/M000043.html +15 -0
- data/doc/rdoc/classes/Web.src/M000044.html +15 -0
- data/doc/rdoc/classes/Web.src/M000045.html +17 -0
- data/doc/rdoc/classes/Web.src/M000046.html +18 -0
- data/doc/rdoc/classes/Web.src/M000047.html +18 -0
- data/doc/rdoc/classes/Web.src/M000048.html +16 -0
- data/doc/rdoc/classes/Web.src/M000049.html +15 -0
- data/doc/rdoc/classes/Web.src/M000050.html +15 -0
- data/doc/rdoc/classes/Web.src/M000051.html +15 -0
- data/doc/rdoc/classes/Web.src/M000052.html +15 -0
- data/doc/rdoc/classes/Web.src/M000053.html +15 -0
- data/doc/rdoc/classes/Web.src/M000054.html +15 -0
- data/doc/rdoc/classes/Web.src/M000055.html +15 -0
- data/doc/rdoc/classes/Web.src/M000061.html +15 -0
- data/doc/rdoc/classes/Web.src/M000062.html +46 -0
- data/doc/rdoc/classes/Web.src/M000063.html +23 -0
- data/doc/rdoc/classes/Web.src/M000064.html +23 -0
- data/doc/rdoc/classes/Web.src/M000070.html +18 -0
- data/doc/rdoc/classes/Web.src/M000071.html +15 -0
- data/doc/rdoc/classes/Web.src/M000072.html +15 -0
- data/doc/rdoc/classes/Web.src/M000073.html +15 -0
- data/doc/rdoc/classes/Web.src/M000075.html +20 -0
- data/doc/rdoc/classes/Web.src/M000076.html +19 -0
- data/doc/rdoc/classes/Web.src/M000077.html +136 -0
- data/doc/rdoc/classes/Web/CGD.html +173 -0
- data/doc/rdoc/classes/Web/CGD.src/M000047.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000048.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000049.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000050.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000051.html +23 -0
- data/doc/rdoc/classes/Web/CGD.src/M000064.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000065.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000066.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000067.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000068.html +23 -0
- data/doc/rdoc/classes/Web/CGD.src/M000102.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000103.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000104.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000105.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000106.html +23 -0
- data/doc/rdoc/classes/Web/CGI.html +939 -0
- data/doc/rdoc/classes/Web/CGI.src/M000061.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000062.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000063.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000064.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000065.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000066.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000067.html +17 -0
- data/doc/rdoc/classes/Web/CGI.src/M000068.html +34 -0
- data/doc/rdoc/classes/Web/CGI.src/M000069.html +22 -0
- data/doc/rdoc/classes/Web/CGI.src/M000070.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000071.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000072.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000073.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000074.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000075.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000076.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000077.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000078.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000079.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000080.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000081.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000082.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000083.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000084.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000085.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000086.html +35 -0
- data/doc/rdoc/classes/Web/CGI.src/M000087.html +22 -0
- data/doc/rdoc/classes/Web/CGI.src/M000088.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000089.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000090.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000091.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000092.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000093.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000094.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000095.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000096.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000097.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000098.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000099.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000100.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000101.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000102.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000103.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000104.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000105.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000106.html +36 -0
- data/doc/rdoc/classes/Web/CGI.src/M000107.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000108.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000109.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000110.html +17 -0
- data/doc/rdoc/classes/Web/CGI.src/M000111.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000112.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000113.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000114.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000115.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000116.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000117.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000118.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000119.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000120.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000121.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000122.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000123.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000124.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000125.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000126.html +43 -0
- data/doc/rdoc/classes/Web/CGI.src/M000127.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000128.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000129.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000130.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000131.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000132.html +44 -0
- data/doc/rdoc/classes/Web/CGI.src/M000133.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000134.html +22 -0
- data/doc/rdoc/classes/Web/CGI.src/M000135.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000136.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000137.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000138.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000139.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000140.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000141.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000142.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000143.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000144.html +36 -0
- data/doc/rdoc/classes/Web/CGI.src/M000145.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000146.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000147.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000148.html +17 -0
- data/doc/rdoc/classes/Web/CGI.src/M000149.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000150.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000151.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000152.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000153.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000154.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000155.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000156.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000157.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000158.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000159.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000160.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000161.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000162.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000163.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000164.html +43 -0
- data/doc/rdoc/classes/Web/CGI.src/M000165.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000166.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000167.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000168.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000169.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000170.html +50 -0
- data/doc/rdoc/classes/Web/CGI.src/M000171.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000172.html +22 -0
- data/doc/rdoc/classes/Web/Mime.html +138 -0
- data/doc/rdoc/classes/Web/Mime.src/M000127.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000128.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000129.html +23 -0
- data/doc/rdoc/classes/Web/Mime.src/M000130.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000144.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000145.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000146.html +23 -0
- data/doc/rdoc/classes/Web/Mime.src/M000147.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000182.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000183.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000184.html +23 -0
- data/doc/rdoc/classes/Web/Mime.src/M000185.html +15 -0
- data/doc/rdoc/classes/Web/Narflates.html +134 -0
- data/doc/rdoc/classes/Web/Parser.html +219 -0
- data/doc/rdoc/classes/Web/Parser.src/M000023.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000024.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000025.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000026.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000027.html +30 -0
- data/doc/rdoc/classes/Web/Parser.src/M000028.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000029.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000030.html +27 -0
- data/doc/rdoc/classes/Web/Parser.src/M000031.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000032.html +16 -0
- data/doc/rdoc/classes/Web/Parser.src/M000033.html +18 -0
- data/doc/rdoc/classes/Web/Parser.src/M000040.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000041.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000042.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000043.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000044.html +30 -0
- data/doc/rdoc/classes/Web/Parser.src/M000045.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000046.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000047.html +27 -0
- data/doc/rdoc/classes/Web/Parser.src/M000048.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000049.html +16 -0
- data/doc/rdoc/classes/Web/Parser.src/M000050.html +18 -0
- data/doc/rdoc/classes/Web/Parser.src/M000078.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000079.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000080.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000081.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000082.html +30 -0
- data/doc/rdoc/classes/Web/Parser.src/M000083.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000084.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000085.html +27 -0
- data/doc/rdoc/classes/Web/Parser.src/M000086.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000087.html +16 -0
- data/doc/rdoc/classes/Web/Parser.src/M000088.html +18 -0
- data/doc/rdoc/classes/Web/Session.html +188 -0
- data/doc/rdoc/classes/Web/Session.src/M000052.html +20 -0
- data/doc/rdoc/classes/Web/Session.src/M000053.html +19 -0
- data/doc/rdoc/classes/Web/Session.src/M000054.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000055.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000056.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000057.html +17 -0
- data/doc/rdoc/classes/Web/Session.src/M000058.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000059.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000060.html +16 -0
- data/doc/rdoc/classes/Web/Session.src/M000069.html +20 -0
- data/doc/rdoc/classes/Web/Session.src/M000070.html +19 -0
- data/doc/rdoc/classes/Web/Session.src/M000071.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000072.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000073.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000074.html +17 -0
- data/doc/rdoc/classes/Web/Session.src/M000075.html +19 -0
- data/doc/rdoc/classes/Web/Session.src/M000076.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000077.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000078.html +16 -0
- data/doc/rdoc/classes/Web/Session.src/M000107.html +20 -0
- data/doc/rdoc/classes/Web/Session.src/M000108.html +19 -0
- data/doc/rdoc/classes/Web/Session.src/M000109.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000110.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000111.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000112.html +17 -0
- data/doc/rdoc/classes/Web/Session.src/M000113.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000114.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000115.html +16 -0
- data/doc/rdoc/classes/Web/Testing.html +474 -0
- data/doc/rdoc/classes/Web/Testing.src/M000034.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000035.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000036.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000037.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000038.html +57 -0
- data/doc/rdoc/classes/Web/Testing.src/M000039.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000040.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000041.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000042.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000043.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000044.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000045.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000046.html +18 -0
- data/doc/rdoc/classes/Web/Testing.src/M000051.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000052.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000053.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000054.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000055.html +57 -0
- data/doc/rdoc/classes/Web/Testing.src/M000056.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000057.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000058.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000059.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000060.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000061.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000062.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000063.html +18 -0
- data/doc/rdoc/classes/Web/Testing.src/M000089.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000090.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000091.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000092.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000093.html +57 -0
- data/doc/rdoc/classes/Web/Testing.src/M000094.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000095.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000096.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000097.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000098.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000099.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000100.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000101.html +18 -0
- data/doc/rdoc/classes/Web/Upload.html +160 -0
- data/doc/rdoc/classes/Web/Upload.src/M000118.html +25 -0
- data/doc/rdoc/classes/Web/Upload.src/M000119.html +18 -0
- data/doc/rdoc/classes/Web/Upload.src/M000120.html +16 -0
- data/doc/rdoc/classes/Web/Upload.src/M000121.html +16 -0
- data/doc/rdoc/classes/Web/Upload.src/M000135.html +25 -0
- data/doc/rdoc/classes/Web/Upload.src/M000136.html +18 -0
- data/doc/rdoc/classes/Web/Upload.src/M000137.html +16 -0
- data/doc/rdoc/classes/Web/Upload.src/M000138.html +16 -0
- data/doc/rdoc/classes/Web/Upload.src/M000173.html +25 -0
- data/doc/rdoc/classes/Web/Upload.src/M000174.html +18 -0
- data/doc/rdoc/classes/Web/Upload.src/M000175.html +16 -0
- data/doc/rdoc/classes/Web/Upload.src/M000176.html +16 -0
- data/doc/rdoc/classes/Web/Wiki.html +230 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000122.html +25 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000123.html +15 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000124.html +26 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000125.html +21 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000126.html +18 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000139.html +25 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000140.html +15 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000141.html +26 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000142.html +21 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000143.html +18 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000177.html +25 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000178.html +15 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000179.html +26 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000180.html +21 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000181.html +18 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/README.html +232 -0
- data/doc/rdoc/files/doc/apache_cgi_txt.html +90 -0
- data/doc/rdoc/files/doc/fastcgi_txt.html +86 -0
- data/doc/rdoc/files/doc/mod_ruby_txt.html +78 -0
- data/doc/rdoc/files/doc/webrick_txt.html +79 -0
- data/doc/rdoc/files/doc/windows_cgi_txt.html +70 -0
- data/doc/rdoc/files/examples/examples_rdoc.html +73 -0
- data/doc/rdoc/files/lib/web/cgi_rb.html +75 -0
- data/doc/rdoc/files/lib/web/info_rb.html +67 -0
- data/doc/rdoc/files/lib/web/mime_rb.html +67 -0
- data/doc/rdoc/files/lib/web/parser_rb.html +73 -0
- data/doc/rdoc/files/lib/web/phprb_rb.html +69 -0
- data/doc/rdoc/files/lib/web/session_rb.html +73 -0
- data/doc/rdoc/files/lib/web/stringio_rb.html +73 -0
- data/doc/rdoc/files/lib/web/template_rb.html +73 -0
- data/doc/rdoc/files/lib/web/test_script_rb.html +67 -0
- data/doc/rdoc/files/lib/web/testing_rb.html +67 -0
- data/doc/rdoc/files/lib/web/upload_rb.html +73 -0
- data/doc/rdoc/files/lib/web/wiki_rb.html +79 -0
- data/doc/rdoc/files/lib/web_rb.html +92 -0
- data/doc/rdoc/files/lib/web_rb.src/M000001.html +15 -0
- data/doc/rdoc/fr_class_index.html +47 -0
- data/doc/rdoc/fr_file_index.html +56 -0
- data/doc/rdoc/fr_method_index.html +185 -0
- data/doc/rdoc/index.html +22 -0
- data/doc/rdoc/rdoc-style.css +99 -0
- data/doc/webrick.txt +3 -3
- data/doc/webrick.txt~ +23 -0
- data/doc/windows_cgi.txt +9 -0
- data/doc/windows_cgi.txt~ +23 -0
- data/examples/hello.world.narf +5 -0
- data/examples/hello.world.rb +2 -4
- data/examples/{session.rb → session.narf} +3 -6
- data/examples/test/test.hello.world.rb +5 -1
- data/examples/test/test.session.rb +1 -1
- data/lib/web.rb +74 -49
- data/lib/web.rb~ +372 -0
- data/lib/web/action.rb +77 -76
- data/lib/web/action.rb~ +83 -0
- data/lib/web/cgi.rb +109 -57
- data/lib/web/cgi.rb~ +695 -0
- data/lib/web/htmltools/xmltree.rb~ +160 -0
- data/lib/web/htmltools/xpath.rb~ +71 -0
- data/lib/web/info.rb +290 -0
- data/lib/web/info.rb~ +293 -0
- data/lib/web/mime.rb +29 -24
- data/lib/web/mime.rb~ +82 -0
- data/lib/web/nrb.rb~ +473 -0
- data/lib/web/phprb.rb +481 -0
- data/lib/web/phprb.rb~ +478 -0
- data/lib/web/resources/highlight_table.js +37 -0
- data/lib/web/resources/message_template.html +22 -0
- data/lib/web/resources/message_template.html~ +10 -0
- data/lib/web/resources/narf-logo.gif +0 -0
- data/lib/web/resources/narf-styles.css +1 -0
- data/lib/web/resources/narf-styles.css~ +1 -0
- data/lib/web/runnarfile.rb~ +10 -0
- data/lib/web/runner.rb +68 -17
- data/lib/web/runner.rb~ +80 -0
- data/lib/web/sapi/apache.rb +87 -0
- data/lib/web/sapi/apache.rb~ +86 -0
- data/lib/web/sapi/fastcgi.rb +1 -1
- data/lib/web/sapi/fastcgi.rb~ +26 -0
- data/lib/web/sapi/webrick.rb +20 -28
- data/lib/web/sapi/webrick.rb~ +82 -0
- data/lib/web/session.rb +9 -1
- data/lib/web/stringio.rb +78 -0
- data/lib/web/template.rb~ +615 -0
- data/lib/web/test_script.rb~ +369 -0
- data/lib/web/testing.rb +10 -10
- data/lib/web/testing.rb~ +546 -0
- data/lib/web/wiki.rb +2 -2
- data/lib/web/wiki.rb~ +520 -0
- data/lib/web/wiki/resources/htmlarea/ChangeLog +1185 -0
- data/lib/web/wiki/resources/htmlarea/dialog.js +72 -0
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +16 -0
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +158 -0
- data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +95 -0
- data/lib/web/wiki/resources/htmlarea/examples/core.html +184 -0
- data/lib/web/wiki/resources/htmlarea/examples/css.html +88 -0
- data/lib/web/wiki/resources/htmlarea/examples/custom.css +29 -0
- data/lib/web/wiki/resources/htmlarea/examples/full-page.html +75 -0
- data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +248 -0
- data/lib/web/wiki/resources/htmlarea/examples/index.html +40 -0
- data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +132 -0
- data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +116 -0
- data/lib/web/wiki/resources/htmlarea/examples/test.cgi +21 -0
- data/lib/web/wiki/resources/htmlarea/htmlarea.css +180 -0
- data/lib/web/wiki/resources/htmlarea/htmlarea.js +2175 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/index.html +199 -0
- data/lib/web/wiki/resources/htmlarea/lang/b5.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/cz.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/da.js +38 -0
- data/lib/web/wiki/resources/htmlarea/lang/de.js +54 -0
- data/lib/web/wiki/resources/htmlarea/lang/ee.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/el.js +75 -0
- data/lib/web/wiki/resources/htmlarea/lang/en.js +88 -0
- data/lib/web/wiki/resources/htmlarea/lang/es.js +51 -0
- data/lib/web/wiki/resources/htmlarea/lang/fi.js +46 -0
- data/lib/web/wiki/resources/htmlarea/lang/fr.js +61 -0
- data/lib/web/wiki/resources/htmlarea/lang/gb.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/he.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/hu.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/it.js +54 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/lt.js +55 -0
- data/lib/web/wiki/resources/htmlarea/lang/lv.js +55 -0
- data/lib/web/wiki/resources/htmlarea/lang/nb.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/nl.js +90 -0
- data/lib/web/wiki/resources/htmlarea/lang/no.js +79 -0
- data/lib/web/wiki/resources/htmlarea/lang/pl.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ro.js +80 -0
- data/lib/web/wiki/resources/htmlarea/lang/ru.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/se.js +38 -0
- data/lib/web/wiki/resources/htmlarea/lang/si.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/vn.js +51 -0
- data/lib/web/wiki/resources/htmlarea/license.txt +30 -0
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +116 -0
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +2 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +416 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +59 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +57 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +64 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +143 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +25 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +25 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +131 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +89 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +28 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +38 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +28 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +114 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +210 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +10 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +122 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +397 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +79 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +63 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +91 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +1160 -0
- data/lib/web/wiki/resources/htmlarea/popupdiv.js +369 -0
- data/lib/web/wiki/resources/htmlarea/popups/about.html +378 -0
- data/lib/web/wiki/resources/htmlarea/popups/blank.html +2 -0
- data/lib/web/wiki/resources/htmlarea/popups/custom2.html +35 -0
- data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +16 -0
- data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +133 -0
- data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +191 -0
- data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +174 -0
- data/lib/web/wiki/resources/htmlarea/popups/link.html +142 -0
- data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +131 -0
- data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +206 -0
- data/lib/web/wiki/resources/htmlarea/popups/popup.js +109 -0
- data/lib/web/wiki/resources/htmlarea/popups/select_color.html +347 -0
- data/lib/web/wiki/resources/htmlarea/popupwin.js +139 -0
- data/lib/web/wiki/resources/htmlarea/reference.html +523 -0
- data/lib/web/wiki/resources/htmlarea/release-notes.html +165 -0
- data/lib/web/{writableio.rb → writableio.rb~} +0 -0
- data/narf.gemspec +3 -3
- data/narf.gemspec~ +40 -0
- data/sapi/narf.c +52 -0
- data/sapi/narf.c~ +55 -0
- data/sapi/win/compile.bat +25 -0
- data/sapi/win/config.h +91 -0
- data/sapi/win/narf.c +29 -0
- data/sapi/win/narf.exe +0 -0
- data/scripts/makedist.rb +17 -9
- data/test/{bufferedtestrunner.rb → cgi/bufferedtestrunner.rb~} +1 -1
- data/test/{mod_ruby_stub.rb → cgi/mod_ruby_stub.rb} +0 -0
- data/test/{test.action.rb → cgi/test.action.rb} +21 -17
- data/test/cgi/test.action.rb~ +147 -0
- data/test/{test.assertinclude.rb → cgi/test.assertinclude.rb} +0 -0
- data/test/{test.formreader-2.0.rb → cgi/test.formreader-2.0.rb} +1 -1
- data/test/{test.formreader.rb → cgi/test.formreader.rb} +0 -0
- data/test/{test.mime-type.rb → cgi/test.mime-type.rb} +0 -0
- data/test/cgi/test.narf.cgi.rb +104 -0
- data/test/{test.narf.cgi.rb → cgi/test.narf.cgi.rb~} +0 -0
- data/test/cgi/test.request.rb +363 -0
- data/test/{test.request.rb → cgi/test.request.rb~} +9 -9
- data/test/{test.response.rb → cgi/test.response.rb} +39 -2
- data/test/cgi/test.response.rb~ +621 -0
- data/test/cgi/test.runner.rb +67 -0
- data/test/cgi/test.runner.rb~ +67 -0
- data/test/{test.session.rb → cgi/test.session.rb} +0 -0
- data/test/{test.simpledispatcher.rb → cgi/test.simpledispatcher.rb} +22 -24
- data/test/{test.tagparser.rb → cgi/test.tagparser.rb} +0 -0
- data/test/{test.template.rb → cgi/test.template.rb} +2 -2
- data/test/cgi/test.testing2.rb +340 -0
- data/test/{test.testing2.rb → cgi/test.testing2.rb~} +2 -2
- data/test/cgi/test.web.test.rb +463 -0
- data/test/{test.web.test.rb → cgi/test.web.test.rb~} +0 -0
- data/test/cgi/test_send_file.txt +1 -0
- data/test/cgi/test_send_file.txt~ +1 -0
- data/test/{testfiles → cgi/testfiles}/basictemplate.tpl +0 -0
- data/test/{testfiles → cgi/testfiles}/explorer5.multipart.data +0 -0
- data/test/{testfiles → cgi/testfiles}/form.html +0 -0
- data/test/{testfiles → cgi/testfiles}/mac_ie_env.yaml +0 -0
- data/test/{testfiles → cgi/testfiles}/mac_ie_stdin.bin +0 -0
- data/test/{testfiles → cgi/testfiles}/mac_safari_stdin.bin +0 -0
- data/test/{testfiles → cgi/testfiles}/mozilla.multipart.data +0 -0
- data/test/{testfiles → cgi/testfiles}/netscape4.multipart.data +0 -0
- data/test/testfiles/pic hydra.png b/data/test/cgi/testfiles/pic → hydra.png +0 -0
- data/test/{testfiles → cgi/testfiles}/post.data +0 -0
- data/test/{testfiles → cgi/testfiles}/print.text +0 -0
- data/test/{testfiles → cgi/testfiles}/text +0 -0
- data/test/{webunit/test_site/multipart.html → installation/htdocs/multipart.html~} +58 -59
- data/test/installation/htdocs/test_error.cgi +3 -0
- data/test/installation/htdocs/test_error.cgi~ +7 -0
- data/test/installation/htdocs/test_install.cgi +3 -0
- data/test/installation/htdocs/test_install.cgi~ +3 -0
- data/test/installation/htdocs/test_install.narf +3 -0
- data/test/installation/htdocs/test_install.narf~ +3 -0
- data/test/installation/htdocs/test_install.rb +3 -0
- data/test/installation/htdocs/test_install.rb~ +3 -0
- data/test/installation/runwebtest.rb +5 -0
- data/test/{webunit → installation}/test_cookie.rb +6 -6
- data/test/installation/test_cookie.rb~ +128 -0
- data/test/installation/test_form.rb +43 -0
- data/test/{webunit/test_form.rb → installation/test_form.rb~} +12 -12
- data/test/{webunit → installation}/test_multipart.rb +7 -9
- data/test/installation/test_multipart.rb~ +51 -0
- data/test/installation/test_response.rb +35 -0
- data/test/{webunit/resources → installation}/uploadfile1.txt +0 -0
- data/test/{webunit/resources → installation}/uploadfile2.txt +0 -0
- data/test/wiki/test.tarpit.rb +4 -4
- data/test/wiki/test.tarpit.rb~ +56 -0
- metadata +738 -145
- data/lib/web/buffer.rb +0 -20
- data/lib/web/unit.rb +0 -27
- data/lib/web/unit/assert.rb +0 -154
- data/lib/web/unit/converter.rb +0 -148
- data/lib/web/unit/cookie.rb +0 -120
- data/lib/web/unit/domwalker.rb +0 -187
- data/lib/web/unit/exception.rb +0 -15
- data/lib/web/unit/form.rb +0 -118
- data/lib/web/unit/formatter.rb +0 -314
- data/lib/web/unit/frame.rb +0 -39
- data/lib/web/unit/html-parser.rb +0 -432
- data/lib/web/unit/htmlelem.rb +0 -124
- data/lib/web/unit/htmlrepair.rb +0 -116
- data/lib/web/unit/htmlsplit.rb +0 -840
- data/lib/web/unit/image.rb +0 -27
- data/lib/web/unit/jscript.rb +0 -32
- data/lib/web/unit/link.rb +0 -35
- data/lib/web/unit/params.rb +0 -323
- data/lib/web/unit/parser.rb +0 -226
- data/lib/web/unit/resources/assert.html +0 -101
- data/lib/web/unit/resources/auth/index.html +0 -5
- data/lib/web/unit/resources/badtags.html +0 -7
- data/lib/web/unit/resources/cookie.cgi +0 -33
- data/lib/web/unit/resources/document.xml +0 -13
- data/lib/web/unit/resources/form.html +0 -150
- data/lib/web/unit/resources/frame-0.html +0 -10
- data/lib/web/unit/resources/frame-1.html +0 -10
- data/lib/web/unit/resources/frame.html +0 -10
- data/lib/web/unit/resources/image.html +0 -17
- data/lib/web/unit/resources/images/x.gif +0 -0
- data/lib/web/unit/resources/images/y.gif +0 -0
- data/lib/web/unit/resources/jscript-0.html +0 -10
- data/lib/web/unit/resources/jscript-1.html +0 -10
- data/lib/web/unit/resources/jscript.html +0 -19
- data/lib/web/unit/resources/link.html +0 -19
- data/lib/web/unit/resources/multipart.cgi +0 -28
- data/lib/web/unit/resources/multipart.html +0 -74
- data/lib/web/unit/resources/params.html +0 -65
- data/lib/web/unit/resources/redirect.cgi +0 -13
- data/lib/web/unit/resources/response.html +0 -67
- data/lib/web/unit/resources/simple.cgi +0 -14
- data/lib/web/unit/resources/stock.cgi +0 -35
- data/lib/web/unit/resources/table.html +0 -83
- data/lib/web/unit/response.rb +0 -469
- data/lib/web/unit/runtest.rb +0 -44
- data/lib/web/unit/sgml-parser.rb +0 -336
- data/lib/web/unit/table.rb +0 -150
- data/lib/web/unit/testcase.rb +0 -49
- data/lib/web/unit/ui/cui/testrunner.rb +0 -52
- data/lib/web/unit/utils.rb +0 -70
- data/lib/web/unit/webunit.rb +0 -28
- data/sapi/apache_cgi/src/narf.c +0 -13
- data/test/stringio.rb +0 -2
- data/test/test.app.rb +0 -0
- data/test/webunit/dont_get_it.test_webunit.rb +0 -27
- data/test/webunit/ref +0 -38
- data/test/webunit/test_assert.rb +0 -169
- data/test/webunit/test_domwalker.rb +0 -83
- data/test/webunit/test_frame.rb +0 -43
- data/test/webunit/test_htmlelem.rb +0 -75
- data/test/webunit/test_image.rb +0 -46
- data/test/webunit/test_jscript.rb +0 -58
- data/test/webunit/test_link.rb +0 -87
- data/test/webunit/test_params.rb +0 -212
- data/test/webunit/test_parser.rb +0 -31
- data/test/webunit/test_response.rb +0 -145
- data/test/webunit/test_site/assert.html +0 -101
- data/test/webunit/test_site/auth/index.html +0 -5
- data/test/webunit/test_site/badtags.html +0 -7
- data/test/webunit/test_site/cookie.cgi +0 -37
- data/test/webunit/test_site/document.xml +0 -13
- data/test/webunit/test_site/form.html +0 -150
- data/test/webunit/test_site/frame-0.html +0 -10
- data/test/webunit/test_site/frame-1.html +0 -10
- data/test/webunit/test_site/frame.html +0 -10
- data/test/webunit/test_site/image.html +0 -17
- data/test/webunit/test_site/images/x.gif +0 -0
- data/test/webunit/test_site/images/y.gif +0 -0
- data/test/webunit/test_site/jscript-0.html +0 -10
- data/test/webunit/test_site/jscript-1.html +0 -10
- data/test/webunit/test_site/jscript.html +0 -19
- data/test/webunit/test_site/link.html +0 -19
- data/test/webunit/test_site/multipart.cgi +0 -27
- data/test/webunit/test_site/params.html +0 -65
- data/test/webunit/test_site/redirect.cgi +0 -14
- data/test/webunit/test_site/response.html +0 -67
- data/test/webunit/test_site/simple.cgi +0 -17
- data/test/webunit/test_site/stock.cgi +0 -36
- data/test/webunit/test_site/table.html +0 -83
- data/test/webunit/test_table.rb +0 -70
- data/test/webunit/test_utils.rb +0 -107
@@ -0,0 +1,1160 @@
|
|
1
|
+
// Table Operations Plugin for HTMLArea-3.0
|
2
|
+
// Implementation by Mihai Bazon. Sponsored by http://www.bloki.com
|
3
|
+
//
|
4
|
+
// htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc.
|
5
|
+
// This notice MUST stay intact for use (see license.txt).
|
6
|
+
//
|
7
|
+
// A free WYSIWYG editor replacement for <textarea> fields.
|
8
|
+
// For full source code and docs, visit http://www.interactivetools.com/
|
9
|
+
//
|
10
|
+
// Version 3.0 developed by Mihai Bazon for InteractiveTools.
|
11
|
+
// http://dynarch.com/mishoo
|
12
|
+
//
|
13
|
+
// $Id: table-operations.js,v 1.5 2003/10/06 11:47:42 mishoo Exp $
|
14
|
+
|
15
|
+
// Object that will encapsulate all the table operations provided by
|
16
|
+
// HTMLArea-3.0 (except "insert table" which is included in the main file)
|
17
|
+
function TableOperations(editor) {
|
18
|
+
this.editor = editor;
|
19
|
+
|
20
|
+
var cfg = editor.config;
|
21
|
+
var tt = TableOperations.I18N;
|
22
|
+
var bl = TableOperations.btnList;
|
23
|
+
var self = this;
|
24
|
+
|
25
|
+
// register the toolbar buttons provided by this plugin
|
26
|
+
var toolbar = ["linebreak"];
|
27
|
+
for (var i in bl) {
|
28
|
+
var btn = bl[i];
|
29
|
+
if (!btn) {
|
30
|
+
toolbar.push("separator");
|
31
|
+
} else {
|
32
|
+
var id = "TO-" + btn[0];
|
33
|
+
cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "TableOperations"), false,
|
34
|
+
function(editor, id) {
|
35
|
+
// dispatch button press event
|
36
|
+
self.buttonPress(editor, id);
|
37
|
+
}, btn[1]);
|
38
|
+
toolbar.push(id);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
// add a new line in the toolbar
|
43
|
+
cfg.toolbar.push(toolbar);
|
44
|
+
};
|
45
|
+
|
46
|
+
TableOperations._pluginInfo = {
|
47
|
+
name : "TableOperations",
|
48
|
+
version : "1.0",
|
49
|
+
developer : "Mihai Bazon",
|
50
|
+
developer_url : "http://dynarch.com/mishoo/",
|
51
|
+
c_owner : "Mihai Bazon",
|
52
|
+
sponsor : "Zapatec Inc.",
|
53
|
+
sponsor_url : "http://www.bloki.com",
|
54
|
+
license : "htmlArea"
|
55
|
+
};
|
56
|
+
|
57
|
+
/************************
|
58
|
+
* UTILITIES
|
59
|
+
************************/
|
60
|
+
|
61
|
+
// retrieves the closest element having the specified tagName in the list of
|
62
|
+
// ancestors of the current selection/caret.
|
63
|
+
TableOperations.prototype.getClosest = function(tagName) {
|
64
|
+
var editor = this.editor;
|
65
|
+
var ancestors = editor.getAllAncestors();
|
66
|
+
var ret = null;
|
67
|
+
tagName = ("" + tagName).toLowerCase();
|
68
|
+
for (var i in ancestors) {
|
69
|
+
var el = ancestors[i];
|
70
|
+
if (el.tagName.toLowerCase() == tagName) {
|
71
|
+
ret = el;
|
72
|
+
break;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
return ret;
|
76
|
+
};
|
77
|
+
|
78
|
+
// this function requires the file PopupDiv/PopupWin to be loaded from browser
|
79
|
+
TableOperations.prototype.dialogTableProperties = function() {
|
80
|
+
var i18n = TableOperations.I18N;
|
81
|
+
// retrieve existing values
|
82
|
+
var table = this.getClosest("table");
|
83
|
+
// this.editor.selectNodeContents(table);
|
84
|
+
// this.editor.updateToolbar();
|
85
|
+
|
86
|
+
var dialog = new PopupWin(this.editor, i18n["Table Properties"], function(dialog, params) {
|
87
|
+
TableOperations.processStyle(params, table);
|
88
|
+
for (var i in params) {
|
89
|
+
var val = params[i];
|
90
|
+
switch (i) {
|
91
|
+
case "f_caption":
|
92
|
+
if (/\S/.test(val)) {
|
93
|
+
// contains non white-space characters
|
94
|
+
var caption = table.getElementsByTagName("caption")[0];
|
95
|
+
if (!caption) {
|
96
|
+
caption = dialog.editor._doc.createElement("caption");
|
97
|
+
table.insertBefore(caption, table.firstChild);
|
98
|
+
}
|
99
|
+
caption.innerHTML = val;
|
100
|
+
} else {
|
101
|
+
// search for caption and delete it if found
|
102
|
+
var caption = table.getElementsByTagName("caption")[0];
|
103
|
+
if (caption) {
|
104
|
+
caption.parentNode.removeChild(caption);
|
105
|
+
}
|
106
|
+
}
|
107
|
+
break;
|
108
|
+
case "f_summary":
|
109
|
+
table.summary = val;
|
110
|
+
break;
|
111
|
+
case "f_width":
|
112
|
+
table.style.width = ("" + val) + params.f_unit;
|
113
|
+
break;
|
114
|
+
case "f_align":
|
115
|
+
table.align = val;
|
116
|
+
break;
|
117
|
+
case "f_spacing":
|
118
|
+
table.cellSpacing = val;
|
119
|
+
break;
|
120
|
+
case "f_padding":
|
121
|
+
table.cellPadding = val;
|
122
|
+
break;
|
123
|
+
case "f_borders":
|
124
|
+
table.border = val;
|
125
|
+
break;
|
126
|
+
case "f_frames":
|
127
|
+
table.frame = val;
|
128
|
+
break;
|
129
|
+
case "f_rules":
|
130
|
+
table.rules = val;
|
131
|
+
break;
|
132
|
+
}
|
133
|
+
}
|
134
|
+
// various workarounds to refresh the table display (Gecko,
|
135
|
+
// what's going on?! do not disappoint me!)
|
136
|
+
dialog.editor.forceRedraw();
|
137
|
+
dialog.editor.focusEditor();
|
138
|
+
dialog.editor.updateToolbar();
|
139
|
+
var save_collapse = table.style.borderCollapse;
|
140
|
+
table.style.borderCollapse = "collapse";
|
141
|
+
table.style.borderCollapse = "separate";
|
142
|
+
table.style.borderCollapse = save_collapse;
|
143
|
+
},
|
144
|
+
|
145
|
+
// this function gets called when the dialog needs to be initialized
|
146
|
+
function (dialog) {
|
147
|
+
|
148
|
+
var f_caption = "";
|
149
|
+
var capel = table.getElementsByTagName("caption")[0];
|
150
|
+
if (capel) {
|
151
|
+
f_caption = capel.innerHTML;
|
152
|
+
}
|
153
|
+
var f_summary = table.summary;
|
154
|
+
var f_width = parseInt(table.style.width);
|
155
|
+
isNaN(f_width) && (f_width = "");
|
156
|
+
var f_unit = /%/.test(table.style.width) ? 'percent' : 'pixels';
|
157
|
+
var f_align = table.align;
|
158
|
+
var f_spacing = table.cellSpacing;
|
159
|
+
var f_padding = table.cellPadding;
|
160
|
+
var f_borders = table.border;
|
161
|
+
var f_frames = table.frame;
|
162
|
+
var f_rules = table.rules;
|
163
|
+
|
164
|
+
function selected(val) {
|
165
|
+
return val ? " selected" : "";
|
166
|
+
};
|
167
|
+
|
168
|
+
// dialog contents
|
169
|
+
dialog.content.style.width = "400px";
|
170
|
+
dialog.content.innerHTML = " \
|
171
|
+
<div class='title'\
|
172
|
+
style='background: url(" + dialog.baseURL + dialog.editor.imgURL("table-prop.gif", "TableOperations") + ") #fff 98% 50% no-repeat'>" + i18n["Table Properties"] + "\
|
173
|
+
</div> \
|
174
|
+
<table style='width:100%'> \
|
175
|
+
<tr> \
|
176
|
+
<td> \
|
177
|
+
<fieldset><legend>" + i18n["Description"] + "</legend> \
|
178
|
+
<table style='width:100%'> \
|
179
|
+
<tr> \
|
180
|
+
<td class='label'>" + i18n["Caption"] + ":</td> \
|
181
|
+
<td class='value'><input type='text' name='f_caption' value='" + f_caption + "'/></td> \
|
182
|
+
</tr><tr> \
|
183
|
+
<td class='label'>" + i18n["Summary"] + ":</td> \
|
184
|
+
<td class='value'><input type='text' name='f_summary' value='" + f_summary + "'/></td> \
|
185
|
+
</tr> \
|
186
|
+
</table> \
|
187
|
+
</fieldset> \
|
188
|
+
</td> \
|
189
|
+
</tr> \
|
190
|
+
<tr><td id='--HA-layout'></td></tr> \
|
191
|
+
<tr> \
|
192
|
+
<td> \
|
193
|
+
<fieldset><legend>" + i18n["Spacing and padding"] + "</legend> \
|
194
|
+
<table style='width:100%'> \
|
195
|
+
"+// <tr> \
|
196
|
+
// <td class='label'>" + i18n["Width"] + ":</td> \
|
197
|
+
// <td><input type='text' name='f_width' value='" + f_width + "' size='5' /> \
|
198
|
+
// <select name='f_unit'> \
|
199
|
+
// <option value='%'" + selected(f_unit == "percent") + ">" + i18n["percent"] + "</option> \
|
200
|
+
// <option value='px'" + selected(f_unit == "pixels") + ">" + i18n["pixels"] + "</option> \
|
201
|
+
// </select> " + i18n["Align"] + ": \
|
202
|
+
// <select name='f_align'> \
|
203
|
+
// <option value='left'" + selected(f_align == "left") + ">" + i18n["Left"] + "</option> \
|
204
|
+
// <option value='center'" + selected(f_align == "center") + ">" + i18n["Center"] + "</option> \
|
205
|
+
// <option value='right'" + selected(f_align == "right") + ">" + i18n["Right"] + "</option> \
|
206
|
+
// </select> \
|
207
|
+
// </td> \
|
208
|
+
// </tr> \
|
209
|
+
" <tr> \
|
210
|
+
<td class='label'>" + i18n["Spacing"] + ":</td> \
|
211
|
+
<td><input type='text' name='f_spacing' size='5' value='" + f_spacing + "' /> " + i18n["Padding"] + ":\
|
212
|
+
<input type='text' name='f_padding' size='5' value='" + f_padding + "' /> " + i18n["pixels"] + "\
|
213
|
+
</td> \
|
214
|
+
</tr> \
|
215
|
+
</table> \
|
216
|
+
</fieldset> \
|
217
|
+
</td> \
|
218
|
+
</tr> \
|
219
|
+
<tr> \
|
220
|
+
<td> \
|
221
|
+
<fieldset><legend>Frame and borders</legend> \
|
222
|
+
<table width='100%'> \
|
223
|
+
<tr> \
|
224
|
+
<td class='label'>" + i18n["Borders"] + ":</td> \
|
225
|
+
<td><input name='f_borders' type='text' size='5' value='" + f_borders + "' /> " + i18n["pixels"] + "</td> \
|
226
|
+
</tr> \
|
227
|
+
<tr> \
|
228
|
+
<td class='label'>" + i18n["Frames"] + ":</td> \
|
229
|
+
<td> \
|
230
|
+
<select name='f_frames'> \
|
231
|
+
<option value='void'" + selected(f_frames == "void") + ">" + i18n["No sides"] + "</option> \
|
232
|
+
<option value='above'" + selected(f_frames == "above") + ">" + i18n["The top side only"] + "</option> \
|
233
|
+
<option value='below'" + selected(f_frames == "below") + ">" + i18n["The bottom side only"] + "</option> \
|
234
|
+
<option value='hsides'" + selected(f_frames == "hsides") + ">" + i18n["The top and bottom sides only"] + "</option> \
|
235
|
+
<option value='vsides'" + selected(f_frames == "vsides") + ">" + i18n["The right and left sides only"] + "</option> \
|
236
|
+
<option value='lhs'" + selected(f_frames == "lhs") + ">" + i18n["The left-hand side only"] + "</option> \
|
237
|
+
<option value='rhs'" + selected(f_frames == "rhs") + ">" + i18n["The right-hand side only"] + "</option> \
|
238
|
+
<option value='box'" + selected(f_frames == "box") + ">" + i18n["All four sides"] + "</option> \
|
239
|
+
</select> \
|
240
|
+
</td> \
|
241
|
+
</tr> \
|
242
|
+
<tr> \
|
243
|
+
<td class='label'>" + i18n["Rules"] + ":</td> \
|
244
|
+
<td> \
|
245
|
+
<select name='f_rules'> \
|
246
|
+
<option value='none'" + selected(f_rules == "none") + ">" + i18n["No rules"] + "</option> \
|
247
|
+
<option value='rows'" + selected(f_rules == "rows") + ">" + i18n["Rules will appear between rows only"] + "</option> \
|
248
|
+
<option value='cols'" + selected(f_rules == "cols") + ">" + i18n["Rules will appear between columns only"] + "</option> \
|
249
|
+
<option value='all'" + selected(f_rules == "all") + ">" + i18n["Rules will appear between all rows and columns"] + "</option> \
|
250
|
+
</select> \
|
251
|
+
</td> \
|
252
|
+
</tr> \
|
253
|
+
</table> \
|
254
|
+
</fieldset> \
|
255
|
+
</td> \
|
256
|
+
</tr> \
|
257
|
+
<tr> \
|
258
|
+
<td id='--HA-style'></td> \
|
259
|
+
</tr> \
|
260
|
+
</table> \
|
261
|
+
";
|
262
|
+
var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, table);
|
263
|
+
var p = dialog.doc.getElementById("--HA-style");
|
264
|
+
p.appendChild(st_prop);
|
265
|
+
var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, table);
|
266
|
+
p = dialog.doc.getElementById("--HA-layout");
|
267
|
+
p.appendChild(st_layout);
|
268
|
+
dialog.modal = true;
|
269
|
+
dialog.addButtons("ok", "cancel");
|
270
|
+
dialog.showAtElement(dialog.editor._iframe, "c");
|
271
|
+
});
|
272
|
+
};
|
273
|
+
|
274
|
+
// this function requires the file PopupDiv/PopupWin to be loaded from browser
|
275
|
+
TableOperations.prototype.dialogRowCellProperties = function(cell) {
|
276
|
+
var i18n = TableOperations.I18N;
|
277
|
+
// retrieve existing values
|
278
|
+
var element = this.getClosest(cell ? "td" : "tr");
|
279
|
+
var table = this.getClosest("table");
|
280
|
+
// this.editor.selectNodeContents(element);
|
281
|
+
// this.editor.updateToolbar();
|
282
|
+
|
283
|
+
var dialog = new PopupWin(this.editor, i18n[cell ? "Cell Properties" : "Row Properties"], function(dialog, params) {
|
284
|
+
TableOperations.processStyle(params, element);
|
285
|
+
for (var i in params) {
|
286
|
+
var val = params[i];
|
287
|
+
switch (i) {
|
288
|
+
case "f_align":
|
289
|
+
element.align = val;
|
290
|
+
break;
|
291
|
+
case "f_char":
|
292
|
+
element.ch = val;
|
293
|
+
break;
|
294
|
+
case "f_valign":
|
295
|
+
element.vAlign = val;
|
296
|
+
break;
|
297
|
+
}
|
298
|
+
}
|
299
|
+
// various workarounds to refresh the table display (Gecko,
|
300
|
+
// what's going on?! do not disappoint me!)
|
301
|
+
dialog.editor.forceRedraw();
|
302
|
+
dialog.editor.focusEditor();
|
303
|
+
dialog.editor.updateToolbar();
|
304
|
+
var save_collapse = table.style.borderCollapse;
|
305
|
+
table.style.borderCollapse = "collapse";
|
306
|
+
table.style.borderCollapse = "separate";
|
307
|
+
table.style.borderCollapse = save_collapse;
|
308
|
+
},
|
309
|
+
|
310
|
+
// this function gets called when the dialog needs to be initialized
|
311
|
+
function (dialog) {
|
312
|
+
|
313
|
+
var f_align = element.align;
|
314
|
+
var f_valign = element.vAlign;
|
315
|
+
var f_char = element.ch;
|
316
|
+
|
317
|
+
function selected(val) {
|
318
|
+
return val ? " selected" : "";
|
319
|
+
};
|
320
|
+
|
321
|
+
// dialog contents
|
322
|
+
dialog.content.style.width = "400px";
|
323
|
+
dialog.content.innerHTML = " \
|
324
|
+
<div class='title'\
|
325
|
+
style='background: url(" + dialog.baseURL + dialog.editor.imgURL(cell ? "cell-prop.gif" : "row-prop.gif", "TableOperations") + ") #fff 98% 50% no-repeat'>" + i18n[cell ? "Cell Properties" : "Row Properties"] + "</div> \
|
326
|
+
<table style='width:100%'> \
|
327
|
+
<tr> \
|
328
|
+
<td id='--HA-layout'> \
|
329
|
+
"+// <fieldset><legend>" + i18n["Layout"] + "</legend> \
|
330
|
+
// <table style='width:100%'> \
|
331
|
+
// <tr> \
|
332
|
+
// <td class='label'>" + i18n["Align"] + ":</td> \
|
333
|
+
// <td> \
|
334
|
+
// <select name='f_align'> \
|
335
|
+
// <option value='left'" + selected(f_align == "left") + ">" + i18n["Left"] + "</option> \
|
336
|
+
// <option value='center'" + selected(f_align == "center") + ">" + i18n["Center"] + "</option> \
|
337
|
+
// <option value='right'" + selected(f_align == "right") + ">" + i18n["Right"] + "</option> \
|
338
|
+
// <option value='char'" + selected(f_align == "char") + ">" + i18n["Char"] + "</option> \
|
339
|
+
// </select> \
|
340
|
+
// " + i18n["Char"] + ": \
|
341
|
+
// <input type='text' style='font-family: monospace; text-align: center' name='f_char' size='1' value='" + f_char + "' /> \
|
342
|
+
// </td> \
|
343
|
+
// </tr><tr> \
|
344
|
+
// <td class='label'>" + i18n["Vertical align"] + ":</td> \
|
345
|
+
// <td> \
|
346
|
+
// <select name='f_valign'> \
|
347
|
+
// <option value='top'" + selected(f_valign == "top") + ">" + i18n["Top"] + "</option> \
|
348
|
+
// <option value='middle'" + selected(f_valign == "middle") + ">" + i18n["Middle"] + "</option> \
|
349
|
+
// <option value='bottom'" + selected(f_valign == "bottom") + ">" + i18n["Bottom"] + "</option> \
|
350
|
+
// <option value='baseline'" + selected(f_valign == "baseline") + ">" + i18n["Baseline"] + "</option> \
|
351
|
+
// </select> \
|
352
|
+
// </td> \
|
353
|
+
// </tr> \
|
354
|
+
// </table> \
|
355
|
+
// </fieldset> \
|
356
|
+
" </td> \
|
357
|
+
</tr> \
|
358
|
+
<tr> \
|
359
|
+
<td id='--HA-style'></td> \
|
360
|
+
</tr> \
|
361
|
+
</table> \
|
362
|
+
";
|
363
|
+
var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, element);
|
364
|
+
var p = dialog.doc.getElementById("--HA-style");
|
365
|
+
p.appendChild(st_prop);
|
366
|
+
var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, element);
|
367
|
+
p = dialog.doc.getElementById("--HA-layout");
|
368
|
+
p.appendChild(st_layout);
|
369
|
+
dialog.modal = true;
|
370
|
+
dialog.addButtons("ok", "cancel");
|
371
|
+
dialog.showAtElement(dialog.editor._iframe, "c");
|
372
|
+
});
|
373
|
+
};
|
374
|
+
|
375
|
+
// this function gets called when some button from the TableOperations toolbar
|
376
|
+
// was pressed.
|
377
|
+
TableOperations.prototype.buttonPress = function(editor, button_id) {
|
378
|
+
this.editor = editor;
|
379
|
+
var mozbr = HTMLArea.is_gecko ? "<br />" : "";
|
380
|
+
var i18n = TableOperations.I18N;
|
381
|
+
|
382
|
+
// helper function that clears the content in a table row
|
383
|
+
function clearRow(tr) {
|
384
|
+
var tds = tr.getElementsByTagName("td");
|
385
|
+
for (var i = tds.length; --i >= 0;) {
|
386
|
+
var td = tds[i];
|
387
|
+
td.rowSpan = 1;
|
388
|
+
td.innerHTML = mozbr;
|
389
|
+
}
|
390
|
+
};
|
391
|
+
|
392
|
+
function splitRow(td) {
|
393
|
+
var n = parseInt("" + td.rowSpan);
|
394
|
+
var nc = parseInt("" + td.colSpan);
|
395
|
+
td.rowSpan = 1;
|
396
|
+
tr = td.parentNode;
|
397
|
+
var itr = tr.rowIndex;
|
398
|
+
var trs = tr.parentNode.rows;
|
399
|
+
var index = td.cellIndex;
|
400
|
+
while (--n > 0) {
|
401
|
+
tr = trs[++itr];
|
402
|
+
var otd = editor._doc.createElement("td");
|
403
|
+
otd.colSpan = td.colSpan;
|
404
|
+
otd.innerHTML = mozbr;
|
405
|
+
tr.insertBefore(otd, tr.cells[index]);
|
406
|
+
}
|
407
|
+
editor.forceRedraw();
|
408
|
+
editor.updateToolbar();
|
409
|
+
};
|
410
|
+
|
411
|
+
function splitCol(td) {
|
412
|
+
var nc = parseInt("" + td.colSpan);
|
413
|
+
td.colSpan = 1;
|
414
|
+
tr = td.parentNode;
|
415
|
+
var ref = td.nextSibling;
|
416
|
+
while (--nc > 0) {
|
417
|
+
var otd = editor._doc.createElement("td");
|
418
|
+
otd.rowSpan = td.rowSpan;
|
419
|
+
otd.innerHTML = mozbr;
|
420
|
+
tr.insertBefore(otd, ref);
|
421
|
+
}
|
422
|
+
editor.forceRedraw();
|
423
|
+
editor.updateToolbar();
|
424
|
+
};
|
425
|
+
|
426
|
+
function splitCell(td) {
|
427
|
+
var nc = parseInt("" + td.colSpan);
|
428
|
+
splitCol(td);
|
429
|
+
var items = td.parentNode.cells;
|
430
|
+
var index = td.cellIndex;
|
431
|
+
while (nc-- > 0) {
|
432
|
+
splitRow(items[index++]);
|
433
|
+
}
|
434
|
+
};
|
435
|
+
|
436
|
+
function selectNextNode(el) {
|
437
|
+
var node = el.nextSibling;
|
438
|
+
while (node && node.nodeType != 1) {
|
439
|
+
node = node.nextSibling;
|
440
|
+
}
|
441
|
+
if (!node) {
|
442
|
+
node = el.previousSibling;
|
443
|
+
while (node && node.nodeType != 1) {
|
444
|
+
node = node.previousSibling;
|
445
|
+
}
|
446
|
+
}
|
447
|
+
if (!node) {
|
448
|
+
node = el.parentNode;
|
449
|
+
}
|
450
|
+
editor.selectNodeContents(node);
|
451
|
+
};
|
452
|
+
|
453
|
+
switch (button_id) {
|
454
|
+
// ROWS
|
455
|
+
|
456
|
+
case "TO-row-insert-above":
|
457
|
+
case "TO-row-insert-under":
|
458
|
+
var tr = this.getClosest("tr");
|
459
|
+
if (!tr) {
|
460
|
+
break;
|
461
|
+
}
|
462
|
+
var otr = tr.cloneNode(true);
|
463
|
+
clearRow(otr);
|
464
|
+
tr.parentNode.insertBefore(otr, /under/.test(button_id) ? tr.nextSibling : tr);
|
465
|
+
editor.forceRedraw();
|
466
|
+
editor.focusEditor();
|
467
|
+
break;
|
468
|
+
case "TO-row-delete":
|
469
|
+
var tr = this.getClosest("tr");
|
470
|
+
if (!tr) {
|
471
|
+
break;
|
472
|
+
}
|
473
|
+
var par = tr.parentNode;
|
474
|
+
if (par.rows.length == 1) {
|
475
|
+
alert(i18n["not-del-last-row"]);
|
476
|
+
break;
|
477
|
+
}
|
478
|
+
// set the caret first to a position that doesn't
|
479
|
+
// disappear.
|
480
|
+
selectNextNode(tr);
|
481
|
+
par.removeChild(tr);
|
482
|
+
editor.forceRedraw();
|
483
|
+
editor.focusEditor();
|
484
|
+
editor.updateToolbar();
|
485
|
+
break;
|
486
|
+
case "TO-row-split":
|
487
|
+
var td = this.getClosest("td");
|
488
|
+
if (!td) {
|
489
|
+
break;
|
490
|
+
}
|
491
|
+
splitRow(td);
|
492
|
+
break;
|
493
|
+
|
494
|
+
// COLUMNS
|
495
|
+
|
496
|
+
case "TO-col-insert-before":
|
497
|
+
case "TO-col-insert-after":
|
498
|
+
var td = this.getClosest("td");
|
499
|
+
if (!td) {
|
500
|
+
break;
|
501
|
+
}
|
502
|
+
var rows = td.parentNode.parentNode.rows;
|
503
|
+
var index = td.cellIndex;
|
504
|
+
for (var i = rows.length; --i >= 0;) {
|
505
|
+
var tr = rows[i];
|
506
|
+
var ref = tr.cells[index + (/after/.test(button_id) ? 1 : 0)];
|
507
|
+
var otd = editor._doc.createElement("td");
|
508
|
+
otd.innerHTML = mozbr;
|
509
|
+
tr.insertBefore(otd, ref);
|
510
|
+
}
|
511
|
+
editor.focusEditor();
|
512
|
+
break;
|
513
|
+
case "TO-col-split":
|
514
|
+
var td = this.getClosest("td");
|
515
|
+
if (!td) {
|
516
|
+
break;
|
517
|
+
}
|
518
|
+
splitCol(td);
|
519
|
+
break;
|
520
|
+
case "TO-col-delete":
|
521
|
+
var td = this.getClosest("td");
|
522
|
+
if (!td) {
|
523
|
+
break;
|
524
|
+
}
|
525
|
+
var index = td.cellIndex;
|
526
|
+
if (td.parentNode.cells.length == 1) {
|
527
|
+
alert(i18n["not-del-last-col"]);
|
528
|
+
break;
|
529
|
+
}
|
530
|
+
// set the caret first to a position that doesn't disappear
|
531
|
+
selectNextNode(td);
|
532
|
+
var rows = td.parentNode.parentNode.rows;
|
533
|
+
for (var i = rows.length; --i >= 0;) {
|
534
|
+
var tr = rows[i];
|
535
|
+
tr.removeChild(tr.cells[index]);
|
536
|
+
}
|
537
|
+
editor.forceRedraw();
|
538
|
+
editor.focusEditor();
|
539
|
+
editor.updateToolbar();
|
540
|
+
break;
|
541
|
+
|
542
|
+
// CELLS
|
543
|
+
|
544
|
+
case "TO-cell-split":
|
545
|
+
var td = this.getClosest("td");
|
546
|
+
if (!td) {
|
547
|
+
break;
|
548
|
+
}
|
549
|
+
splitCell(td);
|
550
|
+
break;
|
551
|
+
case "TO-cell-insert-before":
|
552
|
+
case "TO-cell-insert-after":
|
553
|
+
var td = this.getClosest("td");
|
554
|
+
if (!td) {
|
555
|
+
break;
|
556
|
+
}
|
557
|
+
var tr = td.parentNode;
|
558
|
+
var otd = editor._doc.createElement("td");
|
559
|
+
otd.innerHTML = mozbr;
|
560
|
+
tr.insertBefore(otd, /after/.test(button_id) ? td.nextSibling : td);
|
561
|
+
editor.forceRedraw();
|
562
|
+
editor.focusEditor();
|
563
|
+
break;
|
564
|
+
case "TO-cell-delete":
|
565
|
+
var td = this.getClosest("td");
|
566
|
+
if (!td) {
|
567
|
+
break;
|
568
|
+
}
|
569
|
+
if (td.parentNode.cells.length == 1) {
|
570
|
+
alert(i18n["not-del-last-cell"]);
|
571
|
+
break;
|
572
|
+
}
|
573
|
+
// set the caret first to a position that doesn't disappear
|
574
|
+
selectNextNode(td);
|
575
|
+
td.parentNode.removeChild(td);
|
576
|
+
editor.forceRedraw();
|
577
|
+
editor.updateToolbar();
|
578
|
+
break;
|
579
|
+
case "TO-cell-merge":
|
580
|
+
// !! FIXME: Mozilla specific !!
|
581
|
+
var sel = editor._getSelection();
|
582
|
+
var range, i = 0;
|
583
|
+
var rows = [];
|
584
|
+
var row = null;
|
585
|
+
var cells = null;
|
586
|
+
if (!HTMLArea.is_ie) {
|
587
|
+
try {
|
588
|
+
while (range = sel.getRangeAt(i++)) {
|
589
|
+
var td = range.startContainer.childNodes[range.startOffset];
|
590
|
+
if (td.parentNode != row) {
|
591
|
+
row = td.parentNode;
|
592
|
+
(cells) && rows.push(cells);
|
593
|
+
cells = [];
|
594
|
+
}
|
595
|
+
cells.push(td);
|
596
|
+
}
|
597
|
+
} catch(e) {/* finished walking through selection */}
|
598
|
+
rows.push(cells);
|
599
|
+
} else {
|
600
|
+
// Internet Explorer "browser"
|
601
|
+
var td = this.getClosest("td");
|
602
|
+
if (!td) {
|
603
|
+
alert(i18n["Please click into some cell"]);
|
604
|
+
break;
|
605
|
+
}
|
606
|
+
var tr = td.parentElement;
|
607
|
+
var no_cols = prompt(i18n["How many columns would you like to merge?"], 2);
|
608
|
+
if (!no_cols) {
|
609
|
+
// cancelled
|
610
|
+
break;
|
611
|
+
}
|
612
|
+
var no_rows = prompt(i18n["How many rows would you like to merge?"], 2);
|
613
|
+
if (!no_rows) {
|
614
|
+
// cancelled
|
615
|
+
break;
|
616
|
+
}
|
617
|
+
var cell_index = td.cellIndex;
|
618
|
+
while (no_rows-- > 0) {
|
619
|
+
td = tr.cells[cell_index];
|
620
|
+
cells = [td];
|
621
|
+
for (var i = 1; i < no_cols; ++i) {
|
622
|
+
td = td.nextSibling;
|
623
|
+
if (!td) {
|
624
|
+
break;
|
625
|
+
}
|
626
|
+
cells.push(td);
|
627
|
+
}
|
628
|
+
rows.push(cells);
|
629
|
+
tr = tr.nextSibling;
|
630
|
+
if (!tr) {
|
631
|
+
break;
|
632
|
+
}
|
633
|
+
}
|
634
|
+
}
|
635
|
+
var HTML = "";
|
636
|
+
for (i = 0; i < rows.length; ++i) {
|
637
|
+
// i && (HTML += "<br />");
|
638
|
+
var cells = rows[i];
|
639
|
+
for (var j = 0; j < cells.length; ++j) {
|
640
|
+
// j && (HTML += " ");
|
641
|
+
var cell = cells[j];
|
642
|
+
HTML += cell.innerHTML;
|
643
|
+
(i || j) && (cell.parentNode.removeChild(cell));
|
644
|
+
}
|
645
|
+
}
|
646
|
+
var td = rows[0][0];
|
647
|
+
td.innerHTML = HTML;
|
648
|
+
td.rowSpan = rows.length;
|
649
|
+
td.colSpan = rows[0].length;
|
650
|
+
editor.selectNodeContents(td);
|
651
|
+
editor.forceRedraw();
|
652
|
+
editor.focusEditor();
|
653
|
+
break;
|
654
|
+
|
655
|
+
// PROPERTIES
|
656
|
+
|
657
|
+
case "TO-table-prop":
|
658
|
+
this.dialogTableProperties();
|
659
|
+
break;
|
660
|
+
|
661
|
+
case "TO-row-prop":
|
662
|
+
this.dialogRowCellProperties(false);
|
663
|
+
break;
|
664
|
+
|
665
|
+
case "TO-cell-prop":
|
666
|
+
this.dialogRowCellProperties(true);
|
667
|
+
break;
|
668
|
+
|
669
|
+
default:
|
670
|
+
alert("Button [" + button_id + "] not yet implemented");
|
671
|
+
}
|
672
|
+
};
|
673
|
+
|
674
|
+
// the list of buttons added by this plugin
|
675
|
+
TableOperations.btnList = [
|
676
|
+
// table properties button
|
677
|
+
["table-prop", "table"],
|
678
|
+
null, // separator
|
679
|
+
|
680
|
+
// ROWS
|
681
|
+
["row-prop", "tr"],
|
682
|
+
["row-insert-above", "tr"],
|
683
|
+
["row-insert-under", "tr"],
|
684
|
+
["row-delete", "tr"],
|
685
|
+
["row-split", "td[rowSpan!=1]"],
|
686
|
+
null,
|
687
|
+
|
688
|
+
// COLS
|
689
|
+
["col-insert-before", "td"],
|
690
|
+
["col-insert-after", "td"],
|
691
|
+
["col-delete", "td"],
|
692
|
+
["col-split", "td[colSpan!=1]"],
|
693
|
+
null,
|
694
|
+
|
695
|
+
// CELLS
|
696
|
+
["cell-prop", "td"],
|
697
|
+
["cell-insert-before", "td"],
|
698
|
+
["cell-insert-after", "td"],
|
699
|
+
["cell-delete", "td"],
|
700
|
+
["cell-merge", "tr"],
|
701
|
+
["cell-split", "td[colSpan!=1,rowSpan!=1]"]
|
702
|
+
];
|
703
|
+
|
704
|
+
|
705
|
+
|
706
|
+
//// GENERIC CODE [style of any element; this should be moved into a separate
|
707
|
+
//// file as it'll be very useful]
|
708
|
+
//// BEGIN GENERIC CODE -----------------------------------------------------
|
709
|
+
|
710
|
+
TableOperations.getLength = function(value) {
|
711
|
+
var len = parseInt(value);
|
712
|
+
if (isNaN(len)) {
|
713
|
+
len = "";
|
714
|
+
}
|
715
|
+
return len;
|
716
|
+
};
|
717
|
+
|
718
|
+
// Applies the style found in "params" to the given element.
|
719
|
+
TableOperations.processStyle = function(params, element) {
|
720
|
+
var style = element.style;
|
721
|
+
for (var i in params) {
|
722
|
+
var val = params[i];
|
723
|
+
switch (i) {
|
724
|
+
case "f_st_backgroundColor":
|
725
|
+
style.backgroundColor = val;
|
726
|
+
break;
|
727
|
+
case "f_st_color":
|
728
|
+
style.color = val;
|
729
|
+
break;
|
730
|
+
case "f_st_backgroundImage":
|
731
|
+
if (/\S/.test(val)) {
|
732
|
+
style.backgroundImage = "url(" + val + ")";
|
733
|
+
} else {
|
734
|
+
style.backgroundImage = "none";
|
735
|
+
}
|
736
|
+
break;
|
737
|
+
case "f_st_borderWidth":
|
738
|
+
style.borderWidth = val;
|
739
|
+
break;
|
740
|
+
case "f_st_borderStyle":
|
741
|
+
style.borderStyle = val;
|
742
|
+
break;
|
743
|
+
case "f_st_borderColor":
|
744
|
+
style.borderColor = val;
|
745
|
+
break;
|
746
|
+
case "f_st_borderCollapse":
|
747
|
+
style.borderCollapse = val ? "collapse" : "";
|
748
|
+
break;
|
749
|
+
case "f_st_width":
|
750
|
+
if (/\S/.test(val)) {
|
751
|
+
style.width = val + params["f_st_widthUnit"];
|
752
|
+
} else {
|
753
|
+
style.width = "";
|
754
|
+
}
|
755
|
+
break;
|
756
|
+
case "f_st_height":
|
757
|
+
if (/\S/.test(val)) {
|
758
|
+
style.height = val + params["f_st_heightUnit"];
|
759
|
+
} else {
|
760
|
+
style.height = "";
|
761
|
+
}
|
762
|
+
break;
|
763
|
+
case "f_st_textAlign":
|
764
|
+
if (val == "char") {
|
765
|
+
var ch = params["f_st_textAlignChar"];
|
766
|
+
if (ch == '"') {
|
767
|
+
ch = '\\"';
|
768
|
+
}
|
769
|
+
style.textAlign = '"' + ch + '"';
|
770
|
+
} else {
|
771
|
+
style.textAlign = val;
|
772
|
+
}
|
773
|
+
break;
|
774
|
+
case "f_st_verticalAlign":
|
775
|
+
style.verticalAlign = val;
|
776
|
+
break;
|
777
|
+
case "f_st_float":
|
778
|
+
style.cssFloat = val;
|
779
|
+
break;
|
780
|
+
// case "f_st_margin":
|
781
|
+
// style.margin = val + "px";
|
782
|
+
// break;
|
783
|
+
// case "f_st_padding":
|
784
|
+
// style.padding = val + "px";
|
785
|
+
// break;
|
786
|
+
}
|
787
|
+
}
|
788
|
+
};
|
789
|
+
|
790
|
+
// Returns an HTML element for a widget that allows color selection. That is,
|
791
|
+
// a button that contains the given color, if any, and when pressed will popup
|
792
|
+
// the sooner-or-later-to-be-rewritten select_color.html dialog allowing user
|
793
|
+
// to select some color. If a color is selected, an input field with the name
|
794
|
+
// "f_st_"+name will be updated with the color value in #123456 format.
|
795
|
+
TableOperations.createColorButton = function(doc, editor, color, name) {
|
796
|
+
if (!color) {
|
797
|
+
color = "";
|
798
|
+
} else if (!/#/.test(color)) {
|
799
|
+
color = HTMLArea._colorToRgb(color);
|
800
|
+
}
|
801
|
+
|
802
|
+
var df = doc.createElement("span");
|
803
|
+
var field = doc.createElement("input");
|
804
|
+
field.type = "hidden";
|
805
|
+
df.appendChild(field);
|
806
|
+
field.name = "f_st_" + name;
|
807
|
+
field.value = color;
|
808
|
+
var button = doc.createElement("span");
|
809
|
+
button.className = "buttonColor";
|
810
|
+
df.appendChild(button);
|
811
|
+
var span = doc.createElement("span");
|
812
|
+
span.className = "chooser";
|
813
|
+
// span.innerHTML = " ";
|
814
|
+
span.style.backgroundColor = color;
|
815
|
+
button.appendChild(span);
|
816
|
+
button.onmouseover = function() { if (!this.disabled) { this.className += " buttonColor-hilite"; }};
|
817
|
+
button.onmouseout = function() { if (!this.disabled) { this.className = "buttonColor"; }};
|
818
|
+
span.onclick = function() {
|
819
|
+
if (this.parentNode.disabled) {
|
820
|
+
return false;
|
821
|
+
}
|
822
|
+
editor._popupDialog("select_color.html", function(color) {
|
823
|
+
if (color) {
|
824
|
+
span.style.backgroundColor = "#" + color;
|
825
|
+
field.value = "#" + color;
|
826
|
+
}
|
827
|
+
}, color);
|
828
|
+
};
|
829
|
+
var span2 = doc.createElement("span");
|
830
|
+
span2.innerHTML = "×";
|
831
|
+
span2.className = "nocolor";
|
832
|
+
span2.title = TableOperations.I18N["Unset color"];
|
833
|
+
button.appendChild(span2);
|
834
|
+
span2.onmouseover = function() { if (!this.parentNode.disabled) { this.className += " nocolor-hilite"; }};
|
835
|
+
span2.onmouseout = function() { if (!this.parentNode.disabled) { this.className = "nocolor"; }};
|
836
|
+
span2.onclick = function() {
|
837
|
+
span.style.backgroundColor = "";
|
838
|
+
field.value = "";
|
839
|
+
};
|
840
|
+
return df;
|
841
|
+
};
|
842
|
+
|
843
|
+
TableOperations.createStyleLayoutFieldset = function(doc, editor, el) {
|
844
|
+
var i18n = TableOperations.I18N;
|
845
|
+
var fieldset = doc.createElement("fieldset");
|
846
|
+
var legend = doc.createElement("legend");
|
847
|
+
fieldset.appendChild(legend);
|
848
|
+
legend.innerHTML = i18n["Layout"];
|
849
|
+
var table = doc.createElement("table");
|
850
|
+
fieldset.appendChild(table);
|
851
|
+
table.style.width = "100%";
|
852
|
+
var tbody = doc.createElement("tbody");
|
853
|
+
table.appendChild(tbody);
|
854
|
+
|
855
|
+
var tagname = el.tagName.toLowerCase();
|
856
|
+
var tr, td, input, select, option, options, i;
|
857
|
+
|
858
|
+
if (tagname != "td" && tagname != "tr" && tagname != "th") {
|
859
|
+
tr = doc.createElement("tr");
|
860
|
+
tbody.appendChild(tr);
|
861
|
+
td = doc.createElement("td");
|
862
|
+
td.className = "label";
|
863
|
+
tr.appendChild(td);
|
864
|
+
td.innerHTML = i18n["Float"] + ":";
|
865
|
+
td = doc.createElement("td");
|
866
|
+
tr.appendChild(td);
|
867
|
+
select = doc.createElement("select");
|
868
|
+
td.appendChild(select);
|
869
|
+
select.name = "f_st_float";
|
870
|
+
options = ["None", "Left", "Right"];
|
871
|
+
for (i in options) {
|
872
|
+
var Val = options[i];
|
873
|
+
var val = options[i].toLowerCase();
|
874
|
+
option = doc.createElement("option");
|
875
|
+
option.innerHTML = i18n[Val];
|
876
|
+
option.value = val;
|
877
|
+
option.selected = (("" + el.style.cssFloat).toLowerCase() == val);
|
878
|
+
select.appendChild(option);
|
879
|
+
}
|
880
|
+
}
|
881
|
+
|
882
|
+
tr = doc.createElement("tr");
|
883
|
+
tbody.appendChild(tr);
|
884
|
+
td = doc.createElement("td");
|
885
|
+
td.className = "label";
|
886
|
+
tr.appendChild(td);
|
887
|
+
td.innerHTML = i18n["Width"] + ":";
|
888
|
+
td = doc.createElement("td");
|
889
|
+
tr.appendChild(td);
|
890
|
+
input = doc.createElement("input");
|
891
|
+
input.type = "text";
|
892
|
+
input.value = TableOperations.getLength(el.style.width);
|
893
|
+
input.size = "5";
|
894
|
+
input.name = "f_st_width";
|
895
|
+
input.style.marginRight = "0.5em";
|
896
|
+
td.appendChild(input);
|
897
|
+
select = doc.createElement("select");
|
898
|
+
select.name = "f_st_widthUnit";
|
899
|
+
option = doc.createElement("option");
|
900
|
+
option.innerHTML = i18n["percent"];
|
901
|
+
option.value = "%";
|
902
|
+
option.selected = /%/.test(el.style.width);
|
903
|
+
select.appendChild(option);
|
904
|
+
option = doc.createElement("option");
|
905
|
+
option.innerHTML = i18n["pixels"];
|
906
|
+
option.value = "px";
|
907
|
+
option.selected = /px/.test(el.style.width);
|
908
|
+
select.appendChild(option);
|
909
|
+
td.appendChild(select);
|
910
|
+
|
911
|
+
select.style.marginRight = "0.5em";
|
912
|
+
td.appendChild(doc.createTextNode(i18n["Text align"] + ":"));
|
913
|
+
select = doc.createElement("select");
|
914
|
+
select.style.marginLeft = select.style.marginRight = "0.5em";
|
915
|
+
td.appendChild(select);
|
916
|
+
select.name = "f_st_textAlign";
|
917
|
+
options = ["Left", "Center", "Right", "Justify"];
|
918
|
+
if (tagname == "td") {
|
919
|
+
options.push("Char");
|
920
|
+
}
|
921
|
+
input = doc.createElement("input");
|
922
|
+
input.name = "f_st_textAlignChar";
|
923
|
+
input.size = "1";
|
924
|
+
input.style.fontFamily = "monospace";
|
925
|
+
td.appendChild(input);
|
926
|
+
for (i in options) {
|
927
|
+
var Val = options[i];
|
928
|
+
var val = Val.toLowerCase();
|
929
|
+
option = doc.createElement("option");
|
930
|
+
option.value = val;
|
931
|
+
option.innerHTML = i18n[Val];
|
932
|
+
option.selected = (el.style.textAlign.toLowerCase() == val);
|
933
|
+
select.appendChild(option);
|
934
|
+
}
|
935
|
+
function setCharVisibility(value) {
|
936
|
+
input.style.visibility = value ? "visible" : "hidden";
|
937
|
+
if (value) {
|
938
|
+
input.focus();
|
939
|
+
input.select();
|
940
|
+
}
|
941
|
+
};
|
942
|
+
select.onchange = function() { setCharVisibility(this.value == "char"); };
|
943
|
+
setCharVisibility(select.value == "char");
|
944
|
+
|
945
|
+
tr = doc.createElement("tr");
|
946
|
+
tbody.appendChild(tr);
|
947
|
+
td = doc.createElement("td");
|
948
|
+
td.className = "label";
|
949
|
+
tr.appendChild(td);
|
950
|
+
td.innerHTML = i18n["Height"] + ":";
|
951
|
+
td = doc.createElement("td");
|
952
|
+
tr.appendChild(td);
|
953
|
+
input = doc.createElement("input");
|
954
|
+
input.type = "text";
|
955
|
+
input.value = TableOperations.getLength(el.style.height);
|
956
|
+
input.size = "5";
|
957
|
+
input.name = "f_st_height";
|
958
|
+
input.style.marginRight = "0.5em";
|
959
|
+
td.appendChild(input);
|
960
|
+
select = doc.createElement("select");
|
961
|
+
select.name = "f_st_heightUnit";
|
962
|
+
option = doc.createElement("option");
|
963
|
+
option.innerHTML = i18n["percent"];
|
964
|
+
option.value = "%";
|
965
|
+
option.selected = /%/.test(el.style.height);
|
966
|
+
select.appendChild(option);
|
967
|
+
option = doc.createElement("option");
|
968
|
+
option.innerHTML = i18n["pixels"];
|
969
|
+
option.value = "px";
|
970
|
+
option.selected = /px/.test(el.style.height);
|
971
|
+
select.appendChild(option);
|
972
|
+
td.appendChild(select);
|
973
|
+
|
974
|
+
select.style.marginRight = "0.5em";
|
975
|
+
td.appendChild(doc.createTextNode(i18n["Vertical align"] + ":"));
|
976
|
+
select = doc.createElement("select");
|
977
|
+
select.name = "f_st_verticalAlign";
|
978
|
+
select.style.marginLeft = "0.5em";
|
979
|
+
td.appendChild(select);
|
980
|
+
options = ["Top", "Middle", "Bottom", "Baseline"];
|
981
|
+
for (i in options) {
|
982
|
+
var Val = options[i];
|
983
|
+
var val = Val.toLowerCase();
|
984
|
+
option = doc.createElement("option");
|
985
|
+
option.value = val;
|
986
|
+
option.innerHTML = i18n[Val];
|
987
|
+
option.selected = (el.style.verticalAlign.toLowerCase() == val);
|
988
|
+
select.appendChild(option);
|
989
|
+
}
|
990
|
+
|
991
|
+
return fieldset;
|
992
|
+
};
|
993
|
+
|
994
|
+
// Returns an HTML element containing the style attributes for the given
|
995
|
+
// element. This can be easily embedded into any dialog; the functionality is
|
996
|
+
// also provided.
|
997
|
+
TableOperations.createStyleFieldset = function(doc, editor, el) {
|
998
|
+
var i18n = TableOperations.I18N;
|
999
|
+
var fieldset = doc.createElement("fieldset");
|
1000
|
+
var legend = doc.createElement("legend");
|
1001
|
+
fieldset.appendChild(legend);
|
1002
|
+
legend.innerHTML = i18n["CSS Style"];
|
1003
|
+
var table = doc.createElement("table");
|
1004
|
+
fieldset.appendChild(table);
|
1005
|
+
table.style.width = "100%";
|
1006
|
+
var tbody = doc.createElement("tbody");
|
1007
|
+
table.appendChild(tbody);
|
1008
|
+
|
1009
|
+
var tr, td, input, select, option, options, i;
|
1010
|
+
|
1011
|
+
tr = doc.createElement("tr");
|
1012
|
+
tbody.appendChild(tr);
|
1013
|
+
td = doc.createElement("td");
|
1014
|
+
tr.appendChild(td);
|
1015
|
+
td.className = "label";
|
1016
|
+
td.innerHTML = i18n["Background"] + ":";
|
1017
|
+
td = doc.createElement("td");
|
1018
|
+
tr.appendChild(td);
|
1019
|
+
var df = TableOperations.createColorButton(doc, editor, el.style.backgroundColor, "backgroundColor");
|
1020
|
+
df.firstChild.nextSibling.style.marginRight = "0.5em";
|
1021
|
+
td.appendChild(df);
|
1022
|
+
td.appendChild(doc.createTextNode(i18n["Image URL"] + ": "));
|
1023
|
+
input = doc.createElement("input");
|
1024
|
+
input.type = "text";
|
1025
|
+
input.name = "f_st_backgroundImage";
|
1026
|
+
if (el.style.backgroundImage.match(/url\(\s*(.*?)\s*\)/)) {
|
1027
|
+
input.value = RegExp.$1;
|
1028
|
+
}
|
1029
|
+
// input.style.width = "100%";
|
1030
|
+
td.appendChild(input);
|
1031
|
+
|
1032
|
+
tr = doc.createElement("tr");
|
1033
|
+
tbody.appendChild(tr);
|
1034
|
+
td = doc.createElement("td");
|
1035
|
+
tr.appendChild(td);
|
1036
|
+
td.className = "label";
|
1037
|
+
td.innerHTML = i18n["FG Color"] + ":";
|
1038
|
+
td = doc.createElement("td");
|
1039
|
+
tr.appendChild(td);
|
1040
|
+
td.appendChild(TableOperations.createColorButton(doc, editor, el.style.color, "color"));
|
1041
|
+
|
1042
|
+
// for better alignment we include an invisible field.
|
1043
|
+
input = doc.createElement("input");
|
1044
|
+
input.style.visibility = "hidden";
|
1045
|
+
input.type = "text";
|
1046
|
+
td.appendChild(input);
|
1047
|
+
|
1048
|
+
tr = doc.createElement("tr");
|
1049
|
+
tbody.appendChild(tr);
|
1050
|
+
td = doc.createElement("td");
|
1051
|
+
tr.appendChild(td);
|
1052
|
+
td.className = "label";
|
1053
|
+
td.innerHTML = i18n["Border"] + ":";
|
1054
|
+
td = doc.createElement("td");
|
1055
|
+
tr.appendChild(td);
|
1056
|
+
|
1057
|
+
var colorButton = TableOperations.createColorButton(doc, editor, el.style.borderColor, "borderColor");
|
1058
|
+
var btn = colorButton.firstChild.nextSibling;
|
1059
|
+
td.appendChild(colorButton);
|
1060
|
+
// borderFields.push(btn);
|
1061
|
+
btn.style.marginRight = "0.5em";
|
1062
|
+
|
1063
|
+
select = doc.createElement("select");
|
1064
|
+
var borderFields = [];
|
1065
|
+
td.appendChild(select);
|
1066
|
+
select.name = "f_st_borderStyle";
|
1067
|
+
options = ["none", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"];
|
1068
|
+
var currentBorderStyle = el.style.borderStyle;
|
1069
|
+
// Gecko reports "solid solid solid solid" for "border-style: solid".
|
1070
|
+
// That is, "top right bottom left" -- we only consider the first
|
1071
|
+
// value.
|
1072
|
+
(currentBorderStyle.match(/([^\s]*)\s/)) && (currentBorderStyle = RegExp.$1);
|
1073
|
+
for (i in options) {
|
1074
|
+
var val = options[i];
|
1075
|
+
option = doc.createElement("option");
|
1076
|
+
option.value = val;
|
1077
|
+
option.innerHTML = val;
|
1078
|
+
(val == currentBorderStyle) && (option.selected = true);
|
1079
|
+
select.appendChild(option);
|
1080
|
+
}
|
1081
|
+
select.style.marginRight = "0.5em";
|
1082
|
+
function setBorderFieldsStatus(value) {
|
1083
|
+
for (i in borderFields) {
|
1084
|
+
var el = borderFields[i];
|
1085
|
+
el.style.visibility = value ? "hidden" : "visible";
|
1086
|
+
if (!value && (el.tagName.toLowerCase() == "input")) {
|
1087
|
+
el.focus();
|
1088
|
+
el.select();
|
1089
|
+
}
|
1090
|
+
}
|
1091
|
+
};
|
1092
|
+
select.onchange = function() { setBorderFieldsStatus(this.value == "none"); };
|
1093
|
+
|
1094
|
+
input = doc.createElement("input");
|
1095
|
+
borderFields.push(input);
|
1096
|
+
input.type = "text";
|
1097
|
+
input.name = "f_st_borderWidth";
|
1098
|
+
input.value = TableOperations.getLength(el.style.borderWidth);
|
1099
|
+
input.size = "5";
|
1100
|
+
td.appendChild(input);
|
1101
|
+
input.style.marginRight = "0.5em";
|
1102
|
+
var span = doc.createElement("span");
|
1103
|
+
span.innerHTML = i18n["pixels"];
|
1104
|
+
td.appendChild(span);
|
1105
|
+
borderFields.push(span);
|
1106
|
+
|
1107
|
+
setBorderFieldsStatus(select.value == "none");
|
1108
|
+
|
1109
|
+
if (el.tagName.toLowerCase() == "table") {
|
1110
|
+
// the border-collapse style is only for tables
|
1111
|
+
tr = doc.createElement("tr");
|
1112
|
+
tbody.appendChild(tr);
|
1113
|
+
td = doc.createElement("td");
|
1114
|
+
td.className = "label";
|
1115
|
+
tr.appendChild(td);
|
1116
|
+
input = doc.createElement("input");
|
1117
|
+
input.type = "checkbox";
|
1118
|
+
input.name = "f_st_borderCollapse";
|
1119
|
+
input.id = "f_st_borderCollapse";
|
1120
|
+
var val = (/collapse/i.test(el.style.borderCollapse));
|
1121
|
+
input.checked = val ? 1 : 0;
|
1122
|
+
td.appendChild(input);
|
1123
|
+
|
1124
|
+
td = doc.createElement("td");
|
1125
|
+
tr.appendChild(td);
|
1126
|
+
var label = doc.createElement("label");
|
1127
|
+
label.htmlFor = "f_st_borderCollapse";
|
1128
|
+
label.innerHTML = i18n["Collapsed borders"];
|
1129
|
+
td.appendChild(label);
|
1130
|
+
}
|
1131
|
+
|
1132
|
+
// tr = doc.createElement("tr");
|
1133
|
+
// tbody.appendChild(tr);
|
1134
|
+
// td = doc.createElement("td");
|
1135
|
+
// td.className = "label";
|
1136
|
+
// tr.appendChild(td);
|
1137
|
+
// td.innerHTML = i18n["Margin"] + ":";
|
1138
|
+
// td = doc.createElement("td");
|
1139
|
+
// tr.appendChild(td);
|
1140
|
+
// input = doc.createElement("input");
|
1141
|
+
// input.type = "text";
|
1142
|
+
// input.size = "5";
|
1143
|
+
// input.name = "f_st_margin";
|
1144
|
+
// td.appendChild(input);
|
1145
|
+
// input.style.marginRight = "0.5em";
|
1146
|
+
// td.appendChild(doc.createTextNode(i18n["Padding"] + ":"));
|
1147
|
+
|
1148
|
+
// input = doc.createElement("input");
|
1149
|
+
// input.type = "text";
|
1150
|
+
// input.size = "5";
|
1151
|
+
// input.name = "f_st_padding";
|
1152
|
+
// td.appendChild(input);
|
1153
|
+
// input.style.marginLeft = "0.5em";
|
1154
|
+
// input.style.marginRight = "0.5em";
|
1155
|
+
// td.appendChild(doc.createTextNode(i18n["pixels"]));
|
1156
|
+
|
1157
|
+
return fieldset;
|
1158
|
+
};
|
1159
|
+
|
1160
|
+
//// END GENERIC CODE -------------------------------------------------------
|