noodall-ui 0.0.2

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 (542) hide show
  1. data/.document +5 -0
  2. data/.gitignore +29 -0
  3. data/Gemfile +29 -0
  4. data/Gemfile.lock +205 -0
  5. data/LICENSE +20 -0
  6. data/README.rdoc +17 -0
  7. data/Rakefile +17 -0
  8. data/app/controllers/noodall/admin/assets_controller.rb +241 -0
  9. data/app/controllers/noodall/admin/base_controller.rb +8 -0
  10. data/app/controllers/noodall/admin/components_controller.rb +22 -0
  11. data/app/controllers/noodall/admin/groups_controller.rb +11 -0
  12. data/app/controllers/noodall/admin/nodes_controller.rb +159 -0
  13. data/app/controllers/noodall/nodes_controller.rb +41 -0
  14. data/app/helpers/noodall/admin/assets_helper.rb +15 -0
  15. data/app/helpers/noodall/admin/base_helper.rb +14 -0
  16. data/app/helpers/noodall/admin/nodes_helper.rb +37 -0
  17. data/app/helpers/noodall/components_helper.rb +38 -0
  18. data/app/helpers/noodall/layout_helper.rb +25 -0
  19. data/app/helpers/noodall/nodes_helper.rb +72 -0
  20. data/app/models/asset.rb +103 -0
  21. data/app/views/layouts/noodall_admin.html.erb +66 -0
  22. data/app/views/noodall/admin/assets/_browser.html.erb +28 -0
  23. data/app/views/noodall/admin/assets/_form.html.erb +54 -0
  24. data/app/views/noodall/admin/assets/_menu.html.erb +8 -0
  25. data/app/views/noodall/admin/assets/_show.html.erb +48 -0
  26. data/app/views/noodall/admin/assets/_tags.html.erb +13 -0
  27. data/app/views/noodall/admin/assets/add.html.erb +10 -0
  28. data/app/views/noodall/admin/assets/form.html.erb +12 -0
  29. data/app/views/noodall/admin/assets/form.js.erb +2 -0
  30. data/app/views/noodall/admin/assets/index.html.erb +65 -0
  31. data/app/views/noodall/admin/assets/index.js.erb +1 -0
  32. data/app/views/noodall/admin/assets/show.html.erb +3 -0
  33. data/app/views/noodall/admin/assets/show.js.erb +1 -0
  34. data/app/views/noodall/admin/assets/tags.html.erb +3 -0
  35. data/app/views/noodall/admin/assets/tags.js.erb +1 -0
  36. data/app/views/noodall/admin/components/_component.erb +0 -0
  37. data/app/views/noodall/admin/nodes/_body.html.erb +5 -0
  38. data/app/views/noodall/admin/nodes/_branch.html.erb +10 -0
  39. data/app/views/noodall/admin/nodes/_home.html.erb +27 -0
  40. data/app/views/noodall/admin/nodes/_slot_form.html.erb +16 -0
  41. data/app/views/noodall/admin/nodes/change_template.html.erb +38 -0
  42. data/app/views/noodall/admin/nodes/index.html.erb +69 -0
  43. data/app/views/noodall/admin/nodes/new.html.erb +30 -0
  44. data/app/views/noodall/admin/nodes/show.html.erb +144 -0
  45. data/app/views/noodall/admin/nodes/tree.html.erb +3 -0
  46. data/app/views/noodall/admin/nodes/tree.js.erb +2 -0
  47. data/app/views/noodall/components/_component.erb +0 -0
  48. data/app/views/noodall/nodes/search.html.erb +14 -0
  49. data/app/views/noodall/nodes/sitemap.html.erb +3 -0
  50. data/app/views/noodall/nodes/sitemap.xml.rxml +22 -0
  51. data/config/application.rb +29 -0
  52. data/config/boot.rb +13 -0
  53. data/config/cucumber.yml +8 -0
  54. data/config/database.yml +14 -0
  55. data/config/environment.rb +5 -0
  56. data/config/environments/development.rb +30 -0
  57. data/config/environments/production.rb +50 -0
  58. data/config/environments/test.rb +35 -0
  59. data/config/locales/en.yml +5 -0
  60. data/config.ru +4 -0
  61. data/demo/controllers/application_controller.rb +22 -0
  62. data/demo/initializers/dragonfly.rb +1 -0
  63. data/demo/initializers/mongo_mapper.rb +13 -0
  64. data/demo/initializers/noodall.rb +2 -0
  65. data/demo/initializers/secret_token.rb +7 -0
  66. data/demo/initializers/session_store.rb +8 -0
  67. data/demo/models/gallery.rb +17 -0
  68. data/demo/models/page_a.rb +9 -0
  69. data/demo/models/page_b.rb +4 -0
  70. data/demo/models/page_c.rb +7 -0
  71. data/demo/models/promo.rb +22 -0
  72. data/demo/models/user.rb +12 -0
  73. data/demo/routes.rb +3 -0
  74. data/demo/seeds.rb +8 -0
  75. data/demo/views/admin/components/_gallery.html.erb +49 -0
  76. data/demo/views/admin/components/_promo.html.erb +34 -0
  77. data/demo/views/admin/nodes/_page_a.html.erb +47 -0
  78. data/demo/views/admin/nodes/_page_b.html.erb +35 -0
  79. data/demo/views/admin/nodes/_page_c.html.erb +35 -0
  80. data/demo/views/components/_gallery.html.erb +23 -0
  81. data/demo/views/components/_promo.html.erb +5 -0
  82. data/demo/views/layouts/application.html.erb +121 -0
  83. data/demo/views/nodes/page_a.html.erb +14 -0
  84. data/demo/views/nodes/page_b.html.erb +9 -0
  85. data/demo/views/nodes/page_c.html.erb +12 -0
  86. data/features/change_templates.feature +25 -0
  87. data/features/content_templates.feature +18 -0
  88. data/features/gallery_component.feature +22 -0
  89. data/features/manage_assets.feature +28 -0
  90. data/features/manage_content_tree.feature +42 -0
  91. data/features/preview.feature +8 -0
  92. data/features/promo_component.feature +18 -0
  93. data/features/publish_content.feature +28 -0
  94. data/features/search.feature +12 -0
  95. data/features/sitemap.feature +9 -0
  96. data/features/step_definitions/asset_steps.rb +66 -0
  97. data/features/step_definitions/cms_node_steps.rb +126 -0
  98. data/features/step_definitions/component_steps.rb +137 -0
  99. data/features/step_definitions/content_steps.rb +187 -0
  100. data/features/step_definitions/date_select_steps.rb +39 -0
  101. data/features/step_definitions/groups_access_steps.rb +92 -0
  102. data/features/step_definitions/node_steps.rb +25 -0
  103. data/features/step_definitions/preview_steps.rb +7 -0
  104. data/features/step_definitions/pubish_content_steps.rb +45 -0
  105. data/features/step_definitions/search_steps.rb +21 -0
  106. data/features/step_definitions/sign_in_steps.rb +3 -0
  107. data/features/step_definitions/web_steps.rb +219 -0
  108. data/features/support/env.rb +52 -0
  109. data/features/support/logo.png +0 -0
  110. data/features/support/paths.rb +56 -0
  111. data/generators/component/USAGE +8 -0
  112. data/generators/component/component_generator.rb +35 -0
  113. data/generators/component/lib/insert_commands.rb +61 -0
  114. data/generators/component/templates/admin_template.html.erb +50 -0
  115. data/generators/component/templates/factory.rb +5 -0
  116. data/generators/component/templates/model.rb +8 -0
  117. data/generators/component/templates/template.html.erb +41 -0
  118. data/generators/node/USAGE +8 -0
  119. data/generators/node/lib/insert_commands.rb +47 -0
  120. data/generators/node/node_generator.rb +35 -0
  121. data/generators/node/templates/admin_template.html.erb +49 -0
  122. data/generators/node/templates/factory.rb +5 -0
  123. data/generators/node/templates/model.rb +11 -0
  124. data/generators/node/templates/template.html.erb +41 -0
  125. data/generators/node_features/USAGE +8 -0
  126. data/generators/node_features/node_features_generator.rb +16 -0
  127. data/lib/generators/noodall/node/USAGE +8 -0
  128. data/lib/generators/noodall/node/node_generator.rb +21 -0
  129. data/lib/generators/noodall/node/templates/admin_template.html.erb +52 -0
  130. data/lib/generators/noodall/node/templates/factory.rb +8 -0
  131. data/lib/generators/noodall/node/templates/model.rb +13 -0
  132. data/lib/generators/noodall/node/templates/template.html.erb +12 -0
  133. data/lib/noodall/canable.rb +1 -0
  134. data/lib/noodall/dragonfly.rb +23 -0
  135. data/lib/noodall/engine.rb +13 -0
  136. data/lib/noodall/permalinks.rb +12 -0
  137. data/lib/noodall/routes.rb +45 -0
  138. data/lib/noodall/ui/version.rb +5 -0
  139. data/lib/noodall/ui.rb +17 -0
  140. data/lib/noodall/video_thumbnail_encoder.rb +31 -0
  141. data/lib/noodall-ui.rb +6 -0
  142. data/lib/tasks/cucumber.rake +53 -0
  143. data/log/.gitignore +0 -0
  144. data/noodall-ui.gemspec +28 -0
  145. data/public/favicon.ico +0 -0
  146. data/public/images/admin/add-small.png +0 -0
  147. data/public/images/admin/add.png +0 -0
  148. data/public/images/admin/add_file.gif +0 -0
  149. data/public/images/admin/advanced.gif +0 -0
  150. data/public/images/admin/back.png +0 -0
  151. data/public/images/admin/cancel-small.gif +0 -0
  152. data/public/images/admin/cancel.gif +0 -0
  153. data/public/images/admin/change-bg.gif +0 -0
  154. data/public/images/admin/change.gif +0 -0
  155. data/public/images/admin/check.png +0 -0
  156. data/public/images/admin/clear.gif +0 -0
  157. data/public/images/admin/close.png +0 -0
  158. data/public/images/admin/create.gif +0 -0
  159. data/public/images/admin/delete.gif +0 -0
  160. data/public/images/admin/delete.png +0 -0
  161. data/public/images/admin/doc-icon.png +0 -0
  162. data/public/images/admin/document.png +0 -0
  163. data/public/images/admin/down.png +0 -0
  164. data/public/images/admin/download.png +0 -0
  165. data/public/images/admin/draft.gif +0 -0
  166. data/public/images/admin/draft.png +0 -0
  167. data/public/images/admin/edit.gif +0 -0
  168. data/public/images/admin/edit.png +0 -0
  169. data/public/images/admin/image.png +0 -0
  170. data/public/images/admin/image_small.png +0 -0
  171. data/public/images/admin/info-white.png +0 -0
  172. data/public/images/admin/info.png +0 -0
  173. data/public/images/admin/media.gif +0 -0
  174. data/public/images/admin/nav-2.gif +0 -0
  175. data/public/images/admin/nav.gif +0 -0
  176. data/public/images/admin/next.png +0 -0
  177. data/public/images/admin/no-type-icon.png +0 -0
  178. data/public/images/admin/pagination.gif +0 -0
  179. data/public/images/admin/pdf-icon.png +0 -0
  180. data/public/images/admin/prev.png +0 -0
  181. data/public/images/admin/preview.gif +0 -0
  182. data/public/images/admin/publish.gif +0 -0
  183. data/public/images/admin/remove.gif +0 -0
  184. data/public/images/admin/reset.gif +0 -0
  185. data/public/images/admin/select_image.gif +0 -0
  186. data/public/images/admin/select_images.gif +0 -0
  187. data/public/images/admin/set.gif +0 -0
  188. data/public/images/admin/sort.png +0 -0
  189. data/public/images/admin/tag.png +0 -0
  190. data/public/images/admin/templates/article-page.gif +0 -0
  191. data/public/images/admin/templates/articles-list.gif +0 -0
  192. data/public/images/admin/templates/course-page.gif +0 -0
  193. data/public/images/admin/templates/event-page.gif +0 -0
  194. data/public/images/admin/templates/events-list.gif +0 -0
  195. data/public/images/admin/templates/home.gif +0 -0
  196. data/public/images/admin/templates/landing-page.gif +0 -0
  197. data/public/images/admin/templates/page-a.gif +0 -0
  198. data/public/images/admin/templates/page-b.gif +0 -0
  199. data/public/images/admin/templates/school-landing-page.gif +0 -0
  200. data/public/images/admin/templates/study-landing-page.gif +0 -0
  201. data/public/images/admin/top-level.png +0 -0
  202. data/public/images/admin/top-level_small.png +0 -0
  203. data/public/images/admin/txt-icon.png +0 -0
  204. data/public/images/admin/uncheck.png +0 -0
  205. data/public/images/admin/up.png +0 -0
  206. data/public/images/admin/update.gif +0 -0
  207. data/public/images/admin/upload.png +0 -0
  208. data/public/images/admin/video.png +0 -0
  209. data/public/images/admin/view.png +0 -0
  210. data/public/images/admin/xls-icon.png +0 -0
  211. data/public/images/fancybox/blank.gif +0 -0
  212. data/public/images/fancybox/fancy_close.png +0 -0
  213. data/public/images/fancybox/fancy_loading.png +0 -0
  214. data/public/images/fancybox/fancy_nav_left.png +0 -0
  215. data/public/images/fancybox/fancy_nav_right.png +0 -0
  216. data/public/images/fancybox/fancy_shadow_e.png +0 -0
  217. data/public/images/fancybox/fancy_shadow_n.png +0 -0
  218. data/public/images/fancybox/fancy_shadow_ne.png +0 -0
  219. data/public/images/fancybox/fancy_shadow_nw.png +0 -0
  220. data/public/images/fancybox/fancy_shadow_s.png +0 -0
  221. data/public/images/fancybox/fancy_shadow_se.png +0 -0
  222. data/public/images/fancybox/fancy_shadow_sw.png +0 -0
  223. data/public/images/fancybox/fancy_shadow_w.png +0 -0
  224. data/public/images/fancybox/fancy_title_left.png +0 -0
  225. data/public/images/fancybox/fancy_title_main.png +0 -0
  226. data/public/images/fancybox/fancy_title_over.png +0 -0
  227. data/public/images/fancybox/fancy_title_right.png +0 -0
  228. data/public/images/fancybox/fancybox-x.png +0 -0
  229. data/public/images/fancybox/fancybox-y.png +0 -0
  230. data/public/images/fancybox/fancybox.png +0 -0
  231. data/public/images/plupload/backgrounds.gif +0 -0
  232. data/public/images/plupload/buttons-disabled.png +0 -0
  233. data/public/images/plupload/buttons.png +0 -0
  234. data/public/images/plupload/delete.gif +0 -0
  235. data/public/images/plupload/done.gif +0 -0
  236. data/public/images/plupload/error.gif +0 -0
  237. data/public/images/plupload/throbber.gif +0 -0
  238. data/public/images/plupload/transp50.png +0 -0
  239. data/public/javascripts/admin/application.js +586 -0
  240. data/public/javascripts/admin/asset_edit.js +30 -0
  241. data/public/javascripts/admin/assets.js +98 -0
  242. data/public/javascripts/admin/gotham.font.js +20 -0
  243. data/public/javascripts/admin/jquery.jqtransform.js +366 -0
  244. data/public/javascripts/admin/nodes.js +30 -0
  245. data/public/javascripts/admin/tiny_mce_config.js +118 -0
  246. data/public/javascripts/ajaxify.js +20 -0
  247. data/public/javascripts/application.js +37 -0
  248. data/public/javascripts/carousel.lite.js +1 -0
  249. data/public/javascripts/cufon-yui.js +8 -0
  250. data/public/javascripts/fancybox.js +1078 -0
  251. data/public/javascripts/plupload/gears_init.js +86 -0
  252. data/public/javascripts/plupload/jquery.plupload.queue.min.js +1 -0
  253. data/public/javascripts/plupload/plupload.flash.swf +0 -0
  254. data/public/javascripts/plupload/plupload.full.min.js +1 -0
  255. data/public/javascripts/plupload/plupload.silverlight.xap +0 -0
  256. data/public/javascripts/rails.js +132 -0
  257. data/public/javascripts/tiny_mce/jquery.tinymce.js +1 -0
  258. data/public/javascripts/tiny_mce/langs/en.js +169 -0
  259. data/public/javascripts/tiny_mce/license.txt +504 -0
  260. data/public/javascripts/tiny_mce/plugins/advhr/css/advhr.css +5 -0
  261. data/public/javascripts/tiny_mce/plugins/advhr/editor_plugin.js +1 -0
  262. data/public/javascripts/tiny_mce/plugins/advhr/editor_plugin_src.js +57 -0
  263. data/public/javascripts/tiny_mce/plugins/advhr/js/rule.js +43 -0
  264. data/public/javascripts/tiny_mce/plugins/advhr/langs/en_dlg.js +5 -0
  265. data/public/javascripts/tiny_mce/plugins/advhr/rule.htm +57 -0
  266. data/public/javascripts/tiny_mce/plugins/advimage/css/advimage.css +13 -0
  267. data/public/javascripts/tiny_mce/plugins/advimage/editor_plugin.js +1 -0
  268. data/public/javascripts/tiny_mce/plugins/advimage/editor_plugin_src.js +50 -0
  269. data/public/javascripts/tiny_mce/plugins/advimage/image.htm +232 -0
  270. data/public/javascripts/tiny_mce/plugins/advimage/img/sample.gif +0 -0
  271. data/public/javascripts/tiny_mce/plugins/advimage/js/image.js +443 -0
  272. data/public/javascripts/tiny_mce/plugins/advimage/langs/en_dlg.js +43 -0
  273. data/public/javascripts/tiny_mce/plugins/advlink/css/advlink.css +8 -0
  274. data/public/javascripts/tiny_mce/plugins/advlink/editor_plugin.js +1 -0
  275. data/public/javascripts/tiny_mce/plugins/advlink/editor_plugin_src.js +61 -0
  276. data/public/javascripts/tiny_mce/plugins/advlink/js/advlink.js +528 -0
  277. data/public/javascripts/tiny_mce/plugins/advlink/langs/en_dlg.js +52 -0
  278. data/public/javascripts/tiny_mce/plugins/advlink/link.htm +333 -0
  279. data/public/javascripts/tiny_mce/plugins/advlist/editor_plugin.js +1 -0
  280. data/public/javascripts/tiny_mce/plugins/advlist/editor_plugin_src.js +154 -0
  281. data/public/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -0
  282. data/public/javascripts/tiny_mce/plugins/autoresize/editor_plugin_src.js +117 -0
  283. data/public/javascripts/tiny_mce/plugins/autosave/editor_plugin.js +1 -0
  284. data/public/javascripts/tiny_mce/plugins/autosave/editor_plugin_src.js +422 -0
  285. data/public/javascripts/tiny_mce/plugins/autosave/langs/en.js +4 -0
  286. data/public/javascripts/tiny_mce/plugins/bbcode/editor_plugin.js +1 -0
  287. data/public/javascripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +120 -0
  288. data/public/javascripts/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -0
  289. data/public/javascripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +127 -0
  290. data/public/javascripts/tiny_mce/plugins/directionality/editor_plugin.js +1 -0
  291. data/public/javascripts/tiny_mce/plugins/directionality/editor_plugin_src.js +82 -0
  292. data/public/javascripts/tiny_mce/plugins/emotions/editor_plugin.js +1 -0
  293. data/public/javascripts/tiny_mce/plugins/emotions/editor_plugin_src.js +43 -0
  294. data/public/javascripts/tiny_mce/plugins/emotions/emotions.htm +40 -0
  295. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-cool.gif +0 -0
  296. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-cry.gif +0 -0
  297. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif +0 -0
  298. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  299. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-frown.gif +0 -0
  300. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif +0 -0
  301. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif +0 -0
  302. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif +0 -0
  303. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
  304. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif +0 -0
  305. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-smile.gif +0 -0
  306. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif +0 -0
  307. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
  308. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif +0 -0
  309. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-wink.gif +0 -0
  310. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-yell.gif +0 -0
  311. data/public/javascripts/tiny_mce/plugins/emotions/js/emotions.js +22 -0
  312. data/public/javascripts/tiny_mce/plugins/emotions/langs/en_dlg.js +20 -0
  313. data/public/javascripts/tiny_mce/plugins/example/dialog.htm +22 -0
  314. data/public/javascripts/tiny_mce/plugins/example/editor_plugin.js +1 -0
  315. data/public/javascripts/tiny_mce/plugins/example/editor_plugin_src.js +84 -0
  316. data/public/javascripts/tiny_mce/plugins/example/img/example.gif +0 -0
  317. data/public/javascripts/tiny_mce/plugins/example/js/dialog.js +19 -0
  318. data/public/javascripts/tiny_mce/plugins/example/langs/en.js +3 -0
  319. data/public/javascripts/tiny_mce/plugins/example/langs/en_dlg.js +3 -0
  320. data/public/javascripts/tiny_mce/plugins/fullpage/css/fullpage.css +182 -0
  321. data/public/javascripts/tiny_mce/plugins/fullpage/editor_plugin.js +1 -0
  322. data/public/javascripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +149 -0
  323. data/public/javascripts/tiny_mce/plugins/fullpage/fullpage.htm +571 -0
  324. data/public/javascripts/tiny_mce/plugins/fullpage/js/fullpage.js +471 -0
  325. data/public/javascripts/tiny_mce/plugins/fullpage/langs/en_dlg.js +85 -0
  326. data/public/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -0
  327. data/public/javascripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js +148 -0
  328. data/public/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +109 -0
  329. data/public/javascripts/tiny_mce/plugins/iespell/editor_plugin.js +1 -0
  330. data/public/javascripts/tiny_mce/plugins/iespell/editor_plugin_src.js +54 -0
  331. data/public/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +1 -0
  332. data/public/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +635 -0
  333. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  334. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  335. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  336. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  337. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  338. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  339. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  340. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
  341. data/public/javascripts/tiny_mce/plugins/inlinepopups/template.htm +387 -0
  342. data/public/javascripts/tiny_mce/plugins/insertdatetime/editor_plugin.js +1 -0
  343. data/public/javascripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +83 -0
  344. data/public/javascripts/tiny_mce/plugins/layer/editor_plugin.js +1 -0
  345. data/public/javascripts/tiny_mce/plugins/layer/editor_plugin_src.js +212 -0
  346. data/public/javascripts/tiny_mce/plugins/legacyoutput/editor_plugin.js +1 -0
  347. data/public/javascripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +136 -0
  348. data/public/javascripts/tiny_mce/plugins/media/css/content.css +6 -0
  349. data/public/javascripts/tiny_mce/plugins/media/css/media.css +16 -0
  350. data/public/javascripts/tiny_mce/plugins/media/editor_plugin.js +1 -0
  351. data/public/javascripts/tiny_mce/plugins/media/editor_plugin_src.js +414 -0
  352. data/public/javascripts/tiny_mce/plugins/media/img/flash.gif +0 -0
  353. data/public/javascripts/tiny_mce/plugins/media/img/flv_player.swf +0 -0
  354. data/public/javascripts/tiny_mce/plugins/media/img/quicktime.gif +0 -0
  355. data/public/javascripts/tiny_mce/plugins/media/img/realmedia.gif +0 -0
  356. data/public/javascripts/tiny_mce/plugins/media/img/shockwave.gif +0 -0
  357. data/public/javascripts/tiny_mce/plugins/media/img/trans.gif +0 -0
  358. data/public/javascripts/tiny_mce/plugins/media/img/windowsmedia.gif +0 -0
  359. data/public/javascripts/tiny_mce/plugins/media/js/embed.js +73 -0
  360. data/public/javascripts/tiny_mce/plugins/media/js/media.js +630 -0
  361. data/public/javascripts/tiny_mce/plugins/media/langs/en_dlg.js +103 -0
  362. data/public/javascripts/tiny_mce/plugins/media/media.htm +817 -0
  363. data/public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin.js +1 -0
  364. data/public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +53 -0
  365. data/public/javascripts/tiny_mce/plugins/noneditable/editor_plugin.js +1 -0
  366. data/public/javascripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +90 -0
  367. data/public/javascripts/tiny_mce/plugins/pagebreak/css/content.css +1 -0
  368. data/public/javascripts/tiny_mce/plugins/pagebreak/editor_plugin.js +1 -0
  369. data/public/javascripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +77 -0
  370. data/public/javascripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif +0 -0
  371. data/public/javascripts/tiny_mce/plugins/pagebreak/img/trans.gif +0 -0
  372. data/public/javascripts/tiny_mce/plugins/paste/editor_plugin.js +1 -0
  373. data/public/javascripts/tiny_mce/plugins/paste/editor_plugin_src.js +929 -0
  374. data/public/javascripts/tiny_mce/plugins/paste/js/pastetext.js +36 -0
  375. data/public/javascripts/tiny_mce/plugins/paste/js/pasteword.js +51 -0
  376. data/public/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +5 -0
  377. data/public/javascripts/tiny_mce/plugins/paste/pastetext.htm +27 -0
  378. data/public/javascripts/tiny_mce/plugins/paste/pasteword.htm +21 -0
  379. data/public/javascripts/tiny_mce/plugins/preview/editor_plugin.js +1 -0
  380. data/public/javascripts/tiny_mce/plugins/preview/editor_plugin_src.js +53 -0
  381. data/public/javascripts/tiny_mce/plugins/preview/example.html +28 -0
  382. data/public/javascripts/tiny_mce/plugins/preview/jscripts/embed.js +73 -0
  383. data/public/javascripts/tiny_mce/plugins/preview/preview.html +17 -0
  384. data/public/javascripts/tiny_mce/plugins/print/editor_plugin.js +1 -0
  385. data/public/javascripts/tiny_mce/plugins/print/editor_plugin_src.js +34 -0
  386. data/public/javascripts/tiny_mce/plugins/save/editor_plugin.js +1 -0
  387. data/public/javascripts/tiny_mce/plugins/save/editor_plugin_src.js +101 -0
  388. data/public/javascripts/tiny_mce/plugins/searchreplace/css/searchreplace.css +6 -0
  389. data/public/javascripts/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -0
  390. data/public/javascripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js +57 -0
  391. data/public/javascripts/tiny_mce/plugins/searchreplace/js/searchreplace.js +130 -0
  392. data/public/javascripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js +16 -0
  393. data/public/javascripts/tiny_mce/plugins/searchreplace/searchreplace.htm +99 -0
  394. data/public/javascripts/tiny_mce/plugins/spellchecker/css/content.css +1 -0
  395. data/public/javascripts/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -0
  396. data/public/javascripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js +341 -0
  397. data/public/javascripts/tiny_mce/plugins/spellchecker/img/wline.gif +0 -0
  398. data/public/javascripts/tiny_mce/plugins/style/css/props.css +13 -0
  399. data/public/javascripts/tiny_mce/plugins/style/editor_plugin.js +1 -0
  400. data/public/javascripts/tiny_mce/plugins/style/editor_plugin_src.js +55 -0
  401. data/public/javascripts/tiny_mce/plugins/style/js/props.js +641 -0
  402. data/public/javascripts/tiny_mce/plugins/style/langs/en_dlg.js +63 -0
  403. data/public/javascripts/tiny_mce/plugins/style/props.htm +726 -0
  404. data/public/javascripts/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -0
  405. data/public/javascripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js +112 -0
  406. data/public/javascripts/tiny_mce/plugins/table/cell.htm +178 -0
  407. data/public/javascripts/tiny_mce/plugins/table/css/cell.css +17 -0
  408. data/public/javascripts/tiny_mce/plugins/table/css/row.css +25 -0
  409. data/public/javascripts/tiny_mce/plugins/table/css/table.css +13 -0
  410. data/public/javascripts/tiny_mce/plugins/table/editor_plugin.js +1 -0
  411. data/public/javascripts/tiny_mce/plugins/table/editor_plugin_src.js +1118 -0
  412. data/public/javascripts/tiny_mce/plugins/table/js/cell.js +286 -0
  413. data/public/javascripts/tiny_mce/plugins/table/js/merge_cells.js +27 -0
  414. data/public/javascripts/tiny_mce/plugins/table/js/row.js +237 -0
  415. data/public/javascripts/tiny_mce/plugins/table/js/table.js +449 -0
  416. data/public/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +74 -0
  417. data/public/javascripts/tiny_mce/plugins/table/merge_cells.htm +32 -0
  418. data/public/javascripts/tiny_mce/plugins/table/row.htm +155 -0
  419. data/public/javascripts/tiny_mce/plugins/table/table.htm +187 -0
  420. data/public/javascripts/tiny_mce/plugins/template/blank.htm +12 -0
  421. data/public/javascripts/tiny_mce/plugins/template/css/template.css +23 -0
  422. data/public/javascripts/tiny_mce/plugins/template/editor_plugin.js +1 -0
  423. data/public/javascripts/tiny_mce/plugins/template/editor_plugin_src.js +159 -0
  424. data/public/javascripts/tiny_mce/plugins/template/js/template.js +106 -0
  425. data/public/javascripts/tiny_mce/plugins/template/langs/en_dlg.js +15 -0
  426. data/public/javascripts/tiny_mce/plugins/template/template.htm +32 -0
  427. data/public/javascripts/tiny_mce/plugins/visualchars/editor_plugin.js +1 -0
  428. data/public/javascripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +76 -0
  429. data/public/javascripts/tiny_mce/plugins/wordcount/editor_plugin.js +1 -0
  430. data/public/javascripts/tiny_mce/plugins/wordcount/editor_plugin_src.js +98 -0
  431. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +141 -0
  432. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +141 -0
  433. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +148 -0
  434. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/cite.htm +141 -0
  435. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css +11 -0
  436. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/css/popup.css +9 -0
  437. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/del.htm +161 -0
  438. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -0
  439. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +144 -0
  440. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/ins.htm +161 -0
  441. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js +28 -0
  442. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js +28 -0
  443. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js +126 -0
  444. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/cite.js +28 -0
  445. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/del.js +63 -0
  446. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js +231 -0
  447. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/ins.js +62 -0
  448. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js +32 -0
  449. data/public/javascripts/tiny_mce/themes/advanced/about.htm +54 -0
  450. data/public/javascripts/tiny_mce/themes/advanced/anchor.htm +26 -0
  451. data/public/javascripts/tiny_mce/themes/advanced/charmap.htm +53 -0
  452. data/public/javascripts/tiny_mce/themes/advanced/color_picker.htm +73 -0
  453. data/public/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -0
  454. data/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js +1167 -0
  455. data/public/javascripts/tiny_mce/themes/advanced/image.htm +80 -0
  456. data/public/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  457. data/public/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  458. data/public/javascripts/tiny_mce/themes/advanced/js/about.js +72 -0
  459. data/public/javascripts/tiny_mce/themes/advanced/js/anchor.js +37 -0
  460. data/public/javascripts/tiny_mce/themes/advanced/js/charmap.js +335 -0
  461. data/public/javascripts/tiny_mce/themes/advanced/js/color_picker.js +253 -0
  462. data/public/javascripts/tiny_mce/themes/advanced/js/image.js +245 -0
  463. data/public/javascripts/tiny_mce/themes/advanced/js/link.js +156 -0
  464. data/public/javascripts/tiny_mce/themes/advanced/js/source_editor.js +62 -0
  465. data/public/javascripts/tiny_mce/themes/advanced/langs/en.js +62 -0
  466. data/public/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +51 -0
  467. data/public/javascripts/tiny_mce/themes/advanced/link.htm +58 -0
  468. data/public/javascripts/tiny_mce/themes/advanced/skins/default/content.css +35 -0
  469. data/public/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +117 -0
  470. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  471. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  472. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  473. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  474. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  475. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  476. data/public/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +213 -0
  477. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +35 -0
  478. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +116 -0
  479. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  480. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  481. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  482. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +215 -0
  483. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +8 -0
  484. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -0
  485. data/public/javascripts/tiny_mce/themes/advanced/source_editor.htm +26 -0
  486. data/public/javascripts/tiny_mce/themes/simple/editor_template.js +1 -0
  487. data/public/javascripts/tiny_mce/themes/simple/editor_template_src.js +85 -0
  488. data/public/javascripts/tiny_mce/themes/simple/img/icons.gif +0 -0
  489. data/public/javascripts/tiny_mce/themes/simple/langs/en.js +11 -0
  490. data/public/javascripts/tiny_mce/themes/simple/skins/default/content.css +25 -0
  491. data/public/javascripts/tiny_mce/themes/simple/skins/default/ui.css +32 -0
  492. data/public/javascripts/tiny_mce/themes/simple/skins/o2k7/content.css +17 -0
  493. data/public/javascripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
  494. data/public/javascripts/tiny_mce/themes/simple/skins/o2k7/ui.css +35 -0
  495. data/public/javascripts/tiny_mce/tiny_mce.js +1 -0
  496. data/public/javascripts/tiny_mce/tiny_mce_popup.js +5 -0
  497. data/public/javascripts/tiny_mce/tiny_mce_src.js +13134 -0
  498. data/public/javascripts/tiny_mce/utils/editable_selects.js +70 -0
  499. data/public/javascripts/tiny_mce/utils/form_utils.js +200 -0
  500. data/public/javascripts/tiny_mce/utils/mctabs.js +77 -0
  501. data/public/javascripts/tiny_mce/utils/validate.js +220 -0
  502. data/public/stylesheets/admin/fancybox.css +341 -0
  503. data/public/stylesheets/admin/forms.css +520 -0
  504. data/public/stylesheets/admin/handheld.css +6 -0
  505. data/public/stylesheets/admin/ie.css +118 -0
  506. data/public/stylesheets/admin/ie6.css +23 -0
  507. data/public/stylesheets/admin/ie8.css +16 -0
  508. data/public/stylesheets/admin/layout.css +723 -0
  509. data/public/stylesheets/admin/print.css +27 -0
  510. data/public/stylesheets/admin/reset.css +81 -0
  511. data/public/stylesheets/admin/skin.css +698 -0
  512. data/public/stylesheets/admin/tinymce.css +2 -0
  513. data/public/stylesheets/admin/typography.css +207 -0
  514. data/public/stylesheets/ellipsis.xml +15 -0
  515. data/public/stylesheets/fancybox.css +313 -0
  516. data/public/stylesheets/forms.css +7 -0
  517. data/public/stylesheets/ie.css +12 -0
  518. data/public/stylesheets/ie8.css +8 -0
  519. data/public/stylesheets/layout.css +31 -0
  520. data/public/stylesheets/plupload.queue.css +181 -0
  521. data/public/stylesheets/reset.css +84 -0
  522. data/public/stylesheets/sass/forms.scss +7 -0
  523. data/public/stylesheets/sass/ie.scss +12 -0
  524. data/public/stylesheets/sass/ie8.scss +8 -0
  525. data/public/stylesheets/sass/layout.scss +45 -0
  526. data/public/stylesheets/sass/skin.scss +35 -0
  527. data/public/stylesheets/sass/typography.scss +162 -0
  528. data/public/stylesheets/skin.css +22 -0
  529. data/public/stylesheets/typography.css +162 -0
  530. data/script/cucumber +10 -0
  531. data/script/rails +6 -0
  532. data/spec/factories/asset.rb +16 -0
  533. data/spec/factories/component.rb +9 -0
  534. data/spec/factories/node.rb +15 -0
  535. data/spec/factories/user.rb +5 -0
  536. data/spec/files/beef.png +0 -0
  537. data/spec/files/get_video.flv +0 -0
  538. data/spec/files/test.pdf +0 -0
  539. data/spec/noodall-ui_spec.rb +9 -0
  540. data/spec/spec_helper.rb +4 -0
  541. data/tmp/.gitignore +0 -0
  542. metadata +685 -0
