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
@@ -3,7 +3,7 @@
3
3
  <title do='title_for_layout' do='show' attr='title' name='page_title'>page title</title>
4
4
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
5
5
  <r:void name='stylesheets'>
6
- <r:stylesheets media='all' list='reset,zena,code,calendar'/>
6
+ <r:stylesheets media='all' list='reset,zena,code,calendar,grid'/>
7
7
  </r:void>
8
8
  <link href="style.css" rel="Stylesheet" type="text/css"/>
9
9
  <style>
@@ -21,7 +21,7 @@
21
21
  .test .drop {background:#ccc;}
22
22
  .test .drop_hover { background:#ace; border:2px dashed #99f;}
23
23
  </style>
24
- <r:javascripts list='prototype,effects,zena,dragdrop'/>
24
+ <r:javascripts list='prototype,effects,zena,dragdrop,grid'/>
25
25
  <r:uses_datebox/>
26
26
  </r:with>
27
27
 
@@ -94,6 +94,63 @@
94
94
  </table>
95
95
  </div>
96
96
 
97
+ //! edit4
98
+ <div class='test' id='edit4' do='selenium' do='root'>
99
+ <h3>edit4</h3>
100
+ <p>Edit element from list in place (makes form from each block).</p>
101
+ <ul do='pages'>
102
+ <li class='#{title}' do='each'><span class='title' do='title'/> <r:edit/></li>
103
+ </ul>
104
+ </div>
105
+
106
+ //! edit5
107
+ <div class='test' id='edit5' do='selenium' do='root'>
108
+ <h3>edit5</h3>
109
+ <p>Edit element from list in place (use a custom form).</p>
110
+ <ul do='pages'>
111
+ <li do='each'><span class='title' do='title'/> <r:edit/></li>
112
+ <li do='form'><r:input name='title'/> <r:select name='origin' nodes='contacts in site' attr='name'/></li>
113
+ </ul>
114
+ </div>
115
+
116
+ //! edit6
117
+ <div class='test' id='edit6' do='selenium' do='root'>
118
+ <h3>edit6</h3>
119
+ <p>Edit link after [block].</p>
120
+ <ul do='pages'>
121
+ <li do='each'><span class='title' do='title'/> <div do='block'>O:<span id='swap_span' do='if' test='origin' do='origin'/> <r:swap attr='origin' states=',bob' do='t'>swap</r:swap></div> <r:edit/></li>
122
+ <li do='form'><r:input name='title'/></li>
123
+ </ul>
124
+ </div>
125
+
126
+ //! swap1
127
+ <div class='test' id='swap1' do='selenium' do='root'>
128
+ <h3>swap1</h3>
129
+ <p>Swap value in [block].</p>
130
+ <div id='swap1_s' class='#{origin}' do='block'>
131
+ <span id='swap1_span' do='if' test='origin' do='origin'/>
132
+ <r:swap attr='origin' states=',bob' do='t'>swap</r:swap>
133
+ </div>
134
+ </div>
135
+
136
+ //! swap2
137
+ <div class='test' id='swap2' do='selenium' do='root'>
138
+ <h3>swap2</h3>
139
+ <p>Swap value in [block] with [drop] in same block.</p>
140
+ <ul do='pages in site limit 3'>
141
+ <li do='each' draggable='true' do='title'/>
142
+ </ul>
143
+
144
+ <div id='swap2_s' class='#{origin}' do='block'>
145
+ <span id='swap2_span' do='if' test='origin' do='origin'/>
146
+ <r:swap attr='origin' states=',bob' do='t'>swap</r:swap>
147
+ <ul do='drop' set='reference' change='receiver' do='references'>
148
+ <li class='#{id}' do='each'><r:unlink/> <r:title/></li>
149
+ </ul>
150
+ </div>
151
+ </div>
152
+
153
+ //! toggle1
97
154
  <div class='test' id='toggle1' do='selenium'>
98
155
  <h3>toggle1</h3>
99
156
  <p>Toggle relation in list.</p>
@@ -125,6 +182,32 @@
125
182
  </table>
126
183
  </div>
127
184
 
185
+ <div class='test' id='filter1' do='selenium'>
186
+ <h3>filter1</h3>
187
+ <p>Ajax live filter.</p>
188
+ <div id='filter1_form' do='filter' live='true'>
189
+ <input name='f' id='filter1_in' value=''/>
190
+ </div>
191
+ <ul id='filter1_list' do='block' do='nodes where title like "%#{params[:f]}%" in site limit 2'>
192
+ <li id='fil1_#{id}' do='each' do='title'/>
193
+ </ul>
194
+ </div>
195
+
196
+ <div class='test' id='filter2' do='selenium'>
197
+ <h3>filter2</h3>
198
+ <p>Ajax live filter (remote target).</p>
199
+ <div do='parent'>
200
+ <b do='title'/> //! Filter is not in same parent as filtered list. Explicit target.
201
+ <div id='filter2_form' do='filter' live='true' update='filter2_list'>
202
+ <input name='f' id='filter2_in' value=''/>
203
+ </div>
204
+ </div>
205
+ <ul id='filter2_list' do='block' do='nodes where title like "%#{params[:f]}%" in site limit 2'>
206
+ <li id='fil2_#{id}' do='each' do='title'/>
207
+ </ul>
208
+ </div>
209
+
210
+ //! form1
128
211
  <div class='test' id='form1' do='selenium'>
129
212
  <h3>form1</h3>
130
213
  <p>Form in [new] to create objects.</p>
@@ -135,6 +218,7 @@
135
218
  </r:new>
136
219
  </div>
137
220
 
221
+ //! form2
138
222
  <div class='test' id='form2' do='selenium'>
139
223
  <h3>form2</h3>
140
224
  <p>Form to update object.</p>
@@ -143,6 +227,19 @@
143
227
  </r:form>
144
228
  </div>
145
229
 
230
+ //! form3
231
+ <div class='test' id='form3' do='selenium'>
232
+ <h3>form3</h3>
233
+ <p>Form to update object with checkbox.</p>
234
+ <r:form node[v_status]='50'>
235
+ <ul>
236
+ <li><r:input label='t' name='title'/></li>
237
+ <li style='margin-top:1em; border-top:1px solid black;'><r:checkbox role='set_tag' nodes='tags in site'/></li>
238
+ <li><r:input type='submit'/></li>
239
+ </ul>
240
+ </r:form>
241
+ </div>
242
+
146
243
  <div class='test' id='drop1' do='selenium'>
147
244
  <h3>drop1</h3>
148
245
  <p>Create a relation by drag and dropping.</p>
@@ -215,317 +312,32 @@
215
312
  </ul>
216
313
  </r:projects>
217
314
  </div>
218
- <!-- OLD TESTS
219
- <div id='related'>
220
- <ul do='pages'>
221
- <li do='each'><p><b do='show' attr='title' edit='true' publish='true'/> <r:edit/></p>
222
- <r:zazen attr='summary' edit='true' publish='true'/>
223
- </li>
224
- </ul>
225
- This filter updates the "distant filter block test"
226
- <r:filter live='true' update='upfi'/>
227
- </div>
228
-
229
- <h3>publish = true</h3>
230
- <r:zazen attr='origin' edit='true' publish='true'/>
231
-
232
- <h3>publish = force</h3>
233
- <r:zazen attr='origin' edit='true' publish='force'/>
234
-
235
- <h3>pagination test</h3>
236
- (no ajax)
237
- <r:nodes in='site' order='zip' limit='8' paginate='p'>
238
- <p><b do='page_count'/> nodes</p>
239
- <p>
240
- <r:link mode='test' page='previous' do='t'>previous</r:link>
241
- <r:p/>/<r:page_count/>
242
- || <r:link page='list' mode='test'/> ||
243
- <r:link mode='test' page='next' do='t'>next</r:link>
244
- </p>
245
- <ul>
246
- <li do='each'><r:show attr='zip'/> <r:link/></li>
247
- </ul>
248
- </r:nodes>
249
-
250
- (ajax)
251
- <div id='pagir' do='block' do='nodes' in='site' order='zip' limit='8' paginate='p'>
252
- <p><b do='page_count'/> nodes</p>
253
- <p>
254
- <r:link mode='test' update='pagir' page='previous' do='t'>previous</r:link>
255
- <r:p/>/<r:page_count/>
256
- || <r:link page='list' update='pagir'/> ||
257
- <r:link mode='test' update='pagir' page='next' do='t'>next</r:link>
258
- </p>
259
- <ul>
260
- <li do='each'><r:show attr='zip'/> <r:link/></li>
261
- </ul>
262
- </div>
263
-
264
- <hr/>
265
- <h3>date query test</h3>
266
-
267
- <h4>event='week'</h4>
268
- <ul do='nodes in site' event='week'>
269
- <li do='each' do='link'/>
270
- </ul>
271
-
272
- <h4>event='today'</h4>
273
- <ul do='nodes in site' event='today'>
274
- <li do='each' do='link'/>
275
- </ul>
276
-
277
- <h4>event='4 days' (+/- 4 days)</h4>
278
- <ul do='nodes in site' event='4 days'>
279
- <li do='each' do='link'/>
280
- </ul>
281
-
282
- <h4>event='-4 hours' (last 4 hours)</h4>
283
- <ul do='nodes in site' event='-4 hours'>
284
- <li do='each' do='link'/>
285
- </ul>
286
-
287
- <h3>calendar test</h3>
288
- <div do='calendar' select='posts in site' attr='date'/>
289
-
290
- <h3>week calendar</h3>
291
- <div do='calendar' select='posts in site' attr='date' type='week'/>
292
-
293
- <h3>tiny calendar</h3>
294
- <div do='calendar' select='posts in site' attr='date' size='tiny'/>
295
-
296
- <h2>assign calendar</h2>
297
- <r:root>
298
- <div do='block' id='assign_cal'>
299
- <h3><b><r:show attr='title'/></b> calendar</h3>
300
- <r:calendar assign_as='reference' used='warn' split_hours='12' />
315
+
316
+ //! link create
317
+ <div class='test' id='link1' do='selenium'>
318
+ <h3>link-create</h3>
319
+ <p>Create objects with links.</p>
320
+ <ul>
321
+ <li id='link1_create' do='link' action='create' node[title]='%{New node}' node[klass]='%{Page}' do='t'>create page</li>
322
+ </ul>
323
+ <ul do='pages'>
324
+ <li do='each' do='link' action='destroy'/>
325
+ </ul>
301
326
  </div>
302
- </r:root>
303
- <r:projects in='site' do='each' join=', ' do='link' update='assign_cal'/>
304
-
305
- <div id='edit' do='block'>
306
- <h3>edit block test</h3>
307
- <r:text/>
308
- <r:edit publish='true'><r:if test='1 == 2'>blue<r:else>edit in else</r:else></r:if></r:edit>
309
- </div>
310
-
311
- <hr/>
312
-
313
- <h2>update target test</h2>
314
- <div id='bozo' do='block'><h3 do='title' actions='all'/><r:img mode='pv'/>
315
- <r:summary/>
316
- </div>
317
-
318
- <ul do='images in site'><r:each join=', ' do='link' update='bozo'/></ul>
319
-
320
- <hr/>
321
-
322
- <div id='upfi' do='block'>
323
- <h2>distant filter block test</h2>
324
- <ol do='pages where title like "[param:f]%" limit 5'><li do='each' do='title'/></ol>
325
- </div>
326
-
327
- <hr/>
328
-
329
- <div id='filter'>
330
- <h2>filter block test</h2>
331
- <r:filter live='true'/>
332
- <r:block do='pages where title like "[param:f]%" limit 5'>
333
- <ol><li do='each' do='title'/></ol>
334
- </r:block>
335
- </div>
336
-
337
- <hr/>
338
-
339
-
340
- <h2>data test</h2>
341
- <ol do='data'>
342
- <li do='each'><r:edit/> <b do='[text]'/> <r:show attr='value_a'/> <r:show attr='value_b'/><r:unlink/></li>
343
- <li do='form'><r:cancel/> <r:input name='text'/> <r:input name='value_a'/> <r:input name='value_b'/> <r:input type='submit'/></li>
344
- <li do='add' done='focus'/>
345
- <r:set var='hours' do='stat' find='sum' from='value_a'/> <r:set var='exp' do='stat' find='sum' of='value_b'/>
346
- <li><b><r:show var='hours'/> * 150.00 = <r:show eval='hours * 150'/> + <r:show var='exp'/> = <r:show eval='( hours * 150 ) + exp'/></b></li>
347
- </ol>
348
-
349
- <hr/>
350
-
351
- <h2>data group block test</h2>
352
- <ol id='bdata' do='block' do='data'>
353
- <r:group by='value_a'>
354
- <li>value: <b do='[value_a]'/></li>
355
- <li do='each'><r:edit/> <b do='[text]'/> <r:show attr='value_a'/> <r:show attr='value_b'/><r:unlink/></li>
356
- </r:group>
357
- <li do='form'><r:cancel/> <r:input name='text'/> <r:input name='value_a'/> <r:input name='value_b'/> <r:input type='submit'/></li>
358
- <li do='add' done='focus'/>
359
- <r:set var='hours' do='stat' find='sum' from='value_a'/> <r:set var='exp' do='stat' find='sum' of='value_b'/>
360
- <li><b><r:show var='hours'/> * 150.00 = <r:show eval='hours * 150'/> + <r:show var='exp'/> = <r:show eval='( hours * 150 ) + exp'/></b></li>
361
- </ol>
362
-
363
- <hr/>
364
-
365
- <h2>data block test</h2>
366
- <ol id='bdata' do='block' do='data'>
367
- <li do='each'><r:edit/> <b do='[text]'/> <r:show attr='value_a'/> <r:show attr='value_b'/><r:unlink/></li>
368
- <li do='form'><r:cancel/> <r:input name='text'/> <r:input name='value_a'/> <r:input name='value_b'/> <r:input type='submit'/></li>
369
- <li do='add' done='focus'/>
370
- <r:set var='hours' do='stat' find='sum' from='value_a'/> <r:set var='exp' do='stat' find='sum' of='value_b'/>
371
- <li><b><r:show var='hours'/> * 150.00 = <r:show eval='hours * 150'/> + <r:show var='exp'/> = <r:show eval='( hours * 150 ) + exp'/></b></li>
372
- </ol>
373
-
374
- <hr/>
375
-
376
- <h2>swap</h2>
377
- <style>
378
- .orange { background:orange;}
379
- .green { background:green;}
380
- </style>
381
- <div id='swap' class='orange' do='block' green_if='weight == 100'>
382
- <span do='swap' states=',100' attr='weight' publish='true'><r:if test='weight == 100'><r:t>done</r:t><r:else do='t'>open</r:else></r:if></span> weight: <b do='weight'/>
383
- </div>
384
-
385
- <h2>drag &amp; drop</h2>
386
-
387
- <r:images in='site' do='each' draggable='all' do='img' mode='tiny'/>
388
-
389
- <h3>drop set relation (drop in each)</h3>
390
-
391
- <ul do='tags in site'>
392
- //! drop in each
393
- <li style='border:1px solid #400; min_width:100px; min_height:100px;' do='each' do='drop' set='set_tag'>
394
- <b do='title'/>
395
- <ul do='context' select='tagged'><li do='each' do='unlink' do='img' mode='tiny'/></ul>
396
- </li>
397
- </ul>
398
-
399
- <h3>drop set relation (drop in each/add)</h3>
400
-
401
-
402
- <ul do='tags in site'>
403
- //! drop in each
404
- <li style='border:1px solid #400; min_width:100px; min_height:100px;' do='each' do='drop' set='set_tag'>
405
- <b do='title'/>
406
- <ul do='context' select='tagged'><li do='each' do='unlink' do='img' mode='tiny'/></ul>
407
- </li>
408
- <li do='add' klass='Tag'/>
409
- </ul>
410
-
411
- <h3>drop set attributes</h3>
412
-
413
- <ul do='projects in site'>
414
- <li style='border:1px solid #400; min_width:100px; min_height:100px;' do='each'><r:drop node[origin]='%Q{I am an icon for #{title}}' node[icon_for_id]='id'><b do='title' actions='all'/><r:icon where='1'><r:unlink do='img' mode='pv'/> <r:origin/> </r:icon></r:drop>
415
- </li>
416
- </ul>
417
-
418
- <h3>drop reload with param (comment on receiving)</h3>
419
- //! The strange %q{#{id}} means "lazy evaluation on drop".
420
- <div style='border:1px solid #400; min_width:100px; min_height:100px;' do='drop' change='params' d='%q{#{id}}' do='if' test='params[:d]'>
421
- <r:node where='id = #{params[:d]}' in='site'>
422
- Change icon to <r:img mode='tiny'/> (<r:title/>)?
423
- <r:set icon='this' do='main' do='form'>
424
- <r:input type='hidden' name='icon_id' value='#{icon.id}'/>
425
- <r:input type='hidden' name='m_title' value='icon changed to #{icon.title}'/>
426
- <r:textarea name='m_text'/>
427
- <r:input type='submit'/>
428
- </r:set>
429
- </r:node>
430
- <r:else>
431
- <r:icon do='img' mode='pv'/>
432
- please drop a node to change the icon
433
- <ul do='comments'>
434
- <li do='each'><b do='title'/> <b do='author.title'/>
435
- <div do='zazen' attr='text'/>
436
- </li>
437
- </ul></r:else>
438
- </div>
439
-
440
- <hr/>
441
-
442
- <h3>drop reload with param (comment on dropped)</h3>
443
-
444
- <r:images in='site' do='each' draggable='true' do='img' mode='tiny'/>
445
- //! The strange %q{#{id}} means "lazy evaluation on drop".
446
- <div style='border:1px solid #400; min_width:100px; min_height:100px;' do='drop' change='params' d='%q{#{id}}' do='if' test='params[:d]'>
447
- <r:node where='id = #{params[:d]}' in='site'>
448
- <r:img mode='tiny'/> (<r:title/>) Set as icon for <r:main do='title'/> ?
449
- //! We need to set 't_id' (template rendering object id) so that after form submit, the
450
- //! original (main) element is rendered and not the icon.
451
- <r:form node[icon_for_id]='main.id' node[m_title]='%{icon for #{main.title}}' t_id='main.id'>
452
- <r:input name='m_text'/>
327
+
328
+ //! grid edition
329
+ <div class='test' id='grid1' do='selenium'>
330
+ <h3>grid editing</h3>
331
+ <p>Attribute based grid.</p>
332
+ <r:form redir='url(this, :test =&gt;"grid1")'>
333
+ <r:grid attr='origin'/>
453
334
  <r:input type='submit'/>
454
335
  </r:form>
455
- </r:node>
456
- <r:else>
457
- please drop a node to change the icon in <b do='title'/>
458
- <r:icon>
459
- <r:img mode='pv'/>
460
- <ul do='comments'>
461
- <li do='each'><b do='title'/>
462
- <b do='author.title'/>
463
- <div do='zazen' attr='text'/>
464
- </li>
465
- </ul>
466
- </r:icon>
467
- </r:else>
468
- </div>
469
-
470
- <hr/>
471
-
472
- <h2>add in updated DOM</h2>
473
-
474
- <div id='add_and_update' do='block'>
475
- <h3 do='title'/>
476
- <ul do='pages'>
477
- <li do='each' do='[title]'/>
478
- <li do='add' klass='Page' update='add_and_update'/>
479
- </ul>
480
- </div>
481
-
482
- <r:projects in='site' do='each' join=', ' do='link' update='add_and_update'/>
483
-
484
- <hr/>
485
-
486
- <h2>simplest comments</h2>
487
-
488
- <ul do='comments'>
489
- <li do='each'><r:zazen attr='text'/></li>
490
- <li do='add'/>
491
- </ul>
492
-
493
- <h2>notes &amp; comments</h2>
494
-
495
- <div id='notes' do='posts' in='project' limit='10' order='date desc'>
496
- <ul class='note_list'>
497
- <li do='add' after='self'/>
498
- <li class='inline_form' do='form'>
499
- <p class='node_title'><r:input type='text' name='title' size='25'/></p>
500
- <p class='node_klass'> <r:select name='klass' root_class='Note' selected='Post'/></p>
501
- <p class='node_date'> <r:input type='date_box' name='date'/> </p>
502
- <p class='validate'> <r:input type="submit" value='validate' do='void' tset_value='validate'/></p>
503
- </li>
504
- <li class='note' do='each'>
505
- <div class='header'>
506
- <p class='date' do='show' attr='date' tformat='full_date'>04.10</p>
507
- <h2 class='title' do='title' actions='all'/>
508
- <div class='summary' do ='summary'/>
509
- </div>
510
- <r:text/>
511
- <ul do='comments'>
512
- <li do='each'><b do='title'/> <b do='author_name'/>
513
- <div do='zazen' attr='text'/>
514
- </li>
515
- <li do='add'/>
516
- <li do='form'>
517
- <p><r:input name='title'/></p>
518
- <p><r:textarea name='text'/></p>
519
- <p><r:input type='submit'/></p>
520
- </li>
521
- </ul>
522
- <div class='clear'></div>
523
- </li>
524
- </ul>
525
- </div>
526
-
527
-
528
- <hr/>
529
- -->
336
+ <r:js>
337
+ $$('.grid').each(function(e) {
338
+ Grid.make(e);
339
+ });
340
+ </r:js>
341
+ </div>
530
342
  </r:with>
531
343
  </r:include>
@@ -17,4 +17,9 @@ translations:
17
17
  not_found: sans
18
18
  crop: rogner
19
19
  no_parent: pas de parent
20
- admin_interface: interface admin
20
+ admin_interface: interface admin
21
+ # Used to test options list in [select].
22
+ assigned_: '--'
23
+ assigned_1: foo
24
+ assigned_2: bar
25
+ assigned_3: baz
@@ -32,7 +32,7 @@ class AclsControllerTest < Zena::Controller::TestCase
32
32
 
33
33
  should 'respond missing' do
34
34
  assert_difference('Acl.count', 0) do
35
- post :create, :acl => { :query => 'assigned_project', :group_id => groups_id(:sky) }
35
+ post :create, :acl => { :query => '%q{assigned_project}', :group_id => groups_id(:sky) }
36
36
  end
37
37
 
38
38
  assert_response :missing
@@ -45,7 +45,7 @@ class AclsControllerTest < Zena::Controller::TestCase
45
45
 
46
46
  should 'create acl' do
47
47
  assert_difference('Acl.count', 1) do
48
- post :create, :acl => { :query => 'assigned_project', :group_id => groups_id(:sky) }
48
+ post :create, :acl => { :query => '%q{assigned_project}', :group_id => groups_id(:sky) }
49
49
  end
50
50
  end
51
51
  end # with admin rights
@@ -178,7 +178,7 @@ class NodesControllerTest < Zena::Controller::TestCase
178
178
 
179
179
  should 'insert cachestamp and render template' do
180
180
  get_subject
181
- #
181
+ #
182
182
  assert_redirected_to "/en/page18_info.js?#{nodes(:projects).updated_at.to_i}"
183
183
  get 'show', :path => subject[:path], :cachestamp => nodes(:projects).updated_at.to_i.to_s, :prefix => 'en'
184
184
  assert_response :success
@@ -314,7 +314,7 @@ class NodesControllerTest < Zena::Controller::TestCase
314
314
  should 'succeed' do
315
315
  post_subject
316
316
  node = assigns(:node)
317
- assert_redirected_to "/oo/blog#{node.zip}.html"
317
+ assert_redirected_to "/oo/blog#{node.zip}.html?new=true"
318
318
  end
319
319
 
320
320
  should 'set type and vclass' do
@@ -527,9 +527,9 @@ class NodesControllerTest < Zena::Controller::TestCase
527
527
  {:action => 'create', :controller => 'nodes', :node => {:parent_id => nodes_zip(:zena), :title => 'hello'}, :mode => 'info'}
528
528
  end
529
529
 
530
- should 'redirect to node with mode' do
530
+ should 'redirect to node with mode with new' do
531
531
  post_subject
532
- assert_redirected_to "/oo/page#{assigns(:node).zip}_info.html"
532
+ assert_redirected_to "/oo/page#{assigns(:node).zip}_info.html?new=true"
533
533
  end
534
534
  end # with a redir param
535
535
  end # creating a node
@@ -700,7 +700,7 @@ class NodesControllerTest < Zena::Controller::TestCase
700
700
  # cache info ok
701
701
  get 'show', :prefix => 'en', :path => ["image#{node.zip}.jpg"], :cachestamp => node.updated_at.to_i
702
702
  assert_response :success
703
- assert File.exist?("#{SITES_ROOT}/test.host/public/en/image#{node.zip}.jpg")
703
+ assert File.exist?(make_cache_path("#{SITES_ROOT}/test.host/public/en/image#{node.zip}.jpg", node))
704
704
  end
705
705
  end
706
706
  end
@@ -761,6 +761,10 @@ END:VCALENDAR
761
761
  end
762
762
  end
763
763
 
764
+ def make_cache_path(file, node)
765
+ "#{file}.#{node.updated_at.to_i}"
766
+ end
767
+
764
768
  def test_cache_css_auto_publish
765
769
  test_site('zena')
766
770
  Site.connection.execute "UPDATE sites set auto_publish = #{Zena::Db::TRUE}, redit_time = 7200 WHERE id = #{sites_id(:zena)}"
@@ -774,18 +778,20 @@ END:VCALENDAR
774
778
  assert !File.exist?(filename)
775
779
  get 'show', :prefix => 'en', :path => [name], :cachestamp => node.updated_at.to_i
776
780
  assert_response :success
777
- assert File.exist?(filename) # cached page created
778
- assert_match %r[body \{ background: #eee; color:#444;], File.read(filename)
781
+ cache1 = make_cache_path(filename, node)
782
+ assert File.exist?(cache1) # cached page created
783
+ assert_match %r[body \{ background: #eee; color:#444;], File.read(cache1)
779
784
  put 'save_text', :id => nodes_zip(:style_css), :node => {'text' => '/* empty */'}
780
785
  node = assigns['node']
781
786
  assert node.errors.empty?
782
787
  assert_equal Zena::Status::Pub, node.version.status
783
788
  assert_equal versions_id(:style_css_en), node.version.id # auto publish
784
- assert !File.exist?(filename) # old cached page removed
789
+ assert !File.exist?(cache1) # old cached page removed
785
790
  get 'show', :prefix => 'en', :path => [name], :cachestamp => node.updated_at.to_i
786
791
  assert_response :success
787
- assert File.exist?(filename) # cached page created again
788
- assert_match %r[/\* empty \*/], File.read(filename)
792
+ cache2 = make_cache_path(filename, node)
793
+ assert File.exist?(cache2) # cached page created again
794
+ assert_match %r[/\* empty \*/], File.read(cache2)
789
795
  end
790
796
  end
791
797
  end
@@ -895,7 +901,7 @@ END:VCALENDAR
895
901
  img = secure!(Node) { nodes(:bird_jpg) }
896
902
  assert_not_equal pub_version_id, img.version.id
897
903
  assert_not_equal pub_content_id, img.version.attachment.id
898
- assert_equal 2010, img.size
904
+ assert_equal 2002, img.size
899
905
  assert_equal 160, img.width
900
906
  assert_equal 80, img.height
901
907
  end
@@ -203,7 +203,7 @@ class VirtualClassesControllerTest < Zena::Controller::TestCase
203
203
  post_subject
204
204
  assert_response :success
205
205
  diff = assigns(:diff)
206
- assert_match(/<ins class="differ">Foo/, diff)
206
+ assert_match(/<ins class="differ">.*Foo/, diff)
207
207
  end
208
208
  end
209
209
  end # importing virtual class definitions
@@ -51,6 +51,15 @@ project:
51
51
  sql: "[%Q{SELECT nodes.* FROM nodes WHERE #{secure_scope('nodes')} AND nodes.id = ? ORDER BY nodes.zip ASC}, @node.get_project_id]"
52
52
  res: 'Clean Water project'
53
53
 
54
+ date_year:
55
+ src: "nodes where created_at = 2006 in site"
56
+ # sql: "%Q{SELECT nodes.* FROM nodes WHERE #{secure_scope('nodes')} GROUP BY nodes.project_id HAVING MIN(nodes.created_at) = 2006 ORDER BY nodes.zip ASC}"
57
+ res: ""
58
+
59
+ min:
60
+ src: "nodes select created_at.min as mat in site group by project_id"
61
+ sql: "%Q{SELECT nodes.*,MIN(nodes.created_at) AS `mat` FROM nodes WHERE #{secure_scope('nodes')} GROUP BY nodes.project_id ORDER BY nodes.zip ASC}"
62
+
54
63
  many_alternatives:
55
64
  src: tagged in site or images in site or tags in site
56
65
  sql: "%Q{SELECT nodes.*,links.id AS `link_id`,links.status AS `l_status`,links.comment AS `l_comment`,links.date AS `l_date` FROM links,nodes WHERE #{secure_scope('nodes')} AND ((nodes.id = links.source_id AND links.relation_id = _ID(node_has_tags)) OR (nodes.kpath LIKE 'NDI%' AND links.id = 0) OR (nodes.kpath LIKE 'NPT%' AND links.id = 0)) GROUP BY nodes.id ORDER BY nodes.zip ASC}"
@@ -45,4 +45,4 @@ date_tz_date:
45
45
  # This date is translated to 2006-04-10 17:0 UTC
46
46
  src: "nodes where created_at.date = #{date}"
47
47
  sql: '/INTERVAL 1 DAY/'
48
- res: "crocodiles"
48
+ res: "crocodiles"