zena 1.1.3 → 1.2.0

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