browsercms 3.1.5 → 3.3.0.beta

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 (425) hide show
  1. data/app/controllers/cms/base_controller.rb +3 -3
  2. data/app/controllers/cms/content_block_controller.rb +2 -2
  3. data/app/controllers/cms/content_controller.rb +5 -4
  4. data/app/controllers/cms/error_handling.rb +1 -1
  5. data/app/controllers/cms/routes_controller.rb +4 -5
  6. data/app/controllers/cms/section_nodes_controller.rb +1 -6
  7. data/app/controllers/cms/sections_controller.rb +2 -3
  8. data/app/controllers/cms/tasks_controller.rb +3 -0
  9. data/app/controllers/cms/users_controller.rb +1 -1
  10. data/app/helpers/cms/application_helper.rb +137 -34
  11. data/app/helpers/cms/form_builder.rb +33 -21
  12. data/app/helpers/cms/page_helper.rb +43 -10
  13. data/app/helpers/cms/path_helper.rb +1 -1
  14. data/app/helpers/cms/rendering_helper.rb +3 -4
  15. data/app/helpers/cms/section_nodes_helper.rb +5 -43
  16. data/app/models/abstract_file_block.rb +1 -16
  17. data/app/models/attachment.rb +57 -22
  18. data/app/models/category.rb +4 -4
  19. data/app/models/category_type.rb +2 -2
  20. data/app/models/cms/view_context.rb +46 -0
  21. data/app/models/connector.rb +7 -6
  22. data/app/models/content_type.rb +3 -3
  23. data/app/models/dynamic_view.rb +1 -1
  24. data/app/models/email_message.rb +2 -2
  25. data/app/models/file_block.rb +12 -0
  26. data/app/models/group.rb +4 -4
  27. data/app/models/group_type.rb +4 -4
  28. data/app/models/html_block.rb +1 -1
  29. data/app/models/image_block.rb +12 -0
  30. data/app/models/link.rb +22 -5
  31. data/app/models/page.rb +87 -46
  32. data/app/models/page_route.rb +61 -6
  33. data/app/models/permission.rb +1 -1
  34. data/app/models/portlet.rb +14 -4
  35. data/app/models/section.rb +48 -86
  36. data/app/models/section_node.rb +25 -40
  37. data/app/models/site.rb +1 -1
  38. data/app/models/tag.rb +1 -1
  39. data/app/models/task.rb +8 -7
  40. data/app/models/user.rb +2 -7
  41. data/app/portlets/forgot_password_portlet.rb +6 -2
  42. data/app/portlets/reset_password_portlet.rb +1 -1
  43. data/app/views/cms/blocks/_toolbar.html.erb +1 -1
  44. data/app/views/cms/blocks/_toolbar_for_collection.html.erb +3 -6
  45. data/app/views/cms/blocks/_toolbar_for_member.html.erb +3 -5
  46. data/app/views/cms/blocks/edit.html.erb +4 -4
  47. data/app/views/cms/blocks/index.html.erb +7 -7
  48. data/app/views/cms/blocks/new.html.erb +4 -4
  49. data/app/views/cms/blocks/show.html.erb +2 -2
  50. data/app/views/cms/blocks/usages.html.erb +2 -2
  51. data/app/views/cms/blocks/versions.html.erb +4 -4
  52. data/app/views/cms/cache/show.html.erb +2 -2
  53. data/app/views/cms/categories/_form.html.erb +2 -2
  54. data/app/views/cms/connectors/new.html.erb +6 -8
  55. data/app/views/cms/content/no_page.html.erb +1 -1
  56. data/app/views/cms/content/show.html.erb +2 -7
  57. data/app/views/cms/dashboard/_page_drafts.html.erb +1 -1
  58. data/app/views/cms/dashboard/_tasks.html.erb +1 -1
  59. data/app/views/cms/dashboard/index.html.erb +1 -1
  60. data/app/views/cms/dynamic_views/_form.html.erb +2 -2
  61. data/app/views/cms/dynamic_views/index.html.erb +7 -10
  62. data/app/views/cms/email_messages/show.html.erb +2 -2
  63. data/app/views/cms/file_blocks/_form.html.erb +4 -4
  64. data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +2 -2
  65. data/app/views/cms/form_builder/_cms_file_field.html.erb +2 -2
  66. data/app/views/cms/form_builder/_cms_tag_list.html.erb +2 -2
  67. data/app/views/cms/form_builder/_cms_text_editor.html.erb +2 -2
  68. data/app/views/cms/groups/_form.html.erb +5 -5
  69. data/app/views/cms/groups/_permissions.html.erb +4 -4
  70. data/app/views/cms/groups/_sections.html.erb +1 -2
  71. data/app/views/cms/groups/index.html.erb +1 -1
  72. data/app/views/cms/html_blocks/render.html.erb +1 -1
  73. data/app/views/cms/image_blocks/_form.html.erb +4 -5
  74. data/app/views/cms/links/_form.html.erb +1 -1
  75. data/app/views/cms/links/edit.html.erb +2 -2
  76. data/app/views/cms/links/new.html.erb +2 -2
  77. data/app/views/cms/page_routes/_form.html.erb +2 -2
  78. data/app/views/cms/page_routes/index.html.erb +6 -9
  79. data/app/views/cms/page_routes/show.html.erb +5 -8
  80. data/app/views/cms/pages/_edit_connector.html.erb +1 -1
  81. data/app/views/cms/pages/_form.html.erb +3 -3
  82. data/app/views/cms/pages/edit.html.erb +2 -2
  83. data/app/views/cms/pages/new.html.erb +7 -7
  84. data/app/views/cms/pages/versions.html.erb +4 -4
  85. data/app/views/cms/redirects/_form.html.erb +2 -2
  86. data/app/views/cms/redirects/index.html.erb +8 -7
  87. data/app/views/cms/routes/index.html.erb +2 -2
  88. data/app/views/cms/section_nodes/_link.html.erb +3 -6
  89. data/app/views/cms/section_nodes/_node.html.erb +4 -13
  90. data/app/views/cms/section_nodes/_page.html.erb +7 -13
  91. data/app/views/cms/section_nodes/_section.html.erb +8 -24
  92. data/app/views/cms/section_nodes/_section_node.html.erb +10 -0
  93. data/app/views/cms/section_nodes/index.html.erb +18 -30
  94. data/app/views/cms/sections/_form.html.erb +4 -6
  95. data/app/views/cms/sections/edit.html.erb +2 -2
  96. data/app/views/cms/sections/index.html.erb +3 -3
  97. data/app/views/cms/sections/new.html.erb +3 -3
  98. data/app/views/cms/sessions/new.html.erb +3 -3
  99. data/app/views/cms/shared/_pagination.html.erb +1 -1
  100. data/app/views/cms/shared/error.html.erb +1 -1
  101. data/app/views/cms/tags/render.html.erb +2 -2
  102. data/app/views/cms/tasks/new.html.erb +4 -4
  103. data/app/views/cms/users/_form.html.erb +3 -3
  104. data/app/views/cms/users/_toolbar.html.erb +3 -3
  105. data/app/views/cms/users/change_password.html.erb +5 -5
  106. data/app/views/cms/users/edit.html.erb +2 -2
  107. data/app/views/cms/users/index.html.erb +4 -4
  108. data/app/views/cms/users/new.html.erb +2 -2
  109. data/app/views/cms/users/show.html.erb +16 -16
  110. data/app/views/layouts/_cms_toolbar.html.erb +5 -5
  111. data/app/views/layouts/_page_toolbar.html.erb +11 -11
  112. data/app/views/layouts/cms/_footer.erb +1 -1
  113. data/app/views/layouts/cms/_head.html.erb +2 -6
  114. data/app/views/layouts/cms/administration.html.erb +32 -32
  115. data/app/views/layouts/cms/content_library.html.erb +5 -5
  116. data/app/views/layouts/cms/toolbar.html.erb +1 -1
  117. data/app/views/portlets/email_page/render.html.erb +2 -2
  118. data/app/views/portlets/forgot_password/render.html.erb +1 -1
  119. data/app/views/portlets/login/render.html.erb +4 -2
  120. data/app/views/portlets/reset_password/render.html.erb +1 -1
  121. data/app/views/tests/pretend/open_with_layout.html.erb +1 -1
  122. data/bin/bcms +0 -0
  123. data/bin/bcms-upgrade +232 -0
  124. data/bin/browsercms +2 -2
  125. data/browsercms.gemspec +16 -14
  126. data/db/migrate/20100705083859_browsercms_3_3_0.rb +56 -0
  127. data/db/seeds.rb +58 -0
  128. data/doc/guides/html/authentication.html +448 -192
  129. data/doc/guides/html/build_it_yourself.html +454 -175
  130. data/doc/guides/html/building_modules.html +451 -220
  131. data/doc/guides/html/building_templates.html +448 -498
  132. data/doc/guides/html/content_blocks.html +450 -470
  133. data/doc/guides/html/customizing_browsercms.html +453 -169
  134. data/doc/guides/html/deployment_guide.html +443 -82
  135. data/doc/guides/html/files/bcmsorg.js +28 -0
  136. data/doc/guides/html/files/clearfix.css +8 -0
  137. data/doc/guides/html/files/cufon.js +7 -0
  138. data/doc/guides/html/files/global.css +190 -0
  139. data/doc/guides/html/files/helvetica.js +91 -0
  140. data/doc/guides/html/files/jquery.js +11 -0
  141. data/doc/guides/html/getting_started.html +454 -213
  142. data/doc/guides/html/index.html +454 -174
  143. data/doc/guides/html/installing_modules.html +454 -186
  144. data/doc/guides/html/portlets.html +451 -232
  145. data/doc/guides/html/user_guide.html +452 -270
  146. data/doc/guides/html/writing_guides.html +454 -161
  147. data/lib/acts_as_list.rb +1 -1
  148. data/lib/browsercms.rb +10 -6
  149. data/lib/cms/acts.rb +7 -0
  150. data/lib/cms/authentication.rb +4 -0
  151. data/lib/cms/authentication/controller.rb +1 -1
  152. data/lib/cms/behaviors.rb +1 -1
  153. data/lib/cms/behaviors/archiving.rb +2 -2
  154. data/lib/cms/behaviors/attaching.rb +28 -43
  155. data/lib/cms/behaviors/categorizing.rb +1 -1
  156. data/lib/cms/behaviors/connecting.rb +27 -12
  157. data/lib/cms/behaviors/dynamic_attributes.rb +8 -5
  158. data/lib/cms/behaviors/hiding.rb +2 -2
  159. data/lib/cms/behaviors/publishing.rb +32 -22
  160. data/lib/cms/behaviors/rendering.rb +41 -18
  161. data/lib/cms/behaviors/searching.rb +1 -1
  162. data/lib/cms/behaviors/soft_deleting.rb +58 -29
  163. data/lib/cms/behaviors/taggable.rb +1 -1
  164. data/lib/cms/behaviors/userstamping.rb +5 -4
  165. data/lib/cms/behaviors/versioning.rb +192 -111
  166. data/lib/cms/content_rendering_support.rb +3 -3
  167. data/lib/cms/date_picker.rb +23 -0
  168. data/lib/cms/engine.rb +46 -0
  169. data/lib/cms/extensions.rb +1 -1
  170. data/lib/cms/extensions/active_record/errors.rb +2 -2
  171. data/lib/cms/extensions/hash.rb +4 -2
  172. data/lib/cms/extensions/string.rb +7 -2
  173. data/lib/cms/init.rb +32 -21
  174. data/lib/cms/module.rb +22 -0
  175. data/lib/cms/module_installation.rb +38 -0
  176. data/lib/cms/routes.rb +127 -115
  177. data/lib/cms/version.rb +2 -2
  178. data/lib/generators/browser_cms.rb +12 -0
  179. data/lib/generators/browser_cms/cms/USAGE +2 -0
  180. data/lib/generators/browser_cms/cms/cms_generator.rb +36 -0
  181. data/{rails_generators/browser_cms → lib/generators/browser_cms/cms}/templates/README +0 -0
  182. data/{rails_generators/browser_cms_demo_site → lib/generators/browser_cms/demo_site}/USAGE +0 -0
  183. data/lib/generators/browser_cms/demo_site/demo_site_generator.rb +138 -0
  184. data/lib/generators/browser_cms/demo_site/templates/demo_site.rake +11 -0
  185. data/{rails_generators/browser_cms_demo_site/templates/migration.rb → lib/generators/browser_cms/demo_site/templates/migration.erb} +2 -8
  186. data/lib/generators/cms/content_block/USAGE +22 -0
  187. data/lib/generators/cms/content_block/content_block_generator.rb +55 -0
  188. data/{rails_generators → lib/generators/cms}/content_block/templates/_form.html.erb +0 -0
  189. data/{rails_generators → lib/generators/cms}/content_block/templates/content_block.rb +0 -0
  190. data/{rails_generators → lib/generators/cms}/content_block/templates/controller.rb +0 -0
  191. data/{rails_generators → lib/generators/cms}/content_block/templates/functional_test.erb +0 -0
  192. data/{rails_generators/content_block/templates/migration.rb → lib/generators/cms/content_block/templates/migration.erb} +1 -1
  193. data/{rails_generators → lib/generators/cms}/content_block/templates/render.html.erb +0 -0
  194. data/{rails_generators → lib/generators/cms}/content_block/templates/unit_test.erb +0 -0
  195. data/lib/generators/cms/install/USAGE +8 -0
  196. data/lib/generators/cms/install/install_generator.rb +20 -0
  197. data/{rails_generators → lib/generators/cms}/portlet/USAGE +3 -16
  198. data/lib/generators/cms/portlet/portlet_generator.rb +38 -0
  199. data/{rails_generators → lib/generators/cms}/portlet/templates/_form.html.erb +0 -0
  200. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet.rb +0 -0
  201. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet_helper.rb +0 -0
  202. data/{rails_generators → lib/generators/cms}/portlet/templates/render.html.erb +0 -0
  203. data/{rails_generators → lib/generators/cms}/portlet/templates/unit_test.erb +0 -0
  204. data/{rails_generators → lib/generators/cms}/template/USAGE +1 -1
  205. data/lib/generators/cms/template/template_generator.rb +18 -0
  206. data/lib/generators/cms/template/templates/template.erb +2 -0
  207. data/lib/generators/cms/upgrade_module/README.txt +3 -0
  208. data/lib/generators/cms/upgrade_module/templates/20100705083859_browsercms_3_3_0.rb +56 -0
  209. data/lib/generators/cms/upgrade_module/templates/README +1 -0
  210. data/lib/generators/cms/upgrade_module/templates/USAGE.erb +10 -0
  211. data/lib/generators/cms/upgrade_module/templates/build_gem.rake +5 -0
  212. data/lib/generators/cms/upgrade_module/templates/engine.erb +7 -0
  213. data/lib/generators/cms/upgrade_module/templates/gemspec.erb +25 -0
  214. data/lib/generators/cms/upgrade_module/templates/gitignore.erb +11 -0
  215. data/lib/generators/cms/upgrade_module/templates/install.erb +9 -0
  216. data/lib/generators/cms/upgrade_module/templates/module_file.erb +3 -0
  217. data/lib/generators/cms/upgrade_module/templates/routes.erb +7 -0
  218. data/lib/generators/cms/upgrade_module/upgrade_module_generator.rb +61 -0
  219. data/lib/tasks/build_gem.rake +1 -0
  220. data/lib/tasks/cms.rake +34 -6
  221. data/lib/tasks/cucumber.rake +53 -0
  222. data/lib/tasks/db.rake +2 -2
  223. data/public/javascripts/cms/application.js +144 -135
  224. data/public/javascripts/cms/sitemap.js +383 -357
  225. data/public/javascripts/jquery-ui.js +782 -591
  226. data/public/javascripts/jquery.cookie.js +38 -43
  227. data/public/javascripts/jquery.js +13 -8
  228. data/public/javascripts/jquery.taglist.js +7 -0
  229. data/public/stylesheets/cms/date_picker.css +49 -40
  230. data/rails/init.rb +2 -3
  231. data/templates/blank.rb +13 -7
  232. data/templates/demo.rb +15 -7
  233. data/templates/module.rb +12 -75
  234. metadata +87 -407
  235. data/app/helpers/cms/content_block_helper.rb +0 -27
  236. data/app/views/layouts/cms/thickbox.html.erb +0 -24
  237. data/db/migrate/20120117144039_browsercms315.rb +0 -94
  238. data/db/migrate/20121114172307_load_seeds.rb +0 -70
  239. data/lib/cms/addressable.rb +0 -83
  240. data/lib/cms/error_pages.rb +0 -8
  241. data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
  242. data/public/images/cms/thickbox/macFFBgHack.png +0 -0
  243. data/public/javascripts/jquery.contextMenu.js +0 -211
  244. data/public/javascripts/jquery.dimensions.js +0 -119
  245. data/public/javascripts/jquery.thickbox.js +0 -10
  246. data/public/stylesheets/cms/jquery.contextMenu.css +0 -61
  247. data/public/stylesheets/cms/thickbox.css +0 -163
  248. data/rails_generators/browser_cms/USAGE +0 -2
  249. data/rails_generators/browser_cms/browser_cms_generator.rb +0 -35
  250. data/rails_generators/browser_cms_demo_site/browser_cms_demo_site_generator.rb +0 -63
  251. data/rails_generators/content_block/USAGE +0 -32
  252. data/rails_generators/content_block/content_block_generator.rb +0 -69
  253. data/rails_generators/portlet/portlet_generator.rb +0 -35
  254. data/rails_generators/template/template_generator.rb +0 -18
  255. data/rails_generators/template/templates/template.erb +0 -3
  256. data/test/custom_assertions.rb +0 -74
  257. data/test/factories.rb +0 -111
  258. data/test/factories/sitemap_factories.rb +0 -28
  259. data/test/fixtures/connectors.yml +0 -97
  260. data/test/fixtures/content_type_groups.yml +0 -13
  261. data/test/fixtures/content_types.yml +0 -50
  262. data/test/fixtures/dynamic_view_versions.yml +0 -26
  263. data/test/fixtures/dynamic_views.yml +0 -26
  264. data/test/fixtures/group_permissions.yml +0 -16
  265. data/test/fixtures/group_sections.yml +0 -31
  266. data/test/fixtures/group_type_permissions.yml +0 -11
  267. data/test/fixtures/group_types.yml +0 -25
  268. data/test/fixtures/groups.yml +0 -25
  269. data/test/fixtures/html_block_versions.yml +0 -67
  270. data/test/fixtures/html_blocks.yml +0 -63
  271. data/test/fixtures/page_versions.yml +0 -265
  272. data/test/fixtures/pages.yml +0 -85
  273. data/test/fixtures/permissions.yml +0 -28
  274. data/test/fixtures/section_nodes.yml +0 -46
  275. data/test/fixtures/sections.yml +0 -19
  276. data/test/fixtures/sites.yml +0 -9
  277. data/test/fixtures/user_group_memberships.yml +0 -11
  278. data/test/fixtures/users.yml +0 -15
  279. data/test/functional/cms/cache_controller_test.rb +0 -14
  280. data/test/functional/cms/categories_controller_test.rb +0 -25
  281. data/test/functional/cms/connectors_controller_test.rb +0 -60
  282. data/test/functional/cms/content_block_controller_test.rb +0 -120
  283. data/test/functional/cms/content_controller_test.rb +0 -439
  284. data/test/functional/cms/content_types_controller_test.rb +0 -18
  285. data/test/functional/cms/dashboard_controller_test.rb +0 -16
  286. data/test/functional/cms/dynamic_views_controller_test.rb +0 -52
  287. data/test/functional/cms/file_blocks_controller_test.rb +0 -52
  288. data/test/functional/cms/groups_controller_test.rb +0 -50
  289. data/test/functional/cms/home_controller_test.rb +0 -156
  290. data/test/functional/cms/html_blocks_controller_test.rb +0 -164
  291. data/test/functional/cms/image_blocks_controller_test.rb +0 -82
  292. data/test/functional/cms/links_controller_test.rb +0 -148
  293. data/test/functional/cms/pages_controller_test.rb +0 -227
  294. data/test/functional/cms/portlets_controller_test.rb +0 -67
  295. data/test/functional/cms/section_nodes_controller_test.rb +0 -112
  296. data/test/functional/cms/sections_controller_test.rb +0 -227
  297. data/test/functional/cms/sessions_controller_test.rb +0 -76
  298. data/test/functional/cms/toolbar_controller_test.rb +0 -64
  299. data/test/functional/cms/users_controller_test.rb +0 -231
  300. data/test/functional/tests/pretend_controller_test.rb +0 -57
  301. data/test/integration/cms/ckeditor_test.rb +0 -30
  302. data/test/integration/cms/password_management_test.rb +0 -56
  303. data/test/integration/login_test.rb +0 -14
  304. data/test/integration/sitemap_performance_test.rb +0 -26
  305. data/test/selenium-core/Blank.html +0 -7
  306. data/test/selenium-core/InjectedRemoteRunner.html +0 -8
  307. data/test/selenium-core/RemoteRunner.html +0 -110
  308. data/test/selenium-core/SeleniumLog.html +0 -109
  309. data/test/selenium-core/TestPrompt.html +0 -145
  310. data/test/selenium-core/TestRunner-splash.html +0 -55
  311. data/test/selenium-core/TestRunner.hta +0 -176
  312. data/test/selenium-core/TestRunner.html +0 -176
  313. data/test/selenium-core/domviewer/butmin.gif +0 -0
  314. data/test/selenium-core/domviewer/butplus.gif +0 -0
  315. data/test/selenium-core/domviewer/domviewer.css +0 -298
  316. data/test/selenium-core/domviewer/domviewer.html +0 -16
  317. data/test/selenium-core/domviewer/selenium-domviewer.js +0 -205
  318. data/test/selenium-core/icons/all.png +0 -0
  319. data/test/selenium-core/icons/continue.png +0 -0
  320. data/test/selenium-core/icons/continue_disabled.png +0 -0
  321. data/test/selenium-core/icons/pause.png +0 -0
  322. data/test/selenium-core/icons/pause_disabled.png +0 -0
  323. data/test/selenium-core/icons/selected.png +0 -0
  324. data/test/selenium-core/icons/step.png +0 -0
  325. data/test/selenium-core/icons/step_disabled.png +0 -0
  326. data/test/selenium-core/iedoc-core.xml +0 -1515
  327. data/test/selenium-core/iedoc.xml +0 -1469
  328. data/test/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
  329. data/test/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
  330. data/test/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
  331. data/test/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
  332. data/test/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
  333. data/test/selenium-core/lib/prototype.js +0 -2006
  334. data/test/selenium-core/lib/scriptaculous/builder.js +0 -101
  335. data/test/selenium-core/lib/scriptaculous/controls.js +0 -815
  336. data/test/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
  337. data/test/selenium-core/lib/scriptaculous/effects.js +0 -958
  338. data/test/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
  339. data/test/selenium-core/lib/scriptaculous/slider.js +0 -283
  340. data/test/selenium-core/lib/scriptaculous/unittest.js +0 -383
  341. data/test/selenium-core/scripts/find_matching_child.js +0 -69
  342. data/test/selenium-core/scripts/htmlutils.js +0 -894
  343. data/test/selenium-core/scripts/injection.html +0 -72
  344. data/test/selenium-core/scripts/js2html.js +0 -70
  345. data/test/selenium-core/scripts/narcissus-defs.js +0 -175
  346. data/test/selenium-core/scripts/narcissus-exec.js +0 -1054
  347. data/test/selenium-core/scripts/narcissus-parse.js +0 -1003
  348. data/test/selenium-core/scripts/se2html.js +0 -63
  349. data/test/selenium-core/scripts/selenium-api.js +0 -2409
  350. data/test/selenium-core/scripts/selenium-browserbot.js +0 -2203
  351. data/test/selenium-core/scripts/selenium-browserdetect.js +0 -150
  352. data/test/selenium-core/scripts/selenium-commandhandlers.js +0 -377
  353. data/test/selenium-core/scripts/selenium-executionloop.js +0 -175
  354. data/test/selenium-core/scripts/selenium-logging.js +0 -147
  355. data/test/selenium-core/scripts/selenium-remoterunner.js +0 -571
  356. data/test/selenium-core/scripts/selenium-testrunner.js +0 -1333
  357. data/test/selenium-core/scripts/selenium-version.js +0 -5
  358. data/test/selenium-core/scripts/user-extensions.js +0 -3
  359. data/test/selenium-core/scripts/user-extensions.js.sample +0 -75
  360. data/test/selenium-core/scripts/xmlextras.js +0 -153
  361. data/test/selenium-core/selenium-logo.png +0 -0
  362. data/test/selenium-core/selenium-test.css +0 -43
  363. data/test/selenium-core/selenium.css +0 -299
  364. data/test/selenium-core/xpath/dom.js +0 -428
  365. data/test/selenium-core/xpath/misc.js +0 -252
  366. data/test/selenium-core/xpath/xpath.js +0 -2223
  367. data/test/selenium/_login_as_cmsadmin.rsel +0 -4
  368. data/test/selenium/dashboard.rsel +0 -5
  369. data/test/selenium/html_blocks.rsel +0 -4
  370. data/test/selenium/login/failed_login.rsel +0 -8
  371. data/test/selenium/login/successful_login.rsel +0 -9
  372. data/test/selenium/page_templates.rsel +0 -12
  373. data/test/selenium/pages/edit_properties.rsel +0 -5
  374. data/test/selenium/site/view_home_page.rsel +0 -4
  375. data/test/selenium/sitemap/move_page.rsel +0 -9
  376. data/test/selenium/sitemap/open_section.rsel +0 -6
  377. data/test/selenium/sitemap/select_page.rsel +0 -12
  378. data/test/selenium/sitemap/select_section.rsel +0 -17
  379. data/test/test_helper.rb +0 -193
  380. data/test/test_logging.rb +0 -67
  381. data/test/unit/behaviors/attaching_test.rb +0 -357
  382. data/test/unit/behaviors/connectable_test.rb +0 -29
  383. data/test/unit/behaviors/dynamic_attributes_test.rb +0 -38
  384. data/test/unit/behaviors/publishable_test.rb +0 -84
  385. data/test/unit/behaviors/searching_test.rb +0 -102
  386. data/test/unit/behaviors/taggable_test.rb +0 -109
  387. data/test/unit/behaviors/versioning_test.rb +0 -36
  388. data/test/unit/extensions/active_record/base_test.rb +0 -10
  389. data/test/unit/extensions/hash_test.rb +0 -17
  390. data/test/unit/extensions/integer_test.rb +0 -10
  391. data/test/unit/helpers/application_helper_test.rb +0 -77
  392. data/test/unit/helpers/form_builder_test.rb +0 -36
  393. data/test/unit/helpers/menu_helper_test.rb +0 -242
  394. data/test/unit/helpers/page_helper_test.rb +0 -67
  395. data/test/unit/helpers/path_helper_test.rb +0 -57
  396. data/test/unit/lib/acts_as_content_page_test.rb +0 -72
  397. data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
  398. data/test/unit/lib/cms/sitemap_test.rb +0 -206
  399. data/test/unit/lib/cms_domain_support_test.rb +0 -43
  400. data/test/unit/lib/command_line_test.rb +0 -70
  401. data/test/unit/lib/content_block_test.rb +0 -203
  402. data/test/unit/lib/content_rendering_support_test.rb +0 -40
  403. data/test/unit/lib/generators_test.rb +0 -40
  404. data/test/unit/lib/routes_test.rb +0 -57
  405. data/test/unit/models/attachment_test.rb +0 -116
  406. data/test/unit/models/category_test.rb +0 -40
  407. data/test/unit/models/category_type_test.rb +0 -8
  408. data/test/unit/models/connector_test.rb +0 -152
  409. data/test/unit/models/content_type_test.rb +0 -56
  410. data/test/unit/models/email_page_portlet_test.rb +0 -14
  411. data/test/unit/models/file_block_test.rb +0 -230
  412. data/test/unit/models/group_test.rb +0 -13
  413. data/test/unit/models/html_block_test.rb +0 -102
  414. data/test/unit/models/link_test.rb +0 -52
  415. data/test/unit/models/page_partial_test.rb +0 -29
  416. data/test/unit/models/page_route_test.rb +0 -29
  417. data/test/unit/models/page_template_test.rb +0 -40
  418. data/test/unit/models/page_test.rb +0 -792
  419. data/test/unit/models/permission_test.rb +0 -10
  420. data/test/unit/models/portlet_test.rb +0 -69
  421. data/test/unit/models/sections_test.rb +0 -264
  422. data/test/unit/models/site_test.rb +0 -50
  423. data/test/unit/models/task_test.rb +0 -141
  424. data/test/unit/models/user_test.rb +0 -352
  425. data/test/unit/schema_statements_test.rb +0 -41
