camaleon_cms 0.0.1

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 (653) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +37 -0
  3. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  4. data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  5. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  6. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  7. data/app/assets/images/admin/no_image.jpg +0 -0
  8. data/app/assets/images/bg-tree.jpeg +0 -0
  9. data/app/assets/images/camaleon-dark.png +0 -0
  10. data/app/assets/images/camaleon.png +0 -0
  11. data/app/assets/images/category-icon.png +0 -0
  12. data/app/assets/images/image-not-found.png +0 -0
  13. data/app/assets/images/language/de.png +0 -0
  14. data/app/assets/images/language/en.png +0 -0
  15. data/app/assets/images/language/es.png +0 -0
  16. data/app/assets/images/language/fr.png +0 -0
  17. data/app/assets/images/language/it.png +0 -0
  18. data/app/assets/images/language/pt.png +0 -0
  19. data/app/assets/images/language/zh.png +0 -0
  20. data/app/assets/images/loader.gif +0 -0
  21. data/app/assets/images/users/no-image.jpg +0 -0
  22. data/app/assets/javascripts/admin/actions.js +248 -0
  23. data/app/assets/javascripts/admin/admin-manifest.js +32 -0
  24. data/app/assets/javascripts/admin/bootstrap-colorpicker.js +540 -0
  25. data/app/assets/javascripts/admin/bootstrap-datepicker.js +1690 -0
  26. data/app/assets/javascripts/admin/bootstrap-datetimepicker.min.js +26 -0
  27. data/app/assets/javascripts/admin/bootstrap-select.js +1022 -0
  28. data/app/assets/javascripts/admin/core.js +267 -0
  29. data/app/assets/javascripts/admin/custom_fields.js +165 -0
  30. data/app/assets/javascripts/admin/data.js +78 -0
  31. data/app/assets/javascripts/admin/elfinder-manifest.js +7 -0
  32. data/app/assets/javascripts/admin/elfinder/elfinder.full.js +12646 -0
  33. data/app/assets/javascripts/admin/elfinder/i18n/elfinder.es.js +294 -0
  34. data/app/assets/javascripts/admin/elfinder/i18n/elfinder.fr.js +298 -0
  35. data/app/assets/javascripts/admin/elfinder/proxy/elFinderSupportVer1.js +338 -0
  36. data/app/assets/javascripts/admin/elfinder/upload_elfinder.js +236 -0
  37. data/app/assets/javascripts/admin/es.js +27 -0
  38. data/app/assets/javascripts/admin/form-builder/formbuilder.js +1250 -0
  39. data/app/assets/javascripts/admin/form-builder/vendor.js +3072 -0
  40. data/app/assets/javascripts/admin/form/cropper.min.js +9 -0
  41. data/app/assets/javascripts/admin/form/jquery.form.js +911 -0
  42. data/app/assets/javascripts/admin/jquery-sieve.js +6 -0
  43. data/app/assets/javascripts/admin/jquery-ui.min.js +10 -0
  44. data/app/assets/javascripts/admin/jquery.nestable.js +485 -0
  45. data/app/assets/javascripts/admin/jquery.slugify.js +65 -0
  46. data/app/assets/javascripts/admin/jquery.tagsinput.min.js +1 -0
  47. data/app/assets/javascripts/admin/jquery.validate.js +1415 -0
  48. data/app/assets/javascripts/admin/login.js.coffee +7 -0
  49. data/app/assets/javascripts/admin/login_manifest.js +18 -0
  50. data/app/assets/javascripts/admin/modal.js +94 -0
  51. data/app/assets/javascripts/admin/nav-menu.js +110 -0
  52. data/app/assets/javascripts/admin/plugins.js +637 -0
  53. data/app/assets/javascripts/admin/post.js +274 -0
  54. data/app/assets/javascripts/admin/tageditor/jquery.caret.min.js +2 -0
  55. data/app/assets/javascripts/admin/tageditor/jquery.tag-editor.js +352 -0
  56. data/app/assets/javascripts/admin/tinymce/langs/es.js +177 -0
  57. data/app/assets/javascripts/admin/tinymce/langs/readme.md +3 -0
  58. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-cool.gif +0 -0
  59. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-cry.gif +0 -0
  60. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-embarassed.gif +0 -0
  61. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif +0 -0
  62. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-frown.gif +0 -0
  63. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-innocent.gif +0 -0
  64. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-kiss.gif +0 -0
  65. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-laughing.gif +0 -0
  66. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-money-mouth.gif +0 -0
  67. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-sealed.gif +0 -0
  68. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-smile.gif +0 -0
  69. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-surprised.gif +0 -0
  70. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-tongue-out.gif +0 -0
  71. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-undecided.gif +0 -0
  72. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-wink.gif +0 -0
  73. data/app/assets/javascripts/admin/tinymce/plugins/emoticons/img/smiley-yell.gif +0 -0
  74. data/app/assets/javascripts/admin/tinymce/plugins/filemanager/plugin.min.js +31 -0
  75. data/app/assets/javascripts/admin/tinymce/plugins/visualblocks/css/visualblocks.css +135 -0
  76. data/app/assets/javascripts/admin/tinymce/skins/lightgray/content.min.css.scss +4 -0
  77. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  78. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
  79. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  80. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  81. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  82. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce.svg +83 -0
  83. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  84. data/app/assets/javascripts/admin/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  85. data/app/assets/javascripts/admin/tinymce/skins/lightgray/img/anchor.gif +0 -0
  86. data/app/assets/javascripts/admin/tinymce/skins/lightgray/img/loader.gif +0 -0
  87. data/app/assets/javascripts/admin/tinymce/skins/lightgray/img/object.gif +0 -0
  88. data/app/assets/javascripts/admin/tinymce/skins/lightgray/img/trans.gif +0 -0
  89. data/app/assets/javascripts/admin/tinymce/themes/modern/theme.min.js +1 -0
  90. data/app/assets/javascripts/admin/tinymce/tinymce.min.js +11 -0
  91. data/app/assets/javascripts/admin/translator.js +109 -0
  92. data/app/assets/javascripts/admin/underscore.js +1536 -0
  93. data/app/assets/javascripts/admin/widgets.js +53 -0
  94. data/app/assets/javascripts/audio/alert.mp3 +0 -0
  95. data/app/assets/javascripts/audio/fail.mp3 +0 -0
  96. data/app/assets/javascripts/bootstrap.min.js +7 -0
  97. data/app/assets/javascripts/elfinder_front.js +85 -0
  98. data/app/assets/javascripts/gibberish-aes.js +1017 -0
  99. data/app/assets/javascripts/jquery-1.11.3.min.js +5 -0
  100. data/app/assets/stylesheets/admin/admin-manifest.css +28 -0
  101. data/app/assets/stylesheets/admin/animate/animate.min.css +6 -0
  102. data/app/assets/stylesheets/admin/bootstrap/bootstrap-datetimepicker.css +339 -0
  103. data/app/assets/stylesheets/admin/bootstrap/bootstrap.min.css +5 -0
  104. data/app/assets/stylesheets/admin/bootstrap/images/glyphicons-halflings.png +0 -0
  105. data/app/assets/stylesheets/admin/core.scss +345 -0
  106. data/app/assets/stylesheets/admin/cropper/cropper.min.css +52 -0
  107. data/app/assets/stylesheets/admin/elfinder-manifest.css +6 -0
  108. data/app/assets/stylesheets/admin/elfinder/elfinder-theme.scss +191 -0
  109. data/app/assets/stylesheets/admin/elfinder/elfinder.css +1922 -0
  110. data/app/assets/stylesheets/admin/elfinder/images/arrows-active.png +0 -0
  111. data/app/assets/stylesheets/admin/elfinder/images/arrows-normal.png +0 -0
  112. data/app/assets/stylesheets/admin/elfinder/images/crop.gif +0 -0
  113. data/app/assets/stylesheets/admin/elfinder/images/dialogs.png +0 -0
  114. data/app/assets/stylesheets/admin/elfinder/images/icons-big.png +0 -0
  115. data/app/assets/stylesheets/admin/elfinder/images/icons-small.png +0 -0
  116. data/app/assets/stylesheets/admin/elfinder/images/logo.png +0 -0
  117. data/app/assets/stylesheets/admin/elfinder/images/progress.gif +0 -0
  118. data/app/assets/stylesheets/admin/elfinder/images/quicklook-bg.png +0 -0
  119. data/app/assets/stylesheets/admin/elfinder/images/quicklook-icons.png +0 -0
  120. data/app/assets/stylesheets/admin/elfinder/images/resize.png +0 -0
  121. data/app/assets/stylesheets/admin/elfinder/images/spinner-mini.gif +0 -0
  122. data/app/assets/stylesheets/admin/elfinder/images/toolbar.png +0 -0
  123. data/app/assets/stylesheets/admin/elfinder/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  124. data/app/assets/stylesheets/admin/elfinder/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  125. data/app/assets/stylesheets/admin/elfinder/images/ui-icons_222222_256x240.png +0 -0
  126. data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.eot +0 -0
  127. data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.svg +1831 -0
  128. data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.ttf +0 -0
  129. data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.woff +0 -0
  130. data/app/assets/stylesheets/admin/fonts/glyphicons-halflings-regular.eot +0 -0
  131. data/app/assets/stylesheets/admin/fonts/glyphicons-halflings-regular.svg +229 -0
  132. data/app/assets/stylesheets/admin/fonts/glyphicons-halflings-regular.ttf +0 -0
  133. data/app/assets/stylesheets/admin/fonts/glyphicons-halflings-regular.woff +0 -0
  134. data/app/assets/stylesheets/admin/form-builder/formbuilder.css +71 -0
  135. data/app/assets/stylesheets/admin/img/bg.png +0 -0
  136. data/app/assets/stylesheets/admin/img/colorpicker/alpha.png +0 -0
  137. data/app/assets/stylesheets/admin/img/colorpicker/hue.png +0 -0
  138. data/app/assets/stylesheets/admin/img/colorpicker/saturation.png +0 -0
  139. data/app/assets/stylesheets/admin/img/girls-1.jpg +0 -0
  140. data/app/assets/stylesheets/admin/img/jquery/resize-icon.png +0 -0
  141. data/app/assets/stylesheets/admin/img/loading.gif +1 -0
  142. data/app/assets/stylesheets/admin/img/logo-small.png +0 -0
  143. data/app/assets/stylesheets/admin/img/logo.png +0 -0
  144. data/app/assets/stylesheets/admin/img/no_image.jpg +0 -0
  145. data/app/assets/stylesheets/admin/img/rormeleon-white.png +0 -0
  146. data/app/assets/stylesheets/admin/img/thumb_no_found.jpg +0 -0
  147. data/app/assets/stylesheets/admin/jquery.tagsinput.css +72 -0
  148. data/app/assets/stylesheets/admin/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  149. data/app/assets/stylesheets/admin/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  150. data/app/assets/stylesheets/admin/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  151. data/app/assets/stylesheets/admin/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  152. data/app/assets/stylesheets/admin/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  153. data/app/assets/stylesheets/admin/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  154. data/app/assets/stylesheets/admin/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  155. data/app/assets/stylesheets/admin/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  156. data/app/assets/stylesheets/admin/jquery/images/ui-icons_222222_256x240.png +0 -0
  157. data/app/assets/stylesheets/admin/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  158. data/app/assets/stylesheets/admin/jquery/images/ui-icons_454545_256x240.png +0 -0
  159. data/app/assets/stylesheets/admin/jquery/images/ui-icons_888888_256x240.png +0 -0
  160. data/app/assets/stylesheets/admin/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  161. data/app/assets/stylesheets/admin/jquery/jquery-ui.scss +1226 -0
  162. data/app/assets/stylesheets/admin/nav-menu.css +54 -0
  163. data/app/assets/stylesheets/admin/nestable/jquery.nestable.css +103 -0
  164. data/app/assets/stylesheets/admin/tageditor/delete.png +0 -0
  165. data/app/assets/stylesheets/admin/tageditor/delete.svg +4 -0
  166. data/app/assets/stylesheets/admin/tageditor/jquery.tag-editor.css +49 -0
  167. data/app/assets/stylesheets/admin/theme-default.scss +8462 -0
  168. data/app/assets/stylesheets/admin/widgets.css.scss +26 -0
  169. data/app/assets/stylesheets/bootstrap.min.css.scss +5 -0
  170. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/css/style.css +84 -0
  171. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin.js +1 -0
  172. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin_src.js +90 -0
  173. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/img/youtube.png +0 -0
  174. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/index.html +86 -0
  175. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts.js +1 -0
  176. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts_src.js +81 -0
  177. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en.js +3 -0
  178. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en_dlg.js +12 -0
  179. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es.js +3 -0
  180. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es_dlg.js +12 -0
  181. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/bootstrap.css +2228 -0
  182. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/content.css +189 -0
  183. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/dialog.css +295 -0
  184. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/butt2.png +0 -0
  185. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/button-bg.png +0 -0
  186. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/buttons.png +0 -0
  187. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/down_arrow.gif +0 -0
  188. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/fade-butt.png +0 -0
  189. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/icons.png +0 -0
  190. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/items.gif +0 -0
  191. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-arrow.png +0 -0
  192. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-check.png +0 -0
  193. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/progress.gif +0 -0
  194. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/tabs.gif +0 -0
  195. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/toolbarbg.png +0 -0
  196. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/ui.css +1163 -0
  197. data/app/controllers/admin/appearances/nav_menus_controller.rb +120 -0
  198. data/app/controllers/admin/appearances/themes_controller.rb +30 -0
  199. data/app/controllers/admin/appearances/widgets/assign_controller.rb +40 -0
  200. data/app/controllers/admin/appearances/widgets/main_controller.rb +57 -0
  201. data/app/controllers/admin/appearances/widgets/sidebar_controller.rb +59 -0
  202. data/app/controllers/admin/appearances_controller.rb +17 -0
  203. data/app/controllers/admin/categories_controller.rb +77 -0
  204. data/app/controllers/admin/comments_controller.rb +119 -0
  205. data/app/controllers/admin/installers_controller.rb +40 -0
  206. data/app/controllers/admin/media_controller.rb +55 -0
  207. data/app/controllers/admin/plugins_controller.rb +45 -0
  208. data/app/controllers/admin/post_tags_controller.rb +83 -0
  209. data/app/controllers/admin/posts/drafts_controller.rb +76 -0
  210. data/app/controllers/admin/posts_controller.rb +195 -0
  211. data/app/controllers/admin/sessions_controller.rb +144 -0
  212. data/app/controllers/admin/settings/custom_fields_controller.rb +85 -0
  213. data/app/controllers/admin/settings/post_types_controller.rb +73 -0
  214. data/app/controllers/admin/settings/sites_controller.rb +89 -0
  215. data/app/controllers/admin/settings_controller.rb +60 -0
  216. data/app/controllers/admin/user_roles_controller.rb +76 -0
  217. data/app/controllers/admin/users_controller.rb +120 -0
  218. data/app/controllers/admin_controller.rb +56 -0
  219. data/app/controllers/apps/plugins_admin_controller.rb +21 -0
  220. data/app/controllers/apps/plugins_front_controller.rb +21 -0
  221. data/app/controllers/apps/themes_admin_controller.rb +21 -0
  222. data/app/controllers/apps/themes_front_controller.rb +21 -0
  223. data/app/controllers/camaleon_controller.rb +87 -0
  224. data/app/controllers/concerns/frontend_concern.rb +57 -0
  225. data/app/controllers/frontend_controller.rb +240 -0
  226. data/app/decorators/application_decorator.rb +81 -0
  227. data/app/decorators/category_decorator.rb +61 -0
  228. data/app/decorators/custom_field_decorator.rb +31 -0
  229. data/app/decorators/custom_fields_concern.rb +33 -0
  230. data/app/decorators/metas_decorator_methods.rb +19 -0
  231. data/app/decorators/post_comment_decorator.rb +26 -0
  232. data/app/decorators/post_decorator.rb +162 -0
  233. data/app/decorators/post_tag_decorator.rb +36 -0
  234. data/app/decorators/post_type_decorator.rb +56 -0
  235. data/app/decorators/site_decorator.rb +136 -0
  236. data/app/decorators/term_taxonomy_decorator.rb +97 -0
  237. data/app/decorators/theme_decorator.rb +16 -0
  238. data/app/decorators/user_decorator.rb +67 -0
  239. data/app/decorators/widget_decorator.rb +13 -0
  240. data/app/helpers/admin/application_helper.rb +27 -0
  241. data/app/helpers/admin/breadcrumb_helper.rb +37 -0
  242. data/app/helpers/admin/category_helper.rb +22 -0
  243. data/app/helpers/admin/custom_fields_helper.rb +329 -0
  244. data/app/helpers/admin/menus_helper.rb +199 -0
  245. data/app/helpers/admin/post_type_helper.rb +50 -0
  246. data/app/helpers/camaleon_helper.rb +65 -0
  247. data/app/helpers/captcha_helper.rb +90 -0
  248. data/app/helpers/content_helper.rb +35 -0
  249. data/app/helpers/frontend/application_helper.rb +41 -0
  250. data/app/helpers/frontend/nav_menu_helper.rb +177 -0
  251. data/app/helpers/frontend/seo_helper.rb +60 -0
  252. data/app/helpers/frontend/site_helper.rb +60 -0
  253. data/app/helpers/hooks_helper.rb +54 -0
  254. data/app/helpers/html_helper.rb +114 -0
  255. data/app/helpers/plugins_helper.rb +129 -0
  256. data/app/helpers/session_helper.rb +108 -0
  257. data/app/helpers/short_code_helper.rb +82 -0
  258. data/app/helpers/site_helper.rb +124 -0
  259. data/app/helpers/theme_helper.rb +51 -0
  260. data/app/helpers/uploader_helper.rb +144 -0
  261. data/app/helpers/user_roles_helper.rb +14 -0
  262. data/app/mailers/html_mailer.rb +47 -0
  263. data/app/models/ability.rb +113 -0
  264. data/app/models/category.rb +55 -0
  265. data/app/models/concerns/categories_tags_for_posts.rb +140 -0
  266. data/app/models/concerns/custom_fields_read.rb +221 -0
  267. data/app/models/concerns/metas.rb +133 -0
  268. data/app/models/concerns/metas_saved.rb +10 -0
  269. data/app/models/concerns/site_public.rb +23 -0
  270. data/app/models/custom_field.rb +34 -0
  271. data/app/models/custom_field_group.rb +121 -0
  272. data/app/models/custom_fields_relationship.rb +26 -0
  273. data/app/models/meta.rb +16 -0
  274. data/app/models/nav_menu.rb +41 -0
  275. data/app/models/nav_menu_item.rb +36 -0
  276. data/app/models/plugin.rb +57 -0
  277. data/app/models/plugins.rb +13 -0
  278. data/app/models/post.rb +89 -0
  279. data/app/models/post_comment.rb +44 -0
  280. data/app/models/post_default.rb +78 -0
  281. data/app/models/post_relationship.rb +26 -0
  282. data/app/models/post_tag.rb +15 -0
  283. data/app/models/post_type.rb +125 -0
  284. data/app/models/site.rb +337 -0
  285. data/app/models/term_relationship.rb +26 -0
  286. data/app/models/term_taxonomy.rb +156 -0
  287. data/app/models/theme.rb +33 -0
  288. data/app/models/themes.rb +13 -0
  289. data/app/models/user.rb +172 -0
  290. data/app/models/user_relationship.rb +17 -0
  291. data/app/models/user_role.rb +139 -0
  292. data/app/models/widget.rb +13 -0
  293. data/app/models/widget/assigned.rb +34 -0
  294. data/app/models/widget/main.rb +52 -0
  295. data/app/models/widget/sidebar.rb +28 -0
  296. data/app/views/_flash_messages.html.erb +39 -0
  297. data/app/views/admin/appearances/_external_menu.html.erb +16 -0
  298. data/app/views/admin/appearances/menu.html.erb +199 -0
  299. data/app/views/admin/appearances/themes/index.html.erb +68 -0
  300. data/app/views/admin/appearances/themes/preview.html.erb +1 -0
  301. data/app/views/admin/appearances/themes/theme_load_data.html.erb +40 -0
  302. data/app/views/admin/appearances/widgets/assign/_form.html.erb +35 -0
  303. data/app/views/admin/appearances/widgets/main/form.html.erb +27 -0
  304. data/app/views/admin/appearances/widgets/main/index.html.erb +91 -0
  305. data/app/views/admin/appearances/widgets/sidebar/form.html.erb +23 -0
  306. data/app/views/admin/categories/_form.html.erb +42 -0
  307. data/app/views/admin/categories/edit.html.erb +18 -0
  308. data/app/views/admin/categories/index.html.erb +81 -0
  309. data/app/views/admin/comments/form.html.erb +55 -0
  310. data/app/views/admin/comments/index.html.erb +58 -0
  311. data/app/views/admin/comments/reply.html.erb +197 -0
  312. data/app/views/admin/dashboard/index.html.erb +25 -0
  313. data/app/views/admin/installers/form.html.erb +19 -0
  314. data/app/views/admin/installers/welcome.html.erb +8 -0
  315. data/app/views/admin/media/iframe.html.erb +33 -0
  316. data/app/views/admin/media/index.html.erb +31 -0
  317. data/app/views/admin/plugins/_plugins_list.html.erb +59 -0
  318. data/app/views/admin/plugins/index.html.erb +37 -0
  319. data/app/views/admin/post_tags/_form.html.erb +34 -0
  320. data/app/views/admin/post_tags/edit.html.erb +18 -0
  321. data/app/views/admin/post_tags/index.html.erb +79 -0
  322. data/app/views/admin/posts/_filter_posts.html.erb +6 -0
  323. data/app/views/admin/posts/form.html.erb +294 -0
  324. data/app/views/admin/posts/index.html.erb +121 -0
  325. data/app/views/admin/posts/show.html.erb +20 -0
  326. data/app/views/admin/sessions/forgot.html.erb +51 -0
  327. data/app/views/admin/sessions/login.html.erb +39 -0
  328. data/app/views/admin/sessions/register.html.erb +63 -0
  329. data/app/views/admin/settings/custom_fields/_meta_data.html.erb +102 -0
  330. data/app/views/admin/settings/custom_fields/_render.html.erb +73 -0
  331. data/app/views/admin/settings/custom_fields/fields/audio.html.erb +4 -0
  332. data/app/views/admin/settings/custom_fields/fields/checkbox.html.erb +3 -0
  333. data/app/views/admin/settings/custom_fields/fields/checkboxes.html.erb +5 -0
  334. data/app/views/admin/settings/custom_fields/fields/colorpicker.html.erb +7 -0
  335. data/app/views/admin/settings/custom_fields/fields/date.html.erb +7 -0
  336. data/app/views/admin/settings/custom_fields/fields/editor.html.erb +4 -0
  337. data/app/views/admin/settings/custom_fields/fields/email.html.erb +3 -0
  338. data/app/views/admin/settings/custom_fields/fields/field_attrs.html.erb +10 -0
  339. data/app/views/admin/settings/custom_fields/fields/file.html.erb +4 -0
  340. data/app/views/admin/settings/custom_fields/fields/image.html.erb +4 -0
  341. data/app/views/admin/settings/custom_fields/fields/numeric.html.erb +4 -0
  342. data/app/views/admin/settings/custom_fields/fields/phone.html.erb +3 -0
  343. data/app/views/admin/settings/custom_fields/fields/posts.html.erb +17 -0
  344. data/app/views/admin/settings/custom_fields/fields/radio.html.erb +5 -0
  345. data/app/views/admin/settings/custom_fields/fields/select.html.erb +7 -0
  346. data/app/views/admin/settings/custom_fields/fields/select_eval.html.erb +3 -0
  347. data/app/views/admin/settings/custom_fields/fields/text_area.html.erb +3 -0
  348. data/app/views/admin/settings/custom_fields/fields/text_box.html.erb +3 -0
  349. data/app/views/admin/settings/custom_fields/fields/url.html.erb +3 -0
  350. data/app/views/admin/settings/custom_fields/fields/users.html.erb +8 -0
  351. data/app/views/admin/settings/custom_fields/fields/video.html.erb +4 -0
  352. data/app/views/admin/settings/custom_fields/form.html.erb +249 -0
  353. data/app/views/admin/settings/custom_fields/get_items.html.erb +199 -0
  354. data/app/views/admin/settings/custom_fields/index.html.erb +69 -0
  355. data/app/views/admin/settings/languages.html.erb +68 -0
  356. data/app/views/admin/settings/post_types/_form.html.erb +93 -0
  357. data/app/views/admin/settings/post_types/edit.html.erb +18 -0
  358. data/app/views/admin/settings/post_types/index.html.erb +80 -0
  359. data/app/views/admin/settings/site.html.erb +124 -0
  360. data/app/views/admin/settings/sites/form.html.erb +50 -0
  361. data/app/views/admin/settings/sites/index.html.erb +56 -0
  362. data/app/views/admin/taxonomy/_form.html.erb +62 -0
  363. data/app/views/admin/taxonomy/edit.html.erb +18 -0
  364. data/app/views/admin/taxonomy/index.html.erb +79 -0
  365. data/app/views/admin/user_roles/form.html.erb +168 -0
  366. data/app/views/admin/user_roles/index.html.erb +54 -0
  367. data/app/views/admin/users/form.html.erb +305 -0
  368. data/app/views/admin/users/index.html.erb +58 -0
  369. data/app/views/admin/users/profile.html.erb +118 -0
  370. data/app/views/admin/users/profile/_activity.html.erb +180 -0
  371. data/app/views/admin/users/profile/_settings.html.erb +15 -0
  372. data/app/views/admin/users/profile_edit.html.erb +305 -0
  373. data/app/views/default_theme/admin/settings.html.erb +1 -0
  374. data/app/views/default_theme/category.html.erb +25 -0
  375. data/app/views/default_theme/category.rss.builder +23 -0
  376. data/app/views/default_theme/index.html.erb +70 -0
  377. data/app/views/default_theme/index.rss.builder +21 -0
  378. data/app/views/default_theme/layouts/_footer.html.erb +18 -0
  379. data/app/views/default_theme/layouts/_header.html.erb +38 -0
  380. data/app/views/default_theme/layouts/index.html.erb +34 -0
  381. data/app/views/default_theme/partials/_breadcrumb.html.erb +10 -0
  382. data/app/views/default_theme/partials/_categories_list.html.erb +23 -0
  383. data/app/views/default_theme/partials/_comments.html.erb +33 -0
  384. data/app/views/default_theme/partials/_comments_list.html.erb +21 -0
  385. data/app/views/default_theme/partials/_flash_messages.html.erb +26 -0
  386. data/app/views/default_theme/partials/_forms.html.erb +19 -0
  387. data/app/views/default_theme/partials/_post_list_item.html.erb +13 -0
  388. data/app/views/default_theme/partials/_render_custom_field.html.erb +57 -0
  389. data/app/views/default_theme/partials/_search_form.html.erb +10 -0
  390. data/app/views/default_theme/partials/_sidebar.html.erb +56 -0
  391. data/app/views/default_theme/post.html.erb +40 -0
  392. data/app/views/default_theme/post.rss.builder +12 -0
  393. data/app/views/default_theme/post_tag.html.erb +17 -0
  394. data/app/views/default_theme/post_tag.rss.builder +22 -0
  395. data/app/views/default_theme/post_type.html.erb +25 -0
  396. data/app/views/default_theme/post_type.rss.builder +22 -0
  397. data/app/views/default_theme/profile.html.erb +18 -0
  398. data/app/views/default_theme/robots.text.erb +1 -0
  399. data/app/views/default_theme/search.html.erb +13 -0
  400. data/app/views/default_theme/sitemap.html.erb +0 -0
  401. data/app/views/html_mailer/other.html.erb +3 -0
  402. data/app/views/html_mailer/sender.html.erb +25 -0
  403. data/app/views/layouts/admin.html.erb +164 -0
  404. data/app/views/layouts/admin/_ajax.html.erb +2 -0
  405. data/app/views/layouts/admin/_flash_messages.html.erb +49 -0
  406. data/app/views/layouts/admin/_form_error.html.erb +10 -0
  407. data/app/views/layouts/admin/_sidebar.html.erb +31 -0
  408. data/app/views/layouts/admin/installer.html.erb +36 -0
  409. data/app/views/layouts/application.html.erb +15 -0
  410. data/app/views/layouts/login.html.erb +40 -0
  411. data/app/views/shortcode_templates/form.html.erb +1 -0
  412. data/app/views/shortcode_templates/widget.html.erb +11 -0
  413. data/config/initializers/active_record_extension.rb +24 -0
  414. data/config/initializers/assets.rb +17 -0
  415. data/config/initializers/cache_helper.rb +9 -0
  416. data/config/initializers/elfinder.rb +79 -0
  417. data/config/initializers/fix_ssl.rb +14 -0
  418. data/config/initializers/mobu.rb +24 -0
  419. data/config/initializers/page_caching.rb +35 -0
  420. data/config/initializers/rufus_cron.rb +44 -0
  421. data/config/locales/admin/en.yml +561 -0
  422. data/config/locales/admin/es.yml +560 -0
  423. data/config/locales/ar.yml +275 -0
  424. data/config/locales/common.yml +125 -0
  425. data/config/locales/de.yml +210 -0
  426. data/config/locales/en.yml +207 -0
  427. data/config/locales/es.yml +198 -0
  428. data/config/locales/fr.yml +207 -0
  429. data/config/locales/languages.yml +19 -0
  430. data/config/locales/pl.yml +237 -0
  431. data/config/locales/pt.yml +201 -0
  432. data/config/locales/routes.yml +23 -0
  433. data/config/routes.rb +10 -0
  434. data/config/routes/admin.rb +119 -0
  435. data/config/routes/frontend.rb +35 -0
  436. data/config/sitemap.rb +52 -0
  437. data/config/system.json +16 -0
  438. data/db/migrate/20150611161134_post_table_into_utf8.rb +115 -0
  439. data/lib/ca-bundle.crt +3554 -0
  440. data/lib/camaleon_cms.rb +4 -0
  441. data/lib/camaleon_cms/engine.rb +60 -0
  442. data/lib/camaleon_cms/version.rb +3 -0
  443. data/lib/captcha/bumpyroad.ttf +0 -0
  444. data/lib/captcha/captcha_0.jpg +0 -0
  445. data/lib/captcha/captcha_1.jpg +0 -0
  446. data/lib/captcha/captcha_10.jpg +0 -0
  447. data/lib/captcha/captcha_11.jpg +0 -0
  448. data/lib/captcha/captcha_2.jpg +0 -0
  449. data/lib/captcha/captcha_3.jpg +0 -0
  450. data/lib/captcha/captcha_4.jpg +0 -0
  451. data/lib/captcha/captcha_5.jpg +0 -0
  452. data/lib/captcha/captcha_6.jpg +0 -0
  453. data/lib/captcha/captcha_7.jpg +0 -0
  454. data/lib/captcha/captcha_8.jpg +0 -0
  455. data/lib/captcha/captcha_9.jpg +0 -0
  456. data/lib/ext/aes_crypt.rb +246 -0
  457. data/lib/ext/array.rb +54 -0
  458. data/lib/ext/hash.rb +41 -0
  459. data/lib/ext/string.rb +159 -0
  460. data/lib/ext/translator.rb +83 -0
  461. data/lib/generators/camaleon_cms/install_generator.rb +20 -0
  462. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/admin_controller.rb +25 -0
  463. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/assets/docs/images/screenshot_1.jpg +0 -0
  464. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/assets/docs/images/screenshot_2.jpg +0 -0
  465. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/assets/docs/images/screenshot_3.jpg +0 -0
  466. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/assets/docs/index.html +60 -0
  467. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/attack_helper.rb +99 -0
  468. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/config/config.json +31 -0
  469. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/config/custom_models.rb +4 -0
  470. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/config/locales/readme.txt +1 -0
  471. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/config/locales/translation.yml +36 -0
  472. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/config/routes_admin.txt +2 -0
  473. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/models/attack.rb +12 -0
  474. data/lib/generators/camaleon_cms/install_template/apps/plugins/attack/views/admin/settings.html.erb +49 -0
  475. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/admin_forms_controller.rb +93 -0
  476. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/css/admin/form-builder/formbuilder.css +70 -0
  477. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/css/contact-form.css +8 -0
  478. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/css/front/railsform.scss +94 -0
  479. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/css/readme.txt +1 -0
  480. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/docs/images/screenshot_1.jpg +0 -0
  481. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/docs/images/screenshot_2.jpg +0 -0
  482. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/docs/images/screenshot_3.jpg +0 -0
  483. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/docs/images/screenshot_4.jpg +0 -0
  484. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/docs/images/screenshot_5.jpg +0 -0
  485. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/docs/index.html +89 -0
  486. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/js/contact_form.js +2 -0
  487. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/js/form-builder/formbuilder.js +1271 -0
  488. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/js/form-builder/vendor.js +3072 -0
  489. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/assets/js/readme.txt +1 -0
  490. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/config/config.json +35 -0
  491. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/config/locales/readme.txt +1 -0
  492. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/config/locales/translation.yml +210 -0
  493. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/config/routes_admin.txt +4 -0
  494. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/config/routes_front.txt +2 -0
  495. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/contact_form_helper.rb +91 -0
  496. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/contact_form_html_helper.rb +157 -0
  497. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/front_controller.rb +106 -0
  498. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/models/contact_form.rb +26 -0
  499. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/views/admin_forms/_form.html.erb +33 -0
  500. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/views/admin_forms/edit.html.erb +375 -0
  501. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/views/admin_forms/index.html.erb +65 -0
  502. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/views/admin_forms/manual.html.erb +59 -0
  503. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/views/admin_forms/responses.html.erb +67 -0
  504. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/views/forms_shorcode.html.erb +27 -0
  505. data/lib/generators/camaleon_cms/install_template/apps/plugins/contact_form/views/front/index.html.erb +3 -0
  506. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/admin_controller.rb +35 -0
  507. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/assets/docs/images/screenshot_1.jpg +0 -0
  508. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/assets/docs/images/screenshot_2.jpg +0 -0
  509. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/assets/docs/index.html +58 -0
  510. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/config/config.json +21 -0
  511. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/config/locales/readme.txt +1 -0
  512. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/config/locales/translation.yml +37 -0
  513. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/config/routes_admin.txt +3 -0
  514. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/front_cache_helper.rb +154 -0
  515. data/lib/generators/camaleon_cms/install_template/apps/plugins/front_cache/views/admin/settings.html.erb +71 -0
  516. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/assets/docs/images/screenshot_1.jpg +0 -0
  517. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/assets/docs/images/screenshot_2.jpg +0 -0
  518. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/assets/docs/images/screenshot_3.jpg +0 -0
  519. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/assets/docs/images/screenshot_4.jpg +0 -0
  520. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/assets/docs/index.html +62 -0
  521. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/assets/js/form.js +29 -0
  522. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/config/config.json +24 -0
  523. data/lib/generators/camaleon_cms/install_template/apps/plugins/visibility_post/visibility_post_helper.rb +132 -0
  524. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/css/magnific-ver.css +394 -0
  525. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/css/main.css +15 -0
  526. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/css/style-ver.css.scss +224 -0
  527. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/css/wpbase.css +1 -0
  528. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/images/empe.jpg +0 -0
  529. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/images/image.png +0 -0
  530. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/images/loader.gif +0 -0
  531. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/images/zoom.png +0 -0
  532. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/js/hover.zoom.js +67 -0
  533. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/js/magnific.min.js +3 -0
  534. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/js/main-ver.js +46 -0
  535. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/js/main.js +18 -0
  536. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/assets/js/modernizr.custom.js +4 -0
  537. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/config/config.json +14 -0
  538. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/main_helper.rb +43 -0
  539. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/views/admin/settings.html.erb +4 -0
  540. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/views/index.html.erb +28 -0
  541. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/views/layouts/index.html.erb +85 -0
  542. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/views/partials/readme.txt +1 -0
  543. data/lib/generators/camaleon_cms/install_template/apps/themes/camaleon_first/views/template_sample_page.html.erb +6 -0
  544. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/css/main.css +13 -0
  545. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/css/style.css.scss +3395 -0
  546. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/css/styles.css.scss +175 -0
  547. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/COPYING.txt +9 -0
  548. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/Genericons-Regular.otf +0 -0
  549. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/LICENSE.txt +339 -0
  550. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/README.txt +123 -0
  551. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/font/genericons-regular-webfont.eot +0 -0
  552. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/font/genericons-regular-webfont.svg +135 -0
  553. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/font/genericons-regular-webfont.ttf +0 -0
  554. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/font/genericons-regular-webfont.woff +0 -0
  555. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/genericons/genericons.css +197 -0
  556. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/circle.png +0 -0
  557. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/dotted-line-2x.png +0 -0
  558. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/dotted-line-light-2x.png +0 -0
  559. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/dotted-line-light.png +0 -0
  560. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/dotted-line.png +0 -0
  561. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/headers/circle-thumbnail.png +0 -0
  562. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/headers/circle.png +0 -0
  563. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/headers/diamond-thumbnail.png +0 -0
  564. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/headers/diamond.png +0 -0
  565. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/headers/star-thumbnail.png +0 -0
  566. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/headers/star.png +0 -0
  567. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/image.png +0 -0
  568. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/search-icon-2x.png +0 -0
  569. data/lib/generators/camaleon_cms/install_template/apps/themes/default/assets/images/search-icon.png +0 -0
  570. data/lib/generators/camaleon_cms/install_template/apps/themes/default/config/config.json +19 -0
  571. data/lib/generators/camaleon_cms/install_template/apps/themes/default/default_helper.rb +36 -0
  572. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/admin/settings.html.erb +1 -0
  573. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/category.html.erb +16 -0
  574. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/index.html.erb +35 -0
  575. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/layouts/index.html.erb +83 -0
  576. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/page.html.erb +22 -0
  577. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_breadcrumb.html.erb +10 -0
  578. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_categories_list.html.erb +23 -0
  579. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_comments.html.erb +25 -0
  580. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_comments_list.html.erb +20 -0
  581. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_flash_messages.html.erb +26 -0
  582. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_forms.html.erb +19 -0
  583. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_post_list_item.html.erb +34 -0
  584. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_search_form.html.erb +8 -0
  585. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/partials/_sidebar.html.erb +50 -0
  586. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/post.html.erb +22 -0
  587. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/post_tag.html.erb +14 -0
  588. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/post_type.html.erb +33 -0
  589. data/lib/generators/camaleon_cms/install_template/apps/themes/default/views/search.html.erb +17 -0
  590. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/css/bootstrap/bootstrap.min.css +6735 -0
  591. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/css/main.css +13 -0
  592. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/css/styles.css.scss +175 -0
  593. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/images/image.png +0 -0
  594. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/js/main.js +15 -0
  595. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/js/plugins/bootstrap/bootstrap.min.js +6 -0
  596. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/js/plugins/jquery/jquery.min.js +4 -0
  597. data/lib/generators/camaleon_cms/install_template/apps/themes/new/assets/js/plugins/modal_elfinder.js +29 -0
  598. data/lib/generators/camaleon_cms/install_template/apps/themes/new/config/config.json +26 -0
  599. data/lib/generators/camaleon_cms/install_template/apps/themes/new/custom_helper.rb +37 -0
  600. data/lib/generators/camaleon_cms/install_template/apps/themes/new/data.json +1 -0
  601. data/lib/generators/camaleon_cms/install_template/apps/themes/new/image.png +0 -0
  602. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/admin/settings.html.erb +1 -0
  603. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/category.html.erb +33 -0
  604. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/index.html.erb +70 -0
  605. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/layouts/_footer.html.erb +18 -0
  606. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/layouts/_header.html.erb +38 -0
  607. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/layouts/index.html.erb +34 -0
  608. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/page.html.erb +24 -0
  609. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_breadcrumb.html.erb +10 -0
  610. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_categories_list.html.erb +23 -0
  611. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_comments.html.erb +32 -0
  612. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_comments_list.html.erb +21 -0
  613. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_flash_messages.html.erb +26 -0
  614. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_forms.html.erb +19 -0
  615. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_post_list_item.html.erb +13 -0
  616. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_search_form.html.erb +10 -0
  617. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/partials/_sidebar.html.erb +60 -0
  618. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/post.html.erb +20 -0
  619. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/post_tag.html.erb +22 -0
  620. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/post_type.html.erb +33 -0
  621. data/lib/generators/camaleon_cms/install_template/apps/themes/new/views/search.html.erb +18 -0
  622. data/lib/generators/camaleon_cms/install_template/plugin_routes.rb +311 -0
  623. data/lib/generators/camaleon_cms/install_template/system.json +11 -0
  624. data/lib/generators/cplugin_generator.rb +80 -0
  625. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/admin_controller.rb +9 -0
  626. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/assets/css/readme.txt +1 -0
  627. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/assets/images/readme.txt +1 -0
  628. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/assets/js/readme.txt +1 -0
  629. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/config/config.json +18 -0
  630. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/config/locales/readme.txt +1 -0
  631. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/config/routes_admin.txt +1 -0
  632. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/config/routes_front.txt +1 -0
  633. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/front_controller.rb +9 -0
  634. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/main_helper.rb +21 -0
  635. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/models/my_plugin.rb +12 -0
  636. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/views/admin/index.html.erb +2 -0
  637. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/views/front/index.html.erb +2 -0
  638. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/views/layouts/readme.txt +2 -0
  639. data/lib/generators/ctheme_generator.rb +63 -0
  640. data/lib/generators/ctheme_template/app/apps/themes/my_theme/assets/css/main.css +12 -0
  641. data/lib/generators/ctheme_template/app/apps/themes/my_theme/assets/images/image.png +0 -0
  642. data/lib/generators/ctheme_template/app/apps/themes/my_theme/assets/js/main.js +14 -0
  643. data/lib/generators/ctheme_template/app/apps/themes/my_theme/config/config.json +14 -0
  644. data/lib/generators/ctheme_template/app/apps/themes/my_theme/main_helper.rb +25 -0
  645. data/lib/generators/ctheme_template/app/apps/themes/my_theme/views/admin/settings.html.erb +4 -0
  646. data/lib/generators/ctheme_template/app/apps/themes/my_theme/views/index.html.erb +25 -0
  647. data/lib/generators/ctheme_template/app/apps/themes/my_theme/views/layouts/index.html.erb +71 -0
  648. data/lib/generators/ctheme_template/app/apps/themes/my_theme/views/partials/readme.txt +1 -0
  649. data/lib/tasks/camaleon_cms_tasks.rake +4 -0
  650. data/test/camaleon_cms_test.rb +7 -0
  651. data/test/integration/navigation_test.rb +10 -0
  652. data/test/test_helper.rb +19 -0
  653. metadata +699 -0
