narf 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
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 -------------------------------------------------------