zena 1.1.3 → 1.2.0

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 (392) hide show
  1. data/History.txt +23 -1
  2. data/MIT-LICENSE +2 -2
  3. data/README.rdoc +2 -15
  4. data/app/controllers/acls_controller.rb +1 -1
  5. data/app/controllers/documents_controller.rb +12 -3
  6. data/app/controllers/nodes_controller.rb +1 -3
  7. data/app/controllers/sites_controller.rb +7 -0
  8. data/app/controllers/versions_controller.rb +1 -1
  9. data/app/controllers/virtual_classes_controller.rb +7 -8
  10. data/app/models/acl.rb +3 -2
  11. data/app/models/relation_proxy.rb +2 -1
  12. data/app/models/role.rb +16 -0
  13. data/app/models/site.rb +48 -0
  14. data/app/models/text_document.rb +2 -1
  15. data/app/models/user.rb +2 -1
  16. data/app/models/zip.rb +2 -1
  17. data/app/views/acls/index.rhtml +11 -1
  18. data/app/views/documents/show.rhtml +1 -1
  19. data/app/views/relations/_add.erb +2 -2
  20. data/app/views/relations/_form.erb +5 -2
  21. data/app/views/relations/_li.erb +4 -1
  22. data/app/views/relations/index.erb +3 -3
  23. data/app/views/sites/_form.erb +1 -1
  24. data/app/views/sites/_job.erb +4 -0
  25. data/app/views/sites/index.erb +1 -1
  26. data/app/views/sites/jobs.erb +10 -0
  27. data/app/views/templates/document_create_tabs/_file.rhtml +3 -0
  28. data/app/views/zafu/default/Node-+search.zafu +2 -2
  29. data/bricks/acls/zena/init.rb +2 -1
  30. data/bricks/acls/zena/test/integration/acl_integration_test.rb +5 -5
  31. data/bricks/acls/zena/test/sites/erebus/acls.yml +2 -2
  32. data/bricks/acls/zena/test/unit/acl_test.rb +2 -2
  33. data/bricks/grid/lib/bricks/grid.rb +110 -0
  34. data/bricks/grid/zena/init.rb +4 -0
  35. data/bricks/math/lib/bricks/math.rb +1 -0
  36. data/bricks/pdf/lib/bricks/pdf.rb +10 -1
  37. data/bricks/sphinx/zena/tasks.rb +8 -40
  38. data/bricks/spreadsheet/README +31 -0
  39. data/bricks/spreadsheet/lib/bricks/spreadsheet.rb +293 -0
  40. data/bricks/spreadsheet/zena/init.rb +3 -0
  41. data/bricks/spreadsheet/zena/test/sites/zena/links.yml +11 -0
  42. data/bricks/spreadsheet/zena/test/unit/xlsx_test.rb +5 -0
  43. data/bricks/spreadsheet/zena/test/zafu/README +27 -0
  44. data/bricks/spreadsheet/zena/test/zafu/spreadsheet.yml +19 -0
  45. data/bricks/worker/lib/bricks/worker.rb +11 -5
  46. data/bricks/worker/zena/init.rb +8 -0
  47. data/bricks/worker/zena/migrate/20120501091514_add_site_id_to_jobs.rb +9 -0
  48. data/bricks/zena/zena/migrate/01_base.rb +0 -7
  49. data/bricks/zena/zena/migrate/20111214112233_add_comment_to_relations.rb +9 -0
  50. data/config/bricks.yml +15 -1
  51. data/config/environments/production.rb +2 -2
  52. data/config/gems.yml +6 -1
  53. data/doc/zafu_changes.yml +1 -1
  54. data/lib/tasks/zena.rake +6 -2
  55. data/lib/zena/app.rb +1 -1
  56. data/lib/zena/code/default_syntax.rb +5 -1
  57. data/lib/zena/db_helper/mysql.rb +5 -1
  58. data/lib/zena/deploy/app_init.rhtml +11 -7
  59. data/lib/zena/deploy/awstats.conf.rhtml +1 -1
  60. data/lib/zena/deploy/start_stop.rhtml +5 -5
  61. data/lib/zena/deploy/vhost.rhtml +16 -2
  62. data/lib/zena/deploy.rb +5 -3
  63. data/lib/zena/info.rb +1 -1
  64. data/lib/zena/parser/zazen_rules.rb +7 -7
  65. data/lib/zena/remote/node.rb +7 -0
  66. data/lib/zena/routes.rb +4 -5
  67. data/lib/zena/test_controller.rb +18 -1
  68. data/lib/zena/use/action.rb +13 -4
  69. data/lib/zena/use/ajax.rb +10 -4
  70. data/lib/zena/use/authlogic.rb +1 -1
  71. data/lib/zena/use/calendar.rb +4 -0
  72. data/lib/zena/use/conditional.rb +3 -0
  73. data/lib/zena/use/dates.rb +44 -4
  74. data/lib/zena/use/display.rb +45 -15
  75. data/lib/zena/use/forms.rb +59 -30
  76. data/lib/zena/use/query_builder.rb +12 -12
  77. data/lib/zena/use/recursion.rb +1 -1
  78. data/lib/zena/use/rendering.rb +18 -17
  79. data/lib/zena/use/urls.rb +2 -1
  80. data/lib/zena/use/zafu_safe_definitions.rb +0 -9
  81. data/lib/zena/use/zafu_templates.rb +2 -2
  82. data/lib/zena/use/zazen.rb +1 -3
  83. data/lib/zena/use.rb +13 -2
  84. data/lib/zena.rb +8 -2
  85. data/public/images/bullet_back.png +0 -0
  86. data/public/javascripts/grid.js +535 -0
  87. data/public/javascripts/tablekit.js +0 -0
  88. data/public/javascripts/window.js +0 -0
  89. data/public/javascripts/zena.js +17 -7
  90. data/public/stylesheets/admin.css +5 -1
  91. data/public/stylesheets/grid.css +19 -0
  92. data/test/fixtures/files/TestNode.zafu +123 -311
  93. data/test/fixtures/files/translations_fr.yml +6 -1
  94. data/test/functional/acls_controller_test.rb +2 -2
  95. data/test/functional/nodes_controller_test.rb +17 -11
  96. data/test/functional/virtual_classes_controller_test.rb +1 -1
  97. data/test/integration/query_node/basic.yml +9 -0
  98. data/test/integration/query_node/dates.yml +1 -1
  99. data/test/integration/zafu_compiler/ajax.yml +9 -9
  100. data/test/integration/zafu_compiler/basic.yml +0 -24
  101. data/test/integration/zafu_compiler/dates.yml +24 -7
  102. data/test/integration/zafu_compiler/display.yml +45 -2
  103. data/test/integration/zafu_compiler/errors.yml +0 -6
  104. data/test/integration/zafu_compiler/forms.yml +41 -3
  105. data/test/integration/zafu_compiler/query.yml +29 -3
  106. data/test/integration/zafu_compiler/roles.yml +0 -4
  107. data/test/integration/zafu_compiler/safe_definitions.yml +1 -1
  108. data/test/integration/zafu_compiler_test.rb +11 -3
  109. data/test/selenium/Add/add3.rsel +8 -8
  110. data/test/selenium/Drop/drop1.rsel +12 -12
  111. data/test/selenium/Drop/drop2.rsel +14 -14
  112. data/test/selenium/Drop/drop3.rsel +21 -21
  113. data/test/selenium/Drop/drop4.rsel +1 -1
  114. data/test/selenium/Edit/edit2.rsel +9 -9
  115. data/test/selenium/Edit/edit4.rsel +55 -0
  116. data/test/selenium/Edit/edit5.rsel +41 -0
  117. data/test/selenium/Edit/edit6.rsel +53 -0
  118. data/test/selenium/Filter/0setup.rsel +12 -0
  119. data/test/selenium/Filter/filter1.rsel +9 -0
  120. data/test/selenium/Filter/filter2.rsel +9 -0
  121. data/test/selenium/Form/form1.rsel +1 -1
  122. data/test/selenium/Form/form2.rsel +1 -1
  123. data/test/selenium/Form/form3.rsel +15 -0
  124. data/test/selenium/Grid/0setup.rsel +13 -0
  125. data/test/selenium/Grid/grid1.rsel +11 -0
  126. data/test/selenium/Swap/0setup.rsel +12 -0
  127. data/test/selenium/Swap/swap1.rsel +13 -0
  128. data/test/selenium/Swap/swap2.rsel +11 -0
  129. data/test/selenium/Toggle/toggle1.rsel +6 -6
  130. data/test/sites/zena/versions.yml +1 -1
  131. data/test/unit/relation_proxy_test.rb +36 -0
  132. data/test/unit/site_test.rb +10 -2
  133. data/test/unit/zena/use/rendering_test.rb +7 -6
  134. data/test/unit/zena/use/zazen_test.rb +1 -2
  135. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run 2.tmCommand +24 -0
  136. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Context.tmCommand +58 -0
  137. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Focused Should.tmCommand +88 -0
  138. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run.tmCommand +27 -0
  139. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/YAML to Shoulda.tmCommand +23 -0
  140. data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Context.tmPreferences +19 -0
  141. data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Should.tmPreferences +19 -0
  142. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory attributes for.tmSnippet +16 -0
  143. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory build.tmSnippet +16 -0
  144. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory.tmSnippet +16 -0
  145. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define with class.tmSnippet +18 -0
  146. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define.tmSnippet +18 -0
  147. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_next.tmSnippet +16 -0
  148. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_sequence.tmSnippet +18 -0
  149. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_bad_value.tmSnippet +16 -0
  150. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_contains.tmSnippet +16 -0
  151. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_does_not_contain.tmSnippet +16 -0
  152. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_good_value.tmSnippet +16 -0
  153. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_same_elements.tmSnippet +16 -0
  154. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_save.tmSnippet +16 -0
  155. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_sent_email.tmSnippet +18 -0
  156. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_valid.tmSnippet +16 -0
  157. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/association.tmSnippet +17 -0
  158. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/attribute.tmSnippet +17 -0
  159. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/before_should block.tmSnippet +18 -0
  160. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block get.tmSnippet +22 -0
  161. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block post.tmSnippet +23 -0
  162. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block with setup.tmSnippet +25 -0
  163. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/setup.tmSnippet +18 -0
  164. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block with before proc.tmSnippet +18 -0
  165. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block.tmSnippet +18 -0
  166. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_allow_values_for.tmSnippet +16 -0
  167. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_assign_to.tmSnippet +16 -0
  168. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful denied.tmSnippet +20 -0
  169. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful.tmSnippet +20 -0
  170. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_belong_to.tmSnippet +16 -0
  171. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change by.tmSnippet +16 -0
  172. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change from to.tmSnippet +16 -0
  173. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_at_least.tmSnippet +16 -0
  174. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_in_range.tmSnippet +16 -0
  175. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_is.tmSnippet +16 -0
  176. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_value_in_range.tmSnippet +16 -0
  177. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_eventually.tmSnippet +18 -0
  178. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_filter_params.tmSnippet +16 -0
  179. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_and_belong_to_many.tmSnippet +16 -0
  180. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_class_methods.tmSnippet +16 -0
  181. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_column.tmSnippet +16 -0
  182. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_columns.tmSnippet +16 -0
  183. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_index.tmSnippet +16 -0
  184. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_indices.tmSnippet +16 -0
  185. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_instance_methods.tmSnippet +16 -0
  186. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_many.tmSnippet +16 -0
  187. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_named_scope.tmSnippet +16 -0
  188. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_one.tmSnippet +16 -0
  189. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_readonly_attributes.tmSnippet +16 -0
  190. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_mass_assignment_of.tmSnippet +16 -0
  191. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_values_for.tmSnippet +16 -0
  192. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_assign_to.tmSnippet +16 -0
  193. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_change.tmSnippet +16 -0
  194. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_set_the_flash.tmSnippet +16 -0
  195. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_redirect_to.tmSnippet +16 -0
  196. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_a_form.tmSnippet +16 -0
  197. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_template.tmSnippet +16 -0
  198. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_with_layout.tmSnippet +16 -0
  199. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_without_layout.tmSnippet +16 -0
  200. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with.tmSnippet +16 -0
  201. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with_content_type.tmSnippet +16 -0
  202. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_return_from_session.tmSnippet +16 -0
  203. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_route.tmSnippet +16 -0
  204. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_set_the_flash_to.tmSnippet +16 -0
  205. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_acceptance_of.tmSnippet +16 -0
  206. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_numericality_of.tmSnippet +16 -0
  207. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_presence_of.tmSnippet +16 -0
  208. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of with scope.tmSnippet +16 -0
  209. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of.tmSnippet +16 -0
  210. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/catch_exception.rb +39 -0
  211. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/run_script.rb +104 -0
  212. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/stdin_dialog.rb +14 -0
  213. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/test.rb +17 -0
  214. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/todo.txt +13 -0
  215. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/bin/yaml_to_shoulda.rb +25 -0
  216. data/vendor/TextMate/Ruby Shoulda.tmbundle/Syntaxes/Ruby on Rails (Shoulda).tmLanguage +166 -0
  217. data/vendor/TextMate/Ruby Shoulda.tmbundle/info.plist +304 -0
  218. data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +37 -0
  219. data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +52 -0
  220. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +39 -0
  221. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +118 -0
  222. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +14 -0
  223. data/vendor/TextMate/Zena.tmbundle/info.plist +17 -0
  224. data/vendor/plugins/selenium-on-rails/CHANGELOG +125 -0
  225. data/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt +202 -0
  226. data/vendor/plugins/selenium-on-rails/README.md +202 -0
  227. data/vendor/plugins/selenium-on-rails/Rakefile +38 -0
  228. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html +265 -0
  229. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html +148 -0
  230. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html +231 -0
  231. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html +195 -0
  232. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html +295 -0
  233. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html +219 -0
  234. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html +156 -0
  235. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html +179 -0
  236. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html +223 -0
  237. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html +441 -0
  238. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html +3098 -0
  239. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html +2080 -0
  240. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserAccessors.html +116 -0
  241. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserActions.html +116 -0
  242. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html +126 -0
  243. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html +150 -0
  244. data/vendor/plugins/selenium-on-rails/doc/files/CHANGELOG.html +422 -0
  245. data/vendor/plugins/selenium-on-rails/doc/files/README.html +321 -0
  246. data/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html +108 -0
  247. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html +101 -0
  248. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html +222 -0
  249. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html +109 -0
  250. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html +111 -0
  251. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html +101 -0
  252. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html +101 -0
  253. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html +118 -0
  254. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html +101 -0
  255. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html +101 -0
  256. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html +114 -0
  257. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html +113 -0
  258. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html +120 -0
  259. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html +108 -0
  260. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html +115 -0
  261. data/vendor/plugins/selenium-on-rails/doc/fr_class_index.html +42 -0
  262. data/vendor/plugins/selenium-on-rails/doc/fr_file_index.html +43 -0
  263. data/vendor/plugins/selenium-on-rails/doc/fr_method_index.html +182 -0
  264. data/vendor/plugins/selenium-on-rails/doc/index.html +24 -0
  265. data/vendor/plugins/selenium-on-rails/doc/rdoc-style.css +208 -0
  266. data/vendor/plugins/selenium-on-rails/generators/selenium/USAGE +19 -0
  267. data/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb +50 -0
  268. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml +16 -0
  269. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml +14 -0
  270. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml +11 -0
  271. data/vendor/plugins/selenium-on-rails/init.rb +15 -0
  272. data/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb +122 -0
  273. data/vendor/plugins/selenium-on-rails/lib/controllers/switch_environment_controller.rb +16 -0
  274. data/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb +8 -0
  275. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb +215 -0
  276. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb +57 -0
  277. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb +36 -0
  278. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb +61 -0
  279. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb +20 -0
  280. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb +44 -0
  281. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb +87 -0
  282. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb +56 -0
  283. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb +116 -0
  284. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb +1002 -0
  285. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb +514 -0
  286. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_accessors.rb.example +91 -0
  287. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_actions.rb.example +24 -0
  288. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb +11 -0
  289. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb +30 -0
  290. data/vendor/plugins/selenium-on-rails/lib/views/layouts/layout.rhtml +18 -0
  291. data/vendor/plugins/selenium-on-rails/lib/views/record.rhtml +5 -0
  292. data/vendor/plugins/selenium-on-rails/lib/views/selenium_helper.rb +9 -0
  293. data/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml +67 -0
  294. data/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml +26 -0
  295. data/vendor/plugins/selenium-on-rails/routes.rb +24 -0
  296. data/vendor/plugins/selenium-on-rails/selenium-core/Blank.html +7 -0
  297. data/vendor/plugins/selenium-on-rails/selenium-core/InjectedRemoteRunner.html +8 -0
  298. data/vendor/plugins/selenium-on-rails/selenium-core/RemoteRunner.html +110 -0
  299. data/vendor/plugins/selenium-on-rails/selenium-core/SeleniumLog.html +109 -0
  300. data/vendor/plugins/selenium-on-rails/selenium-core/TestPrompt.html +145 -0
  301. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner-splash.html +55 -0
  302. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.hta +177 -0
  303. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.html +177 -0
  304. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butmin.gif +0 -0
  305. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butplus.gif +0 -0
  306. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.css +298 -0
  307. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.html +16 -0
  308. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/selenium-domviewer.js +205 -0
  309. data/vendor/plugins/selenium-on-rails/selenium-core/icons/all.png +0 -0
  310. data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue.png +0 -0
  311. data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue_disabled.png +0 -0
  312. data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause.png +0 -0
  313. data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause_disabled.png +0 -0
  314. data/vendor/plugins/selenium-on-rails/selenium-core/icons/selected.png +0 -0
  315. data/vendor/plugins/selenium-on-rails/selenium-core/icons/step.png +0 -0
  316. data/vendor/plugins/selenium-on-rails/selenium-core/icons/step_disabled.png +0 -0
  317. data/vendor/plugins/selenium-on-rails/selenium-core/iedoc-core.xml +1759 -0
  318. data/vendor/plugins/selenium-on-rails/selenium-core/iedoc.xml +1800 -0
  319. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/cssQuery-p.js +6 -0
  320. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level2.js +142 -0
  321. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level3.js +150 -0
  322. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-standard.js +53 -0
  323. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery.js +356 -0
  324. data/vendor/plugins/selenium-on-rails/selenium-core/lib/prototype.js +2006 -0
  325. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/builder.js +101 -0
  326. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/controls.js +815 -0
  327. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/dragdrop.js +915 -0
  328. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/effects.js +958 -0
  329. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/scriptaculous.js +47 -0
  330. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/slider.js +283 -0
  331. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/unittest.js +383 -0
  332. data/vendor/plugins/selenium-on-rails/selenium-core/lib/snapsie.js +91 -0
  333. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/find_matching_child.js +69 -0
  334. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/htmlutils.js +1616 -0
  335. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/injection.html +72 -0
  336. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-api.js +3184 -0
  337. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserbot.js +2300 -0
  338. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserdetect.js +153 -0
  339. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-commandhandlers.js +377 -0
  340. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-executionloop.js +175 -0
  341. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-logging.js +148 -0
  342. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-remoterunner.js +695 -0
  343. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-testrunner.js +1362 -0
  344. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-version.js +5 -0
  345. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-doc.html +803 -0
  346. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-element.js +1537 -0
  347. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-map-sample.js +979 -0
  348. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js +3 -0
  349. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js.sample +75 -0
  350. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/xmlextras.js +153 -0
  351. data/vendor/plugins/selenium-on-rails/selenium-core/selenium-logo.png +0 -0
  352. data/vendor/plugins/selenium-on-rails/selenium-core/selenium-test.css +43 -0
  353. data/vendor/plugins/selenium-on-rails/selenium-core/selenium.css +316 -0
  354. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/dom.js +566 -0
  355. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/javascript-xpath-0.1.11.js +2816 -0
  356. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/util.js +549 -0
  357. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xmltoken.js +149 -0
  358. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xpath.js +2450 -0
  359. data/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake +8 -0
  360. data/vendor/plugins/selenium-on-rails/test/fixtures/config.yml +37 -0
  361. data/vendor/plugins/selenium-on-rails/test/fixtures/selenium.yml +27 -0
  362. data/vendor/plugins/selenium-on-rails/test/paths_test.rb +72 -0
  363. data/vendor/plugins/selenium-on-rails/test/renderer_test.rb +157 -0
  364. data/vendor/plugins/selenium-on-rails/test/rselenese_test.rb +708 -0
  365. data/vendor/plugins/selenium-on-rails/test/selenese_test.rb +242 -0
  366. data/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb +67 -0
  367. data/vendor/plugins/selenium-on-rails/test/selenium_on_rails_config_test.rb +43 -0
  368. data/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb +35 -0
  369. data/vendor/plugins/selenium-on-rails/test/setup_test.rb +31 -0
  370. data/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb +109 -0
  371. data/vendor/plugins/selenium-on-rails/test/switch_environment_controller_test.rb +17 -0
  372. data/vendor/plugins/selenium-on-rails/test/test_builder_functions_authortest.rb +51 -0
  373. data/vendor/plugins/selenium-on-rails/test/test_helper.rb +101 -0
  374. data/vendor/plugins/selenium-on-rails/test_data/_partial.rsel +1 -0
  375. data/vendor/plugins/selenium-on-rails/test_data/own_layout.html +12 -0
  376. data/vendor/plugins/selenium-on-rails/test_data/partials/_html.html +6 -0
  377. data/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel +2 -0
  378. data/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml +6 -0
  379. data/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel +1 -0
  380. data/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel +5 -0
  381. data/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel +5 -0
  382. data/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml +7 -0
  383. data/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel +8 -0
  384. data/vendor/plugins/selenium-on-rails/test_data/selenese.sel +7 -0
  385. data/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel +1 -0
  386. data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel +1 -0
  387. data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel +1 -0
  388. data/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel +1 -0
  389. data/zena.gemspec +290 -7
  390. metadata +346 -52
  391. data/app/views/nodes/_table.rhtml +0 -14
  392. data/lib/zena/use/grid.rb +0 -154
