forgeos_cms 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. data/LICENSE +2 -0
  2. data/README.textile +42 -0
  3. data/app/assets/images/forgeos/admin/favicon.gif +0 -0
  4. data/app/assets/javascripts/forgeos/admin/functions/forgeos_cms/carousels.js +56 -0
  5. data/app/assets/javascripts/forgeos/admin/functions/forgeos_cms/menus.js +93 -0
  6. data/app/assets/javascripts/forgeos/admin/functions/forgeos_cms/overlay.js +86 -0
  7. data/app/assets/javascripts/forgeos/admin/functions/forgeos_cms/trees.js +8 -0
  8. data/app/assets/javascripts/forgeos/admin/functions/forgeos_cms/widget_actualities.js +117 -0
  9. data/app/assets/javascripts/forgeos/admin/inits/forgeos_cms/carousels.js +131 -0
  10. data/app/assets/javascripts/forgeos/admin/inits/forgeos_cms/menus.js +294 -0
  11. data/app/assets/javascripts/forgeos/admin/inits/forgeos_cms/overlays.js +71 -0
  12. data/app/assets/javascripts/forgeos/admin/inits/forgeos_cms/trees.js +94 -0
  13. data/app/assets/javascripts/forgeos/admin/inits/forgeos_cms/widget_actualities.js +23 -0
  14. data/app/assets/javascripts/forgeos/admin/inits/forgeos_cms/widget_faq.js +13 -0
  15. data/app/assets/stylesheets/forgeos/admin/base.css.sass +2 -0
  16. data/app/assets/stylesheets/forgeos/admin/forgeos_cms/_all.css.sass +1 -0
  17. data/app/assets/stylesheets/forgeos/admin/forgeos_cms/_blocks.css.sass +220 -0
  18. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/bubble-quantity-products.png +0 -0
  19. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/check-checked.png +0 -0
  20. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/check-unchecked.png +0 -0
  21. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/context.gif +0 -0
  22. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/create.png +0 -0
  23. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/dark-blue-minus.png +0 -0
  24. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/dark-blue-plus.png +0 -0
  25. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/dot.gif +0 -0
  26. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/f.png +0 -0
  27. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/fminus.gif +0 -0
  28. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/fminus_rtl.gif +0 -0
  29. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/folder.png +0 -0
  30. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/fplus.gif +0 -0
  31. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/fplus_rtl.gif +0 -0
  32. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/lastli.gif +0 -0
  33. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/lastli_rtl.gif +0 -0
  34. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/li.gif +0 -0
  35. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/remove.png +0 -0
  36. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/rename.png +0 -0
  37. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/style.css.sass +219 -0
  38. data/app/assets/stylesheets/forgeos/jstree/themes/association_page/throbber.gif +0 -0
  39. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/brown-minus.png +0 -0
  40. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/brown-plus.png +0 -0
  41. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/bubble-quantity-products.png +0 -0
  42. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/context.gif +0 -0
  43. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/create.png +0 -0
  44. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/dot.gif +0 -0
  45. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/f.png +0 -0
  46. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/fminus.gif +0 -0
  47. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/fminus_rtl.gif +0 -0
  48. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/fplus.gif +0 -0
  49. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/fplus_rtl.gif +0 -0
  50. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/lastli.gif +0 -0
  51. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/lastli_rtl.gif +0 -0
  52. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/li.gif +0 -0
  53. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/remove.png +0 -0
  54. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/rename.png +0 -0
  55. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/style.css.sass +138 -0
  56. data/app/assets/stylesheets/forgeos/jstree/themes/block_category/throbber.gif +0 -0
  57. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/big-drag-and-drop.png +0 -0
  58. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/bubble-quantity-products.png +0 -0
  59. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/check-checked.png +0 -0
  60. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/check-unchecked.png +0 -0
  61. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/context.gif +0 -0
  62. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/create.png +0 -0
  63. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/dark-blue-minus.png +0 -0
  64. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/dark-blue-plus.png +0 -0
  65. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/dot.gif +0 -0
  66. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/drag-drop.png +0 -0
  67. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/f.png +0 -0
  68. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/fminus.gif +0 -0
  69. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/fminus_rtl.gif +0 -0
  70. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/folder.png +0 -0
  71. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/fplus.gif +0 -0
  72. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/fplus_rtl.gif +0 -0
  73. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/lastli.gif +0 -0
  74. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/lastli_rtl.gif +0 -0
  75. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/li.gif +0 -0
  76. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/remove.png +0 -0
  77. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/rename.png +0 -0
  78. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/style.css.sass +186 -0
  79. data/app/assets/stylesheets/forgeos/jstree/themes/menu-tree/throbber.gif +0 -0
  80. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/brown-minus.png +0 -0
  81. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/brown-plus.png +0 -0
  82. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/bubble-quantity-products.png +0 -0
  83. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/context.gif +0 -0
  84. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/create.png +0 -0
  85. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/dot.gif +0 -0
  86. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/f.png +0 -0
  87. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/fminus.gif +0 -0
  88. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/fminus_rtl.gif +0 -0
  89. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/fplus.gif +0 -0
  90. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/fplus_rtl.gif +0 -0
  91. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/lastli.gif +0 -0
  92. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/lastli_rtl.gif +0 -0
  93. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/li.gif +0 -0
  94. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/remove.png +0 -0
  95. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/rename.png +0 -0
  96. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/style.css.sass +138 -0
  97. data/app/assets/stylesheets/forgeos/jstree/themes/page_category/throbber.gif +0 -0
  98. data/app/controllers/actualities_controller.rb +11 -0
  99. data/app/controllers/admin/actualities_controller.rb +100 -0
  100. data/app/controllers/admin/base_controller.rb +11 -0
  101. data/app/controllers/admin/carousels_controller.rb +101 -0
  102. data/app/controllers/admin/import_controller.rb +20 -0
  103. data/app/controllers/admin/menus_controller.rb +104 -0
  104. data/app/controllers/admin/newsletters_controller.rb +110 -0
  105. data/app/controllers/admin/pages_controller.rb +169 -0
  106. data/app/controllers/admin/static_content_blocks_controller.rb +174 -0
  107. data/app/controllers/admin/statistics_controller.rb +29 -0
  108. data/app/controllers/admin/widget_actualities_controller.rb +101 -0
  109. data/app/controllers/admin/widget_faqs_controller.rb +71 -0
  110. data/app/controllers/admin/widgets_controller.rb +83 -0
  111. data/app/controllers/forgeos/application_controller.rb +21 -0
  112. data/app/controllers/newsletters_controller.rb +11 -0
  113. data/app/controllers/pages_controller.rb +24 -0
  114. data/app/controllers/search_controller.rb +7 -0
  115. data/app/helpers/application_helper.rb +43 -0
  116. data/app/helpers/menu_helper.rb +46 -0
  117. data/app/helpers/routes_helper.rb +19 -0
  118. data/app/models/actuality.rb +21 -0
  119. data/app/models/block.rb +65 -0
  120. data/app/models/block_category.rb +7 -0
  121. data/app/models/carousel.rb +14 -0
  122. data/app/models/carousel_item.rb +12 -0
  123. data/app/models/category_link.rb +2 -0
  124. data/app/models/comment.rb +6 -0
  125. data/app/models/external_link.rb +5 -0
  126. data/app/models/faq.rb +10 -0
  127. data/app/models/link_page.rb +2 -0
  128. data/app/models/menu.rb +30 -0
  129. data/app/models/menu_category.rb +7 -0
  130. data/app/models/menu_link.rb +57 -0
  131. data/app/models/newsletter.rb +5 -0
  132. data/app/models/page.rb +85 -0
  133. data/app/models/page_category.rb +11 -0
  134. data/app/models/page_col.rb +14 -0
  135. data/app/models/page_link.rb +17 -0
  136. data/app/models/page_sweeper.rb +54 -0
  137. data/app/models/static_content_block.rb +2 -0
  138. data/app/models/static_content_category.rb +2 -0
  139. data/app/models/widget.rb +2 -0
  140. data/app/models/widget_actuality.rb +19 -0
  141. data/app/models/widget_category.rb +2 -0
  142. data/app/models/widget_faq.rb +12 -0
  143. data/app/views/actualities/rss.rxml +20 -0
  144. data/app/views/admin/actualities/_form.html.haml +38 -0
  145. data/app/views/admin/actualities/_tabs.html.haml +5 -0
  146. data/app/views/admin/actualities/edit.html.haml +3 -0
  147. data/app/views/admin/actualities/index.html.haml +10 -0
  148. data/app/views/admin/actualities/index.json.erb +34 -0
  149. data/app/views/admin/actualities/new.html.haml +3 -0
  150. data/app/views/admin/blocks/_associated_pages.html.haml +33 -0
  151. data/app/views/admin/blocks/_tabs.html.haml +8 -0
  152. data/app/views/admin/carousels/_attachments_popups.html.haml +81 -0
  153. data/app/views/admin/carousels/_form.html.haml +95 -0
  154. data/app/views/admin/carousels/_form_item.html.haml +54 -0
  155. data/app/views/admin/carousels/_item.html.haml +25 -0
  156. data/app/views/admin/carousels/edit.html.haml +1 -0
  157. data/app/views/admin/carousels/new.html.haml +1 -0
  158. data/app/views/admin/carousels/show.html.haml +40 -0
  159. data/app/views/admin/categories/_block.html.haml +4 -0
  160. data/app/views/admin/categories/_list_blocks.html.haml +13 -0
  161. data/app/views/admin/categories/_list_pages.html.haml +13 -0
  162. data/app/views/admin/categories/_page.html.haml +2 -0
  163. data/app/views/admin/dashboard/index.html.haml +19 -0
  164. data/app/views/admin/menu_links/_show.html.haml +8 -0
  165. data/app/views/admin/menus/_empty_menu_link.html.haml +45 -0
  166. data/app/views/admin/menus/_form.html.haml +27 -0
  167. data/app/views/admin/menus/_form_menu_links.html.haml +60 -0
  168. data/app/views/admin/menus/_lang_switcher.html.haml +2 -0
  169. data/app/views/admin/menus/_tabs.html.haml +5 -0
  170. data/app/views/admin/menus/_types_popups.html.haml +21 -0
  171. data/app/views/admin/menus/edit.html.haml +1 -0
  172. data/app/views/admin/menus/index.html.haml +13 -0
  173. data/app/views/admin/menus/index.json.erb +31 -0
  174. data/app/views/admin/menus/new.html.haml +1 -0
  175. data/app/views/admin/menus/show.html.haml +22 -0
  176. data/app/views/admin/newsletters/_form.html.haml +19 -0
  177. data/app/views/admin/newsletters/_tabs.html.haml +3 -0
  178. data/app/views/admin/newsletters/edit.html.haml +2 -0
  179. data/app/views/admin/newsletters/index.html.haml +14 -0
  180. data/app/views/admin/newsletters/index.json.erb +22 -0
  181. data/app/views/admin/newsletters/new.html.haml +2 -0
  182. data/app/views/admin/pages/_block_popup.html.haml +18 -0
  183. data/app/views/admin/pages/_blocks.html.haml +29 -0
  184. data/app/views/admin/pages/_codes.html.haml +33 -0
  185. data/app/views/admin/pages/_form.html.haml +15 -0
  186. data/app/views/admin/pages/_general.html.haml +64 -0
  187. data/app/views/admin/pages/_seo.html.haml +31 -0
  188. data/app/views/admin/pages/_tabs.html.haml +5 -0
  189. data/app/views/admin/pages/_tabs_show.html.haml +9 -0
  190. data/app/views/admin/pages/edit.html.haml +1 -0
  191. data/app/views/admin/pages/index.html.haml +13 -0
  192. data/app/views/admin/pages/index.json.erb +37 -0
  193. data/app/views/admin/pages/new.html.haml +2 -0
  194. data/app/views/admin/pages/show.html.haml +100 -0
  195. data/app/views/admin/static_content_blocks/_form.html.haml +41 -0
  196. data/app/views/admin/static_content_blocks/edit.html.haml +1 -0
  197. data/app/views/admin/static_content_blocks/index.html.haml +16 -0
  198. data/app/views/admin/static_content_blocks/index.json.erb +28 -0
  199. data/app/views/admin/static_content_blocks/new.html.haml +1 -0
  200. data/app/views/admin/static_content_blocks/show.html.haml +23 -0
  201. data/app/views/admin/statistics/index.html.haml +57 -0
  202. data/app/views/admin/users/_tabs.html.haml +3 -0
  203. data/app/views/admin/widget_actualities/_form.html.haml +87 -0
  204. data/app/views/admin/widget_actualities/_form_item.html.haml +28 -0
  205. data/app/views/admin/widget_actualities/_item.html.haml +11 -0
  206. data/app/views/admin/widget_actualities/_tabs.html.haml +8 -0
  207. data/app/views/admin/widget_actualities/edit.html.haml +2 -0
  208. data/app/views/admin/widget_actualities/new.html.haml +2 -0
  209. data/app/views/admin/widget_actualities/show.html.haml +39 -0
  210. data/app/views/admin/widget_faqs/_form.html.haml +68 -0
  211. data/app/views/admin/widget_faqs/_tabs.html.haml +8 -0
  212. data/app/views/admin/widget_faqs/edit.html.haml +2 -0
  213. data/app/views/admin/widget_faqs/new.html.haml +2 -0
  214. data/app/views/admin/widgets/_tabs.html.haml +8 -0
  215. data/app/views/admin/widgets/index.html.haml +28 -0
  216. data/app/views/admin/widgets/index.json.erb +27 -0
  217. data/app/views/layouts/admin/_menu.html.haml +0 -0
  218. data/app/views/layouts/application.html.haml +21 -0
  219. data/app/views/pages/_linked_pages.html.haml +4 -0
  220. data/app/views/pages/_page.html.haml +15 -0
  221. data/app/views/pages/show.html.haml +9 -0
  222. data/app/views/search/index.html.haml +8 -0
  223. data/config/locales/activerecord/en.yml +48 -0
  224. data/config/locales/activerecord/fr.yml +77 -0
  225. data/config/locales/admin/actuality/en.yml +30 -0
  226. data/config/locales/admin/actuality/fr.yml +30 -0
  227. data/config/locales/admin/block/en.yml +38 -0
  228. data/config/locales/admin/block/fr.yml +38 -0
  229. data/config/locales/admin/carousel/en.yml +24 -0
  230. data/config/locales/admin/carousel/fr.yml +24 -0
  231. data/config/locales/admin/menu/en.yml +33 -0
  232. data/config/locales/admin/menu/fr.yml +38 -0
  233. data/config/locales/admin/newsletter/en.yml +30 -0
  234. data/config/locales/admin/newsletter/fr.yml +30 -0
  235. data/config/locales/admin/page/en.yml +77 -0
  236. data/config/locales/admin/page/fr.yml +77 -0
  237. data/config/locales/admin/section/en.yml +23 -0
  238. data/config/locales/admin/section/fr.yml +23 -0
  239. data/config/locales/admin/static_content_block/en.yml +43 -0
  240. data/config/locales/admin/static_content_block/fr.yml +42 -0
  241. data/config/locales/admin/widget/en.yml +34 -0
  242. data/config/locales/admin/widget/fr.yml +34 -0
  243. data/config/locales/admin/widget_actuality/en.yml +23 -0
  244. data/config/locales/admin/widget_actuality/fr.yml +23 -0
  245. data/config/locales/admin/widget_faq/en.yml +22 -0
  246. data/config/locales/admin/widget_faq/fr.yml +30 -0
  247. data/config/locales/common/en.yml +208 -0
  248. data/config/locales/common/fr.yml +209 -0
  249. data/config/routes.rb +73 -0
  250. data/db/fixtures/menu_link_translations.yml +5 -0
  251. data/db/fixtures/menu_links.yml +5 -0
  252. data/db/fixtures/menus.yml +3 -0
  253. data/db/fixtures/page_translations.yml +19 -0
  254. data/db/fixtures/pages.yml +5 -0
  255. data/db/fixtures/people.yml +11 -0
  256. data/db/migrate/20091009134405_create_actualities.rb +18 -0
  257. data/db/migrate/20091009134503_create_blocks.rb +15 -0
  258. data/db/migrate/20091009134510_create_blocks_pages.rb +13 -0
  259. data/db/migrate/20091009134518_create_carousel_items.rb +17 -0
  260. data/db/migrate/20091009134729_create_pages.rb +18 -0
  261. data/db/migrate/20091009134736_create_pages_links.rb +12 -0
  262. data/db/migrate/20091027153116_create_menus.rb +14 -0
  263. data/db/migrate/20091027153659_create_menu_links.rb +19 -0
  264. data/db/migrate/20091208113459_create_page_translations.rb +9 -0
  265. data/db/migrate/20091208113460_create_block_translations.rb +9 -0
  266. data/db/migrate/20091208113461_create_menu_link_translations.rb +9 -0
  267. data/db/migrate/20091208170256_remove_translations_to_page.rb +10 -0
  268. data/db/migrate/20091208170257_remove_translations_to_block.rb +9 -0
  269. data/db/migrate/20091208170258_remove_translations_to_menu_link.rb +9 -0
  270. data/db/migrate/20100203102853_add_actuality_translations.rb +9 -0
  271. data/db/migrate/20100203102914_add_carousel_item_translations.rb +9 -0
  272. data/db/migrate/20100203125804_remove_translated_columns_to_actualities.rb +9 -0
  273. data/db/migrate/20100203125820_remove_translated_columns_to_carousel_items.rb +10 -0
  274. data/db/migrate/20100405095844_create_page_cols_table.rb +12 -0
  275. data/db/migrate/20100405101416_create_blocks_page_cols.rb +13 -0
  276. data/db/migrate/20100407093551_create_table_translation_for_page_cols.rb +13 -0
  277. data/db/migrate/20100413134832_add_index_on_menu_links.rb +11 -0
  278. data/db/migrate/20100501150819_add_code_to_pages.rb +13 -0
  279. data/db/migrate/20100511161012_create_faqs.rb +13 -0
  280. data/db/migrate/20100526163534_add_popup_to_menu_link.rb +9 -0
  281. data/db/migrate/20100929183346_change_answer_type.rb +9 -0
  282. data/db/migrate/20101015095242_update_actualities.rb +11 -0
  283. data/db/migrate/20101216155044_create_newsletter.rb +12 -0
  284. data/db/migrate/20110310092311_add_indexes_to_menu.rb +9 -0
  285. data/db/migrate/20110408133955_add_summary_to_menu_link_translations.rb +7 -0
  286. data/lib/forgeos/admin_menu.rb +14 -0
  287. data/lib/forgeos/cms.rb +8 -0
  288. data/lib/forgeos/cms/engine.rb +8 -0
  289. data/lib/forgeos/cms/statistics.rb +16 -0
  290. data/lib/forgeos_cms.rb +3 -0
  291. data/lib/tasks/install.rake +9 -0
  292. data/lib/tasks/upgrade.rake +22 -0
  293. data/recipes/deploy.rb +14 -0
  294. metadata +375 -0