@@ -1,428 +0,0 @@
1
- // Copyright 2005 Google Inc.
2
- // All Rights Reserved
3
- //
4
- // An XML parse and a minimal DOM implementation that just supportes
5
- // the subset of the W3C DOM that is used in the XSLT implementation.
6
- //
7
- // References:
8
- //
9
- // [DOM] W3C DOM Level 3 Core Specification
10
- // <http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/>.
11
- //
12
- //
13
- // Author: Steffen Meschkat <mesch@google.com>
14
-
15
- // NOTE: The split() method in IE omits empty result strings. This is
16
- // utterly annoying. So we don't use it here.
17
-
18
- // Resolve entities in XML text fragments. According to the DOM
19
- // specification, the DOM is supposed to resolve entity references at
20
- // the API level. I.e. no entity references are passed through the
21
- // API. See "Entities and the DOM core", p.12, DOM 2 Core
22
- // Spec. However, different browsers actually pass very different
23
- // values at the API.
24
- //
25
- function xmlResolveEntities(s) {
26
-
27
- var parts = stringSplit(s, '&');
28
-
29
- var ret = parts[0];
30
- for (var i = 1; i < parts.length; ++i) {
31
- var rp = stringSplit(parts[i], ';');
32
- if (rp.length == 1) {
33
- // no entity reference: just a & but no ;
34
- ret += parts[i];
35
- continue;
36
- }
37
-
38
- var ch;
39
- switch (rp[0]) {
40
- case 'lt':
41
- ch = '<';
42
- break;
43
- case 'gt':
44
- ch = '>';
45
- break;
46
- case 'amp':
47
- ch = '&';
48
- break;
49
- case 'quot':
50
- ch = '"';
51
- break;
52
- case 'apos':
53
- ch = '\'';
54
- break;
55
- case 'nbsp':
56
- ch = String.fromCharCode(160);
57
- break;
58
- default:
59
- // Cool trick: let the DOM do the entity decoding. We assign
60
- // the entity text through non-W3C DOM properties and read it
61
- // through the W3C DOM. W3C DOM access is specified to resolve
62
- // entities.
63
- var span = window.document.createElement('span');
64
- span.innerHTML = '&' + rp[0] + '; ';
65
- ch = span.childNodes[0].nodeValue.charAt(0);
66
- }
67
- ret += ch + rp[1];
68
- }
69
-
70
- return ret;
71
- }
72
-
73
-
74
- // Parses the given XML string with our custom, JavaScript XML parser. Written
75
- // by Steffen Meschkat (mesch@google.com).
76
- function xmlParse(xml) {
77
- Timer.start('xmlparse');
78
- var regex_empty = /\/$/;
79
-
80
- // See also <http://www.w3.org/TR/REC-xml/#sec-common-syn> for
81
- // allowed chars in a tag and attribute name. TODO(mesch): the
82
- // following is still not completely correct.
83
-
84
- var regex_tagname = /^([\w:-]*)/;
85
- var regex_attribute = /([\w:-]+)\s?=\s?('([^\']*)'|"([^\"]*)")/g;
86
-
87
- var xmldoc = new XDocument();
88
- var root = xmldoc;
89
-
90
- // For the record: in Safari, we would create native DOM nodes, but
91
- // in Opera that is not possible, because the DOM only allows HTML
92
- // element nodes to be created, so we have to do our own DOM nodes.
93
-
94
- // xmldoc = document.implementation.createDocument('','',null);
95
- // root = xmldoc; // .createDocumentFragment();
96
- // NOTE(mesch): using the DocumentFragment instead of the Document
97
- // crashes my Safari 1.2.4 (v125.12).
98
- var stack = [];
99
-
100
- var parent = root;
101
- stack.push(parent);
102
-
103
- var x = stringSplit(xml, '<');
104
- for (var i = 1; i < x.length; ++i) {
105
- var xx = stringSplit(x[i], '>');
106
- var tag = xx[0];
107
- var text = xmlResolveEntities(xx[1] || '');
108
-
109
- if (tag.charAt(0) == '/') {
110
- stack.pop();
111
- parent = stack[stack.length-1];
112
-
113
- } else if (tag.charAt(0) == '?') {
114
- // Ignore XML declaration and processing instructions
115
- } else if (tag.charAt(0) == '!') {
116
- // Ignore notation and comments
117
- } else {
118
- var empty = tag.match(regex_empty);
119
- var tagname = regex_tagname.exec(tag)[1];
120
- var node = xmldoc.createElement(tagname);
121
-
122
- var att;
123
- while (att = regex_attribute.exec(tag)) {
124
- var val = xmlResolveEntities(att[3] || att[4] || '');
125
- node.setAttribute(att[1], val);
126
- }
127
-
128
- if (empty) {
129
- parent.appendChild(node);
130
- } else {
131
- parent.appendChild(node);
132
- parent = node;
133
- stack.push(node);
134
- }
135
- }
136
-
137
- if (text && parent != root) {
138
- parent.appendChild(xmldoc.createTextNode(text));
139
- }
140
- }
141
-
142
- Timer.end('xmlparse');
143
- return root;
144
- }
145
-
146
-
147
- // Our W3C DOM Node implementation. Note we call it XNode because we
148
- // can't define the identifier Node. We do this mostly for Opera,
149
- // where we can't reuse the HTML DOM for parsing our own XML, and for
150
- // Safari, where it is too expensive to have the template processor
151
- // operate on native DOM nodes.
152
- function XNode(type, name, value, owner) {
153
- this.attributes = [];
154
- this.childNodes = [];
155
-
156
- XNode.init.call(this, type, name, value, owner);
157
- }
158
-
159
- // Don't call as method, use apply() or call().
160
- XNode.init = function(type, name, value, owner) {
161
- this.nodeType = type - 0;
162
- this.nodeName = '' + name;
163
- this.nodeValue = '' + value;
164
- this.ownerDocument = owner;
165
-
166
- this.firstChild = null;
167
- this.lastChild = null;
168
- this.nextSibling = null;
169
- this.previousSibling = null;
170
- this.parentNode = null;
171
- }
172
-
173
- XNode.unused_ = [];
174
-
175
- XNode.recycle = function(node) {
176
- if (!node) {
177
- return;
178
- }
179
-
180
- if (node.constructor == XDocument) {
181
- XNode.recycle(node.documentElement);
182
- return;
183
- }
184
-
185
- if (node.constructor != this) {
186
- return;
187
- }
188
-
189
- XNode.unused_.push(node);
190
- for (var a = 0; a < node.attributes.length; ++a) {
191
- XNode.recycle(node.attributes[a]);
192
- }
193
- for (var c = 0; c < node.childNodes.length; ++c) {
194
- XNode.recycle(node.childNodes[c]);
195
- }
196
- node.attributes.length = 0;
197
- node.childNodes.length = 0;
198
- XNode.init.call(node, 0, '', '', null);
199
- }
200
-
201
- XNode.create = function(type, name, value, owner) {
202
- if (XNode.unused_.length > 0) {
203
- var node = XNode.unused_.pop();
204
- XNode.init.call(node, type, name, value, owner);
205
- return node;
206
- } else {
207
- return new XNode(type, name, value, owner);
208
- }
209
- }
210
-
211
- XNode.prototype.appendChild = function(node) {
212
- // firstChild
213
- if (this.childNodes.length == 0) {
214
- this.firstChild = node;
215
- }
216
-
217
- // previousSibling
218
- node.previousSibling = this.lastChild;
219
-
220
- // nextSibling
221
- node.nextSibling = null;
222
- if (this.lastChild) {
223
- this.lastChild.nextSibling = node;
224
- }
225
-
226
- // parentNode
227
- node.parentNode = this;
228
-
229
- // lastChild
230
- this.lastChild = node;
231
-
232
- // childNodes
233
- this.childNodes.push(node);
234
- }
235
-
236
-
237
- XNode.prototype.replaceChild = function(newNode, oldNode) {
238
- if (oldNode == newNode) {
239
- return;
240
- }
241
-
242
- for (var i = 0; i < this.childNodes.length; ++i) {
243
- if (this.childNodes[i] == oldNode) {
244
- this.childNodes[i] = newNode;
245
-
246
- var p = oldNode.parentNode;
247
- oldNode.parentNode = null;
248
- newNode.parentNode = p;
249
-
250
- p = oldNode.previousSibling;
251
- oldNode.previousSibling = null;
252
- newNode.previousSibling = p;
253
- if (newNode.previousSibling) {
254
- newNode.previousSibling.nextSibling = newNode;
255
- }
256
-
257
- p = oldNode.nextSibling;
258
- oldNode.nextSibling = null;
259
- newNode.nextSibling = p;
260
- if (newNode.nextSibling) {
261
- newNode.nextSibling.previousSibling = newNode;
262
- }
263
-
264
- if (this.firstChild == oldNode) {
265
- this.firstChild = newNode;
266
- }
267
-
268
- if (this.lastChild == oldNode) {
269
- this.lastChild = newNode;
270
- }
271
-
272
- break;
273
- }
274
- }
275
- }
276
-
277
- XNode.prototype.insertBefore = function(newNode, oldNode) {
278
- if (oldNode == newNode) {
279
- return;
280
- }
281
-
282
- if (oldNode.parentNode != this) {
283
- return;
284
- }
285
-
286
- if (newNode.parentNode) {
287
- newNode.parentNode.removeChild(newNode);
288
- }
289
-
290
- var newChildren = [];
291
- for (var i = 0; i < this.childNodes.length; ++i) {
292
- var c = this.childNodes[i];
293
- if (c == oldNode) {
294
- newChildren.push(newNode);
295
-
296
- newNode.parentNode = this;
297
-
298
- newNode.previousSibling = oldNode.previousSibling;
299
- oldNode.previousSibling = newNode;
300
- if (newNode.previousSibling) {
301
- newNode.previousSibling.nextSibling = newNode;
302
- }
303
-
304
- newNode.nextSibling = oldNode;
305
-
306
- if (this.firstChild == oldNode) {
307
- this.firstChild = newNode;
308
- }
309
- }
310
- newChildren.push(c);
311
- }
312
- this.childNodes = newChildren;
313
- }
314
-
315
- XNode.prototype.removeChild = function(node) {
316
- var newChildren = [];
317
- for (var i = 0; i < this.childNodes.length; ++i) {
318
- var c = this.childNodes[i];
319
- if (c != node) {
320
- newChildren.push(c);
321
- } else {
322
- if (c.previousSibling) {
323
- c.previousSibling.nextSibling = c.nextSibling;
324
- }
325
- if (c.nextSibling) {
326
- c.nextSibling.previousSibling = c.previousSibling;
327
- }
328
- if (this.firstChild == c) {
329
- this.firstChild = c.nextSibling;
330
- }
331
- if (this.lastChild == c) {
332
- this.lastChild = c.previousSibling;
333
- }
334
- }
335
- }
336
- this.childNodes = newChildren;
337
- }
338
-
339
-
340
- XNode.prototype.hasAttributes = function() {
341
- return this.attributes.length > 0;
342
- }
343
-
344
-
345
- XNode.prototype.setAttribute = function(name, value) {
346
- for (var i = 0; i < this.attributes.length; ++i) {
347
- if (this.attributes[i].nodeName == name) {
348
- this.attributes[i].nodeValue = '' + value;
349
- return;
350
- }
351
- }
352
- this.attributes.push(new XNode(DOM_ATTRIBUTE_NODE, name, value));
353
- }
354
-
355
-
356
- XNode.prototype.getAttribute = function(name) {
357
- for (var i = 0; i < this.attributes.length; ++i) {
358
- if (this.attributes[i].nodeName == name) {
359
- return this.attributes[i].nodeValue;
360
- }
361
- }
362
- return null;
363
- }
364
-
365
- XNode.prototype.removeAttribute = function(name) {
366
- var a = [];
367
- for (var i = 0; i < this.attributes.length; ++i) {
368
- if (this.attributes[i].nodeName != name) {
369
- a.push(this.attributes[i]);
370
- }
371
- }
372
- this.attributes = a;
373
- }
374
-
375
-
376
- function XDocument() {
377
- XNode.call(this, DOM_DOCUMENT_NODE, '#document', null, this);
378
- this.documentElement = null;
379
- }
380
-
381
- XDocument.prototype = new XNode(DOM_DOCUMENT_NODE, '#document');
382
-
383
- XDocument.prototype.clear = function() {
384
- XNode.recycle(this.documentElement);
385
- this.documentElement = null;
386
- }
387
-
388
- XDocument.prototype.appendChild = function(node) {
389
- XNode.prototype.appendChild.call(this, node);
390
- this.documentElement = this.childNodes[0];
391
- }
392
-
393
- XDocument.prototype.createElement = function(name) {
394
- return XNode.create(DOM_ELEMENT_NODE, name, null, this);
395
- }
396
-
397
- XDocument.prototype.createDocumentFragment = function() {
398
- return XNode.create(DOM_DOCUMENT_FRAGMENT_NODE, '#document-fragment',
399
- null, this);
400
- }
401
-
402
- XDocument.prototype.createTextNode = function(value) {
403
- return XNode.create(DOM_TEXT_NODE, '#text', value, this);
404
- }
405
-
406
- XDocument.prototype.createAttribute = function(name) {
407
- return XNode.create(DOM_ATTRIBUTE_NODE, name, null, this);
408
- }
409
-
410
- XDocument.prototype.createComment = function(data) {
411
- return XNode.create(DOM_COMMENT_NODE, '#comment', data, this);
412
- }
413
-
414
- XNode.prototype.getElementsByTagName = function(name, list) {
415
- if (!list) {
416
- list = [];
417
- }
418
-
419
- if (this.nodeName == name) {
420
- list.push(this);
421
- }
422
-
423
- for (var i = 0; i < this.childNodes.length; ++i) {
424
- this.childNodes[i].getElementsByTagName(name, list);
425
- }
426
-
427
- return list;
428
- }
@@ -1,252 +0,0 @@
1
- // Copyright 2005 Google Inc.
2
- // All Rights Reserved
3
- //
4
- // Miscellania that support the ajaxslt implementation.
5
- //
6
- // Author: Steffen Meschkat <mesch@google.com>
7
- //
8
-
9
- function el(i) {
10
- return document.getElementById(i);
11
- }
12
-
13
- function px(x) {
14
- return x + 'px';
15
- }
16
-
17
- // Split a string s at all occurrences of character c. This is like
18
- // the split() method of the string object, but IE omits empty
19
- // strings, which violates the invariant (s.split(x).join(x) == s).
20
- function stringSplit(s, c) {
21
- var a = s.indexOf(c);
22
- if (a == -1) {
23
- return [ s ];
24
- }
25
-
26
- var parts = [];
27
- parts.push(s.substr(0,a));
28
- while (a != -1) {
29
- var a1 = s.indexOf(c, a + 1);
30
- if (a1 != -1) {
31
- parts.push(s.substr(a + 1, a1 - a - 1));
32
- } else {
33
- parts.push(s.substr(a + 1));
34
- }
35
- a = a1;
36
- }
37
-
38
- return parts;
39
- }
40
-
41
- // Returns the text value if a node; for nodes without children this
42
- // is the nodeValue, for nodes with children this is the concatenation
43
- // of the value of all children.
44
- function xmlValue(node) {
45
- if (!node) {
46
- return '';
47
- }
48
-
49
- var ret = '';
50
- if (node.nodeType == DOM_TEXT_NODE ||
51
- node.nodeType == DOM_CDATA_SECTION_NODE ||
52
- node.nodeType == DOM_ATTRIBUTE_NODE) {
53
- ret += node.nodeValue;
54
-
55
- } else if (node.nodeType == DOM_ELEMENT_NODE ||
56
- node.nodeType == DOM_DOCUMENT_NODE ||
57
- node.nodeType == DOM_DOCUMENT_FRAGMENT_NODE) {
58
- for (var i = 0; i < node.childNodes.length; ++i) {
59
- ret += arguments.callee(node.childNodes[i]);
60
- }
61
- }
62
- return ret;
63
- }
64
-
65
- // Returns the representation of a node as XML text.
66
- function xmlText(node) {
67
- var ret = '';
68
- if (node.nodeType == DOM_TEXT_NODE) {
69
- ret += xmlEscapeText(node.nodeValue);
70
-
71
- } else if (node.nodeType == DOM_ELEMENT_NODE) {
72
- ret += '<' + node.nodeName;
73
- for (var i = 0; i < node.attributes.length; ++i) {
74
- var a = node.attributes[i];
75
- if (a && a.nodeName && a.nodeValue) {
76
- ret += ' ' + a.nodeName;
77
- ret += '="' + xmlEscapeAttr(a.nodeValue) + '"';
78
- }
79
- }
80
-
81
- if (node.childNodes.length == 0) {
82
- ret += '/>';
83
-
84
- } else {
85
- ret += '>';
86
- for (var i = 0; i < node.childNodes.length; ++i) {
87
- ret += arguments.callee(node.childNodes[i]);
88
- }
89
- ret += '</' + node.nodeName + '>';
90
- }
91
-
92
- } else if (node.nodeType == DOM_DOCUMENT_NODE ||
93
- node.nodeType == DOM_DOCUMENT_FRAGMENT_NODE) {
94
- for (var i = 0; i < node.childNodes.length; ++i) {
95
- ret += arguments.callee(node.childNodes[i]);
96
- }
97
- }
98
-
99
- return ret;
100
- }
101
-
102
- // Applies the given function to each element of the array.
103
- function mapExec(array, func) {
104
- for (var i = 0; i < array.length; ++i) {
105
- func(array[i]);
106
- }
107
- }
108
-
109
- // Returns an array that contains the return value of the given
110
- // function applied to every element of the input array.
111
- function mapExpr(array, func) {
112
- var ret = [];
113
- for (var i = 0; i < array.length; ++i) {
114
- ret.push(func(array[i]));
115
- }
116
- return ret;
117
- };
118
-
119
- // Reverses the given array in place.
120
- function reverseInplace(array) {
121
- for (var i = 0; i < array.length / 2; ++i) {
122
- var h = array[i];
123
- var ii = array.length - i - 1;
124
- array[i] = array[ii];
125
- array[ii] = h;
126
- }
127
- }
128
-
129
- // Shallow-copies an array.
130
- function copyArray(dst, src) {
131
- for (var i = 0; i < src.length; ++i) {
132
- dst.push(src[i]);
133
- }
134
- }
135
-
136
- function assert(b) {
137
- if (!b) {
138
- throw 'assertion failed';
139
- }
140
- }
141
-
142
- // Based on
143
- // <http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247>
144
- var DOM_ELEMENT_NODE = 1;
145
- var DOM_ATTRIBUTE_NODE = 2;
146
- var DOM_TEXT_NODE = 3;
147
- var DOM_CDATA_SECTION_NODE = 4;
148
- var DOM_ENTITY_REFERENCE_NODE = 5;
149
- var DOM_ENTITY_NODE = 6;
150
- var DOM_PROCESSING_INSTRUCTION_NODE = 7;
151
- var DOM_COMMENT_NODE = 8;
152
- var DOM_DOCUMENT_NODE = 9;
153
- var DOM_DOCUMENT_TYPE_NODE = 10;
154
- var DOM_DOCUMENT_FRAGMENT_NODE = 11;
155
- var DOM_NOTATION_NODE = 12;
156
-
157
-
158
- var xpathdebug = false; // trace xpath parsing
159
- var xsltdebug = false; // trace xslt processing
160
-
161
-
162
- // Escape XML special markup chracters: tag delimiter < > and entity
163
- // reference start delimiter &. The escaped string can be used in XML
164
- // text portions (i.e. between tags).
165
- function xmlEscapeText(s) {
166
- return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
167
- }
168
-
169
- // Escape XML special markup characters: tag delimiter < > entity
170
- // reference start delimiter & and quotes ". The escaped string can be
171
- // used in double quoted XML attribute value portions (i.e. in
172
- // attributes within start tags).
173
- function xmlEscapeAttr(s) {
174
- return xmlEscapeText(s).replace(/\"/g, '&quot;');
175
- }
176
-
177
- // Escape markup in XML text, but don't touch entity references. The
178
- // escaped string can be used as XML text (i.e. between tags).
179
- function xmlEscapeTags(s) {
180
- return s.replace(/</g, '&lt;').replace(/>/g, '&gt;');
181
- }
182
-
183
- // An implementation of the debug log.
184
-
185
- var logging__ = false;
186
-
187
- function Log() {};
188
-
189
- Log.lines = [];
190
-
191
- Log.write = function(s) {
192
- LOG.debug("xpath logging: " + s);
193
- };
194
-
195
- // Writes the given XML with every tag on a new line.
196
- Log.writeXML = function(xml) {
197
- if (logging__) {
198
- var s0 = xml.replace(/</g, '\n<');
199
- var s1 = xmlEscapeText(s0);
200
- var s2 = s1.replace(/\s*\n(\s|\n)*/g, '<br/>');
201
- this.lines.push(s2);
202
- this.show();
203
- }
204
- }
205
-
206
- // Writes without any escaping
207
- Log.writeRaw = function(s) {
208
- if (logging__) {
209
- this.lines.push(s);
210
- this.show();
211
- }
212
- }
213
-
214
- Log.clear = function() {
215
- if (logging__) {
216
- var l = this.div();
217
- l.innerHTML = '';
218
- this.lines = [];
219
- }
220
- }
221
-
222
- Log.show = function() {
223
- var l = this.div();
224
- l.innerHTML += this.lines.join('<br/>') + '<br/>';
225
- this.lines = [];
226
- l.scrollTop = l.scrollHeight;
227
- }
228
-
229
- Log.div = function() {
230
- var l = document.getElementById('log');
231
- if (!l) {
232
- l = document.createElement('div');
233
- l.id = 'log';
234
- l.style.position = 'absolute';
235
- l.style.right = '5px';
236
- l.style.top = '5px';
237
- l.style.width = '250px';
238
- l.style.height = '150px';
239
- l.style.overflow = 'auto';
240
- l.style.backgroundColor = '#f0f0f0';
241
- l.style.border = '1px solid gray';
242
- l.style.fontSize = '10px';
243
- l.style.padding = '5px';
244
- document.body.appendChild(l);
245
- }
246
- return l;
247
- }
248
-
249
-
250
- function Timer() {}
251
- Timer.start = function() {}
252
- Timer.end = function() {}