@@ -11,7 +11,7 @@ block:
11
11
 
12
12
  add:
13
13
  src: "<ul id='children' do='nodes'><li do='each' do='link'/><li do='add'/></ul>"
14
- tem: "/\[\"children_add\", \"children_form\"\].each\(Element.toggle\)/"
14
+ tem: "/\[\"children_add\", \"children_0\"\].each\(Element.toggle\)/"
15
15
  'ajax/add/en/children_form.erb': "/class='form' id='<%= ndom_id\(@node\) %>'/"
16
16
  'ajax/add/en/children.erb': "<li id='<%= ndom_id(@node) %>'><a href='<%= zen_path(@node) %>'><%= @node.prop['title'] %></a></li>"
17
17
 
@@ -55,11 +55,11 @@ form_update:
55
55
  add_each_no_form:
56
56
  src: "<ul do='children' id='things'><li do='each'>I <p do='title'>blah</p></li><li do='add'/></ul>"
57
57
  tem: "!/</ul><ul></ul>/" # bug in closing group with [add].
58
- res: "/<ul><li.*id='things_add'.*li.*class='form' id='things_form'.*form.*I <p><input id=.things_title. name=.node\[title\]. .*type=.text..*hidden/"
58
+ res: "/<ul><li.*id='things_add'.*li.*class='form' id='things_0'.*form.*I <p><input id=.things_title. name=.node\[title\]. .*type=.text..*hidden/"
59
59
 
