sunrise-core 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (499) hide show
  1. data/Gemfile +38 -0
  2. data/README.rdoc +13 -3
  3. data/Rakefile +4 -20
  4. data/app/controllers/manage/base_controller.rb +1 -9
  5. data/app/controllers/manage/users_controller.rb +10 -8
  6. data/app/views/manage/shared/_head.html.erb +1 -1
  7. data/app/views/manage/shared/_notice.html.erb +1 -1
  8. data/app/views/manage/shared/_panel.html.erb +1 -1
  9. data/app/views/manage/structures/_form.html.erb +1 -0
  10. data/app/views/manage/structures/_structure.html.erb +5 -5
  11. data/app/views/manage/users/_model_filter.html.erb +14 -11
  12. data/app/views/manage/users/_user.html.erb +2 -2
  13. data/config/locales/manage/en.yml +25 -0
  14. data/config/locales/manage/ru.yml +25 -0
  15. data/config/locales/manage/uk.yml +26 -1
  16. data/lib/generators/sunrise/install_generator.rb +31 -5
  17. data/lib/generators/sunrise/templates/config/nginx-config-passenger +18 -9
  18. data/lib/generators/sunrise/templates/config/seeds.rb +1 -1
  19. data/lib/generators/sunrise/templates/helpers/manage/base_helper.rb +7 -5
  20. data/lib/generators/sunrise/templates/images/alert.png +0 -0
  21. data/lib/generators/sunrise/templates/images/cross_ico.png +0 -0
  22. data/lib/generators/sunrise/templates/images/manage/{ico_del.gif → ico_delete.gif} +0 -0
  23. data/lib/generators/sunrise/templates/models/defaults/asset.rb +3 -1
  24. data/lib/generators/sunrise/templates/models/defaults/attachment_file.rb +2 -4
  25. data/lib/generators/sunrise/templates/models/defaults/avatar.rb +6 -9
  26. data/lib/generators/sunrise/templates/models/defaults/picture.rb +6 -10
  27. data/lib/generators/sunrise/templates/rspec +2 -0
  28. data/lib/generators/sunrise/templates/spec/controllers/pages_controller_spec.rb +22 -0
  29. data/lib/generators/sunrise/templates/spec/controllers/welcome_controller_spec.rb +18 -0
  30. data/lib/generators/sunrise/templates/spec/factories/structure_factory.rb +22 -0
  31. data/lib/generators/sunrise/templates/spec/factories/user_factory.rb +60 -0
  32. data/lib/generators/sunrise/templates/spec/spec_helper.rb +37 -0
  33. data/lib/generators/sunrise/templates/spec/support/helpers/controller_macros.rb +51 -0
  34. data/lib/generators/sunrise/templates/stylesheets/alert.css +26 -0
  35. data/lib/generators/sunrise/templates/uploaders/attachment_file_uploader.rb +5 -0
  36. data/lib/generators/sunrise/templates/uploaders/avatar_uploader.rb +17 -0
  37. data/lib/generators/sunrise/templates/uploaders/picture_uploader.rb +17 -0
  38. data/lib/generators/sunrise/templates/views/layouts/application.html.erb +2 -4
  39. data/lib/sunrise/carrier_wave/base_uploader.rb +65 -0
  40. data/lib/sunrise/carrier_wave/file_size_validator.rb +70 -0
  41. data/lib/sunrise/carrier_wave/glue.rb +29 -0
  42. data/lib/sunrise/controllers/manage.rb +52 -0
  43. data/lib/sunrise/controllers/model_filter.rb +76 -0
  44. data/lib/sunrise/core.rb +8 -1
  45. data/lib/sunrise/engine.rb +2 -6
  46. data/lib/sunrise/models/asset.rb +9 -38
  47. data/lib/sunrise/models/role.rb +2 -0
  48. data/lib/sunrise/models/structure.rb +8 -1
  49. data/lib/sunrise/models/user.rb +8 -5
  50. data/lib/sunrise/version.rb +1 -1
  51. data/lib/tasks/assets.rake +20 -0
  52. data/spec/controllers/manage/assets_controller_spec.rb +65 -0
  53. data/spec/controllers/manage/pages_controller_spec.rb +75 -0
  54. data/spec/controllers/manage/settings_controller_spec.rb +34 -0
  55. data/spec/controllers/manage/structures_controller_spec.rb +97 -0
  56. data/spec/controllers/manage/users_controller_spec.rb +158 -0
  57. data/spec/controllers/pages_controller_spec.rb +28 -0
  58. data/spec/dummy/Rakefile +7 -0
  59. data/spec/dummy/app/controllers/application_controller.rb +4 -0
  60. data/spec/dummy/app/controllers/welcome_controller.rb +4 -0
  61. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  62. data/spec/dummy/app/helpers/manage/assets_helper.rb +2 -0
  63. data/spec/dummy/app/helpers/manage/base_helper.rb +83 -0
  64. data/spec/dummy/app/helpers/manage/pages_helper.rb +2 -0
  65. data/spec/dummy/app/helpers/manage/settings_helper.rb +2 -0
  66. data/spec/dummy/app/helpers/manage/structures_helper.rb +12 -0
  67. data/spec/dummy/app/helpers/manage/users_helper.rb +6 -0
  68. data/spec/dummy/app/views/layouts/application.html.erb +37 -0
  69. data/spec/dummy/app/views/pages/show.html.erb +2 -0
  70. data/spec/dummy/app/views/shared/_notice.html.erb +17 -0
  71. data/spec/dummy/app/views/welcome/index.html.erb +0 -0
  72. data/spec/dummy/config.ru +4 -0
  73. data/spec/dummy/config/application.rb +42 -0
  74. data/spec/dummy/config/application.yml +3 -0
  75. data/spec/dummy/config/application.yml.sample +4 -0
  76. data/spec/dummy/config/boot.rb +10 -0
  77. data/spec/dummy/config/database.yml +34 -0
  78. data/spec/dummy/config/database.yml.sample +34 -0
  79. data/spec/dummy/config/environment.rb +5 -0
  80. data/spec/dummy/config/environments/development.rb +27 -0
  81. data/spec/dummy/config/environments/production.rb +49 -0
  82. data/spec/dummy/config/environments/test.rb +35 -0
  83. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  84. data/spec/dummy/config/initializers/devise.rb +194 -0
  85. data/spec/dummy/config/initializers/inflections.rb +10 -0
  86. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  87. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  88. data/spec/dummy/config/initializers/session_store.rb +8 -0
  89. data/spec/dummy/config/initializers/simple_form.rb +93 -0
  90. data/spec/dummy/config/initializers/sunrise.rb +7 -0
  91. data/spec/dummy/config/locales/devise.en.yml +50 -0
  92. data/spec/dummy/config/locales/en.yml +5 -0
  93. data/spec/dummy/config/locales/simple_form.en.yml +24 -0
  94. data/spec/dummy/config/logrotate-config.sample +9 -0
  95. data/spec/dummy/config/nginx-config-passenger.sample +51 -0
  96. data/spec/dummy/config/routes.rb +7 -0
  97. data/spec/dummy/db/migrate/20110616102556_sunrise_create_users.rb +29 -0
  98. data/spec/dummy/db/migrate/20110616102656_sunrise_create_roles.rb +16 -0
  99. data/spec/dummy/db/migrate/20110616102756_sunrise_create_structures.rb +27 -0
  100. data/spec/dummy/db/migrate/20110616102856_sunrise_create_pages.rb +17 -0
  101. data/spec/dummy/db/migrate/20110616102956_sunrise_create_assets.rb +28 -0
  102. data/spec/dummy/db/migrate/20110616103056_sunrise_create_headers.rb +20 -0
  103. data/spec/dummy/db/schema.rb +110 -0
  104. data/spec/dummy/db/seeds.rb +25 -0
  105. data/spec/dummy/lib/templates/erb/scaffold/_form.html.erb +13 -0
  106. data/spec/dummy/log/development.log +134 -0
  107. data/spec/dummy/log/production.log +0 -0
  108. data/spec/dummy/log/server.log +0 -0
  109. data/spec/dummy/log/test.log +41472 -0
  110. data/spec/dummy/public/404.html +26 -0
  111. data/spec/dummy/public/422.html +26 -0
  112. data/spec/dummy/public/500.html +26 -0
  113. data/spec/dummy/public/favicon.ico +0 -0
  114. data/spec/dummy/public/images/manage/add_post_bot.gif +0 -0
  115. data/spec/dummy/public/images/manage/add_post_top.gif +0 -0
  116. data/spec/dummy/public/images/manage/add_white_bot.gif +0 -0
  117. data/spec/dummy/public/images/manage/add_white_top.gif +0 -0
  118. data/spec/dummy/public/images/manage/arrow.png +0 -0
  119. data/spec/dummy/public/images/manage/back_but_lc.gif +0 -0
  120. data/spec/dummy/public/images/manage/back_but_rc.gif +0 -0
  121. data/spec/dummy/public/images/manage/bot_corn.gif +0 -0
  122. data/spec/dummy/public/images/manage/bot_duo_corn.gif +0 -0
  123. data/spec/dummy/public/images/manage/but_bg.png +0 -0
  124. data/spec/dummy/public/images/manage/but_block_lc.gif +0 -0
  125. data/spec/dummy/public/images/manage/but_block_rc.gif +0 -0
  126. data/spec/dummy/public/images/manage/but_freze_lc.gif +0 -0
  127. data/spec/dummy/public/images/manage/but_freze_rc.gif +0 -0
  128. data/spec/dummy/public/images/manage/but_gr.gif +0 -0
  129. data/spec/dummy/public/images/manage/but_gr_l.gif +0 -0
  130. data/spec/dummy/public/images/manage/but_gr_r.gif +0 -0
  131. data/spec/dummy/public/images/manage/but_search.gif +0 -0
  132. data/spec/dummy/public/images/manage/but_unfreze_lc.gif +0 -0
  133. data/spec/dummy/public/images/manage/but_unfreze_rc.gif +0 -0
  134. data/spec/dummy/public/images/manage/button_add_foto.gif +0 -0
  135. data/spec/dummy/public/images/manage/button_add_foto_ru.gif +0 -0
  136. data/spec/dummy/public/images/manage/button_add_foto_ua.gif +0 -0
  137. data/spec/dummy/public/images/manage/button_add_foto_uk.gif +0 -0
  138. data/spec/dummy/public/images/manage/cancelbutton.gif +0 -0
  139. data/spec/dummy/public/images/manage/dark_arr.gif +0 -0
  140. data/spec/dummy/public/images/manage/dark_arr_left.gif +0 -0
  141. data/spec/dummy/public/images/manage/dark_cross_ico.gif +0 -0
  142. data/spec/dummy/public/images/manage/dot.gif +0 -0
  143. data/spec/dummy/public/images/manage/duo_bg.gif +0 -0
  144. data/spec/dummy/public/images/manage/duo_bg_small.gif +0 -0
  145. data/spec/dummy/public/images/manage/duo_bg_small_blocked.gif +0 -0
  146. data/spec/dummy/public/images/manage/duo_bg_small_frozed.gif +0 -0
  147. data/spec/dummy/public/images/manage/duo_bg_small_notact.gif +0 -0
  148. data/spec/dummy/public/images/manage/duo_bot_small.gif +0 -0
  149. data/spec/dummy/public/images/manage/duo_bot_small_blocked.gif +0 -0
  150. data/spec/dummy/public/images/manage/duo_bot_small_frozed.gif +0 -0
  151. data/spec/dummy/public/images/manage/duo_bot_small_notact.gif +0 -0
  152. data/spec/dummy/public/images/manage/duo_top_small.gif +0 -0
  153. data/spec/dummy/public/images/manage/duo_top_small_blocked.gif +0 -0
  154. data/spec/dummy/public/images/manage/duo_top_small_frozed.gif +0 -0
  155. data/spec/dummy/public/images/manage/duo_top_small_notact.gif +0 -0
  156. data/spec/dummy/public/images/manage/edit_white_top.gif +0 -0
  157. data/spec/dummy/public/images/manage/empty.gif +0 -0
  158. data/spec/dummy/public/images/manage/filter_bot_bg.gif +0 -0
  159. data/spec/dummy/public/images/manage/filter_top_bg.gif +0 -0
  160. data/spec/dummy/public/images/manage/flag_en.gif +0 -0
  161. data/spec/dummy/public/images/manage/flag_en_nonact.gif +0 -0
  162. data/spec/dummy/public/images/manage/flag_ru.gif +0 -0
  163. data/spec/dummy/public/images/manage/flag_ru_nonact.gif +0 -0
  164. data/spec/dummy/public/images/manage/flag_ua.gif +0 -0
  165. data/spec/dummy/public/images/manage/flag_ua_nonact.gif +0 -0
  166. data/spec/dummy/public/images/manage/foto.jpg +0 -0
  167. data/spec/dummy/public/images/manage/ico_add.gif +0 -0
  168. data/spec/dummy/public/images/manage/ico_del.gif +0 -0
  169. data/spec/dummy/public/images/manage/ico_down.gif +0 -0
  170. data/spec/dummy/public/images/manage/ico_edit.gif +0 -0
  171. data/spec/dummy/public/images/manage/ico_settings.gif +0 -0
  172. data/spec/dummy/public/images/manage/ico_up.gif +0 -0
  173. data/spec/dummy/public/images/manage/input_bg.gif +0 -0
  174. data/spec/dummy/public/images/manage/l_but_corn.gif +0 -0
  175. data/spec/dummy/public/images/manage/minimise_but.gif +0 -0
  176. data/spec/dummy/public/images/manage/mp3.png +0 -0
  177. data/spec/dummy/public/images/manage/page_arr_hover.png +0 -0
  178. data/spec/dummy/public/images/manage/page_next_arr.gif +0 -0
  179. data/spec/dummy/public/images/manage/page_num_hover.gif +0 -0
  180. data/spec/dummy/public/images/manage/page_prev_arr.gif +0 -0
  181. data/spec/dummy/public/images/manage/panel/l_but_corn.gif +0 -0
  182. data/spec/dummy/public/images/manage/panel/maximise_but.gif +0 -0
  183. data/spec/dummy/public/images/manage/panel/r_but_corn.gif +0 -0
  184. data/spec/dummy/public/images/manage/panel/top_menu_arr.gif +0 -0
  185. data/spec/dummy/public/images/manage/panel/user_pic.gif +0 -0
  186. data/spec/dummy/public/images/manage/preloader.gif +0 -0
  187. data/spec/dummy/public/images/manage/r_but_corn.gif +0 -0
  188. data/spec/dummy/public/images/manage/select_bg.gif +0 -0
  189. data/spec/dummy/public/images/manage/select_corn.gif +0 -0
  190. data/spec/dummy/public/images/manage/struct_corn_lg.gif +0 -0
  191. data/spec/dummy/public/images/manage/struct_corn_llg.gif +0 -0
  192. data/spec/dummy/public/images/manage/struct_corn_lw.gif +0 -0
  193. data/spec/dummy/public/images/manage/struct_corn_rg.gif +0 -0
  194. data/spec/dummy/public/images/manage/struct_corn_rlg.gif +0 -0
  195. data/spec/dummy/public/images/manage/struct_corn_rw.gif +0 -0
  196. data/spec/dummy/public/images/manage/tab_gl.gif +0 -0
  197. data/spec/dummy/public/images/manage/tab_gr.gif +0 -0
  198. data/spec/dummy/public/images/manage/tab_wl.gif +0 -0
  199. data/spec/dummy/public/images/manage/tab_wr.gif +0 -0
  200. data/spec/dummy/public/images/manage/top_corn.gif +0 -0
  201. data/spec/dummy/public/images/manage/top_duo_corn.gif +0 -0
  202. data/spec/dummy/public/images/manage/top_menu_arr.gif +0 -0
  203. data/spec/dummy/public/images/manage/transp_cross.png +0 -0
  204. data/spec/dummy/public/images/manage/upload_progress.gif +0 -0
  205. data/spec/dummy/public/images/manage/user_act_lc.gif +0 -0
  206. data/spec/dummy/public/images/manage/user_act_rc.gif +0 -0
  207. data/spec/dummy/public/images/manage/user_ico.gif +0 -0
  208. data/spec/dummy/public/images/manage/user_pic.gif +0 -0
  209. data/spec/dummy/public/images/manage/user_pic_small.gif +0 -0
  210. data/spec/dummy/public/images/manage/user_pic_thumb.gif +0 -0
  211. data/spec/dummy/public/javascripts/application.js +2 -0
  212. data/spec/dummy/public/javascripts/controls.js +965 -0
  213. data/spec/dummy/public/javascripts/datepicker/jquery-ui-i18n.js +1176 -0
  214. data/spec/dummy/public/javascripts/datepicker/jquery.ui.datepicker-ru.js +37 -0
  215. data/spec/dummy/public/javascripts/datepicker/jquery.ui.datepicker-uk.js +37 -0
  216. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  217. data/spec/dummy/public/javascripts/effects.js +1123 -0
  218. data/spec/dummy/public/javascripts/fileupload/fileuploader-input.js +217 -0
  219. data/spec/dummy/public/javascripts/fileupload/fileuploader.css +31 -0
  220. data/spec/dummy/public/javascripts/fileupload/fileuploader.js +1288 -0
  221. data/spec/dummy/public/javascripts/jquery-ui-timepicker-addon.js +911 -0
  222. data/spec/dummy/public/javascripts/jquery.cookie.js +97 -0
  223. data/spec/dummy/public/javascripts/jquery.fancybox-1.3.4.pack.js +46 -0
  224. data/spec/dummy/public/javascripts/jquery.tmpl.min.js +10 -0
  225. data/spec/dummy/public/javascripts/manage-fileuploader.js +182 -0
  226. data/spec/dummy/public/javascripts/manage.js +294 -0
  227. data/spec/dummy/public/javascripts/preloader.js +47 -0
  228. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  229. data/spec/dummy/public/javascripts/rails.js +316 -0
  230. data/spec/dummy/public/stylesheets/application.css +1 -0
  231. data/spec/dummy/public/stylesheets/fancybox/images/blank.gif +0 -0
  232. data/spec/dummy/public/stylesheets/fancybox/images/fancy_close.png +0 -0
  233. data/spec/dummy/public/stylesheets/fancybox/images/fancy_loading.png +0 -0
  234. data/spec/dummy/public/stylesheets/fancybox/images/fancy_nav_left.png +0 -0
  235. data/spec/dummy/public/stylesheets/fancybox/images/fancy_nav_right.png +0 -0
  236. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_e.png +0 -0
  237. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_n.png +0 -0
  238. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_ne.png +0 -0
  239. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_nw.png +0 -0
  240. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_s.png +0 -0
  241. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_se.png +0 -0
  242. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_sw.png +0 -0
  243. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_w.png +0 -0
  244. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_left.png +0 -0
  245. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_main.png +0 -0
  246. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_over.png +0 -0
  247. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_right.png +0 -0
  248. data/spec/dummy/public/stylesheets/fancybox/images/fancybox-x.png +0 -0
  249. data/spec/dummy/public/stylesheets/fancybox/images/fancybox-y.png +0 -0
  250. data/spec/dummy/public/stylesheets/fancybox/images/fancybox.png +0 -0
  251. data/spec/dummy/public/stylesheets/fancybox/jquery.fancybox-1.3.4.css +359 -0
  252. data/spec/dummy/public/stylesheets/manage/buttons.css +42 -0
  253. data/spec/dummy/public/stylesheets/manage/ie.css +16 -0
  254. data/spec/dummy/public/stylesheets/manage/main.css +1085 -0
  255. data/spec/dummy/public/stylesheets/manage/panel.css +126 -0
  256. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  257. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  258. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  259. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  260. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  261. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  262. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  263. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  264. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  265. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  266. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  267. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  268. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  269. data/spec/dummy/public/stylesheets/smoothness/jquery-ui-1.8.13.custom.css +578 -0
  270. data/spec/dummy/public/uploads/avatar/4/rails.png +0 -0
  271. data/spec/dummy/public/uploads/avatar/4/thumb_rails.png +0 -0
  272. data/spec/dummy/public/uploads/avatar/5/rails.png +0 -0
  273. data/spec/dummy/public/uploads/avatar/5/thumb_rails.png +0 -0
  274. data/spec/dummy/public/uploads/avatar/6/rails.png +0 -0
  275. data/spec/dummy/public/uploads/avatar/6/thumb_rails.png +0 -0
  276. data/spec/dummy/public/uploads/avatar/7/rails.png +0 -0
  277. data/spec/dummy/public/uploads/avatar/7/thumb_rails.png +0 -0
  278. data/spec/dummy/public/uploads/avatar/8/rails.png +0 -0
  279. data/spec/dummy/public/uploads/avatar/8/thumb_rails.png +0 -0
  280. data/spec/dummy/public/uploads/tmp/20110819-1743-19227-1016/silicon_valley.jpg +0 -0
  281. data/spec/dummy/public/uploads/tmp/20110819-1743-19227-1016/thumb_silicon_valley.jpg +0 -0
  282. data/spec/dummy/public/uploads/tmp/20110819-1744-19584-0221/silicon_valley.jpg +0 -0
  283. data/spec/dummy/public/uploads/tmp/20110819-1744-19584-0221/thumb_silicon_valley.jpg +0 -0
  284. data/spec/dummy/script/rails +6 -0
  285. data/spec/dummy/test/fixtures/files/rails.png +0 -0
  286. data/spec/factories/asset_factory.rb +10 -0
  287. data/spec/factories/files/rails.png +0 -0
  288. data/spec/factories/files/silicon_valley.jpg +0 -0
  289. data/spec/factories/page_factory.rb +5 -0
  290. data/spec/factories/structure_factory.rb +19 -0
  291. data/spec/factories/user_factory.rb +46 -0
  292. data/spec/generators/install_generator_spec.rb +69 -0
  293. data/spec/integration/navigation_spec.rb +9 -0
  294. data/spec/integration/users_spec.rb +32 -0
  295. data/spec/models/avatar_spec.rb +69 -0
  296. data/spec/models/structure_spec.rb +83 -0
  297. data/spec/models/user_spec.rb +72 -0
  298. data/spec/spec.opts +2 -0
  299. data/spec/spec_helper.rb +70 -0
  300. data/spec/sunrise_spec.rb +17 -0
  301. data/spec/support/helpers/controller_macros.rb +40 -0
  302. data/spec/tmp/app/helpers/manage/assets_helper.rb +2 -0
  303. data/spec/tmp/app/helpers/manage/base_helper.rb +83 -0
  304. data/spec/tmp/app/helpers/manage/pages_helper.rb +2 -0
  305. data/spec/tmp/app/helpers/manage/settings_helper.rb +2 -0
  306. data/spec/tmp/app/helpers/manage/structures_helper.rb +12 -0
  307. data/spec/tmp/app/helpers/manage/users_helper.rb +6 -0
  308. data/spec/tmp/app/models/defaults/ability.rb +39 -0
  309. data/spec/tmp/app/models/defaults/asset.rb +9 -0
  310. data/spec/tmp/app/models/defaults/attachment_file.rb +31 -0
  311. data/spec/tmp/app/models/defaults/avatar.rb +34 -0
  312. data/spec/tmp/app/models/defaults/header.rb +5 -0
  313. data/spec/tmp/app/models/defaults/page.rb +5 -0
  314. data/spec/tmp/app/models/defaults/picture.rb +31 -0
  315. data/spec/tmp/app/models/defaults/position_type.rb +7 -0
  316. data/spec/tmp/app/models/defaults/role.rb +20 -0
  317. data/spec/tmp/app/models/defaults/role_type.rb +8 -0
  318. data/spec/tmp/app/models/defaults/structure.rb +9 -0
  319. data/spec/tmp/app/models/defaults/structure_type.rb +9 -0
  320. data/spec/tmp/app/models/defaults/user.rb +47 -0
  321. data/spec/tmp/app/uploaders/attachment_file_uploader.rb +5 -0
  322. data/spec/tmp/app/uploaders/avatar_uploader.rb +13 -0
  323. data/spec/tmp/app/uploaders/picture_uploader.rb +17 -0
  324. data/spec/tmp/app/views/layouts/application.html.erb +35 -0
  325. data/spec/tmp/app/views/pages/show.html.erb +2 -0
  326. data/spec/tmp/app/views/shared/_notice.html.erb +17 -0
  327. data/spec/tmp/config/application.rb +47 -0
  328. data/spec/tmp/config/application.yml.sample +4 -0
  329. data/spec/tmp/config/database.yml.sample +34 -0
  330. data/spec/tmp/config/initializers/sunrise.rb +7 -0
  331. data/spec/tmp/config/logrotate-config.sample +9 -0
  332. data/spec/tmp/config/nginx-config-passenger.sample +60 -0
  333. data/spec/tmp/config/routes.rb +7 -0
  334. data/spec/tmp/db/migrate/20110819144550_sunrise_create_users.rb +29 -0
  335. data/spec/tmp/db/migrate/20110819144650_sunrise_create_roles.rb +16 -0
  336. data/spec/tmp/db/migrate/20110819144750_sunrise_create_structures.rb +27 -0
  337. data/spec/tmp/db/migrate/20110819144850_sunrise_create_pages.rb +17 -0
  338. data/spec/tmp/db/migrate/20110819144950_sunrise_create_assets.rb +28 -0
  339. data/spec/tmp/db/migrate/20110819145050_sunrise_create_headers.rb +20 -0
  340. data/spec/tmp/db/seeds.rb +25 -0
  341. data/spec/tmp/public/images/alert.png +0 -0
  342. data/spec/tmp/public/images/cross_ico.png +0 -0
  343. data/spec/tmp/public/images/manage/add_post_bot.gif +0 -0
  344. data/spec/tmp/public/images/manage/add_post_top.gif +0 -0
  345. data/spec/tmp/public/images/manage/add_white_bot.gif +0 -0
  346. data/spec/tmp/public/images/manage/add_white_top.gif +0 -0
  347. data/spec/tmp/public/images/manage/arrow.png +0 -0
  348. data/spec/tmp/public/images/manage/back_but_lc.gif +0 -0
  349. data/spec/tmp/public/images/manage/back_but_rc.gif +0 -0
  350. data/spec/tmp/public/images/manage/bot_corn.gif +0 -0
  351. data/spec/tmp/public/images/manage/bot_duo_corn.gif +0 -0
  352. data/spec/tmp/public/images/manage/but_bg.png +0 -0
  353. data/spec/tmp/public/images/manage/but_block_lc.gif +0 -0
  354. data/spec/tmp/public/images/manage/but_block_rc.gif +0 -0
  355. data/spec/tmp/public/images/manage/but_freze_lc.gif +0 -0
  356. data/spec/tmp/public/images/manage/but_freze_rc.gif +0 -0
  357. data/spec/tmp/public/images/manage/but_gr.gif +0 -0
  358. data/spec/tmp/public/images/manage/but_gr_l.gif +0 -0
  359. data/spec/tmp/public/images/manage/but_gr_r.gif +0 -0
  360. data/spec/tmp/public/images/manage/but_search.gif +0 -0
  361. data/spec/tmp/public/images/manage/but_unfreze_lc.gif +0 -0
  362. data/spec/tmp/public/images/manage/but_unfreze_rc.gif +0 -0
  363. data/spec/tmp/public/images/manage/button_add_foto.gif +0 -0
  364. data/spec/tmp/public/images/manage/button_add_foto_ru.gif +0 -0
  365. data/spec/tmp/public/images/manage/button_add_foto_ua.gif +0 -0
  366. data/spec/tmp/public/images/manage/button_add_foto_uk.gif +0 -0
  367. data/spec/tmp/public/images/manage/cancelbutton.gif +0 -0
  368. data/spec/tmp/public/images/manage/dark_arr.gif +0 -0
  369. data/spec/tmp/public/images/manage/dark_arr_left.gif +0 -0
  370. data/spec/tmp/public/images/manage/dark_cross_ico.gif +0 -0
  371. data/spec/tmp/public/images/manage/dot.gif +0 -0
  372. data/spec/tmp/public/images/manage/duo_bg.gif +0 -0
  373. data/spec/tmp/public/images/manage/duo_bg_small.gif +0 -0
  374. data/spec/tmp/public/images/manage/duo_bg_small_blocked.gif +0 -0
  375. data/spec/tmp/public/images/manage/duo_bg_small_frozed.gif +0 -0
  376. data/spec/tmp/public/images/manage/duo_bg_small_notact.gif +0 -0
  377. data/spec/tmp/public/images/manage/duo_bot_small.gif +0 -0
  378. data/spec/tmp/public/images/manage/duo_bot_small_blocked.gif +0 -0
  379. data/spec/tmp/public/images/manage/duo_bot_small_frozed.gif +0 -0
  380. data/spec/tmp/public/images/manage/duo_bot_small_notact.gif +0 -0
  381. data/spec/tmp/public/images/manage/duo_top_small.gif +0 -0
  382. data/spec/tmp/public/images/manage/duo_top_small_blocked.gif +0 -0
  383. data/spec/tmp/public/images/manage/duo_top_small_frozed.gif +0 -0
  384. data/spec/tmp/public/images/manage/duo_top_small_notact.gif +0 -0
  385. data/spec/tmp/public/images/manage/edit_white_top.gif +0 -0
  386. data/spec/tmp/public/images/manage/empty.gif +0 -0
  387. data/spec/tmp/public/images/manage/filter_bot_bg.gif +0 -0
  388. data/spec/tmp/public/images/manage/filter_top_bg.gif +0 -0
  389. data/spec/tmp/public/images/manage/flag_en.gif +0 -0
  390. data/spec/tmp/public/images/manage/flag_en_nonact.gif +0 -0
  391. data/spec/tmp/public/images/manage/flag_ru.gif +0 -0
  392. data/spec/tmp/public/images/manage/flag_ru_nonact.gif +0 -0
  393. data/spec/tmp/public/images/manage/flag_ua.gif +0 -0
  394. data/spec/tmp/public/images/manage/flag_ua_nonact.gif +0 -0
  395. data/spec/tmp/public/images/manage/foto.jpg +0 -0
  396. data/spec/tmp/public/images/manage/ico_add.gif +0 -0
  397. data/spec/tmp/public/images/manage/ico_delete.gif +0 -0
  398. data/spec/tmp/public/images/manage/ico_down.gif +0 -0
  399. data/spec/tmp/public/images/manage/ico_edit.gif +0 -0
  400. data/spec/tmp/public/images/manage/ico_settings.gif +0 -0
  401. data/spec/tmp/public/images/manage/ico_up.gif +0 -0
  402. data/spec/tmp/public/images/manage/input_bg.gif +0 -0
  403. data/spec/tmp/public/images/manage/l_but_corn.gif +0 -0
  404. data/spec/tmp/public/images/manage/minimise_but.gif +0 -0
  405. data/spec/tmp/public/images/manage/mp3.png +0 -0
  406. data/spec/tmp/public/images/manage/page_arr_hover.png +0 -0
  407. data/spec/tmp/public/images/manage/page_next_arr.gif +0 -0
  408. data/spec/tmp/public/images/manage/page_num_hover.gif +0 -0
  409. data/spec/tmp/public/images/manage/page_prev_arr.gif +0 -0
  410. data/spec/tmp/public/images/manage/panel/l_but_corn.gif +0 -0
  411. data/spec/tmp/public/images/manage/panel/maximise_but.gif +0 -0
  412. data/spec/tmp/public/images/manage/panel/r_but_corn.gif +0 -0
  413. data/spec/tmp/public/images/manage/panel/top_menu_arr.gif +0 -0
  414. data/spec/tmp/public/images/manage/panel/user_pic.gif +0 -0
  415. data/spec/tmp/public/images/manage/preloader.gif +0 -0
  416. data/spec/tmp/public/images/manage/r_but_corn.gif +0 -0
  417. data/spec/tmp/public/images/manage/select_bg.gif +0 -0
  418. data/spec/tmp/public/images/manage/select_corn.gif +0 -0
  419. data/spec/tmp/public/images/manage/struct_corn_lg.gif +0 -0
  420. data/spec/tmp/public/images/manage/struct_corn_llg.gif +0 -0
  421. data/spec/tmp/public/images/manage/struct_corn_lw.gif +0 -0
  422. data/spec/tmp/public/images/manage/struct_corn_rg.gif +0 -0
  423. data/spec/tmp/public/images/manage/struct_corn_rlg.gif +0 -0
  424. data/spec/tmp/public/images/manage/struct_corn_rw.gif +0 -0
  425. data/spec/tmp/public/images/manage/tab_gl.gif +0 -0
  426. data/spec/tmp/public/images/manage/tab_gr.gif +0 -0
  427. data/spec/tmp/public/images/manage/tab_wl.gif +0 -0
  428. data/spec/tmp/public/images/manage/tab_wr.gif +0 -0
  429. data/spec/tmp/public/images/manage/top_corn.gif +0 -0
  430. data/spec/tmp/public/images/manage/top_duo_corn.gif +0 -0
  431. data/spec/tmp/public/images/manage/top_menu_arr.gif +0 -0
  432. data/spec/tmp/public/images/manage/transp_cross.png +0 -0
  433. data/spec/tmp/public/images/manage/upload_progress.gif +0 -0
  434. data/spec/tmp/public/images/manage/user_act_lc.gif +0 -0
  435. data/spec/tmp/public/images/manage/user_act_rc.gif +0 -0
  436. data/spec/tmp/public/images/manage/user_ico.gif +0 -0
  437. data/spec/tmp/public/images/manage/user_pic.gif +0 -0
  438. data/spec/tmp/public/images/manage/user_pic_small.gif +0 -0
  439. data/spec/tmp/public/images/manage/user_pic_thumb.gif +0 -0
  440. data/spec/tmp/public/javascripts/datepicker/jquery-ui-i18n.js +1176 -0
  441. data/spec/tmp/public/javascripts/datepicker/jquery.ui.datepicker-ru.js +37 -0
  442. data/spec/tmp/public/javascripts/datepicker/jquery.ui.datepicker-uk.js +37 -0
  443. data/spec/tmp/public/javascripts/jquery-ui-timepicker-addon.js +911 -0
  444. data/spec/tmp/public/javascripts/jquery.cookie.js +97 -0
  445. data/spec/tmp/public/javascripts/jquery.fancybox-1.3.4.pack.js +46 -0
  446. data/spec/tmp/public/javascripts/jquery.tmpl.min.js +10 -0
  447. data/spec/tmp/public/javascripts/manage-fileuploader.js +182 -0
  448. data/spec/tmp/public/javascripts/manage.js +294 -0
  449. data/spec/tmp/public/javascripts/preloader.js +47 -0
  450. data/spec/tmp/public/javascripts/rails.js +331 -0
  451. data/spec/tmp/public/stylesheets/alert.css +26 -0
  452. data/spec/tmp/public/stylesheets/application.css +1 -0
  453. data/spec/tmp/public/stylesheets/fancybox/images/blank.gif +0 -0
  454. data/spec/tmp/public/stylesheets/fancybox/images/fancy_close.png +0 -0
  455. data/spec/tmp/public/stylesheets/fancybox/images/fancy_loading.png +0 -0
  456. data/spec/tmp/public/stylesheets/fancybox/images/fancy_nav_left.png +0 -0
  457. data/spec/tmp/public/stylesheets/fancybox/images/fancy_nav_right.png +0 -0
  458. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_e.png +0 -0
  459. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_n.png +0 -0
  460. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_ne.png +0 -0
  461. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_nw.png +0 -0
  462. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_s.png +0 -0
  463. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_se.png +0 -0
  464. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_sw.png +0 -0
  465. data/spec/tmp/public/stylesheets/fancybox/images/fancy_shadow_w.png +0 -0
  466. data/spec/tmp/public/stylesheets/fancybox/images/fancy_title_left.png +0 -0
  467. data/spec/tmp/public/stylesheets/fancybox/images/fancy_title_main.png +0 -0
  468. data/spec/tmp/public/stylesheets/fancybox/images/fancy_title_over.png +0 -0
  469. data/spec/tmp/public/stylesheets/fancybox/images/fancy_title_right.png +0 -0
  470. data/spec/tmp/public/stylesheets/fancybox/images/fancybox-x.png +0 -0
  471. data/spec/tmp/public/stylesheets/fancybox/images/fancybox-y.png +0 -0
  472. data/spec/tmp/public/stylesheets/fancybox/images/fancybox.png +0 -0
  473. data/spec/tmp/public/stylesheets/fancybox/jquery.fancybox-1.3.4.css +359 -0
  474. data/spec/tmp/public/stylesheets/manage/buttons.css +42 -0
  475. data/spec/tmp/public/stylesheets/manage/ie.css +16 -0
  476. data/spec/tmp/public/stylesheets/manage/main.css +1108 -0
  477. data/spec/tmp/public/stylesheets/manage/panel.css +126 -0
  478. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  479. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  480. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  481. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  482. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  483. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  484. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  485. data/spec/tmp/public/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  486. data/spec/tmp/public/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  487. data/spec/tmp/public/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  488. data/spec/tmp/public/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  489. data/spec/tmp/public/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  490. data/spec/tmp/public/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  491. data/spec/tmp/public/stylesheets/smoothness/jquery-ui-1.8.13.custom.css +578 -0
  492. data/spec/tmp/spec/controllers/pages_controller_spec.rb +22 -0
  493. data/spec/tmp/spec/controllers/welcome_controller_spec.rb +18 -0
  494. data/spec/tmp/spec/factories/structure_factory.rb +22 -0
  495. data/spec/tmp/spec/factories/user_factory.rb +60 -0
  496. data/spec/tmp/spec/spec_helper.rb +37 -0
  497. data/spec/tmp/spec/support/helpers/controller_macros.rb +51 -0
  498. metadata +1270 -1326
  499. data/lib/sunrise/model_filter.rb +0 -158
