narf 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. data/ChangeLog +163 -0
  2. data/InstalledFiles +2227 -0
  3. data/README +124 -0
  4. data/TODO +88 -0
  5. data/bin/narftest +17 -0
  6. data/bug.rb +9 -0
  7. data/build.rb +314 -0
  8. data/build.rb~ +314 -0
  9. data/config.save +12 -0
  10. data/doc/apache_cgi.txt +17 -0
  11. data/doc/fastcgi.txt +19 -0
  12. data/doc/mod_ruby.txt +7 -0
  13. data/doc/rdoc/classes/Web.html +366 -0
  14. data/doc/rdoc/classes/Web.src/M000002.html +15 -0
  15. data/doc/rdoc/classes/Web.src/M000003.html +15 -0
  16. data/doc/rdoc/classes/Web.src/M000004.html +15 -0
  17. data/doc/rdoc/classes/Web.src/M000005.html +15 -0
  18. data/doc/rdoc/classes/Web.src/M000006.html +20 -0
  19. data/doc/rdoc/classes/Web.src/M000007.html +18 -0
  20. data/doc/rdoc/classes/Web.src/M000008.html +18 -0
  21. data/doc/rdoc/classes/Web.src/M000009.html +18 -0
  22. data/doc/rdoc/classes/Web.src/M000010.html +15 -0
  23. data/doc/rdoc/classes/Web.src/M000011.html +15 -0
  24. data/doc/rdoc/classes/Web.src/M000012.html +15 -0
  25. data/doc/rdoc/classes/Web/CGD.html +173 -0
  26. data/doc/rdoc/classes/Web/CGD.src/M000037.html +24 -0
  27. data/doc/rdoc/classes/Web/CGD.src/M000038.html +23 -0
  28. data/doc/rdoc/classes/Web/CGD.src/M000039.html +15 -0
  29. data/doc/rdoc/classes/Web/CGD.src/M000040.html +15 -0
  30. data/doc/rdoc/classes/Web/CGD.src/M000041.html +23 -0
  31. data/doc/rdoc/classes/Web/CGI.html +946 -0
  32. data/doc/rdoc/classes/Web/CGI.src/M000051.html +15 -0
  33. data/doc/rdoc/classes/Web/CGI.src/M000052.html +24 -0
  34. data/doc/rdoc/classes/Web/CGI.src/M000053.html +15 -0
  35. data/doc/rdoc/classes/Web/CGI.src/M000054.html +15 -0
  36. data/doc/rdoc/classes/Web/CGI.src/M000055.html +15 -0
  37. data/doc/rdoc/classes/Web/CGI.src/M000056.html +15 -0
  38. data/doc/rdoc/classes/Web/CGI.src/M000057.html +17 -0
  39. data/doc/rdoc/classes/Web/CGI.src/M000058.html +34 -0
  40. data/doc/rdoc/classes/Web/CGI.src/M000059.html +22 -0
  41. data/doc/rdoc/classes/Web/CGI.src/M000060.html +15 -0
  42. data/doc/rdoc/classes/Web/CGI.src/M000061.html +15 -0
  43. data/doc/rdoc/classes/Web/CGI.src/M000062.html +19 -0
  44. data/doc/rdoc/classes/Web/CGI.src/M000063.html +18 -0
  45. data/doc/rdoc/classes/Web/CGI.src/M000064.html +19 -0
  46. data/doc/rdoc/classes/Web/CGI.src/M000065.html +15 -0
  47. data/doc/rdoc/classes/Web/CGI.src/M000066.html +15 -0
  48. data/doc/rdoc/classes/Web/CGI.src/M000067.html +15 -0
  49. data/doc/rdoc/classes/Web/CGI.src/M000068.html +13 -0
  50. data/doc/rdoc/classes/Web/CGI.src/M000069.html +13 -0
  51. data/doc/rdoc/classes/Web/CGI.src/M000070.html +13 -0
  52. data/doc/rdoc/classes/Web/CGI.src/M000071.html +13 -0
  53. data/doc/rdoc/classes/Web/CGI.src/M000072.html +19 -0
  54. data/doc/rdoc/classes/Web/CGI.src/M000073.html +15 -0
  55. data/doc/rdoc/classes/Web/CGI.src/M000074.html +19 -0
  56. data/doc/rdoc/classes/Web/CGI.src/M000075.html +15 -0
  57. data/doc/rdoc/classes/Web/CGI.src/M000076.html +15 -0
  58. data/doc/rdoc/classes/Web/CGI.src/M000077.html +15 -0
  59. data/doc/rdoc/classes/Web/CGI.src/M000078.html +20 -0
  60. data/doc/rdoc/classes/Web/CGI.src/M000079.html +36 -0
  61. data/doc/rdoc/classes/Web/CGI.src/M000080.html +19 -0
  62. data/doc/rdoc/classes/Web/CGI.src/M000081.html +18 -0
  63. data/doc/rdoc/classes/Web/CGI.src/M000082.html +15 -0
  64. data/doc/rdoc/classes/Web/CGI.src/M000083.html +17 -0
  65. data/doc/rdoc/classes/Web/CGI.src/M000084.html +15 -0
  66. data/doc/rdoc/classes/Web/CGI.src/M000085.html +16 -0
  67. data/doc/rdoc/classes/Web/CGI.src/M000086.html +15 -0
  68. data/doc/rdoc/classes/Web/CGI.src/M000087.html +15 -0
  69. data/doc/rdoc/classes/Web/CGI.src/M000088.html +15 -0
  70. data/doc/rdoc/classes/Web/CGI.src/M000089.html +16 -0
  71. data/doc/rdoc/classes/Web/CGI.src/M000090.html +15 -0
  72. data/doc/rdoc/classes/Web/CGI.src/M000091.html +15 -0
  73. data/doc/rdoc/classes/Web/CGI.src/M000092.html +15 -0
  74. data/doc/rdoc/classes/Web/CGI.src/M000093.html +15 -0
  75. data/doc/rdoc/classes/Web/CGI.src/M000094.html +15 -0
  76. data/doc/rdoc/classes/Web/CGI.src/M000095.html +15 -0
  77. data/doc/rdoc/classes/Web/CGI.src/M000096.html +19 -0
  78. data/doc/rdoc/classes/Web/CGI.src/M000097.html +15 -0
  79. data/doc/rdoc/classes/Web/CGI.src/M000098.html +15 -0
  80. data/doc/rdoc/classes/Web/CGI.src/M000099.html +43 -0
  81. data/doc/rdoc/classes/Web/CGI.src/M000100.html +18 -0
  82. data/doc/rdoc/classes/Web/CGI.src/M000101.html +20 -0
  83. data/doc/rdoc/classes/Web/CGI.src/M000102.html +15 -0
  84. data/doc/rdoc/classes/Web/CGI.src/M000103.html +15 -0
  85. data/doc/rdoc/classes/Web/CGI.src/M000104.html +15 -0
  86. data/doc/rdoc/classes/Web/CGI.src/M000105.html +24 -0
  87. data/doc/rdoc/classes/Web/CGI.src/M000106.html +24 -0
  88. data/doc/rdoc/classes/Web/CGI.src/M000107.html +22 -0
  89. data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +104 -0
  90. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +15 -0
  91. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +15 -0
  92. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +15 -0
  93. data/doc/rdoc/classes/Web/Mime.html +122 -0
  94. data/doc/rdoc/classes/Web/Mime.src/M000118.html +15 -0
  95. data/doc/rdoc/classes/Web/Mime.src/M000119.html +15 -0
  96. data/doc/rdoc/classes/Web/Mime.src/M000120.html +23 -0
  97. data/doc/rdoc/classes/Web/Mime.src/M000121.html +15 -0
  98. data/doc/rdoc/classes/Web/Mime.src/M000122.html +15 -0
  99. data/doc/rdoc/classes/Web/Mime.src/M000123.html +23 -0
  100. data/doc/rdoc/classes/Web/Mime.src/M000124.html +15 -0
  101. data/doc/rdoc/classes/Web/Narflates.html +132 -0
  102. data/doc/rdoc/classes/Web/Parser.html +219 -0
  103. data/doc/rdoc/classes/Web/Parser.src/M000013.html +21 -0
  104. data/doc/rdoc/classes/Web/Parser.src/M000014.html +19 -0
  105. data/doc/rdoc/classes/Web/Parser.src/M000015.html +21 -0
  106. data/doc/rdoc/classes/Web/Parser.src/M000016.html +15 -0
  107. data/doc/rdoc/classes/Web/Parser.src/M000017.html +30 -0
  108. data/doc/rdoc/classes/Web/Parser.src/M000018.html +15 -0
  109. data/doc/rdoc/classes/Web/Parser.src/M000019.html +19 -0
  110. data/doc/rdoc/classes/Web/Parser.src/M000020.html +27 -0
  111. data/doc/rdoc/classes/Web/Parser.src/M000021.html +15 -0
  112. data/doc/rdoc/classes/Web/Parser.src/M000022.html +16 -0
  113. data/doc/rdoc/classes/Web/Parser.src/M000023.html +18 -0
  114. data/doc/rdoc/classes/Web/Session.html +178 -0
  115. data/doc/rdoc/classes/Web/Session.src/M000042.html +20 -0
  116. data/doc/rdoc/classes/Web/Session.src/M000043.html +19 -0
  117. data/doc/rdoc/classes/Web/Session.src/M000044.html +21 -0
  118. data/doc/rdoc/classes/Web/Session.src/M000045.html +21 -0
  119. data/doc/rdoc/classes/Web/Session.src/M000046.html +15 -0
  120. data/doc/rdoc/classes/Web/Session.src/M000047.html +17 -0
  121. data/doc/rdoc/classes/Web/Session.src/M000048.html +15 -0
  122. data/doc/rdoc/classes/Web/Session.src/M000049.html +15 -0
  123. data/doc/rdoc/classes/Web/Session.src/M000050.html +16 -0
  124. data/doc/rdoc/classes/Web/Testing.html +474 -0
  125. data/doc/rdoc/classes/Web/Testing.src/M000024.html +15 -0
  126. data/doc/rdoc/classes/Web/Testing.src/M000025.html +25 -0
  127. data/doc/rdoc/classes/Web/Testing.src/M000026.html +15 -0
  128. data/doc/rdoc/classes/Web/Testing.src/M000027.html +28 -0
  129. data/doc/rdoc/classes/Web/Testing.src/M000028.html +58 -0
  130. data/doc/rdoc/classes/Web/Testing.src/M000029.html +15 -0
  131. data/doc/rdoc/classes/Web/Testing.src/M000030.html +15 -0
  132. data/doc/rdoc/classes/Web/Testing.src/M000031.html +15 -0
  133. data/doc/rdoc/classes/Web/Testing.src/M000032.html +15 -0
  134. data/doc/rdoc/classes/Web/Testing.src/M000033.html +15 -0
  135. data/doc/rdoc/classes/Web/Testing.src/M000034.html +15 -0
  136. data/doc/rdoc/classes/Web/Testing.src/M000035.html +15 -0
  137. data/doc/rdoc/classes/Web/Testing.src/M000036.html +18 -0
  138. data/doc/rdoc/classes/Web/Upload.html +160 -0
  139. data/doc/rdoc/classes/Web/Upload.src/M000108.html +25 -0
  140. data/doc/rdoc/classes/Web/Upload.src/M000109.html +18 -0
  141. data/doc/rdoc/classes/Web/Upload.src/M000110.html +16 -0
  142. data/doc/rdoc/classes/Web/Upload.src/M000111.html +16 -0
  143. data/doc/rdoc/classes/Web/Wiki.html +249 -0
  144. data/doc/rdoc/classes/Web/Wiki.src/M000112.html +25 -0
  145. data/doc/rdoc/classes/Web/Wiki.src/M000113.html +15 -0
  146. data/doc/rdoc/classes/Web/Wiki.src/M000114.html +26 -0
  147. data/doc/rdoc/classes/Web/Wiki.src/M000115.html +21 -0
  148. data/doc/rdoc/classes/Web/Wiki.src/M000116.html +18 -0
  149. data/doc/rdoc/classes/Web/Wiki.src/M000117.html +19 -0
  150. data/doc/rdoc/created.rid +1 -0
  151. data/doc/rdoc/files/README.html +226 -0
  152. data/doc/rdoc/files/doc/apache_cgi_txt.html +82 -0
  153. data/doc/rdoc/files/doc/fastcgi_txt.html +82 -0
  154. data/doc/rdoc/files/doc/mod_ruby_txt.html +62 -0
  155. data/doc/rdoc/files/doc/webrick_txt.html +79 -0
  156. data/doc/rdoc/files/examples/examples_rdoc.html +73 -0
  157. data/doc/rdoc/files/lib/web/cgi_rb.html +75 -0
  158. data/doc/rdoc/files/lib/web/mime_rb.html +67 -0
  159. data/doc/rdoc/files/lib/web/parser_rb.html +73 -0
  160. data/doc/rdoc/files/lib/web/session_rb.html +73 -0
  161. data/doc/rdoc/files/lib/web/template_rb.html +73 -0
  162. data/doc/rdoc/files/lib/web/testing_rb.html +67 -0
  163. data/doc/rdoc/files/lib/web/upload_rb.html +73 -0
  164. data/doc/rdoc/files/lib/web/wiki_rb.html +79 -0
  165. data/doc/rdoc/files/lib/web_rb.html +116 -0
  166. data/doc/rdoc/files/lib/web_rb.src/M000001.html +15 -0
  167. data/doc/rdoc/fr_class_index.html +47 -0
  168. data/doc/rdoc/fr_file_index.html +52 -0
  169. data/doc/rdoc/fr_method_index.html +158 -0
  170. data/doc/rdoc/index.html +22 -0
  171. data/doc/rdoc/rdoc-style.css +99 -0
  172. data/doc/webrick.txt +23 -0
  173. data/examples/admin.rb +8 -0
  174. data/examples/admin.rb~ +5 -0
  175. data/examples/cookbook.rdoc +247 -0
  176. data/examples/cookbook.rdoc~ +238 -0
  177. data/examples/examples.rdoc +19 -0
  178. data/examples/examples.rdoc~ +17 -0
  179. data/examples/hello.world.rb +5 -0
  180. data/examples/hello.world.rb~ +3 -0
  181. data/examples/session.rb +34 -0
  182. data/examples/session.rb~ +31 -0
  183. data/examples/test/test.hello.world.rb +9 -0
  184. data/examples/test/test.hello.world.rb~ +9 -0
  185. data/examples/test/test.session.rb +37 -0
  186. data/examples/test/test.session.rb~ +37 -0
  187. data/examples/webunit/COPYING +340 -0
  188. data/examples/webunit/Makefile +14 -0
  189. data/examples/webunit/TIPS-ja.html +126 -0
  190. data/examples/webunit/TIPS-ja.rd +154 -0
  191. data/examples/webunit/TODO-ja.html +35 -0
  192. data/examples/webunit/TODO-ja.rd +28 -0
  193. data/examples/webunit/changes.rd +185 -0
  194. data/examples/webunit/conv/digit-0.cgi +40 -0
  195. data/examples/webunit/conv/digit-0.rb +21 -0
  196. data/examples/webunit/conv/digit-1.cgi +44 -0
  197. data/examples/webunit/conv/digit-1.rb +17 -0
  198. data/examples/webunit/conv/digit.cgi +59 -0
  199. data/examples/webunit/conv/digit.rb +23 -0
  200. data/examples/webunit/conv/test_digit-0.rb +16 -0
  201. data/examples/webunit/conv/test_digit-1.rb +19 -0
  202. data/examples/webunit/conv/test_digit.rb +26 -0
  203. data/examples/webunit/conv/test_digit_view-0.rb +76 -0
  204. data/examples/webunit/conv/test_digit_view-1.rb +102 -0
  205. data/examples/webunit/conv/test_digit_view.rb +134 -0
  206. data/examples/webunit/example.rd +37 -0
  207. data/examples/webunit/index-en.html +263 -0
  208. data/examples/webunit/index-en.rd +60 -0
  209. data/examples/webunit/index-ja.html +263 -0
  210. data/examples/webunit/index-ja.rd +60 -0
  211. data/examples/wiki.rb +7 -0
  212. data/examples/wiki.rb~ +5 -0
  213. data/install.rb +1022 -0
  214. data/lib/web.rb +290 -0
  215. data/lib/web.rb~ +290 -0
  216. data/lib/web/#assertinclude.rb# +110 -0
  217. data/lib/web/action.rb +82 -0
  218. data/lib/web/assertinclude.rb +110 -0
  219. data/lib/web/assertinclude.rb~ +110 -0
  220. data/lib/web/buffer.rb +20 -0
  221. data/lib/web/cgi.rb +641 -0
  222. data/lib/web/cgi.rb~ +640 -0
  223. data/lib/web/formreader.rb +317 -0
  224. data/lib/web/forms.rb +104 -0
  225. data/lib/web/htmlparser/html-parser.rb +429 -0
  226. data/lib/web/htmlparser/html-parser.rb~ +429 -0
  227. data/lib/web/htmlparser/sgml-parser.rb +332 -0
  228. data/lib/web/htmlparser/sgml-parser.rb~ +332 -0
  229. data/lib/web/htmltools/element.rb +296 -0
  230. data/lib/web/htmltools/element.rb~ +296 -0
  231. data/lib/web/htmltools/stparser.rb +276 -0
  232. data/lib/web/htmltools/stparser.rb~ +276 -0
  233. data/lib/web/htmltools/tags.rb +286 -0
  234. data/lib/web/htmltools/tags.rb~ +286 -0
  235. data/lib/web/htmltools/tree.rb +139 -0
  236. data/lib/web/htmltools/tree.rb~ +139 -0
  237. data/lib/web/htmltools/xmltree.rb +160 -0
  238. data/lib/web/htmltools/xmltree.rb~ +160 -0
  239. data/lib/web/htmltools/xpath.rb +71 -0
  240. data/lib/web/htmltools/xpath.rb~ +71 -0
  241. data/lib/web/mime.rb +82 -0
  242. data/lib/web/parser.rb +266 -0
  243. data/lib/web/parser.rb~ +266 -0
  244. data/lib/web/request.rb~ +238 -0
  245. data/lib/web/resources/mime.types +483 -0
  246. data/lib/web/runner.rb +26 -0
  247. data/lib/web/runner.rb~ +26 -0
  248. data/lib/web/sapi/fastcgi.rb +26 -0
  249. data/lib/web/sapi/fastcgi.rb~ +25 -0
  250. data/lib/web/sapi/mod_ruby.rb +46 -0
  251. data/lib/web/sapi/mod_ruby.rb~ +46 -0
  252. data/lib/web/sapi/webrick.rb +91 -0
  253. data/lib/web/sapi/webrick.rb~ +89 -0
  254. data/lib/web/session.rb +75 -0
  255. data/lib/web/session.rb~ +75 -0
  256. data/lib/web/simpledispatcher.rb +155 -0
  257. data/lib/web/strscanparser.rb +24 -0
  258. data/lib/web/tagparser.rb +96 -0
  259. data/lib/web/tagparser.rb~ +96 -0
  260. data/lib/web/template.rb +613 -0
  261. data/lib/web/template.rb~ +613 -0
  262. data/lib/web/testing.rb +546 -0
  263. data/lib/web/testing.rb~ +546 -0
  264. data/lib/web/traceoutput.rb +32 -0
  265. data/lib/web/unit.rb +27 -0
  266. data/lib/web/unit/assert.rb +154 -0
  267. data/lib/web/unit/converter.rb +148 -0
  268. data/lib/web/unit/cookie.rb +120 -0
  269. data/lib/web/unit/domwalker.rb +187 -0
  270. data/lib/web/unit/exception.rb +15 -0
  271. data/lib/web/unit/form.rb +118 -0
  272. data/lib/web/unit/formatter.rb +314 -0
  273. data/lib/web/unit/frame.rb +39 -0
  274. data/lib/web/unit/html-parser.rb +432 -0
  275. data/lib/web/unit/htmlelem.rb +124 -0
  276. data/lib/web/unit/htmlrepair.rb +116 -0
  277. data/lib/web/unit/htmlsplit.rb +840 -0
  278. data/lib/web/unit/image.rb +27 -0
  279. data/lib/web/unit/jscript.rb +32 -0
  280. data/lib/web/unit/link.rb +35 -0
  281. data/lib/web/unit/params.rb +323 -0
  282. data/lib/web/unit/parser.rb +226 -0
  283. data/lib/web/unit/resources/assert.html +101 -0
  284. data/lib/web/unit/resources/auth/index.html +5 -0
  285. data/lib/web/unit/resources/badtags.html +7 -0
  286. data/lib/web/unit/resources/cookie.cgi +33 -0
  287. data/lib/web/unit/resources/document.xml +13 -0
  288. data/lib/web/unit/resources/form.html +150 -0
  289. data/lib/web/unit/resources/frame-0.html +10 -0
  290. data/lib/web/unit/resources/frame-1.html +10 -0
  291. data/lib/web/unit/resources/frame.html +10 -0
  292. data/lib/web/unit/resources/image.html +17 -0
  293. data/lib/web/unit/resources/images/x.gif +0 -0
  294. data/lib/web/unit/resources/images/y.gif +0 -0
  295. data/lib/web/unit/resources/jscript-0.html +10 -0
  296. data/lib/web/unit/resources/jscript-1.html +10 -0
  297. data/lib/web/unit/resources/jscript.html +19 -0
  298. data/lib/web/unit/resources/link.html +19 -0
  299. data/lib/web/unit/resources/multipart.cgi +28 -0
  300. data/lib/web/unit/resources/multipart.html +74 -0
  301. data/lib/web/unit/resources/params.html +65 -0
  302. data/lib/web/unit/resources/redirect.cgi +13 -0
  303. data/lib/web/unit/resources/response.html +67 -0
  304. data/lib/web/unit/resources/simple.cgi +14 -0
  305. data/lib/web/unit/resources/stock.cgi +35 -0
  306. data/lib/web/unit/resources/table.html +83 -0
  307. data/lib/web/unit/response.rb +469 -0
  308. data/lib/web/unit/response.rb~ +461 -0
  309. data/lib/web/unit/runtest.rb +44 -0
  310. data/lib/web/unit/sgml-parser.rb +336 -0
  311. data/lib/web/unit/table.rb +150 -0
  312. data/lib/web/unit/testcase.rb +49 -0
  313. data/lib/web/unit/ui/cui/testrunner.rb +52 -0
  314. data/lib/web/unit/ui/cui/testrunner.rb~ +50 -0
  315. data/lib/web/unit/utils.rb +70 -0
  316. data/lib/web/unit/webunit.rb +28 -0
  317. data/lib/web/upload.rb +55 -0
  318. data/lib/web/upload.rb~ +262 -0
  319. data/lib/web/wiki.rb +506 -0
  320. data/lib/web/wiki.rb~ +506 -0
  321. data/lib/web/wiki/linker.rb +72 -0
  322. data/lib/web/wiki/linker.rb~ +72 -0
  323. data/lib/web/wiki/mime.rb~ +68 -0
  324. data/lib/web/wiki/page.rb +192 -0
  325. data/lib/web/wiki/page.rb~ +192 -0
  326. data/lib/web/wiki/resources/#edit.html# +65 -0
  327. data/lib/web/wiki/resources/admin.html +13 -0
  328. data/lib/web/wiki/resources/admin.html~ +13 -0
  329. data/lib/web/wiki/resources/asset_history.html +3 -0
  330. data/lib/web/wiki/resources/basic.html +1 -0
  331. data/lib/web/wiki/resources/default-content_editor.html +1 -0
  332. data/lib/web/wiki/resources/default-content_editor.html~ +1 -0
  333. data/lib/web/wiki/resources/edit.html +1 -1
  334. data/lib/web/wiki/resources/edit.html~ +1 -1
  335. data/lib/web/wiki/resources/ekit-content_editor.html +1 -0
  336. data/lib/web/wiki/resources/home.html +10 -0
  337. data/lib/web/wiki/resources/home.html~ +10 -0
  338. data/lib/web/wiki/resources/htmlarea/ChangeLog +1185 -0
  339. data/lib/web/wiki/resources/htmlarea/dialog.js +72 -0
  340. data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +16 -0
  341. data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +158 -0
  342. data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +95 -0
  343. data/lib/web/wiki/resources/htmlarea/examples/core.html +184 -0
  344. data/lib/web/wiki/resources/htmlarea/examples/css.html +88 -0
  345. data/lib/web/wiki/resources/htmlarea/examples/custom.css +29 -0
  346. data/lib/web/wiki/resources/htmlarea/examples/full-page.html +75 -0
  347. data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +248 -0
  348. data/lib/web/wiki/resources/htmlarea/examples/index.html +40 -0
  349. data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +132 -0
  350. data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +116 -0
  351. data/lib/web/wiki/resources/htmlarea/examples/test.cgi +21 -0
  352. data/lib/web/wiki/resources/htmlarea/htmlarea.css +180 -0
  353. data/lib/web/wiki/resources/htmlarea/htmlarea.js +2175 -0
  354. data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
  355. data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
  356. data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
  357. data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
  358. data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
  359. data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
  360. data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
  361. data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
  362. data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
  363. data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
  364. data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
  365. data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
  366. data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
  367. data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
  368. data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
  369. data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
  370. data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
  371. data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
  372. data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
  373. data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
  374. data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
  375. data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
  376. data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
  377. data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
  378. data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
  379. data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
  380. data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
  381. data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
  382. data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
  383. data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
  384. data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
  385. data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
  386. data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
  387. data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
  388. data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
  389. data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
  390. data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
  391. data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
  392. data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
  393. data/lib/web/wiki/resources/htmlarea/index.html +199 -0
  394. data/lib/web/wiki/resources/htmlarea/lang/b5.js +36 -0
  395. data/lib/web/wiki/resources/htmlarea/lang/cz.js +63 -0
  396. data/lib/web/wiki/resources/htmlarea/lang/da.js +38 -0
  397. data/lib/web/wiki/resources/htmlarea/lang/de.js +54 -0
  398. data/lib/web/wiki/resources/htmlarea/lang/ee.js +63 -0
  399. data/lib/web/wiki/resources/htmlarea/lang/el.js +75 -0
  400. data/lib/web/wiki/resources/htmlarea/lang/en.js +88 -0
  401. data/lib/web/wiki/resources/htmlarea/lang/es.js +51 -0
  402. data/lib/web/wiki/resources/htmlarea/lang/fi.js +46 -0
  403. data/lib/web/wiki/resources/htmlarea/lang/fr.js +61 -0
  404. data/lib/web/wiki/resources/htmlarea/lang/gb.js +36 -0
  405. data/lib/web/wiki/resources/htmlarea/lang/he.js +63 -0
  406. data/lib/web/wiki/resources/htmlarea/lang/hu.js +63 -0
  407. data/lib/web/wiki/resources/htmlarea/lang/it.js +54 -0
  408. data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +37 -0
  409. data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +37 -0
  410. data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +37 -0
  411. data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +37 -0
  412. data/lib/web/wiki/resources/htmlarea/lang/lt.js +55 -0
  413. data/lib/web/wiki/resources/htmlarea/lang/lv.js +55 -0
  414. data/lib/web/wiki/resources/htmlarea/lang/nb.js +36 -0
  415. data/lib/web/wiki/resources/htmlarea/lang/nl.js +90 -0
  416. data/lib/web/wiki/resources/htmlarea/lang/no.js +79 -0
  417. data/lib/web/wiki/resources/htmlarea/lang/pl.js +36 -0
  418. data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +37 -0
  419. data/lib/web/wiki/resources/htmlarea/lang/ro.js +80 -0
  420. data/lib/web/wiki/resources/htmlarea/lang/ru.js +63 -0
  421. data/lib/web/wiki/resources/htmlarea/lang/se.js +38 -0
  422. data/lib/web/wiki/resources/htmlarea/lang/si.js +63 -0
  423. data/lib/web/wiki/resources/htmlarea/lang/vn.js +51 -0
  424. data/lib/web/wiki/resources/htmlarea/license.txt +30 -0
  425. data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +116 -0
  426. data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +2 -0
  427. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +416 -0
  428. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +59 -0
  429. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +57 -0
  430. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +66 -0
  431. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +66 -0
  432. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +64 -0
  433. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +143 -0
  434. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
  435. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +25 -0
  436. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +25 -0
  437. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +131 -0
  438. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +89 -0
  439. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
  440. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +37 -0
  441. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +37 -0
  442. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +28 -0
  443. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +38 -0
  444. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +37 -0
  445. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +28 -0
  446. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +37 -0
  447. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +114 -0
  448. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +210 -0
  449. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +10 -0
  450. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +122 -0
  451. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +397 -0
  452. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +79 -0
  453. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
  454. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
  455. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
  456. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
  457. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
  458. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
  459. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
  460. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
  461. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
  462. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
  463. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
  464. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
  465. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
  466. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
  467. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
  468. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
  469. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +90 -0
  470. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +90 -0
  471. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +81 -0
  472. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +81 -0
  473. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +90 -0
  474. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +66 -0
  475. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +63 -0
  476. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +81 -0
  477. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +90 -0
  478. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +91 -0
  479. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +90 -0
  480. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +1160 -0
  481. data/lib/web/wiki/resources/htmlarea/popupdiv.js +369 -0
  482. data/lib/web/wiki/resources/htmlarea/popups/about.html +378 -0
  483. data/lib/web/wiki/resources/htmlarea/popups/blank.html +2 -0
  484. data/lib/web/wiki/resources/htmlarea/popups/custom2.html +35 -0
  485. data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +16 -0
  486. data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +133 -0
  487. data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +191 -0
  488. data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +174 -0
  489. data/lib/web/wiki/resources/htmlarea/popups/link.html +142 -0
  490. data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +131 -0
  491. data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +206 -0
  492. data/lib/web/wiki/resources/htmlarea/popups/popup.js +109 -0
  493. data/lib/web/wiki/resources/htmlarea/popups/select_color.html +347 -0
  494. data/lib/web/wiki/resources/htmlarea/popupwin.js +139 -0
  495. data/lib/web/wiki/resources/htmlarea/reference.html +523 -0
  496. data/lib/web/wiki/resources/htmlarea/release-notes.html +165 -0
  497. data/lib/web/wiki/resources/ie-content_editor.html +1 -0
  498. data/lib/web/wiki/resources/ie-content_editor.js +196 -0
  499. data/lib/web/wiki/resources/illustration.html +1 -0
  500. data/lib/web/wiki/resources/illustration.html~ +1 -0
  501. data/lib/web/wiki/resources/images.html +1 -0
  502. data/lib/web/wiki/resources/index.html +4 -0
  503. data/lib/web/wiki/resources/index.html~ +4 -0
  504. data/lib/web/wiki/resources/more_news.html +5 -0
  505. data/lib/web/wiki/resources/more_news.html~ +5 -0
  506. data/lib/web/wiki/resources/more_news_rss_0.91.html +23 -0
  507. data/lib/web/wiki/resources/narf-logo.gif +0 -0
  508. data/lib/web/wiki/resources/page_history.html +19 -0
  509. data/lib/web/wiki/resources/page_history.html~ +19 -0
  510. data/lib/web/wiki/resources/template.html +13 -0
  511. data/lib/web/wiki/resources/template.html~ +13 -0
  512. data/lib/web/wiki/resources/test_upload.gif +0 -0
  513. data/lib/web/wiki/resources/text-styles.css +1 -0
  514. data/lib/web/writableio.rb +33 -0
  515. data/narf-0.5.1.gem +0 -0
  516. data/narf.gemspec +40 -0
  517. data/narf.gemspec~ +52 -0
  518. data/pre-setup.rb +5 -0
  519. data/sapi/apache_cgi/INSTALL.txt~ +9 -0
  520. data/sapi/apache_cgi/README~ +0 -0
  521. data/sapi/apache_cgi/src/narf.c +13 -0
  522. data/sapi/fastcgi/INSTALL.txt~ +17 -0
  523. data/sapi/mod_ruby/INSTALL.txt~ +5 -0
  524. data/sapi/webrick/INSTALL.txt~ +21 -0
  525. data/sapi/webrick/run_webrick.rb~ +16 -0
  526. data/scripts/dump.rb +14 -0
  527. data/scripts/makedist.rb +49 -0
  528. data/scripts/upload.html +5 -0
  529. data/scripts/uri.rb +41 -0
  530. data/scripts/uri/common.rb +432 -0
  531. data/scripts/uri/ftp.rb +149 -0
  532. data/scripts/uri/generic.rb +1106 -0
  533. data/scripts/uri/http.rb +76 -0
  534. data/scripts/uri/https.rb +26 -0
  535. data/scripts/uri/ldap.rb +238 -0
  536. data/scripts/uri/mailto.rb +260 -0
  537. data/scripts/urireg.rb +174 -0
  538. data/test/bufferedtestrunner.rb +112 -0
  539. data/test/mod_ruby_stub.rb +39 -0
  540. data/test/mod_ruby_stub.rb~ +38 -0
  541. data/test/stringio.rb +2 -0
  542. data/test/test.action.rb +142 -0
  543. data/test/test.action.rb~ +142 -0
  544. data/test/test.app.rb +0 -0
  545. data/test/test.assertinclude.rb +109 -0
  546. data/test/test.assertinclude.rb~ +109 -0
  547. data/test/test.formreader-2.0.rb +352 -0
  548. data/test/test.formreader.rb +465 -0
  549. data/test/test.mime-type.rb +23 -0
  550. data/test/test.narf.cgi.rb +101 -0
  551. data/test/test.narf.cgi.rb~ +105 -0
  552. data/test/test.request.rb +328 -0
  553. data/test/test.request.rb~ +318 -0
  554. data/test/test.response.rb +565 -0
  555. data/test/test.response.rb~ +556 -0
  556. data/test/test.session.rb +50 -0
  557. data/test/test.simpledispatcher.rb +188 -0
  558. data/test/test.tagparser.rb +65 -0
  559. data/test/test.template.rb +831 -0
  560. data/test/test.template.rb~ +832 -0
  561. data/test/test.testing2.rb +341 -0
  562. data/test/test.web.test.rb +463 -0
  563. data/test/test.web.test.rb~ +461 -0
  564. data/test/testfiles/basictemplate.tpl +1 -0
  565. data/test/testfiles/explorer5.multipart.data +9 -0
  566. data/test/testfiles/form.html +7 -0
  567. data/test/testfiles/mozilla.multipart.data +9 -0
  568. data/test/testfiles/netscape4.multipart.data +9 -0
  569. data/test/testfiles/pic hydra.png +1 -0
  570. data/test/testfiles/post.data +1 -0
  571. data/test/testfiles/print.text +1 -0
  572. data/test/testfiles/text +1 -0
  573. data/test/webunit/dont_get_it.test_webunit.rb +27 -0
  574. data/test/webunit/ref +38 -0
  575. data/test/webunit/resources/uploadfile1.txt +1 -0
  576. data/test/webunit/resources/uploadfile2.txt +1 -0
  577. data/test/webunit/test_assert.rb +169 -0
  578. data/test/webunit/test_cookie.rb +128 -0
  579. data/test/webunit/test_cookie.rb~ +128 -0
  580. data/test/webunit/test_domwalker.rb +83 -0
  581. data/test/webunit/test_form.rb +43 -0
  582. data/test/webunit/test_form.rb~ +43 -0
  583. data/test/webunit/test_frame.rb +43 -0
  584. data/test/webunit/test_htmlelem.rb +75 -0
  585. data/test/webunit/test_image.rb +46 -0
  586. data/test/webunit/test_jscript.rb +58 -0
  587. data/test/webunit/test_link.rb +87 -0
  588. data/test/webunit/test_multipart.rb +53 -0
  589. data/test/webunit/test_multipart.rb~ +53 -0
  590. data/test/webunit/test_params.rb +212 -0
  591. data/test/webunit/test_params.rb~ +211 -0
  592. data/test/webunit/test_parser.rb +31 -0
  593. data/test/webunit/test_response.rb +145 -0
  594. data/test/webunit/test_response.rb~ +145 -0
  595. data/test/webunit/test_site/assert.html +101 -0
  596. data/test/webunit/test_site/assert.html~ +1 -0
  597. data/test/webunit/test_site/auth/index.html +5 -0
  598. data/test/webunit/test_site/auth/index.html~ +1 -0
  599. data/test/webunit/test_site/badtags.html +7 -0
  600. data/test/webunit/test_site/badtags.html~ +1 -0
  601. data/test/webunit/test_site/cookie.cgi +37 -0
  602. data/test/webunit/test_site/cookie.cgi~ +35 -0
  603. data/test/webunit/test_site/document.xml +13 -0
  604. data/test/webunit/test_site/document.xml~ +1 -0
  605. data/test/webunit/test_site/form.html +150 -0
  606. data/test/webunit/test_site/form.html~ +1 -0
  607. data/test/webunit/test_site/frame-0.html +10 -0
  608. data/test/webunit/test_site/frame-0.html~ +1 -0
  609. data/test/webunit/test_site/frame-1.html +10 -0
  610. data/test/webunit/test_site/frame-1.html~ +1 -0
  611. data/test/webunit/test_site/frame.html +10 -0
  612. data/test/webunit/test_site/frame.html~ +1 -0
  613. data/test/webunit/test_site/image.html +17 -0
  614. data/test/webunit/test_site/image.html~ +1 -0
  615. data/test/webunit/test_site/images/x.gif +0 -0
  616. data/test/webunit/test_site/images/y.gif +0 -0
  617. data/test/webunit/test_site/include.cgi~ +10 -0
  618. data/test/webunit/test_site/jscript-0.html +10 -0
  619. data/test/webunit/test_site/jscript-0.html~ +1 -0
  620. data/test/webunit/test_site/jscript-1.html +10 -0
  621. data/test/webunit/test_site/jscript-1.html~ +1 -0
  622. data/test/webunit/test_site/jscript.html +19 -0
  623. data/test/webunit/test_site/jscript.html~ +1 -0
  624. data/test/webunit/test_site/link.html +19 -0
  625. data/test/webunit/test_site/link.html~ +1 -0
  626. data/test/webunit/test_site/multipart.cgi +27 -0
  627. data/test/webunit/test_site/multipart.cgi~ +25 -0
  628. data/test/webunit/test_site/multipart.html +74 -0
  629. data/test/webunit/test_site/multipart.html~ +1 -0
  630. data/test/webunit/test_site/params.html +65 -0
  631. data/test/webunit/test_site/params.html~ +1 -0
  632. data/test/webunit/test_site/redirect.cgi +14 -0
  633. data/test/webunit/test_site/redirect.cgi~ +14 -0
  634. data/test/webunit/test_site/response.html +67 -0
  635. data/test/webunit/test_site/response.html~ +1 -0
  636. data/test/webunit/test_site/simple.cgi +17 -0
  637. data/test/webunit/test_site/simple.cgi~ +17 -0
  638. data/test/webunit/test_site/stock.cgi +36 -0
  639. data/test/webunit/test_site/stock.cgi~ +34 -0
  640. data/test/webunit/test_site/table.html +83 -0
  641. data/test/webunit/test_site/table.html~ +1 -0
  642. data/test/webunit/test_site/test.cgi~ +25 -0
  643. data/test/webunit/test_table.rb +70 -0
  644. data/test/webunit/test_utils.rb +107 -0
  645. data/test/wiki/test.history.rb +277 -0
  646. data/test/wiki/test.history.rb~ +254 -0
  647. data/test/wiki/test.illustration_page.rb +287 -0
  648. data/test/wiki/test.illustration_page.rb~ +287 -0
  649. data/test/wiki/test.linker.rb +197 -0
  650. data/test/wiki/test.tarpit.rb +40 -0
  651. data/test/wiki/test.wiki.rb +295 -0
  652. data/test/wiki/test.wiki.rb~ +295 -0
  653. data/test/wikitestroot/big_image.jpg +0 -0
  654. data/test/wikitestroot/mime.types +483 -0
  655. data/test/wikitestroot/test_upload.gif +0 -0
  656. data/vandals.test.txt +3 -0
  657. metadata +768 -0
