zena 1.2.7 → 1.2.8

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 (407) hide show
  1. data/History.txt +80 -25
  2. data/Rakefile +2 -2
  3. data/app/controllers/columns_controller.rb +2 -2
  4. data/app/controllers/nodes_controller.rb +22 -29
  5. data/app/controllers/user_sessions_controller.rb +35 -10
  6. data/app/controllers/users_controller.rb +2 -2
  7. data/app/controllers/versions_controller.rb +2 -2
  8. data/app/models/group.rb +15 -1
  9. data/app/models/node.rb +109 -8
  10. data/app/models/role.rb +4 -0
  11. data/app/models/site.rb +64 -58
  12. data/app/models/template.rb +1 -1
  13. data/app/models/user.rb +135 -29
  14. data/app/models/user_session.rb +0 -1
  15. data/app/models/virtual_class.rb +11 -6
  16. data/app/views/columns/_form.html.erb +3 -1
  17. data/app/views/columns/_li.html.erb +1 -1
  18. data/app/views/columns/create.rjs +1 -1
  19. data/app/views/groups/_form.rhtml +16 -13
  20. data/app/views/relations/_form.erb +18 -6
  21. data/app/views/sites/_form.erb +12 -6
  22. data/app/views/users/_form.rhtml +23 -8
  23. data/app/views/users/_li.rhtml +14 -3
  24. data/app/views/users/index.rhtml +1 -1
  25. data/app/views/virtual_classes/_form.erb +12 -2
  26. data/app/views/zafu/default/Node-+login.zafu +8 -1
  27. data/app/views/zafu/default/Node-+search.zafu +1 -1
  28. data/bricks/acls/lib/bricks/acls.rb +1 -0
  29. data/bricks/acls/zena/migrate/20130903150356_longer_names_for_acl.rb +9 -0
  30. data/bricks/acls/zena/test/integration/acl_integration_test.rb +2 -2
  31. data/bricks/currency/lib/bricks/currency.rb +120 -0
  32. data/bricks/currency/zena/test/unit/currency_test.rb +43 -0
  33. data/bricks/fs_skin/lib/bricks/fs_skin.rb +1 -1
  34. data/bricks/fs_skin/zena/skins/blog/Node-+search.zafu +1 -1
  35. data/bricks/fs_skin/zena/skins/blog/Node.zafu +1 -1
  36. data/bricks/fs_skin/zena/test/unit/fs_skin_view_test.rb +35 -0
  37. data/bricks/pdf/lib/bricks/pdf.rb +1 -1
  38. data/bricks/sphinx/lib/bricks/sphinx.rb +2 -0
  39. data/bricks/sphinx/zena/init.rb +14 -0
  40. data/bricks/tags/zena/test/zafu/tags.yml +5 -1
  41. data/bricks/worker/lib/bricks/worker.rb +3 -2
  42. data/bricks/zena/zena/migrate/20130829093753_add_versioned_flag_to_column.rb +10 -0
  43. data/bricks/zena/zena/migrate/20130903084909_count_login_attempts.rb +11 -0
  44. data/bricks/zena/zena/migrate/20131104153126_index_fullpath.rb +10 -0
  45. data/bricks/zena/zena/migrate/20131104210011_rebuild_fullpath_after_change.rb +10 -0
  46. data/bricks/zena/zena/migrate/20131105160420_add_skin_id_to_sites.rb +9 -0
  47. data/bricks/zena/zena/migrate/20131105175822_add_profile_to_users.rb +11 -0
  48. data/bricks/zena/zena/migrate/20140213120038_fix_idx_scope.rb +13 -0
  49. data/bricks/zena/zena/migrate/20140628140247_add_site_readonly.rb +9 -0
  50. data/config/bricks.yml +8 -4
  51. data/config/gems.yml +5 -3
  52. data/db/init/base/skins/default/Node-+login.zafu +8 -1
  53. data/db/init/base/skins/default/Node-+search.zafu +1 -1
  54. data/lib/bricks/loader.rb +5 -5
  55. data/lib/gettext_strings.rb +3 -0
  56. data/lib/tasks/zena.rake +25 -22
  57. data/lib/zafu/process/context.rb +4 -0
  58. data/lib/zena/acts/secure_node.rb +3 -3
  59. data/lib/zena/app.rb +1 -0
  60. data/lib/zena/deploy.rb +1 -1
  61. data/lib/zena/deploy/template.rb +1 -1
  62. data/lib/zena/foxy_parser.rb +5 -2
  63. data/lib/zena/info.rb +1 -1
  64. data/lib/zena/site_worker.rb +2 -2
  65. data/lib/zena/test_controller.rb +5 -2
  66. data/lib/zena/use/action.rb +9 -2
  67. data/lib/zena/use/ajax.rb +20 -4
  68. data/lib/zena/use/ancestry.rb +89 -15
  69. data/lib/zena/use/authlogic.rb +8 -2
  70. data/lib/zena/use/context.rb +1 -0
  71. data/lib/zena/use/display.rb +1 -97
  72. data/lib/zena/use/forms.rb +28 -8
  73. data/lib/zena/use/html_tags.rb +16 -7
  74. data/lib/zena/use/i18n.rb +1 -1
  75. data/lib/zena/use/prop_eval.rb +6 -1
  76. data/lib/zena/use/query_node.rb +69 -4
  77. data/lib/zena/use/recursion.rb +1 -1
  78. data/lib/zena/use/refactor.rb +5 -2
  79. data/lib/zena/use/relations.rb +1 -0
  80. data/lib/zena/use/rendering.rb +7 -4
  81. data/lib/zena/use/test_helper.rb +8 -4
  82. data/lib/zena/use/upload.rb +14 -0
  83. data/lib/zena/use/urls.rb +39 -23
  84. data/lib/zena/use/version_hash.rb +5 -2
  85. data/lib/zena/use/workflow.rb +116 -70
  86. data/lib/zena/use/zafu_eval.rb +41 -0
  87. data/lib/zena/use/zafu_safe_definitions.rb +1 -0
  88. data/lib/zena/use/zafu_templates.rb +32 -26
  89. data/lib/zena/use/zazen.rb +8 -7
  90. data/locale/app.pot +5 -1
  91. data/locale/de/LC_MESSAGES/zena.mo +0 -0
  92. data/locale/de/zena.po +385 -281
  93. data/locale/en/LC_MESSAGES/zena.mo +0 -0
  94. data/locale/en/zena.po +378 -271
  95. data/locale/fr/LC_MESSAGES/zena.mo +0 -0
  96. data/locale/fr/zena.po +387 -272
  97. data/locale/it/LC_MESSAGES/zena.mo +0 -0
  98. data/locale/it/zena.po +433 -404
  99. data/locale/zena.pot +362 -268
  100. data/public/javascripts/grid.js +280 -104
  101. data/public/javascripts/zena.js +43 -15
  102. data/public/stylesheets/admin.css +8 -2
  103. data/public/stylesheets/grid.css +5 -2
  104. data/public/stylesheets/popup.css +1 -1
  105. data/test/fixtures/files/TestNode.zafu +51 -0
  106. data/test/functional/nodes_controller_test.rb +20 -5
  107. data/test/functional/user_sessions_controller_test.rb +41 -6
  108. data/test/functional/users_controller_test.rb +1 -2
  109. data/test/integration/navigation_test.rb +22 -4
  110. data/test/integration/query_node/basic.yml +7 -0
  111. data/test/integration/query_node/complex.yml +1 -1
  112. data/test/integration/query_node/errors.yml +1 -1
  113. data/test/integration/query_node/filters.yml +34 -1
  114. data/test/integration/query_node/relations.yml +6 -13
  115. data/test/integration/query_node_test.rb +22 -3
  116. data/test/integration/zafu_compiler/action.yml +1 -1
  117. data/test/integration/zafu_compiler/alias_site.yml +52 -0
  118. data/test/integration/zafu_compiler/complex.yml +1 -1
  119. data/test/integration/zafu_compiler/complex_ok.yml +5 -5
  120. data/test/integration/zafu_compiler/context.yml +1 -1
  121. data/test/integration/zafu_compiler/display.yml +56 -5
  122. data/test/integration/zafu_compiler/forms.yml +35 -2
  123. data/test/integration/zafu_compiler/meta.yml +4 -0
  124. data/test/integration/zafu_compiler/rubyless.yml +1 -1
  125. data/test/integration/zafu_compiler/safe_definitions.yml +4 -0
  126. data/test/integration/zafu_compiler/security.yml +10 -0
  127. data/test/integration/zafu_compiler/site.yml +5 -1
  128. data/test/integration/zafu_compiler/urls.yml +8 -2
  129. data/test/integration/zafu_compiler/zafu_attributes.yml +2 -1
  130. data/test/integration/zafu_compiler/zazen.yml +4 -0
  131. data/test/integration/zafu_compiler_test.rb +47 -4
  132. data/test/selenium/Grid/grid1.rsel +8 -8
  133. data/test/sites/complex/sites.yml +2 -2
  134. data/test/sites/complex/users.yml +1 -0
  135. data/test/sites/zena/columns.yml +4 -0
  136. data/test/sites/zena/sites.yml +1 -0
  137. data/test/sites/zena/users.yml +1 -0
  138. data/test/unit/node_test.rb +53 -5
  139. data/test/unit/note_test.rb +1 -1
  140. data/test/unit/relation_proxy_test.rb +20 -0
  141. data/test/unit/role_test.rb +2 -0
  142. data/test/unit/site_test.rb +28 -6
  143. data/test/unit/user_test.rb +332 -1
  144. data/test/unit/virtual_class_test.rb +55 -0
  145. data/test/unit/workflow_test.rb +175 -0
  146. data/test/unit/zena/use/ancestry_test.rb +52 -10
  147. data/test/unit/zena/use/prop_eval_test.rb +44 -0
  148. data/test/unit/zena/use/rendering_test.rb +48 -2
  149. data/test/unit/zena/use/upload_test.rb +15 -13
  150. data/test/unit/zena/use/urls_test.rb +1 -0
  151. data/vendor/plugins/ar_mysql_full_text/lib/ar_mysql_full_text.rb +39 -25
  152. data/zena.gemspec +69 -307
  153. metadata +143 -368
  154. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run 2.tmCommand +0 -24
  155. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Context.tmCommand +0 -58
  156. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Focused Should.tmCommand +0 -88
  157. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run.tmCommand +0 -27
  158. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/YAML to Shoulda.tmCommand +0 -23
  159. data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Context.tmPreferences +0 -19
  160. data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Should.tmPreferences +0 -19
  161. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory attributes for.tmSnippet +0 -16
  162. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory build.tmSnippet +0 -16
  163. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory.tmSnippet +0 -16
  164. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define with class.tmSnippet +0 -18
  165. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define.tmSnippet +0 -18
  166. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_next.tmSnippet +0 -16
  167. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_sequence.tmSnippet +0 -18
  168. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_bad_value.tmSnippet +0 -16
  169. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_contains.tmSnippet +0 -16
  170. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_does_not_contain.tmSnippet +0 -16
  171. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_good_value.tmSnippet +0 -16
  172. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_same_elements.tmSnippet +0 -16
  173. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_save.tmSnippet +0 -16
  174. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_sent_email.tmSnippet +0 -18
  175. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_valid.tmSnippet +0 -16
  176. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/association.tmSnippet +0 -17
  177. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/attribute.tmSnippet +0 -17
  178. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/before_should block.tmSnippet +0 -18
  179. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block get.tmSnippet +0 -22
  180. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block post.tmSnippet +0 -23
  181. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block with setup.tmSnippet +0 -25
  182. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/setup.tmSnippet +0 -18
  183. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block with before proc.tmSnippet +0 -18
  184. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block.tmSnippet +0 -18
  185. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_allow_values_for.tmSnippet +0 -16
  186. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_assign_to.tmSnippet +0 -16
  187. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful denied.tmSnippet +0 -20
  188. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful.tmSnippet +0 -20
  189. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_belong_to.tmSnippet +0 -16
  190. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change by.tmSnippet +0 -16
  191. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change from to.tmSnippet +0 -16
  192. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_at_least.tmSnippet +0 -16
  193. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_in_range.tmSnippet +0 -16
  194. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_is.tmSnippet +0 -16
  195. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_value_in_range.tmSnippet +0 -16
  196. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_eventually.tmSnippet +0 -18
  197. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_filter_params.tmSnippet +0 -16
  198. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_and_belong_to_many.tmSnippet +0 -16
  199. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_class_methods.tmSnippet +0 -16
  200. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_column.tmSnippet +0 -16
  201. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_columns.tmSnippet +0 -16
  202. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_index.tmSnippet +0 -16
  203. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_indices.tmSnippet +0 -16
  204. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_instance_methods.tmSnippet +0 -16
  205. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_many.tmSnippet +0 -16
  206. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_named_scope.tmSnippet +0 -16
  207. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_one.tmSnippet +0 -16
  208. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_readonly_attributes.tmSnippet +0 -16
  209. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_mass_assignment_of.tmSnippet +0 -16
  210. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_values_for.tmSnippet +0 -16
  211. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_assign_to.tmSnippet +0 -16
  212. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_change.tmSnippet +0 -16
  213. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_set_the_flash.tmSnippet +0 -16
  214. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_redirect_to.tmSnippet +0 -16
  215. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_a_form.tmSnippet +0 -16
  216. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_template.tmSnippet +0 -16
  217. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_with_layout.tmSnippet +0 -16
  218. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_without_layout.tmSnippet +0 -16
  219. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with.tmSnippet +0 -16
  220. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with_content_type.tmSnippet +0 -16
  221. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_return_from_session.tmSnippet +0 -16
  222. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_route.tmSnippet +0 -16
  223. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_set_the_flash_to.tmSnippet +0 -16
  224. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_acceptance_of.tmSnippet +0 -16
  225. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_numericality_of.tmSnippet +0 -16
  226. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_presence_of.tmSnippet +0 -16
  227. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of with scope.tmSnippet +0 -16
  228. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of.tmSnippet +0 -16
  229. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
  230. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/run_script.rb +0 -104
  231. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
  232. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/test.rb +0 -17
  233. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/todo.txt +0 -13
  234. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/bin/yaml_to_shoulda.rb +0 -25
  235. data/vendor/TextMate/Ruby Shoulda.tmbundle/Syntaxes/Ruby on Rails (Shoulda).tmLanguage +0 -166
  236. data/vendor/TextMate/Ruby Shoulda.tmbundle/info.plist +0 -304
  237. data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +0 -37
  238. data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +0 -52
  239. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
  240. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +0 -118
  241. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
  242. data/vendor/TextMate/Zena.tmbundle/info.plist +0 -17
  243. data/vendor/plugins/selenium-on-rails/CHANGELOG +0 -125
  244. data/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt +0 -202
  245. data/vendor/plugins/selenium-on-rails/README.md +0 -202
  246. data/vendor/plugins/selenium-on-rails/Rakefile +0 -38
  247. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html +0 -265
  248. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html +0 -148
  249. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html +0 -126
  250. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html +0 -231
  251. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html +0 -195
  252. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html +0 -295
  253. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html +0 -219
  254. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html +0 -156
  255. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html +0 -179
  256. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html +0 -223
  257. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html +0 -441
  258. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html +0 -3098
  259. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html +0 -2080
  260. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserAccessors.html +0 -116
  261. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserActions.html +0 -116
  262. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html +0 -150
  263. data/vendor/plugins/selenium-on-rails/doc/files/CHANGELOG.html +0 -422
  264. data/vendor/plugins/selenium-on-rails/doc/files/README.html +0 -321
  265. data/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html +0 -108
  266. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html +0 -101
  267. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html +0 -222
  268. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html +0 -109
  269. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html +0 -111
  270. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html +0 -101
  271. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html +0 -101
  272. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html +0 -118
  273. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html +0 -101
  274. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html +0 -101
  275. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html +0 -114
  276. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html +0 -113
  277. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html +0 -120
  278. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html +0 -108
  279. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html +0 -115
  280. data/vendor/plugins/selenium-on-rails/doc/fr_class_index.html +0 -42
  281. data/vendor/plugins/selenium-on-rails/doc/fr_file_index.html +0 -43
  282. data/vendor/plugins/selenium-on-rails/doc/fr_method_index.html +0 -182
  283. data/vendor/plugins/selenium-on-rails/doc/index.html +0 -24
  284. data/vendor/plugins/selenium-on-rails/doc/rdoc-style.css +0 -208
  285. data/vendor/plugins/selenium-on-rails/generators/selenium/USAGE +0 -19
  286. data/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb +0 -50
  287. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml +0 -16
  288. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml +0 -14
  289. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml +0 -11
  290. data/vendor/plugins/selenium-on-rails/init.rb +0 -15
  291. data/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb +0 -122
  292. data/vendor/plugins/selenium-on-rails/lib/controllers/switch_environment_controller.rb +0 -16
  293. data/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb +0 -8
  294. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb +0 -11
  295. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb +0 -215
  296. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb +0 -57
  297. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb +0 -36
  298. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb +0 -61
  299. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb +0 -20
  300. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb +0 -44
  301. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb +0 -87
  302. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb +0 -56
  303. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb +0 -116
  304. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb +0 -1002
  305. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb +0 -514
  306. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_accessors.rb.example +0 -91
  307. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_actions.rb.example +0 -24
  308. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb +0 -30
  309. data/vendor/plugins/selenium-on-rails/lib/views/layouts/layout.rhtml +0 -18
  310. data/vendor/plugins/selenium-on-rails/lib/views/record.rhtml +0 -5
  311. data/vendor/plugins/selenium-on-rails/lib/views/selenium_helper.rb +0 -9
  312. data/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml +0 -67
  313. data/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml +0 -26
  314. data/vendor/plugins/selenium-on-rails/routes.rb +0 -24
  315. data/vendor/plugins/selenium-on-rails/selenium-core/Blank.html +0 -7
  316. data/vendor/plugins/selenium-on-rails/selenium-core/InjectedRemoteRunner.html +0 -8
  317. data/vendor/plugins/selenium-on-rails/selenium-core/RemoteRunner.html +0 -110
  318. data/vendor/plugins/selenium-on-rails/selenium-core/SeleniumLog.html +0 -109
  319. data/vendor/plugins/selenium-on-rails/selenium-core/TestPrompt.html +0 -145
  320. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner-splash.html +0 -55
  321. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.hta +0 -177
  322. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.html +0 -177
  323. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butmin.gif +0 -0
  324. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butplus.gif +0 -0
  325. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.css +0 -298
  326. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.html +0 -16
  327. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/selenium-domviewer.js +0 -205
  328. data/vendor/plugins/selenium-on-rails/selenium-core/icons/all.png +0 -0
  329. data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue.png +0 -0
  330. data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue_disabled.png +0 -0
  331. data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause.png +0 -0
  332. data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause_disabled.png +0 -0
  333. data/vendor/plugins/selenium-on-rails/selenium-core/icons/selected.png +0 -0
  334. data/vendor/plugins/selenium-on-rails/selenium-core/icons/step.png +0 -0
  335. data/vendor/plugins/selenium-on-rails/selenium-core/icons/step_disabled.png +0 -0
  336. data/vendor/plugins/selenium-on-rails/selenium-core/iedoc-core.xml +0 -1759
  337. data/vendor/plugins/selenium-on-rails/selenium-core/iedoc.xml +0 -1800
  338. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
  339. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
  340. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
  341. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
  342. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
  343. data/vendor/plugins/selenium-on-rails/selenium-core/lib/prototype.js +0 -2006
  344. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/builder.js +0 -101
  345. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/controls.js +0 -815
  346. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
  347. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/effects.js +0 -958
  348. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
  349. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/slider.js +0 -283
  350. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/unittest.js +0 -383
  351. data/vendor/plugins/selenium-on-rails/selenium-core/lib/snapsie.js +0 -91
  352. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/find_matching_child.js +0 -69
  353. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/htmlutils.js +0 -1616
  354. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/injection.html +0 -72
  355. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-api.js +0 -3184
  356. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserbot.js +0 -2300
  357. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserdetect.js +0 -153
  358. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-commandhandlers.js +0 -377
  359. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-executionloop.js +0 -175
  360. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-logging.js +0 -148
  361. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-remoterunner.js +0 -695
  362. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-testrunner.js +0 -1362
  363. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-version.js +0 -5
  364. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-doc.html +0 -803
  365. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-element.js +0 -1537
  366. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-map-sample.js +0 -979
  367. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js +0 -3
  368. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js.sample +0 -75
  369. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/xmlextras.js +0 -153
  370. data/vendor/plugins/selenium-on-rails/selenium-core/selenium-logo.png +0 -0
  371. data/vendor/plugins/selenium-on-rails/selenium-core/selenium-test.css +0 -43
  372. data/vendor/plugins/selenium-on-rails/selenium-core/selenium.css +0 -316
  373. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/dom.js +0 -566
  374. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/javascript-xpath-0.1.11.js +0 -2816
  375. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/util.js +0 -549
  376. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xmltoken.js +0 -149
  377. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xpath.js +0 -2450
  378. data/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake +0 -8
  379. data/vendor/plugins/selenium-on-rails/test/fixtures/config.yml +0 -37
  380. data/vendor/plugins/selenium-on-rails/test/fixtures/selenium.yml +0 -27
  381. data/vendor/plugins/selenium-on-rails/test/paths_test.rb +0 -72
  382. data/vendor/plugins/selenium-on-rails/test/renderer_test.rb +0 -157
  383. data/vendor/plugins/selenium-on-rails/test/rselenese_test.rb +0 -708
  384. data/vendor/plugins/selenium-on-rails/test/selenese_test.rb +0 -242
  385. data/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb +0 -67
  386. data/vendor/plugins/selenium-on-rails/test/selenium_on_rails_config_test.rb +0 -43
  387. data/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb +0 -35
  388. data/vendor/plugins/selenium-on-rails/test/setup_test.rb +0 -31
  389. data/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb +0 -109
  390. data/vendor/plugins/selenium-on-rails/test/switch_environment_controller_test.rb +0 -17
  391. data/vendor/plugins/selenium-on-rails/test/test_builder_functions_authortest.rb +0 -51
  392. data/vendor/plugins/selenium-on-rails/test/test_helper.rb +0 -101
  393. data/vendor/plugins/selenium-on-rails/test_data/_partial.rsel +0 -1
  394. data/vendor/plugins/selenium-on-rails/test_data/own_layout.html +0 -12
  395. data/vendor/plugins/selenium-on-rails/test_data/partials/_html.html +0 -6
  396. data/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel +0 -2
  397. data/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml +0 -6
  398. data/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel +0 -1
  399. data/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel +0 -5
  400. data/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel +0 -5
  401. data/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml +0 -7
  402. data/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel +0 -8
  403. data/vendor/plugins/selenium-on-rails/test_data/selenese.sel +0 -7
  404. data/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel +0 -1
  405. data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel +0 -1
  406. data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel +0 -1
  407. data/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel +0 -1