60
60
  add_each_no_form_date:
61
61
  src: "<ul do='children' id='things'><li do='each'>I <p do='show' attr='event_at' tformat='short_date'>blah</p></li><li do='add'/></ul>"
62
- res: "/<ul><li.*id='things_add'.*li.*id='things_form'.*form.*I <p>.*date_box.*name='node\[event_at\]' type='text' value.*hidden/"
62
+ res: "/<ul><li.*id='things_add'.*li.*id='things_0'.*form.*I <p>.*date_box.*name='node\[event_at\]' type='text' value.*hidden/"
63
63
 
64
64
  add_each_no_form_focus:
65
65
  src: "<ul do='children' id='test'><li do='each'>I <p do='title'>blah</p></li><li do='add' focus='title'/></ul>"
@@ -74,7 +74,7 @@ each_add_with_form:
74
74
  <li do='add'>add new</li>
75
75
  <li do='form'><input name='title'/> this is the form</li>
76
76
  </ol>
77
- res: "/<li id='list1_30'>bird.*<li id='list1_31'>flower.*<li.*list1_add.*list1_form.*toggle.*<li style.*none.*list1_form.*Ajax.Request.*input type='hidden' name='t_url' value=.ajax/each/add/with/form/list1.*input type='hidden' name='node\[parent_id\]' value=.29./"
77
+ res: "/<li id='list1_30'>bird.*<li id='list1_31'>flower.*<li.*list1_add.*list1_0.*toggle.*<li style.*none.*list1_0.*Ajax.Request.*input type='hidden' name='t_url' value=.ajax/each/add/with/form/list1.*input type='hidden' name='node\[parent_id\]' value=.29./"
78
78
 