@@ -0,0 +1,139 @@
1
+ // (c) dynarch.com 2003-2004
2
+ // Distributed under the same terms as HTMLArea itself.
3
+
4
+ function PopupWin(editor, title, handler, initFunction) {
5
+ this.editor = editor;
6
+ this.handler = handler;
7
+ var dlg = window.open("", "__ha_dialog",
8
+ "toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
9
+ "scrollbars=no,resizable=no");
10
+ this.window = dlg;
11
+ var doc = dlg.document;
12
+ this.doc = doc;
13
+ var self = this;
14
+
15
+ var base = document.baseURI || document.URL;
16
+ if (base && base.match(/(.*)\/([^\/]+)/)) {
17
+ base = RegExp.$1 + "/";
18
+ }
19
+ if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
20
+ // _editor_url doesn't start with '/' which means it's relative
21
+ // FIXME: there's a problem here, it could be http:// which
22
+ // doesn't start with slash but it's not relative either.
23
+ base += _editor_url;
24
+ } else
25
+ base = _editor_url;
26
+ if (!/\/$/.test(base)) {
27
+ // base does not end in slash, add it now
28
+ base += '/';
29
+ }
30
+ this.baseURL = base;
31
+
32
+ doc.open();
33
+ var html = "<html><head><title>" + title + "</title>\n";
34
+ // html += "<base href='" + base + "htmlarea.js' />\n";
35
+ html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
36
+ html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
37
+ doc.write(html);
38
+ doc.close();
39
+
40
+ // sometimes I Hate Mozilla... ;-(
41
+ function init2() {
42
+ var body = doc.body;
43
+ if (!body) {
44
+ setTimeout(init2, 25);
45
+ return false;
46
+ }
47
+ dlg.title = title;
48
+ doc.documentElement.style.padding = "0px";
49
+ doc.documentElement.style.margin = "0px";
50
+ var content = doc.createElement("div");
51
+ content.className = "content";
52
+ self.content = content;
53
+ body.appendChild(content);
54
+ self.element = body;
55
+ initFunction(self);
56
+ dlg.focus();
57
+ };
58
+ init2();
59
+ };
60
+
61
+ PopupWin.prototype.callHandler = function() {
62
+ var tags = ["input", "textarea", "select"];
63
+ var params = new Object();
64
+ for (var ti in tags) {
65
+ var tag = tags[ti];
66
+ var els = this.content.getElementsByTagName(tag);
67
+ for (var j = 0; j < els.length; ++j) {
68
+ var el = els[j];
69
+ var val = el.value;
70
+ if (el.tagName.toLowerCase() == "input") {
71
+ if (el.type == "checkbox") {
72
+ val = el.checked;
73
+ }
74
+ }
75
+ params[el.name] = val;
76
+ }
77
+ }
78
+ this.handler(this, params);
79
+ return false;
80
+ };
81
+
82
+ PopupWin.prototype.close = function() {
83
+ this.window.close();
84
+ };
85
+
86
+ PopupWin.prototype.addButtons = function() {
87
+ var self = this;
88
+ var div = this.doc.createElement("div");
89
+ this.content.appendChild(div);
90
+ div.className = "buttons";
91
+ for (var i = 0; i < arguments.length; ++i) {
92
+ var btn = arguments[i];
93
+ var button = this.doc.createElement("button");
94
+ div.appendChild(button);
95
+ button.innerHTML = HTMLArea.I18N.buttons[btn];
96
+ switch (btn) {
97
+ case "ok":
98
+ button.onclick = function() {
99
+ self.callHandler();
100
+ self.close();
101
+ return false;
102
+ };
103
+ break;
104
+ case "cancel":
105
+ button.onclick = function() {
106
+ self.close();
107
+ return false;
108
+ };
109
+ break;
110
+ }
111
+ }
112
+ };
113
+
114
+ PopupWin.prototype.showAtElement = function() {
115
+ var self = this;
116
+ // Mozilla needs some time to realize what's goin' on..
117
+ setTimeout(function() {
118
+ var w = self.content.offsetWidth + 4;
119
+ var h = self.content.offsetHeight + 4;
120
+ // size to content -- that's fuckin' buggy in all fuckin' browsers!!!
121
+ // so that we set a larger size for the dialog window and then center
122
+ // the element inside... phuck!
123
+
124
+ // center...
125
+ var el = self.content;
126
+ var s = el.style;
127
+ // s.width = el.offsetWidth + "px";
128
+ // s.height = el.offsetHeight + "px";
129
+ s.position = "absolute";
130
+ s.left = (w - el.offsetWidth) / 2 + "px";
131
+ s.top = (h - el.offsetHeight) / 2 + "px";
132
+ if (HTMLArea.is_gecko) {
133
+ self.window.innerWidth = w;
134
+ self.window.innerHeight = h;
135
+ } else {
136
+ self.window.resizeTo(w + 8, h + 35);
137
+ }
138
+ }, 25);
139
+ };
@@ -0,0 +1,523 @@
1
+ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
2
+ <html> <head>
3
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4
+ <title>HTMLArea-3.0 Reference</title>
5
+
6
+ <style type="text/css">
7
+ @import url(htmlarea.css);
8
+ body { font: 14px verdana,sans-serif; background: #fff; color: #000; }
9
+ h1, h2 { font-family:tahoma,sans-serif; }
10
+ h1 { border-bottom: 2px solid #000; }
11
+ h2 { border-bottom: 1px solid #aaa; }
12
+ h3, h4 { margin-bottom: 0px; font-family: Georgia,serif; font-style: italic; }
13
+ h4 { font-size: 90%; margin-left: 1em; }
14
+ acronym { border-bottom: 1px dotted #063; color: #063; }
15
+ p { margin-left: 2em; margin-top: 0.3em; }
16
+ li p { margin-left: 0px; }
17
+ .abstract { padding: 5px; margin: 0px 10em; font-size: 90%; border: 1px dashed #aaa; background: #eee;}
18
+ li { margin-left: 2em; }
19
+ em { color: #042; }
20
+ a { color: #00f; }
21
+ a:hover { color: #f00; }
22
+ a:active { color: #f80; }
23
+ span.browser { font-weight: bold; color: #864; }
24
+ .fixme { font-size: 20px; font-weight: bold; color: red; background: #fab;
25
+ padding: 5px; text-align: center; }
26
+ .code {
27
+ background: #e4efff; padding: 5px; border: 1px dashed #abc; margin-left: 2em; margin-right: 2em;
28
+ font-family: fixed,"lucidux mono","andale mono","courier new",monospace;
29
+ }
30
+ .note, .warning { font-weight: bold; color: #0a0; font-variant: small-caps; }
31
+ .warning { color: #a00; }
32
+
33
+ .string {
34
+ color: #06c;
35
+ } /* font-lock-string-face */
36
+ .comment {
37
+ color: #840;
38
+ } /* font-lock-comment-face */
39
+ .variable-name {
40
+ color: #000;
41
+ } /* font-lock-variable-name-face */
42
+ .type {
43
+ color: #008;
44
+ font-weight: bold;
45
+ } /* font-lock-type-face */
46
+ .reference {
47
+ color: #048;
48
+ } /* font-lock-reference-face */
49
+ .preprocessor {
50
+ color: #808;
51
+ } /* font-lock-preprocessor-face */
52
+ .keyword {
53
+ color: #00f;
54
+ font-weight: bold;
55
+ } /* font-lock-keyword-face */
56
+ .function-name {
57
+ color: #044;
58
+ } /* font-lock-function-name-face */
59
+ .html-tag {
60
+ font-weight: bold;
61
+ } /* html-tag-face */
62
+ .html-helper-italic {
63
+ font-style: italic;
64
+ } /* html-helper-italic-face */
65
+ .html-helper-bold {
66
+ font-weight: bold;
67
+ } /* html-helper-bold-face */
68
+
69
+ </style>
70
+
71
+ <script type="text/javascript">
72
+ _editor_url = './';
73
+ _editor_lang = 'en';
74
+ </script>
75
+ <script type="text/javascript" src="htmlarea.js"></script>
76
+ <script type="text/javascript" src="dialog.js"></script>
77
+ <script tyle="text/javascript" src="lang/en.js"></script>
78
+
79
+ </head>
80
+
81
+ <body onload="HTMLArea.replace('TA')">
82
+
83
+
84
+ <h1>HTMLArea-3.0 Documentation</h1>
85
+
86
+ <div class="abstract" style="color: red; font-weight: bold">
87
+
88
+ This documentation contains valid information, but is outdated in the
89
+ terms that it does not covers all the features of HTMLArea. A new
90
+ documentation project will be started, based on LaTeX.
91
+
92
+ </div>
93
+
94
+
95
+ <h2>Introduction</h2>
96
+
97
+ <h3>What is HTMLArea?</h3>
98
+
99
+ <p>HTMLArea is a free <acronym title="What You See Is What You Get"
100
+ >WYSIWYG</acronym> editor replacement for <code>&lt;textarea&gt;</code>
101
+ fields. By adding a few simple lines of JavaScript code to your web page
102
+ you can replace a regular textarea with a rich text editor that lets your
103
+ users do the following:</p>
104
+
105
+ <ul>
106
+ <li>Format text to be bold, italicized, or underlined.</li>
107
+ <li>Change the face, size, style and color.</li>
108
+ <li>Left, center, or right-justify paragraphs.</li>
109
+ <li>Make bulleted or numbered lists.</li>
110
+ <li>Indent or un-indent paragraphs.</li>
111
+ <li>Insert a horizontal line.</li>
112
+ <li>Insert hyperlinks and images.</li>
113
+ <li>View the raw HTML source of what they're editing.</li>
114
+ <li>and much more...</li>
115
+ </ul>
116
+
117
+ <p>Some of the interesting features of HTMLArea that set's it apart from
118
+ other web based WYSIWYG editors are as follows:</p>
119
+
120
+ <ul>
121
+ <li>It's lightweight, fast loading and can transform a regular textarea
122
+ into a rich-text editor with a single line of JavaScript.</li>
123
+ <li>Generates clean, valid HTML.</li>
124
+ <li>It degrades gracefully to older or non-supported browsers
125
+ (they get the original textarea field).</li>
126
+ <li>It's free and can be incorporated into any free or commercial
127
+ program.</li>
128
+ <li>It works with any server-side languages (ASP, PHP, Perl, Java,
129
+ etc).</li>
130
+ <li>It's written in JavaScript and can be easily viewed, modified or
131
+ extended.</li>
132
+ <li>It remembers entered content when a user navigates away and then hits
133
+ "back" in their browser.</li>
134
+ <li>Since it replaces existing textareas it doesn't require a lot of code
135
+ to add it to your pages (just one line).</li>
136
+ <li>Did we mention it was free? ;-)</li>
137
+ </ul>
138
+
139
+ <h3>Is it really free? What's the catch?</h3>
140
+
141
+ <p>Yes! It's really free. You can use it, modify it, distribute it with your
142
+ software, or do just about anything you like with it.</p>
143
+
144
+ <h3>What are the browser requirements?</h3>
145
+
146
+ <p>HTMLArea requires <span class="browser"><a
147
+ href="http://www.microsoft.com/ie">Internet Explorer</a> &gt;= 5.5</span>
148
+ (Windows only), or <span class="browser"><a
149
+ href="http://mozilla.org">Mozilla</a> &gt;= 1.3-Beta</span> on any platform.
150
+ Any browser based on <a href="http://mozilla.org/newlayout">Gecko</a> will
151
+ also work, provided that Gecko version is at least the one included in
152
+ Mozilla-1.3-Beta (for example, <a
153
+ href="http://galeon.sf.net">Galeon-1.2.8</a>). However, it degrades
154
+ gracefully to other browsers. They will get a regular textarea field
155
+ instead of a WYSIWYG editor.</p>
156
+
157
+ <h3>Can I see an example of what it looks like?</h3>
158
+
159
+ <p>Just make sure you're using one of the browsers mentioned above and see
160
+ below.</p>
161
+
162
+ <form onsubmit="return false;">
163
+ <textarea id="TA" style="width: 100%; height: 15em;">
164
+ <p>Here is some sample text in textarea that's been transformed with <font
165
+ color="#0000CC"><b>HTMLArea</b></font>.<br />
166
+ You can make things <b>bold</b>, <i>italic</i>, <u>underline</u>. You can change the
167
+ <font size="3">size</font> and <b><font color="#0000CC">c</font><font color="#00CC00">o</font><font color="#00CCCC">l</font><font color="#CC0000">o</font><font color="#CC00CC">r</font><font color="#CCCC00">s</font><font color="#CCCCCC">!</font></b>
168
+ And lots more...</p>
169
+
170
+ <p align="center"><font size="4" color="#ff0000"><b><u>Try HTMLArea
171
+ today!</u></b></font><br /></p>
172
+ </textarea>
173
+ </form>
174
+
175
+ <h3>Where can I find out more info, download the latest version and talk to
176
+ other HTMLArea users?</h3>
177
+
178
+ <p>You can find out more about HTMLArea and download the latest version on
179
+ the <a href="http://dynarch.com/htmlarea/">HTMLArea
180
+ homepage</a> and you can talk to other HTMLArea users and post any comments
181
+ or suggestions you have in the <a
182
+ href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/"
183
+ >HTMLArea forum</a>.</p>
184
+
185
+ <h2>Keyboard shortcuts</h2>
186
+
187
+ <p>The editor provides the following key combinations:</p>
188
+
189
+ <ul>
190
+ <li>CTRL-A -- select all</li>
191
+ <li>CTRL-B -- bold</li>
192
+ <li>CTRL-I -- italic</li>
193
+ <li>CTRL-U -- underline</li>
194
+ <li>CTRL-S -- strikethrough</li>
195
+ <li>CTRL-L -- justify left</li>
196
+ <li>CTRL-E -- justify center</li>
197
+ <li>CTRL-R -- justify right</li>
198
+ <li>CTRL-J -- justify full</li>
199
+ <li>CTRL-1 .. CTRL-6 -- headings (&lt;h1&gt; .. &lt;h6&gt;)</li>
200
+ <li>CTRL-0 (zero) -- clean content pasted from Word</li>
201
+ </ul>
202
+
203
+ <h2>Installation</h2>
204
+
205
+ <h3>How do I add HTMLArea to my web page?</h3>
206
+
207
+ <p>It's easy. First you need to upload HTMLArea files to your website.
208
+ Just follow these steps.</p>
209
+
210
+ <ol>
211
+ <li>Download the latest version from the <a
212
+ href="http://www.interactivetools.com/products/htmlarea/">htmlArea
213
+ homepage</a>.</li>
214
+ <li>Unzip the files onto your local computer (making sure to maintain the
215
+ directory structure contained in the zip).</li>
216
+ <li>Create a new folder on your website called /htmlarea/ (make sure it's
217
+ NOT inside the cgi-bin).</li>
218
+ <li>Transfer all the HTMLArea files from your local computer into the
219
+ /htmlarea/ folder on your website.</li>
220
+ <li>Open the example page /htmlarea/examples/core.html with your browser to make
221
+ sure everything works.</li>
222
+ </ol>
223
+
224
+ <p>Once htmlArea is on your website all you need to do is add some
225
+ JavaScript to any pages that you want to add WYSIWYG editors to. Here's how
226
+ to do that.</p>
227
+
228
+ <ol>
229
+
230
+ <li>Define some global variables. "_editor_url" has to be the absolute
231
+ URL where HTMLArea resides within your
232
+ website; as we discussed, this would be “/htmlarea/”. "_editor_lang" must
233
+ be the language code in which you want HTMLArea to appear. This defaults
234
+ to "en" (English); for a list of supported languages, please look into
235
+ the "lang" subdirectory in the distribution.
236
+ <pre class="code"
237
+ ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span><span class="function-name">&gt;</span>
238
+ _editor_url = <span class="string">&quot;/htmlarea/&quot;</span>;
239
+ _editor_lang = <span class="string">&quot;en&quot;</span>;
240
+ <span class="function-name">&lt;</span><span class="html-tag">/script</span><span class="function-name">&gt;</span></pre>
241
+
242
+ <li>Include the "htmlarea.js" script:
243
+ <pre class="code"
244
+ ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">src=</span><span class="string">&quot;/htmlarea/htmlarea.js&quot;</span><span class="function-name">&gt;</span><span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
245
+ </li>
246
+
247
+ <li><p>If you want to change all your &lt;textarea&gt;-s into
248
+ HTMLArea-s then you can use the simplest way to create HTMLArea:</p>
249
+ <pre class="code"
250
+ ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">defer=</span><span class="string">&quot;1&quot;</span><span class="function-name">&gt;</span>
251
+ HTMLArea.replaceAll<span class="function-name">()</span>;
252
+ <span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
253
+ <p><span class="note">Note:</span> you can also add the
254
+ <code>HTMLArea.replaceAll()</code> code to the <code>onload</code>
255
+ event handler for the <code>body</code> element, if you find it more appropriate.</p>
256
+
257
+ <p>A different approach, if you have more than one textarea and only want
258
+ to change one of them, is to use <code>HTMLArea.replace("id")</code> --
259
+ pass the <code>id</code> of your textarea. Do not use the
260
+ <code>name</code> attribute anymore, it's not a standard solution!</p>
261
+
262
+ </ol>
263
+
264
+ <p>This section applies to HTMLArea-3.0 release candidate 1 or later; prior
265
+ to this version, one needed to include more files; however, now HTMLArea is
266
+ able to include other files too (such as stylesheet, language definition
267
+ file, etc.) so you only need to define the editor path and load
268
+ "htmlarea.js". Nice, eh? ;-)</p>
269
+
270
+ <h3>I want to change the editor settings, how do I do that?</h3>
271
+
272
+ <p>While it's true that all you need is one line of JavaScript to create an
273
+ htmlArea WYSIWYG editor, you can also specify more config settings in the
274
+ code to control how the editor works and looks. Here's an example of some of
275
+ the available settings:</p>
276
+
277
+ <pre class="code"
278
+ ><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config(); <span class="comment">// create a new configuration object
279
+ </span> <span class="comment">// having all the default values
280
+ </span>config.width = '<span class="string">90%</span>';
281
+ config.height = '<span class="string">200px</span>';
282
+
283
+ <span class="comment">// the following sets a style for the page body (black text on yellow page)
284
+ // and makes all paragraphs be bold by default
285
+ </span>config.pageStyle =
286
+ '<span class="string">body { background-color: yellow; color: black; font-family: verdana,sans-serif } </span>' +
287
+ '<span class="string">p { font-width: bold; } </span>';
288
+
289
+ <span class="comment">// the following replaces the textarea with the given id with a new
290
+ // HTMLArea object having the specified configuration
291
+ </span>HTMLArea.replace('<span class="string">id</span>', config);</pre>
292
+
293
+ <p><span class="warning">Important:</span> It's recommended that you add
294
+ custom features and configuration to a separate file. This will ensure you
295
+ that when we release a new official version of HTMLArea you'll have less
296
+ trouble upgrading it.</p>
297
+
298
+ <h3>How do I customize the toolbar?</h3>
299
+
300
+ <p>Using the configuration object introduced above allows you to completely
301
+ control what the toolbar contains. Following is an example of a one-line,
302
+ customized toolbar, much simpler than the default one:</p>
303
+
304
+ <pre class="code"
305
+ ><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
306
+ config.toolbar = [
307
+ ['<span class="string">fontname</span>', '<span class="string">space</span>',
308
+ '<span class="string">fontsize</span>', '<span class="string">space</span>',
309
+ '<span class="string">formatblock</span>', '<span class="string">space</span>',
310
+ '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>']
311
+ ];
312
+ HTMLArea.replace('<span class="string">id</span>', config);</pre>
313
+
314
+ <p>The toolbar is an Array of Array objects. Each array in the toolbar
315
+ defines a new line. The default toolbar looks like this:</p>
316
+
317
+ <pre class="code"
318
+ >config.toolbar = [
319
+ [ &quot;<span class="string">fontname</span>&quot;, &quot;<span class="string">space</span>&quot;,
320
+ &quot;<span class="string">fontsize</span>&quot;, &quot;<span class="string">space</span>&quot;,
321
+ &quot;<span class="string">formatblock</span>&quot;, &quot;<span class="string">space</span>&quot;,
322
+ &quot;<span class="string">bold</span>&quot;, &quot;<span class="string">italic</span>&quot;, &quot;<span class="string">underline</span>&quot;, &quot;<span class="string">separator</span>&quot;,
323
+ &quot;<span class="string">strikethrough</span>&quot;, &quot;<span class="string">subscript</span>&quot;, &quot;<span class="string">superscript</span>&quot;, &quot;<span class="string">separator</span>&quot;,
324
+ &quot;<span class="string">copy</span>&quot;, &quot;<span class="string">cut</span>&quot;, &quot;<span class="string">paste</span>&quot;, &quot;<span class="string">space</span>&quot;, &quot;<span class="string">undo</span>&quot;, &quot;<span class="string">redo</span>&quot; ],
325
+
326
+ [ &quot;<span class="string">justifyleft</span>&quot;, &quot;<span class="string">justifycenter</span>&quot;, &quot;<span class="string">justifyright</span>&quot;, &quot;<span class="string">justifyfull</span>&quot;, &quot;<span class="string">separator</span>&quot;,
327
+ &quot;<span class="string">insertorderedlist</span>&quot;, &quot;<span class="string">insertunorderedlist</span>&quot;, &quot;<span class="string">outdent</span>&quot;, &quot;<span class="string">indent</span>&quot;, &quot;<span class="string">separator</span>&quot;,
328
+ &quot;<span class="string">forecolor</span>&quot;, &quot;<span class="string">hilitecolor</span>&quot;, &quot;<span class="string">textindicator</span>&quot;, &quot;<span class="string">separator</span>&quot;,
329
+ &quot;<span class="string">inserthorizontalrule</span>&quot;, &quot;<span class="string">createlink</span>&quot;, &quot;<span class="string">insertimage</span>&quot;, &quot;<span class="string">inserttable</span>&quot;, &quot;<span class="string">htmlmode</span>&quot;, &quot;<span class="string">separator</span>&quot;,
330
+ &quot;<span class="string">popupeditor</span>&quot;, &quot;<span class="string">separator</span>&quot;, &quot;<span class="string">showhelp</span>&quot;, &quot;<span class="string">about</span>&quot; ]
331
+ ];</pre>
332
+
333
+ <p>Except three strings, all others in the examples above need to be defined
334
+ in the <code>config.btnList</code> object (detailed a bit later in this
335
+ document). The three exceptions are: 'space', 'separator' and 'linebreak'.
336
+ These three have the following meaning, and need not be present in
337
+ <code>btnList</code>:</p>
338
+
339
+ <ul>
340
+ <li>'space' -- Inserts a space of 5 pixels (the width is configurable by external
341
+ <acronym title="Cascading Style Sheets">CSS</acronym>) at the current
342
+ position in the toolbar.</li>
343
+ <li>'separator' -- Inserts a small vertical separator, for visually grouping related
344
+ buttons.</li>
345
+ <li>'linebreak' -- Starts a new line in the toolbar. Subsequent controls will be
346
+ inserted on the new line.</li>
347
+ </ul>
348
+
349
+ <p><span class="warning">Important:</span> It's recommended that you add
350
+ custom features and configuration to a separate file. This will ensure you
351
+ that when we release a new official version of HTMLArea you'll have less
352
+ trouble upgrading it.</p>
353
+
354
+ <h3>How do I create custom buttons?</h3>
355
+
356
+ <p>By design, the toolbar is easily extensible. For adding a custom button
357
+ one needs to follow two steps.</p>
358
+
359
+ <h4 id="regbtn">1. Register the button in <code>config.btnList</code>.</h4>
360
+
361
+ <p>For each button in the toolbar, HTMLArea needs to know the following
362
+ information:</p>
363
+ <ul>
364
+ <li>a name for it (we call it the ID of the button);</li>
365
+ <li>the path to an image to be displayed in the toolbar;</li>
366
+ <li>a tooltip for it;</li>
367
+ <li>whether the button is enabled or not in text mode;</li>
368
+ <li>what to do when the button is clicked;</li>
369
+ </ul>
370
+ <p>You need to provide all this information for registering a new button
371
+ too. The button ID can be any string identifier and it's used when
372
+ defining the toolbar, as you saw above. We recommend starting
373
+ it with "my-" so that it won't clash with the standard ID-s (those from
374
+ the default toolbar).</p>
375
+
376
+ <p class="note">Register button example #1</p>
377
+
378
+ <pre class="code"
379
+ ><span class="comment">// get a default configuration
380
+ </span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
381
+ <span class="comment">// register the new button using Config.registerButton.
382
+ // parameters: button ID, tooltip, image, textMode,
383
+ </span>config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Highlight text</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>,
384
+ <span class="comment">// function that gets called when the button is clicked
385
+ </span> <span class="keyword">function</span>(editor, id) {
386
+ editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
387
+ }
388
+ );</pre>
389
+
390
+ <p>An alternate way of calling registerButton is exemplified above. Though
391
+ the code might be a little bit larger, using this form makes your code more
392
+ maintainable. It doesn't even needs comments as it's pretty clear.</p>
393
+
394
+ <p class="note">Register button example #2</p>
395
+
396
+ <pre class="code"
397
+ ><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
398
+ config.registerButton({
399
+ id : &quot;<span class="string">my-hilite</span>&quot;,
400
+ tooltip : &quot;<span class="string">Highlight text</span>&quot;,
401
+ image : &quot;<span class="string">my-hilite.gif</span>&quot;,
402
+ textMode : <span class="keyword">false</span>,
403
+ action : <span class="keyword">function</span>(editor, id) {
404
+ editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
405
+ }
406
+ });</pre>
407
+
408
+ <p>You might notice that the "action" function receives two parameters:
409
+ <b>editor</b> and <b>id</b>. In the examples above we only used the
410
+ <b>editor</b> parameter. But it could be helpful for you to understand
411
+ both:</p>
412
+
413
+ <ul>
414
+ <li><b>editor</b> is a reference to the HTMLArea object. Since our entire
415
+ code now has an <acronym title="Object Oriented Programming">OOP</acronym>-like
416
+ design, you need to have a reference to
417
+ the editor object in order to do things with it. In previous versions of
418
+ HTMLArea, in order to identify the object an ID was used -- the ID of the
419
+ HTML element. In this version ID-s are no longer necessary.</li>
420
+
421
+ <li><b>id</b> is the button ID. Wondering why is this useful? Well, you
422
+ could use the same handler function (presuming that it's not an anonymous
423
+ function like in the examples above) for more buttons. You can <a
424
+ href="#btnex">see an example</a> a bit later in this document.</li>
425
+ </ul>
426
+
427
+ <h4>2. Inserting it into the toolbar</h4>
428
+
429
+ <p>At this step you need to specify where in the toolbar to insert the
430
+ button, or just create the whole toolbar again as you saw in the previous
431
+ section. You use the button ID, as shown in the examples of customizing the
432
+ toolbar in the previous section.</p>
433
+
434
+ <p>For the sake of completion, following there are another examples.</p>
435
+
436
+ <p class="note">Append your button to the default toolbar</p>
437
+
438
+ <pre class="code"
439
+ >config.toolbar.push([ &quot;<span class="string">my-hilite</span>&quot; ]);</pre>
440
+
441
+ <p class="note">Customized toolbar</p>
442
+
443
+ <pre class="code"
444
+ >config.toolbar = [
445
+ ['<span class="string">fontname</span>', '<span class="string">space</span>',
446
+ '<span class="string">fontsize</span>', '<span class="string">space</span>',
447
+ '<span class="string">formatblock</span>', '<span class="string">space</span>',
448
+ '<span class="string">separator</span>', '<span class="string">my-hilite</span>', '<span class="string">separator</span>', '<span class="string">space</span>', <span class="comment">// here's your button
449
+ </span> '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>', '<span class="string">space</span>']
450
+ ];</pre>
451
+
452
+ <p><span class="note">Note:</span> in the example above our new button is
453
+ between two vertical separators. But this is by no means required. You can
454
+ put it wherever you like. Once registered in the btnList (<a
455
+ href="#regbtn">step 1</a>) your custom button behaves just like a default
456
+ button.</p>
457
+
458
+ <p><span class="warning">Important:</span> It's recommended that you add
459
+ custom features and configuration to a separate file. This will ensure you
460
+ that when we release a new official version of HTMLArea you'll have less
461
+ trouble upgrading it.</p>
462
+
463
+ <h4 id="btnex">A complete example</h4>
464
+
465
+ <p>Please note that it is by no means necessary to include the following
466
+ code into the htmlarea.js file. On the contrary, it might not work there.
467
+ The configuration system is designed such that you can always customize the
468
+ editor <em>from outside files</em>, thus keeping the htmlarea.js file
469
+ intact. This will make it easy for you to upgrade your HTMLArea when we
470
+ release a new official version. OK, I promise it's the last time I said
471
+ this. ;)</p>
472
+
473
+ <pre class="code"
474
+ ><span class="comment">// All our custom buttons will call this function when clicked.
475
+ // We use the <b>buttonId</b> parameter to determine what button
476
+ // triggered the call.
477
+ </span><span class="keyword">function</span> <span class="function-name">clickHandler</span>(editor, buttonId) {
478
+ <span class="keyword">switch</span> (buttonId) {
479
+ <span class="keyword">case</span> &quot;<span class="string">my-toc</span>&quot;:
480
+ editor.insertHTML(&quot;<span class="string">&lt;h1&gt;Table Of Contents&lt;/h1&gt;</span>&quot;);
481
+ <span class="keyword">break</span>;
482
+ <span class="keyword">case</span> &quot;<span class="string">my-date</span>&quot;:
483
+ editor.insertHTML((<span class="keyword">new</span> Date()).toString());
484
+ <span class="keyword">break</span>;
485
+ <span class="keyword">case</span> &quot;<span class="string">my-bold</span>&quot;:
486
+ editor.execCommand(&quot;<span class="string">bold</span>&quot;);
487
+ editor.execCommand(&quot;<span class="string">italic</span>&quot;);
488
+ <span class="keyword">break</span>;
489
+ <span class="keyword">case</span> &quot;<span class="string">my-hilite</span>&quot;:
490
+ editor.surroundHTML(&quot;<span class="string">&lt;span class=\&quot;hilite\&quot;&gt;</span>&quot;, &quot;<span class="string">&lt;/span&gt;</span>&quot;);
491
+ <span class="keyword">break</span>;
492
+ }
493
+ };
494
+
495
+ <span class="comment">// Create a new configuration object
496
+ </span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
497
+
498
+ <span class="comment">// Register our custom buttons
499
+ </span>config.registerButton(&quot;<span class="string">my-toc</span>&quot;, &quot;<span class="string">Insert TOC</span>&quot;, &quot;<span class="string">my-toc.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
500
+ config.registerButton(&quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">Insert date/time</span>&quot;, &quot;<span class="string">my-date.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
501
+ config.registerButton(&quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">Toggle bold/italic</span>&quot;, &quot;<span class="string">my-bold.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
502
+ config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Hilite selection</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
503
+
504
+ <span class="comment">// Append the buttons to the default toolbar
505
+ </span>config.toolbar.push([&quot;<span class="string">linebreak</span>&quot;, &quot;<span class="string">my-toc</span>&quot;, &quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">my-hilite</span>&quot;]);
506
+
507
+ <span class="comment">// Replace an existing textarea with an HTMLArea object having the above config.
508
+ </span>HTMLArea.replace(&quot;<span class="string">textAreaID</span>&quot;, config);</pre>
509
+
510
+
511
+ <hr />
512
+ <address>&copy; <a href="http://interactivetools.com" title="Visit our website"
513
+ >InteractiveTools.com</a> 2002-2004.
514
+ <br />
515
+ © <a href="http://dynarch.com">dynarch.com</a> 2003-2004<br />
516
+ HTMLArea v3.0 developed by <a
517
+ href="http://dynarch.com/mishoo/">Mihai Bazon</a>.
518
+ <br />
519
+ Documentation written by Mihai Bazon.
520
+ </address>
521
+ <!-- hhmts start --> Last modified: Wed Jan 28 12:18:23 EET 2004 <!-- hhmts end -->
522
+ <!-- doc-lang: English -->
523
+ </body> </html>