forgeos_cms 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
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
data/LICENSE ADDED
@@ -0,0 +1,2 @@
1
+ ForgeosCMS comes with two licenses: the LGPL (see COPYING.LESSER)
2
+ and the GPL (see COPYING) ones.
data/README.textile ADDED
@@ -0,0 +1,42 @@
1
+ h1. ForgeosCMS
2
+
3
+ ForgeosCMS is an extension of Ruby on Rails for CMS development
4
+
5
+ VERSION : 0.9.6
6
+
7
+ h1. Prerequisites
8
+
9
+ h2. Plugins
10
+
11
+ * ForgeosCore
12
+
13
+ h2. Initialize
14
+
15
+ <pre><code>
16
+ $ ./script/generate plugin_migration forgeos_cms
17
+ $ rake forgeos:cms:install
18
+ </code></pre>
19
+
20
+ h2. Update routes.rb
21
+
22
+ Add at the end of your routes :
23
+ <pre><code>
24
+ map.connect ':controller/:action/:id'
25
+ map.connect ':controller/:action/:id.:format'
26
+ map.page '*url', :controller => 'pages', :action => 'show'
27
+ </code></pre>
28
+
29
+ h1. Default settings
30
+
31
+ h2. Admin
32
+
33
+ URL: /admin
34
+ Login: admin@cms.forgeos.com
35
+ Password: admin
36
+
37
+ h2. Pages
38
+
39
+ * HomePage
40
+ * 404 page
41
+
42
+ Powered by "Webpulser":http://www.webpulser.com
@@ -0,0 +1,56 @@
1
+ /* --- CAROUSEL --- */
2
+
3
+ // copy carousel item div from empty carousel item and set new id
4
+ function add_new_carousel_item(){
5
+ var new_item = '<div id="item_' + false_id + '" class="block-container widget-modify carousel">';
6
+ new_item += jQuery('#empty_carousel_item').html().replace(/EMPTY_ID/g, false_id);
7
+ new_item += '</div>';
8
+
9
+ false_id--;
10
+ jQuery('#carousel_items').append(new_item);
11
+ update_block_container_positions(jQuery('#carousel_items'));
12
+ }
13
+
14
+ // clone content from div to form and then submit the form
15
+ function update_carousel_item(display_div, edition_div){
16
+ var form = jQuery('#hidden_form');
17
+ var url = jQuery(form).attr('action');
18
+ var div = jQuery(form).find('.item_form');
19
+
20
+ div.append(edition_div.html());
21
+
22
+ // copy value of each input/textarea
23
+ edition_div.find('input, textarea, select').each(function(){
24
+ var div_input = div.find('#' + jQuery(this).attr('id'));
25
+ div_input.val(jQuery(this).val());
26
+ });
27
+
28
+ // post carousel item data
29
+ jQuery.ajax({
30
+ url: url,
31
+ data: jQuery(form).serialize(),
32
+ success:function(request){
33
+ // close edition mode
34
+ jQuery(display_div).find('.edit-link').trigger('click');
35
+ },
36
+ type:'post'
37
+ });
38
+
39
+ // empty item form
40
+ div.html('');
41
+ }
42
+
43
+ // hide carousel item container and set item delete value to 1
44
+ function remove_carousel_item(destroy_link){
45
+ var block = jQuery(destroy_link).parents('.block-container');
46
+ jQuery(block).hide();
47
+ jQuery(block).find('.delete').val(1);
48
+ update_block_container_positions(jQuery('#carousel_items'));
49
+ }
50
+
51
+ function add_picture_to_carousel_item(link,path,id,name){
52
+ var image = jQuery(link).prevAll('img');
53
+ image.attr('src', path);
54
+ image.attr('alt', name);
55
+ jQuery(link).prevAll('input').attr('value', id);
56
+ }
@@ -0,0 +1,93 @@
1
+ function toggle_menu_types_overlays(id){
2
+ var overlay_to_turn_off = (id == 'target-link') ? '#external-link' : '#target-link';
3
+ var overlay_to_turn_on = (id == 'target-link') ? '#target-link' : '#external-link';
4
+
5
+ if (jQuery(overlay_to_turn_off).is(':visible'))
6
+ jQuery(overlay_to_turn_off).hide();
7
+ jQuery(overlay_to_turn_on).show();
8
+ }
9
+
10
+ function update_menu_link(title, link_span, link, url, link_type, target_id, target_type, data){
11
+ // update link
12
+ if (title.val() == '')
13
+ title.val(data.title);
14
+ link_span.addClass(data.type);
15
+ link.html(data.link_name);
16
+ link.attr('href', data.link_url);
17
+
18
+ // update hidden fields
19
+ url.val(data.hidden_url);
20
+ link_type.val(data.hidden_type);
21
+ target_id.val(data.hidden_target_id);
22
+ target_type.val(data.hidden_target_type);
23
+ }
24
+
25
+ function update_menu_span_icon(base_span, span_to_update){
26
+ span_to_update.removeClass('external page product category');
27
+ if (base_span.hasClass('external'))
28
+ span_to_update.addClass('external');
29
+ else if (base_span.hasClass('page'))
30
+ span_to_update.addClass('page');
31
+ else if (base_span.hasClass('product'))
32
+ span_to_update.addClass('product');
33
+ else if (base_span.hasClass('category'))
34
+ span_to_update.addClass('category');
35
+ }
36
+
37
+ // mode is either 'open' or 'closed'
38
+ function toggle_menu_link(menu_link, mode){
39
+ var folder = (mode == ('closed')) ? 'file' : 'folder';
40
+
41
+ if (!menu_link.hasClass(mode)){
42
+ menu_link.toggleClass('closed');
43
+ menu_link.toggleClass('open');
44
+ }
45
+
46
+ if (!menu_link.hasClass(folder)){
47
+ menu_link.toggleClass('file');
48
+ menu_link.toggleClass('folder');
49
+ }
50
+ }
51
+
52
+ // update position for each child of the list and for their children
53
+ function update_menu_positions(list){
54
+ jQuery(list).children('li').each(function(){
55
+ var index = jQuery(this).parent().children('li').index(this);
56
+ var position = jQuery(this).find('.menu_link:first').find('input:regex(id,.+_position)');
57
+ var child_list = jQuery(this).children('ul:first');
58
+
59
+ position.val(index);
60
+
61
+ // update those of its children
62
+ if (child_list.length > 0)
63
+ update_menu_positions(child_list);
64
+ });
65
+ }
66
+
67
+ // update name, id and parent_id for each child of the list and for their children
68
+ function update_menu_names_and_ids(list, base_name, base_id){
69
+ jQuery(list).children('li').each(function(){
70
+ var index = jQuery(this).parent().children('li').index(this);
71
+ var name = base_name + '[' + index + ']';
72
+ var id = base_id + index;
73
+
74
+ var parent_id = jQuery(this).parents('li:first').find('input:regex(id,.+_id)')[0];
75
+ var input_parent_id = jQuery(this).find('.menu_link:first').find('input:regex(id,.+_parent_id)');
76
+ var input_menu_id = jQuery(this).find('.menu_link:first').find('input:regex(id,.+_menu_id)');
77
+
78
+ var child_list = jQuery(this).children('ul:first');
79
+
80
+ // update parent_id
81
+ if (parent_id){
82
+ input_parent_id.val(jQuery(parent_id).val());
83
+ input_menu_id.val('');
84
+ }else{
85
+ input_parent_id.val('');
86
+ input_menu_id.val(get_id_from_rails_url());
87
+ }
88
+
89
+ // update those of its children
90
+ if (child_list.length > 0)
91
+ update_menu_names_and_ids(child_list, name + '[children_attributes]', id + '_children_attributes_');
92
+ });
93
+ }
@@ -0,0 +1,86 @@
1
+ //open widget/blocks tree's dialog box
2
+ function openBlockDialog(element, container){
3
+ removeClasses();
4
+ addBlockClasses();
5
+ if(container != null){
6
+ container.addClass('selectedPageCol');
7
+ }
8
+ jQuery('.lightbox-container').dialog('open');
9
+ if(element.hasClass('static-content')){
10
+ toggleHoverlayTrees('static-tab');
11
+ }
12
+ else if(element.hasClass('widget-content')){
13
+ toggleHoverlayTrees('widget-tab')
14
+ }
15
+ return false;
16
+ }
17
+
18
+ //open pages tree's dialog box
19
+ function openPageDialog(element){
20
+ var block_id = get_rails_element_id(element);
21
+ // changes all href to page block link url
22
+ jQuery('.lightbox-container .small-icons.page').each(function(){
23
+ var page_id = get_rails_element_id(this);
24
+ jQuery(this).attr('href', '/admin/pages/' + page_id + '/blocks/' + block_id + '/link');
25
+ });
26
+
27
+ removeClasses();
28
+ addPageClasses(block_id);
29
+ jQuery('.lightbox-container').dialog('open');
30
+ return false;
31
+ }
32
+
33
+ //Switch widget/blocks tree in dialog box
34
+ function toggleHoverlayTrees(elementname){
35
+ if(!jQuery('.'+elementname).hasClass('selected')){
36
+ jQuery('.'+elementname).addClass('selected');
37
+ jQuery('.'+elementname).siblings().removeClass('selected');
38
+ jQuery('#widgets, #blocks').toggleClass('hidden');
39
+ }
40
+ }
41
+
42
+ //the selected block/widget in dialog box, is put in block/widget list
43
+ function putInBlockList(type, name, id){
44
+ var content = '';
45
+ if(jQuery('.selectedPageCol').length > 0){
46
+ firstInput = jQuery('.selectedPageCol input')[0];
47
+ content = '\
48
+ <div class="block-container">\n\
49
+ <span class="block-type">\n\
50
+ <span class="handler">\n\
51
+ <span class="inner">&nbsp;</span>\n\
52
+ </span>'+type+'</span>\n\
53
+ <span class="block-name">'+name+'\n\
54
+ </span>\n\
55
+ <a href="/admin/blocks/'+id+'/edit" onclick="window.open(this.href); return false;" class="small-icons edit-link">\n\
56
+ <a href="#" class="big-icons gray-destroy"/>\n\
57
+ <input id="page_block_ids_" type="hidden" value="'+id+'" class="block-selected" name="'+jQuery(firstInput).attr('name')+'"/>\n\
58
+ </div>';
59
+ jQuery('.selectedPageCol .nested_sortable').append(content);
60
+ }
61
+ else{
62
+ content = '\
63
+ <div class="block-container">\n\
64
+ <span class="block-type">\n\
65
+ <span class="handler">\n\
66
+ <span class="inner">&nbsp;</span>\n\
67
+ </span>'+type+'</span>\n\
68
+ <span class="block-name">'+name+'\n\
69
+ </span>\n\
70
+ <a href="/admin/blocks/'+id+'/edit" onclick="window.open(this.href); return false;" class="small-icons edit-link">\n\
71
+ <a href="#" class="big-icons gray-destroy"/>\n\
72
+ <input id="page_block_ids_" type="hidden" value="'+id+'" class="block-selected" name="page[page_cols_attributes][0][block_ids][]"/>\n\
73
+ </div>';
74
+ jQuery('.fieldset .nested_sortable').append(content);
75
+ }
76
+ }
77
+
78
+ //the selected page in dialog box, is put in page list
79
+ function putInPageList(name, confirm_msg, block_id, id){
80
+ jQuery('#links_block_' + block_id).append('\
81
+ <span id="block_' + block_id + '_page_' + id + '" class="block-selected">\n\
82
+ <a class="big-icons big-icons-verti-delete-icon" href="#" onclick="if (confirm(\'' + confirm_msg + '\')) { jQuery.ajax({data:\'_method=delete\' + \'&authenticity_token=\' + encodeURIComponent(window._forgeos_js_vars.token), dataType:\'script\', success:function(request){jQuery(\'#block_' + block_id + '_page_' + id + '\').remove()}, type:\'post\', url:\'/admin/pages/' + id + '/blocks/' + block_id + '/unlink\'}); }; return false;"/>\n\
83
+ <a href="/admin/pages/' + id + '">' + name + '</a>\n\
84
+ <br/>\n\
85
+ </span>');
86
+ }
@@ -0,0 +1,8 @@
1
+ // initialize tree for page associations
2
+ function init_association_page_tree(selector, object_name){
3
+ init_association_category_tree(selector, object_name, 'page_col', 'association_page');
4
+ }
5
+ // initialize block category associations
6
+ function init_association_block_category_tree(selector, object_name){
7
+ init_association_category_tree(selector, object_name, 'block_category', 'association_categories');
8
+ }
@@ -0,0 +1,117 @@
1
+ /* --- WIDGET ACTUALITIES --- */
2
+
3
+ function create_actuality(){
4
+ new_actuality = '<div id="item_' + false_id + '" class="block-container widget-modify actuality">';
5
+ new_actuality += jQuery('#empty_actuality').html().replace(/EMPTY_ID/g, false_id);
6
+ new_actuality += '</div>';
7
+
8
+ title = jQuery('#widget_actuality_items_attributes_FORM_ID_title').val();
9
+ content = jQuery('#widget_actuality_items_attributes_FORM_ID_content').val();
10
+
11
+ if (title == '' || content == '') {
12
+ alert('The two fields are required.')
13
+ } else {
14
+ jQuery('#widget_actuality_items_attributes_FORM_ID_title').val('');
15
+ jQuery('#widget_actuality_items_attributes_FORM_ID_content').val('');
16
+
17
+ jQuery('#actualities').append(new_actuality);
18
+
19
+ p_title = '<p id="widget_actuality_item_title_'+false_id+'" class="widget_actuality_title">'+title+'</p>';
20
+ p_content = '<p id="widget_actuality_item_content_'+false_id+'" class="widget_actuality_content">'+content+'</p>';
21
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_title').before(p_title);
22
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_title').val(title);
23
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_content').before(p_content);
24
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_content').val(content);
25
+
26
+ // inputs = jQuery(new_actuality).find('input');
27
+ // jQuery(inputs[inputs.length - 1]).val(title);
28
+ // jQuery(inputs[inputs.length - 1]).before(p_title);
29
+ //
30
+ // jQuery(new_actuality).find('textarea').val(content);
31
+ // jQuery(new_actuality).find('textarea').before(p_content);
32
+
33
+ jQuery('.lightbox-actuality').dialog('close');
34
+ false_id--;
35
+ update_block_container_positions(jQuery('#actualities'));
36
+ }
37
+ }
38
+
39
+ function duplicate_actuality(item_id) {
40
+ block = jQuery('#'+item_id);
41
+
42
+ block_array = item_id.split('_');
43
+ id = block_array[1];
44
+
45
+ inputs = block.find('input');
46
+ title = jQuery(inputs[inputs.length - 1]).val();
47
+ content = jQuery(block.find('textarea')).val();
48
+
49
+ new_actuality = '<div id="item_'+ false_id +'" class="block-container widget-modify">';
50
+ new_actuality += jQuery('#empty_actuality').clone().html().replace(/EMPTY_ID/g, false_id);
51
+ new_actuality += '</div>';
52
+
53
+ // new_actuality = block.clone();
54
+ // regexp = new RegExp('_'+id,"gi");
55
+ // new_actuality.html().replace(regexp, false_id);
56
+
57
+
58
+ block.after(new_actuality);
59
+
60
+ p_title = '<p id="widget_actuality_item_title_'+false_id+'" class="widget_actuality_title">'+title+'</p>';
61
+ p_content = '<p id="widget_actuality_item_content_'+false_id+'" class="widget_actuality_content">'+content+'</p>';
62
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_title').before(p_title);
63
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_title').val(title);
64
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_content').before(p_content);
65
+ jQuery('#widget_actuality_items_attributes_'+ false_id +'_content').val(content);
66
+
67
+ false_id--;
68
+
69
+ }
70
+
71
+ function edit_actuality(edit_link) {
72
+ block = jQuery(edit_link).parents('.block-container');
73
+
74
+ block_id = block.attr('id').split('_');
75
+ actuality_id = block_id[1];
76
+
77
+ inputs = block.find('input');
78
+ title = jQuery(inputs[inputs.length - 1]).val();
79
+ content = jQuery(block.find('textarea')).val();
80
+
81
+ jQuery('#widget_actuality_items_attributes_FORM_ID_title').val(title);
82
+ jQuery('#widget_actuality_items_attributes_FORM_ID_content').val(content);
83
+ }
84
+
85
+ function update_actuality() {
86
+ block = jQuery('#item_'+actuality_id);
87
+
88
+ title = jQuery('#widget_actuality_items_attributes_FORM_ID_title').val();
89
+ content = jQuery('#widget_actuality_items_attributes_FORM_ID_content').val();
90
+
91
+ jQuery('#widget_actuality_items_attributes_FORM_ID_title').val('');
92
+ jQuery('#widget_actuality_items_attributes_FORM_ID_content').val('');
93
+
94
+ inputs = block.find('input');
95
+ jQuery(inputs[inputs.length - 1]).val(title);
96
+ jQuery('#widget_actuality_item_title_'+actuality_id).html(title);
97
+
98
+ jQuery(block.find('textarea')).val(content);
99
+ jQuery('#widget_actuality_item_content_'+actuality_id).html(content);
100
+
101
+ jQuery('.lightbox-actuality').dialog('close');
102
+ }
103
+
104
+ // hide actuality container and set item delete value to 1
105
+ function remove_actuality(destroy_link){
106
+ block = jQuery(destroy_link).parents('.block-container');
107
+ jQuery(block).hide();
108
+ jQuery(block).find('.delete').val(1);
109
+ update_block_container_positions(jQuery('#actualities'));
110
+ }
111
+
112
+ // empty actuality form fields of overlay
113
+ function empty_actuality_overlay_fields(){
114
+ var box = jQuery('.lightbox-actuality');
115
+ jQuery(box).find('.widget_actuality_title input').val('');
116
+ jQuery(box).find('.widget_actuality_content textarea').val('');
117
+ }
@@ -0,0 +1,131 @@
1
+ var false_id = -1;
2
+ var current_carousel_item_link = null;
3
+
4
+ jQuery(document).ready(function(){
5
+
6
+ jQuery('.change-picture').live('click',function(){
7
+ current_carousel_item_link = jQuery(this).attr('id');
8
+ openimageUploadDialog(jQuery(this));
9
+ return false;
10
+ });
11
+
12
+ jQuery('.button-carousel-item').bind('click', function() {
13
+ add_new_carousel_item('item_' + false_id);
14
+ return false;
15
+ });
16
+
17
+ // Duplicate widget carousel item
18
+ jQuery('.block-container.widget-modify.carousel .duplicate-link').live('click',function(){
19
+ // get source carousel
20
+ var src_item = jQuery(this).parents('.block-container').find('.inner_block-container');
21
+ var display_block = jQuery(src_item.children('.block-name')[0]);
22
+ var link = jQuery(display_block).find('a');
23
+
24
+ // attribute values
25
+ var title = link.html();
26
+ var url = link.attr('href');
27
+ var description = jQuery(display_block).find('p').html();
28
+
29
+ // create new empty carousel item
30
+ var item_id = 'item_' + false_id;
31
+ add_new_carousel_item(item_id);
32
+ var new_item = jQuery('#carousel_items').find('#' + item_id);
33
+
34
+ // picture
35
+ var src_img = jQuery(src_item).find('img');
36
+ var new_img = jQuery(new_item).find('img');
37
+
38
+ jQuery(new_img).attr('src', jQuery(src_img).attr('src'));
39
+ jQuery(new_img).attr('alt', jQuery(src_img).attr('alt'));
40
+ jQuery(new_img).nextAll('input').val(jQuery(src_img).nextAll('input').val());
41
+
42
+ // copy value of each input/textarea
43
+ jQuery(new_item).find('input, textarea, select').each(function(){
44
+ switch(get_rails_element_id(jQuery(this)))
45
+ {
46
+ case 'title':
47
+ jQuery(this).val(title);
48
+ break;
49
+ case 'url':
50
+ jQuery(this).val(url.replace('http://', ''));
51
+ break;
52
+ case 'description':
53
+ jQuery(this).val(description);
54
+ break;
55
+ }
56
+ });
57
+
58
+ // copy value for display block
59
+ var new_display_block = jQuery(new_item.children('.block-name')[0]);
60
+ jQuery(new_display_block).children('a').html(title);
61
+ jQuery(new_display_block).children('href').html(url);
62
+ jQuery(new_display_block).find('p').html(description);
63
+ return false;
64
+ });
65
+
66
+ //Edition mode in widget carousel item edit
67
+ jQuery('.block-container.widget-modify.carousel .edit-link, .block-container.widget-modify.carousel .back-link').live('click',function(){
68
+ var blockContainer = jQuery(this).parents('.block-container.widget-modify').find('.inner_block-container');
69
+ var blockNameBlocks = blockContainer.children('.block-name');
70
+ var blockType = blockContainer.children('.block-type');
71
+
72
+ blockType.toggle();
73
+ blockNameBlocks.toggle();
74
+ blockContainer.toggleClass('open');
75
+
76
+ // on closing edition block
77
+ if (!jQuery(blockContainer).hasClass('open')){
78
+ var display_block = blockNameBlocks[0];
79
+ var edition_block = blockNameBlocks[1];
80
+ var link = jQuery(display_block).find('a');
81
+ var edition_img = jQuery(edition_block).find('img');
82
+ var display_img = jQuery(blockType).find('img');
83
+
84
+ // update attributes
85
+ if (jQuery(this).hasClass('edit-link')) {
86
+ // picture
87
+ jQuery(display_img).attr('src', jQuery(edition_img).attr('src'));
88
+ jQuery(display_img).attr('alt', jQuery(edition_img).attr('alt'));
89
+
90
+ // title, url and description
91
+ jQuery(edition_block).find('input, textarea, select').each(function(){
92
+ switch(get_rails_element_id(jQuery(this)))
93
+ {
94
+ case 'title':
95
+ link.html(jQuery(this).val());
96
+ break;
97
+ case 'url':
98
+ link.attr('href', 'http://' + jQuery(this).val());
99
+ break;
100
+ case 'description':
101
+ jQuery(display_block).find('p').html(jQuery(this).val());
102
+ break;
103
+ }
104
+ });
105
+ }
106
+ // reset attributes
107
+ else {
108
+ // picture
109
+ jQuery(edition_img).attr('src', jQuery(display_img).attr('src'));
110
+ jQuery(edition_img).attr('alt', jQuery(display_img).attr('alt'));
111
+
112
+ // title, url and description
113
+ jQuery(edition_block).find('input, textarea, select').each(function(){
114
+ switch(get_rails_element_id(jQuery(this)))
115
+ {
116
+ case 'title':
117
+ jQuery(this).val(link.html());
118
+ break;
119
+ case 'url':
120
+ jQuery(this).val(link.attr('href').replace('http://', ''));
121
+ break;
122
+ case 'description':
123
+ jQuery(this).val(jQuery(display_block).find('p').html());
124
+ break;
125
+ }
126
+ });
127
+ }
128
+ }
129
+ return false;
130
+ });
131
+ });