79
79
  each_add_with_form_in_sub_block:
80
80
  context:
@@ -126,7 +126,7 @@ block_dictionary:
126
126
 
127
127
  make_form:
128
128
  src: "<ul do='children'><li do='each' do='title'/><li do='add'/></ul>"
129
- tem: "/<li style='display:none;' class='form' id='list1_form'>.*remote_form_for\(:node, var2_new"
129
+ tem: "/<li style='display:none;' class='form' id='list1_0'>.*remote_form_for\(:node, var2_new"
130
130
  'ajax/make/form/en/list1.erb': "<li id='<%= ndom_id(@node) %>'><%= @node.prop['title'] %></li>"
131
131
  'ajax/make/form/en/list1_form.erb': "/<li class='form' id='<%= ndom_id\(@node\) %>'>/"
132
132
 
@@ -165,7 +165,7 @@ each_in_each_form:
165
165
  each_in_each_dom_id:
166
166
  # should render correct form
167
167
  src: "<r:pages do='each'><r:title/><r:edit/><r:pages do='each'><r:title/><r:edit/></r:pages></r:pages>"
168
- tem: "/list2_#\{var.\.zip\}_#\{var.\.zip\}/"
168
+ tem: "/list1_#\{var.\.zip\}_#\{var.\.zip\}/"
169
169
 
170
170
  default_focus_field:
171
171
  src: "<ol do='comments'><li do='each'/><li do='form'><input name='author_name'/> ... <input name='text'/></li><li do='add'/></ol>"
@@ -191,8 +191,8 @@ live_filter_single_element:
191
191
  live_filter_select_options:
192
192
  context:
193
193
  node: cleanWater
194
- src: "<r:filter live='true' do='select' param='f' values='1,2'/><r:block><ol do='pages where title like \"#{params[:f]}%\"'><li do='each' do='title'/></ol></r:block>"
195
- tem: "/select name=.f.><%= options_for_select\(\[.1., .2.\], params\[:f\].to_s/"
194
+ src: "<r:filter live='true' do='select' param='f' tprefix='foo' values='1,2'/><r:block><ol do='pages where title like \"#{params[:f]}%\"'><li do='each' do='title'/></ol></r:block>"
195
+ tem: "/select name=.f.><%= options_for_select.*.foo_1., .1..*, param_value\(.f.\).to_s/"
196
196
  'ajax/live/filter/select/options/en/list1.erb': "/<div id='<%= ndom_id\(@node\) %>'.*params\[:f\]/"
197
197
  res: "/<select name='f'.*<div id='list1'><ol><li>crocodiles</li><li>status title</li></ol></div>/"
198
198
 
@@ -220,7 +220,7 @@ drag_with_form:
220
220
  <td class='edit'> <r:edit class='edit'>éditer</r:edit></td>
221
221
  </tr>
222
222
  </table>"
223
- tem: "/<span class='drag' id='<%= %Q\{list2_#\{var2.zip\}\}.*<% add_drag_id\(%Q\{list2_#\{var2.zip\}\}/"
223
+ tem: "/<span class='drag' id='<%= %Q\{list3_#\{var2.zip\}\}.*<% add_drag_id\(%Q\{list3_#\{var2.zip\}\}/"
224
224
 
225
225
  drag_with_form_not_in_form:
226
226
  src: "<table do='pages in site'>
@@ -32,30 +32,6 @@ each_traductions_only_list:
32
32
  src: "<r:traductions only='en,ru'><ul><li do='each'><r:show attr='title'/></li></ul></r:traductions>"
