zena 1.2.7 → 1.2.8

Sign up to get free protection for your applications and to get access to all the features.
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,47 +0,0 @@
1
- // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining
4
- // a copy of this software and associated documentation files (the
5
- // "Software"), to deal in the Software without restriction, including
6
- // without limitation the rights to use, copy, modify, merge, publish,
7
- // distribute, sublicense, and/or sell copies of the Software, and to
8
- // permit persons to whom the Software is furnished to do so, subject to
9
- // the following conditions:
10
- //
11
- // The above copyright notice and this permission notice shall be
12
- // included in all copies or substantial portions of the Software.
13
- //
14
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
-
22
- var Scriptaculous = {
23
- Version: '1.6.1',
24
- require: function(libraryName) {
25
- // inserting via DOM fails in Safari 2.0, so brute force approach
26
- document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
27
- },
28
- load: function() {
29
- if((typeof Prototype=='undefined') ||
30
- (typeof Element == 'undefined') ||
31
- (typeof Element.Methods=='undefined') ||
32
- parseFloat(Prototype.Version.split(".")[0] + "." +
33
- Prototype.Version.split(".")[1]) < 1.5)
34
- throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");
35
-
36
- $A(document.getElementsByTagName("script")).findAll( function(s) {
37
- return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
38
- }).each( function(s) {
39
- var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
40
- var includes = s.src.match(/\?.*load=([a-z,]*)/);
41
- (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each(
42
- function(include) { Scriptaculous.require(path+include+'.js') });
43
- });
44
- }
45
- }
46
-
47
- Scriptaculous.load();
@@ -1,283 +0,0 @@
1
- // Copyright (c) 2005 Marty Haught, Thomas Fuchs
2
- //
3
- // See http://script.aculo.us for more info
4
- //
5
- // Permission is hereby granted, free of charge, to any person obtaining
6
- // a copy of this software and associated documentation files (the
7
- // "Software"), to deal in the Software without restriction, including
8
- // without limitation the rights to use, copy, modify, merge, publish,
9
- // distribute, sublicense, and/or sell copies of the Software, and to
10
- // permit persons to whom the Software is furnished to do so, subject to
11
- // the following conditions:
12
- //
13
- // The above copyright notice and this permission notice shall be
14
- // included in all copies or substantial portions of the Software.
15
- //
16
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- if(!Control) var Control = {};
25
- Control.Slider = Class.create();
26
-
27
- // options:
28
- // axis: 'vertical', or 'horizontal' (default)
29
- //
30
- // callbacks:
31
- // onChange(value)
32
- // onSlide(value)
33
- Control.Slider.prototype = {
34
- initialize: function(handle, track, options) {
35
- var slider = this;
36
-
37
- if(handle instanceof Array) {
38
- this.handles = handle.collect( function(e) { return $(e) });
39
- } else {
40
- this.handles = [$(handle)];
41
- }
42
-
43
- this.track = $(track);
44
- this.options = options || {};
45
-
46
- this.axis = this.options.axis || 'horizontal';
47
- this.increment = this.options.increment || 1;
48
- this.step = parseInt(this.options.step || '1');
49
- this.range = this.options.range || $R(0,1);
50
-
51
- this.value = 0; // assure backwards compat
52
- this.values = this.handles.map( function() { return 0 });
53
- this.spans = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
54
- this.options.startSpan = $(this.options.startSpan || null);
55
- this.options.endSpan = $(this.options.endSpan || null);
56
-
57
- this.restricted = this.options.restricted || false;
58
-
59
- this.maximum = this.options.maximum || this.range.end;
60
- this.minimum = this.options.minimum || this.range.start;
61
-
62
- // Will be used to align the handle onto the track, if necessary
63
- this.alignX = parseInt(this.options.alignX || '0');
64
- this.alignY = parseInt(this.options.alignY || '0');
65
-
66
- this.trackLength = this.maximumOffset() - this.minimumOffset();
67
- this.handleLength = this.isVertical() ? this.handles[0].offsetHeight : this.handles[0].offsetWidth;
68
-
69
- this.active = false;
70
- this.dragging = false;
71
- this.disabled = false;
72
-
73
- if(this.options.disabled) this.setDisabled();
74
-
75
- // Allowed values array
76
- this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
77
- if(this.allowedValues) {
78
- this.minimum = this.allowedValues.min();
79
- this.maximum = this.allowedValues.max();
80
- }
81
-
82
- this.eventMouseDown = this.startDrag.bindAsEventListener(this);
83
- this.eventMouseUp = this.endDrag.bindAsEventListener(this);
84
- this.eventMouseMove = this.update.bindAsEventListener(this);
85
-
86
- // Initialize handles in reverse (make sure first handle is active)
87
- this.handles.each( function(h,i) {
88
- i = slider.handles.length-1-i;
89
- slider.setValue(parseFloat(
90
- (slider.options.sliderValue instanceof Array ?
91
- slider.options.sliderValue[i] : slider.options.sliderValue) ||
92
- slider.range.start), i);
93
- Element.makePositioned(h); // fix IE
94
- Event.observe(h, "mousedown", slider.eventMouseDown);
95
- });
96
-
97
- Event.observe(this.track, "mousedown", this.eventMouseDown);
98
- Event.observe(document, "mouseup", this.eventMouseUp);
99
- Event.observe(document, "mousemove", this.eventMouseMove);
100
-
101
- this.initialized = true;
102
- },
103
- dispose: function() {
104
- var slider = this;
105
- Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
106
- Event.stopObserving(document, "mouseup", this.eventMouseUp);
107
- Event.stopObserving(document, "mousemove", this.eventMouseMove);
108
- this.handles.each( function(h) {
109
- Event.stopObserving(h, "mousedown", slider.eventMouseDown);
110
- });
111
- },
112
- setDisabled: function(){
113
- this.disabled = true;
114
- },
115
- setEnabled: function(){
116
- this.disabled = false;
117
- },
118
- getNearestValue: function(value){
119
- if(this.allowedValues){
120
- if(value >= this.allowedValues.max()) return(this.allowedValues.max());
121
- if(value <= this.allowedValues.min()) return(this.allowedValues.min());
122
-
123
- var offset = Math.abs(this.allowedValues[0] - value);
124
- var newValue = this.allowedValues[0];
125
- this.allowedValues.each( function(v) {
126
- var currentOffset = Math.abs(v - value);
127
- if(currentOffset <= offset){
128
- newValue = v;
129
- offset = currentOffset;
130
- }
131
- });
132
- return newValue;
133
- }
134
- if(value > this.range.end) return this.range.end;
135
- if(value < this.range.start) return this.range.start;
136
- return value;
137
- },
138
- setValue: function(sliderValue, handleIdx){
139
- if(!this.active) {
140
- this.activeHandle = this.handles[handleIdx];
141
- this.activeHandleIdx = handleIdx;
142
- this.updateStyles();
143
- }
144
- handleIdx = handleIdx || this.activeHandleIdx || 0;
145
- if(this.initialized && this.restricted) {
146
- if((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
147
- sliderValue = this.values[handleIdx-1];
148
- if((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
149
- sliderValue = this.values[handleIdx+1];
150
- }
151
- sliderValue = this.getNearestValue(sliderValue);
152
- this.values[handleIdx] = sliderValue;
153
- this.value = this.values[0]; // assure backwards compat
154
-
155
- this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =
156
- this.translateToPx(sliderValue);
157
-
158
- this.drawSpans();
159
- if(!this.dragging || !this.event) this.updateFinished();
160
- },
161
- setValueBy: function(delta, handleIdx) {
162
- this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta,
163
- handleIdx || this.activeHandleIdx || 0);
164
- },
165
- translateToPx: function(value) {
166
- return Math.round(
167
- ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *
168
- (value - this.range.start)) + "px";
169
- },
170
- translateToValue: function(offset) {
171
- return ((offset/(this.trackLength-this.handleLength) *
172
- (this.range.end-this.range.start)) + this.range.start);
173
- },
174
- getRange: function(range) {
175
- var v = this.values.sortBy(Prototype.K);
176
- range = range || 0;
177
- return $R(v[range],v[range+1]);
178
- },
179
- minimumOffset: function(){
180
- return(this.isVertical() ? this.alignY : this.alignX);
181
- },
182
- maximumOffset: function(){
183
- return(this.isVertical() ?
184
- this.track.offsetHeight - this.alignY : this.track.offsetWidth - this.alignX);
185
- },
186
- isVertical: function(){
187
- return (this.axis == 'vertical');
188
- },
189
- drawSpans: function() {
190
- var slider = this;
191
- if(this.spans)
192
- $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
193
- if(this.options.startSpan)
194
- this.setSpan(this.options.startSpan,
195
- $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
196
- if(this.options.endSpan)
197
- this.setSpan(this.options.endSpan,
198
- $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
199
- },
200
- setSpan: function(span, range) {
201
- if(this.isVertical()) {
202
- span.style.top = this.translateToPx(range.start);
203
- span.style.height = this.translateToPx(range.end - range.start + this.range.start);
204
- } else {
205
- span.style.left = this.translateToPx(range.start);
206
- span.style.width = this.translateToPx(range.end - range.start + this.range.start);
207
- }
208
- },
209
- updateStyles: function() {
210
- this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
211
- Element.addClassName(this.activeHandle, 'selected');
212
- },
213
- startDrag: function(event) {
214
- if(Event.isLeftClick(event)) {
215
- if(!this.disabled){
216
- this.active = true;
217
-
218
- var handle = Event.element(event);
219
- var pointer = [Event.pointerX(event), Event.pointerY(event)];
220
- if(handle==this.track) {
221
- var offsets = Position.cumulativeOffset(this.track);
222
- this.event = event;
223
- this.setValue(this.translateToValue(
224
- (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
225
- ));
226
- var offsets = Position.cumulativeOffset(this.activeHandle);
227
- this.offsetX = (pointer[0] - offsets[0]);
228
- this.offsetY = (pointer[1] - offsets[1]);
229
- } else {
230
- // find the handle (prevents issues with Safari)
231
- while((this.handles.indexOf(handle) == -1) && handle.parentNode)
232
- handle = handle.parentNode;
233
-
234
- this.activeHandle = handle;
235
- this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
236
- this.updateStyles();
237
-
238
- var offsets = Position.cumulativeOffset(this.activeHandle);
239
- this.offsetX = (pointer[0] - offsets[0]);
240
- this.offsetY = (pointer[1] - offsets[1]);
241
- }
242
- }
243
- Event.stop(event);
244
- }
245
- },
246
- update: function(event) {
247
- if(this.active) {
248
- if(!this.dragging) this.dragging = true;
249
- this.draw(event);
250
- // fix AppleWebKit rendering
251
- if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
252
- Event.stop(event);
253
- }
254
- },
255
- draw: function(event) {
256
- var pointer = [Event.pointerX(event), Event.pointerY(event)];
257
- var offsets = Position.cumulativeOffset(this.track);
258
- pointer[0] -= this.offsetX + offsets[0];
259
- pointer[1] -= this.offsetY + offsets[1];
260
- this.event = event;
261
- this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
262
- if(this.initialized && this.options.onSlide)
263
- this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
264
- },
265
- endDrag: function(event) {
266
- if(this.active && this.dragging) {
267
- this.finishDrag(event, true);
268
- Event.stop(event);
269
- }
270
- this.active = false;
271
- this.dragging = false;
272
- },
273
- finishDrag: function(event, success) {
274
- this.active = false;
275
- this.dragging = false;
276
- this.updateFinished();
277
- },
278
- updateFinished: function() {
279
- if(this.initialized && this.options.onChange)
280
- this.options.onChange(this.values.length>1 ? this.values : this.value, this);
281
- this.event = null;
282
- }
283
- }
@@ -1,383 +0,0 @@
1
- // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2
- // (c) 2005 Jon Tirsen (http://www.tirsen.com)
3
- // (c) 2005 Michael Schuerig (http://www.schuerig.de/michael/)
4
- //
5
- // Permission is hereby granted, free of charge, to any person obtaining
6
- // a copy of this software and associated documentation files (the
7
- // "Software"), to deal in the Software without restriction, including
8
- // without limitation the rights to use, copy, modify, merge, publish,
9
- // distribute, sublicense, and/or sell copies of the Software, and to
10
- // permit persons to whom the Software is furnished to do so, subject to
11
- // the following conditions:
12
- //
13
- // The above copyright notice and this permission notice shall be
14
- // included in all copies or substantial portions of the Software.
15
- //
16
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
-
25
- // experimental, Firefox-only
26
- Event.simulateMouse = function(element, eventName) {
27
- var options = Object.extend({
28
- pointerX: 0,
29
- pointerY: 0,
30
- buttons: 0
31
- }, arguments[2] || {});
32
- var oEvent = document.createEvent("MouseEvents");
33
- oEvent.initMouseEvent(eventName, true, true, document.defaultView,
34
- options.buttons, options.pointerX, options.pointerY, options.pointerX, options.pointerY,
35
- false, false, false, false, 0, $(element));
36
-
37
- if(this.mark) Element.remove(this.mark);
38
- this.mark = document.createElement('div');
39
- this.mark.appendChild(document.createTextNode(" "));
40
- document.body.appendChild(this.mark);
41
- this.mark.style.position = 'absolute';
42
- this.mark.style.top = options.pointerY + "px";
43
- this.mark.style.left = options.pointerX + "px";
44
- this.mark.style.width = "5px";
45
- this.mark.style.height = "5px;";
46
- this.mark.style.borderTop = "1px solid red;"
47
- this.mark.style.borderLeft = "1px solid red;"
48
-
49
- if(this.step)
50
- alert('['+new Date().getTime().toString()+'] '+eventName+'/'+Test.Unit.inspect(options));
51
-
52
- $(element).dispatchEvent(oEvent);
53
- };
54
-
55
- // Note: Due to a fix in Firefox 1.0.5/6 that probably fixed "too much", this doesn't work in 1.0.6 or DP2.
56
- // You need to downgrade to 1.0.4 for now to get this working
57
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=289940 for the fix that fixed too much
58
- Event.simulateKey = function(element, eventName) {
59
- var options = Object.extend({
60
- ctrlKey: false,
61
- altKey: false,
62
- shiftKey: false,
63
- metaKey: false,
64
- keyCode: 0,
65
- charCode: 0
66
- }, arguments[2] || {});
67
-
68
- var oEvent = document.createEvent("KeyEvents");
69
- oEvent.initKeyEvent(eventName, true, true, window,
70
- options.ctrlKey, options.altKey, options.shiftKey, options.metaKey,
71
- options.keyCode, options.charCode );
72
- $(element).dispatchEvent(oEvent);
73
- };
74
-
75
- Event.simulateKeys = function(element, command) {
76
- for(var i=0; i<command.length; i++) {
77
- Event.simulateKey(element,'keypress',{charCode:command.charCodeAt(i)});
78
- }
79
- };
80
-
81
- var Test = {}
82
- Test.Unit = {};
83
-
84
- // security exception workaround
85
- Test.Unit.inspect = Object.inspect;
86
-
87
- Test.Unit.Logger = Class.create();
88
- Test.Unit.Logger.prototype = {
89
- initialize: function(log) {
90
- this.log = $(log);
91
- if (this.log) {
92
- this._createLogTable();
93
- }
94
- },
95
- start: function(testName) {
96
- if (!this.log) return;
97
- this.testName = testName;
98
- this.lastLogLine = document.createElement('tr');
99
- this.statusCell = document.createElement('td');
100
- this.nameCell = document.createElement('td');
101
- this.nameCell.appendChild(document.createTextNode(testName));
102
- this.messageCell = document.createElement('td');
103
- this.lastLogLine.appendChild(this.statusCell);
104
- this.lastLogLine.appendChild(this.nameCell);
105
- this.lastLogLine.appendChild(this.messageCell);
106
- this.loglines.appendChild(this.lastLogLine);
107
- },
108
- finish: function(status, summary) {
109
- if (!this.log) return;
110
- this.lastLogLine.className = status;
111
- this.statusCell.innerHTML = status;
112
- this.messageCell.innerHTML = this._toHTML(summary);
113
- },
114
- message: function(message) {
115
- if (!this.log) return;
116
- this.messageCell.innerHTML = this._toHTML(message);
117
- },
118
- summary: function(summary) {
119
- if (!this.log) return;
120
- this.logsummary.innerHTML = this._toHTML(summary);
121
- },
122
- _createLogTable: function() {
123
- this.log.innerHTML =
124
- '<div id="logsummary"></div>' +
125
- '<table id="logtable">' +
126
- '<thead><tr><th>Status</th><th>Test</th><th>Message</th></tr></thead>' +
127
- '<tbody id="loglines"></tbody>' +
128
- '</table>';
129
- this.logsummary = $('logsummary')
130
- this.loglines = $('loglines');
131
- },
132
- _toHTML: function(txt) {
133
- return txt.escapeHTML().replace(/\n/g,"<br/>");
134
- }
135
- }
136
-
137
- Test.Unit.Runner = Class.create();
138
- Test.Unit.Runner.prototype = {
139
- initialize: function(testcases) {
140
- this.options = Object.extend({
141
- testLog: 'testlog'
142
- }, arguments[1] || {});
143
- this.options.resultsURL = this.parseResultsURLQueryParameter();
144
- if (this.options.testLog) {
145
- this.options.testLog = $(this.options.testLog) || null;
146
- }
147
- if(this.options.tests) {
148
- this.tests = [];
149
- for(var i = 0; i < this.options.tests.length; i++) {
150
- if(/^test/.test(this.options.tests[i])) {
151
- this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"]));
152
- }
153
- }
154
- } else {
155
- if (this.options.test) {
156
- this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])];
157
- } else {
158
- this.tests = [];
159
- for(var testcase in testcases) {
160
- if(/^test/.test(testcase)) {
161
- this.tests.push(new Test.Unit.Testcase(testcase, testcases[testcase], testcases["setup"], testcases["teardown"]));
162
- }
163
- }
164
- }
165
- }
166
- this.currentTest = 0;
167
- this.logger = new Test.Unit.Logger(this.options.testLog);
168
- setTimeout(this.runTests.bind(this), 1000);
169
- },
170
- parseResultsURLQueryParameter: function() {
171
- return window.location.search.parseQuery()["resultsURL"];
172
- },
173
- // Returns:
174
- // "ERROR" if there was an error,
175
- // "FAILURE" if there was a failure, or
176
- // "SUCCESS" if there was neither
177
- getResult: function() {
178
- var hasFailure = false;
179
- for(var i=0;i<this.tests.length;i++) {
180
- if (this.tests[i].errors > 0) {
181
- return "ERROR";
182
- }
183
- if (this.tests[i].failures > 0) {
184
- hasFailure = true;
185
- }
186
- }
187
- if (hasFailure) {
188
- return "FAILURE";
189
- } else {
190
- return "SUCCESS";
191
- }
192
- },
193
- postResults: function() {
194
- if (this.options.resultsURL) {
195
- new Ajax.Request(this.options.resultsURL,
196
- { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false });
197
- }
198
- },
199
- runTests: function() {
200
- var test = this.tests[this.currentTest];
201
- if (!test) {
202
- // finished!
203
- this.postResults();
204
- this.logger.summary(this.summary());
205
- return;
206
- }
207
- if(!test.isWaiting) {
208
- this.logger.start(test.name);
209
- }
210
- test.run();
211
- if(test.isWaiting) {
212
- this.logger.message("Waiting for " + test.timeToWait + "ms");
213
- setTimeout(this.runTests.bind(this), test.timeToWait || 1000);
214
- } else {
215
- this.logger.finish(test.status(), test.summary());
216
- this.currentTest++;
217
- // tail recursive, hopefully the browser will skip the stackframe
218
- this.runTests();
219
- }
220
- },
221
- summary: function() {
222
- var assertions = 0;
223
- var failures = 0;
224
- var errors = 0;
225
- var messages = [];
226
- for(var i=0;i<this.tests.length;i++) {
227
- assertions += this.tests[i].assertions;
228
- failures += this.tests[i].failures;
229
- errors += this.tests[i].errors;
230
- }
231
- return (
232
- this.tests.length + " tests, " +
233
- assertions + " assertions, " +
234
- failures + " failures, " +
235
- errors + " errors");
236
- }
237
- }
238
-
239
- Test.Unit.Assertions = Class.create();
240
- Test.Unit.Assertions.prototype = {
241
- initialize: function() {
242
- this.assertions = 0;
243
- this.failures = 0;
244
- this.errors = 0;
245
- this.messages = [];
246
- },
247
- summary: function() {
248
- return (
249
- this.assertions + " assertions, " +
250
- this.failures + " failures, " +
251
- this.errors + " errors" + "\n" +
252
- this.messages.join("\n"));
253
- },
254
- pass: function() {
255
- this.assertions++;
256
- },
257
- fail: function(message) {
258
- this.failures++;
259
- this.messages.push("Failure: " + message);
260
- },
261
- info: function(message) {
262
- this.messages.push("Info: " + message);
263
- },
264
- error: function(error) {
265
- this.errors++;
266
- this.messages.push(error.name + ": "+ error.message + "(" + Test.Unit.inspect(error) +")");
267
- },
268
- status: function() {
269
- if (this.failures > 0) return 'failed';
270
- if (this.errors > 0) return 'error';
271
- return 'passed';
272
- },
273
- assert: function(expression) {
274
- var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"';
275
- try { expression ? this.pass() :
276
- this.fail(message); }
277
- catch(e) { this.error(e); }
278
- },
279
- assertEqual: function(expected, actual) {
280
- var message = arguments[2] || "assertEqual";
281
- try { (expected == actual) ? this.pass() :
282
- this.fail(message + ': expected "' + Test.Unit.inspect(expected) +
283
- '", actual "' + Test.Unit.inspect(actual) + '"'); }
284
- catch(e) { this.error(e); }
285
- },
286
- assertEnumEqual: function(expected, actual) {
287
- var message = arguments[2] || "assertEnumEqual";
288
- try { $A(expected).length == $A(actual).length &&
289
- expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ?
290
- this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) +
291
- ', actual ' + Test.Unit.inspect(actual)); }
292
- catch(e) { this.error(e); }
293
- },
294
- assertNotEqual: function(expected, actual) {
295
- var message = arguments[2] || "assertNotEqual";
296
- try { (expected != actual) ? this.pass() :
297
- this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); }
298
- catch(e) { this.error(e); }
299
- },
300
- assertNull: function(obj) {
301
- var message = arguments[1] || 'assertNull'
302
- try { (obj==null) ? this.pass() :
303
- this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); }
304
- catch(e) { this.error(e); }
305
- },
306
- assertHidden: function(element) {
307
- var message = arguments[1] || 'assertHidden';
308
- this.assertEqual("none", element.style.display, message);
309
- },
310
- assertNotNull: function(object) {
311
- var message = arguments[1] || 'assertNotNull';
312
- this.assert(object != null, message);
313
- },
314
- assertInstanceOf: function(expected, actual) {
315
- var message = arguments[2] || 'assertInstanceOf';
316
- try {
317
- (actual instanceof expected) ? this.pass() :
318
- this.fail(message + ": object was not an instance of the expected type"); }
319
- catch(e) { this.error(e); }
320
- },
321
- assertNotInstanceOf: function(expected, actual) {
322
- var message = arguments[2] || 'assertNotInstanceOf';
323
- try {
324
- !(actual instanceof expected) ? this.pass() :
325
- this.fail(message + ": object was an instance of the not expected type"); }
326
- catch(e) { this.error(e); }
327
- },
328
- _isVisible: function(element) {
329
- element = $(element);
330
- if(!element.parentNode) return true;
331
- this.assertNotNull(element);
332
- if(element.style && Element.getStyle(element, 'display') == 'none')
333
- return false;
334
-
335
- return this._isVisible(element.parentNode);
336
- },
337
- assertNotVisible: function(element) {
338
- this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1]));
339
- },
340
- assertVisible: function(element) {
341
- this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1]));
342
- },
343
- benchmark: function(operation, iterations) {
344
- var startAt = new Date();
345
- (iterations || 1).times(operation);
346
- var timeTaken = ((new Date())-startAt);
347
- this.info((arguments[2] || 'Operation') + ' finished ' +
348
- iterations + ' iterations in ' + (timeTaken/1000)+'s' );
349
- return timeTaken;
350
- }
351
- }
352
-
353
- Test.Unit.Testcase = Class.create();
354
- Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), {
355
- initialize: function(name, test, setup, teardown) {
356
- Test.Unit.Assertions.prototype.initialize.bind(this)();
357
- this.name = name;
358
- this.test = test || function() {};
359
- this.setup = setup || function() {};
360
- this.teardown = teardown || function() {};
361
- this.isWaiting = false;
362
- this.timeToWait = 1000;
363
- },
364
- wait: function(time, nextPart) {
365
- this.isWaiting = true;
366
- this.test = nextPart;
367
- this.timeToWait = time;
368
- },
369
- run: function() {
370
- try {
371
- try {
372
- if (!this.isWaiting) this.setup.bind(this)();
373
- this.isWaiting = false;
374
- this.test.bind(this)();
375
- } finally {
376
- if(!this.isWaiting) {
377
- this.teardown.bind(this)();
378
- }
379
- }
380
- }
381
- catch(e) { this.error(e); }
382
- }
383
- });