freeberry 0.2.5

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 (298) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +118 -0
  3. data/Rakefile +53 -0
  4. data/app/controllers/manage/assets_controller.rb +60 -0
  5. data/app/controllers/manage/base_controller.rb +9 -0
  6. data/app/controllers/manage/pages_controller.rb +36 -0
  7. data/app/controllers/manage/posts_controller.rb +42 -0
  8. data/app/controllers/manage/settings_controller.rb +22 -0
  9. data/app/controllers/manage/structures_controller.rb +42 -0
  10. data/app/controllers/manage/users_controller.rb +79 -0
  11. data/config/locales/defaults/en.yml +149 -0
  12. data/config/locales/defaults/pluralize.rb +6 -0
  13. data/config/locales/defaults/ru.yml +170 -0
  14. data/config/locales/defaults/uk.yml +238 -0
  15. data/config/locales/devise.en.yml +39 -0
  16. data/config/locales/devise.ru.yml +41 -0
  17. data/config/locales/devise.uk.yml +41 -0
  18. data/config/locales/manage/en.yml +235 -0
  19. data/config/locales/manage/ru.yml +235 -0
  20. data/config/locales/manage/uk.yml +235 -0
  21. data/config/routes.rb +23 -0
  22. data/lib/freeberry.rb +36 -0
  23. data/lib/freeberry/accessible_attributes.rb +30 -0
  24. data/lib/freeberry/controllers/authorized_system.rb +77 -0
  25. data/lib/freeberry/controllers/head_options.rb +41 -0
  26. data/lib/freeberry/controllers/helper_tools.rb +171 -0
  27. data/lib/freeberry/core_ext.rb +3 -0
  28. data/lib/freeberry/core_ext/array.rb +22 -0
  29. data/lib/freeberry/core_ext/i18n.rb +21 -0
  30. data/lib/freeberry/core_ext/string.rb +28 -0
  31. data/lib/freeberry/header_tools.rb +30 -0
  32. data/lib/freeberry/model_filter.rb +151 -0
  33. data/lib/freeberry/models/asset.rb +110 -0
  34. data/lib/freeberry/models/comment.rb +49 -0
  35. data/lib/freeberry/models/header.rb +24 -0
  36. data/lib/freeberry/models/page.rb +27 -0
  37. data/lib/freeberry/models/position_type.rb +14 -0
  38. data/lib/freeberry/models/post.rb +44 -0
  39. data/lib/freeberry/models/role.rb +28 -0
  40. data/lib/freeberry/models/role_type.rb +15 -0
  41. data/lib/freeberry/models/structure.rb +39 -0
  42. data/lib/freeberry/models/structure_type.rb +15 -0
  43. data/lib/freeberry/models/user.rb +82 -0
  44. data/lib/freeberry/mysql_utils.rb +103 -0
  45. data/lib/freeberry/railtie.rb +34 -0
  46. data/lib/freeberry/settingslogic.rb +162 -0
  47. data/lib/freeberry/system_settings.rb +65 -0
  48. data/lib/freeberry/transliteration.rb +70 -0
  49. data/lib/freeberry/utils.rb +39 -0
  50. data/lib/freeberry/version.rb +11 -0
  51. data/lib/generators/freeberry/USAGE +5 -0
  52. data/lib/generators/freeberry/base/USAGE +7 -0
  53. data/lib/generators/freeberry/base/base_generator.rb +63 -0
  54. data/lib/generators/freeberry/base/templates/config/application.yml +4 -0
  55. data/lib/generators/freeberry/base/templates/config/authorization_rules.rb +51 -0
  56. data/lib/generators/freeberry/base/templates/config/database.yml +34 -0
  57. data/lib/generators/freeberry/base/templates/config/freeberry.rb +14 -0
  58. data/lib/generators/freeberry/base/templates/config/logrotate-config +9 -0
  59. data/lib/generators/freeberry/base/templates/config/nginx-config-passenger +51 -0
  60. data/lib/generators/freeberry/base/templates/config/seeds.rb +32 -0
  61. data/lib/generators/freeberry/base/templates/config/words +98569 -0
  62. data/lib/generators/freeberry/base/templates/helpers/manage/assets_helper.rb +18 -0
  63. data/lib/generators/freeberry/base/templates/helpers/manage/base_helper.rb +84 -0
  64. data/lib/generators/freeberry/base/templates/helpers/manage/pages_helper.rb +2 -0
  65. data/lib/generators/freeberry/base/templates/helpers/manage/posts_helper.rb +2 -0
  66. data/lib/generators/freeberry/base/templates/helpers/manage/settings_helper.rb +2 -0
  67. data/lib/generators/freeberry/base/templates/helpers/manage/structures_helper.rb +12 -0
  68. data/lib/generators/freeberry/base/templates/helpers/manage/users_helper.rb +16 -0
  69. data/lib/generators/freeberry/base/templates/images/manage/add_post_bot.gif +0 -0
  70. data/lib/generators/freeberry/base/templates/images/manage/add_post_top.gif +0 -0
  71. data/lib/generators/freeberry/base/templates/images/manage/add_white_bot.gif +0 -0
  72. data/lib/generators/freeberry/base/templates/images/manage/add_white_top.gif +0 -0
  73. data/lib/generators/freeberry/base/templates/images/manage/arrow.png +0 -0
  74. data/lib/generators/freeberry/base/templates/images/manage/back_but_lc.gif +0 -0
  75. data/lib/generators/freeberry/base/templates/images/manage/back_but_rc.gif +0 -0
  76. data/lib/generators/freeberry/base/templates/images/manage/bot_corn.gif +0 -0
  77. data/lib/generators/freeberry/base/templates/images/manage/bot_duo_corn.gif +0 -0
  78. data/lib/generators/freeberry/base/templates/images/manage/but_bg.png +0 -0
  79. data/lib/generators/freeberry/base/templates/images/manage/but_block_lc.gif +0 -0
  80. data/lib/generators/freeberry/base/templates/images/manage/but_block_rc.gif +0 -0
  81. data/lib/generators/freeberry/base/templates/images/manage/but_freze_lc.gif +0 -0
  82. data/lib/generators/freeberry/base/templates/images/manage/but_freze_rc.gif +0 -0
  83. data/lib/generators/freeberry/base/templates/images/manage/but_gr.gif +0 -0
  84. data/lib/generators/freeberry/base/templates/images/manage/but_gr_l.gif +0 -0
  85. data/lib/generators/freeberry/base/templates/images/manage/but_gr_r.gif +0 -0
  86. data/lib/generators/freeberry/base/templates/images/manage/but_search.gif +0 -0
  87. data/lib/generators/freeberry/base/templates/images/manage/but_unfreze_lc.gif +0 -0
  88. data/lib/generators/freeberry/base/templates/images/manage/but_unfreze_rc.gif +0 -0
  89. data/lib/generators/freeberry/base/templates/images/manage/button_add_foto.gif +0 -0
  90. data/lib/generators/freeberry/base/templates/images/manage/button_add_foto_ru.gif +0 -0
  91. data/lib/generators/freeberry/base/templates/images/manage/button_add_foto_ua.gif +0 -0
  92. data/lib/generators/freeberry/base/templates/images/manage/button_add_foto_uk.gif +0 -0
  93. data/lib/generators/freeberry/base/templates/images/manage/cancelbutton.gif +0 -0
  94. data/lib/generators/freeberry/base/templates/images/manage/dark_arr.gif +0 -0
  95. data/lib/generators/freeberry/base/templates/images/manage/dark_arr_left.gif +0 -0
  96. data/lib/generators/freeberry/base/templates/images/manage/dark_cross_ico.gif +0 -0
  97. data/lib/generators/freeberry/base/templates/images/manage/dot.gif +0 -0
  98. data/lib/generators/freeberry/base/templates/images/manage/duo_bg.gif +0 -0
  99. data/lib/generators/freeberry/base/templates/images/manage/duo_bg_small.gif +0 -0
  100. data/lib/generators/freeberry/base/templates/images/manage/duo_bg_small_blocked.gif +0 -0
  101. data/lib/generators/freeberry/base/templates/images/manage/duo_bg_small_frozed.gif +0 -0
  102. data/lib/generators/freeberry/base/templates/images/manage/duo_bg_small_notact.gif +0 -0
  103. data/lib/generators/freeberry/base/templates/images/manage/duo_bot_small.gif +0 -0
  104. data/lib/generators/freeberry/base/templates/images/manage/duo_bot_small_blocked.gif +0 -0
  105. data/lib/generators/freeberry/base/templates/images/manage/duo_bot_small_frozed.gif +0 -0
  106. data/lib/generators/freeberry/base/templates/images/manage/duo_bot_small_notact.gif +0 -0
  107. data/lib/generators/freeberry/base/templates/images/manage/duo_top_small.gif +0 -0
  108. data/lib/generators/freeberry/base/templates/images/manage/duo_top_small_blocked.gif +0 -0
  109. data/lib/generators/freeberry/base/templates/images/manage/duo_top_small_frozed.gif +0 -0
  110. data/lib/generators/freeberry/base/templates/images/manage/duo_top_small_notact.gif +0 -0
  111. data/lib/generators/freeberry/base/templates/images/manage/edit_white_top.gif +0 -0
  112. data/lib/generators/freeberry/base/templates/images/manage/empty.gif +0 -0
  113. data/lib/generators/freeberry/base/templates/images/manage/filter_bot_bg.gif +0 -0
  114. data/lib/generators/freeberry/base/templates/images/manage/filter_top_bg.gif +0 -0
  115. data/lib/generators/freeberry/base/templates/images/manage/flag_en.gif +0 -0
  116. data/lib/generators/freeberry/base/templates/images/manage/flag_en_nonact.gif +0 -0
  117. data/lib/generators/freeberry/base/templates/images/manage/flag_ru.gif +0 -0
  118. data/lib/generators/freeberry/base/templates/images/manage/flag_ru_nonact.gif +0 -0
  119. data/lib/generators/freeberry/base/templates/images/manage/flag_ua.gif +0 -0
  120. data/lib/generators/freeberry/base/templates/images/manage/flag_ua_nonact.gif +0 -0
  121. data/lib/generators/freeberry/base/templates/images/manage/foto.jpg +0 -0
  122. data/lib/generators/freeberry/base/templates/images/manage/ico_add.gif +0 -0
  123. data/lib/generators/freeberry/base/templates/images/manage/ico_del.gif +0 -0
  124. data/lib/generators/freeberry/base/templates/images/manage/ico_down.gif +0 -0
  125. data/lib/generators/freeberry/base/templates/images/manage/ico_edit.gif +0 -0
  126. data/lib/generators/freeberry/base/templates/images/manage/ico_settings.gif +0 -0
  127. data/lib/generators/freeberry/base/templates/images/manage/ico_up.gif +0 -0
  128. data/lib/generators/freeberry/base/templates/images/manage/input_bg.gif +0 -0
  129. data/lib/generators/freeberry/base/templates/images/manage/l_but_corn.gif +0 -0
  130. data/lib/generators/freeberry/base/templates/images/manage/minimise_but.gif +0 -0
  131. data/lib/generators/freeberry/base/templates/images/manage/mp3.png +0 -0
  132. data/lib/generators/freeberry/base/templates/images/manage/page_arr_hover.png +0 -0
  133. data/lib/generators/freeberry/base/templates/images/manage/page_next_arr.gif +0 -0
  134. data/lib/generators/freeberry/base/templates/images/manage/page_num_hover.gif +0 -0
  135. data/lib/generators/freeberry/base/templates/images/manage/page_prev_arr.gif +0 -0
  136. data/lib/generators/freeberry/base/templates/images/manage/panel/l_but_corn.gif +0 -0
  137. data/lib/generators/freeberry/base/templates/images/manage/panel/maximise_but.gif +0 -0
  138. data/lib/generators/freeberry/base/templates/images/manage/panel/r_but_corn.gif +0 -0
  139. data/lib/generators/freeberry/base/templates/images/manage/panel/top_menu_arr.gif +0 -0
  140. data/lib/generators/freeberry/base/templates/images/manage/panel/user_pic.gif +0 -0
  141. data/lib/generators/freeberry/base/templates/images/manage/preloader.gif +0 -0
  142. data/lib/generators/freeberry/base/templates/images/manage/r_but_corn.gif +0 -0
  143. data/lib/generators/freeberry/base/templates/images/manage/select_bg.gif +0 -0
  144. data/lib/generators/freeberry/base/templates/images/manage/select_corn.gif +0 -0
  145. data/lib/generators/freeberry/base/templates/images/manage/struct_corn_lg.gif +0 -0
  146. data/lib/generators/freeberry/base/templates/images/manage/struct_corn_llg.gif +0 -0
  147. data/lib/generators/freeberry/base/templates/images/manage/struct_corn_lw.gif +0 -0
  148. data/lib/generators/freeberry/base/templates/images/manage/struct_corn_rg.gif +0 -0
  149. data/lib/generators/freeberry/base/templates/images/manage/struct_corn_rlg.gif +0 -0
  150. data/lib/generators/freeberry/base/templates/images/manage/struct_corn_rw.gif +0 -0
  151. data/lib/generators/freeberry/base/templates/images/manage/tab_gl.gif +0 -0
  152. data/lib/generators/freeberry/base/templates/images/manage/tab_gr.gif +0 -0
  153. data/lib/generators/freeberry/base/templates/images/manage/tab_wl.gif +0 -0
  154. data/lib/generators/freeberry/base/templates/images/manage/tab_wr.gif +0 -0
  155. data/lib/generators/freeberry/base/templates/images/manage/top_corn.gif +0 -0
  156. data/lib/generators/freeberry/base/templates/images/manage/top_duo_corn.gif +0 -0
  157. data/lib/generators/freeberry/base/templates/images/manage/top_menu_arr.gif +0 -0
  158. data/lib/generators/freeberry/base/templates/images/manage/transp_cross.png +0 -0
  159. data/lib/generators/freeberry/base/templates/images/manage/upload_progress.gif +0 -0
  160. data/lib/generators/freeberry/base/templates/images/manage/user_act_lc.gif +0 -0
  161. data/lib/generators/freeberry/base/templates/images/manage/user_act_rc.gif +0 -0
  162. data/lib/generators/freeberry/base/templates/images/manage/user_ico.gif +0 -0
  163. data/lib/generators/freeberry/base/templates/images/manage/user_pic.gif +0 -0
  164. data/lib/generators/freeberry/base/templates/images/manage/user_pic_small.gif +0 -0
  165. data/lib/generators/freeberry/base/templates/images/manage/user_pic_thumb.gif +0 -0
  166. data/lib/generators/freeberry/base/templates/javascripts/datepicker/jquery-ui-i18n.js +1176 -0
  167. data/lib/generators/freeberry/base/templates/javascripts/datepicker/jquery.ui.datepicker-ru.js +23 -0
  168. data/lib/generators/freeberry/base/templates/javascripts/datepicker/jquery.ui.datepicker-uk.js +23 -0
  169. data/lib/generators/freeberry/base/templates/javascripts/jquery.fancybox-1.3.2.pack.js +46 -0
  170. data/lib/generators/freeberry/base/templates/javascripts/manage.js +266 -0
  171. data/lib/generators/freeberry/base/templates/javascripts/preloader.js +47 -0
  172. data/lib/generators/freeberry/base/templates/javascripts/rails.js +146 -0
  173. data/lib/generators/freeberry/base/templates/javascripts/wp_cookie.js +167 -0
  174. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/blank.gif +0 -0
  175. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_close.png +0 -0
  176. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_loading.png +0 -0
  177. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_nav_left.png +0 -0
  178. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_nav_right.png +0 -0
  179. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_e.png +0 -0
  180. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_n.png +0 -0
  181. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_ne.png +0 -0
  182. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_nw.png +0 -0
  183. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_s.png +0 -0
  184. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_se.png +0 -0
  185. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_sw.png +0 -0
  186. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_shadow_w.png +0 -0
  187. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_title_left.png +0 -0
  188. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_title_main.png +0 -0
  189. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_title_over.png +0 -0
  190. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancy_title_right.png +0 -0
  191. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancybox-x.png +0 -0
  192. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancybox-y.png +0 -0
  193. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/images/fancybox.png +0 -0
  194. data/lib/generators/freeberry/base/templates/stylesheets/fancybox/jquery.fancybox-1.3.2.css +359 -0
  195. data/lib/generators/freeberry/base/templates/stylesheets/manage/ie.css +16 -0
  196. data/lib/generators/freeberry/base/templates/stylesheets/manage/main.css +1069 -0
  197. data/lib/generators/freeberry/base/templates/stylesheets/manage/panel.css +126 -0
  198. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  199. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  200. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  201. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  202. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  203. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  204. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  205. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  206. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  207. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  208. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  209. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  210. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  211. data/lib/generators/freeberry/base/templates/stylesheets/smoothness/jquery-ui-1.8.6.custom.css +572 -0
  212. data/lib/generators/freeberry/base/templates/sweepers/page_sweeper.rb +22 -0
  213. data/lib/generators/freeberry/base/templates/sweepers/post_sweeper.rb +22 -0
  214. data/lib/generators/freeberry/base/templates/sweepers/structure_sweeper.rb +29 -0
  215. data/lib/generators/freeberry/base/templates/sweepers/user_sweeper.rb +17 -0
  216. data/lib/generators/freeberry/base/templates/views/layouts/application.html.erb +37 -0
  217. data/lib/generators/freeberry/base/templates/views/layouts/manage.html.erb +37 -0
  218. data/lib/generators/freeberry/base/templates/views/manage/assets/_collection.html.erb +36 -0
  219. data/lib/generators/freeberry/base/templates/views/manage/assets/_picture.html.erb +10 -0
  220. data/lib/generators/freeberry/base/templates/views/manage/assets/_swfscript.html.erb +59 -0
  221. data/lib/generators/freeberry/base/templates/views/manage/pages/_form.html.erb +9 -0
  222. data/lib/generators/freeberry/base/templates/views/manage/pages/edit.html.erb +14 -0
  223. data/lib/generators/freeberry/base/templates/views/manage/pages/new.html.erb +14 -0
  224. data/lib/generators/freeberry/base/templates/views/manage/posts/_form.html.erb +24 -0
  225. data/lib/generators/freeberry/base/templates/views/manage/posts/_model_filter.html.erb +29 -0
  226. data/lib/generators/freeberry/base/templates/views/manage/posts/_post.html.erb +31 -0
  227. data/lib/generators/freeberry/base/templates/views/manage/posts/edit.html.erb +14 -0
  228. data/lib/generators/freeberry/base/templates/views/manage/posts/index.html.erb +37 -0
  229. data/lib/generators/freeberry/base/templates/views/manage/posts/new.html.erb +14 -0
  230. data/lib/generators/freeberry/base/templates/views/manage/settings/_form.html.erb +22 -0
  231. data/lib/generators/freeberry/base/templates/views/manage/settings/index.html.erb +14 -0
  232. data/lib/generators/freeberry/base/templates/views/manage/structures/_form.html.erb +44 -0
  233. data/lib/generators/freeberry/base/templates/views/manage/structures/_structure.html.erb +35 -0
  234. data/lib/generators/freeberry/base/templates/views/manage/structures/edit.html.erb +14 -0
  235. data/lib/generators/freeberry/base/templates/views/manage/structures/index.html.erb +51 -0
  236. data/lib/generators/freeberry/base/templates/views/manage/structures/new.html.erb +14 -0
  237. data/lib/generators/freeberry/base/templates/views/manage/users/_form.html.erb +28 -0
  238. data/lib/generators/freeberry/base/templates/views/manage/users/_model_filter.html.erb +33 -0
  239. data/lib/generators/freeberry/base/templates/views/manage/users/_user.html.erb +55 -0
  240. data/lib/generators/freeberry/base/templates/views/manage/users/edit.html.erb +14 -0
  241. data/lib/generators/freeberry/base/templates/views/manage/users/index.html.erb +36 -0
  242. data/lib/generators/freeberry/base/templates/views/manage/users/new.html.erb +14 -0
  243. data/lib/generators/freeberry/base/templates/views/manage/users/show.html.erb +19 -0
  244. data/lib/generators/freeberry/base/templates/views/shared/_notice.html.erb +17 -0
  245. data/lib/generators/freeberry/base/templates/views/shared/manage/_head.html.erb +33 -0
  246. data/lib/generators/freeberry/base/templates/views/shared/manage/_locale.html.erb +8 -0
  247. data/lib/generators/freeberry/base/templates/views/shared/manage/_notice.html.erb +7 -0
  248. data/lib/generators/freeberry/base/templates/views/shared/manage/_panel.html.erb +34 -0
  249. data/lib/generators/freeberry/manage_scaffold/USAGE +6 -0
  250. data/lib/generators/freeberry/manage_scaffold/manage_scaffold_generator.rb +94 -0
  251. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/controller.rb +39 -0
  252. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/functional_test.rb +103 -0
  253. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/helper.rb +2 -0
  254. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/views/edit.html.erb +14 -0
  255. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/views/form.html.erb +26 -0
  256. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/views/index.html.erb +32 -0
  257. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/views/item.html.erb +27 -0
  258. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/views/model_filter.html.erb +31 -0
  259. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/views/new.html.erb +14 -0
  260. data/lib/generators/freeberry/manage_scaffold/templates/multiplay/views/show.html.erb +17 -0
  261. data/lib/generators/freeberry/manage_scaffold/templates/single/controller.rb +33 -0
  262. data/lib/generators/freeberry/manage_scaffold/templates/single/functional_test.rb +98 -0
  263. data/lib/generators/freeberry/manage_scaffold/templates/single/helper.rb +2 -0
  264. data/lib/generators/freeberry/manage_scaffold/templates/single/views/edit.html.erb +14 -0
  265. data/lib/generators/freeberry/manage_scaffold/templates/single/views/form.html.erb +26 -0
  266. data/lib/generators/freeberry/manage_scaffold/templates/single/views/index.html.erb +30 -0
  267. data/lib/generators/freeberry/manage_scaffold/templates/single/views/item.html.erb +27 -0
  268. data/lib/generators/freeberry/manage_scaffold/templates/single/views/model_filter.html.erb +31 -0
  269. data/lib/generators/freeberry/manage_scaffold/templates/single/views/new.html.erb +14 -0
  270. data/lib/generators/freeberry/manage_scaffold/templates/single/views/show.html.erb +17 -0
  271. data/lib/generators/freeberry/models/USAGE +11 -0
  272. data/lib/generators/freeberry/models/models_generator.rb +37 -0
  273. data/lib/generators/freeberry/models/templates/create_assets.rb +27 -0
  274. data/lib/generators/freeberry/models/templates/create_comments.rb +25 -0
  275. data/lib/generators/freeberry/models/templates/create_headers.rb +20 -0
  276. data/lib/generators/freeberry/models/templates/create_pages.rb +17 -0
  277. data/lib/generators/freeberry/models/templates/create_posts.rb +24 -0
  278. data/lib/generators/freeberry/models/templates/create_roles.rb +16 -0
  279. data/lib/generators/freeberry/models/templates/create_structures.rb +27 -0
  280. data/lib/generators/freeberry/models/templates/create_users.rb +28 -0
  281. data/lib/generators/freeberry/models/templates/models/asset.rb +3 -0
  282. data/lib/generators/freeberry/models/templates/models/attachment_file.rb +35 -0
  283. data/lib/generators/freeberry/models/templates/models/avatar.rb +38 -0
  284. data/lib/generators/freeberry/models/templates/models/comment.rb +17 -0
  285. data/lib/generators/freeberry/models/templates/models/header.rb +5 -0
  286. data/lib/generators/freeberry/models/templates/models/page.rb +5 -0
  287. data/lib/generators/freeberry/models/templates/models/picture.rb +35 -0
  288. data/lib/generators/freeberry/models/templates/models/position_type.rb +7 -0
  289. data/lib/generators/freeberry/models/templates/models/post.rb +7 -0
  290. data/lib/generators/freeberry/models/templates/models/role.rb +20 -0
  291. data/lib/generators/freeberry/models/templates/models/role_type.rb +8 -0
  292. data/lib/generators/freeberry/models/templates/models/structure.rb +9 -0
  293. data/lib/generators/freeberry/models/templates/models/structure_type.rb +9 -0
  294. data/lib/generators/freeberry/models/templates/models/user.rb +52 -0
  295. data/lib/tasks/freeberry.rake +6 -0
  296. data/test/freeberry_test.rb +8 -0
  297. data/test/test_helper.rb +3 -0
  298. metadata +365 -0
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ require 'rails'
3
+ require 'freeberry'
4
+
5
+ module Freeberry
6
+ class Engine < ::Rails::Engine
7
+ config.before_initialize do
8
+ ActiveSupport::XmlMini.backend = 'Nokogiri'
9
+
10
+ Responders::FlashResponder.flash_keys = [ :success, :failure ]
11
+ InheritedResources.flash_keys = [ :success, :failure ]
12
+
13
+ config.i18n.load_path += Dir[File.join(File.dirname(__FILE__), "../../config", 'locales', '**', '*.{rb,yml}').to_s]
14
+
15
+ I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)
16
+
17
+ ActiveSupport.on_load :active_record do
18
+ ActiveRecord::Base.send :include, Freeberry::MysqlUtils
19
+ ActiveRecord::Base.send :include, Freeberry::AccessibleAttributes
20
+ end
21
+ end
22
+
23
+ config.after_initialize do
24
+ ActionController::Base.send :include, Freeberry::Controllers::AuthorizedSystem
25
+ ActionController::Base.send :include, Freeberry::Controllers::HeadOptions
26
+
27
+ ActionView::Base.send :include, Freeberry::Controllers::HelperTools
28
+ end
29
+
30
+ rake_tasks do
31
+ load "tasks/freeberry.rake"
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,162 @@
1
+ # encoding: utf-8
2
+ require "yaml"
3
+ require "erb"
4
+
5
+ module Freeberry
6
+ # A simple settings solution using a YAML file. See README for more information.
7
+ class Settingslogic < Hash
8
+ class MissingSetting < StandardError; end
9
+
10
+ class << self
11
+ def name # :nodoc:
12
+ instance.key?("name") ? instance.name : super
13
+ end
14
+
15
+ # Enables Settings.get('nested.key.name') for dynamic access
16
+ def get(key)
17
+ parts = key.split('.')
18
+ curs = self
19
+ while p = parts.shift
20
+ curs = curs.send(p)
21
+ end
22
+ curs
23
+ end
24
+
25
+ def source(value = nil)
26
+ if value.nil?
27
+ @source
28
+ else
29
+ @source = value
30
+ end
31
+ end
32
+
33
+ def namespace(value = nil)
34
+ if value.nil?
35
+ @namespace
36
+ else
37
+ @namespace = value
38
+ end
39
+ end
40
+
41
+ def [](key)
42
+ instance.fetch(key.to_s, nil)
43
+ end
44
+
45
+ def []=(key, val)
46
+ # Setting[:key][:key2] = 'value' for dynamic settings
47
+ val = new(val, source) if val.is_a? Hash
48
+ instance.store(key.to_s, val)
49
+ instance.create_accessor_for(key, val)
50
+ end
51
+
52
+ def load!
53
+ instance
54
+ true
55
+ end
56
+
57
+ def reload!
58
+ @instance = nil
59
+ load!
60
+ end
61
+
62
+ private
63
+ def instance
64
+ return @instance if @instance
65
+ @instance = new
66
+ create_accessors!
67
+ @instance
68
+ end
69
+
70
+ def method_missing(name, *args, &block)
71
+ instance.send(name, *args, &block)
72
+ end
73
+
74
+ # It would be great to DRY this up somehow, someday, but it's difficult because
75
+ # of the singleton pattern. Basically this proxies Setting.foo to Setting.instance.foo
76
+ def create_accessors!
77
+ instance.each do |key,val|
78
+ create_accessor_for(key)
79
+ end
80
+ end
81
+
82
+ def create_accessor_for(key)
83
+ return unless key.to_s =~ /^\w+$/ # could have "some-setting:" which blows up eval
84
+ instance_eval "def #{key}; instance.send(:#{key}); end"
85
+ end
86
+
87
+ end
88
+
89
+ # Initializes a new settings object. You can initialize an object in any of the following ways:
90
+ #
91
+ # Settings.new(:application) # will look for config/application.yml
92
+ # Settings.new("application.yaml") # will look for application.yaml
93
+ # Settings.new("/var/configs/application.yml") # will look for /var/configs/application.yml
94
+ # Settings.new(:config1 => 1, :config2 => 2)
95
+ #
96
+ # Basically if you pass a symbol it will look for that file in the configs directory of your rails app,
97
+ # if you are using this in rails. If you pass a string it should be an absolute path to your settings file.
98
+ # Then you can pass a hash, and it just allows you to access the hash via methods.
99
+ def initialize(hash_or_file = self.class.source, section = nil)
100
+ #puts "new! #{hash_or_file}"
101
+ case hash_or_file
102
+ when nil
103
+ raise Errno::ENOENT, "No file specified as Settingslogic source"
104
+ when Hash
105
+ self.replace hash_or_file
106
+ else
107
+ hash = YAML.load(ERB.new(File.read(hash_or_file)).result).to_hash
108
+ hash = hash[self.class.namespace] if self.class.namespace
109
+ self.replace hash
110
+ end
111
+ @section = section || self.class.source # so end of error says "in application.yml"
112
+ create_accessors!
113
+ end
114
+
115
+ # Called for dynamically-defined keys, and also the first key deferenced at the top-level, if load! is not used.
116
+ # Otherwise, create_accessors! (called by new) will have created actual methods for each key.
117
+ def method_missing(name, *args, &block)
118
+ key = name.to_s
119
+ raise MissingSetting, "Missing setting '#{key}' in #{@section}" unless has_key? key
120
+ value = fetch(key)
121
+ create_accessor_for(key)
122
+ value.is_a?(Hash) ? self.class.new(value, "'#{key}' section in #{@section}") : value
123
+ end
124
+
125
+ def [](key)
126
+ fetch(key.to_s, nil)
127
+ end
128
+
129
+ def []=(key,val)
130
+ # Setting[:key][:key2] = 'value' for dynamic settings
131
+ val = self.class.new(val, @section) if val.is_a? Hash
132
+ store(key.to_s, val)
133
+ create_accessor_for(key, val)
134
+ end
135
+
136
+ # This handles naming collisions with Sinatra/Vlad/Capistrano. Since these use a set()
137
+ # helper that defines methods in Object, ANY method_missing ANYWHERE picks up the Vlad/Sinatra
138
+ # settings! So settings.deploy_to title actually calls Object.deploy_to (from set :deploy_to, "host"),
139
+ # rather than the app_yml['deploy_to'] hash. Jeezus.
140
+ def create_accessors!
141
+ self.each do |key,val|
142
+ create_accessor_for(key)
143
+ end
144
+ end
145
+
146
+ # Use instance_eval/class_eval because they're actually more efficient than define_method{}
147
+ # http://stackoverflow.com/questions/185947/ruby-definemethod-vs-def
148
+ # http://bmorearty.wordpress.com/2009/01/09/fun-with-rubys-instance_eval-and-class_eval/
149
+ def create_accessor_for(key, val=nil)
150
+ return unless key.to_s =~ /^\w+$/ # could have "some-setting:" which blows up eval
151
+ instance_variable_set("@#{key}", val) if val
152
+ self.class.class_eval <<-EndEval
153
+ def #{key}
154
+ return @#{key} if @#{key}
155
+ raise MissingSetting, "Missing setting '#{key}' in #{@section}" unless has_key? '#{key}'
156
+ value = fetch('#{key}')
157
+ @#{key} = value.is_a?(Hash) ? self.class.new(value, "'#{key}' section in #{@section}") : value
158
+ end
159
+ EndEval
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+ require 'ostruct'
3
+
4
+ module Freeberry
5
+ class SystemSettings < Settingslogic
6
+ source Rails.root.join("config", "application.yml")
7
+ #namespace (Rails.env.to_s || 'development')
8
+
9
+ class << self
10
+ def ostruct
11
+ instance.serialize
12
+ end
13
+
14
+ def update_settings(attributes)
15
+ instance.update attributes
16
+ instance.save
17
+ end
18
+
19
+ def write(hash)
20
+ begin
21
+ File.open(source, 'w') do |file|
22
+ file.write hash.to_yaml
23
+ end
24
+ rescue Exception => e
25
+ return false
26
+ end
27
+ end
28
+
29
+ def hashes_to_openstructs(obj, memo={})
30
+ return obj unless Hash === obj
31
+
32
+ memo[obj.object_id] ||= OpenStruct.new( Hash[
33
+ *obj.inject( [] ) { |a, (k, v)|
34
+ a.push k, hashes_to_openstructs( v, memo )
35
+ }
36
+ ])
37
+ end
38
+ end
39
+
40
+ def save
41
+ if self.class.namespace
42
+ hash = YAML.load(ERB.new(File.read(self.class.source)).result).to_hash
43
+ hash[self.class.namespace] ||= {}
44
+ hash[self.class.namespace].update self
45
+ else
46
+ hash = self
47
+ end
48
+
49
+ self.class.write(hash)
50
+ reload
51
+ end
52
+
53
+ def reload
54
+ @instance = nil
55
+ @struct = nil
56
+
57
+ return true
58
+ end
59
+
60
+ def serialize
61
+ @struct ||= self.class.hashes_to_openstructs(self)
62
+ @struct
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,70 @@
1
+ # encoding: utf-8
2
+ module Freeberry
3
+ # Russian transliteration
4
+ #
5
+ module Transliteration
6
+ extend self
7
+
8
+ # Transliteration heavily based on rutils gem by Julian "julik" Tarkhanov and Co.
9
+ # <http://rutils.rubyforge.org/>
10
+ # Cleaned up and optimized.
11
+
12
+ LOWER_SINGLE = {
13
+ "і"=>"i","ґ"=>"g","ё"=>"yo","№"=>"#","є"=>"e",
14
+ "ї"=>"yi","а"=>"a","б"=>"b",
15
+ "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"zh",
16
+ "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
17
+ "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
18
+ "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
19
+ "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"'",
20
+ "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
21
+ }
22
+ LOWER_MULTI = {
23
+ "ье"=>"ie",
24
+ "ьё"=>"ie",
25
+ }
26
+
27
+ UPPER_SINGLE = {
28
+ "Ґ"=>"G","Ё"=>"YO","Є"=>"E","Ї"=>"YI","І"=>"I",
29
+ "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
30
+ "Д"=>"D","Е"=>"E","Ж"=>"ZH","З"=>"Z","И"=>"I",
31
+ "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
32
+ "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
33
+ "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
34
+ "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"'","Ы"=>"Y","Ь"=>"",
35
+ "Э"=>"E","Ю"=>"YU","Я"=>"YA",
36
+ }
37
+ UPPER_MULTI = {
38
+ "ЬЕ"=>"IE",
39
+ "ЬЁ"=>"IE",
40
+ }
41
+
42
+ LOWER = (LOWER_SINGLE.merge(LOWER_MULTI)).freeze
43
+ UPPER = (UPPER_SINGLE.merge(UPPER_MULTI)).freeze
44
+ MULTI_KEYS = (LOWER_MULTI.merge(UPPER_MULTI)).keys.sort_by {|s| s.length}.reverse.freeze
45
+
46
+ # Transliterate a string with russian characters
47
+ #
48
+ # Возвращает строку, в которой все буквы русского алфавита заменены на похожую по звучанию латиницу
49
+ def transliterate(str)
50
+ chars = str.scan(%r{#{MULTI_KEYS.join '|'}|\w|.})
51
+
52
+ result = ""
53
+
54
+ chars.each_with_index do |char, index|
55
+ if UPPER.has_key?(char) && LOWER.has_key?(chars[index+1])
56
+ # combined case
57
+ result << UPPER[char].downcase.capitalize
58
+ elsif UPPER.has_key?(char)
59
+ result << UPPER[char]
60
+ elsif LOWER.has_key?(char)
61
+ result << LOWER[char]
62
+ else
63
+ result << char
64
+ end
65
+ end
66
+
67
+ result
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ module Freeberry
3
+ class Utils
4
+ class << self
5
+ def form_field(form_name, field_name, column, options={})
6
+ field = case column.type
7
+ when :string, :binary, :integer, :float, :decimal then
8
+ options[:class] = "'text'"
9
+ "text_field"
10
+ when :boolean then "check_box"
11
+ when :datetime, :date, :timestamp, :time then
12
+ options[:extra_html] ||= "<script type='text/javascript'>
13
+ $(function() {
14
+ $('#_#{field_name}').datepicker({
15
+ numberOfMonths: 1,
16
+ dateFormat: 'dd.mm.yy'
17
+ });
18
+ });
19
+ </script>"
20
+ 'text_field'
21
+ when :text then
22
+ options[:cols] ||= 70
23
+ options[:rows] ||= 5
24
+ "text_area"
25
+ end
26
+
27
+ extra_html = options.delete(:extra_html) || ''
28
+
29
+ options_fields = []
30
+ options.each { |k, v| options_fields << ":#{k}=>#{v}" }
31
+
32
+ options_str = ", {#{options_fields.join(', ')}}" unless options_fields.empty?
33
+ options_str ||= ''
34
+
35
+ "<%= #{form_name}.#{field} #{field_name}#{options_str} %>#{extra_html}"
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,11 @@
1
+ module Freeberry
2
+ module Version
3
+ MAJOR = 0
4
+ MINOR = 2
5
+ RELEASE = 5
6
+
7
+ def self.dup
8
+ "#{MAJOR}.#{MINOR}.#{RELEASE}"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ == Freeberry
2
+
3
+ rails generate freeberry:base
4
+ rails generate freeberry:models [options]
5
+ rails generate freeberry:manage_scaffold ModelName
@@ -0,0 +1,7 @@
1
+ Usage:
2
+ rails generate freeberry:base
3
+
4
+ Options:
5
+
6
+ Example:
7
+ rails g freeberry:base
@@ -0,0 +1,63 @@
1
+ require 'rails/generators'
2
+
3
+ module Freeberry
4
+ class BaseGenerator < Rails::Generators::Base
5
+
6
+ def self.source_root
7
+ @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
8
+ end
9
+
10
+ # copy images
11
+ def copy_images
12
+ directory "images/manage", "public/images/manage"
13
+ end
14
+
15
+ # copy javascripts
16
+ def copy_javascripts
17
+ directory "javascripts", "public/javascripts"
18
+ end
19
+
20
+ # copy stylesheets
21
+ def copy_stylesheets
22
+ directory "stylesheets", "public/stylesheets"
23
+ end
24
+
25
+ # copy views
26
+ def copy_views
27
+ directory "views", "app/views"
28
+ end
29
+
30
+ # copy sweepers
31
+ def copy_sweepers
32
+ directory "sweepers", "app/sweepers"
33
+ end
34
+
35
+ def copy_configurations
36
+ copy_file('config/words', 'config/words')
37
+ copy_file('config/authorization_rules.rb', 'config/authorization_rules.rb')
38
+ copy_file('config/seeds.rb', 'db/seeds.rb')
39
+ copy_file('config/freeberry.rb', 'config/initializers/freeberry.rb')
40
+
41
+ template('config/application.yml', 'config/application.yml.sample')
42
+ template('config/database.yml', 'config/database.yml.sample')
43
+ template('config/logrotate-config', 'config/logrotate-config.sample')
44
+ template('config/nginx-config-passenger', 'config/nginx-config-passenger.sample')
45
+ end
46
+
47
+ def copy_helpers
48
+ directory('helpers', 'app/helpers')
49
+ end
50
+
51
+ protected
52
+
53
+ def app_name
54
+ @app_name ||= File.basename(Rails.root)
55
+ @app_name
56
+ end
57
+
58
+ def app_path
59
+ @app_path ||= Rails.root.to_s
60
+ @app_path
61
+ end
62
+ end
63
+ end