33
33
  res: "<ul><li>status title</li></ul>"
34
34
 
35
- each_alternate_class:
36
- context:
37
- node: 'cleanWater'
38
- src: "<ol do='pages'><li do='each' alt_class='blue' do='title'/></ol>"
39
- res: "<ol><li class=''>crocodiles</li><li class='blue'>status title</li><li class=''>Kill the bugs</li></ol>"
40
-
41
- each_alternate_class_reverse:
42
- context:
43
- node: 'cleanWater'
44
- src: "<ol do='pages' limit='2'><li do='each' alt_class='blue' alt_reverse='true' do='title'/></ol>"
45
- res: "<ol><li class='blue'>crocodiles</li><li class=''>status title</li></ol>"
46
-
47
- each_alternate_class_two:
48
- context:
49
- node: 'collections'
50
- src: "<ol do='pages'><li class='post' do='each' alt_class='stripe' do='title'/></ol>"
51
- res: "<ol><li class='post '>art</li><li class='post stripe'>menu</li><li class='post '>news</li><li class='post stripe'>wikiSkin</li></ol>"
52
-
53
- each_alternate_class_ajax:
54
- context:
55
- node: 'cleanWater'
56
- src: "<ol do='pages' limit='2'><li do='each' alt_class='blue' do='title'/><li do='add'/></ol>"
57
- res: "/<li>crocodiles<\/li><li class=\"blue\">status/"
58
-
59
35
  each_else:
60
36
  context:
61
37
  node: 'opening'
@@ -17,18 +17,18 @@ date:
17
17
 
18
18
  select_date_attr:
19
19
  src: "<p do='void' set_date='log_at'><span do='show' eval='date.year'/></p>"
20
- tem: "<p><% _zdate = @node.log_at %><span><%= (_zdate ? _zdate.year : nil) %></span></p>"
20
+ tem: "<p><% _zdate = @node.log_at %><span><%= (_zdate ? _zdate.year_tz : nil) %></span></p>"
21
21
  res: '<p><span>2006</span></p>'
22
22
 
23
23
  date_in_link:
24
24
  src: "<r:link y='log_at.year'/>"
25
- tem: "<a href='<%= zen_path(@node, {:y => (@node.log_at ? @node.log_at.year : nil)}) %>'><%= @node.prop['title'] %></a>"
25
+ tem: "<a href='<%= zen_path(@node, {:y => (@node.log_at ? @node.log_at.year_tz : nil)}) %>'><%= @node.prop['title'] %></a>"
26
26
 
27
27
  log_at:
28
28
  context:
29
29
  node: 'status'
30
30
  eval: 'log_at.year'
31
- tem: '<%= (@node.log_at ? @node.log_at.year : nil) %>'
31
+ tem: '<%= (@node.log_at ? @node.log_at.year_tz : nil) %>'
32
32
  res: '' # no errors
33
33
 
34
34
  # TypedString 'could_be_nil?' should propagate through 'date'
@@ -36,7 +36,7 @@ could_be_nil:
36
36
  context:
37
37
  node: 'status'
38
38
  src: "*<r:void set_date='log_at'><r:eval>date.year</r:eval></r:void>*"
39
- tem: "*<% _zdate = @node.log_at %><%= (_zdate ? _zdate.year : nil) %>*"
39
+ tem: "*<% _zdate = @node.log_at %><%= (_zdate ? _zdate.year_tz : nil) %>*"
40
40
  res: '**' # no errors
41
41
 
42
42
  uses_datebox:
@@ -49,9 +49,9 @@ uses_datebox_missing_lang:
49
49
  src: "<r:uses_datebox/>"
50
50
  tem: "/calendar/lang/calendar-en-utf8.js/"
51
51
 
52
- show_date_foo:
52
+ show_current_date:
53
53
  context:
54
- date: '2010-05-16'
54
+ date: '16.5.2010'
55
55
  lang: fr
56
56
  src: "<r:show eval='date' format='%A %d.%m.%Y'/>"
57
57
  tem: "/main_date/"
@@ -167,4 +167,21 @@ test_date:
167
167
 
168
168
  format_date_empty_string:
169
169
  tem: "<%= format_date('') %>"
170
- res: ""
170
+ res: ""
171
+
172
+ date_empty_value:
173
+ src: "<r:input name='created_at' value=''/>"
174
+ tem: "<input type='text' name='node[created_at]' value=''/>"
175
+
176
+ time_to_date:
177
+ context:
178
+ tz: 'US/Pacific'
179
+ src: "<b do='created_at.to_date'/> <b do='created_at.to_date(\"UTC\")'/>"
180
+ res: "<b>2006-03-09</b> <b>2006-03-10</b>"
181
+
182
+ time_year:
183
+ context:
184
+ node: opening
185
+ tz: 'US/Pacific'
186
+ src: "<r:Post?><b do='this.date.year'/> <b do='this.date.year(\"UTC\")'/></r:Post?>"
187
+ res: "<b>2011</b> <b>2012</b>"
@@ -186,6 +186,11 @@ cannot_add_document:
186
186
  src: "<r:add_document/>"
187
187
  res: ''
188
188
 
189
+ add_document_redir:
190
+ src: "<r:add_document redir='#{url}'/>"
191
+ tem: "/redir=<%= CGI.escape\(\"#\{zen_url\(@node\)\}\"\) %>/"
192
+ res: "/Zena.open_window.*%2Fpage22.html/"
193
+
189
194
  img_no_image:
190
195
  src: "<r:img/>"
191
196
  tem: "<%= img_tag(@node, :mode=>\"std\") %>"
@@ -262,7 +267,7 @@ admin_links_for_admin:
262
267
  admin_links_for_admin_with_list:
263
268
  context:
264
269
  visitor: lion
265
- src: "<ul do='admin_links' list='comments,sites'><li do='each' do='show'><a href='#'>do this</a></li></ul>"
270
+ src: "<ul do='admin_links' list='comments,sites'><li do='each' do='show'><a href='javascript:void(0)'>do this</a></li></ul>"
266
271
  tem: '/if var1 = admin_links\(\{:list => "comments,sites"\}/'
267
272
  res: '<ul><li><a href="/comments">comments</a></li><li><a href="/sites">sites</a></li></ul>'
268
273
 
@@ -394,4 +399,42 @@ array_literal:
394
399
 
395
400
  style_tag:
396
401
  src: "<r:style>.foo <r:title/></r:style>"