@@ -1,566 +0,0 @@
1
- // Copyright 2005 Google Inc.
2
- // All Rights Reserved
3
- //
4
- // Author: Steffen Meschkat <mesch@google.com>
5
- //
6
- // An XML parse and a minimal DOM implementation that just supportes
7
- // the subset of the W3C DOM that is used in the XSLT implementation.
8
-
9
- // NOTE: The split() method in IE omits empty result strings. This is
10
- // utterly annoying. So we don't use it here.
11
-
12
- // Resolve entities in XML text fragments. According to the DOM
13
- // specification, the DOM is supposed to resolve entity references at
14
- // the API level. I.e. no entity references are passed through the
15
- // API. See "Entities and the DOM core", p.12, DOM 2 Core
16
- // Spec. However, different browsers actually pass very different
17
- // values at the API. See <http://mesch.nyc/test-xml-quote>.
18
- function xmlResolveEntities(s) {
19
-
20
- var parts = stringSplit(s, '&');
21
-
22
- var ret = parts[0];
23
- for (var i = 1; i < parts.length; ++i) {
24
- var rp = parts[i].indexOf(';');
25
- if (rp == -1) {
26
- // no entity reference: just a & but no ;
27
- ret += parts[i];
28
- continue;
29
- }
30
-
31
- var entityName = parts[i].substring(0, rp);
32
- var remainderText = parts[i].substring(rp + 1);
33
-
34
- var ch;
35
- switch (entityName) {
36
- case 'lt':
37
- ch = '<';
38
- break;
39
- case 'gt':
40
- ch = '>';
41
- break;
42
- case 'amp':
43
- ch = '&';
44
- break;
45
- case 'quot':
46
- ch = '"';
47
- break;
48
- case 'apos':
49
- ch = '\'';
50
- break;
51
- case 'nbsp':
52
- ch = String.fromCharCode(160);
53
- break;
54
- default:
55
- // Cool trick: let the DOM do the entity decoding. We assign
56
- // the entity text through non-W3C DOM properties and read it
57
- // through the W3C DOM. W3C DOM access is specified to resolve
58
- // entities.
59
- var span = domCreateElement(window.document, 'span');
60
- span.innerHTML = '&' + entityName + '; ';
61
- ch = span.childNodes[0].nodeValue.charAt(0);
62
- }
63
- ret += ch + remainderText;
64
- }
65
-
66
- return ret;
67
- }
68
-
69
- var XML10_TAGNAME_REGEXP = new RegExp('^(' + XML10_NAME + ')');
70
- var XML10_ATTRIBUTE_REGEXP = new RegExp(XML10_ATTRIBUTE, 'g');
71
-
72
- var XML11_TAGNAME_REGEXP = new RegExp('^(' + XML11_NAME + ')');
73
- var XML11_ATTRIBUTE_REGEXP = new RegExp(XML11_ATTRIBUTE, 'g');
74
-
75
- // Parses the given XML string with our custom, JavaScript XML parser. Written
76
- // by Steffen Meschkat (mesch@google.com).
77
- function xmlParse(xml) {
78
- var regex_empty = /\/$/;
79
-
80
- var regex_tagname;
81
- var regex_attribute;
82
- if (xml.match(/^<\?xml/)) {
83
- // When an XML document begins with an XML declaration
84
- // VersionInfo must appear.
85
- if (xml.search(new RegExp(XML10_VERSION_INFO)) == 5) {
86
- regex_tagname = XML10_TAGNAME_REGEXP;
87
- regex_attribute = XML10_ATTRIBUTE_REGEXP;
88
- } else if (xml.search(new RegExp(XML11_VERSION_INFO)) == 5) {
89
- regex_tagname = XML11_TAGNAME_REGEXP;
90
- regex_attribute = XML11_ATTRIBUTE_REGEXP;
91
- } else {
92
- // VersionInfo is missing, or unknown version number.
93
- // TODO : Fallback to XML 1.0 or XML 1.1, or just return null?
94
- alert('VersionInfo is missing, or unknown version number.');
95
- }
96
- } else {
97
- // When an XML declaration is missing it's an XML 1.0 document.
98
- regex_tagname = XML10_TAGNAME_REGEXP;
99
- regex_attribute = XML10_ATTRIBUTE_REGEXP;
100
- }
101
-
102
- var xmldoc = new XDocument();
103
- var root = xmldoc;
104
-
105
- // For the record: in Safari, we would create native DOM nodes, but
106
- // in Opera that is not possible, because the DOM only allows HTML
107
- // element nodes to be created, so we have to do our own DOM nodes.
108
-
109
- // xmldoc = document.implementation.createDocument('','',null);
110
- // root = xmldoc; // .createDocumentFragment();
111
- // NOTE(mesch): using the DocumentFragment instead of the Document
112
- // crashes my Safari 1.2.4 (v125.12).
113
- var stack = [];
114
-
115
- var parent = root;
116
- stack.push(parent);
117
-
118
- // The token that delimits a section that contains markup as
119
- // content: CDATA or comments.
120
- var slurp = '';
121
-
122
- var x = stringSplit(xml, '<');
123
- for (var i = 1; i < x.length; ++i) {
124
- var xx = stringSplit(x[i], '>');
125
- var tag = xx[0];
126
- var text = xmlResolveEntities(xx[1] || '');
127
-
128
- if (slurp) {
129
- // In a "slurp" section (CDATA or comment): only check for the
130
- // end of the section, otherwise append the whole text.
131
- var end = x[i].indexOf(slurp);
132
- if (end != -1) {
133
- var data = x[i].substring(0, end);
134
- parent.nodeValue += '<' + data;
135
- stack.pop();
136
- parent = stack[stack.length-1];
137
- text = x[i].substring(end + slurp.length);
138
- slurp = '';
139
- } else {
140
- parent.nodeValue += '<' + x[i];
141
- text = null;
142
- }
143
-
144
- } else if (tag.indexOf('![CDATA[') == 0) {
145
- var start = '![CDATA['.length;
146
- var end = x[i].indexOf(']]>');
147
- if (end != -1) {
148
- var data = x[i].substring(start, end);
149
- var node = domCreateCDATASection(xmldoc, data);
150
- domAppendChild(parent, node);
151
- } else {
152
- var data = x[i].substring(start);
153
- text = null;
154
- var node = domCreateCDATASection(xmldoc, data);
155
- domAppendChild(parent, node);
156
- parent = node;
157
- stack.push(node);
158
- slurp = ']]>';
159
- }
160
-
161
- } else if (tag.indexOf('!--') == 0) {
162
- var start = '!--'.length;
163
- var end = x[i].indexOf('-->');
164
- if (end != -1) {
165
- var data = x[i].substring(start, end);
166
- var node = domCreateComment(xmldoc, data);
167
- domAppendChild(parent, node);
168
- } else {
169
- var data = x[i].substring(start);
170
- text = null;
171
- var node = domCreateComment(xmldoc, data);
172
- domAppendChild(parent, node);
173
- parent = node;
174
- stack.push(node);
175
- slurp = '-->';
176
- }
177
-
178
- } else if (tag.charAt(0) == '/') {
179
- stack.pop();
180
- parent = stack[stack.length-1];
181
-
182
- } else if (tag.charAt(0) == '?') {
183
- // Ignore XML declaration and processing instructions
184
- } else if (tag.charAt(0) == '!') {
185
- // Ignore notation and comments
186
- } else {
187
- var empty = tag.match(regex_empty);
188
- var tagname = regex_tagname.exec(tag)[1];
189
- var node = domCreateElement(xmldoc, tagname);
190
-
191
- var att;
192
- while (att = regex_attribute.exec(tag)) {
193
- var val = xmlResolveEntities(att[5] || att[7] || '');
194
- domSetAttribute(node, att[1], val);
195
- }
196
-
197
- domAppendChild(parent, node);
198
- if (!empty) {
199
- parent = node;
200
- stack.push(node);
201
- }
202
- }
203
-
204
- if (text && parent != root) {
205
- domAppendChild(parent, domCreateTextNode(xmldoc, text));
206
- }
207
- }
208
-
209
- return root;
210
- }
211
-
212
- // Based on <http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/
213
- // core.html#ID-1950641247>
214
- var DOM_ELEMENT_NODE = 1;
215
- var DOM_ATTRIBUTE_NODE = 2;
216
- var DOM_TEXT_NODE = 3;
217
- var DOM_CDATA_SECTION_NODE = 4;
218
- var DOM_ENTITY_REFERENCE_NODE = 5;
219
- var DOM_ENTITY_NODE = 6;
220
- var DOM_PROCESSING_INSTRUCTION_NODE = 7;
221
- var DOM_COMMENT_NODE = 8;
222
- var DOM_DOCUMENT_NODE = 9;
223
- var DOM_DOCUMENT_TYPE_NODE = 10;
224
- var DOM_DOCUMENT_FRAGMENT_NODE = 11;
225
- var DOM_NOTATION_NODE = 12;
226
-
227
- // Traverses the element nodes in the DOM section underneath the given
228
- // node and invokes the given callbacks as methods on every element
229
- // node encountered. Function opt_pre is invoked before a node's
230
- // children are traversed; opt_post is invoked after they are
231
- // traversed. Traversal will not be continued if a callback function
232
- // returns boolean false. NOTE(mesch): copied from
233
- // <//google3/maps/webmaps/javascript/dom.js>.
234
- function domTraverseElements(node, opt_pre, opt_post) {
235
- var ret;
236
- if (opt_pre) {
237
- ret = opt_pre.call(null, node);
238
- if (typeof ret == 'boolean' && !ret) {
239
- return false;
240
- }
241
- }
242
-
243
- for (var c = node.firstChild; c; c = c.nextSibling) {
244
- if (c.nodeType == DOM_ELEMENT_NODE) {
245
- ret = arguments.callee.call(this, c, opt_pre, opt_post);
246
- if (typeof ret == 'boolean' && !ret) {
247
- return false;
248
- }
249
- }
250
- }
251
-
252
- if (opt_post) {
253
- ret = opt_post.call(null, node);
254
- if (typeof ret == 'boolean' && !ret) {
255
- return false;
256
- }
257
- }
258
- }
259
-
260
- // Our W3C DOM Node implementation. Note we call it XNode because we
261
- // can't define the identifier Node. We do this mostly for Opera,
262
- // where we can't reuse the HTML DOM for parsing our own XML, and for
263
- // Safari, where it is too expensive to have the template processor
264
- // operate on native DOM nodes.
265
- function XNode(type, name, opt_value, opt_owner) {
266
- this.attributes = [];
267
- this.childNodes = [];
268
-
269
- XNode.init.call(this, type, name, opt_value, opt_owner);
270
- }
271
-
272
- // Don't call as method, use apply() or call().
273
- XNode.init = function(type, name, value, owner) {
274
- this.nodeType = type - 0;
275
- this.nodeName = '' + name;
276
- this.nodeValue = '' + value;
277
- this.ownerDocument = owner;
278
-
279
- this.firstChild = null;
280
- this.lastChild = null;
281
- this.nextSibling = null;
282
- this.previousSibling = null;
283
- this.parentNode = null;
284
- }
285
-
286
- XNode.unused_ = [];
287
-
288
- XNode.recycle = function(node) {
289
- if (!node) {
290
- return;
291
- }
292
-
293
- if (node.constructor == XDocument) {
294
- XNode.recycle(node.documentElement);
295
- return;
296
- }
297
-
298
- if (node.constructor != this) {
299
- return;
300
- }
301
-
302
- XNode.unused_.push(node);
303
- for (var a = 0; a < node.attributes.length; ++a) {
304
- XNode.recycle(node.attributes[a]);
305
- }
306
- for (var c = 0; c < node.childNodes.length; ++c) {
307
- XNode.recycle(node.childNodes[c]);
308
- }
309
- node.attributes.length = 0;
310
- node.childNodes.length = 0;
311
- XNode.init.call(node, 0, '', '', null);
312
- }
313
-
314
- XNode.create = function(type, name, value, owner) {
315
- if (XNode.unused_.length > 0) {
316
- var node = XNode.unused_.pop();
317
- XNode.init.call(node, type, name, value, owner);
318
- return node;
319
- } else {
320
- return new XNode(type, name, value, owner);
321
- }
322
- }
323
-
324
- XNode.prototype.appendChild = function(node) {
325
- // firstChild
326
- if (this.childNodes.length == 0) {
327
- this.firstChild = node;
328
- }
329
-
330
- // previousSibling
331
- node.previousSibling = this.lastChild;
332
-
333
- // nextSibling
334
- node.nextSibling = null;
335
- if (this.lastChild) {
336
- this.lastChild.nextSibling = node;
337
- }
338
-
339
- // parentNode
340
- node.parentNode = this;
341
-
342
- // lastChild
343
- this.lastChild = node;
344
-
345
- // childNodes
346
- this.childNodes.push(node);
347
- }
348
-
349
-
350
- XNode.prototype.replaceChild = function(newNode, oldNode) {
351
- if (oldNode == newNode) {
352
- return;
353
- }
354
-
355
- for (var i = 0; i < this.childNodes.length; ++i) {
356
- if (this.childNodes[i] == oldNode) {
357
- this.childNodes[i] = newNode;
358
-
359
- var p = oldNode.parentNode;
360
- oldNode.parentNode = null;
361
- newNode.parentNode = p;
362
-
363
- p = oldNode.previousSibling;
364
- oldNode.previousSibling = null;
365
- newNode.previousSibling = p;
366
- if (newNode.previousSibling) {
367
- newNode.previousSibling.nextSibling = newNode;
368
- }
369
-
370
- p = oldNode.nextSibling;
371
- oldNode.nextSibling = null;
372
- newNode.nextSibling = p;
373
- if (newNode.nextSibling) {
374
- newNode.nextSibling.previousSibling = newNode;
375
- }
376
-
377
- if (this.firstChild == oldNode) {
378
- this.firstChild = newNode;
379
- }
380
-
381
- if (this.lastChild == oldNode) {
382
- this.lastChild = newNode;
383
- }
384
-
385
- break;
386
- }
387
- }
388
- }
389
-
390
-
391
- XNode.prototype.insertBefore = function(newNode, oldNode) {
392
- if (oldNode == newNode) {
393
- return;
394
- }
395
-
396
- if (oldNode.parentNode != this) {
397
- return;
398
- }
399
-
400
- if (newNode.parentNode) {
401
- newNode.parentNode.removeChild(newNode);
402
- }
403
-
404
- var newChildren = [];
405
- for (var i = 0; i < this.childNodes.length; ++i) {
406
- var c = this.childNodes[i];
407
- if (c == oldNode) {
408
- newChildren.push(newNode);
409
-
410
- newNode.parentNode = this;
411
-
412
- newNode.previousSibling = oldNode.previousSibling;
413
- oldNode.previousSibling = newNode;
414
- if (newNode.previousSibling) {
415
- newNode.previousSibling.nextSibling = newNode;
416
- }
417
-
418
- newNode.nextSibling = oldNode;
419
-
420
- if (this.firstChild == oldNode) {
421
- this.firstChild = newNode;
422
- }
423
- }
424
- newChildren.push(c);
425
- }
426
- this.childNodes = newChildren;
427
- }
428
-
429
-
430
- XNode.prototype.removeChild = function(node) {
431
- var newChildren = [];
432
- for (var i = 0; i < this.childNodes.length; ++i) {
433
- var c = this.childNodes[i];
434
- if (c != node) {
435
- newChildren.push(c);
436
- } else {
437
- if (c.previousSibling) {
438
- c.previousSibling.nextSibling = c.nextSibling;
439
- }
440
- if (c.nextSibling) {
441
- c.nextSibling.previousSibling = c.previousSibling;
442
- }
443
- if (this.firstChild == c) {
444
- this.firstChild = c.nextSibling;
445
- }
446
- if (this.lastChild == c) {
447
- this.lastChild = c.previousSibling;
448
- }
449
- }
450
- }
451
- this.childNodes = newChildren;
452
- }
453
-
454
-
455
- XNode.prototype.hasAttributes = function() {
456
- return this.attributes.length > 0;
457
- }
458
-
459
-
460
- XNode.prototype.setAttribute = function(name, value) {
461
- for (var i = 0; i < this.attributes.length; ++i) {
462
- if (this.attributes[i].nodeName == name) {
463
- this.attributes[i].nodeValue = '' + value;
464
- return;
465
- }
466
- }
467
- this.attributes.push(XNode.create(DOM_ATTRIBUTE_NODE, name, value, this));
468
- }
469
-
470
-
471
- XNode.prototype.getAttribute = function(name) {
472
- for (var i = 0; i < this.attributes.length; ++i) {
473
- if (this.attributes[i].nodeName == name) {
474
- return this.attributes[i].nodeValue;
475
- }
476
- }
477
- return null;
478
- }
479
-
480
-
481
- XNode.prototype.removeAttribute = function(name) {
482
- var a = [];
483
- for (var i = 0; i < this.attributes.length; ++i) {
484
- if (this.attributes[i].nodeName != name) {
485
- a.push(this.attributes[i]);
486
- }
487
- }
488
- this.attributes = a;
489
- }
490
-
491
-
492
- XNode.prototype.getElementsByTagName = function(name) {
493
- var ret = [];
494
- var self = this;
495
- if ("*" == name) {
496
- domTraverseElements(this, function(node) {
497
- if (self == node) return;
498
- ret.push(node);
499
- }, null);
500
- } else {
501
- domTraverseElements(this, function(node) {
502
- if (self == node) return;
503
- if (node.nodeName == name) {
504
- ret.push(node);
505
- }
506
- }, null);
507
- }
508
- return ret;
509
- }
510
-
511
-
512
- XNode.prototype.getElementById = function(id) {
513
- var ret = null;
514
- domTraverseElements(this, function(node) {
515
- if (node.getAttribute('id') == id) {
516
- ret = node;
517
- return false;
518
- }
519
- }, null);
520
- return ret;
521
- }
522
-
523
-
524
- function XDocument() {
525
- // NOTE(mesch): Acocording to the DOM Spec, ownerDocument of a
526
- // document node is null.
527
- XNode.call(this, DOM_DOCUMENT_NODE, '#document', null, null);
528
- this.documentElement = null;
529
- }
530
-
531
- XDocument.prototype = new XNode(DOM_DOCUMENT_NODE, '#document');
532
-
533
- XDocument.prototype.clear = function() {
534
- XNode.recycle(this.documentElement);
535
- this.documentElement = null;
536
- }
537
-
538
- XDocument.prototype.appendChild = function(node) {
539
- XNode.prototype.appendChild.call(this, node);
540
- this.documentElement = this.childNodes[0];
541
- }
542
-
543
- XDocument.prototype.createElement = function(name) {
544
- return XNode.create(DOM_ELEMENT_NODE, name, null, this);
545
- }
546
-
547
- XDocument.prototype.createDocumentFragment = function() {
548
- return XNode.create(DOM_DOCUMENT_FRAGMENT_NODE, '#document-fragment',
549
- null, this);
550
- }
551
-
552
- XDocument.prototype.createTextNode = function(value) {
553
- return XNode.create(DOM_TEXT_NODE, '#text', value, this);
554
- }
555
-
556
- XDocument.prototype.createAttribute = function(name) {
557
- return XNode.create(DOM_ATTRIBUTE_NODE, name, null, this);
558
- }
559
-
560
- XDocument.prototype.createComment = function(data) {
561
- return XNode.create(DOM_COMMENT_NODE, '#comment', data, this);
562
- }
563
-
564
- XDocument.prototype.createCDATASection = function(data) {
565
- return XNode.create(DOM_CDATA_SECTION_NODE, '#cdata-section', data, this);
566
- }