@@ -0,0 +1,29 @@
1
+ load File.join(Gem.loaded_specs['forgeos_core'].full_gem_path, 'app', 'controllers', 'admin', 'statistics_controller.rb')
2
+ Admin::StatisticsController.class_eval do
3
+ before_filter :pages_most_viewed, :only => :index
4
+
5
+ # generates the ofc2 graph
6
+ def graph
7
+ get_date
8
+ # visitors
9
+ visitors = @date.collect{|day| Forgeos::Statistics.total_of_visitors(day)}
10
+
11
+ # Bar for visitors
12
+ bar = OpenFlashChart::Bar.new
13
+ bar.values = visitors
14
+ bar.tooltip = "#val# #{I18n.t('visitor', :count => 2)}"
15
+ bar.colour = '#F2B833'
16
+
17
+ # Conf for Y left axis
18
+ # calculates max number of visitors
19
+ max_visitors = visitors.flatten.compact.max.to_i
20
+ max_count_visitors = max_visitors > 0 ? max_visitors : 5
21
+
22
+ return render :json => generate_graph([bar], [max_count_visitors], '#F7BD2E')
23
+ end
24
+
25
+ private
26
+ def pages_most_viewed
27
+ @pages_most_viewed = Forgeos::Cms::Statistics.pages_most_viewed(@date,10)
28
+ end
29
+ end
@@ -0,0 +1,101 @@
1
+ class Admin::WidgetActualitiesController < Admin::BaseController
2
+
3
+ #cache_sweeper :page_sweeper, :only => [:create, :update, :destroy]
4
+ before_filter :get_widget_actuality, :only => [:show, :edit, :update, :destroy, :duplicate]
5
+ before_filter :new_widget_actuality, :only => [:new, :create]
6
+ before_filter :get_pages_and_categories, :only => [:index, :show, :new, :create, :edit, :update, :duplicate]
7
+
8
+ def index
9
+ return redirect_to([forgeos_cms, :admin, :widgets])
10
+ end
11
+
12
+ def show; end
13
+
14
+ def new; end
15
+
16
+ def edit; end
17
+
18
+ def duplicate
19
+ @widget_actuality = @widget_actuality.clone
20
+ render :action => 'new'
21
+ end
22
+
23
+ def create
24
+ # check that the linked page exists if page_id is specified
25
+ =begin
26
+ if params[:page_id] && !get_page
27
+ flash[:error] = I18n.t('widget.link.create.failed').capitalize
28
+ return
29
+ end
30
+ =end
31
+
32
+ if @widget_actuality.save
33
+ flash[:notice] = I18n.t('widget_actuality.create.success').capitalize
34
+ redirect_to([forgeos_cms, :edit, :admin, @widget_actuality])
35
+ else
36
+ flash[:error] = I18n.t('widget_actuality.create.failed').capitalize
37
+ render :action => 'new'
38
+ end
39
+ end
40
+
41
+ def update
42
+ if updated = @widget_actuality.update_attributes(params[:widget_actuality])
43
+ flash[:notice] = I18n.t('widget_actuality.update.success').capitalize
44
+ else
45
+ flash[:error] = I18n.t('widget_actuality.update.failed').capitalize
46
+ end
47
+
48
+ respond_to do |format|
49
+ format.html {
50
+ return render :action => "edit"
51
+ }
52
+
53
+ format.js { return render :nothing => true }
54
+ end
55
+ end
56
+
57
+ def destroy
58
+ if @widget_actuality.destroy
59
+ flash[:notice] = I18n.t('widget_actuality.destroy.success').capitalize
60
+ else
61
+ flash[:error] = I18n.t('widget_actuality.destroy.failed').capitalize
62
+ end
63
+ redirect_to([forgeos_cms, :admin, :widgets])
64
+ end
65
+
66
+ private
67
+
68
+ def get_widget_actuality
69
+ unless @widget_actuality = WidgetActuality.find_by_id(params[:id])
70
+ flash[:error] = I18n.t('widget_actuality.not_exist').capitalize
71
+ return redirect_to([forgeos_cms, :admin, :actualities])
72
+ end
73
+ end
74
+
75
+ def new_widget_actuality
76
+ @widget_actuality = WidgetActuality.new params[:widget_actuality]
77
+ end
78
+
79
+ def get_page
80
+ @page = Page.find_by_id(params[:page_id])
81
+ end
82
+
83
+ def get_pages_and_categories
84
+ @page_categories = PageCategory.find_all_by_parent_id(nil,:joins => :translations, :order => 'name')
85
+ @pages = Page.all(:include => :categories, :conditions => { :categories_elements => { :category_id => nil }})
86
+ end
87
+
88
+ def link_and_redirect_to_page
89
+ @page.blocks << @widget_actuality
90
+ @page.blocks.reset_positions
91
+
92
+ if @widget_actuality.save
93
+ return redirect_to([forgeos_cms, :admin, @page, :widgets])
94
+ else
95
+ @widget_actuality.destroy
96
+ flash[:notice] = nil
97
+ flash[:error] = @widget_actuality.errors
98
+ return
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,71 @@
1
+ class Admin::WidgetFaqsController < Admin::BaseController
2
+ cache_sweeper :page_sweeper, :only => [:create, :update, :destroy]
3
+ before_filter :get_widget_faq, :only => [:show, :edit, :update, :destroy, :duplicate]
4
+ before_filter :new_widget_faq, :only => [:new, :create]
5
+ before_filter :get_pages_and_categories, :only => [:new, :create, :edit, :update, :duplicate]
6
+
7
+ def index
8
+ return redirect_to([forgeos_cms, :admin, :widgets])
9
+ end
10
+
11
+ def create
12
+ if @widget_faq.save
13
+ flash[:notice] = t('destination.create.success').capitalize
14
+ redirect_to([forgeos_cms, :admin, :widgets])
15
+ else
16
+ flash[:error] = @widget_faq.errors.first.inspect
17
+ render :action => 'new'
18
+ end
19
+ end
20
+
21
+ def new
22
+ end
23
+
24
+ def edit
25
+ end
26
+
27
+ def duplicate
28
+ @widget_faq = @widget_faq.clone
29
+ render :action => 'new'
30
+ end
31
+
32
+
33
+ def update
34
+ if @widget_faq.update_attributes(params[:widget_faq])
35
+ flash[:notice] = t('widget_faq.update.success').capitalize
36
+ redirect_to([forgeos_cms, :admin, :widgets])
37
+ else
38
+ flash[:error] = t('widget_faq.update.failed').capitalize
39
+ render :action => 'edit'
40
+ end
41
+ end
42
+
43
+ def destroy
44
+ if @widget_faq.destroy
45
+ flash[:notice] = I18n.t('widget.destroy.success').capitalize
46
+ else
47
+ flash[:error] = @widget_faq.errors if @widget_faq
48
+ flash[:error] = I18n.t('widget.destroy.failed').capitalize
49
+ end
50
+ render :nothing => true
51
+ end
52
+
53
+
54
+ private
55
+ def get_widget_faq
56
+ unless @widget_faq = WidgetFaq.find_by_id(params[:id])
57
+ flash[:error] = t('widget_faq.not_exist').capitalize
58
+ return redirect_to([forgeos_cms, :admin, :widgets])
59
+ end
60
+ end
61
+
62
+ def new_widget_faq
63
+ @widget_faq = WidgetFaq.new(params[:widget_faq])
64
+ end
65
+
66
+ def get_pages_and_categories
67
+ @page_categories = PageCategory.find_all_by_parent_id(nil,:joins => :translations, :order => 'name')
68
+ @pages = Page.all(:include => :categories, :conditions => { :categories_elements => { :category_id => nil }})
69
+ end
70
+
71
+ end
@@ -0,0 +1,83 @@
1
+ class Admin::WidgetsController < Admin::BaseController
2
+ cache_sweeper :page_sweeper, :only => [:destroy]
3
+ before_filter :get_widget, :only => :destroy
4
+ before_filter :get_pages_and_categories, :only => :index
5
+
6
+ def index
7
+ respond_to do |format|
8
+ format.html
9
+ format.json do
10
+ sort
11
+ render :layout => false
12
+ end
13
+ end
14
+ end
15
+
16
+ def destroy
17
+ if request.delete?
18
+ @widget.destroy
19
+ flash[:notice] = I18n.t('widget.destroy.success').capitalize
20
+ else
21
+ flash[:error] = @widget.errors if @widget
22
+ flash[:error] = I18n.t('widget.destroy.failed').capitalize
23
+ end
24
+ render :nothing => true
25
+ end
26
+
27
+ private
28
+
29
+ def get_widget
30
+ unless @widget = Widget.find_by_id(params[:id])
31
+ flash[:error] = I18n.t('widget.not_exist').capitalize
32
+ redirect_to([forgeos_cms, :admin, :widgets])
33
+ end
34
+ end
35
+
36
+ def get_pages_and_categories
37
+ @page_categories = PageCategory.find_all_by_parent_id(nil,:joins => :translations, :order => 'name')
38
+ @pages = Page.all(:include => :categories, :conditions => { :categories_elements => { :category_id => nil }})
39
+ end
40
+
41
+ def sort
42
+ columns = %w(blocks.id blocks.type blocks.title count(pages.id))
43
+ per_page = params[:iDisplayLength].to_i
44
+ offset = params[:iDisplayStart].to_i
45
+ page = (offset / per_page) + 1
46
+ order_column = params[:iSortCol_0].to_i
47
+ order = "#{columns[order_column]} #{params[:iSortDir_0].upcase}"
48
+
49
+ conditions = {}
50
+ includes = []
51
+ group_by = []
52
+ options = { :page => page, :per_page => per_page }
53
+
54
+ if params[:category_id]
55
+ conditions[:categories_elements] = { :category_id => params[:category_id] }
56
+ includes << :categories
57
+ end
58
+
59
+ if order_column == 3
60
+ group_by << 'blocks.id'
61
+ includes << :pages
62
+ end
63
+
64
+ options[:conditions] = conditions unless conditions.empty?
65
+ options[:include] = includes unless includes.empty?
66
+ options[:group] = group_by.join(', ') unless group_by.empty?
67
+ options[:order] = order unless order.squeeze.blank?
68
+
69
+ joins = []
70
+ joins << :translations
71
+
72
+ if params[:sSearch] && !params[:sSearch].blank?
73
+ options[:index] = "block_#{ActiveRecord::Base.locale}_core"
74
+ options[:order_sql] = options.delete(:order)
75
+ options[:star] = true
76
+ @widgets = Widget.search(params[:sSearch],options)
77
+ else
78
+ options[:joins] = joins
79
+ options[:group] = :block_id
80
+ @widgets = Widget.paginate(:all,options)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,21 @@
1
+ load File.join(Gem.loaded_specs['forgeos_core'].full_gem_path, 'app', 'controllers', 'forgeos', 'application_controller.rb')
2
+
3
+ Forgeos::ApplicationController.class_eval do
4
+ include RoutesHelper
5
+
6
+ private
7
+
8
+ def page_not_found
9
+ if @page = Page.find_by_single_key(404)
10
+ return render(@page, :layout => true, :status => 404)
11
+ else
12
+ return render(:text => (I18n.t('page_not_found') || 'page not found'), :layout => false, :status => 404)
13
+ end
14
+ end
15
+ end
16
+
17
+ # Rails Bug fix on Nested inheritance models : Load nested models to use it parent class
18
+ #Carousel
19
+ #WidgetActuality
20
+ #WidgetFaq
21
+ #LinkPage
@@ -0,0 +1,11 @@
1
+ class NewslettersController < Forgeos::ApplicationController
2
+ skip_before_filter :verify_authenticity_token, :only => [:create]
3
+ def create
4
+ if Newsletter.find_or_create_by_email(params[:newsletter])
5
+ flash[:notice] = t('newsletter.subscribe.success')
6
+ else
7
+ flash[:error] = t('newsletter.subscribe.failed')
8
+ end
9
+ redirect_to :back
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ class PagesController < Forgeos::ApplicationController
2
+ before_filter :get_page, :only => [ :show ]
3
+ caches_page :page, :if => :get_page
4
+
5
+ def index
6
+ if @page = Page.find_by_single_key('home')
7
+ redirect_to(@page)
8
+ else
9
+ page_not_found
10
+ end
11
+ end
12
+
13
+ def show
14
+ return page_not_found unless @page
15
+ end
16
+
17
+ private
18
+
19
+ def get_page
20
+ url = params[:url].last.gsub(/\.\w+$/,'')
21
+ @format = params[:url].last.split('.').last || request.format
22
+ @page = Page.find_by_url(url, :conditions => { :active => true })
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ class SearchController < Forgeos::ApplicationController
2
+ before_filter :search_page, :only => :index
3
+ private
4
+ def search_page
5
+ @items += Page.search(@keywords)
6
+ end
7
+ end
@@ -0,0 +1,43 @@
1
+ # Methods added to this helper will be available to all templates in the application.
2
+ module ApplicationHelper
3
+ include MenuHelper
4
+ def meta_info(page, meta)
5
+ if page && page.meta_info
6
+ case meta
7
+ when :title
8
+ return page.meta_info.title
9
+ when :keywords
10
+ return page.meta_info.keywords
11
+ when :description
12
+ return page.meta_info.description
13
+ end
14
+ end
15
+ end
16
+
17
+ def page_by_key(single_key)
18
+ page = Page.find_by_single_key(single_key)
19
+ return page ? page : @page
20
+ end
21
+
22
+ def block_content_by_key(single_key)
23
+ block = Block.find_by_single_key(single_key)
24
+ block.content if block
25
+ end
26
+
27
+ def page_category_path(object)
28
+ super(:id => nil, :category_name => object.name)
29
+ end
30
+
31
+ def render_block(id)
32
+ block = case id
33
+ when Integer
34
+ Block.find_by_id(id)
35
+ when Block
36
+ id
37
+ when String, Symbol
38
+ Block.find_by_single_key(id)
39
+ end
40
+
41
+ block ? block.content : nil
42
+ end
43
+ end
@@ -0,0 +1,46 @@
1
+ module MenuHelper
2
+ def display_menu_front(menu, options = {}, &block)
3
+ if !menu.nil? and menu.active?
4
+ lis = get_menu_li(menu.menu_links, options, &block)
5
+ content_tag :ul, lis.join , :class => options[:ul_class]
6
+ end
7
+ end
8
+ alias_method :display_menu, :display_menu_front
9
+
10
+ private
11
+ def get_li_class(menu_link, options)
12
+ if options[:li_current_class] &&
13
+ # request uri equals menu_link url or one of its children url
14
+ (menu_link.url_match?(request.request_uri) ||
15
+ # request page equals page link target or one of its children page link targe
16
+ (options[:page] && menu_link.is_a?(PageLink) && menu_link.url_match?(options[:page])))
17
+ options[:li_current_class]
18
+ else
19
+ options[:li_class]
20
+ end
21
+ end
22
+
23
+ def get_menu_li(menu_links, options, &block)
24
+ lis = []
25
+ links = menu_links.find_all_by_active(true)
26
+ links.each_with_index do |menu_link,index|
27
+ if menu_link.active?
28
+ li_class = get_li_class(menu_link, options)
29
+ li_class = li_class ? [li_class] : []
30
+ li_class << 'first' if index == 0
31
+ li_class << 'last' if index == links.size - 1
32
+ li_link = if block_given?
33
+ capture(menu_link,&block)
34
+ else
35
+ link_to(menu_link.title,menu_link.url, :popup => menu_link.popup)
36
+ end
37
+ children = menu_link.children
38
+ unless children.empty?
39
+ li_link += content_tag :ul, get_menu_li(children, options, &block).join , :class => options[:ul_class]
40
+ end
41
+ lis << content_tag(:li, li_link, :class => (li_class.empty? ? nil : li_class.join(' ')) )
42
+ end
43
+ end
44
+ return lis
45
+ end
46
+ end