397
- res: "<style>.foo status title</style>"
402
+ res: "<style type='text/css'>.foo status title</style>"
403
+
404
+ each_alternate_class:
405
+ context:
406
+ node: 'cleanWater'
407
+ src: "<ol do='pages'><li do='each' alt_class='blue' do='title'/></ol>"
408
+ res: "<ol><li class=''>crocodiles</li><li class='blue'>status title</li></ol>"
409
+
410
+ each_alternate_class_reverse:
411
+ context:
412
+ node: 'cleanWater'
413
+ src: "<ol do='pages' limit='2'><li do='each' alt_class='blue' alt_reverse='true' do='title'/></ol>"
414
+ res: "<ol><li class='blue'>crocodiles</li><li class=''>status title</li></ol>"
415
+
416
+ each_alternate_class_two:
417
+ context:
418
+ node: 'collections'
419
+ src: "<ol do='pages'><li class='post' do='each' alt_class='stripe' do='title'/></ol>"
420
+ res: "<ol><li class='post '>Art</li><li class='post stripe'>News list</li><li class='post '>Top menu</li><li class='post stripe'>wiki skin</li></ol>"
421
+
422
+ each_alternate_class_ajax:
423
+ context:
424
+ node: 'cleanWater'
425
+ src: "<ol do='pages' limit='2'><li do='each' alt_class='blue' do='title'/><li do='add'/></ol>"
426
+ res: "/<li class='' id='list1_26'>crocodiles<\/li><li class='blue' id='list1_22'>status title<\/li>/"
427
+
428
+ each_alternate_class_with_conditional:
429
+ context:
430
+ node: 'cleanWater'
431
+ src: "<ol do='pages'><li do='each' alt_class='blue' on_if='title' do='title'/></ol>"
432
+ res: "<ol><li class=' on'>crocodiles</li><li class='blue on'>status title</li></ol>"
433
+
434
+ each_alternate_by_hand:
435
+ context:
436
+ node: 'cleanWater'
437
+ # This is useful when we need to have more then one table row per item for example.
438
+ src: "<ol do='pages'><r:each alt_class='blue'><li class='#{alt_class}' do='title'/></r:each></ol>"
439
+ tem: "/class='<%= _zaltclass %>'/"
440
+ res: "<ol><li class=''>crocodiles</li><li class='blue'>status title</li></ol>"
@@ -84,12 +84,6 @@ map_join:
84
84
  src: "<r:children do='map(:flobo).join(\",\")'/>"
85
85
  tem: "/unknown method .*map\(:flobo\)/"
86
86
 
87
- query_on_vclass:
88
- # typical syntax error (should be Contact?)
89
- src: "<r:Contact><div do='pages in site'>...</div></r:Contact>"
90
- # should not crash
91
- tem: "/parser_error.*method.*pages in site.*No query builder for class VirtualClass/"
92
-
93
87
  datebox_on_vclass:
94
88
  src: "<r:Contact><r:input type='date' name='log_at'/></r:Contact>"
95
89
  tem: "/unknown method 'log_at\(\)' for .* VirtualClass./"
@@ -12,7 +12,7 @@ add_btn:
12
12
  <tr do='each'><td do='title'/></tr>
13
13
  <tr do='add'><td><b><r:add_btn/></b></td></tr>
14
14
  </table>"
15
- res: "/<tr class='btn_add' id='list1_add'><td><b><a href='#' onclick/"
15
+ res: "/<tr class='btn_add' id='list1_add'><td><b><a href='javascript:void\(0\)' onclick/"
16
16
 
17
17
  form_put:
18
18
  # default should be a put method
@@ -60,6 +60,10 @@ select_nodes:
60
60
  src: "<r:form><r:select nodes='images in site' name='foo'></select></r:form>"
61
61
  res: "/name='node\[foo\]'><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Autumn Tree</option>\n<option value=\"30\">bird</option>/"
62
62
 
63
+ select_nodes_show_rubyless:
64
+ src: "<r:form><r:select nodes='images in site' name='foo' show='title.limit(3)'></select></r:form>"
65
+ res: "/name='node\[foo\]'><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Aut…</option>\n<option value=\"30\">bir…</option>/"
66
+
63
67
  do_not_set_parent_id_if_form_contains_parent_id:
64
68
  src: "<r:children><r:each do='title'/><r:add/><r:form><r:select name='parent_id' nodes='projects in site'/><input name='title'/></r:form></r:children>"
65
69
  res: "!/node\[parent_id\].\s+value/"
@@ -171,6 +175,22 @@ input_param_value:
171
175
  tem: "<input type='text' name='foo[bar.baz]' value='<%= fquote param_value(\"foo[bar.baz]\") %>'/>"
172
176
  res: "<input type='text' name='foo[bar.baz]' value='xyz'/>"
173
177
 
178
+ input_checkbox_param_value:
179
+ context:
180
+ foo:
181
+ "bar.baz": 'null'
182
+ src: "<r:input type='checkbox' value='null' param='foo[bar.baz]'/>"
183
+ tem: "<input type='hidden' name='foo[bar.baz]' value=''/><input type='checkbox' name='foo[bar.baz]' value='null'<%= param_value(\"foo[bar.baz]\") == \"null\" ? \" checked='checked'\" : '' %>/>"
184
+ res: "<input type='hidden' name='foo[bar.baz]' value=''/><input type='checkbox' name='foo[bar.baz]' value='null' checked='checked'/>"
185
+
186
+ select_param_value:
187
+ context:
188
+ foo:
189
+ "bar.baz": '1'
190
+ src: "<r:select param='foo[bar.baz]' values='1,3' show='one,three'/>"
191
+ tem: '/param_value\("foo\[bar.baz\]"\).to_s/'
192
+ res: '/<option value="1" selected="selected">one<\/option>/'
193
+
174
194
  input_style:
175
195
  src: "<r:input style='display:none;' type='submit'/>"
176
196
  res: "<input type='submit' style='display:none;'/>"
@@ -192,7 +212,7 @@ input_new:
192
212
  context:
193
213
  node: 'ant'
194
214
  src: "<r:contacts><r:each/><r:form><r:input name='first_name'/></r:form><r:add/></r:contacts>"
195
- res: "/name='node\[first_name\]' [^>]*id='list1_first_name'/"
215
+ res: "/name='node\[first_name\]' [^>]*id='list2_first_name'/"
196
216
 
197
217
  show_in_form:
198
218
  src: "<r:form><b do='title'/></r:form>"
@@ -260,4 +280,22 @@ hidden_fields_in_form_tag:
260
280
 
261
281
  hidden_fields_in_form_tag_dynamic:
262
282
  src: "<r:form node[log]='title'></r:form>"
263
- tem: "/<input type='hidden' name='node\[log\]' value='<%= @node.prop\['title'\] %>/"
283
+ tem: "/<input type='hidden' name='node\[log\]' value='<%= @node.prop\['title'\] %>/"
284
+
285
+ should_show_column:
286
+ src: "<r:Document do='column(\"size\")' do='name'/>"
287
+ res: "size"
288
+
289
+ should_show_fields_for_columns:
290
+ context:
291
+ node: 'forest_pdf'
292
+ src: "<r:form><r:Document do='column(\"size\")' do='input'/></r:form>"
293
+ tem: "/input type='text' name='node\\[<%= var2.name %>\\]/"
294
+ res: "/<input type='text' name='node\\[size\\]' value='63569'/>/"
295
+
296
+ should_show_fields_for_columns:
297
+ context:
298
+ lang: 'fr'
299
+ src: "<r:load dictionary='/Default skin/translations'><r:form><r:select name='assigned' values=',1,2,3'/></r:form></r:load>"
300
+ tem: "/foo.*bar/"
301
+ res: "/value=\"1\">foo<\/option>\n<option value=\"2\">bar/"
@@ -156,7 +156,7 @@ query:
156
156
  node: cleanWater
157
157
  qb: "nodes where updated_at.year = 2007 in project"
158
158
  src: "<r:query default='nodes in project' do='each' join=', ' do='title'/>"
