refinerycms 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. data/CONTRIBUTORS +8 -0
  2. data/LICENSE +21 -0
  3. data/README +40 -0
  4. data/app/controllers/application.rb +3 -0
  5. data/app/controllers/application_controller.rb +8 -0
  6. data/config/amazon_s3.yml +17 -0
  7. data/config/boot.rb +110 -0
  8. data/config/database.yml.example +20 -0
  9. data/config/environment.rb +67 -0
  10. data/config/environments/development.rb +17 -0
  11. data/config/environments/production.rb +19 -0
  12. data/config/environments/test.rb +22 -0
  13. data/config/initializers/inflections.rb +10 -0
  14. data/config/initializers/mime_types.rb +5 -0
  15. data/config/rackspace_cloudfiles.yml +14 -0
  16. data/config/routes.rb +19 -0
  17. data/db/migrate/20090903030652_remove_title_from_resources.rb +9 -0
  18. data/db/migrate/20090914025122_change_default_image_thumbnails.rb +9 -0
  19. data/db/migrate/20090916025552_resave_refinery_settings_through_serializer.rb +13 -0
  20. data/db/migrate/20090916045536_create_user_plugins.rb +41 -0
  21. data/db/migrate/20090916055243_add_position_to_user_plugins.rb +9 -0
  22. data/db/schema.rb +141 -0
  23. data/db/seeds.rb +109 -0
  24. data/lib/refinery_initializer.rb +9 -0
  25. data/public/.htaccess +40 -0
  26. data/public/404.html +29 -0
  27. data/public/422.html +30 -0
  28. data/public/500.html +30 -0
  29. data/public/favicon.ico +0 -0
  30. data/public/images/lightbox/bullet.gif +0 -0
  31. data/public/images/lightbox/close.gif +0 -0
  32. data/public/images/lightbox/closelabel.gif +0 -0
  33. data/public/images/lightbox/donate-button.gif +0 -0
  34. data/public/images/lightbox/download-icon.gif +0 -0
  35. data/public/images/lightbox/loading.gif +0 -0
  36. data/public/images/lightbox/nextlabel.gif +0 -0
  37. data/public/images/lightbox/prevlabel.gif +0 -0
  38. data/public/images/refinery/add.gif +0 -0
  39. data/public/images/refinery/add.png +0 -0
  40. data/public/images/refinery/admin_bg.png +0 -0
  41. data/public/images/refinery/ajax-loader.gif +0 -0
  42. data/public/images/refinery/branch-end.gif +0 -0
  43. data/public/images/refinery/branch-start.gif +0 -0
  44. data/public/images/refinery/branch.gif +0 -0
  45. data/public/images/refinery/cross.gif +0 -0
  46. data/public/images/refinery/deactive-gradient.gif +0 -0
  47. data/public/images/refinery/delete.gif +0 -0
  48. data/public/images/refinery/drag.gif +0 -0
  49. data/public/images/refinery/edit.gif +0 -0
  50. data/public/images/refinery/header-background.gif +0 -0
  51. data/public/images/refinery/header_background.png +0 -0
  52. data/public/images/refinery/hover-gradient.jpg +0 -0
  53. data/public/images/refinery/icons/accept.png +0 -0
  54. data/public/images/refinery/icons/add.png +0 -0
  55. data/public/images/refinery/icons/application_edit.png +0 -0
  56. data/public/images/refinery/icons/application_go.png +0 -0
  57. data/public/images/refinery/icons/arrow_left.png +0 -0
  58. data/public/images/refinery/icons/arrow_switch.png +0 -0
  59. data/public/images/refinery/icons/arrow_up.png +0 -0
  60. data/public/images/refinery/icons/bin_closed.png +0 -0
  61. data/public/images/refinery/icons/cancel.png +0 -0
  62. data/public/images/refinery/icons/cog_add.png +0 -0
  63. data/public/images/refinery/icons/cog_edit.png +0 -0
  64. data/public/images/refinery/icons/cross.png +0 -0
  65. data/public/images/refinery/icons/delete.png +0 -0
  66. data/public/images/refinery/icons/edit.png +0 -0
  67. data/public/images/refinery/icons/email_edit.png +0 -0
  68. data/public/images/refinery/icons/email_go.png +0 -0
  69. data/public/images/refinery/icons/email_open.png +0 -0
  70. data/public/images/refinery/icons/eye.png +0 -0
  71. data/public/images/refinery/icons/help.png +0 -0
  72. data/public/images/refinery/icons/image_add.png +0 -0
  73. data/public/images/refinery/icons/image_edit.png +0 -0
  74. data/public/images/refinery/icons/layout_add.png +0 -0
  75. data/public/images/refinery/icons/layout_edit.png +0 -0
  76. data/public/images/refinery/icons/page_add.png +0 -0
  77. data/public/images/refinery/icons/page_edit.png +0 -0
  78. data/public/images/refinery/icons/page_link.png +0 -0
  79. data/public/images/refinery/icons/page_white_edit.png +0 -0
  80. data/public/images/refinery/icons/page_white_put.png +0 -0
  81. data/public/images/refinery/icons/reorder.png +0 -0
  82. data/public/images/refinery/icons/tick.png +0 -0
  83. data/public/images/refinery/icons/user.png +0 -0
  84. data/public/images/refinery/icons/user_add.png +0 -0
  85. data/public/images/refinery/icons/user_comment.png +0 -0
  86. data/public/images/refinery/icons/user_edit.png +0 -0
  87. data/public/images/refinery/info.gif +0 -0
  88. data/public/images/refinery/logo.png +0 -0
  89. data/public/images/refinery/m-tools.gif +0 -0
  90. data/public/images/refinery/magnifier.png +0 -0
  91. data/public/images/refinery/nav-3-background.gif +0 -0
  92. data/public/images/refinery/page_bg.png +0 -0
  93. data/public/images/refinery/resolve-digital.gif +0 -0
  94. data/public/images/refinery/search.gif +0 -0
  95. data/public/images/refinery/shad_blcorner.png +0 -0
  96. data/public/images/refinery/shad_bottom.png +0 -0
  97. data/public/images/refinery/shad_brcorner.png +0 -0
  98. data/public/images/refinery/shad_tlcorner.png +0 -0
  99. data/public/images/refinery/shad_trcorner.png +0 -0
  100. data/public/images/refinery/tableft.gif +0 -0
  101. data/public/images/refinery/tabright.gif +0 -0
  102. data/public/images/refinery/tick.gif +0 -0
  103. data/public/images/thickbox/cross.png +0 -0
  104. data/public/images/thickbox/loadingAnimation.gif +0 -0
  105. data/public/images/thickbox/macFFBgHack.png +0 -0
  106. data/public/images/wymeditor/skins/refinery/blockquote.png +0 -0
  107. data/public/images/wymeditor/skins/refinery/center.png +0 -0
  108. data/public/images/wymeditor/skins/refinery/css.png +0 -0
  109. data/public/images/wymeditor/skins/refinery/h1.png +0 -0
  110. data/public/images/wymeditor/skins/refinery/h2.png +0 -0
  111. data/public/images/wymeditor/skins/refinery/h3.png +0 -0
  112. data/public/images/wymeditor/skins/refinery/h4.png +0 -0
  113. data/public/images/wymeditor/skins/refinery/h5.png +0 -0
  114. data/public/images/wymeditor/skins/refinery/h6.png +0 -0
  115. data/public/images/wymeditor/skins/refinery/icons.png +0 -0
  116. data/public/images/wymeditor/skins/refinery/iframe/lbl-blockquote.png +0 -0
  117. data/public/images/wymeditor/skins/refinery/iframe/lbl-h1.png +0 -0
  118. data/public/images/wymeditor/skins/refinery/iframe/lbl-h2.png +0 -0
  119. data/public/images/wymeditor/skins/refinery/iframe/lbl-h3.png +0 -0
  120. data/public/images/wymeditor/skins/refinery/iframe/lbl-h4.png +0 -0
  121. data/public/images/wymeditor/skins/refinery/iframe/lbl-h5.png +0 -0
  122. data/public/images/wymeditor/skins/refinery/iframe/lbl-h6.png +0 -0
  123. data/public/images/wymeditor/skins/refinery/iframe/lbl-p.png +0 -0
  124. data/public/images/wymeditor/skins/refinery/iframe/lbl-pre.png +0 -0
  125. data/public/images/wymeditor/skins/refinery/justify.png +0 -0
  126. data/public/images/wymeditor/skins/refinery/left.png +0 -0
  127. data/public/images/wymeditor/skins/refinery/paragraph.png +0 -0
  128. data/public/images/wymeditor/skins/refinery/right.png +0 -0
  129. data/public/images/wymeditor/skins/wymeditor_icon.png +0 -0
  130. data/public/javascripts/admin.js +26 -0
  131. data/public/javascripts/application.js +2 -0
  132. data/public/javascripts/builder.js +136 -0
  133. data/public/javascripts/controls.js +963 -0
  134. data/public/javascripts/dialog.js +52 -0
  135. data/public/javascripts/dragdrop.js +973 -0
  136. data/public/javascripts/effects.js +1128 -0
  137. data/public/javascripts/fastinit.js +84 -0
  138. data/public/javascripts/jquery/GPL-LICENSE.txt +278 -0
  139. data/public/javascripts/jquery/MIT-LICENSE.txt +20 -0
  140. data/public/javascripts/jquery/README +67 -0
  141. data/public/javascripts/jquery/jquery.js +11 -0
  142. data/public/javascripts/jquery/jquery.ui.draggable.js +1 -0
  143. data/public/javascripts/jquery/jquery.ui.js +1 -0
  144. data/public/javascripts/jquery/jquery.ui.resizable.js +1 -0
  145. data/public/javascripts/jquery/jquery.ui.sortable.js +1 -0
  146. data/public/javascripts/lightbox.js +503 -0
  147. data/public/javascripts/livepipe.js +356 -0
  148. data/public/javascripts/overlabel.js +66 -0
  149. data/public/javascripts/parse_url.js +38 -0
  150. data/public/javascripts/prototype.enhancements.js +24 -0
  151. data/public/javascripts/prototype.js +4320 -0
  152. data/public/javascripts/scriptaculous.js +47 -0
  153. data/public/javascripts/slider.js +275 -0
  154. data/public/javascripts/tabs.js +147 -0
  155. data/public/javascripts/thickbox.js +363 -0
  156. data/public/javascripts/tooltips.js +173 -0
  157. data/public/javascripts/wymeditor/boot_wym.js +163 -0
  158. data/public/javascripts/wymeditor/jquery.refinery.wymeditor.js +4986 -0
  159. data/public/javascripts/wymeditor/lang/ca.js +45 -0
  160. data/public/javascripts/wymeditor/lang/cs.js +45 -0
  161. data/public/javascripts/wymeditor/lang/de.js +45 -0
  162. data/public/javascripts/wymeditor/lang/en.js +48 -0
  163. data/public/javascripts/wymeditor/lang/es.js +45 -0
  164. data/public/javascripts/wymeditor/lang/fa.js +46 -0
  165. data/public/javascripts/wymeditor/lang/fr.js +45 -0
  166. data/public/javascripts/wymeditor/lang/he.js +45 -0
  167. data/public/javascripts/wymeditor/lang/hu.js +45 -0
  168. data/public/javascripts/wymeditor/lang/it.js +45 -0
  169. data/public/javascripts/wymeditor/lang/nb.js +45 -0
  170. data/public/javascripts/wymeditor/lang/nl.js +45 -0
  171. data/public/javascripts/wymeditor/lang/nn.js +45 -0
  172. data/public/javascripts/wymeditor/lang/pl.js +45 -0
  173. data/public/javascripts/wymeditor/lang/pt-br.js +45 -0
  174. data/public/javascripts/wymeditor/lang/pt.js +45 -0
  175. data/public/javascripts/wymeditor/lang/ru.js +45 -0
  176. data/public/javascripts/wymeditor/lang/sv.js +45 -0
  177. data/public/javascripts/wymeditor/lang/tr.js +45 -0
  178. data/public/javascripts/wymeditor/lang/zh_cn.js +47 -0
  179. data/public/javascripts/wymeditor/skins/refinery/skin.js +40 -0
  180. data/public/robots.txt +2 -0
  181. data/public/stylesheets/application.css +0 -0
  182. data/public/stylesheets/application.css.example +76 -0
  183. data/public/stylesheets/formatting.css +0 -0
  184. data/public/stylesheets/formatting.css.example +86 -0
  185. data/public/stylesheets/home.css +0 -0
  186. data/public/stylesheets/home.css.example +27 -0
  187. data/public/stylesheets/ie6.css +0 -0
  188. data/public/stylesheets/ie7.css +0 -0
  189. data/public/stylesheets/lightbox.css +27 -0
  190. data/public/stylesheets/overlabel.css +21 -0
  191. data/public/stylesheets/refinery.css +1036 -0
  192. data/public/stylesheets/theme.css +36 -0
  193. data/public/stylesheets/thickbox.css +165 -0
  194. data/public/stylesheets/tooltips.css +38 -0
  195. data/public/stylesheets/wymeditor/skins/refinery/skin.css +211 -0
  196. data/public/stylesheets/wymeditor/skins/refinery/wymiframe.css +92 -0
  197. data/public/wymeditor/GPL-license.txt +278 -0
  198. data/public/wymeditor/MIT-license.txt +20 -0
  199. data/public/wymeditor/README +35 -0
  200. data/vendor/plugins/acts_as_indexed/CHANGELOG +74 -0
  201. data/vendor/plugins/acts_as_indexed/MIT-LICENSE +20 -0
  202. data/vendor/plugins/acts_as_indexed/README.rdoc +114 -0
  203. data/vendor/plugins/acts_as_indexed/Rakefile +35 -0
  204. data/vendor/plugins/acts_as_indexed/init.rb +2 -0
  205. data/vendor/plugins/acts_as_indexed/lib/acts_as_indexed.rb +224 -0
  206. data/vendor/plugins/acts_as_indexed/lib/search_atom.rb +107 -0
  207. data/vendor/plugins/acts_as_indexed/lib/search_index.rb +329 -0
  208. data/vendor/plugins/acts_as_indexed/lib/will_paginate_search.rb +29 -0
  209. data/vendor/plugins/acts_as_indexed/test/abstract_unit.rb +47 -0
  210. data/vendor/plugins/acts_as_indexed/test/acts_as_indexed_test.rb +102 -0
  211. data/vendor/plugins/acts_as_indexed/test/database.yml +10 -0
  212. data/vendor/plugins/acts_as_indexed/test/fixtures/post.rb +5 -0
  213. data/vendor/plugins/acts_as_indexed/test/fixtures/posts.yml +31 -0
  214. data/vendor/plugins/acts_as_indexed/test/schema.rb +6 -0
  215. data/vendor/plugins/acts_as_tree/README +26 -0
  216. data/vendor/plugins/acts_as_tree/Rakefile +22 -0
  217. data/vendor/plugins/acts_as_tree/init.rb +1 -0
  218. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +141 -0
  219. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  220. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
  221. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  222. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  223. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  224. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  225. data/vendor/plugins/attachment_fu/CHANGELOG +35 -0
  226. data/vendor/plugins/attachment_fu/LICENSE +20 -0
  227. data/vendor/plugins/attachment_fu/README +193 -0
  228. data/vendor/plugins/attachment_fu/Rakefile +22 -0
  229. data/vendor/plugins/attachment_fu/amazon_s3.yml.tpl +17 -0
  230. data/vendor/plugins/attachment_fu/init.rb +16 -0
  231. data/vendor/plugins/attachment_fu/install.rb +7 -0
  232. data/vendor/plugins/attachment_fu/lib/geometry.rb +93 -0
  233. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb +514 -0
  234. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/cloud_file_backend.rb +211 -0
  235. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/db_file_backend.rb +39 -0
  236. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/file_system_backend.rb +126 -0
  237. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/s3_backend.rb +394 -0
  238. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb +59 -0
  239. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/gd2_processor.rb +54 -0
  240. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/image_science_processor.rb +61 -0
  241. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/mini_magick_processor.rb +132 -0
  242. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/rmagick_processor.rb +57 -0
  243. data/vendor/plugins/attachment_fu/rackspace_cloudfiles.yml.tpl +14 -0
  244. data/vendor/plugins/attachment_fu/test/backends/db_file_test.rb +16 -0
  245. data/vendor/plugins/attachment_fu/test/backends/file_system_test.rb +143 -0
  246. data/vendor/plugins/attachment_fu/test/backends/remote/cloudfiles_test.rb +102 -0
  247. data/vendor/plugins/attachment_fu/test/backends/remote/s3_test.rb +119 -0
  248. data/vendor/plugins/attachment_fu/test/base_attachment_tests.rb +77 -0
  249. data/vendor/plugins/attachment_fu/test/basic_test.rb +70 -0
  250. data/vendor/plugins/attachment_fu/test/database.yml +18 -0
  251. data/vendor/plugins/attachment_fu/test/extra_attachment_test.rb +67 -0
  252. data/vendor/plugins/attachment_fu/test/fixtures/attachment.rb +226 -0
  253. data/vendor/plugins/attachment_fu/test/fixtures/files/fake/rails.png +0 -0
  254. data/vendor/plugins/attachment_fu/test/fixtures/files/foo.txt +1 -0
  255. data/vendor/plugins/attachment_fu/test/fixtures/files/rails.png +0 -0
  256. data/vendor/plugins/attachment_fu/test/geometry_test.rb +108 -0
  257. data/vendor/plugins/attachment_fu/test/processors/core_image_test.rb +37 -0
  258. data/vendor/plugins/attachment_fu/test/processors/gd2_test.rb +31 -0
  259. data/vendor/plugins/attachment_fu/test/processors/image_science_test.rb +31 -0
  260. data/vendor/plugins/attachment_fu/test/processors/mini_magick_test.rb +103 -0
  261. data/vendor/plugins/attachment_fu/test/processors/rmagick_test.rb +255 -0
  262. data/vendor/plugins/attachment_fu/test/schema.rb +134 -0
  263. data/vendor/plugins/attachment_fu/test/test_helper.rb +150 -0
  264. data/vendor/plugins/attachment_fu/test/validation_test.rb +55 -0
  265. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/color.rb +27 -0
  266. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/effects.rb +31 -0
  267. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/perspective.rb +25 -0
  268. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/quality.rb +25 -0
  269. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/scale.rb +47 -0
  270. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/watermark.rb +32 -0
  271. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/processor.rb +123 -0
  272. data/vendor/plugins/authentication/README +0 -0
  273. data/vendor/plugins/authentication/Rakefile +0 -0
  274. data/vendor/plugins/authentication/app/controllers/admin/users_controller.rb +93 -0
  275. data/vendor/plugins/authentication/app/controllers/sessions_controller.rb +30 -0
  276. data/vendor/plugins/authentication/app/controllers/users_controller.rb +86 -0
  277. data/vendor/plugins/authentication/app/helpers/sessions_helper.rb +2 -0
  278. data/vendor/plugins/authentication/app/helpers/users_helper.rb +2 -0
  279. data/vendor/plugins/authentication/app/models/user.rb +146 -0
  280. data/vendor/plugins/authentication/app/models/user_mailer.rb +25 -0
  281. data/vendor/plugins/authentication/app/models/user_observer.rb +11 -0
  282. data/vendor/plugins/authentication/app/models/user_plugin.rb +5 -0
  283. data/vendor/plugins/authentication/app/views/admin/users/_form.html.erb +42 -0
  284. data/vendor/plugins/authentication/app/views/admin/users/edit.html.erb +1 -0
  285. data/vendor/plugins/authentication/app/views/admin/users/index.html.erb +41 -0
  286. data/vendor/plugins/authentication/app/views/admin/users/new.html.erb +1 -0
  287. data/vendor/plugins/authentication/app/views/sessions/new.html.erb +21 -0
  288. data/vendor/plugins/authentication/app/views/user_mailer/activation.html.erb +3 -0
  289. data/vendor/plugins/authentication/app/views/user_mailer/signup_notification.html.erb +8 -0
  290. data/vendor/plugins/authentication/app/views/users/new.html.erb +28 -0
  291. data/vendor/plugins/authentication/config/routes.rb +10 -0
  292. data/vendor/plugins/authentication/init.rb +13 -0
  293. data/vendor/plugins/authentication/lib/authenticated_system.rb +115 -0
  294. data/vendor/plugins/authentication/lib/authenticated_test_helper.rb +10 -0
  295. data/vendor/plugins/authentication/test/fixtures/users.yml +19 -0
  296. data/vendor/plugins/authentication/test/functional/admin/base_controller_test.rb +8 -0
  297. data/vendor/plugins/authentication/test/functional/admin/dashboard_controller_test.rb +8 -0
  298. data/vendor/plugins/authentication/test/functional/admin/pages_controller_test.rb +8 -0
  299. data/vendor/plugins/authentication/test/functional/sessions_controller_test.rb +85 -0
  300. data/vendor/plugins/authentication/test/functional/users_controller_test.rb +99 -0
  301. data/vendor/plugins/authentication/test/test_helper.rb +38 -0
  302. data/vendor/plugins/authentication/test/unit/user_mailer_test.rb +31 -0
  303. data/vendor/plugins/authentication/test/unit/user_test.rb +164 -0
  304. data/vendor/plugins/dashboard/app/controllers/admin/dashboard_controller.rb +16 -0
  305. data/vendor/plugins/dashboard/app/helpers/admin/dashboard_helper.rb +19 -0
  306. data/vendor/plugins/dashboard/app/views/admin/dashboard/_recent_activity.html.erb +14 -0
  307. data/vendor/plugins/dashboard/app/views/admin/dashboard/index.html.erb +31 -0
  308. data/vendor/plugins/dashboard/config/routes.rb +5 -0
  309. data/vendor/plugins/dashboard/init.rb +7 -0
  310. data/vendor/plugins/images/app/controllers/admin/images_controller.rb +72 -0
  311. data/vendor/plugins/images/app/helpers/admin/images_helper.rb +17 -0
  312. data/vendor/plugins/images/app/models/image.rb +51 -0
  313. data/vendor/plugins/images/app/views/admin/images/_form.html.erb +36 -0
  314. data/vendor/plugins/images/app/views/admin/images/_grid_view.html.erb +17 -0
  315. data/vendor/plugins/images/app/views/admin/images/_list_view.html.erb +21 -0
  316. data/vendor/plugins/images/app/views/admin/images/edit.html.erb +1 -0
  317. data/vendor/plugins/images/app/views/admin/images/index.html.erb +43 -0
  318. data/vendor/plugins/images/app/views/admin/images/insert.html.erb +115 -0
  319. data/vendor/plugins/images/app/views/admin/images/new.html.erb +1 -0
  320. data/vendor/plugins/images/config/routes.rb +5 -0
  321. data/vendor/plugins/images/init.rb +8 -0
  322. data/vendor/plugins/images/lib/tasks/images.rake +28 -0
  323. data/vendor/plugins/inquiries/app/controllers/admin/inquiries_controller.rb +29 -0
  324. data/vendor/plugins/inquiries/app/controllers/admin/inquiry_settings_controller.rb +16 -0
  325. data/vendor/plugins/inquiries/app/controllers/inquiries_controller.rb +41 -0
  326. data/vendor/plugins/inquiries/app/helpers/inquiries_helper.rb +13 -0
  327. data/vendor/plugins/inquiries/app/models/inquiry.rb +18 -0
  328. data/vendor/plugins/inquiries/app/models/inquiry_mailer.rb +19 -0
  329. data/vendor/plugins/inquiries/app/models/inquiry_setting.rb +11 -0
  330. data/vendor/plugins/inquiries/app/views/admin/inquiries/_inquiry.html.erb +27 -0
  331. data/vendor/plugins/inquiries/app/views/admin/inquiries/index.html.erb +44 -0
  332. data/vendor/plugins/inquiries/app/views/admin/inquiries/show.html.erb +62 -0
  333. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_confirmation_email_form.html.erb +50 -0
  334. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_notification_recipients_form.html.erb +22 -0
  335. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/edit.html.erb +5 -0
  336. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/index.html.erb +32 -0
  337. data/vendor/plugins/inquiries/app/views/inquiries/new.html.erb +33 -0
  338. data/vendor/plugins/inquiries/app/views/inquiries/thank_you.html.erb +9 -0
  339. data/vendor/plugins/inquiries/app/views/inquiry_mailer/confirmation.html.erb +1 -0
  340. data/vendor/plugins/inquiries/app/views/inquiry_mailer/notification.html.erb +18 -0
  341. data/vendor/plugins/inquiries/config/routes.rb +8 -0
  342. data/vendor/plugins/inquiries/init.rb +11 -0
  343. data/vendor/plugins/news/app/controllers/admin/news_items_controller.rb +5 -0
  344. data/vendor/plugins/news/app/controllers/news_items_controller.rb +20 -0
  345. data/vendor/plugins/news/app/models/news_item.rb +26 -0
  346. data/vendor/plugins/news/app/views/admin/news_items/_form.html.erb +33 -0
  347. data/vendor/plugins/news/app/views/admin/news_items/_news_item.html.erb +15 -0
  348. data/vendor/plugins/news/app/views/admin/news_items/edit.html.erb +1 -0
  349. data/vendor/plugins/news/app/views/admin/news_items/index.html.erb +36 -0
  350. data/vendor/plugins/news/app/views/admin/news_items/new.html.erb +1 -0
  351. data/vendor/plugins/news/app/views/news_items/_recent_posts.html.erb +8 -0
  352. data/vendor/plugins/news/app/views/news_items/index.html.erb +23 -0
  353. data/vendor/plugins/news/app/views/news_items/show.html.erb +18 -0
  354. data/vendor/plugins/news/config/routes.rb +7 -0
  355. data/vendor/plugins/news/init.rb +7 -0
  356. data/vendor/plugins/pages/app/controllers/admin/page_dialogs_controller.rb +48 -0
  357. data/vendor/plugins/pages/app/controllers/admin/page_parts_controller.rb +35 -0
  358. data/vendor/plugins/pages/app/controllers/admin/pages_controller.rb +12 -0
  359. data/vendor/plugins/pages/app/controllers/pages_controller.rb +20 -0
  360. data/vendor/plugins/pages/app/helpers/pages_helper.rb +2 -0
  361. data/vendor/plugins/pages/app/models/page.rb +97 -0
  362. data/vendor/plugins/pages/app/models/page_part.rb +17 -0
  363. data/vendor/plugins/pages/app/views/admin/page_dialogs/_page_link.html.erb +6 -0
  364. data/vendor/plugins/pages/app/views/admin/page_dialogs/link_to.html.erb +253 -0
  365. data/vendor/plugins/pages/app/views/admin/page_parts/new.html.erb +11 -0
  366. data/vendor/plugins/pages/app/views/admin/pages/_form.html.erb +179 -0
  367. data/vendor/plugins/pages/app/views/admin/pages/_list.html.erb +29 -0
  368. data/vendor/plugins/pages/app/views/admin/pages/_sortable_list.html.erb +4 -0
  369. data/vendor/plugins/pages/app/views/admin/pages/edit.html.erb +1 -0
  370. data/vendor/plugins/pages/app/views/admin/pages/index.html.erb +42 -0
  371. data/vendor/plugins/pages/app/views/admin/pages/new.html.erb +1 -0
  372. data/vendor/plugins/pages/app/views/pages/home.html.erb +9 -0
  373. data/vendor/plugins/pages/app/views/pages/show.html.erb +10 -0
  374. data/vendor/plugins/pages/config/routes.rb +12 -0
  375. data/vendor/plugins/pages/init.rb +8 -0
  376. data/vendor/plugins/refinery/app/controllers/admin/base_controller.rb +37 -0
  377. data/vendor/plugins/refinery/app/controllers/admin/refinery_core_controller.rb +14 -0
  378. data/vendor/plugins/refinery/app/helpers/application_helper.rb +84 -0
  379. data/vendor/plugins/refinery/app/views/admin/_head.html.erb +27 -0
  380. data/vendor/plugins/refinery/app/views/admin/_menu.html.erb +85 -0
  381. data/vendor/plugins/refinery/app/views/layouts/admin.html.erb +25 -0
  382. data/vendor/plugins/refinery/app/views/layouts/application.html.erb +32 -0
  383. data/vendor/plugins/refinery/app/views/shared/_footer.html.erb +3 -0
  384. data/vendor/plugins/refinery/app/views/shared/_google_analytics.html.erb +12 -0
  385. data/vendor/plugins/refinery/app/views/shared/_ie6check.html.erb +11 -0
  386. data/vendor/plugins/refinery/app/views/shared/_menu.html.erb +16 -0
  387. data/vendor/plugins/refinery/app/views/shared/_menu_branch.html.erb +28 -0
  388. data/vendor/plugins/refinery/app/views/shared/_message.html.erb +10 -0
  389. data/vendor/plugins/refinery/app/views/shared/_submenu.html.erb +4 -0
  390. data/vendor/plugins/refinery/app/views/shared/_submenu_branch.html.erb +10 -0
  391. data/vendor/plugins/refinery/app/views/shared/admin/_make_sortable.html.erb +71 -0
  392. data/vendor/plugins/refinery/app/views/shared/admin/_search.html.erb +5 -0
  393. data/vendor/plugins/refinery/app/views/shared/admin/_sortable_list.html.erb +10 -0
  394. data/vendor/plugins/refinery/app/views/welcome.html.erb +13 -0
  395. data/vendor/plugins/refinery/app/views/wymiframe.html.erb +8 -0
  396. data/vendor/plugins/refinery/config/routes.rb +10 -0
  397. data/vendor/plugins/refinery/init.rb +9 -0
  398. data/vendor/plugins/refinery/lib/crud.rb +134 -0
  399. data/vendor/plugins/refinery/lib/generators/refinery/README +29 -0
  400. data/vendor/plugins/refinery/lib/generators/refinery/Rakefile +12 -0
  401. data/vendor/plugins/refinery/lib/generators/refinery/USAGE +2 -0
  402. data/vendor/plugins/refinery/lib/generators/refinery/install.rb +2 -0
  403. data/vendor/plugins/refinery/lib/generators/refinery/refinery_generator.rb +65 -0
  404. data/vendor/plugins/refinery/lib/generators/refinery/templates/config/routes.rb +7 -0
  405. data/vendor/plugins/refinery/lib/generators/refinery/templates/controller.rb +5 -0
  406. data/vendor/plugins/refinery/lib/generators/refinery/templates/init.rb +7 -0
  407. data/vendor/plugins/refinery/lib/generators/refinery/templates/migration.rb +36 -0
  408. data/vendor/plugins/refinery/lib/generators/refinery/templates/model.rb +8 -0
  409. data/vendor/plugins/refinery/lib/generators/refinery/templates/public_controller.rb +20 -0
  410. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_form.html.erb +18 -0
  411. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_singular_name.html.erb +15 -0
  412. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_sortable_list.html.erb +2 -0
  413. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/edit.html.erb +1 -0
  414. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/index.html.erb +45 -0
  415. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/new.html.erb +1 -0
  416. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/index.html.erb +15 -0
  417. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/show.html.erb +23 -0
  418. data/vendor/plugins/refinery/lib/refinery.rb +15 -0
  419. data/vendor/plugins/refinery/lib/refinery/activity.rb +16 -0
  420. data/vendor/plugins/refinery/lib/refinery/application_controller.rb +53 -0
  421. data/vendor/plugins/refinery/lib/refinery/form_helpers.rb +28 -0
  422. data/vendor/plugins/refinery/lib/refinery/initializer.rb +28 -0
  423. data/vendor/plugins/refinery/lib/refinery/link_renderer.rb +45 -0
  424. data/vendor/plugins/refinery/lib/refinery/plugin.rb +47 -0
  425. data/vendor/plugins/refinery/lib/refinery/plugins.rb +53 -0
  426. data/vendor/plugins/refinery/lib/tasks/refinery.rake +28 -0
  427. data/vendor/plugins/refinery_dialogs/app/controllers/admin/dialogs_controller.rb +24 -0
  428. data/vendor/plugins/refinery_dialogs/app/views/admin/dialogs/show.html.erb +20 -0
  429. data/vendor/plugins/refinery_dialogs/app/views/layouts/admin_dialog.html.erb +31 -0
  430. data/vendor/plugins/refinery_dialogs/config/routes.rb +5 -0
  431. data/vendor/plugins/refinery_dialogs/init.rb +8 -0
  432. data/vendor/plugins/refinery_settings/app/controllers/admin/refinery_settings_controller.rb +5 -0
  433. data/vendor/plugins/refinery_settings/app/models/refinery_setting.rb +62 -0
  434. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_form.html.erb +21 -0
  435. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_make_sortable.html.erb +7 -0
  436. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_refinery_setting.html.erb +13 -0
  437. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/edit.html.erb +4 -0
  438. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/index.html.erb +33 -0
  439. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/new.html.erb +1 -0
  440. data/vendor/plugins/refinery_settings/config/routes.rb +5 -0
  441. data/vendor/plugins/refinery_settings/init.rb +9 -0
  442. data/vendor/plugins/resources/app/controllers/admin/resources_controller.rb +25 -0
  443. data/vendor/plugins/resources/app/models/resource.rb +36 -0
  444. data/vendor/plugins/resources/app/views/admin/resources/_form.html.erb +18 -0
  445. data/vendor/plugins/resources/app/views/admin/resources/_resource.html.erb +16 -0
  446. data/vendor/plugins/resources/app/views/admin/resources/edit.html.erb +1 -0
  447. data/vendor/plugins/resources/app/views/admin/resources/index.html.erb +33 -0
  448. data/vendor/plugins/resources/app/views/admin/resources/new.html.erb +1 -0
  449. data/vendor/plugins/resources/config/routes.rb +7 -0
  450. data/vendor/plugins/resources/init.rb +7 -0
  451. metadata +567 -0
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'user_mailer'
3
+
4
+ class UserMailerTest < Test::Unit::TestCase
5
+ FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures'
6
+ CHARSET = "utf-8"
7
+
8
+ include ActionMailer::Quoting
9
+
10
+ def setup
11
+ ActionMailer::Base.delivery_method = :test
12
+ ActionMailer::Base.perform_deliveries = true
13
+ ActionMailer::Base.deliveries = []
14
+
15
+ @expected = TMail::Mail.new
16
+ @expected.set_content_type "text", "plain", { "charset" => CHARSET }
17
+ end
18
+
19
+ def test_dummy_test
20
+ #do nothing
21
+ end
22
+
23
+ private
24
+ def read_fixture(action)
25
+ IO.readlines("#{FIXTURES_PATH}/user_mailer/#{action}")
26
+ end
27
+
28
+ def encode(subject)
29
+ quoted_printable(subject, CHARSET)
30
+ end
31
+ end
@@ -0,0 +1,164 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead.
5
+ # Then, you can remove it from this and the functional test.
6
+ include AuthenticatedTestHelper
7
+ fixtures :users
8
+
9
+ def test_should_create_user
10
+ assert_difference 'User.count' do
11
+ user = create_user
12
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
13
+ end
14
+ end
15
+
16
+ def test_should_initialize_activation_code_upon_creation
17
+ user = create_user
18
+ user.reload
19
+ assert_not_nil user.activation_code
20
+ end
21
+
22
+ def test_should_create_and_start_in_pending_state
23
+ user = create_user
24
+ user.reload
25
+ assert user.pending?
26
+ end
27
+
28
+
29
+ def test_should_require_login
30
+ assert_no_difference 'User.count' do
31
+ u = create_user(:login => nil)
32
+ assert u.errors.on(:login)
33
+ end
34
+ end
35
+
36
+ def test_should_require_password
37
+ assert_no_difference 'User.count' do
38
+ u = create_user(:password => nil)
39
+ assert u.errors.on(:password)
40
+ end
41
+ end
42
+
43
+ def test_should_require_password_confirmation
44
+ assert_no_difference 'User.count' do
45
+ u = create_user(:password_confirmation => nil)
46
+ assert u.errors.on(:password_confirmation)
47
+ end
48
+ end
49
+
50
+ def test_should_require_email
51
+ assert_no_difference 'User.count' do
52
+ u = create_user(:email => nil)
53
+ assert u.errors.on(:email)
54
+ end
55
+ end
56
+
57
+ def test_should_reset_password
58
+ users(:quentin).update_attributes(:password => 'new password', :password_confirmation => 'new password')
59
+ assert_equal users(:quentin), User.authenticate('quentin', 'new password')
60
+ end
61
+
62
+ def test_should_not_rehash_password
63
+ users(:quentin).update_attributes(:login => 'quentin2')
64
+ assert_equal users(:quentin), User.authenticate('quentin2', 'test')
65
+ end
66
+
67
+ def test_should_authenticate_user
68
+ assert_equal users(:quentin), User.authenticate('quentin', 'test')
69
+ end
70
+
71
+ def test_should_set_remember_token
72
+ users(:quentin).remember_me
73
+ assert_not_nil users(:quentin).remember_token
74
+ assert_not_nil users(:quentin).remember_token_expires_at
75
+ end
76
+
77
+ def test_should_unset_remember_token
78
+ users(:quentin).remember_me
79
+ assert_not_nil users(:quentin).remember_token
80
+ users(:quentin).forget_me
81
+ assert_nil users(:quentin).remember_token
82
+ end
83
+
84
+ def test_should_remember_me_for_one_week
85
+ before = 1.week.from_now.utc
86
+ users(:quentin).remember_me_for 1.week
87
+ after = 1.week.from_now.utc
88
+ assert_not_nil users(:quentin).remember_token
89
+ assert_not_nil users(:quentin).remember_token_expires_at
90
+ assert users(:quentin).remember_token_expires_at.between?(before, after)
91
+ end
92
+
93
+ def test_should_remember_me_until_one_week
94
+ time = 1.week.from_now.utc
95
+ users(:quentin).remember_me_until time
96
+ assert_not_nil users(:quentin).remember_token
97
+ assert_not_nil users(:quentin).remember_token_expires_at
98
+ assert_equal users(:quentin).remember_token_expires_at, time
99
+ end
100
+
101
+ def test_should_remember_me_default_two_weeks
102
+ before = 2.weeks.from_now.utc
103
+ users(:quentin).remember_me
104
+ after = 2.weeks.from_now.utc
105
+ assert_not_nil users(:quentin).remember_token
106
+ assert_not_nil users(:quentin).remember_token_expires_at
107
+ assert users(:quentin).remember_token_expires_at.between?(before, after)
108
+ end
109
+
110
+ def test_should_register_passive_user
111
+ user = create_user(:password => nil, :password_confirmation => nil)
112
+ assert user.passive?
113
+ user.update_attributes(:password => 'new password', :password_confirmation => 'new password')
114
+ user.register!
115
+ assert user.pending?
116
+ end
117
+
118
+ def test_should_suspend_user
119
+ users(:quentin).suspend!
120
+ assert users(:quentin).suspended?
121
+ end
122
+
123
+ def test_suspended_user_should_not_authenticate
124
+ users(:quentin).suspend!
125
+ assert_not_equal users(:quentin), User.authenticate('quentin', 'test')
126
+ end
127
+
128
+ def test_should_unsuspend_user_to_active_state
129
+ users(:quentin).suspend!
130
+ assert users(:quentin).suspended?
131
+ users(:quentin).unsuspend!
132
+ assert users(:quentin).active?
133
+ end
134
+
135
+ def test_should_unsuspend_user_with_nil_activation_code_and_activated_at_to_passive_state
136
+ users(:quentin).suspend!
137
+ User.update_all :activation_code => nil, :activated_at => nil
138
+ assert users(:quentin).suspended?
139
+ users(:quentin).reload.unsuspend!
140
+ assert users(:quentin).passive?
141
+ end
142
+
143
+ def test_should_unsuspend_user_with_activation_code_and_nil_activated_at_to_pending_state
144
+ users(:quentin).suspend!
145
+ User.update_all :activation_code => 'foo-bar', :activated_at => nil
146
+ assert users(:quentin).suspended?
147
+ users(:quentin).reload.unsuspend!
148
+ assert users(:quentin).pending?
149
+ end
150
+
151
+ def test_should_delete_user
152
+ assert_nil users(:quentin).deleted_at
153
+ users(:quentin).delete!
154
+ assert_not_nil users(:quentin).deleted_at
155
+ assert users(:quentin).deleted?
156
+ end
157
+
158
+ protected
159
+ def create_user(options = {})
160
+ record = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options))
161
+ record.register! if record.valid?
162
+ record
163
+ end
164
+ end
@@ -0,0 +1,16 @@
1
+ class Admin::DashboardController < Admin::BaseController
2
+
3
+ def index
4
+ @recent_activity = []
5
+ Refinery::Plugins.active.each do |plugin|
6
+ plugin.activity.each do |activity|
7
+ include_associations = []
8
+ include_associations.push(:slugs) if activity.class.methods.include? "find_one_with_friendly" # wee performance gain if slugs are used.
9
+ @recent_activity += activity.class.find(:all, :order => activity.order, :limit => activity.limit, :conditions => activity.conditions, :include => include_associations)
10
+ end rescue nil
11
+ end
12
+
13
+ @recent_activity = @recent_activity.sort{|x,y| y.updated_at <=> x.updated_at}[0..((RefinerySetting.activity_show_limit ||= 15)-1)]
14
+ end
15
+
16
+ end
@@ -0,0 +1,19 @@
1
+ module Admin::DashboardHelper
2
+
3
+ def activity_message_for(record)
4
+ unless (activity = Refinery::Plugins.active.find_activity_by_model(record.class)).nil? or activity.title.blank?
5
+ title = eval "record.#{activity.title}"
6
+ link = link_to truncate(title, :length => 60),
7
+ eval("#{activity.url_prefix}admin_#{record.class.name.underscore.downcase}_url(record)"),
8
+ :title => "See '#{title}'"
9
+
10
+ # next work out which action occured and how long ago it happened
11
+ action = record.updated_at.eql?(record.created_at) ? "created" : "updated"
12
+
13
+ message = "<td>#{refinery_icon_tag("#{eval("activity.#{action}_image")}")}</td>"
14
+ message << "<td>#{link} #{record.class.name.titleize.downcase} was #{action}</td>"
15
+ message << "<td align='right'>#{time_ago_in_words(eval("record.#{action}_at"))} ago</td>"
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,14 @@
1
+ <h2>Latest Activity</h2>
2
+ <% if @recent_activity.size > 0 %>
3
+ <table id='recent_activity'>
4
+ <% @recent_activity.each do |change| %>
5
+ <tr class='<%= cycle("on", "") %>'>
6
+ <%= activity_message_for change %>
7
+ </tr>
8
+ <% end %>
9
+ </table>
10
+ <% else %>
11
+ <p>
12
+ Nothing has happened yet.
13
+ </p>
14
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <div class='clearfix'>
2
+ <div id='records'>
3
+ <%= render :partial => "recent_activity" %>
4
+ </div>
5
+ <div id='actions'>
6
+ <h2>Common Tasks</h2>
7
+ <ul>
8
+ <% if Refinery::Plugins.active.titles.include?("Pages") %>
9
+ <li>
10
+ <%= link_to "Add a new page", new_admin_page_url, :class => "add_icon" %>
11
+ </li>
12
+ <li>
13
+ <%= link_to "Update a page", admin_pages_url, :class => "edit_icon" %>
14
+ </li>
15
+ <% end %>
16
+ <% if Refinery::Plugins.active.titles.include?("Resources") %>
17
+ <li>
18
+ <%= link_to "Upload a file", new_admin_resource_url(:dialog => true, :width => 600, :height => 300), :class => "add_icon" %>
19
+ </li>
20
+ <% end %>
21
+ <% if Refinery::Plugins.active.titles.include?("Images") %>
22
+ <li>
23
+ <%= link_to "Upload an image", new_admin_image_url(:dialog => true, :width => 600, :height => 300), :class => "add_icon" %>
24
+ </li>
25
+ <% end %>
26
+ <li>
27
+ <%= link_to "See home page", root_url, :class => "go_icon", :target => "_blank" %>
28
+ </li>
29
+ </ul>
30
+ </div>
31
+ </div>
@@ -0,0 +1,5 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+ map.namespace(:admin) do |admin|
3
+ admin.resources :dashboard
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ Refinery::Plugin.register do |plugin|
2
+ plugin.directory = directory
3
+ plugin.title = "Dashboard"
4
+ plugin.description = "Gives an overview of activity in Refinery"
5
+ plugin.version = 1.0
6
+ plugin.always_allow_access = true
7
+ end
@@ -0,0 +1,72 @@
1
+ class Admin::ImagesController < Admin::BaseController
2
+
3
+ include Admin::ImagesHelper
4
+
5
+ crudify :image, :order => "created_at DESC", :conditions => "parent_id is NULL", :sortable => false
6
+ before_filter :change_list_mode_if_specified
7
+
8
+ def new
9
+ @image = Image.new
10
+ @url_override = admin_images_url(:dialog => from_dialog?)
11
+ end
12
+
13
+ def insert
14
+ self.new if @image.nil?
15
+ @dialog = from_dialog?
16
+ @thickbox = !params[:thickbox].blank?
17
+ @field = params[:field]
18
+ @update_image = params[:update_image]
19
+ @thumbnail = params[:thumbnail]
20
+ @callback = params[:callback]
21
+ @conditions = params[:conditions]
22
+ @url_override = admin_images_url(:dialog => @dialog, :insert => true)
23
+
24
+ unless params[:conditions].blank?
25
+ extra_condition = params[:conditions].split(',')
26
+
27
+ extra_condition[1] = true if extra_condition[1] == "true"
28
+ extra_condition[1] = false if extra_condition[1] == "false"
29
+ extra_condition[1] = nil if extra_condition[1] == "nil"
30
+ paginate_images({extra_condition[0].to_sym => extra_condition[1]})
31
+ else
32
+ paginate_images
33
+ end
34
+ render :action => "insert"
35
+ end
36
+
37
+ def create
38
+ @image = Image.create(params[:image])
39
+ saved = @image.valid?
40
+ flash.now[:notice] = "'#{@image.title}' was successfully created." if saved
41
+
42
+ unless params[:insert]
43
+ if saved
44
+ unless from_dialog?
45
+ redirect_to :action => 'index'
46
+ else
47
+ render :text => "<script type='text/javascript'>parent.window.location = '#{admin_images_url}';</script>"
48
+ end
49
+ else
50
+ render :action => 'new'
51
+ end
52
+ else
53
+ # set the last page as the current page for image grid.
54
+ #@paginate_page_number = Image.last_page(Image.find_all_by_parent_id(nil, :order => "created_at DESC"), params[:dialog])
55
+ # currently images are sorting by date desc so the first page is always the selected page now.
56
+ @image_id = @image.id
57
+ @image = nil
58
+ self.insert
59
+ end
60
+ end
61
+
62
+ protected
63
+
64
+ def paginate_images(conditions={})
65
+ @images = Image.paginate :page => (@paginate_page_number ||= params[:page]),
66
+ :conditions => {:parent_id => nil}.merge!(conditions),
67
+ :order => 'created_at DESC',
68
+ :per_page => Image.per_page(from_dialog?),
69
+ :include => :thumbnails
70
+ end
71
+
72
+ end
@@ -0,0 +1,17 @@
1
+ module Admin::ImagesHelper
2
+
3
+ def image_views
4
+ RefinerySetting.find_or_set(:image_views, [:grid, :list])
5
+ end
6
+
7
+ def current_image_view
8
+ RefinerySetting.find_or_set(:preferred_image_view, :list)
9
+ end
10
+
11
+ def change_list_mode_if_specified
12
+ unless params[:action] != "index" or params[:view].blank? or !image_views.include? params[:view].to_sym
13
+ RefinerySetting[:preferred_image_view] = params[:view]
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,51 @@
1
+ class Image < ActiveRecord::Base
2
+
3
+ has_many :pages
4
+
5
+ has_attachment :content_type => :image,
6
+ :storage => :file_system,
7
+ :path_prefix => 'public/system/images',
8
+ :processor => 'Rmagick',
9
+ :thumbnails => ((((thumbnails = RefinerySetting.find_or_set(:image_thumbnails, {})).is_a?(Hash) ? thumbnails : (RefinerySetting[:image_thumbnails] = {}))) rescue {}),
10
+ :max_size => 5.megabytes
11
+
12
+ acts_as_indexed :fields => [:title]
13
+
14
+ def validate
15
+ errors.add_to_base("You must choose a file to upload") unless self.filename
16
+
17
+ unless self.filename.nil?
18
+ [:size].each do |attr_name|
19
+ enum = attachment_options[attr_name]
20
+
21
+ errors.add_to_base("Files should be smaller than 50 MB in size") unless enum.nil? || enum.include?(send(attr_name))
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ def title
28
+ self.filename.gsub(/\.\w+$/, '').titleize
29
+ end
30
+
31
+ def self.per_page(dialog = false)
32
+ size = (dialog ? 18 : 20)
33
+ end
34
+
35
+ def self.last_page(images, dialog=false)
36
+ page = unless images.size <= self.per_page(dialog)
37
+ (images.size / self.per_page(dialog).to_f).ceil
38
+ else
39
+ nil # this must be nil, it can't be 0 as there apparently isn't a 0th page.
40
+ end
41
+ end
42
+
43
+ def self.thumbnails
44
+ find(:all, :conditions => "parent_id not null")
45
+ end
46
+
47
+ def self.originals
48
+ find_all_by_parent_id(nil)
49
+ end
50
+
51
+ end
@@ -0,0 +1,36 @@
1
+ <%= error_messages_for :image %>
2
+
3
+ <% form_for [:admin, @image], :url => @url_override || @url,
4
+ :html => {:multipart => true, :style => 'float: left; width: 70%'} do |f| %>
5
+ <div class='field'>
6
+ <%= f.label :uploaded_data, 'Image' %>
7
+ <% if params[:action] =~ /(edit)|(update)/ %>
8
+ Use current image
9
+ <em>or</em>, replace it with this one...
10
+ <% end %>
11
+ <%= f.file_field :uploaded_data %>
12
+ </div>
13
+ <div class='form-actions'>
14
+ <%= f.submit (params[:dialog] ? 'Upload' : 'Save') %>
15
+ <% unless params[:dialog] %>
16
+ or
17
+ <%= link_to "Cancel", admin_images_url, :title => "Cancelling will lose all changes you've made to this image", :class => 'close_dialog' %>
18
+ <% end %>
19
+ </div>
20
+
21
+ <% if @thickbox %>
22
+ <input type='hidden' name='thickbox' value='<%= @thickbox %>' />
23
+ <input type='hidden' name='field' value='<%= @field %>' />
24
+ <input type='hidden' name='update_image' value='<%= @update_image %>' />
25
+ <input type='hidden' name='thumbnail' value='<%= @thumbnail %>' />
26
+ <input type='hidden' name='callback' value='<%= @callback %>' />
27
+ <input type='hidden' name='conditions' value='<%= @conditions %>' >
28
+ <% end %>
29
+ <% end %>
30
+
31
+ <% if params[:action] =~ /(edit)|(update)/ %>
32
+ <div style='float: right; width: 25%;'>
33
+ <label>Current Image</label>
34
+ <%= image_fu @image, :medium, { :class => "brown_border" } %>
35
+ </div>
36
+ <% end %>