@@ -0,0 +1,137 @@
1
+ Given /^I am editing content$/ do
2
+ @_content = Factory(:page_a)
3
+ visit noodall_admin_node_path(@_content)
4
+ end
5
+
6
+ When /^(?:|I )click a "([^"]*)" component slot$/ do |slot_name|
7
+ @_slot_type = slot_name.downcase
8
+ within('ol#slot-list') do
9
+ click_link "#{slot_name} Slot"
10
+ end
11
+ end
12
+
13
+ When /^(?:|I )select the "([^\"]+)" component$/ do |component_name|
14
+ within "#fancybox-inner" do
15
+ select component_name, :from => 'Select the type of component'
16
+ end
17
+ end
18
+
19
+ When /^(?:|I )fill in the following within the component:$/ do |fields|
20
+ within "#fancybox-inner" do
21
+ fields.rows_hash.each do |name, value|
22
+ When %{I fill in "#{name}" with "#{value}"}
23
+ end
24
+ end
25
+ end
26
+
27
+ When /^(?:|I )press "([^"]*)" within the component$/ do |button|
28
+ within "#fancybox-inner" do
29
+ click_button(button)
30
+ end
31
+ end
32
+
33
+ When /^(?:|I )select an image from the asset library$/ do
34
+ asset = Factory(:asset, :title => "My Image")
35
+ within "#fancybox-inner" do
36
+ pending
37
+ end
38
+ end
39
+
40
+ When /^(?:I|a website visitor) visit(?:s|) the content page$/ do
41
+ visit node_path(@_content)
42
+ end
43
+
44
+
45
+ Then /^I should see the general content$/ do
46
+ within("div##{@_slot_type}_slot_0.general-content") do |slot|
47
+ slot.should contain('Test Title One')
48
+ end
49
+ end
50
+
51
+ Then /^I select an image from the asset library$/ do
52
+ within "li.multi-file:last" do
53
+ asset = Factory(:asset, :title => "Image 1")
54
+ set_hidden_field "node[#{@_slot_type}_slot_0][contents][][asset_id]", :to => asset.id
55
+ end
56
+ end
57
+
58
+ Then /^I add some images to from the asset library$/ do
59
+ 5.times do |i|
60
+ Factory(:asset, :title => "Image #{i}")
61
+ end
62
+ page.find(:css, 'span.add-multi-asset').click
63
+ 3.times do |i|
64
+ within "#asset-browser li:nth(#{i + 1})" do
65
+ click_link "Add"
66
+ end
67
+ end
68
+ page.find(:css, 'li.action a').click
69
+ end
70
+
71
+ Then /^I should see the gallery thumbnails$/ do
72
+ page.should have_css("ul.gallery li img", :count => 3)
73
+ end
74
+
75
+
76
+ Given /^content exists with a gallery$/ do
77
+ @_content = Factory(:page_a)
78
+ @_content.small_slot_0 = Factory(:gallery)
79
+ @_content.save
80
+ end
81
+
82
+ Given /^I have not entered a URL for the first image$/ do
83
+ @_content.small_slot_0.contents.first.url = ''
84
+ @_content.save
85
+ end
86
+
87
+ Given /^I have entered a URL for the second image$/ do
88
+ @_content.small_slot_0.contents[1].url = 'http://example.com'
89
+ @_content.save
90
+ end
91
+
92
+ When /^I click on the first image$/ do
93
+ @_image = @_content.small_slot_0.contents.first
94
+ click_link_within("ul.gallery li:first", @_image.title)
95
+ end
96
+
97
+ Then /^I should see a larger version of the image$/ do
98
+ # taadaa
99
+ end
100
+
101
+ When /^I click on the second image$/ do
102
+ @_image = @_content.small_slot_0.contents[1]
103
+ response.should have_selector("ul.gallery li:nth(2) a[href='#{@_image.url}']")
104
+ end
105
+ #
106
+ Then /^I should be taken to the URL location$/ do
107
+ # Link already checked
108
+ end
109
+
110
+ Then /^I select some files from the asset library$/ do
111
+ 3.times do |i|
112
+ within "li.multi-file:last" do
113
+ asset = Factory(:document_asset, :title => "Download #{i+1}")
114
+ set_hidden_field 'node[wide_slot_0][contents][][asset_id]', :to => asset.id
115
+ end
116
+ click_button "Publish"
117
+ visit admin_node_path(@_content)
118
+ end
119
+ end
120
+
121
+ Then /^I should see the list of files$/ do
122
+ @_content.reload
123
+ @_content.wide_slot_0.contents.should have(8).things
124
+ response.should have_selector('ul#download-list li', :count => 8)
125
+ end
126
+
127
+ Then /^each file should have an icon based on file\-type$/ do
128
+ response.should have_selector("ul#download-list li.file-type-#{@_content.wide_slot_0.contents.first.asset.file_mime_type.parameterize}")
129
+ end
130
+
131
+ When /^I click on a file's listing$/ do
132
+ click_link_within("ul#download-list", @_content.wide_slot_0.contents.first.asset.title)
133
+ end
134
+
135
+ Then /^the file should start downloading$/ do
136
+ # ||||||||||||||||||=> done
137
+ end
@@ -0,0 +1,187 @@
1
+ When /^I click on the primary navigation link "([^\"]*)"$/ do |arg1|
2
+ visit root_path
3
+ click_link_within 'ol#nav-node-tree-root', arg1
4
+ end
5
+
6
+ Given /^content exists within a branch of the content tree$/ do
7
+ @_content = Factory(:page_a, :title => 'Top Page', :publish => true)
8
+ 3.times do |i|
9
+ @_content = Factory(:page_a, :title => "Level #{i+1} Page", :parent => @_content, :publish => true)
10
+ end
11
+ end
12
+
13
+ Then /^I should see a bread\-crumb trail available in the footer that details the content above that content in that branch$/ do
14
+ page.should have_css( "div#breadcrumbs ul li", :count => 5 )
15
+ end
16
+
17
+ When /^I click any content title in the bread\-crumb$/ do
18
+ click_link_within "div#breadcrumbs", "Level 2 Page"
19
+ end
20
+
21
+ Then /^I should be taken to (.+)$/ do |page_name|
22
+ visit path_to(page_name)
23
+ end
24
+
25
+ Then /^I should be taken to that content$/ do
26
+ within "#main-content h1" do |heading|
27
+ heading.should contain "Level 2 Page"
28
+ end
29
+ have_css "div#breadcrumbs span", :count => 3
30
+ end
31
+
32
+ When /^the mouse hovers over a menu item a drop down should appear with 3 levels of the branch$/ do
33
+ page.should have_css('ol#nav-node-tree-root li ol li ol li')
34
+ end
35
+
36
+
37
+ When /^I click on the secondary navigation link "([^\"]*)"$/ do |arg1|
38
+ visit root_path
39
+
40
+ click_link_within '#header .static-nav', arg1
41
+ end
42
+
43
+ Then /^I should be taken to the site map page$/ do
44
+ URI.parse(current_url).path.should == sitemap_path
45
+ end
46
+
47
+
48
+ # Templates
49
+ Then /^I should see the current branch's tree menu$/ do
50
+ page.should have_css('div#supporting-content ul#sub-page-nav')
51
+ end
52
+
53
+ # Then /^I should see (\d+) module areas$/ do |count|
54
+ # page.should have_css('div.component', :count => count.to_i)
55
+ # end
56
+
57
+ Given /^a (?:root )?page exists using the "([^\"]*)" template$/ do |template_title|
58
+ # mongo no understand! mongo sad :(
59
+ Noodall::Node.all({:permalink => "that-#{template_title}-page"}).each{|n| n.destroy }
60
+
61
+ template = template_title.downcase.gsub(' ','_')
62
+ @_content = Factory(template.to_sym, :title => "That #{template_title} page")
63
+
64
+ @_content.save
65
+ end
66
+
67
+ Given /^that page has (?:(?:(\d+) )?"([^\"]*)" )?subpages$/ do |count, template_title|
68
+
69
+ template = template_title.downcase.gsub(' ','_') unless template_title.nil?
70
+
71
+ (count || 5).to_i.times do
72
+ Factory(( template.blank? ? :page_b : template.to_sym ), :parent => @_content, :publish => true)
73
+ end
74
+ end
75
+
76
+ Given /^that page has an? (?:"([^\"]*)" )?parent$/ do |template_title|
77
+
78
+ template = template_title.downcase.gsub(' ','_')
79
+
80
+ @_content.parent = Factory(( template.blank? ? :page_b : template.to_sym ), :publish => true)
81
+ @_content.save
82
+ end
83
+
84
+ Given /^that page has all available slots filled$/ do
85
+ @_content.class.main_slots_count.to_i.times do |i|
86
+ @_content.send("main_slot_#{i}=", Factory(:hero_panel))
87
+ end
88
+
89
+ @_content.class.wide_slots_count.to_i.times do |i|
90
+ @_content.send("wide_slot_#{i}=", Factory(:gallery))
91
+ end
92
+
93
+ @_content.class.small_slots_count.to_i.times do |i|
94
+ @_content.send("small_slot_#{i}=", Factory(:promo))
95
+ end
96
+
97
+ @_content.save
98
+ end
99
+
100
+
101
+
102
+
103
+ When /^I view a page that's content is in the "([^\"]*)" template and is not the branch root$/ do |template_title|
104
+ template = template_title.downcase.gsub(' ','_')
105
+ @_content = Factory(template.to_sym, :parent => Node.first, :publish => true)
106
+
107
+ visit node_path(@_content)
108
+ end
109
+
110
+ When /^I view a page that's content is in the "([^\"]*)" template and is the branch root that does not have published children$/ do |template_title|
111
+ template = template_title.downcase.gsub(' ','_')
112
+ @_content = Factory(template.to_sym, :title => "a #{template_title} page",:publish => true)
113
+
114
+ visit node_path(@_content)
115
+ end
116
+
117
+ When /^I view a page that's content is in the "([^\"]*)" template and it's parent is not the branch root that has published children$/ do |template_title|
118
+ a_page = Factory(:page_a, :publish => true)
119
+ b_page = Factory(:articles_list, :parent => a_page, :publish => true)
120
+
121
+ template = template_title.downcase.gsub(' ','_')
122
+ @_content = Factory(template.to_sym, :title => "a #{template_title} page", :parent => b_page, :publish => true)
123
+
124
+ 5.times do
125
+ Factory(:page_a, :parent => b_page, :publish => true)
126
+ end
127
+
128
+ visit node_path(@_content)
129
+ end
130
+
131
+
132
+ Then /^I should not see the current branch's tree menu$/ do
133
+ page.should_not have_css('div#supporting-content ul#sub-page-nav')
134
+ end
135
+
136
+
137
+ # Template Checks
138
+
139
+ Then /^the page should be in the (.+) template$/ do |template_name|
140
+ # Check the correct template was rendered
141
+ page.should have_css "body.#{template_name.gsub(/\W/, '').underscore}"
142
+ end
143
+
144
+ Then /^I should see (\d+) module areas$/ do |module_count|
145
+ # Check the correct number of modules are in the model and the template
146
+ curent_node = controller.instance_variable_get(:@node)
147
+
148
+ curent_node.class.slots_count.should == module_count.to_i
149
+ end
150
+
151
+ When /^I view a page which is in the "([^\"]*)" template$/ do |template_title|
152
+ template = template_title.downcase.gsub(' ','_')
153
+ @_content = Factory(template.to_sym, :title => "a #{template_title} page", :publish => true)
154
+
155
+ visit node_path(@_content)
156
+ end
157
+
158
+ Given /^that page contains articles$/ do
159
+ 5.times do
160
+ Factory(:article_page, :parent => @_content, :publish => true)
161
+ end
162
+ end
163
+
164
+ Then /^I should see a list of related content that is in the "([^\"]*)" template$/ do |arg1|
165
+ # meh
166
+ end
167
+
168
+ When /^I click the RSS link$/ do
169
+ click_link 'RSS'
170
+ end
171
+
172
+ Then /^I should get an RSS feed of sibling content that is in the "([^\"]*)" template$/ do |arg1|
173
+ page.should have_css('rss channel')
174
+ end
175
+
176
+ Given /^that page has a parent list$/ do
177
+ parent = Factory(:articles_list, :title => "an article list page", :publish => true)
178
+ @_content.parent =parent
179
+ @_content.save
180
+ end
181
+
182
+ Then /^I should see the course information box$/ do
183
+ within("#course-info") do |course_info|
184
+ course_info.should contain('Mr Spoon')
185
+ course_info.should contain('AB1234')
186
+ end
187
+ end
@@ -0,0 +1,39 @@
1
+ module DateSelectSteps
2
+ DATE_TIME_SUFFIXES = {
3
+ :year => '1i',
4
+ :month => '2i',
5
+ :day => '3i',
6
+ :hour => '4i',
7
+ :minute => '5i'
8
+ }
9
+
10
+ def select_date(date_to_select, options ={})
11
+ date = date_to_select.is_a?(Date) || date_to_select.is_a?(Time) ?
12
+ date_to_select : Date.parse(date_to_select)
13
+
14
+ id_prefix = id_prefix_for(options)
15
+
16
+ select date.year.to_s, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:year]}"
17
+ select date.strftime('%B'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:month]}"
18
+ select date.day.to_s, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:day]}"
19
+ end
20
+
21
+ def select_datetime(time_to_select, options ={})
22
+ time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
23
+ id_prefix = id_prefix_for(options)
24
+
25
+ select_date(time_to_select, options)
26
+ select time.hour.to_s, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:hour]}"
27
+ select time.min.to_s, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:minute]}"
28
+ end
29
+
30
+ def id_prefix_for(options = {})
31
+ find('label', :text => options[:from])['for']
32
+ end
33
+ end
34
+ World(DateSelectSteps)
35
+
36
+ When /^(?:|I )select "([^\"]*)" as the "([^\"]*)" date$/ do |date, date_label|
37
+ select_date(date, :from => date_label)
38
+ end
39
+
@@ -0,0 +1,92 @@
1
+ Then /^I should be able to set the permissions on that content$/ do
2
+ fill_in "Update", :with => "Them, Us, Things"
3
+ fill_in "Delete", :with => "Us, Things, Stuff"
4
+ fill_in "Publish", :with => "Us, Stuff"
5
+ click_button "Publish"
6
+ @_content.reload
7
+ @_content.updatable_groups.should == ['Them', 'Us', 'Things']
8
+ @_content.destroyable_groups.should == ['Us', 'Things', 'Stuff']
9
+ @_content.publishable_groups.should == ['Us', 'Stuff']
10
+ end
11
+
12
+ Given(/^content's ([^\"]*) is set to "([^\"]*)" and "([^\"]*)"$/) do |permission, group1, group2|
13
+ @_content = Factory(:page_a, "#{permission.downcase.gsub(/e$/,'')}able_groups" => [group1, group2], :hide => true)
14
+ end
15
+
16
+ Then(/^only users in the "([^\"]*)" and "([^\"]*)" should be able to ([^\"]*) content$/) do |group1, group2, actions|
17
+ [group1, group2].each do |group|
18
+ Given %{I am signed in as a #{group}}
19
+ actions.split(', ').each do |action|
20
+ case action
21
+ when "Update"
22
+ visit admin_node_path(@_content)
23
+ click_button "Draft"
24
+ when "create children of"
25
+ visit admin_node_nodes_path(@_content)
26
+ click_link_within ".choices", "New"
27
+ click_button "Create"
28
+ when "Delete"
29
+ visit admin_nodes_path
30
+ click_link_within "tr:contains('#{@_content.title}')", "Delete"
31
+ # REcreate for the next run
32
+ @_content = Factory(:page_a, "destroyable_groups" => [group1, group2])
33
+ when "Publish"
34
+ visit admin_node_path(@_content)
35
+ begin
36
+ click_button "Publish"
37
+ rescue Webrat::NotFoundError => e
38
+ raise Canable::Transgression # Raise this if we can't find the button
39
+ end
40
+ end
41
+ end
42
+ Then %{I sign out} #Neeed to do this or remeber cookie gets in the way
43
+ end
44
+ end
45
+
46
+ Then(/^users not in the "([^\"]*)" and "([^\"]*)" should not be able to ([^\"]*) content$/) do |group1, group2, action|
47
+ lambda { Then %{only users in the "nongroup" and "anothergroup" should be able to #{action} content} }.should raise_error(Canable::Transgression)
48
+ end
49
+
50
+ Given /^content exists with permissions set$/ do
51
+ @_content = Factory(:page_a, :updatable_groups => ['Dudes'], :destroyable_groups => ['Webbies', 'Dudes'], :publishable_groups => ['Dudes'] )
52
+ end
53
+
54
+ When /^a child of that content is created$/ do
55
+ Given %{I am signed in as a website administrator}
56
+ visit admin_node_nodes_path(@_content)
57
+ click_link_within ".choices", "New"
58
+ fill_in "Title", :with => "Permeable Content"
59
+ choose("Page A")
60
+ click_button "Create"
61
+ end
62
+
63
+ Then(/^by default the child should have the same permissions as it's parent$/) do
64
+ response.should have_css("input#node_updatable_groups_list") do |input|
65
+ input.should have_xpath("@value") do |value|
66
+ value.should contain("Dudes")
67
+ end
68
+ end
69
+ response.should have_css("input#node_destroyable_groups_list") do |input|
70
+ input.should have_xpath("@value") do |value|
71
+ value.should contain("Webbies, Dudes")
72
+ end
73
+ end
74
+ response.should have_css("input#node_publishable_groups_list") do |input|
75
+ input.should have_xpath("@value") do |value|
76
+ value.should contain("Dudes")
77
+ end
78
+ end
79
+ end
80
+
81
+ Then /^I should be able to carry out all actions regardless of group permissions$/ do
82
+ Given %{content exists with permissions set}
83
+ visit admin_node_path(@_content)
84
+ click_button "Draft"
85
+ visit admin_node_nodes_path(@_content)
86
+ click_link_within ".choices", "New"
87
+ click_button "Create"
88
+ visit admin_node_path(@_content)
89
+ click_button "Publish"
90
+ visit admin_nodes_path
91
+ click_link_within "tr:contains('#{@_content.title}')", "Delete"
92
+ end
@@ -0,0 +1,25 @@
1
+ Given /^content exists$/ do
2
+ @_content = Factory(:page_a)
3
+ end
4
+
5
+ When /^I create a new root$/ do
6
+ visit new_noodall_admin_node_path
7
+ end
8
+
9
+ Then /^I should be able select a template from the following:$/ do |table|
10
+ table.hashes.each do |row|
11
+ visit new_noodall_admin_node_path
12
+ choose(row['Template'])
13
+ fill_in("Title", :with => "A title")
14
+ click_button "Create"
15
+ page.should have_content "#{row['Template']} 'A title' was successfully created."
16
+ end
17
+ end
18
+
19
+ Then /^I should see a tree style list that contains all content$/ do
20
+ #Roots
21
+ page.should have_css("ol#sitemap-node-tree-root li:nth(#{Noodall::Node.roots.count})")
22
+
23
+ page.should have_css("ol#sitemap-node-tree-root li li")
24
+
25
+ end
@@ -0,0 +1,7 @@
1
+ When /^I click preview$/ do
2
+ click_link 'Preview'
3
+ end
4
+
5
+ Then /^I should see how the content will look in the website$/ do
6
+ response.should have_css('div#preview-pane')
7
+ end
@@ -0,0 +1,45 @@
1
+ When /^today is "([^\"]*)"$/ do |date|
2
+ Time.stub!(:now).and_return(date.to_time)
3
+ end
4
+
5
+ When /^I publish the content$/ do
6
+ visit noodall_admin_node_path(@_content)
7
+ click_button('Publish')
8
+ end
9
+
10
+ When /^I save content as draft$/ do
11
+ visit noodall_admin_node_path(@_content)
12
+ click_button('Draft')
13
+ end
14
+
15
+ Then /^the content should (not |)be visible on the website$/ do |is_not|
16
+ if is_not.blank?
17
+ visit node_path(@_content)
18
+ page.should within('h1') { have_content(@_content.title) }
19
+ else
20
+ lambda { visit node_path(@_content) }.should raise_error(MongoMapper::DocumentNotFound)
21
+ end
22
+ end
23
+
24
+ Given /^I publish content between "([^\"]*)" and "([^\"]*)"$/ do |from, to|
25
+ visit noodall_admin_node_path(@_content)
26
+ select_datetime(from.to_time, :from => 'Publish at')
27
+ select_datetime(to.to_time, :from => 'Publish until')
28
+ click_button('Publish')
29
+ page.should have_content('was successfully updated')
30
+ end
31
+
32
+
33
+ Given /^published content exists with publish to date: "([^\"]*)"$/ do |time|
34
+ time = time.to_time
35
+ @_content = Factory(:page_a, :published_at => time.yesterday, :published_to => time)
36
+ end
37
+
38
+ When /^I am editing the content$/ do
39
+ visit noodall_admin_node_path(@_content)
40
+ end
41
+
42
+ When /^I clear the publish to date$/ do
43
+ 5.times{ |i| select("", :from => "node[published_to(#{i+1}i)]" ) }
44
+ click_button 'Publish'
45
+ end
@@ -0,0 +1,21 @@
1
+ Given /^there is content that can be searched$/ do
2
+ Given %q{the website has been populated with content based on the site map}
3
+ 3.times do |i|
4
+ Factory(:page_a, :title => "My Searchable Page #{i}", :publish => true)
5
+ end
6
+ top_hit = Factory(:page_a, :title => "My Extra Searchable Page", :description => "My Extra Searchable Page", :publish => true)
7
+ 3.times do |i|
8
+ Factory(:page_a, :title => "My Unfit Page #{i}", :publish => true)
9
+ end
10
+ end
11
+
12
+ Given /^I enter a search term in the search input$/ do
13
+ visit root_path
14
+ fill_in 'q', :with => 'Searchable'
15
+ end
16
+
17
+ Then /^I should see a paginated list of content that matches my search term ordered by relevance$/ do
18
+ # save_and_open_page
19
+ page.should have_css('dl#search-results dt', :count => 4)
20
+ within("dl#search-results dt:first") { click_link "My Extra Searchable Page" }
21
+ end
@@ -0,0 +1,3 @@
1
+ Given /^I am signed in as a(?:n|) (.*)$/ do |role|
2
+ ApplicationController.current_user = Factory(:user, :groups => [role])
3
+ end