159
- tem: "/if var1 = query\('Node', \"@node\", params\[:qb\] \|\| \"nodes in project\"\)/"
159
+ tem: "/if var1 = query\('Node', \"@node\", params\[:qb\] \|\| \"nodes in project\", :find => :all, :binding => binding\)/"
160
160
  res: 'crocodiles'
161
161
 
162
162
  query_with_default:
@@ -191,7 +191,7 @@ query_with_parse:
191
191
  filter:
192
192
  title: 'status title'
193
193
  src: "<r:query default='pages in site' select='pages where #{query_parse(params[:filter])} in site' do='each' join=', ' do='title'/>"
194
- tem: '/query.*pages where #\{query_parse\(params\[:filter\]\)\} in site\"\)/'
194
+ tem: '/query.*pages where #\{query_parse\(params\[:filter\]\)\} in site\"/'
195
195
  res: 'status title'
196
196
 
197
197
  query_with_parse_paginate:
@@ -208,6 +208,25 @@ query_can_be_nil_bad_argument_type:
208
208
  tem: '/params\[:filter\] \|\| \"pages in site\"/'
209
209
  res: ''
210
210
 
211
+ query_eval_in_sub_context:
212
+ # Live compile and query from params
213
+ context:
214
+ visitor: lion
215
+ node: cleanWater
216
+ scope: 'self'
217
+ # Should pass binding so that local var3 is recognized
218
+ src: "<r:parent do='main'><r:query select='pages' default='pages' do='each' join=', ' do='title'/></r:parent>"
219
+ res: 'crocodiles, Nice Bananas, status title'
220
+
221
+ query_eval_find_one:
222
+ # Live compile and query from params
223
+ context:
224
+ visitor: lion
225
+ node: cleanWater
226
+ src: "<r:query select='page' default='page' do='link'/>"
227
+ tem: "/<%= zen_path\(var1\) %>/"
228
+ res: "/<a href='.*26.html'>crocodiles</a>/"
229
+
211
230
  query_count:
212
231
  tem: '<%= query("Page", "@node", "pages in site", :type => :count) %>'
213
232
  res: '19'
@@ -246,4 +265,11 @@ find_with_rubyless:
246
265
 
247
266
  find_loads_class:
248
267
  src: "<div do='find(11)'><r:origin/></div>"
249
- tem: "<% if var1 = find_node_by_zip(11) %><div><%= var1.prop['origin'] %></div><% end %>"
268
+ tem: "<% if var1 = find_node_by_zip(11) %><div><%= var1.prop['origin'] %></div><% end %>"
269
+
270
+ query_on_vclass:
271
+ # typical syntax error (should be Contact?)
272
+ src: "<r:Contact><div do='pages in site order by zip asc limit 2' do='each' join=',' do='title'/></r:Contact>"
273
+ # does the query on last @node
274
+ tem: "/Node.do_find/"
275
+ res: '<div>Zena the wild CMS,people</div>'
@@ -113,10 +113,6 @@ grid_manual:
113
113
  </table>
114
114
  res: "/<th colspan='3'>Node.*<th colspan='3'>Original.*<th>exif</th><th>height</th><th>width</th>.*<td>image/jpeg</td><td>jpg</td>/"
115
115
 
116
- grid:
117
- src: "<r:images in='site' do='grid'/>"
118
- res: "/<table class='grid'>.*<th class='role' colspan='3'>Node.*<th class='role' colspan='3'>Original.*<th>exif</th><th>height</th><th>width</th>.*<td>image/jpeg</td><td>jpg</td>/"
119
-
120
116
  list_relations:
121
117
  src: "<r:Contact do='relations' do='each' join=', ' do='name'/>"
122
118
  res: "collaborator_for, favorite, favorite_for, home_for, hot_for, icon, reference, reference_for, set_tag"
@@ -140,4 +140,4 @@ hash_to_params:
140
140
  two: '2'
141
141
  src: "<b do='{:q =&gt; params[:q]}' do='to_param'/>"
142
142
  tem: "<% var1 = {:q => params[:q]} %><b><%= var1.to_param %></b>"
143
- res: '<b>q%5Bone%5D=1&q%5Btwo%5D=2</b>'
143
+ res: '<b>q%5Bone%5D=1&q%5Btwo%5D=2</b>'
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  class ZafuCompilerTest < Zena::Controller::TestCase
4
4
  include Zena::Use::Urls::Common
