sunrise-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. data/README.rdoc +46 -0
  2. data/Rakefile +44 -0
  3. data/app/controllers/manage/assets_controller.rb +70 -0
  4. data/app/controllers/manage/base_controller.rb +24 -0
  5. data/app/controllers/manage/pages_controller.rb +37 -0
  6. data/app/controllers/manage/settings_controller.rb +24 -0
  7. data/app/controllers/manage/structures_controller.rb +45 -0
  8. data/app/controllers/manage/users_controller.rb +78 -0
  9. data/app/controllers/pages_controller.rb +22 -0
  10. data/app/views/layouts/manage.html.erb +40 -0
  11. data/app/views/manage/assets/_collection.html.erb +32 -0
  12. data/app/views/manage/assets/_picture.html.erb +10 -0
  13. data/app/views/manage/assets/_swfscript.html.erb +51 -0
  14. data/app/views/manage/headers/_form.html.erb +14 -0
  15. data/app/views/manage/pages/_form.html.erb +11 -0
  16. data/app/views/manage/pages/edit.html.erb +6 -0
  17. data/app/views/manage/pages/new.html.erb +6 -0
  18. data/app/views/manage/settings/_form.html.erb +22 -0
  19. data/app/views/manage/settings/index.html.erb +14 -0
  20. data/app/views/manage/shared/_head.html.erb +41 -0
  21. data/app/views/manage/shared/_locale.html.erb +8 -0
  22. data/app/views/manage/shared/_notice.html.erb +7 -0
  23. data/app/views/manage/shared/_panel.html.erb +34 -0
  24. data/app/views/manage/structures/_form.html.erb +28 -0
  25. data/app/views/manage/structures/_structure.html.erb +34 -0
  26. data/app/views/manage/structures/edit.html.erb +6 -0
  27. data/app/views/manage/structures/index.html.erb +51 -0
  28. data/app/views/manage/structures/new.html.erb +6 -0
  29. data/app/views/manage/users/_form.html.erb +15 -0
  30. data/app/views/manage/users/_model_filter.html.erb +33 -0
  31. data/app/views/manage/users/_user.html.erb +55 -0
  32. data/app/views/manage/users/edit.html.erb +6 -0
  33. data/app/views/manage/users/index.html.erb +36 -0
  34. data/app/views/manage/users/new.html.erb +6 -0
  35. data/app/views/manage/users/show.html.erb +19 -0
  36. data/config/locales/defaults/en.yml +149 -0
  37. data/config/locales/defaults/pluralize.rb +6 -0
  38. data/config/locales/defaults/ru.yml +170 -0
  39. data/config/locales/defaults/uk.yml +238 -0
  40. data/config/locales/devise.en.yml +39 -0
  41. data/config/locales/devise.ru.yml +41 -0
  42. data/config/locales/devise.uk.yml +41 -0
  43. data/config/locales/manage/en.yml +248 -0
  44. data/config/locales/manage/ru.yml +248 -0
  45. data/config/locales/manage/uk.yml +248 -0
  46. data/config/routes.rb +24 -0
  47. data/lib/generators/sunrise/USAGE +7 -0
  48. data/lib/generators/sunrise/install_generator.rb +120 -0
  49. data/lib/generators/sunrise/templates/config/application.yml +4 -0
  50. data/lib/generators/sunrise/templates/config/database.yml +34 -0
  51. data/lib/generators/sunrise/templates/config/logrotate-config +9 -0
  52. data/lib/generators/sunrise/templates/config/nginx-config-passenger +51 -0
  53. data/lib/generators/sunrise/templates/config/seeds.rb +25 -0
  54. data/lib/generators/sunrise/templates/config/sunrise.rb +7 -0
  55. data/lib/generators/sunrise/templates/helpers/manage/assets_helper.rb +16 -0
  56. data/lib/generators/sunrise/templates/helpers/manage/base_helper.rb +81 -0
  57. data/lib/generators/sunrise/templates/helpers/manage/pages_helper.rb +2 -0
  58. data/lib/generators/sunrise/templates/helpers/manage/settings_helper.rb +2 -0
  59. data/lib/generators/sunrise/templates/helpers/manage/structures_helper.rb +12 -0
  60. data/lib/generators/sunrise/templates/helpers/manage/users_helper.rb +6 -0
  61. data/lib/generators/sunrise/templates/images/manage/add_post_bot.gif +0 -0
  62. data/lib/generators/sunrise/templates/images/manage/add_post_top.gif +0 -0
  63. data/lib/generators/sunrise/templates/images/manage/add_white_bot.gif +0 -0
  64. data/lib/generators/sunrise/templates/images/manage/add_white_top.gif +0 -0
  65. data/lib/generators/sunrise/templates/images/manage/arrow.png +0 -0
  66. data/lib/generators/sunrise/templates/images/manage/back_but_lc.gif +0 -0
  67. data/lib/generators/sunrise/templates/images/manage/back_but_rc.gif +0 -0
  68. data/lib/generators/sunrise/templates/images/manage/bot_corn.gif +0 -0
  69. data/lib/generators/sunrise/templates/images/manage/bot_duo_corn.gif +0 -0
  70. data/lib/generators/sunrise/templates/images/manage/but_bg.png +0 -0
  71. data/lib/generators/sunrise/templates/images/manage/but_block_lc.gif +0 -0
  72. data/lib/generators/sunrise/templates/images/manage/but_block_rc.gif +0 -0
  73. data/lib/generators/sunrise/templates/images/manage/but_freze_lc.gif +0 -0
  74. data/lib/generators/sunrise/templates/images/manage/but_freze_rc.gif +0 -0
  75. data/lib/generators/sunrise/templates/images/manage/but_gr.gif +0 -0
  76. data/lib/generators/sunrise/templates/images/manage/but_gr_l.gif +0 -0
  77. data/lib/generators/sunrise/templates/images/manage/but_gr_r.gif +0 -0
  78. data/lib/generators/sunrise/templates/images/manage/but_search.gif +0 -0
  79. data/lib/generators/sunrise/templates/images/manage/but_unfreze_lc.gif +0 -0
  80. data/lib/generators/sunrise/templates/images/manage/but_unfreze_rc.gif +0 -0
  81. data/lib/generators/sunrise/templates/images/manage/button_add_foto.gif +0 -0
  82. data/lib/generators/sunrise/templates/images/manage/button_add_foto_ru.gif +0 -0
  83. data/lib/generators/sunrise/templates/images/manage/button_add_foto_ua.gif +0 -0
  84. data/lib/generators/sunrise/templates/images/manage/button_add_foto_uk.gif +0 -0
  85. data/lib/generators/sunrise/templates/images/manage/cancelbutton.gif +0 -0
  86. data/lib/generators/sunrise/templates/images/manage/dark_arr.gif +0 -0
  87. data/lib/generators/sunrise/templates/images/manage/dark_arr_left.gif +0 -0
  88. data/lib/generators/sunrise/templates/images/manage/dark_cross_ico.gif +0 -0
  89. data/lib/generators/sunrise/templates/images/manage/dot.gif +0 -0
  90. data/lib/generators/sunrise/templates/images/manage/duo_bg.gif +0 -0
  91. data/lib/generators/sunrise/templates/images/manage/duo_bg_small.gif +0 -0
  92. data/lib/generators/sunrise/templates/images/manage/duo_bg_small_blocked.gif +0 -0
  93. data/lib/generators/sunrise/templates/images/manage/duo_bg_small_frozed.gif +0 -0
  94. data/lib/generators/sunrise/templates/images/manage/duo_bg_small_notact.gif +0 -0
  95. data/lib/generators/sunrise/templates/images/manage/duo_bot_small.gif +0 -0
  96. data/lib/generators/sunrise/templates/images/manage/duo_bot_small_blocked.gif +0 -0
  97. data/lib/generators/sunrise/templates/images/manage/duo_bot_small_frozed.gif +0 -0
  98. data/lib/generators/sunrise/templates/images/manage/duo_bot_small_notact.gif +0 -0
  99. data/lib/generators/sunrise/templates/images/manage/duo_top_small.gif +0 -0
  100. data/lib/generators/sunrise/templates/images/manage/duo_top_small_blocked.gif +0 -0
  101. data/lib/generators/sunrise/templates/images/manage/duo_top_small_frozed.gif +0 -0
  102. data/lib/generators/sunrise/templates/images/manage/duo_top_small_notact.gif +0 -0
  103. data/lib/generators/sunrise/templates/images/manage/edit_white_top.gif +0 -0
  104. data/lib/generators/sunrise/templates/images/manage/empty.gif +0 -0
  105. data/lib/generators/sunrise/templates/images/manage/filter_bot_bg.gif +0 -0
  106. data/lib/generators/sunrise/templates/images/manage/filter_top_bg.gif +0 -0
  107. data/lib/generators/sunrise/templates/images/manage/flag_en.gif +0 -0
  108. data/lib/generators/sunrise/templates/images/manage/flag_en_nonact.gif +0 -0
  109. data/lib/generators/sunrise/templates/images/manage/flag_ru.gif +0 -0
  110. data/lib/generators/sunrise/templates/images/manage/flag_ru_nonact.gif +0 -0
  111. data/lib/generators/sunrise/templates/images/manage/flag_ua.gif +0 -0
  112. data/lib/generators/sunrise/templates/images/manage/flag_ua_nonact.gif +0 -0
  113. data/lib/generators/sunrise/templates/images/manage/foto.jpg +0 -0
  114. data/lib/generators/sunrise/templates/images/manage/ico_add.gif +0 -0
  115. data/lib/generators/sunrise/templates/images/manage/ico_del.gif +0 -0
  116. data/lib/generators/sunrise/templates/images/manage/ico_down.gif +0 -0
  117. data/lib/generators/sunrise/templates/images/manage/ico_edit.gif +0 -0
  118. data/lib/generators/sunrise/templates/images/manage/ico_settings.gif +0 -0
  119. data/lib/generators/sunrise/templates/images/manage/ico_up.gif +0 -0
  120. data/lib/generators/sunrise/templates/images/manage/input_bg.gif +0 -0
  121. data/lib/generators/sunrise/templates/images/manage/l_but_corn.gif +0 -0
  122. data/lib/generators/sunrise/templates/images/manage/minimise_but.gif +0 -0
  123. data/lib/generators/sunrise/templates/images/manage/mp3.png +0 -0
  124. data/lib/generators/sunrise/templates/images/manage/page_arr_hover.png +0 -0
  125. data/lib/generators/sunrise/templates/images/manage/page_next_arr.gif +0 -0
  126. data/lib/generators/sunrise/templates/images/manage/page_num_hover.gif +0 -0
  127. data/lib/generators/sunrise/templates/images/manage/page_prev_arr.gif +0 -0
  128. data/lib/generators/sunrise/templates/images/manage/panel/l_but_corn.gif +0 -0
  129. data/lib/generators/sunrise/templates/images/manage/panel/maximise_but.gif +0 -0
  130. data/lib/generators/sunrise/templates/images/manage/panel/r_but_corn.gif +0 -0
  131. data/lib/generators/sunrise/templates/images/manage/panel/top_menu_arr.gif +0 -0
  132. data/lib/generators/sunrise/templates/images/manage/panel/user_pic.gif +0 -0
  133. data/lib/generators/sunrise/templates/images/manage/preloader.gif +0 -0
  134. data/lib/generators/sunrise/templates/images/manage/r_but_corn.gif +0 -0
  135. data/lib/generators/sunrise/templates/images/manage/select_bg.gif +0 -0
  136. data/lib/generators/sunrise/templates/images/manage/select_corn.gif +0 -0
  137. data/lib/generators/sunrise/templates/images/manage/struct_corn_lg.gif +0 -0
  138. data/lib/generators/sunrise/templates/images/manage/struct_corn_llg.gif +0 -0
  139. data/lib/generators/sunrise/templates/images/manage/struct_corn_lw.gif +0 -0
  140. data/lib/generators/sunrise/templates/images/manage/struct_corn_rg.gif +0 -0
  141. data/lib/generators/sunrise/templates/images/manage/struct_corn_rlg.gif +0 -0
  142. data/lib/generators/sunrise/templates/images/manage/struct_corn_rw.gif +0 -0
  143. data/lib/generators/sunrise/templates/images/manage/tab_gl.gif +0 -0
  144. data/lib/generators/sunrise/templates/images/manage/tab_gr.gif +0 -0
  145. data/lib/generators/sunrise/templates/images/manage/tab_wl.gif +0 -0
  146. data/lib/generators/sunrise/templates/images/manage/tab_wr.gif +0 -0
  147. data/lib/generators/sunrise/templates/images/manage/top_corn.gif +0 -0
  148. data/lib/generators/sunrise/templates/images/manage/top_duo_corn.gif +0 -0
  149. data/lib/generators/sunrise/templates/images/manage/top_menu_arr.gif +0 -0
  150. data/lib/generators/sunrise/templates/images/manage/transp_cross.png +0 -0
  151. data/lib/generators/sunrise/templates/images/manage/upload_progress.gif +0 -0
  152. data/lib/generators/sunrise/templates/images/manage/user_act_lc.gif +0 -0
  153. data/lib/generators/sunrise/templates/images/manage/user_act_rc.gif +0 -0
  154. data/lib/generators/sunrise/templates/images/manage/user_ico.gif +0 -0
  155. data/lib/generators/sunrise/templates/images/manage/user_pic.gif +0 -0
  156. data/lib/generators/sunrise/templates/images/manage/user_pic_small.gif +0 -0
  157. data/lib/generators/sunrise/templates/images/manage/user_pic_thumb.gif +0 -0
  158. data/lib/generators/sunrise/templates/javascripts/datepicker/jquery-ui-i18n.js +1176 -0
  159. data/lib/generators/sunrise/templates/javascripts/datepicker/jquery.ui.datepicker-ru.js +37 -0
  160. data/lib/generators/sunrise/templates/javascripts/datepicker/jquery.ui.datepicker-uk.js +37 -0
  161. data/lib/generators/sunrise/templates/javascripts/jquery-ui-timepicker-addon.js +911 -0
  162. data/lib/generators/sunrise/templates/javascripts/jquery.cookie.js +97 -0
  163. data/lib/generators/sunrise/templates/javascripts/jquery.fancybox-1.3.4.pack.js +46 -0
  164. data/lib/generators/sunrise/templates/javascripts/jquery.tmpl.min.js +10 -0
  165. data/lib/generators/sunrise/templates/javascripts/manage.js +290 -0
  166. data/lib/generators/sunrise/templates/javascripts/preloader.js +47 -0
  167. data/lib/generators/sunrise/templates/javascripts/swfupload/fileprogress.js +114 -0
  168. data/lib/generators/sunrise/templates/javascripts/swfupload/handlers.js +164 -0
  169. data/lib/generators/sunrise/templates/javascripts/swfupload/swfupload.js +1134 -0
  170. data/lib/generators/sunrise/templates/javascripts/swfupload/swfupload.queue.js +98 -0
  171. data/lib/generators/sunrise/templates/javascripts/swfupload/swfupload.swf +0 -0
  172. data/lib/generators/sunrise/templates/migrate/create_assets.rb +28 -0
  173. data/lib/generators/sunrise/templates/migrate/create_headers.rb +20 -0
  174. data/lib/generators/sunrise/templates/migrate/create_pages.rb +17 -0
  175. data/lib/generators/sunrise/templates/migrate/create_roles.rb +16 -0
  176. data/lib/generators/sunrise/templates/migrate/create_structures.rb +27 -0
  177. data/lib/generators/sunrise/templates/migrate/create_users.rb +29 -0
  178. data/lib/generators/sunrise/templates/models/defaults/ability.rb +38 -0
  179. data/lib/generators/sunrise/templates/models/defaults/asset.rb +7 -0
  180. data/lib/generators/sunrise/templates/models/defaults/attachment_file.rb +33 -0
  181. data/lib/generators/sunrise/templates/models/defaults/avatar.rb +36 -0
  182. data/lib/generators/sunrise/templates/models/defaults/header.rb +5 -0
  183. data/lib/generators/sunrise/templates/models/defaults/page.rb +5 -0
  184. data/lib/generators/sunrise/templates/models/defaults/picture.rb +34 -0
  185. data/lib/generators/sunrise/templates/models/defaults/position_type.rb +7 -0
  186. data/lib/generators/sunrise/templates/models/defaults/role.rb +20 -0
  187. data/lib/generators/sunrise/templates/models/defaults/role_type.rb +8 -0
  188. data/lib/generators/sunrise/templates/models/defaults/structure.rb +11 -0
  189. data/lib/generators/sunrise/templates/models/defaults/structure_type.rb +9 -0
  190. data/lib/generators/sunrise/templates/models/defaults/user.rb +51 -0
  191. data/lib/generators/sunrise/templates/stylesheets/application.css +1 -0
  192. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/blank.gif +0 -0
  193. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_close.png +0 -0
  194. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_loading.png +0 -0
  195. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_nav_left.png +0 -0
  196. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_nav_right.png +0 -0
  197. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_e.png +0 -0
  198. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_n.png +0 -0
  199. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_ne.png +0 -0
  200. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_nw.png +0 -0
  201. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_s.png +0 -0
  202. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_se.png +0 -0
  203. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_sw.png +0 -0
  204. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_shadow_w.png +0 -0
  205. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_title_left.png +0 -0
  206. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_title_main.png +0 -0
  207. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_title_over.png +0 -0
  208. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancy_title_right.png +0 -0
  209. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancybox-x.png +0 -0
  210. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancybox-y.png +0 -0
  211. data/lib/generators/sunrise/templates/stylesheets/fancybox/images/fancybox.png +0 -0
  212. data/lib/generators/sunrise/templates/stylesheets/fancybox/jquery.fancybox-1.3.4.css +359 -0
  213. data/lib/generators/sunrise/templates/stylesheets/manage/ie.css +16 -0
  214. data/lib/generators/sunrise/templates/stylesheets/manage/main.css +1074 -0
  215. data/lib/generators/sunrise/templates/stylesheets/manage/panel.css +126 -0
  216. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  217. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  218. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  219. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  220. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  221. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  222. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  223. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  224. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  225. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  226. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  227. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  228. data/lib/generators/sunrise/templates/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  229. data/lib/generators/sunrise/templates/stylesheets/smoothness/jquery-ui-1.8.6.custom.css +572 -0
  230. data/lib/generators/sunrise/templates/sweepers/page_sweeper.rb +22 -0
  231. data/lib/generators/sunrise/templates/sweepers/structure_sweeper.rb +29 -0
  232. data/lib/generators/sunrise/templates/sweepers/user_sweeper.rb +17 -0
  233. data/lib/generators/sunrise/templates/views/layouts/application.html.erb +37 -0
  234. data/lib/generators/sunrise/templates/views/pages/show.html.erb +2 -0
  235. data/lib/generators/sunrise/templates/views/shared/_notice.html.erb +17 -0
  236. data/lib/sunrise/controllers/head_options.rb +40 -0
  237. data/lib/sunrise/core.rb +80 -0
  238. data/lib/sunrise/core_ext/array.rb +22 -0
  239. data/lib/sunrise/core_ext/i18n.rb +21 -0
  240. data/lib/sunrise/core_ext/string.rb +28 -0
  241. data/lib/sunrise/core_ext.rb +3 -0
  242. data/lib/sunrise/core_plugins.rb +32 -0
  243. data/lib/sunrise/engine.rb +45 -0
  244. data/lib/sunrise/model_filter.rb +158 -0
  245. data/lib/sunrise/models/asset.rb +102 -0
  246. data/lib/sunrise/models/header.rb +34 -0
  247. data/lib/sunrise/models/page.rb +27 -0
  248. data/lib/sunrise/models/position_type.rb +15 -0
  249. data/lib/sunrise/models/role.rb +28 -0
  250. data/lib/sunrise/models/role_type.rb +15 -0
  251. data/lib/sunrise/models/structure.rb +43 -0
  252. data/lib/sunrise/models/structure_type.rb +15 -0
  253. data/lib/sunrise/models/user.rb +124 -0
  254. data/lib/sunrise/plugin.rb +46 -0
  255. data/lib/sunrise/plugins.rb +56 -0
  256. data/lib/sunrise/system_settings.rb +65 -0
  257. data/lib/sunrise/utils/accessible_attributes.rb +32 -0
  258. data/lib/sunrise/utils/header.rb +29 -0
  259. data/lib/sunrise/utils/i18n_backend.rb +87 -0
  260. data/lib/sunrise/utils/mysql.rb +105 -0
  261. data/lib/sunrise/utils/settingslogic.rb +164 -0
  262. data/lib/sunrise/utils/transliteration.rb +72 -0
  263. data/lib/sunrise/version.rb +3 -0
  264. data/lib/sunrise/views/form_builder.rb +44 -0
  265. data/lib/sunrise/views/helpers.rb +190 -0
  266. data/lib/sunrise/views/inputs/date_time_input.rb +46 -0
  267. data/lib/sunrise-core.rb +2 -0
  268. metadata +492 -0
