narf 0.6.2 → 0.6.3

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 (424) hide show
  1. data/ChangeLog +22 -0
  2. data/lib/web/htmltools/xmltree.rb +2 -2
  3. data/lib/web/htmltools/xpath.rb +1 -1
  4. data/narf.gemspec +1 -1
  5. metadata +2 -460
  6. data/InstalledFiles +0 -2227
  7. data/config.save +0 -12
  8. data/doc/apache_cgi.txt~ +0 -17
  9. data/doc/fastcgi.txt~ +0 -19
  10. data/doc/rdoc/classes/Web.html +0 -369
  11. data/doc/rdoc/classes/Web.src/M000002.html +0 -15
  12. data/doc/rdoc/classes/Web.src/M000003.html +0 -15
  13. data/doc/rdoc/classes/Web.src/M000004.html +0 -15
  14. data/doc/rdoc/classes/Web.src/M000005.html +0 -15
  15. data/doc/rdoc/classes/Web.src/M000006.html +0 -20
  16. data/doc/rdoc/classes/Web.src/M000007.html +0 -18
  17. data/doc/rdoc/classes/Web.src/M000008.html +0 -18
  18. data/doc/rdoc/classes/Web.src/M000009.html +0 -18
  19. data/doc/rdoc/classes/Web.src/M000010.html +0 -15
  20. data/doc/rdoc/classes/Web.src/M000011.html +0 -15
  21. data/doc/rdoc/classes/Web.src/M000012.html +0 -15
  22. data/doc/rdoc/classes/Web/CGD.html +0 -173
  23. data/doc/rdoc/classes/Web/CGD.src/M000037.html +0 -24
  24. data/doc/rdoc/classes/Web/CGD.src/M000038.html +0 -24
  25. data/doc/rdoc/classes/Web/CGD.src/M000039.html +0 -15
  26. data/doc/rdoc/classes/Web/CGD.src/M000040.html +0 -15
  27. data/doc/rdoc/classes/Web/CGD.src/M000041.html +0 -23
  28. data/doc/rdoc/classes/Web/CGI.html +0 -946
  29. data/doc/rdoc/classes/Web/CGI.src/M000051.html +0 -15
  30. data/doc/rdoc/classes/Web/CGI.src/M000052.html +0 -24
  31. data/doc/rdoc/classes/Web/CGI.src/M000053.html +0 -15
  32. data/doc/rdoc/classes/Web/CGI.src/M000054.html +0 -15
  33. data/doc/rdoc/classes/Web/CGI.src/M000055.html +0 -15
  34. data/doc/rdoc/classes/Web/CGI.src/M000056.html +0 -15
  35. data/doc/rdoc/classes/Web/CGI.src/M000057.html +0 -17
  36. data/doc/rdoc/classes/Web/CGI.src/M000058.html +0 -34
  37. data/doc/rdoc/classes/Web/CGI.src/M000059.html +0 -22
  38. data/doc/rdoc/classes/Web/CGI.src/M000060.html +0 -15
  39. data/doc/rdoc/classes/Web/CGI.src/M000061.html +0 -15
  40. data/doc/rdoc/classes/Web/CGI.src/M000062.html +0 -19
  41. data/doc/rdoc/classes/Web/CGI.src/M000063.html +0 -18
  42. data/doc/rdoc/classes/Web/CGI.src/M000064.html +0 -19
  43. data/doc/rdoc/classes/Web/CGI.src/M000065.html +0 -15
  44. data/doc/rdoc/classes/Web/CGI.src/M000066.html +0 -15
  45. data/doc/rdoc/classes/Web/CGI.src/M000067.html +0 -15
  46. data/doc/rdoc/classes/Web/CGI.src/M000068.html +0 -13
  47. data/doc/rdoc/classes/Web/CGI.src/M000069.html +0 -13
  48. data/doc/rdoc/classes/Web/CGI.src/M000070.html +0 -13
  49. data/doc/rdoc/classes/Web/CGI.src/M000071.html +0 -13
  50. data/doc/rdoc/classes/Web/CGI.src/M000072.html +0 -19
  51. data/doc/rdoc/classes/Web/CGI.src/M000073.html +0 -15
  52. data/doc/rdoc/classes/Web/CGI.src/M000074.html +0 -19
  53. data/doc/rdoc/classes/Web/CGI.src/M000075.html +0 -15
  54. data/doc/rdoc/classes/Web/CGI.src/M000076.html +0 -15
  55. data/doc/rdoc/classes/Web/CGI.src/M000077.html +0 -15
  56. data/doc/rdoc/classes/Web/CGI.src/M000078.html +0 -20
  57. data/doc/rdoc/classes/Web/CGI.src/M000079.html +0 -36
  58. data/doc/rdoc/classes/Web/CGI.src/M000080.html +0 -19
  59. data/doc/rdoc/classes/Web/CGI.src/M000081.html +0 -18
  60. data/doc/rdoc/classes/Web/CGI.src/M000082.html +0 -15
  61. data/doc/rdoc/classes/Web/CGI.src/M000083.html +0 -17
  62. data/doc/rdoc/classes/Web/CGI.src/M000084.html +0 -15
  63. data/doc/rdoc/classes/Web/CGI.src/M000085.html +0 -16
  64. data/doc/rdoc/classes/Web/CGI.src/M000086.html +0 -15
  65. data/doc/rdoc/classes/Web/CGI.src/M000087.html +0 -15
  66. data/doc/rdoc/classes/Web/CGI.src/M000088.html +0 -15
  67. data/doc/rdoc/classes/Web/CGI.src/M000089.html +0 -16
  68. data/doc/rdoc/classes/Web/CGI.src/M000090.html +0 -15
  69. data/doc/rdoc/classes/Web/CGI.src/M000091.html +0 -15
  70. data/doc/rdoc/classes/Web/CGI.src/M000092.html +0 -15
  71. data/doc/rdoc/classes/Web/CGI.src/M000093.html +0 -15
  72. data/doc/rdoc/classes/Web/CGI.src/M000094.html +0 -15
  73. data/doc/rdoc/classes/Web/CGI.src/M000095.html +0 -15
  74. data/doc/rdoc/classes/Web/CGI.src/M000096.html +0 -19
  75. data/doc/rdoc/classes/Web/CGI.src/M000097.html +0 -15
  76. data/doc/rdoc/classes/Web/CGI.src/M000098.html +0 -15
  77. data/doc/rdoc/classes/Web/CGI.src/M000099.html +0 -43
  78. data/doc/rdoc/classes/Web/CGI.src/M000100.html +0 -18
  79. data/doc/rdoc/classes/Web/CGI.src/M000101.html +0 -20
  80. data/doc/rdoc/classes/Web/CGI.src/M000102.html +0 -15
  81. data/doc/rdoc/classes/Web/CGI.src/M000103.html +0 -15
  82. data/doc/rdoc/classes/Web/CGI.src/M000104.html +0 -15
  83. data/doc/rdoc/classes/Web/CGI.src/M000105.html +0 -24
  84. data/doc/rdoc/classes/Web/CGI.src/M000106.html +0 -24
  85. data/doc/rdoc/classes/Web/CGI.src/M000107.html +0 -22
  86. data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +0 -104
  87. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +0 -15
  88. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +0 -15
  89. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +0 -15
  90. data/doc/rdoc/classes/Web/Mime.html +0 -122
  91. data/doc/rdoc/classes/Web/Mime.src/M000118.html +0 -15
  92. data/doc/rdoc/classes/Web/Mime.src/M000119.html +0 -15
  93. data/doc/rdoc/classes/Web/Mime.src/M000120.html +0 -23
  94. data/doc/rdoc/classes/Web/Mime.src/M000121.html +0 -15
  95. data/doc/rdoc/classes/Web/Mime.src/M000122.html +0 -15
  96. data/doc/rdoc/classes/Web/Mime.src/M000123.html +0 -23
  97. data/doc/rdoc/classes/Web/Mime.src/M000124.html +0 -15
  98. data/doc/rdoc/classes/Web/Narflates.html +0 -134
  99. data/doc/rdoc/classes/Web/Parser.html +0 -219
  100. data/doc/rdoc/classes/Web/Parser.src/M000013.html +0 -21
  101. data/doc/rdoc/classes/Web/Parser.src/M000014.html +0 -19
  102. data/doc/rdoc/classes/Web/Parser.src/M000015.html +0 -21
  103. data/doc/rdoc/classes/Web/Parser.src/M000016.html +0 -15
  104. data/doc/rdoc/classes/Web/Parser.src/M000017.html +0 -30
  105. data/doc/rdoc/classes/Web/Parser.src/M000018.html +0 -15
  106. data/doc/rdoc/classes/Web/Parser.src/M000019.html +0 -19
  107. data/doc/rdoc/classes/Web/Parser.src/M000020.html +0 -27
  108. data/doc/rdoc/classes/Web/Parser.src/M000021.html +0 -15
  109. data/doc/rdoc/classes/Web/Parser.src/M000022.html +0 -16
  110. data/doc/rdoc/classes/Web/Parser.src/M000023.html +0 -18
  111. data/doc/rdoc/classes/Web/Session.html +0 -178
  112. data/doc/rdoc/classes/Web/Session.src/M000042.html +0 -20
  113. data/doc/rdoc/classes/Web/Session.src/M000043.html +0 -19
  114. data/doc/rdoc/classes/Web/Session.src/M000044.html +0 -21
  115. data/doc/rdoc/classes/Web/Session.src/M000045.html +0 -21
  116. data/doc/rdoc/classes/Web/Session.src/M000046.html +0 -15
  117. data/doc/rdoc/classes/Web/Session.src/M000047.html +0 -17
  118. data/doc/rdoc/classes/Web/Session.src/M000048.html +0 -15
  119. data/doc/rdoc/classes/Web/Session.src/M000049.html +0 -15
  120. data/doc/rdoc/classes/Web/Session.src/M000050.html +0 -16
  121. data/doc/rdoc/classes/Web/Testing.html +0 -474
  122. data/doc/rdoc/classes/Web/Testing.src/M000024.html +0 -15
  123. data/doc/rdoc/classes/Web/Testing.src/M000025.html +0 -25
  124. data/doc/rdoc/classes/Web/Testing.src/M000026.html +0 -15
  125. data/doc/rdoc/classes/Web/Testing.src/M000027.html +0 -25
  126. data/doc/rdoc/classes/Web/Testing.src/M000028.html +0 -57
  127. data/doc/rdoc/classes/Web/Testing.src/M000029.html +0 -15
  128. data/doc/rdoc/classes/Web/Testing.src/M000030.html +0 -15
  129. data/doc/rdoc/classes/Web/Testing.src/M000031.html +0 -15
  130. data/doc/rdoc/classes/Web/Testing.src/M000032.html +0 -15
  131. data/doc/rdoc/classes/Web/Testing.src/M000033.html +0 -15
  132. data/doc/rdoc/classes/Web/Testing.src/M000034.html +0 -15
  133. data/doc/rdoc/classes/Web/Testing.src/M000035.html +0 -15
  134. data/doc/rdoc/classes/Web/Testing.src/M000036.html +0 -18
  135. data/doc/rdoc/classes/Web/Upload.html +0 -160
  136. data/doc/rdoc/classes/Web/Upload.src/M000108.html +0 -25
  137. data/doc/rdoc/classes/Web/Upload.src/M000109.html +0 -18
  138. data/doc/rdoc/classes/Web/Upload.src/M000110.html +0 -16
  139. data/doc/rdoc/classes/Web/Upload.src/M000111.html +0 -16
  140. data/doc/rdoc/classes/Web/Wiki.html +0 -249
  141. data/doc/rdoc/classes/Web/Wiki.src/M000112.html +0 -25
  142. data/doc/rdoc/classes/Web/Wiki.src/M000113.html +0 -15
  143. data/doc/rdoc/classes/Web/Wiki.src/M000114.html +0 -26
  144. data/doc/rdoc/classes/Web/Wiki.src/M000115.html +0 -21
  145. data/doc/rdoc/classes/Web/Wiki.src/M000116.html +0 -18
  146. data/doc/rdoc/classes/Web/Wiki.src/M000117.html +0 -19
  147. data/doc/rdoc/created.rid +0 -1
  148. data/doc/rdoc/files/README.html +0 -230
  149. data/doc/rdoc/files/doc/apache_cgi_txt.html +0 -76
  150. data/doc/rdoc/files/doc/fastcgi_txt.html +0 -82
  151. data/doc/rdoc/files/doc/mod_ruby_txt.html +0 -62
  152. data/doc/rdoc/files/doc/webrick_txt.html +0 -79
  153. data/doc/rdoc/files/examples/examples_rdoc.html +0 -73
  154. data/doc/rdoc/files/lib/web/cgi_rb.html +0 -75
  155. data/doc/rdoc/files/lib/web/mime_rb.html +0 -67
  156. data/doc/rdoc/files/lib/web/parser_rb.html +0 -73
  157. data/doc/rdoc/files/lib/web/session_rb.html +0 -73
  158. data/doc/rdoc/files/lib/web/template_rb.html +0 -73
  159. data/doc/rdoc/files/lib/web/testing_rb.html +0 -67
  160. data/doc/rdoc/files/lib/web/upload_rb.html +0 -73
  161. data/doc/rdoc/files/lib/web/wiki_rb.html +0 -79
  162. data/doc/rdoc/files/lib/web_rb.html +0 -116
  163. data/doc/rdoc/files/lib/web_rb.src/M000001.html +0 -15
  164. data/doc/rdoc/fr_class_index.html +0 -47
  165. data/doc/rdoc/fr_file_index.html +0 -52
  166. data/doc/rdoc/fr_method_index.html +0 -158
  167. data/doc/rdoc/index.html +0 -22
  168. data/doc/rdoc/rdoc-style.css +0 -99
  169. data/examples/admin.rb~ +0 -5
  170. data/examples/cookbook.rdoc~ +0 -238
  171. data/examples/examples.rdoc~ +0 -17
  172. data/examples/hello.world.rb~ +0 -3
  173. data/examples/session.rb~ +0 -31
  174. data/examples/test/test.hello.world.rb~ +0 -9
  175. data/examples/test/test.session.rb~ +0 -37
  176. data/examples/wiki.rb~ +0 -5
  177. data/lib/web.rb~ +0 -290
  178. data/lib/web/#assertinclude.rb# +0 -110
  179. data/lib/web/assertinclude.rb~ +0 -110
  180. data/lib/web/cgi.rb~ +0 -640
  181. data/lib/web/htmlparser/html-parser.rb~ +0 -429
  182. data/lib/web/htmlparser/sgml-parser.rb~ +0 -332
  183. data/lib/web/htmltools/element.rb~ +0 -296
  184. data/lib/web/htmltools/stparser.rb~ +0 -276
  185. data/lib/web/htmltools/tags.rb~ +0 -286
  186. data/lib/web/htmltools/tree.rb~ +0 -139
  187. data/lib/web/htmltools/xmltree.rb~ +0 -160
  188. data/lib/web/htmltools/xpath.rb~ +0 -71
  189. data/lib/web/parser.rb~ +0 -288
  190. data/lib/web/request.rb~ +0 -238
  191. data/lib/web/runner.rb~ +0 -26
  192. data/lib/web/sapi/fastcgi.rb~ +0 -25
  193. data/lib/web/sapi/mod_ruby.rb~ +0 -46
  194. data/lib/web/sapi/webrick.rb~ +0 -89
  195. data/lib/web/session.rb~ +0 -75
  196. data/lib/web/tagparser.rb~ +0 -96
  197. data/lib/web/template.rb~ +0 -613
  198. data/lib/web/testing.rb~ +0 -546
  199. data/lib/web/unit/response.rb~ +0 -461
  200. data/lib/web/unit/ui/cui/testrunner.rb~ +0 -50
  201. data/lib/web/upload.rb~ +0 -262
  202. data/lib/web/wiki.rb~ +0 -517
  203. data/lib/web/wiki/linker.rb~ +0 -72
  204. data/lib/web/wiki/mime.rb~ +0 -68
  205. data/lib/web/wiki/page.rb~ +0 -192
  206. data/lib/web/wiki/resources/#edit.html# +0 -65
  207. data/lib/web/wiki/resources/admin.html~ +0 -13
  208. data/lib/web/wiki/resources/default-content_editor.html~ +0 -1
  209. data/lib/web/wiki/resources/edit.html~ +0 -2
  210. data/lib/web/wiki/resources/home.html~ +0 -10
  211. data/lib/web/wiki/resources/htmlarea/ChangeLog +0 -1185
  212. data/lib/web/wiki/resources/htmlarea/dialog.js +0 -72
  213. data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +0 -16
  214. data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +0 -158
  215. data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +0 -95
  216. data/lib/web/wiki/resources/htmlarea/examples/core.html +0 -184
  217. data/lib/web/wiki/resources/htmlarea/examples/css.html +0 -88
  218. data/lib/web/wiki/resources/htmlarea/examples/custom.css +0 -29
  219. data/lib/web/wiki/resources/htmlarea/examples/full-page.html +0 -75
  220. data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +0 -248
  221. data/lib/web/wiki/resources/htmlarea/examples/index.html +0 -40
  222. data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +0 -132
  223. data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +0 -116
  224. data/lib/web/wiki/resources/htmlarea/examples/test.cgi +0 -21
  225. data/lib/web/wiki/resources/htmlarea/htmlarea.css +0 -180
  226. data/lib/web/wiki/resources/htmlarea/htmlarea.js +0 -2175
  227. data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
  228. data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
  229. data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
  230. data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
  231. data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
  232. data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
  233. data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
  234. data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
  235. data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
  236. data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
  237. data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
  238. data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
  239. data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
  240. data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
  241. data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
  242. data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
  243. data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
  244. data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
  245. data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
  246. data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
  247. data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
  248. data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
  249. data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
  250. data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
  251. data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
  252. data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
  253. data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
  254. data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
  255. data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
  256. data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
  257. data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
  258. data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
  259. data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
  260. data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
  261. data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
  262. data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
  263. data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
  264. data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
  265. data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
  266. data/lib/web/wiki/resources/htmlarea/index.html +0 -199
  267. data/lib/web/wiki/resources/htmlarea/lang/b5.js +0 -36
  268. data/lib/web/wiki/resources/htmlarea/lang/cz.js +0 -63
  269. data/lib/web/wiki/resources/htmlarea/lang/da.js +0 -38
  270. data/lib/web/wiki/resources/htmlarea/lang/de.js +0 -54
  271. data/lib/web/wiki/resources/htmlarea/lang/ee.js +0 -63
  272. data/lib/web/wiki/resources/htmlarea/lang/el.js +0 -75
  273. data/lib/web/wiki/resources/htmlarea/lang/en.js +0 -88
  274. data/lib/web/wiki/resources/htmlarea/lang/es.js +0 -51
  275. data/lib/web/wiki/resources/htmlarea/lang/fi.js +0 -46
  276. data/lib/web/wiki/resources/htmlarea/lang/fr.js +0 -61
  277. data/lib/web/wiki/resources/htmlarea/lang/gb.js +0 -36
  278. data/lib/web/wiki/resources/htmlarea/lang/he.js +0 -63
  279. data/lib/web/wiki/resources/htmlarea/lang/hu.js +0 -63
  280. data/lib/web/wiki/resources/htmlarea/lang/it.js +0 -54
  281. data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +0 -37
  282. data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +0 -37
  283. data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +0 -37
  284. data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +0 -37
  285. data/lib/web/wiki/resources/htmlarea/lang/lt.js +0 -55
  286. data/lib/web/wiki/resources/htmlarea/lang/lv.js +0 -55
  287. data/lib/web/wiki/resources/htmlarea/lang/nb.js +0 -36
  288. data/lib/web/wiki/resources/htmlarea/lang/nl.js +0 -90
  289. data/lib/web/wiki/resources/htmlarea/lang/no.js +0 -79
  290. data/lib/web/wiki/resources/htmlarea/lang/pl.js +0 -36
  291. data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +0 -37
  292. data/lib/web/wiki/resources/htmlarea/lang/ro.js +0 -80
  293. data/lib/web/wiki/resources/htmlarea/lang/ru.js +0 -63
  294. data/lib/web/wiki/resources/htmlarea/lang/se.js +0 -38
  295. data/lib/web/wiki/resources/htmlarea/lang/si.js +0 -63
  296. data/lib/web/wiki/resources/htmlarea/lang/vn.js +0 -51
  297. data/lib/web/wiki/resources/htmlarea/license.txt +0 -30
  298. data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +0 -116
  299. data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +0 -2
  300. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +0 -416
  301. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +0 -59
  302. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +0 -57
  303. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +0 -66
  304. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +0 -66
  305. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +0 -64
  306. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +0 -143
  307. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
  308. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +0 -25
  309. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +0 -25
  310. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +0 -131
  311. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +0 -89
  312. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
  313. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +0 -37
  314. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +0 -37
  315. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +0 -28
  316. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +0 -38
  317. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +0 -37
  318. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +0 -28
  319. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +0 -37
  320. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +0 -114
  321. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +0 -210
  322. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +0 -10
  323. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +0 -122
  324. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +0 -397
  325. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +0 -79
  326. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
  327. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
  328. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
  329. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
  330. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
  331. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
  332. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
  333. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
  334. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
  335. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
  336. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
  337. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
  338. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
  339. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
  340. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
  341. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
  342. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +0 -90
  343. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +0 -90
  344. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +0 -81
  345. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +0 -81
  346. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +0 -90
  347. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +0 -66
  348. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +0 -63
  349. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +0 -81
  350. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +0 -90
  351. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +0 -91
  352. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +0 -90
  353. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +0 -1160
  354. data/lib/web/wiki/resources/htmlarea/popupdiv.js +0 -369
  355. data/lib/web/wiki/resources/htmlarea/popups/about.html +0 -378
  356. data/lib/web/wiki/resources/htmlarea/popups/blank.html +0 -2
  357. data/lib/web/wiki/resources/htmlarea/popups/custom2.html +0 -35
  358. data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +0 -16
  359. data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +0 -133
  360. data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +0 -191
  361. data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +0 -174
  362. data/lib/web/wiki/resources/htmlarea/popups/link.html +0 -142
  363. data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +0 -131
  364. data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +0 -206
  365. data/lib/web/wiki/resources/htmlarea/popups/popup.js +0 -109
  366. data/lib/web/wiki/resources/htmlarea/popups/select_color.html +0 -347
  367. data/lib/web/wiki/resources/htmlarea/popupwin.js +0 -139
  368. data/lib/web/wiki/resources/htmlarea/reference.html +0 -523
  369. data/lib/web/wiki/resources/htmlarea/release-notes.html +0 -165
  370. data/lib/web/wiki/resources/illustration.html~ +0 -1
  371. data/lib/web/wiki/resources/index.html~ +0 -4
  372. data/lib/web/wiki/resources/more_news.html~ +0 -5
  373. data/lib/web/wiki/resources/more_news_rss_0.91.html +0 -23
  374. data/lib/web/wiki/resources/page_history.html~ +0 -19
  375. data/lib/web/wiki/resources/template.html~ +0 -13
  376. data/narf.gemspec~ +0 -40
  377. data/sapi/apache_cgi/INSTALL.txt~ +0 -9
  378. data/sapi/apache_cgi/README~ +0 -0
  379. data/sapi/fastcgi/INSTALL.txt~ +0 -17
  380. data/sapi/mod_ruby/INSTALL.txt~ +0 -5
  381. data/sapi/webrick/INSTALL.txt~ +0 -21
  382. data/sapi/webrick/run_webrick.rb~ +0 -16
  383. data/scripts/makedist.rb~ +0 -49
  384. data/test/mod_ruby_stub.rb~ +0 -38
  385. data/test/test.action.rb~ +0 -142
  386. data/test/test.assertinclude.rb~ +0 -109
  387. data/test/test.narf.cgi.rb~ +0 -105
  388. data/test/test.request.rb~ +0 -328
  389. data/test/test.response.rb~ +0 -556
  390. data/test/test.template.rb~ +0 -832
  391. data/test/test.web.test.rb~ +0 -461
  392. data/test/webunit/test_cookie.rb~ +0 -128
  393. data/test/webunit/test_form.rb~ +0 -43
  394. data/test/webunit/test_multipart.rb~ +0 -53
  395. data/test/webunit/test_params.rb~ +0 -211
  396. data/test/webunit/test_response.rb~ +0 -145
  397. data/test/webunit/test_site/assert.html~ +0 -1
  398. data/test/webunit/test_site/auth/index.html~ +0 -1
  399. data/test/webunit/test_site/badtags.html~ +0 -1
  400. data/test/webunit/test_site/cookie.cgi~ +0 -35
  401. data/test/webunit/test_site/document.xml~ +0 -1
  402. data/test/webunit/test_site/form.html~ +0 -1
  403. data/test/webunit/test_site/frame-0.html~ +0 -1
  404. data/test/webunit/test_site/frame-1.html~ +0 -1
  405. data/test/webunit/test_site/frame.html~ +0 -1
  406. data/test/webunit/test_site/image.html~ +0 -1
  407. data/test/webunit/test_site/include.cgi~ +0 -10
  408. data/test/webunit/test_site/jscript-0.html~ +0 -1
  409. data/test/webunit/test_site/jscript-1.html~ +0 -1
  410. data/test/webunit/test_site/jscript.html~ +0 -1
  411. data/test/webunit/test_site/link.html~ +0 -1
  412. data/test/webunit/test_site/multipart.cgi~ +0 -25
  413. data/test/webunit/test_site/multipart.html~ +0 -1
  414. data/test/webunit/test_site/params.html~ +0 -1
  415. data/test/webunit/test_site/redirect.cgi~ +0 -14
  416. data/test/webunit/test_site/response.html~ +0 -1
  417. data/test/webunit/test_site/simple.cgi~ +0 -17
  418. data/test/webunit/test_site/stock.cgi~ +0 -34
  419. data/test/webunit/test_site/table.html~ +0 -1
  420. data/test/webunit/test_site/test.cgi~ +0 -25
  421. data/test/wiki/test.history.rb~ +0 -254
  422. data/test/wiki/test.illustration_page.rb~ +0 -287
  423. data/test/wiki/test.tarpit.rb~ +0 -40
  424. data/test/wiki/test.wiki.rb~ +0 -295
@@ -1,1160 +0,0 @@
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> &nbsp;&nbsp;" + 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 + "' /> &nbsp;" + i18n["Padding"] + ":\
212
- <input type='text' name='f_padding' size='5' value='" + f_padding + "' /> &nbsp;&nbsp;" + 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 + "' /> &nbsp;&nbsp;" + 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
- // &nbsp;&nbsp;" + 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 += "&nbsp;");
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 = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
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 = "&#x00d7;";
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 -------------------------------------------------------