@@ -0,0 +1,26 @@
1
+ .alert-container {
2
+ display: block;
3
+ left: 0;
4
+ overflow: hidden;
5
+ position: fixed;
6
+ top: 0;
7
+ width: 100%;
8
+ z-index: 10000;
9
+ }
10
+ .alert {
11
+ background: url(/images/alert.png) no-repeat scroll left bottom transparent;
12
+ color: #FFFFFF;
13
+ display: block;
14
+ margin: 0 auto;
15
+ padding: 15px 80px 20px 40px;
16
+ position: relative;
17
+ width: 790px;
18
+ text-align: center;
19
+ }
20
+ .alert .close {
21
+ display: block;
22
+ position: absolute;
23
+ right: 40px;
24
+ top: 12px;
25
+ z-index: 1000;
26
+ }
@@ -0,0 +1,5 @@
1
+ class AttachmentFileUploader < Sunrise::CarrierWave::BaseUploader
2
+ def extension_white_list
3
+ %w(pdf doc docx xls xlsx ppt pptx zip rar csv)
4
+ end
5
+ end
@@ -0,0 +1,17 @@
1
+ class AvatarUploader < Sunrise::CarrierWave::BaseUploader
2
+
3
+ process :strip
4
+ process :quality => 90
5
+
6
+ version :thumb do
7
+ process :resize_to_fill => [100, 100]
8
+ end
9
+
10
+ version :small do
11
+ process :resize_to_fill => [32, 32]
12
+ end
13
+
14
+ def extension_white_list
15
+ %w(jpg jpeg gif png)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ class PictureUploader < Sunrise::CarrierWave::BaseUploader
2
+
3
+ process :strip
4
+ process :quality => 90
5
+
6
+ version :thumb do
7
+ process :resize_to_fill => [100, 100]
8
+ end
9
+
10
+ version :content do
11
+ process :resize_to_fit => [575, 500]
12
+ end
13
+
14
+ def extension_white_list
15
+ %w(jpg jpeg gif png)
16
+ end
17
+ end
@@ -6,16 +6,14 @@
6
6
  <%= tag(:meta, :content => render_description, :name=>"description") %>