@@ -0,0 +1,199 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ module Admin::MenusHelper
10
+ include Admin::BreadcrumbHelper
11
+
12
+ def admin_menus_add_commons
13
+ admin_menu_add_menu("dashabord", {icon: "dashboard", title: t('admin.sidebar.dashboard'), url: admin_dashboard_path})
14
+ #if can? :manager, :content
15
+ items = []
16
+
17
+ current_site.post_types.eager_load(:metas).visible_menu.all.each do |pt|
18
+ pt = pt.decorate
19
+ items_i = []
20
+ items_i << {icon: "list", title: "#{t('admin.post_type.all')}", url: admin_post_type_posts_path(pt.id)} if can? :posts, pt
21
+ items_i << {icon: "plus", title: "#{t('admin.post_type.add_new')} ", url: new_admin_post_type_post_path(pt.id)} if can? :create_post, pt
22
+ if pt.manage_categories?
23
+ items_i << {icon: "folder-open", title: t('admin.post_type.categories'), url: admin_post_type_categories_path(pt.id)} if can? :categories, pt
24
+ end
25
+ if pt.manage_tags?
26
+ items_i << {icon: "tags", title: t('admin.post_type.tags'), url: admin_post_type_post_tags_path(pt.id)} if can? :post_tags, pt
27
+ end
28
+ items << {icon: "file-o", title: pt.the_title, url: "", items: items_i} if items_i.present? #if can? :posts, pt
29
+ end
30
+ admin_menu_add_menu("content", {icon: "copy", title: t('admin.sidebar.content'), url: "", items: items}) if items.present?
31
+ #end
32
+
33
+ admin_menu_add_menu("media", {icon: "picture-o", title: t('admin.sidebar.media'), url: admin_media_path}) if can? :manager, :media
34
+ admin_menu_add_menu("comments", {icon: "comments", title: t('admin.sidebar.comments'), url: admin_comments_path}) if can? :manager, :comments
35
+
36
+ items = []
37
+ items << {icon: "desktop", title: t('admin.sidebar.themes'), url: admin_appearances_themes_path} if can? :manager, :themes
38
+ items << {icon: "archive", title: t('admin.sidebar.widgets'), url: admin_appearances_widgets_main_index_path} if can? :manager, :widgets
39
+ items << {icon: "list", title: t('admin.sidebar.menus'), url: admin_appearances_nav_menus_menu_path} if can? :manager, :nav_menu
40
+ admin_menu_add_menu("appearance", {icon: "paint-brush", title: t('admin.sidebar.appearance'), url: "", items: items}) if items.present?
41
+
42
+
43
+ admin_menu_add_menu("plugins", {icon: "plug", title: "#{t('admin.sidebar.plugins')} <div class='informer informer-info'>#{PluginRoutes.all_plugins.size}</div>", url: admin_plugins_path}) if can? :manager, :plugins
44
+
45
+ if can? :manager, :users
46
+ items = []
47
+ items << {icon: "list", title: t('admin.users.all_users'), url: admin_users_path}
48
+ items << {icon: "plus", title: t('admin.users.add_user'), url: new_admin_user_path}
49
+ items << {icon: "group", title: t('admin.users.user_roles'), url: admin_user_roles_path}
50
+ admin_menu_add_menu("users", {icon: "users", title: t('admin.sidebar.users'), url: "", items: items})
51
+ end
52
+
53
+ if can? :manager, :settings
54
+ items = []
55
+ items << {icon: "desktop", title: t('admin.sidebar.general_site'), url: admin_settings_site_path}
56
+ items << {icon: "cog", title: t('admin.sidebar.sites'), url: admin_settings_sites_path} if current_site.manage_sites?
57
+ items << {icon: "files-o", title: t('admin.sidebar.contents_type'), url: admin_settings_post_types_path}
58
+ items << {icon: "cog", title: t('admin.sidebar.custom_fields'), url: admin_settings_custom_fields_path}
59
+ items << {icon: "language", title: t('admin.sidebar.languages'), url: admin_settings_languages_path}
60
+ admin_menu_add_menu("settings", {icon: "cogs", title: t('admin.sidebar.settings'), url: "", items: items})
61
+ end
62
+
63
+ end
64
+
65
+ # add menu item to admin menu at the the end
66
+ # key: key for menu
67
+ # menu: is hash like this: {icon: "dashboard", title: "My title", url: my_path, items: [sub menus]}
68
+ # - icon: font-awesome icon (it is already included "fa fa-")
69
+ # - title: title for the menu
70
+ # - url: url for the menu
71
+ # - items: is an recursive array of the menus without a key
72
+ def admin_menu_add_menu(key, menu)
73
+ @_admin_menus[key] = menu
74
+ end
75
+
76
+ # append sub menu to menu with key = key
77
+ # menu: is hash like this: {icon: "dashboard", title: "My title", url: my_path, items: [sub menus]}
78
+ def admin_menu_append_menu_item(key, menu)
79
+ return unless @_admin_menus[key].present?
80
+ @_admin_menus[key][:items] = [] unless @_admin_menus[key].has_key?(:items)
81
+ @_admin_menus[key][:items] << menu
82
+ end
83
+
84
+ # prepend sub menu to menu with key = key
85
+ # menu: is hash like this: {icon: "dashboard", title: "My title", url: my_path, items: [sub menus]}
86
+ def admin_menu_prepend_menu_item(key, menu)
87
+ return unless @_admin_menus[key].present?
88
+ @_admin_menus[key][:items] = [] unless @_admin_menus[key].has_key?(:items)
89
+ @_admin_menus[key][:items] = [menu] + @_admin_menus[key][:items]
90
+ end
91
+
92
+ # add menu before menu with key = key_target
93
+ # key_menu: key for menu
94
+ # menu: is hash like this: {icon: "dashboard", title: "My title", url: my_path, items: [sub menus]}
95
+ def admin_menu_insert_menu_before(key_target, key_menu, menu)
96
+ res = {}
97
+ @_admin_menus.each do |key, val|
98
+ res[key_menu] = menu if key == key_target
99
+ res[key] = val
100
+ end
101
+ @_admin_menus = res
102
+ end
103
+
104
+ # add menu after menu with key = key_target
105
+ # key_menu: key for menu
106
+ # menu: is hash like this: {icon: "dashboard", title: "My title", url: my_path, items: [sub menus]}
107
+ def admin_menu_insert_menu_after(key_target, key_menu, menu)
108
+ res = {}
109
+ @_admin_menus.each do |key, val|
110
+ res[key] = val
111
+ res[key_menu] = menu if key == key_target
112
+ end
113
+ @_admin_menus = res
114
+ end
115
+
116
+ # draw admin menu as html
117
+ def admin_menu_draw
118
+ res= []
119
+ @_tmp_menu_parents = []
120
+ menus = _get_url_current
121
+ menus.each do |menu|
122
+ res << "<li data-key='#{menu[:key]}' class='#{"xn-openable" if menu.has_key?(:items)} #{'active' if is_active_menu(menu[:key])}'>
123
+ <a href='#{menu[:url]}'><span class='fa fa-#{menu[:icon]}'></span> <span class='xn-text'>#{menu[:title]}</span></a>
124
+ #{_admin_menu_draw(menu[:items]) if menu.has_key?(:items)}
125
+ </li>"
126
+ end
127
+ _admin_menu_draw_active
128
+ res.join
129
+ end
130
+
131
+ private
132
+
133
+ def _get_url_current
134
+ menus = @_admin_menus.map{|key, menu| menu[:key] = key; menu}
135
+ c_site = site_current_url.sub("https://", "http://")
136
+ current_path = "/#{c_site.split(root_url).last}"
137
+ current_path_array = current_path.split('/')
138
+ a_size = current_path_array.size
139
+
140
+ (0..a_size).each do |i|
141
+ resp = _search_in_menus(menus, current_path_array[0..a_size-i].join('/'))
142
+ bool = resp[:bool]
143
+ menus = resp[:menus]
144
+ break if bool
145
+ end
146
+ menus
147
+ end
148
+
149
+ def is_active_menu(key)
150
+ @_tmp_menu_parents.map{|item| item[:key] == key}.include?(true)
151
+ end
152
+
153
+ def _search_in_menus(menus, _url, parent_index = 0)
154
+ _url_a = _url.split('?')
155
+ bool = false
156
+ menus.each_with_index do |menu, index_menu|
157
+ menu[:key] = "#{parent_index}__#{rand(999...99999)}" if menu[:key].nil?
158
+ url = menu[:url].to_s.sub("https://", "http://")
159
+ url_path = url
160
+ url_path = "/#{url.split(root_url).last}" if url.start_with?("http://")
161
+ # params compare
162
+ url_path_a = url_path.split('?')
163
+ bool = url_path_a[0].to_s == _url_a[0].to_s
164
+ bool &&= Rack::Utils.parse_nested_query(url_path_a[1].to_s) == Rack::Utils.parse_nested_query(_url_a[1].to_s) if url_path.include?('?')
165
+ if menu.has_key?(:items)
166
+ resp = _search_in_menus(menu[:items], _url, parent_index + 1)
167
+ bool = bool || resp[:bool]
168
+ menu[:items] = resp[:menus]
169
+ end
170
+ if bool
171
+ @_tmp_menu_parents[parent_index] = {url: menu[:url], title: menu[:title], key: menu[:key]}
172
+ break
173
+ end
174
+ end
175
+ {menus: menus, bool: bool}
176
+ end
177
+
178
+ def _admin_menu_draw(items)
179
+ res = []
180
+ res << "<ul>"
181
+ items.each do |item|
182
+ res << "<li class='#{"xn-openable" if item.has_key?(:items)} #{'active' if is_active_menu(item[:key])}'>
183
+ <a href='#{item[:url]}'><span class='fa fa-#{item[:icon]}'></span> #{item[:title]}</a>
184
+ #{_admin_menu_draw(item[:items]) if item.has_key?(:items)}
185
+ </li>"
186
+ end
187
+ res << "</ul>"
188
+ res.join
189
+ end
190
+
191
+ def _admin_menu_draw_active
192
+ bread = []
193
+ @_tmp_menu_parents.uniq.each do |item|
194
+ bread << [ActionView::Base.full_sanitizer.sanitize(item[:title]), item[:url]] if item.present? && item[:key] != "dashabord"
195
+ end
196
+ @_admin_breadcrumb = [[t('admin.sidebar.dashboard'), admin_dashboard_path]] + bread + @_admin_breadcrumb
197
+ end
198
+
199
+ end
@@ -0,0 +1,50 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ #encoding: utf-8
10
+ module Admin::PostTypeHelper
11
+
12
+ #taxonomy -> (categories || post_tags)
13
+ def post_type_html_inputs(post_type, taxonomy="categories", name ="categories", type="checkbox", values=[], class_cat="categorychecklist" , required = false)
14
+ categories = post_type.send(taxonomy)
15
+ categories = categories.eager_load(:children) if taxonomy == "categories" || taxonomy == "children"
16
+ post_type_taxonomy_html_(categories,taxonomy, name, type, values, class_cat, required)
17
+ end
18
+
19
+ def post_type_status(status, color="default")
20
+ html = "<span class='label label-#{color} label-form'>#{status}</span>"
21
+
22
+ end
23
+
24
+ #taxonomies -> (categories || post_tags)
25
+ def post_type_list_taxonomy(taxonomies, color="primary")
26
+ html = ""
27
+ taxonomies.decorate.each do |f|
28
+ html += "<a href='#{admin_post_type_taxonomy_posts_path(@post_type.id, f.taxonomy, f.id)}'><span class='label label-#{color} label-form'>#{f.the_title}</span></a> "
29
+ end
30
+ return html
31
+ end
32
+
33
+ private
34
+
35
+ def post_type_taxonomy_html_(categories, taxonomy="categories", name="categories", type="checkbox", values=[], class_cat="", required = false)
36
+ return "#{t('admin.post_type.message.no_created_html', taxonomy: (taxonomy == "categories")? t('admin.table.categories') : t('admin.table.tags') )}" if categories.count < 1
37
+ html = "<ul class='#{class_cat}'>"
38
+ categories.decorate.each do |f|
39
+ html += "<li>"
40
+ html += "<label class='class_slug' data-post_link_edit='#{f.the_edit_url}'> "
41
+ html += "<input type='#{type}' name='#{name}[]' #{ values.to_i.include?(f.id) ? "checked" : ""} value='#{f.id}' class = '#{ "required" if required }' />"
42
+ html += "#{f.the_title} </label> "
43
+ html += post_type_html_inputs(f, "children" , name, type, values, "children") if f.children.present?
44
+ html += "</li>"
45
+ end
46
+
47
+ html += "</ul>"
48
+ return html
49
+ end
50
+ end
@@ -0,0 +1,65 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ module CamaleonHelper
10
+
11
+ # send and email
12
+ # email: email to
13
+ # subject: Subject of the email
14
+ # content: content of the email
15
+ # from: email figured as from
16
+ # attachs: array of files to be attached to the email
17
+ # template_path: path of the template to render
18
+ # template_name: template name to render in template_path
19
+ def sendmail(email,subject='Tiene una notificacion',content='',from=nil,attachs=[],current_site=@current_site, template_path='html_mailer',template_name='sender')
20
+ from = current_site.get_option('email') if from.nil?
21
+ from = current_site.users.admin_scope.first.email if from.nil?
22
+ HtmlMailer.sender(email, "#{subject} - #{@current_site.the_title}", content, "#{@current_site.the_title}"+"<#{from}>" , attachs, root_url, current_site, template_path,template_name).deliver_now
23
+ end
24
+
25
+ # execute controller action and return response
26
+ def requestAction(controller,action,params={})
27
+ controller.class_eval{
28
+ def params=(params); @params = params end
29
+ def params; @params end
30
+ }
31
+ c = controller.new
32
+ c.request = @_request
33
+ c.response = @_response
34
+ c.params = params
35
+ c.send(action)
36
+ c.response.body
37
+ end
38
+
39
+ # deprecated helper
40
+ def array_change_key_case(hash)
41
+ result = hash.inject({}) do |hash, keys|
42
+ hash[raw(keys[1])] = keys[0]
43
+ hash
44
+ end
45
+ end
46
+
47
+ # theme common translation text
48
+ # key: key for translation
49
+ # language: language for the translation, if it is nil, then will use current site language
50
+ # valid only for common translations, If you can to use other translations for themes or plugins,
51
+ # you can use the default of rails (I18n.t)
52
+ def ct(key, language = nil)
53
+ language = language || I18n.locale
54
+ r = {flag: false, key: key, translation: "", locale: language.to_sym}
55
+ hooks_run("on_translation", r)
56
+ return r[:translation] if r[:flag]
57
+ translate("common.#{key}", locale: language)
58
+ end
59
+
60
+ # check if current request was for admin panel
61
+ def is_admin_request?
62
+ !(@_admin_menus.nil?)
63
+ end
64
+
65
+ end
@@ -0,0 +1,90 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ module CaptchaHelper
10
+ def captcha_build(len = 5)
11
+ img = MiniMagick::Image.open(File.join($camaleon_engine_dir.present? ? $camaleon_engine_dir : Rails.root.to_s, "lib", "captcha", "captcha_#{rand(12)}.jpg").to_s)
12
+ text = rand_str(len)
13
+ session[:captcha] = text
14
+ img.combine_options do |c|
15
+ c.resize "150x40"
16
+ c.gravity 'Center'
17
+ c.fill("#FFFFFF")
18
+ c.draw "text 0,5 #{text}"
19
+ c.font File.join($camaleon_engine_dir.present? ? $camaleon_engine_dir : Rails.root.to_s, "lib", "captcha", "bumpyroad.ttf")
20
+ c.pointsize '30'
21
+ end
22
+ img
23
+ end
24
+
25
+ # build a captcha tag (image with captcha)
26
+ # img_args: attributes for image_tag
27
+ # input_args: attributes for input field
28
+ def captcha_tag(len = 5, img_args = {alt: ""}, input_args = {})
29
+ input_args[:placeholder] = "Please enter the text of the image" unless input_args[:placeholder].present?
30
+ img_args["onclick"] = "this.src = '#{captcha_url(len: len)}'+'&t='+(new Date().getTime());"
31
+ "<div><img src='#{captcha_url(len: len)}' #{img_args.collect{|k, v| "#{k}='#{v}'" }.join(" ") } /> <input type='text' name='captcha' #{input_args.collect{|k, v| "#{k}='#{v}'" }.join(" ") } /> </div>"
32
+ end
33
+
34
+ # verify captcha value
35
+ def captcha_verified?
36
+ params[:captcha].present? && params[:captcha].upcase == session[:captcha]
37
+ end
38
+
39
+ #************************* captcha in attack helpers ***************************#
40
+ # check if the current visitor was submitted 5+ times
41
+ # key: a string to represent a url or form view
42
+ # key must be the same as the form "captcha_tags_if_under_attack(key, ...)"
43
+ def captcha_under_attack?(key)
44
+ session[key] ||= 0
45
+ # if session[key].to_i > 10 then send an email to administrator with request info (ip, browser, if logged then send user info
46
+ session[key].to_i > current_site.get_option("max_try_attack", 5).to_i
47
+ end
48
+
49
+ # verify captcha values if this key is under attack
50
+ # key: a string to represent a url or form view
51
+ def captcha_verify_if_under_attack(key)
52
+ captcha_under_attack?(key) ? captcha_verified? : true
53
+ end
54
+
55
+ # increment attempts for key by 1
56
+ def captcha_increment_attack(key)
57
+ session[key] ||= 0
58
+ session[key] = session[key].to_i + 1
59
+ end
60
+
61
+ # reset the attacks counter for key
62
+ # key: a string to represent a url or form view
63
+ def captcha_reset_attack(key)
64
+ session[key] = 0
65
+ end
66
+
67
+ # return a number of attempts for key
68
+ # key: a string to represent a url or form view
69
+ def captcha_total_attacks(key)
70
+ session[key] ||= 0
71
+ end
72
+
73
+ # show captcha if under attack
74
+ # key: a string to represent a url or form view
75
+ def captcha_tags_if_under_attack(key, captcha_parmas = [5, {}, {class: "form-control required"}])
76
+ captcha_tag(*captcha_parmas) if captcha_under_attack?(key)
77
+ end
78
+
79
+
80
+ private
81
+ def rand_str(len=6)
82
+ alphabets = [('A'..'Z').to_a].flatten!
83
+ alphanumerics = [('A'..'Z').to_a,('0'..'9').to_a].flatten!
84
+ str = alphabets[rand(alphabets.size)]
85
+ (len.to_i - 1).times do
86
+ str << alphanumerics[rand(alphanumerics.size)]
87
+ end
88
+ str
89
+ end
90
+ end
@@ -0,0 +1,35 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ module ContentHelper
10
+ # initialize content variables
11
+ def content_init
12
+ @_before_content = []
13
+ @_after_content = []
14
+ end
15
+
16
+ # prepend content for admin or frontend (after <body>)
17
+ def content_prepend(content)
18
+ @_before_content << content
19
+ end
20
+
21
+ # append content for admin or frontend (before </body>)
22
+ def content_append(content)
23
+ @_after_content << content
24
+ end
25
+
26
+ # draw all before contents
27
+ def content_before_draw
28
+ @_before_content.join("")
29
+ end
30
+
31
+ # draw all after contents
32
+ def content_after_draw
33
+ @_after_content.join("")
34
+ end
35
+ end
@@ -0,0 +1,41 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ module Frontend::ApplicationHelper
10
+ include Frontend::SiteHelper
11
+ include Frontend::NavMenuHelper
12
+ include Frontend::SeoHelper
13
+
14
+ # add where conditionals to filter private/hidden/expired/drafts/unpublished
15
+ # note: only for post records
16
+ def verify_front_visibility(active_record)
17
+ active_record = active_record.visible_frontend
18
+ r = {active_record: active_record}
19
+ hooks_run("filter_post", r)
20
+ r[:active_record]
21
+ end
22
+
23
+ # fix for url_to or url_path or any other who need add automatically current locale in the url
24
+ # sample: url_to_fixed("root_url", data: "asdasd", y: 12)
25
+ # => http://localhost/fr?data=asdasd&y=12
26
+ # note: if current locale is the default language, then locale is not added in the url
27
+ def url_to_fixed(url_to, *args)
28
+ options = args.extract_options!
29
+ if request.present?
30
+ if options.include?(:locale) && options[:locale] == false
31
+ options.delete(:locale)
32
+ else
33
+ options[:locale] = I18n.locale if !options[:locale].present? && current_site.get_languages.size > 1
34
+ end
35
+ options[:locale] = nil if options[:locale].present? && current_site.get_languages.first.to_s == options[:locale].to_s
36
+ end
37
+ options.delete(:format) if PluginRoutes.system_info[:skip_format_url].present?
38
+ send(url_to, *(args << options))
39
+ end
40
+
41
+ end