@@ -0,0 +1,248 @@
1
+ uk:
2
+ activerecord:
3
+ attributes:
4
+ user:
5
+ name: "Ім'я"
6
+ email: "Email"
7
+ password: "Пароль"
8
+ password_confirmation: "Підтвердження пароля"
9
+ avatar: "Аватарки"
10
+ birthday: "Дата народження"
11
+ city_name: "Місто"
12
+ about: "Про себе"
13
+ remember_me: "Запам'ятати мене"
14
+
15
+ structure:
16
+ title: "Назва"
17
+ title_ru: "Назва (рос.)"
18
+ title_en: "Назва (eng.)"
19
+ parent_id: "Головна категорія"
20
+ is_visible: "Відображати?"
21
+ kind: "Тип сторінки"
22
+ redirect_url: "Перенаправлення (URL)"
23
+ position: "Позиція"
24
+
25
+ header:
26
+ title: "Заголовок сторінки"
27
+ title_ru: "Заголовок сторінки (рос.)"
28
+ title_en: "Заголовок сторінки (eng.)"
29
+ keywords: "Ключові слова"
30
+ keywords_ru: "Ключові слова (рос.)"
31
+ keywords_en: "Ключові слова (eng.)"
32
+ description: "Опис сторінки"
33
+ description_ru: "Опис сторінки (рос.)"
34
+ description_en: "Опис сторінки (eng.)"
35
+
36
+ post:
37
+ title: "Назва"
38
+ title_ru: "Назва (рос.)"
39
+ title_en: "Назва (eng.)"
40
+ content: "Зміст"
41
+ content_ru: "Зміст (рос.)"
42
+ content_en: "Зміст (eng.)"
43
+ created_at: "Дата / Час"
44
+ picture: "Зображення"
45
+
46
+ page:
47
+ title: "Назва"
48
+ title_ru: "Назва (рос.)"
49
+ title_en: "Назва (eng.)"
50
+ content: "Зміст"
51
+ content_ru: "Зміст (рос.)"
52
+ content_en: "Зміст (eng.)"
53
+
54
+ tag:
55
+ name: "Назва"
56
+
57
+ feedback:
58
+ name: "Ім'я"
59
+ email: "Email"
60
+ kind: "Категорія"
61
+ user_id: "Користувач"
62
+ remote_ip: "IP адреса"
63
+ user_agent: "Версія браузера"
64
+ message: "Повідомлення"
65
+
66
+ manage:
67
+ title: "Система <br /> управління"
68
+ go_site: "Перейти на сайт"
69
+ exit: "Вихід"
70
+ page_title: "Управління сайтом"
71
+ site_edit: "Система управління"
72
+ root: "Перейти на сайт"
73
+ users: "Користувачі"
74
+ label_settings: "Установки"
75
+ structure: "Структура"
76
+ new_structure: "Створити розділ"
77
+ user_actions: "Дії"
78
+ posts: "Блог"
79
+ new_post: "Додати пост"
80
+ confirm_delete: "Ви дійсно хочете видалити запис?"
81
+ prev: "Попередня"
82
+ next: "Наступна"
83
+ max_size: "Макс р."
84
+ keywords: "Ключові слова"
85
+ edit: "Редагувати"
86
+ delete: "Видалити"
87
+ add: "Додати"
88
+ create: "Створити"
89
+ cancel: "Скасувати"
90
+ update: "Оновити"
91
+ sort: "Сортувати"
92
+ pictures: "Фотографії"
93
+ download: "Завантажити"
94
+ close: "Закрити"
95
+
96
+ plugins:
97
+ structures: "Структура"
98
+ users: "Користувачі"
99
+ system_messages: "Системні повідомлення"
100
+ settings: "Налаштування"
101
+ other: "Інші"
102
+ posts: "Новини"
103
+ categories: "Категорії"
104
+ statisticts: "Статистика"
105
+ videos: "Конкурсне відео"
106
+ questions: "Питання та відповіді"
107
+ cocktails: "Shake в банку"
108
+ tracks: "Музика"
109
+ wallpapers: "Шпалери"
110
+ reviews: "голоси"
111
+
112
+ settings:
113
+ title: "Налаштування"
114
+ mailer: "Пошта"
115
+ route: "Домен"
116
+ contacts: "Контакти"
117
+
118
+ locale:
119
+ ru: "російська"
120
+ en: "англійська"
121
+ uk: "український"
122
+
123
+ model_filter:
124
+ title: "Фільтр даних"
125
+ filter: "Фільтр"
126
+ search: "Пошук"
127
+ clear: "Очистити"
128
+
129
+ position:
130
+ down: "Опустити вниз"
131
+ up: "Підняти вгору"
132
+
133
+ buttons:
134
+ create_structure: "Створити розділ"
135
+
136
+ user:
137
+ actions: "дії"
138
+ events:
139
+ register: "Реєстрація"
140
+ suspend: "Заморозити"
141
+ delete: "Видалити"
142
+ unsuspend: "Розморозити"
143
+ activate: "Активувати"
144
+ roles: "Ролі"
145
+
146
+ users:
147
+ activated_at: "активація"
148
+ last_login_ip: "ip"
149
+ email: "email"
150
+ category: "категорія"
151
+ name: "Ім'я"
152
+
153
+ sort:
154
+ _: "-"
155
+ created_at_desc: "за датою за спаданням"
156
+ created_at_asc: "за датою за зростанням"
157
+ name_desc: "за за іменем за спаданням"
158
+ name_asc: "на ім'я за зростанням"
159
+
160
+ structure:
161
+ kind:
162
+ page: "Текстова сторінка"
163
+ posts: "Блоги"
164
+ main: "Головна сторінка"
165
+ promo: "Конкурс"
166
+ lessons: "Приватні уроки"
167
+ faq: "Питання та відповіді"
168
+ shake: "Shake в банку"
169
+ downloads: "Downloads"
170
+ redirect: "Redirect"
171
+ tracks: "Музика"
172
+ wallpapers: "Шпалери"
173
+ group: "Група странічок"
174
+
175
+ position:
176
+ default: "За замовчуванням"
177
+ menu: "Головне меню"
178
+ bottom: "Внизу"
179
+
180
+ role:
181
+ kind:
182
+ guest: "Гість"
183
+ default: "Клієнт"
184
+ moderator: "Модератор"
185
+ admin: "Aдміністратор"
186
+ redactor: "Редактор"
187
+
188
+ tags:
189
+ sort:
190
+ _: "-"
191
+ created_at_desc: "за датою за спаданням"
192
+ created_at_asc: "за датою за зростанням"
193
+ name_desc: "за назвою за спаданням"
194
+ name_asc: "за назвою за зростанням"
195
+
196
+ posts:
197
+ sort:
198
+ _: "-"
199
+ created_at_desc: "за датою за спаданням"
200
+ created_at_asc: "за датою за зростанням"
201
+ title_desc: "за назвою за спаданням"
202
+ title_asc: "за назвою за зростанням"
203
+
204
+ sort_columns:
205
+ _: "-"
206
+ created_at_desc: "за датою за спаданням"
207
+ created_at_asc: "за датою за зростанням"
208
+ title_desc: "за назвою за спаданням"
209
+ title_asc: "за назвою за зростанням"
210
+ name_desc: "за назвою за спаданням"
211
+ name_asc: "за назвою за зростанням"
212
+ position_desc: "за позицією за спаданням"
213
+ position_asc: "за позицією за зростанням"
214
+ sort_order_desc: "по сортуванню за спаданням"
215
+ sort_order_asc: "по сортуванню за зростанням"
216
+
217
+ flash:
218
+ manage:
219
+ actions:
220
+ create:
221
+ success: "Запис успішно створено"
222
+ failure: "Виникли помилки при збереженні даних"
223
+ update:
224
+ success: "Запис успішно оновлено"
225
+ failure: "Виникли помилки при оновленні даних"
226
+ destroy:
227
+ success: "Запис успішно видалено"
228
+ failure: "Виникли помилки при видаленні даних"
229
+
230
+ users:
231
+ create:
232
+ success: "Користувач успішно створений"
233
+ failure: "Виникли помилки при створенні користувача"
234
+ update:
235
+ success: "Дані користувача успішно оновлено"
236
+
237
+ settings:
238
+ create:
239
+ success: "Параметри успішно оновлені"
240
+ failure: "Виникли помилки при збереженні даних"
241
+
242
+ pages:
243
+ create:
244
+ success: "Сторінка успішно збережено"
245
+ failure: "Виникли помилки при збереженні даних"
246
+ update:
247
+ success: "Сторінка успішно збережено"
248
+ failure: "Виникли помилки при збереженні даних"
data/config/routes.rb ADDED
@@ -0,0 +1,24 @@
1
+ Rails.application.routes.draw do
2
+ # Administration System
3
+ namespace :manage do
4
+ root :to => "structures#index"
5
+
6
+ resources :users do
7
+ member do
8
+ post :activate, :suspend, :register, :delete, :unsuspend
9
+ end
10
+ end
11
+
12
+ resources :structures do
13
+ get :move, :on => :member
14
+
15
+ resource :page
16
+ end
17
+
18
+ resources :assets, :only => [:create, :destroy] do
19
+ post :sort, :on => :collection
20
+ end
21
+
22
+ resources :settings
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ Usage:
2
+ rails generate sunrise:install
3
+
4
+ Options:
5
+
6
+ Example:
7
+ rails g sunrise:install
@@ -0,0 +1,120 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ module Sunrise
5
+ module Generators
6
+ class InstallGenerator < Rails::Generators::Base
7
+ include Rails::Generators::Migration
8
+
9
+ desc "Creates a Sunrise initializer and copy general files to your application."
10
+
11
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
12
+ class_option :migrations, :type => :boolean, :default => true, :description => "Generate migrations files"
13
+
14
+ # copy images
15
+ def copy_images
16
+ directory "images/manage", "public/images/manage"
17
+ end
18
+
19
+ # copy javascripts
20
+ def copy_javascripts
21
+ directory "javascripts", "public/javascripts"
22
+ end
23
+
24
+ # copy stylesheets
25
+ def copy_stylesheets
26
+ directory "stylesheets", "public/stylesheets"
27
+ end
28
+
29
+ # copy views
30
+ def copy_views
31
+ directory "views", "app/views"
32
+ end
33
+
34
+ def copy_configurations
35
+ copy_file('config/seeds.rb', 'db/seeds.rb')
36
+ copy_file('config/sunrise.rb', 'config/initializers/sunrise.rb')
37
+
38
+ template('config/application.yml', 'config/application.yml.sample')
39
+ template('config/database.yml', 'config/database.yml.sample')
40
+ template('config/logrotate-config', 'config/logrotate-config.sample')
41
+ template('config/nginx-config-passenger', 'config/nginx-config-passenger.sample')
42
+ end
43
+
44
+ def copy_helpers
45
+ directory('helpers', 'app/helpers')
46
+ end
47
+
48
+ # copy models
49
+ def copy_models
50
+ directory "models", "app/models"
51
+ end
52
+
53
+ def copy_sweepers
54
+ directory "sweepers", "app/sweepers"
55
+ end
56
+
57
+ def download_rails_js
58
+ say_status("fetching rails.js", "", :green)
59
+ get "https://github.com/rails/jquery-ujs/raw/master/src/rails.js", "public/javascripts/rails.js"
60
+ end
61
+
62
+ # Add devise routes
63
+ def add_routes
64
+ route "devise_for :users"
65
+ route "resources :pages, :only => [:show]"
66
+ end
67
+
68
+ # copy migration files
69
+ def create_migrations
70
+ if options.migrations
71
+ [:users, :roles, :structures, :pages, :assets, :headers].each do |item|
72
+ migration_template "migrate/create_#{item}.rb", File.join('db/migrate', "sunrise_create_#{item}.rb")
73
+ end
74
+ end
75
+ end
76
+
77
+ def self.next_migration_number(dirname)
78
+ if ActiveRecord::Base.timestamped_migrations
79
+ current_time.utc.strftime("%Y%m%d%H%M%S")
80
+ else
81
+ "%.3d" % (current_migration_number(dirname) + 1)
82
+ end
83
+ end
84
+
85
+ def self.current_time
86
+ @current_time ||= Time.now
87
+ @current_time += 1.minute
88
+ end
89
+
90
+ protected
91
+
92
+ def app_name
93
+ @app_name ||= defined_app_const_base? ? defined_app_name : File.basename(destination_root)
94
+ end
95
+
96
+ def defined_app_name
97
+ defined_app_const_base.underscore
98
+ end
99
+
100
+ def defined_app_const_base
101
+ Rails.respond_to?(:application) && defined?(Rails::Application) &&
102
+ Rails.application.is_a?(Rails::Application) && Rails.application.class.name.sub(/::Application$/, "")
103
+ end
104
+
105
+ alias :defined_app_const_base? :defined_app_const_base
106
+
107
+ def app_const_base
108
+ @app_const_base ||= defined_app_const_base || app_name.gsub(/\W/, '_').squeeze('_').camelize
109
+ end
110
+
111
+ def app_const
112
+ @app_const ||= "#{app_const_base}::Application"
113
+ end
114
+
115
+ def app_path
116
+ @app_path ||= Rails.root.to_s
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,4 @@
1
+ mailer:
2
+ subject_prefix: "[<%= app_name %>] "
3
+ from: "no-reply@aimbulance.com"
4
+ reply_to: "info@aimbulance.com"
@@ -0,0 +1,34 @@
1
+ # And be sure to use new-style password hashing:
2
+ # http://dev.mysql.com/doc/refman/5.0/en/old-client.html
3
+ development:
4
+ adapter: mysql2
5
+ encoding: utf8
6
+ reconnect: false
7
+ database: <%= app_name %>
8
+ pool: 5
9
+ username: root
10
+ password:
11
+ socket: /var/run/mysqld/mysqld.sock
12
+
13
+ # Warning: The database defined as "test" will be erased and
14
+ # re-generated from your development database when you run "rake".
15
+ # Do not set this db to the same as development or production.
16
+ test:
17
+ adapter: mysql2
18
+ encoding: utf8
19
+ reconnect: false
20
+ database: <%= app_name %>_test
21
+ pool: 5
22
+ username: root
23
+ password:
24
+ socket: /var/run/mysqld/mysqld.sock
25
+
26
+ production:
27
+ adapter: mysql2
28
+ encoding: utf8
29
+ reconnect: true
30
+ database: <%= app_name %>
31
+ pool: 5
32
+ username: root
33
+ password:
34
+ socket: /var/run/mysqld/mysqld.sock
@@ -0,0 +1,9 @@
1
+ <%= app_path %>/log/*.log {
2
+ copytruncate
3
+ daily
4
+ rotate 4
5
+ missingok
6
+ notifempty
7
+ compress
8
+ nodelaycompress
9
+ }
@@ -0,0 +1,51 @@
1
+ # You may add here your
2
+ # server {
3
+ # ...
4
+ # }
5
+ # statements for each of your virtual hosts
6
+
7
+
8
+ server {
9
+ listen 80;
10
+ server_name .<%= app_name %>.brainberry.com.ua;
11
+
12
+ server_tokens off;
13
+
14
+ gzip on;
15
+ gzip_proxied any;
16
+ gzip_min_length 1100;
17
+ gzip_buffers 12 4k;
18
+ gzip_types text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
19
+
20
+ client_max_body_size 200M;
21
+ client_body_buffer_size 128k;
22
+ client_header_timeout 60;
23
+ client_body_timeout 260;
24
+ send_timeout 260;
25
+ keepalive_timeout 60;
26
+
27
+ large_client_header_buffers 4 4k;
28
+ client_header_buffer_size 1k;
29
+
30
+ connection_pool_size 256;
31
+ ignore_invalid_headers on;
32
+ postpone_output 1460;
33
+ output_buffers 4 32k;
34
+ request_pool_size 4k;
35
+
36
+ passenger_enabled on;
37
+ rails_env production;
38
+ # rack_env production;
39
+
40
+ root <%= app_path %>/public;
41
+
42
+ location ~ /\.[^\/]+ {
43
+ return 404;
44
+ }
45
+
46
+ location ~* ^.+\.(jpg|jpeg|gif|png|css|js|swf|ico|mov|flv|fla|pdf|zip|rar|doc|xls)$
47
+ {
48
+ expires 12h;
49
+ add_header Cache-Control private;
50
+ }
51
+ }
@@ -0,0 +1,25 @@
1
+ def insert_user
2
+ User.truncate_table
3
+ Role.truncate_table
4
+ password = Devise.friendly_token
5
+
6
+ admin = User.new(:name=>'Administrator', :email=>'dev@aimbulance.com',
7
+ :password=>password, :password_confirmation=>password)
8
+ admin.login = 'admin' if admin.respond_to?(:login)
9
+ admin.roles.build(:role_type => RoleType.admin)
10
+ admin.skip_confirmation!
11
+ admin.save!
12
+
13
+ puts "Admin: #{admin.email}, #{admin.password}"
14
+ end
15
+
16
+ def insert_structures
17
+ Structure.truncate_table
18
+
19
+ main_page = Structure.create!(:title => "Главная страница", :slug => "main-page", :structure_type => StructureType.main, :parent => nil)
20
+ #Structure.create!(:title => "Трансляции", :slug => "broadcasts", :structure_type => StructureType.broadcasts, :parent => main_page)
21
+ #Structure.create!(:title => "Прямые репортажи", :slug => "posts", :structure_type => StructureType.posts, :parent => main_page)
22
+ end
23
+
24
+ insert_user
25
+ insert_structures
@@ -0,0 +1,7 @@
1
+ # Use this hook to configure sunrise
2
+ if Object.const_defined?("Sunrise")
3
+ Sunrise.setup do |config|
4
+ # Flash keys
5
+ #config.flash_keys = [ :success, :failure ]
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ module Manage::AssetsHelper
2
+
3
+ def manage_assets_path_with_session_information(klass = 'Asset', options = {})
4
+ options = { :format => :xml, :protocol => "http://" }.merge(options)
5
+ session_key = Rails.application.config.send(:session_options)[:key]
6
+
7
+ options[session_key] = Rack::Utils.escape(cookies[session_key])
8
+ options[:klass] = klass
9
+
10
+ if protect_against_forgery?
11
+ options[request_forgery_protection_token] = Rack::Utils.escape(form_authenticity_token)
12
+ end
13
+
14
+ manage_assets_url(options)
15
+ end
16
+ end
@@ -0,0 +1,81 @@
1
+ module Manage::BaseHelper
2
+ def content_manager?
3
+ user_signed_in? && current_user.admin?
4
+ end
5
+
6
+ def link_to_unless_current_span2(name, options = {}, html_options = {}, &block)
7
+ if current_page?(options)
8
+ if block_given?
9
+ block.arity <= 1 ? yield(name) : yield(name, options, html_options)
10
+ else
11
+ content_tag(:span, content_tag(:span, name), html_options)
12
+ end
13
+ else
14
+ link_to(name, options, html_options)
15
+ end
16
+ end
17
+
18
+ def options_for_ckeditor(options = {})
19
+ {:width=>700, :height=>400,
20
+ :swf_params=>{:assetable_type=>current_user.class.name, :assetable_id=>current_user.id}
21
+
22
+ }.update(options)
23
+ end
24
+
25
+ def white_block_form(options = {}, &block)
26
+ title = options[:title]
27
+
28
+ concat(content_tag(:div, {:class=>"edit-white-bl"}) do
29
+ concat(content_tag(:div, {:class=>"bot-bg"}) do
30
+ concat(content_tag(:div, title, :class=>"wh-title")) unless title.blank?
31
+ yield if block_given?
32
+ end)
33
+ end)
34
+ end
35
+
36
+ def link_to_sort(title, options = {})
37
+ options.symbolize_keys!
38
+
39
+ order_type = options[:order_type] || 'asc'
40
+ order_column = options[:name] || 'id'
41
+ class_name = options[:class] || nil
42
+
43
+ search_options = request.params[:search] || {}
44
+ search_options.update(:order_column => order_column, :order_type => order_type)
45
+
46
+ link_to(title, :search => search_options, :class => class_name)
47
+ end
48
+
49
+ def remove_child_link(name, f)
50
+ f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")
51
+ end
52
+
53
+ def add_child_link(name, f, method, options={})
54
+ options.symbolize_keys!
55
+
56
+ html_options = options.delete(:html) || {}
57
+ fields = new_child_fields(f, method, options)
58
+
59
+ html_options[:class] ||= "new"
60
+
61
+ content_tag(:div,
62
+ link_to_function(name, h("insert_fields(this, \"#{method}\", \"#{escape_javascript(fields)}\")"), html_options),
63
+ :class=>"add-bl")
64
+ end
65
+
66
+ def new_child_fields(form_builder, method, options = {})
67
+ options[:object] ||= form_builder.object.class.reflect_on_association(method).klass.new
68
+ options[:partial] ||= method.to_s.singularize
69
+ options[:form_builder_local] ||= :form
70
+
71
+ form_builder.fields_for(method, options[:object], :child_index => "new_#{method}") do |f|
72
+ render(:partial => options[:partial], :locals => { options[:form_builder_local] => f })
73
+ end
74
+ end
75
+
76
+ def cookie_content_tag(tag_name, options={}, &block)
77
+ key = options[:id]
78
+ options[:style] = "display:none;" if !cookies[key].blank? && cookies[key].to_i != 1
79
+ content_tag(tag_name, options, &block)
80
+ end
81
+ end
@@ -0,0 +1,2 @@
1
+ module Manage::PagesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Manage::SettingsHelper
2
+ end
@@ -0,0 +1,12 @@
1
+ module Manage::StructuresHelper
2
+
3
+ def edit_structure_record_path(structure)
4
+ case structure.structure_type
5
+ when StructureType.page then edit_manage_structure_page_path(:structure_id=>structure.id)
6
+ when StructureType.posts then manage_structure_posts_path(:structure_id => structure.id)
7
+ when StructureType.main then '#'
8
+ when StructureType.redirect then structure.slug
9
+ when StructureType.group then '#'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ module Manage::UsersHelper
2
+ def manage_user_avatar_tag(record, options={})
3
+ options.symbolize_keys!
4
+ record_asset_tag(record, :avatar, "manage/user_pic.gif", options.merge(:title => record.try(:name)))
5
+ end
6
+ end