7
7
  <%= csrf_meta_tag %>
8
8
  <title><%= render_title %></title>
9
- <%= stylesheet_link_tag "application" %>
9
+ <%= stylesheet_link_tag "application", "alert" %>
10
10
  <%= stylesheet_link_tag 'manage/panel.css', :media=> 'screen' if content_manager? %>
11
- <!--[if lte IE 6]><link href="/stylesheets/ie.css" rel="stylesheet" type="text/css" /><![endif]-->
12
11
  <!--[if lte IE 7]><link href="/stylesheets/ie7.css" rel="stylesheet" type="text/css" /><![endif]-->
13
12
 
14
13
  <script src="https://www.google.com/jsapi?key=" type="text/javascript"></script>
15
14
  <script language="Javascript" type="text/javascript">
16
15
  //<![CDATA[
17
- google.load("jquery", "1.6.1");
18
- google.load("swfobject", "2.2");
16
+ google.load("jquery", "1.6.2");
19
17
  //]]>
20
18
  </script>
21
19
 
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+ require 'mime/types'
3
+ require 'mini_magick'
4
+
5
+ module Sunrise
6
+ module CarrierWave
7
+ class BaseUploader < ::CarrierWave::Uploader::Base
8
+ include ::CarrierWave::MiniMagick
9
+
10
+ storage :file
11
+
12
+ process :set_content_type
13
+ process :set_size
14
+ process :set_width_and_height
15
+
16
+ # default store assets path
17
+ def store_dir
18
+ "uploads/#{model.class.to_s.underscore}/#{model.id}"
19
+ end
20
+
21
+ # process :strip
22
+ def strip
23
+ manipulate! do |img|
24
+ img.strip
25
+ img = yield(img) if block_given?
26
+ img
27
+ end
28
+ end
29
+
30
+ # process :quality => 85
31
+ def quality(percentage)
32
+ manipulate! do |img|
33
+ img.quality(percentage)
34
+ img = yield(img) if block_given?
35
+ img
36
+ end
37
+ end
38
+
39
+ def default_url
40
+ "/images/defaults/#{model.class.to_s.underscore}_#{version_name}.png"
41
+ end
42
+
43
+ def set_content_type
44
+ type = file.content_type == 'application/octet-stream' || file.content_type.blank? ? MIME::Types.type_for(original_filename).first.to_s : file.content_type
45
+
46
+ model.data_content_type = type
47
+ end
48
+
49
+ def set_size
50
+ model.data_file_size = file.size
51
+ end
52
+
53
+ def set_width_and_height
54
+ if model.image? && model.has_dimensions?
55
+ magick = ::MiniMagick::Image.new(current_path)
56
+ model.width, model.height = magick[:width], magick[:height]
57
+ end
58
+ end
59
+
60
+ def image?
61
+ model.image?
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,70 @@
1
+ # encoding: utf-8
2
+ module Sunrise
3
+ module CarrierWave
4
+ class FileSizeValidator < ActiveModel::EachValidator
5
+ MESSAGES = { :is => :wrong_size, :minimum => :size_too_small, :maximum => :size_too_big }.freeze
6
+ CHECKS = { :is => :==, :minimum => :>=, :maximum => :<= }.freeze
7
+
8
+ DEFAULT_TOKENIZER = lambda { |value| value.split(//) }
9
+ RESERVED_OPTIONS = [:minimum, :maximum, :within, :is, :tokenizer, :too_short, :too_long]
10
+
11
+ def initialize(options)
12
+ if range = (options.delete(:in) || options.delete(:within))
13
+ raise ArgumentError, ":in and :within must be a Range" unless range.is_a?(Range)
14
+ options[:minimum], options[:maximum] = range.begin, range.end
15
+ options[:maximum] -= 1 if range.exclude_end?
16
+ end
17
+
18
+ super
19
+ end
20
+
21
+ def check_validity!
22
+ keys = CHECKS.keys & options.keys
23
+
24
+ if keys.empty?
25
+ raise ArgumentError, 'Range unspecified. Specify the :within, :maximum, :minimum, or :is option.'
26
+ end
27
+
28
+ keys.each do |key|
29
+ value = options[key]
30
+
31
+ unless value.is_a?(Integer) && value >= 0
32
+ raise ArgumentError, ":#{key} must be a nonnegative Integer"
33
+ end
34
+ end
35
+ end
36
+
37
+ def validate_each(record, attribute, value)
38
+ raise(ArgumentError, "A CarrierWave::Uploader::Base object was expected") unless value.kind_of? ::CarrierWave::Uploader::Base
39
+
40
+ value = (options[:tokenizer] || DEFAULT_TOKENIZER).call(value) if value.kind_of?(String)
41
+
42
+ CHECKS.each do |key, validity_check|
43
+ next unless check_value = options[key]
44
+
45
+ value ||= [] if key == :maximum
46
+
47
+ value_size = value.size
48
+ next if value_size.send(validity_check, check_value)
49
+
50
+ errors_options = options.except(*RESERVED_OPTIONS)
51
+ errors_options[:file_size] = help.number_to_human_size check_value
52
+
53
+ default_message = options[MESSAGES[key]]
54
+ errors_options[:message] ||= default_message if default_message
55
+
56
+ record.errors.add(attribute, MESSAGES[key], errors_options)
57
+ end
58
+ end
59
+
60
+ def help
61
+ Helper.instance
62
+ end
63
+
64
+ class Helper
65
+ include Singleton
66
+ include ActionView::Helpers::NumberHelper
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+ module Sunrise
3
+ module CarrierWave
4
+ module Glue
5
+ def self.included(base)
6
+ base.send(:extend, ClassMethods)
7
+ base.send(:include, InstanceMethods)
8
+ end
9
+
10
+ module ClassMethods
11
+ def sunrise_uploader(uploader=nil, options={}, &block)
12
+ options = { :mount_on => :data_file_name }.merge(options)
13
+
14
+ mount_uploader(:data, uploader, options, &block)
15
+
16
+ validates_processing_of :data
17
+ end
18
+
19
+ def validates_filesize_of(*attr_names)
20
+ validates_with FileSizeValidator, _merge_attributes(attr_names)
21
+ end
22
+ end
23
+
24
+ module InstanceMethods
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ module Sunrise
3
+ module Controllers
4
+ module Manage
5
+ def self.included(base)
6
+ base.send :include, InstanceMethods
7
+ base.send :extend, ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def self.extended(base)
12
+ base.class_eval do
13
+ prepend_before_filter :authenticate_user!
14
+ check_authorization
15
+
16
+ layout "manage"
17
+ respond_to :html
18
+
19
+ class_attribute :orders_configuration, :instance_writer => false
20
+
21
+ helper_method :search_filter
22
+ end
23
+ end
24
+
25
+ def order_by(*orders)
26
+ options = orders.extract_options!
27
+ options.symbolize_keys!
28
+
29
+ self.orders_configuration = (self.orders_configuration || {}).dup
30
+
31
+ orders.each do |column|
32
+ self.orders_configuration[column] ||= { :default => false }
33
+ self.orders_configuration[column] = self.orders_configuration[column].merge(options)
34
+ end
35
+ end
36
+ end
37
+
38
+ module InstanceMethods
39
+
40
+ protected
41
+
42
+ def current_ability
43
+ @current_ability ||= ::Ability.new(current_user, :manage)
44
+ end
45
+
46
+ def search_filter
47
+ @search_filter ||= Sunrise::Controllers::ModelFilter.new(self, params)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,76 @@
1
+ # encoding: utf-8
2
+ require 'ostruct'
3
+
4
+ module Sunrise
5
+ module Controllers
6
+ class ModelFilter
7
+ attr_accessor :controller, :params, :order
8
+
9
+ def initialize(controller, params = {})
10
+ @params = params.symbolize_keys
11
+ @controller = controller
12
+ @order = extract_order(@params[:search] || {})
13
+ end
14
+
15
+ def method_missing(method, *args, &block)
16
+ match_data = method.to_s.match(/^(.+)_before_type_cast$/)
17
+ method_name = (match_data ? match_data[1] : method).to_sym
18
+
19
+ if respond_to?(method_name)
20
+ @params[method_name]
21
+ else
22
+ super
23
+ end
24
+ end
25
+
26
+ def respond_to?(method_name)
27
+ return true if scope?(method_name) || @params.has_key?(method_name.to_sym)
28
+ super
29
+ end
30
+
31
+ def scope?(method_name)
32
+ controller.scopes_configuration.values.collect { |v| v[:as] }.include?(method_name.to_sym)
33
+ end
34
+
35
+ def order?(method_name)
36
+ controller.orders_configuration.keys.include?(method_name.to_sym)
37
+ end
38
+
39
+ def to_key
40
+ []
41
+ end
42
+
43
+ def current_order
44
+ "#{@order_column}_#{@order_type}"
45
+ end
46
+
47
+ class << self
48
+ def model_name
49
+ @_model_name ||= OpenStruct.new(:singular => "search", :plural => "searches")
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ def extract_order(options = {})
56
+ options = options.symbolize_keys
57
+
58
+ ocolumn = options.delete(:order_column)
59
+ otype = options.delete(:order_type)
60
+
61
+ unless ocolumn.blank?
62
+ @order_column = ocolumn.to_s.strip.downcase.to_s
63
+ @order_column = nil unless order?(@order_column)
64
+ end
65
+
66
+ unless @order_column.blank?
67
+ @order_type = otype.to_s.strip.downcase unless otype.blank?
68
+ @order_type = nil unless ['desc', 'asc'].include?(@order_type)
69
+ @order_type ||= 'desc'
70
+
71
+ "#{@order_column} #{@order_type}"
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
data/lib/sunrise/core.rb CHANGED
@@ -3,7 +3,6 @@ require 'sunrise/core_ext'
3
3
 
4
4
  module Sunrise
5
5
  autoload :SystemSettings, 'sunrise/system_settings'
6
- autoload :ModelFilter, 'sunrise/model_filter'
7
6
  autoload :Plugins, 'sunrise/plugins'
8
7
  autoload :Plugin, 'sunrise/plugin'
9
8
  autoload :Utils, 'sunrise/utils'
@@ -18,6 +17,8 @@ module Sunrise
18
17
 
19
18
  module Controllers
20
19
  autoload :HeadOptions, 'sunrise/controllers/head_options'
20
+ autoload :ModelFilter, 'sunrise/controllers/model_filter'
21
+ autoload :Manage, 'sunrise/controllers/manage'
21
22
  end
22
23
 
23
24
  module Views
@@ -30,6 +31,12 @@ module Sunrise
30
31
  autoload :Depth, 'sunrise/nested_set/depth'
31
32
  end
32
33
 
34
+ module CarrierWave
35
+ autoload :Glue, 'sunrise/carrier_wave/glue'
36
+ autoload :BaseUploader, 'sunrise/carrier_wave/base_uploader'
37
+ autoload :FileSizeValidator, 'sunrise/carrier_wave/file_size_validator'
38
+ end
39
+
33
40
  # Custom flash_keys
34
41
  mattr_accessor :flash_keys
35
42
  @@flash_keys = [ :success, :failure ]
@@ -1,9 +1,9 @@
1
1
  require 'rails'
2
2
  require 'awesome_nested_set'
3
3
  require 'inherited_resources'
4
- require 'paperclip'
5
4
  require 'sunrise-core'
6
5
  require 'sunrise-file-upload'
6
+ require "carrierwave"
7
7
 
8
8
  module Sunrise
9
9
  class Engine < ::Rails::Engine
@@ -19,6 +19,7 @@ module Sunrise
19
19
  ActiveSupport.on_load :active_record do
20
20
  ActiveRecord::Base.send :include, Sunrise::Utils::Mysql
21
21
  ActiveRecord::Base.send :include, Sunrise::Utils::AccessibleAttributes
22
+ ActiveRecord::Base.send :include, Sunrise::CarrierWave::Glue
22
23
  end
23
24
 
24
25
  ActiveSupport.on_load :action_controller do
@@ -41,11 +42,6 @@ module Sunrise
41
42
  end
42
43
 
43
44
  config.after_initialize do
44
- Paperclip.interpolates('basename') do |attachment, style|
45
- filename = attachment.original_filename.gsub(/#{File.extname(attachment.original_filename)}$/, "")
46
- Sunrise::Utils.parameterize_filename( filename )
47
- end
48
-
49
45
  Sunrise::FileUpload::Manager.before_create do |env, asset|
50
46
  asset.user = env['warden'].user if env['warden']
51
47
  end