5
- OK = [
5
+ OK = [
6
6
  'action',
7
7
  'asset',
8
8
  'conditional',
@@ -20,8 +20,9 @@ class ZafuCompilerTest < Zena::Controller::TestCase
20
20
  'safe_definitions',
21
21
  'search',
22
22
  'site',
23
- 'tags', # bricks/tags/zena/test/zafu
24
- 'worker', # bricks/worker/zena/test/zafu
23
+ 'tags', # bricks/tags/zena/test/zafu
24
+ 'spreadsheet', # bricks/spreadsheet/zena/test/spreadsheet
25
+ 'worker', # bricks/worker/zena/test/zafu
25
26
  'urls',
26
27
  'user',
27
28
  'version',
@@ -355,5 +356,12 @@ class ZafuCompilerTest < Zena::Controller::TestCase
355
356
  yt_do_test('relations', 'same_name_as_class')
356
357
  end
357
358
 
359
+ def test_dates_time_year
360
+ login(:lion)
361
+ node = secure(Node) { nodes(:opening) }
362
+ node.update_attributes!(:date => Time.utc(2012,1,1,0,0))
363
+ yt_do_test('dates', 'time_year')
364
+ end
365
+
358
366
  yt_make
359
367
  end
@@ -1,22 +1,22 @@
1
1
  # Add first element
2
2
  open '/oo/testnode37.html?test=add3'
3
- assert_not_visible 'add31_title'
3
+ assert_not_visible 'add33_title'
4
4
  click 'css=img[alt=add]'
5
- assert_visible 'add31_title'
6
- type 'add31_title', 'add3'
5
+ assert_visible 'add33_title'
6
+ type 'add33_title', 'add3'
7
7
  click 'css=input[type=submit]'
8
- wait_for_not_visible 'add31_title'
8
+ wait_for_not_visible 'add33_title'
9
9
  verify_text 'css=.add3 a', 'add3'
10
10
  # should have correct parent
11
11
  verify_text 'css=.add3 span', 'Kill the bugs'
12
12
 
13
13
  # Add a second element
14
- assert_not_visible 'add31_title'
14
+ assert_not_visible 'add33_title'
15
15
  click 'css=img[alt=add]'
16
- assert_visible 'add31_title'
17
- type 'add31_title', 'add3_2'
16
+ assert_visible 'add33_title'
17
+ type 'add33_title', 'add3_2'
18
18
  click 'css=input[type=submit]'
19
- wait_for_not_visible 'add31_title'
19
+ wait_for_not_visible 'add33_title'
20
20
  verify_text 'css=.add3_2 a', 'add3_2'
21
21
  # should have correct parent
22
22
  verify_text 'css=.add3_2 span', 'Kill the bugs'
@@ -1,25 +1,25 @@
1
- open "/oo/testnode37.html?test=drop1"
1
+ open '/oo/testnode37.html?test=drop1'
2
2
  assert_element_not_present 'drop13_33'
3
3
 
4
4
  # Drag & Drop
5
5
  set_timeout 4000
6
- drag_and_drop_to_object "css=#drop11_33 > span.drag_handle", "drop12"
7
- wait_for_element_present "drop13_33"
8
- verify_text "drop13_33", "Art"
6
+ drag_and_drop_to_object 'css=#drop11_33 > span.drag_handle', 'drop12'
7
+ wait_for_element_present 'drop13_33'
8
+ verify_text 'drop13_33', 'Art'
9
9
  # Unlink
10
- click "css=img[alt=remove]"
11
- wait_for_element_not_present "drop13_33"
10
+ click 'css=img[alt=remove]'
11
+ wait_for_element_not_present 'drop13_33'
12
12
 
13
13
  # Restart
14
14
 
15
15
  # Drag & Drop
16
- drag_and_drop_to_object "css=#drop11_33 > span.drag_handle", "drop12"
17
- wait_for_element_present "drop13_33"
18
- verify_text "drop13_33", "Art"
16
+ drag_and_drop_to_object 'css=#drop11_33 > span.drag_handle', 'drop12'
17
+ wait_for_element_present 'drop13_33'
18
+ verify_text 'drop13_33', 'Art'
19
19
 
20
20
  # Make sure the changes are commited to db
21
- open "/oo/testnode37.html?test=drop1"
21
+ open '/oo/testnode37.html?test=drop1'
22
22
  assert_element_present 'drop13_33'
23
23
  # Unlink
24
- click "css=img[alt=remove]"
25
- wait_for_element_not_present "drop13_33"
24
+ click 'css=img[alt=remove]'
25
+ wait_for_element_not_present 'drop13_33'
@@ -1,30 +1,30 @@
1
- open "/oo/testnode37.html?test=drop2"
2
- assert_element_not_present 'drop22_29_33'
1
+ open '/oo/testnode37.html?test=drop2'
2
+ assert_element_not_present 'drop23_29_33'
3
3
 
4
4
  # Drag & Drop
5
5
  set_timeout 4000
6
6
  command 'setSpeed', 10
7
- drag_and_drop_to_object "css=#drop21_33 > span.drag_handle", "drop22_29"
8
- wait_for_element_present "drop22_29_33"
9
- verify_text "drop22_29_33", "Art"
7
+ drag_and_drop_to_object 'css=#drop21_33 > span.drag_handle', 'drop23_29'
8
+ wait_for_element_present 'drop23_29_33'
9
+ verify_text 'drop23_29_33', 'Art'
10
10
  # Unlink
11
- click "css=#drop22_29_33 img[alt=remove]"
12
- wait_for_element_not_present "drop22_29_33"
11
+ click 'css=#drop23_29_33 img[alt=remove]'
12
+ wait_for_element_not_present 'drop23_29_33'
13
13
 
14
14
  # Drag in other target
15
15
 
16
16
  # Drag & Drop
17
- drag_and_drop_to_object "css=#drop21_33 > span.drag_handle", "drop22_21"
18
- wait_for_element_present "drop22_21_33"
19
- verify_text "drop22_21_33", "Art"
17
+ drag_and_drop_to_object 'css=#drop21_33 > span.drag_handle', 'drop23_21'
18
+ wait_for_element_present 'drop23_21_33'
19
+ verify_text 'drop23_21_33', 'Art'
20
20
 
21
21
  # Make sure the changes are commited to db
22
- open "/oo/testnode37.html?test=drop2"
22
+ open '/oo/testnode37.html?test=drop2'
23
23
  assert_element_present 'drop23_21_33'
24
24
  # Should be
25
- # assert_element_present 'drop22_21_33'
25
+ # assert_element_present 'drop23_21_33'
26
26
  # Unlink
27
- click "css=#drop23_21_33 img[alt=remove]"
28
- wait_for_element_not_present "drop23_21_33"
27
+ click 'css=#drop23_21_33 img[alt=remove]'
28
+ wait_for_element_not_present 'drop23_21_33'
29
29
 
30
30
  command 'setSpeed', 0
@@ -1,36 +1,36 @@
1
1
  # Drag from list in each.
2
- open "/oo/testnode37.html?test=drop3"
3
- assert_element_not_present 'drop33_26'
2
+ open '/oo/testnode37.html?test=drop3'
3
+ assert_element_not_present 'drop34_26'
4
4
 
5
5
  # Drag & Drop
6
6
  set_timeout 4000
7
- drag_and_drop_to_object "css=#drop13_21_26 > span.drag_handle", "drop32"
8
- wait_for_element_present "drop33_26"
9
- verify_text "drop33_26", "crocodiles"
7
+ drag_and_drop_to_object 'css=#drop31_21_26 > span.drag_handle', 'drop33'
8
+ wait_for_element_present 'drop34_26'
9
+ verify_text 'drop34_26', 'crocodiles'
10
10
  # Unlink
11
- click "css=img[alt=remove]"
12
- wait_for_element_not_present "drop33_26"
11
+ click 'css=img[alt=remove]'
12
+ wait_for_element_not_present 'drop34_26'
13
13
 
14
14
  # Restart
15
15
 
16
16
  # Drag & Drop
17
- drag_and_drop_to_object "css=#drop13_21_26 > span.drag_handle", "drop32"
18
- wait_for_element_present "drop33_26"
19
- verify_text "drop33_26", "crocodiles"
17
+ drag_and_drop_to_object 'css=#drop31_21_26 > span.drag_handle', 'drop33'
18
+ wait_for_element_present 'drop34_26'
19
+ verify_text 'drop34_26', 'crocodiles'
20
20
 
21
21
  # Drag & Drop from other location
22
- command 'setSpeed', 500
23
- drag_and_drop_to_object "css=#drop13_11_12 > span.drag_handle", "drop32"
24
- wait_for_element_present "drop33_12"
25
- verify_text "drop33_12", "people"
22
+ command 'setSpeed', 800
23
+ drag_and_drop_to_object 'css=#drop31_11_12 > span.drag_handle', 'drop33'
24
+ wait_for_element_present 'drop34_12'
25
+ verify_text 'drop34_12', 'people'
26
26
  command 'setSpeed', 0
27
27
 
28
28
  # Make sure the changes are commited to db
29
- open "/oo/testnode37.html?test=drop3"
30
- assert_element_present 'drop33_26'
31
- assert_element_present 'drop33_12'
29
+ open '/oo/testnode37.html?test=drop3'
30
+ assert_element_present 'drop34_26'
31
+ assert_element_present 'drop34_12'
32
32
  # Unlink
33
- click "css=#drop33_26 img[alt=remove]"
34
- wait_for_element_not_present "drop33_26"
35
- click "css=#drop33_12 img[alt=remove]"
36
- wait_for_element_not_present "drop33_12"
33
+ click 'css=#drop34_26 img[alt=remove]'
34
+ wait_for_element_not_present 'drop34_26'
35
+ click 'css=#drop34_12 img[alt=remove]'
36
+ wait_for_element_not_present 'drop34_12'
@@ -1,6 +1,6 @@
1
1
  # Drag from list in each.
2
2
  open "/oo/testnode37.html?test=drop4"
3
- assert_element_not_present 'drop43_26'
3
+ assert_element_not_present 'drop44_26'
4
4
 
5
5
  # Drag & Drop
6
6
  set_timeout 4000