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,47 @@
1
+ // Ajax Preloader
2
+ var Preloader;
3
+
4
+ if (Preloader == undefined) {
5
+ Preloader = function(dom_id) {
6
+ this.show(dom_id);
7
+ };
8
+ }
9
+
10
+ Preloader.select = function(dom_id) {
11
+ var element_id = (dom_id == null) ? 'preloader' : dom_id;
12
+
13
+ if (this.element == null)
14
+ {
15
+ this.element = document.getElementById(element_id);
16
+ }
17
+ };
18
+
19
+ Preloader.show = function(dom_id) {
20
+ this.select(dom_id);
21
+ if (this.element == null) return;
22
+
23
+ this.draw();
24
+ };
25
+
26
+ Preloader.draw = function(){
27
+ if (this.element == null) return;
28
+
29
+ var client = window.innerHeight || document.documentElement.clientHeight;
30
+ var top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
31
+ var prefix = top + (client / 2);
32
+
33
+ this.element.style.top = prefix + 'px';
34
+ this.element.style.display = '';
35
+ };
36
+
37
+ Preloader.hide = function(dom_id){
38
+ this.select(dom_id);
39
+ if (this.element == null) return;
40
+
41
+ this.element.style.display = 'none';
42
+ this.element.style.top = '0px';
43
+ };
44
+
45
+ Preloader.is_enable = function(){
46
+ return (document.getElementById('preloader') != null);
47
+ };
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Unobtrusive scripting adapter for jQuery
3
+ *
4
+ * Requires jQuery 1.6.0 or later.
5
+ * https://github.com/rails/jquery-ujs
6
+
7
+ * Uploading file using rails.js
8
+ * =============================
9
+ *
10
+ * By default, browsers do not allow files to be uploaded via AJAX. As a result, if there are any non-blank file fields
11
+ * in the remote form, this adapter aborts the AJAX submission and allows the form to submit through standard means.
12
+ *
13
+ * The `ajax:aborted:file` event allows you to bind your own handler to process the form submission however you wish.
14
+ *
15
+ * Ex:
16
+ * $('form').live('ajax:aborted:file', function(event, elements){
17
+ * // Implement own remote file-transfer handler here for non-blank file inputs passed in `elements`.
18
+ * // Returning false in this handler tells rails.js to disallow standard form submission
19
+ * return false;
20
+ * });
21
+ *
22
+ * The `ajax:aborted:file` event is fired when a file-type input is detected with a non-blank value.
23
+ *
24
+ * Third-party tools can use this hook to detect when an AJAX file upload is attempted, and then use
25
+ * techniques like the iframe method to upload the file instead.
26
+ *
27
+ * Required fields in rails.js
28
+ * ===========================
29
+ *
30
+ * If any blank required inputs (required="required") are detected in the remote form, the whole form submission
31
+ * is canceled. Note that this is unlike file inputs, which still allow standard (non-AJAX) form submission.
32
+ *
33
+ * The `ajax:aborted:required` event allows you to bind your own handler to inform the user of blank required inputs.
34
+ *
35
+ * !! Note that Opera does not fire the form's submit event if there are blank required inputs, so this event may never
36
+ * get fired in Opera. This event is what causes other browsers to exhibit the same submit-aborting behavior.
37
+ *
38
+ * Ex:
39
+ * $('form').live('ajax:aborted:required', function(event, elements){
40
+ * // Returning false in this handler tells rails.js to submit the form anyway.
41
+ * // The blank required inputs are passed to this function in `elements`.
42
+ * return ! confirm("Would you like to submit the form with missing info?");
43
+ * });
44
+ */
45
+
46
+ (function($, undefined) {
47
+ // Shorthand to make it a little easier to call public rails functions from within rails.js
48
+ var rails;
49
+
50
+ $.rails = rails = {
51
+ // Link elements bound by jquery-ujs
52
+ linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]',
53
+
54
+ // Select elements bound by jquery-ujs
55
+ selectChangeSelector: 'select[data-remote]',
56
+
57
+ // Form elements bound by jquery-ujs
58
+ formSubmitSelector: 'form',
59
+
60
+ // Form input elements bound by jquery-ujs
61
+ formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])',
62
+
63
+ // Form input elements disabled during form submission
64
+ disableSelector: 'input[data-disable-with], button[data-disable-with], textarea[data-disable-with]',
65
+
66
+ // Form input elements re-enabled after form submission
67
+ enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled',
68
+
69
+ // Form required input elements
70
+ requiredInputSelector: 'input[name][required]:not([disabled]),textarea[name][required]:not([disabled])',
71
+
72
+ // Form file input elements
73
+ fileInputSelector: 'input:file',
74
+
75
+ // Make sure that every Ajax request sends the CSRF token
76
+ CSRFProtection: function(xhr) {
77
+ var token = $('meta[name="csrf-token"]').attr('content');
78
+ if (token) xhr.setRequestHeader('X-CSRF-Token', token);
79
+ },
80
+
81
+ // Triggers an event on an element and returns false if the event result is false
82
+ fire: function(obj, name, data) {
83
+ var event = $.Event(name);
84
+ obj.trigger(event, data);
85
+ return event.result !== false;
86
+ },
87
+
88
+ // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
89
+ confirm: function(message) {
90
+ return confirm(message);
91
+ },
92
+
93
+ // Default ajax function, may be overridden with custom function in $.rails.ajax
94
+ ajax: function(options) {
95
+ return $.ajax(options);
96
+ },
97
+
98
+ // Submits "remote" forms and links with ajax
99
+ handleRemote: function(element) {
100
+ var method, url, data,
101
+ crossDomain = element.data('cross-domain') || null,
102
+ dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);
103
+
104
+ if (rails.fire(element, 'ajax:before')) {
105
+
106
+ if (element.is('form')) {
107
+ method = element.attr('method');
108
+ url = element.attr('action');
109
+ data = element.serializeArray();
110
+ // memoized value from clicked submit button
111
+ var button = element.data('ujs:submit-button');
112
+ if (button) {
113
+ data.push(button);
114
+ element.data('ujs:submit-button', null);
115
+ }
116
+ } else if (element.is('select')) {
117
+ method = element.data('method');
118
+ url = element.data('url');
119
+ data = element.serialize();
120
+ if (element.data('params')) data = data + "&" + element.data('params');
121
+ } else {
122
+ method = element.data('method');
123
+ url = element.attr('href');
124
+ data = element.data('params') || null;
125
+ }
126
+
127
+ options = {
128
+ type: method || 'GET', data: data, dataType: dataType, crossDomain: crossDomain,
129
+ // stopping the "ajax:beforeSend" event will cancel the ajax request
130
+ beforeSend: function(xhr, settings) {
131
+ if (settings.dataType === undefined) {
132
+ xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
133
+ }
134
+ return rails.fire(element, 'ajax:beforeSend', [xhr, settings]);
135
+ },
136
+ success: function(data, status, xhr) {
137
+ element.trigger('ajax:success', [data, status, xhr]);
138
+ },
139
+ complete: function(xhr, status) {
140
+ element.trigger('ajax:complete', [xhr, status]);
141
+ },
142
+ error: function(xhr, status, error) {
143
+ element.trigger('ajax:error', [xhr, status, error]);
144
+ }
145
+ };
146
+ // Do not pass url to `ajax` options if blank
147
+ if (url) { $.extend(options, { url: url }); }
148
+
149
+ rails.ajax(options);
150
+ }
151
+ },
152
+
153
+ // Handles "data-method" on links such as:
154
+ // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
155
+ handleMethod: function(link) {
156
+ var href = link.attr('href'),
157
+ method = link.data('method'),
158
+ csrf_token = $('meta[name=csrf-token]').attr('content'),
159
+ csrf_param = $('meta[name=csrf-param]').attr('content'),
160
+ form = $('<form method="post" action="' + href + '"></form>'),
161
+ metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
162
+
163
+ if (csrf_param !== undefined && csrf_token !== undefined) {
164
+ metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />';
165
+ }
166
+
167
+ form.hide().append(metadata_input).appendTo('body');
168
+ form.submit();
169
+ },
170
+
171
+ /* Disables form elements:
172
+ - Caches element value in 'ujs:enable-with' data store
173
+ - Replaces element text with value of 'data-disable-with' attribute
174
+ - Adds disabled=disabled attribute
175
+ */
176
+ disableFormElements: function(form) {
177
+ form.find(rails.disableSelector).each(function() {
178
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
179
+ element.data('ujs:enable-with', element[method]());
180
+ element[method](element.data('disable-with'));
181
+ element.attr('disabled', 'disabled');
182
+ });
183
+ },
184
+
185
+ /* Re-enables disabled form elements:
186
+ - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
187
+ - Removes disabled attribute
188
+ */
189
+ enableFormElements: function(form) {
190
+ form.find(rails.enableSelector).each(function() {
191
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
192
+ if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
193
+ element.removeAttr('disabled');
194
+ });
195
+ },
196
+
197
+ /* For 'data-confirm' attribute:
198
+ - Fires `confirm` event
199
+ - Shows the confirmation dialog
200
+ - Fires the `confirm:complete` event
201
+
202
+ Returns `true` if no function stops the chain and user chose yes; `false` otherwise.
203
+ Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.
204
+ Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function
205
+ return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.
206
+ */
207
+ allowAction: function(element) {
208
+ var message = element.data('confirm'),
209
+ answer = false, callback;
210
+ if (!message) { return true; }
211
+
212
+ if (rails.fire(element, 'confirm')) {
213
+ answer = rails.confirm(message);
214
+ callback = rails.fire(element, 'confirm:complete', [answer]);
215
+ }
216
+ return answer && callback;
217
+ },
218
+
219
+ // Helper function which checks for blank inputs in a form that match the specified CSS selector
220
+ blankInputs: function(form, specifiedSelector, nonBlank) {
221
+ var inputs = $(), input,
222
+ selector = specifiedSelector || 'input,textarea';
223
+ form.find(selector).each(function() {
224
+ input = $(this);
225
+ // Collect non-blank inputs if nonBlank option is true, otherwise, collect blank inputs
226
+ if (nonBlank ? input.val() : !input.val()) {
227
+ inputs = inputs.add(input);
228
+ }
229
+ });
230
+ return inputs.length ? inputs : false;
231
+ },
232
+
233
+ // Helper function which checks for non-blank inputs in a form that match the specified CSS selector
234
+ nonBlankInputs: function(form, specifiedSelector) {
235
+ return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
236
+ },
237
+
238
+ // Helper function, needed to provide consistent behavior in IE
239
+ stopEverything: function(e) {
240
+ $(e.target).trigger('ujs:everythingStopped');
241
+ e.stopImmediatePropagation();
242
+ return false;
243
+ },
244
+
245
+ // find all the submit events directly bound to the form and
246
+ // manually invoke them. If anyone returns false then stop the loop
247
+ callFormSubmitBindings: function(form) {
248
+ var events = form.data('events'), continuePropagation = true;
249
+ if (events !== undefined && events['submit'] !== undefined) {
250
+ $.each(events['submit'], function(i, obj){
251
+ if (typeof obj.handler === 'function') return continuePropagation = obj.handler(obj.data);
252
+ });
253
+ }
254
+ return continuePropagation;
255
+ }
256
+ };
257
+
258
+ $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});
259
+
260
+ $(rails.linkClickSelector).live('click.rails', function(e) {
261
+ var link = $(this);
262
+ if (!rails.allowAction(link)) return rails.stopEverything(e);
263
+
264
+ if (link.data('remote') !== undefined) {
265
+ rails.handleRemote(link);
266
+ return false;
267
+ } else if (link.data('method')) {
268
+ rails.handleMethod(link);
269
+ return false;
270
+ }
271
+ });
272
+
273
+ $(rails.selectChangeSelector).live('change.rails', function(e) {
274
+ var link = $(this);
275
+ if (!rails.allowAction(link)) return rails.stopEverything(e);
276
+
277
+ rails.handleRemote(link);
278
+ return false;
279
+ });
280
+
281
+ $(rails.formSubmitSelector).live('submit.rails', function(e) {
282
+ var form = $(this),
283
+ remote = form.data('remote') !== undefined,
284
+ blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector),
285
+ nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);
286
+
287
+ if (!rails.allowAction(form)) return rails.stopEverything(e);
288
+
289
+ // skip other logic when required values are missing or file upload is present
290
+ if (blankRequiredInputs && form.attr("novalidate") == undefined && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
291
+ return rails.stopEverything(e);
292
+ }
293
+
294
+ if (remote) {
295
+ if (nonBlankFileInputs) {
296
+ return rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);
297
+ }
298
+
299
+ // If browser does not support submit bubbling, then this live-binding will be called before direct
300
+ // bindings. Therefore, we should directly call any direct bindings before remotely submitting form.
301
+ if (!$.support.submitBubbles && rails.callFormSubmitBindings(form) === false) return rails.stopEverything(e);
302
+
303
+ rails.handleRemote(form);
304
+ return false;
305
+ } else {
306
+ // slight timeout so that the submit button gets properly serialized
307
+ setTimeout(function(){ rails.disableFormElements(form); }, 13);
308
+ }
309
+ });
310
+
311
+ $(rails.formInputClickSelector).live('click.rails', function(event) {
312
+ var button = $(this);
313
+
314
+ if (!rails.allowAction(button)) return rails.stopEverything(event);
315
+
316
+ // register the pressed submit button
317
+ var name = button.attr('name'),
318
+ data = name ? {name:name, value:button.val()} : null;
319
+
320
+ button.closest('form').data('ujs:submit-button', data);
321
+ });
322
+
323
+ $(rails.formSubmitSelector).live('ajax:beforeSend.rails', function(event) {
324
+ if (this == event.target) rails.disableFormElements($(this));
325
+ });
326
+
327
+ $(rails.formSubmitSelector).live('ajax:complete.rails', function(event) {
328
+ if (this == event.target) rails.enableFormElements($(this));
329
+ });
330
+
331
+ })( jQuery );
@@ -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 @@
1
+ /* Aimbulance */