camaleon_cms_rails6 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +202 -0
  3. data/Rakefile +32 -0
  4. data/app/apps/plugins/attack/admin_controller.rb +17 -0
  5. data/app/apps/plugins/attack/attack_helper.rb +94 -0
  6. data/app/apps/plugins/attack/config/config.json +31 -0
  7. data/app/apps/plugins/attack/config/custom_models.rb +8 -0
  8. data/app/apps/plugins/attack/config/locales/readme.txt +1 -0
  9. data/app/apps/plugins/attack/config/locales/translation.yml +129 -0
  10. data/app/apps/plugins/attack/config/routes_admin.txt +2 -0
  11. data/app/apps/plugins/attack/models/attack.rb +3 -0
  12. data/app/apps/plugins/attack/views/admin/settings.html.erb +49 -0
  13. data/app/apps/plugins/authoring_post/authoring_post_helper.rb +51 -0
  14. data/app/apps/plugins/authoring_post/config/config.json +24 -0
  15. data/app/apps/plugins/front_cache/admin_controller.rb +29 -0
  16. data/app/apps/plugins/front_cache/config/config.json +21 -0
  17. data/app/apps/plugins/front_cache/config/initializer.rb +7 -0
  18. data/app/apps/plugins/front_cache/config/locales/readme.txt +1 -0
  19. data/app/apps/plugins/front_cache/config/locales/translation.yml +149 -0
  20. data/app/apps/plugins/front_cache/config/routes_admin.txt +3 -0
  21. data/app/apps/plugins/front_cache/front_cache_helper.rb +137 -0
  22. data/app/apps/plugins/front_cache/views/admin/settings.html.erb +81 -0
  23. data/app/apps/plugins/visibility_post/assets/js/form.js +30 -0
  24. data/app/apps/plugins/visibility_post/config/config.json +24 -0
  25. data/app/apps/plugins/visibility_post/visibility_post_helper.rb +124 -0
  26. data/app/apps/themes/camaleon_first/assets/css/magnific-ver.css +394 -0
  27. data/app/apps/themes/camaleon_first/assets/css/main.css +16 -0
  28. data/app/apps/themes/camaleon_first/assets/css/style-ver.css.scss +251 -0
  29. data/app/apps/themes/camaleon_first/assets/css/wpbase.css +1 -0
  30. data/app/apps/themes/camaleon_first/assets/images/empe.jpg +0 -0
  31. data/app/apps/themes/camaleon_first/assets/images/image.png +0 -0
  32. data/app/apps/themes/camaleon_first/assets/images/loader.gif +0 -0
  33. data/app/apps/themes/camaleon_first/assets/images/zoom.png +0 -0
  34. data/app/apps/themes/camaleon_first/assets/js/hover.zoom.js +67 -0
  35. data/app/apps/themes/camaleon_first/assets/js/magnific.min.js +3 -0
  36. data/app/apps/themes/camaleon_first/assets/js/main-ver.js +46 -0
  37. data/app/apps/themes/camaleon_first/assets/js/main.js +18 -0
  38. data/app/apps/themes/camaleon_first/assets/js/modernizr.custom.js +4 -0
  39. data/app/apps/themes/camaleon_first/config/config.json +14 -0
  40. data/app/apps/themes/camaleon_first/main_helper.rb +33 -0
  41. data/app/apps/themes/camaleon_first/views/index.html.erb +28 -0
  42. data/app/apps/themes/camaleon_first/views/layouts/camaleon_cms/mailer.html.erb +22 -0
  43. data/app/apps/themes/camaleon_first/views/layouts/index.html.erb +84 -0
  44. data/app/apps/themes/camaleon_first/views/mailer.html.erb +4 -0
  45. data/app/apps/themes/camaleon_first/views/partials/readme.txt +1 -0
  46. data/app/apps/themes/camaleon_first/views/template_sample_page.html.erb +6 -0
  47. data/app/apps/themes/default/assets/css/main.css +13 -0
  48. data/app/apps/themes/default/assets/css/style.css.scss +3398 -0
  49. data/app/apps/themes/default/assets/css/styles.css.scss +175 -0
  50. data/app/apps/themes/default/assets/genericons/COPYING.txt +9 -0
  51. data/app/apps/themes/default/assets/genericons/Genericons-Regular.otf +0 -0
  52. data/app/apps/themes/default/assets/genericons/LICENSE.txt +339 -0
  53. data/app/apps/themes/default/assets/genericons/README.txt +123 -0
  54. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.eot +0 -0
  55. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.svg +135 -0
  56. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.ttf +0 -0
  57. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.woff +0 -0
  58. data/app/apps/themes/default/assets/genericons/genericons.css +197 -0
  59. data/app/apps/themes/default/assets/images/circle.png +0 -0
  60. data/app/apps/themes/default/assets/images/dotted-line-2x.png +0 -0
  61. data/app/apps/themes/default/assets/images/dotted-line-light-2x.png +0 -0
  62. data/app/apps/themes/default/assets/images/dotted-line-light.png +0 -0
  63. data/app/apps/themes/default/assets/images/dotted-line.png +0 -0
  64. data/app/apps/themes/default/assets/images/headers/circle-thumbnail.png +0 -0
  65. data/app/apps/themes/default/assets/images/headers/circle.png +0 -0
  66. data/app/apps/themes/default/assets/images/headers/diamond-thumbnail.png +0 -0
  67. data/app/apps/themes/default/assets/images/headers/diamond.png +0 -0
  68. data/app/apps/themes/default/assets/images/headers/star-thumbnail.png +0 -0
  69. data/app/apps/themes/default/assets/images/headers/star.png +0 -0
  70. data/app/apps/themes/default/assets/images/image.png +0 -0
  71. data/app/apps/themes/default/assets/images/search-icon-2x.png +0 -0
  72. data/app/apps/themes/default/assets/images/search-icon.png +0 -0
  73. data/app/apps/themes/default/assets/js/main.js +13 -0
  74. data/app/apps/themes/default/config/config.json +19 -0
  75. data/app/apps/themes/default/default_helper.rb +28 -0
  76. data/app/apps/themes/default/views/admin/settings.html.erb +0 -0
  77. data/app/apps/themes/default/views/category.html.erb +16 -0
  78. data/app/apps/themes/default/views/index.html.erb +35 -0
  79. data/app/apps/themes/default/views/layouts/index.html.erb +84 -0
  80. data/app/apps/themes/default/views/page.html.erb +14 -0
  81. data/app/apps/themes/default/views/partials/_breadcrumb.html.erb +10 -0
  82. data/app/apps/themes/default/views/partials/_categories_list.html.erb +23 -0
  83. data/app/apps/themes/default/views/partials/_comments.html.erb +40 -0
  84. data/app/apps/themes/default/views/partials/_comments_list.html.erb +20 -0
  85. data/app/apps/themes/default/views/partials/_flash_messages.html.erb +26 -0
  86. data/app/apps/themes/default/views/partials/_forms.html.erb +19 -0
  87. data/app/apps/themes/default/views/partials/_post_list_item.html.erb +34 -0
  88. data/app/apps/themes/default/views/partials/_search_form.html.erb +8 -0
  89. data/app/apps/themes/default/views/partials/_sidebar.html.erb +50 -0
  90. data/app/apps/themes/default/views/post.html.erb +14 -0
  91. data/app/apps/themes/default/views/post_tag.html.erb +14 -0
  92. data/app/apps/themes/default/views/post_type.html.erb +33 -0
  93. data/app/apps/themes/default/views/search.html.erb +17 -0
  94. data/app/apps/themes/new/assets/css/main.css +14 -0
  95. data/app/apps/themes/new/assets/css/styles.css.scss +175 -0
  96. data/app/apps/themes/new/assets/images/image.png +0 -0
  97. data/app/apps/themes/new/assets/js/main.js +14 -0
  98. data/app/apps/themes/new/config/config.json +26 -0
  99. data/app/apps/themes/new/custom_helper.rb +31 -0
  100. data/app/apps/themes/new/image.png +0 -0
  101. data/app/apps/themes/new/views/admin/settings.html.erb +1 -0
  102. data/app/apps/themes/new/views/category.html.erb +33 -0
  103. data/app/apps/themes/new/views/index.html.erb +71 -0
  104. data/app/apps/themes/new/views/layouts/_footer.html.erb +17 -0
  105. data/app/apps/themes/new/views/layouts/_header.html.erb +38 -0
  106. data/app/apps/themes/new/views/layouts/index.html.erb +32 -0
  107. data/app/apps/themes/new/views/page.html.erb +16 -0
  108. data/app/apps/themes/new/views/post.html.erb +20 -0
  109. data/app/apps/themes/new/views/post_tag.html.erb +22 -0
  110. data/app/apps/themes/new/views/post_type.html.erb +33 -0
  111. data/app/apps/themes/new/views/search.html.erb +18 -0
  112. data/app/assets/config/camaleon-cms.js +7 -0
  113. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.eot +0 -0
  114. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.svg +288 -0
  115. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.ttf +0 -0
  116. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.woff +0 -0
  117. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.woff2 +0 -0
  118. data/app/assets/images/camaleon.png +0 -0
  119. data/app/assets/images/camaleon_cms/admin/admin_spinner.gif +0 -0
  120. data/app/assets/images/camaleon_cms/admin/glyphicons-halflings.png +0 -0
  121. data/app/assets/images/camaleon_cms/admin/intro/menus.png +0 -0
  122. data/app/assets/images/camaleon_cms/admin/no_image.jpg +0 -0
  123. data/app/assets/images/camaleon_cms/bg-tree.jpeg +0 -0
  124. data/app/assets/images/camaleon_cms/camaleon-dark.png +0 -0
  125. data/app/assets/images/camaleon_cms/camaleon.png +0 -0
  126. data/app/assets/images/camaleon_cms/category-icon.png +0 -0
  127. data/app/assets/images/camaleon_cms/favicon.ico +0 -0
  128. data/app/assets/images/camaleon_cms/image-not-found.png +0 -0
  129. data/app/assets/images/camaleon_cms/language/de.png +0 -0
  130. data/app/assets/images/camaleon_cms/language/en.png +0 -0
  131. data/app/assets/images/camaleon_cms/language/es.png +0 -0
  132. data/app/assets/images/camaleon_cms/language/fr.png +0 -0
  133. data/app/assets/images/camaleon_cms/language/it.png +0 -0
  134. data/app/assets/images/camaleon_cms/language/nl.png +0 -0
  135. data/app/assets/images/camaleon_cms/language/pl.png +0 -0
  136. data/app/assets/images/camaleon_cms/language/pt-BR.png +0 -0
  137. data/app/assets/images/camaleon_cms/language/pt.png +0 -0
  138. data/app/assets/images/camaleon_cms/language/ru.png +0 -0
  139. data/app/assets/images/camaleon_cms/language/uk.png +0 -0
  140. data/app/assets/images/camaleon_cms/language/zh-CN.png +0 -0
  141. data/app/assets/images/camaleon_cms/loader.gif +0 -0
  142. data/app/assets/images/camaleon_cms/users/no-image.jpg +0 -0
  143. data/app/assets/javascripts/camaleon_cms/admin/_actions.js +91 -0
  144. data/app/assets/javascripts/camaleon_cms/admin/_bootstrap-datepicker.js +2558 -0
  145. data/app/assets/javascripts/camaleon_cms/admin/_bootstrap-select.js +7 -0
  146. data/app/assets/javascripts/camaleon_cms/admin/_custom_fields.js +273 -0
  147. data/app/assets/javascripts/camaleon_cms/admin/_data.js +69 -0
  148. data/app/assets/javascripts/camaleon_cms/admin/_i18n.js +32 -0
  149. data/app/assets/javascripts/camaleon_cms/admin/_jquery-ui.min.js +10 -0
  150. data/app/assets/javascripts/camaleon_cms/admin/_jquery.slugify.js +67 -0
  151. data/app/assets/javascripts/camaleon_cms/admin/_jquery.tagsinput.min.js +1 -0
  152. data/app/assets/javascripts/camaleon_cms/admin/_libraries.js +136 -0
  153. data/app/assets/javascripts/camaleon_cms/admin/_modal.js +156 -0
  154. data/app/assets/javascripts/camaleon_cms/admin/_post.js +317 -0
  155. data/app/assets/javascripts/camaleon_cms/admin/_posttype.js.coffee +27 -0
  156. data/app/assets/javascripts/camaleon_cms/admin/_translator.js +123 -0
  157. data/app/assets/javascripts/camaleon_cms/admin/_underscore.js +1536 -0
  158. data/app/assets/javascripts/camaleon_cms/admin/_user_profile.js +28 -0
  159. data/app/assets/javascripts/camaleon_cms/admin/admin-basic-manifest.js +3 -0
  160. data/app/assets/javascripts/camaleon_cms/admin/admin-manifest.js +55 -0
  161. data/app/assets/javascripts/camaleon_cms/admin/bootstrap-colorpicker.js +540 -0
  162. data/app/assets/javascripts/camaleon_cms/admin/custom_fields_form.js +94 -0
  163. data/app/assets/javascripts/camaleon_cms/admin/introjs/_intro.min.js +1317 -0
  164. data/app/assets/javascripts/camaleon_cms/admin/jquery-sieve.js +6 -0
  165. data/app/assets/javascripts/camaleon_cms/admin/jquery.nestable.js +485 -0
  166. data/app/assets/javascripts/camaleon_cms/admin/jquery.validate.js +123 -0
  167. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/de.js +20 -0
  168. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/es.js +27 -0
  169. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/fr.js +49 -0
  170. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/it.js +23 -0
  171. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/nl.js +33 -0
  172. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/pt-BR.js +74 -0
  173. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/ru.js +19 -0
  174. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/uk.js +23 -0
  175. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/zh-CN.js +23 -0
  176. data/app/assets/javascripts/camaleon_cms/admin/lte/app.js +758 -0
  177. data/app/assets/javascripts/camaleon_cms/admin/momentjs/_moment.js +3606 -0
  178. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ar.js +136 -0
  179. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ca.js +79 -0
  180. data/app/assets/javascripts/camaleon_cms/admin/momentjs/de.js +76 -0
  181. data/app/assets/javascripts/camaleon_cms/admin/momentjs/es.js +79 -0
  182. data/app/assets/javascripts/camaleon_cms/admin/momentjs/fr.js +62 -0
  183. data/app/assets/javascripts/camaleon_cms/admin/momentjs/it.js +70 -0
  184. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ja.js +65 -0
  185. data/app/assets/javascripts/camaleon_cms/admin/momentjs/nl.js +71 -0
  186. data/app/assets/javascripts/camaleon_cms/admin/momentjs/pl.js +105 -0
  187. data/app/assets/javascripts/camaleon_cms/admin/momentjs/pt-BR.js +60 -0
  188. data/app/assets/javascripts/camaleon_cms/admin/momentjs/pt.js +64 -0
  189. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ru.js +166 -0
  190. data/app/assets/javascripts/camaleon_cms/admin/momentjs/uk.js +151 -0
  191. data/app/assets/javascripts/camaleon_cms/admin/momentjs/zh-CN.js +127 -0
  192. data/app/assets/javascripts/camaleon_cms/admin/nav_menu.js.coffee +139 -0
  193. data/app/assets/javascripts/camaleon_cms/admin/tageditor/_jquery.caret.min.js +2 -0
  194. data/app/assets/javascripts/camaleon_cms/admin/tageditor/_jquery.tag-editor.js +352 -0
  195. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/de.js +219 -0
  196. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/en.js +179 -0
  197. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/es.js +177 -0
  198. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/fr.js +219 -0
  199. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/it.js +219 -0
  200. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/nl.js +219 -0
  201. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/pt-BR.js +219 -0
  202. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/readme.md +3 -0
  203. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/ru.js +219 -0
  204. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/uk.js +219 -0
  205. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/zh-CN.js +228 -0
  206. data/app/assets/javascripts/camaleon_cms/admin/tinymce/plugins/filemanager/plugin.min.js +30 -0
  207. data/app/assets/javascripts/camaleon_cms/admin/uploader/_cropper.min.js +3003 -0
  208. data/app/assets/javascripts/camaleon_cms/admin/uploader/_jquery.form.js +1277 -0
  209. data/app/assets/javascripts/camaleon_cms/admin/uploader/_jquery.uploadfile.min.js +8 -0
  210. data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +455 -0
  211. data/app/assets/javascripts/camaleon_cms/admin/uploader/uploader_manifest.js +5 -0
  212. data/app/assets/javascripts/camaleon_cms/bootstrap.min.js +7 -0
  213. data/app/assets/stylesheets/camaleon_cms/admin/_bootstrap-datepicker.css.scss +373 -0
  214. data/app/assets/stylesheets/camaleon_cms/admin/_bootstrap-select.css +7 -0
  215. data/app/assets/stylesheets/camaleon_cms/admin/_custom_admin.css.scss +359 -0
  216. data/app/assets/stylesheets/camaleon_cms/admin/_jquery.tagsinput.css +72 -0
  217. data/app/assets/stylesheets/camaleon_cms/admin/admin-basic-manifest.css +16 -0
  218. data/app/assets/stylesheets/camaleon_cms/admin/admin-manifest.css +28 -0
  219. data/app/assets/stylesheets/camaleon_cms/admin/colorpicker.css.scss +96 -0
  220. data/app/assets/stylesheets/camaleon_cms/admin/img/bg.png +0 -0
  221. data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/alpha.png +0 -0
  222. data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/hue.png +0 -0
  223. data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/saturation.png +0 -0
  224. data/app/assets/stylesheets/camaleon_cms/admin/img/girls-1.jpg +0 -0
  225. data/app/assets/stylesheets/camaleon_cms/admin/img/jquery/resize-icon.png +0 -0
  226. data/app/assets/stylesheets/camaleon_cms/admin/img/loading.gif +1 -0
  227. data/app/assets/stylesheets/camaleon_cms/admin/img/logo-small.png +0 -0
  228. data/app/assets/stylesheets/camaleon_cms/admin/img/logo.png +0 -0
  229. data/app/assets/stylesheets/camaleon_cms/admin/img/no_image.jpg +0 -0
  230. data/app/assets/stylesheets/camaleon_cms/admin/img/rormeleon-white.png +0 -0
  231. data/app/assets/stylesheets/camaleon_cms/admin/img/thumb_no_found.jpg +0 -0
  232. data/app/assets/stylesheets/camaleon_cms/admin/introjs/_introjs.min.css +1 -0
  233. data/app/assets/stylesheets/camaleon_cms/admin/jquery/_jquery-ui.scss +1226 -0
  234. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  235. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  236. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  237. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  238. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  239. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  240. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  241. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  242. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_222222_256x240.png +0 -0
  243. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  244. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_454545_256x240.png +0 -0
  245. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_888888_256x240.png +0 -0
  246. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  247. data/app/assets/stylesheets/camaleon_cms/admin/lte/_admin.css.scss +4561 -0
  248. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-black-light.css +176 -0
  249. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-black.css +154 -0
  250. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-blue-light.css +167 -0
  251. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-blue.css +142 -0
  252. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-green-light.css +156 -0
  253. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-green.css +134 -0
  254. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-purple-light.css +156 -0
  255. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-purple.css +135 -0
  256. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-red-light.css +156 -0
  257. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-red.css +134 -0
  258. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-yellow-light.css +156 -0
  259. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-yellow.css +134 -0
  260. data/app/assets/stylesheets/camaleon_cms/admin/nestable/jquery.nestable.css +103 -0
  261. data/app/assets/stylesheets/camaleon_cms/admin/tageditor/_jquery.tag-editor.css.scss +49 -0
  262. data/app/assets/stylesheets/camaleon_cms/admin/uploader/_cropper.min.css +9 -0
  263. data/app/assets/stylesheets/camaleon_cms/admin/uploader/_uploadfile.css.scss +256 -0
  264. data/app/assets/stylesheets/camaleon_cms/admin/uploader/uploader_manifest.css +4 -0
  265. data/app/assets/stylesheets/camaleon_cms/admin/widgets.css.scss +26 -0
  266. data/app/assets/stylesheets/camaleon_cms/bootstrap.min.css.scss +6799 -0
  267. data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +129 -0
  268. data/app/controllers/camaleon_cms/admin/appearances/themes_controller.rb +29 -0
  269. data/app/controllers/camaleon_cms/admin/appearances/widgets/assign_controller.rb +41 -0
  270. data/app/controllers/camaleon_cms/admin/appearances/widgets/main_controller.rb +55 -0
  271. data/app/controllers/camaleon_cms/admin/appearances/widgets/sidebar_controller.rb +56 -0
  272. data/app/controllers/camaleon_cms/admin/categories_controller.rb +80 -0
  273. data/app/controllers/camaleon_cms/admin/comments_controller.rb +90 -0
  274. data/app/controllers/camaleon_cms/admin/installers_controller.rb +32 -0
  275. data/app/controllers/camaleon_cms/admin/media_controller.rb +109 -0
  276. data/app/controllers/camaleon_cms/admin/plugins_controller.rb +46 -0
  277. data/app/controllers/camaleon_cms/admin/post_tags_controller.rb +81 -0
  278. data/app/controllers/camaleon_cms/admin/posts/drafts_controller.rb +58 -0
  279. data/app/controllers/camaleon_cms/admin/posts_controller.rb +212 -0
  280. data/app/controllers/camaleon_cms/admin/sessions_controller.rb +172 -0
  281. data/app/controllers/camaleon_cms/admin/settings/custom_fields_controller.rb +108 -0
  282. data/app/controllers/camaleon_cms/admin/settings/post_types_controller.rb +63 -0
  283. data/app/controllers/camaleon_cms/admin/settings/sites_controller.rb +87 -0
  284. data/app/controllers/camaleon_cms/admin/settings_controller.rb +86 -0
  285. data/app/controllers/camaleon_cms/admin/user_roles_controller.rb +74 -0
  286. data/app/controllers/camaleon_cms/admin/users_controller.rb +124 -0
  287. data/app/controllers/camaleon_cms/admin_controller.rb +82 -0
  288. data/app/controllers/camaleon_cms/apps/plugins_admin_controller.rb +19 -0
  289. data/app/controllers/camaleon_cms/apps/plugins_front_controller.rb +19 -0
  290. data/app/controllers/camaleon_cms/apps/themes_admin_controller.rb +12 -0
  291. data/app/controllers/camaleon_cms/apps/themes_front_controller.rb +12 -0
  292. data/app/controllers/camaleon_cms/camaleon_controller.rb +139 -0
  293. data/app/controllers/camaleon_cms/frontend_controller.rb +277 -0
  294. data/app/controllers/concerns/camaleon_cms/frontend_concern.rb +66 -0
  295. data/app/decorators/camaleon_cms/application_decorator.rb +54 -0
  296. data/app/decorators/camaleon_cms/category_decorator.rb +58 -0
  297. data/app/decorators/camaleon_cms/custom_field_decorator.rb +11 -0
  298. data/app/decorators/camaleon_cms/custom_fields_concern.rb +81 -0
  299. data/app/decorators/camaleon_cms/metas_decorator_methods.rb +11 -0
  300. data/app/decorators/camaleon_cms/nav_menu_item_decorator.rb +4 -0
  301. data/app/decorators/camaleon_cms/plugin_decorator.rb +3 -0
  302. data/app/decorators/camaleon_cms/post_comment_decorator.rb +39 -0
  303. data/app/decorators/camaleon_cms/post_decorator.rb +251 -0
  304. data/app/decorators/camaleon_cms/post_tag_decorator.rb +45 -0
  305. data/app/decorators/camaleon_cms/post_type_decorator.rb +87 -0
  306. data/app/decorators/camaleon_cms/site_decorator.rb +200 -0
  307. data/app/decorators/camaleon_cms/term_taxonomy_decorator.rb +93 -0
  308. data/app/decorators/camaleon_cms/theme_decorator.rb +18 -0
  309. data/app/decorators/camaleon_cms/user_decorator.rb +73 -0
  310. data/app/decorators/camaleon_cms/user_role_decorator.rb +12 -0
  311. data/app/decorators/camaleon_cms/widget_decorator.rb +4 -0
  312. data/app/helpers/camaleon_cms/admin/application_helper.rb +36 -0
  313. data/app/helpers/camaleon_cms/admin/breadcrumb_helper.rb +15 -0
  314. data/app/helpers/camaleon_cms/admin/category_helper.rb +24 -0
  315. data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +354 -0
  316. data/app/helpers/camaleon_cms/admin/menus_helper.rb +182 -0
  317. data/app/helpers/camaleon_cms/admin/post_type_helper.rb +67 -0
  318. data/app/helpers/camaleon_cms/camaleon_helper.rb +88 -0
  319. data/app/helpers/camaleon_cms/captcha_helper.rb +93 -0
  320. data/app/helpers/camaleon_cms/comment_helper.rb +48 -0
  321. data/app/helpers/camaleon_cms/content_helper.rb +29 -0
  322. data/app/helpers/camaleon_cms/email_helper.rb +56 -0
  323. data/app/helpers/camaleon_cms/frontend/application_helper.rb +36 -0
  324. data/app/helpers/camaleon_cms/frontend/content_select_helper.rb +161 -0
  325. data/app/helpers/camaleon_cms/frontend/nav_menu_helper.rb +237 -0
  326. data/app/helpers/camaleon_cms/frontend/seo_helper.rb +86 -0
  327. data/app/helpers/camaleon_cms/frontend/site_helper.rb +70 -0
  328. data/app/helpers/camaleon_cms/hooks_helper.rb +57 -0
  329. data/app/helpers/camaleon_cms/html_helper.rb +134 -0
  330. data/app/helpers/camaleon_cms/plugins_helper.rb +173 -0
  331. data/app/helpers/camaleon_cms/session_helper.rb +161 -0
  332. data/app/helpers/camaleon_cms/short_code_helper.rb +283 -0
  333. data/app/helpers/camaleon_cms/site_helper.rb +103 -0
  334. data/app/helpers/camaleon_cms/theme_helper.rb +95 -0
  335. data/app/helpers/camaleon_cms/uploader_helper.rb +329 -0
  336. data/app/helpers/camaleon_cms/user_roles_helper.rb +13 -0
  337. data/app/mailers/camaleon_cms/html_mailer.rb +87 -0
  338. data/app/models/camaleon_cms/ability.rb +109 -0
  339. data/app/models/camaleon_cms/category.rb +52 -0
  340. data/app/models/camaleon_cms/custom_field.rb +35 -0
  341. data/app/models/camaleon_cms/custom_field_group.rb +136 -0
  342. data/app/models/camaleon_cms/custom_fields_relationship.rb +27 -0
  343. data/app/models/camaleon_cms/media.rb +54 -0
  344. data/app/models/camaleon_cms/meta.rb +4 -0
  345. data/app/models/camaleon_cms/nav_menu.rb +29 -0
  346. data/app/models/camaleon_cms/nav_menu_item.rb +64 -0
  347. data/app/models/camaleon_cms/plugin.rb +76 -0
  348. data/app/models/camaleon_cms/post.rb +265 -0
  349. data/app/models/camaleon_cms/post_comment.rb +44 -0
  350. data/app/models/camaleon_cms/post_default.rb +78 -0
  351. data/app/models/camaleon_cms/post_relationship.rb +20 -0
  352. data/app/models/camaleon_cms/post_tag.rb +7 -0
  353. data/app/models/camaleon_cms/post_type.rb +189 -0
  354. data/app/models/camaleon_cms/site.rb +242 -0
  355. data/app/models/camaleon_cms/term_relationship.rb +18 -0
  356. data/app/models/camaleon_cms/term_taxonomy.rb +61 -0
  357. data/app/models/camaleon_cms/theme.rb +31 -0
  358. data/app/models/camaleon_cms/user.rb +18 -0
  359. data/app/models/camaleon_cms/user_role.rb +138 -0
  360. data/app/models/camaleon_cms/widget.rb +5 -0
  361. data/app/models/camaleon_cms/widget/assigned.rb +27 -0
  362. data/app/models/camaleon_cms/widget/main.rb +44 -0
  363. data/app/models/camaleon_cms/widget/sidebar.rb +20 -0
  364. data/app/models/concerns/camaleon_cms/categories_tags_for_posts.rb +132 -0
  365. data/app/models/concerns/camaleon_cms/custom_fields_read.rb +310 -0
  366. data/app/models/concerns/camaleon_cms/metas.rb +138 -0
  367. data/app/models/concerns/camaleon_cms/site_default_settings.rb +87 -0
  368. data/app/models/concerns/camaleon_cms/user_methods.rb +133 -0
  369. data/app/models/plugins.rb +5 -0
  370. data/app/models/themes.rb +5 -0
  371. data/app/uploaders/camaleon_cms_aws_uploader.rb +132 -0
  372. data/app/uploaders/camaleon_cms_local_uploader.rb +108 -0
  373. data/app/uploaders/camaleon_cms_uploader.rb +164 -0
  374. data/app/views/camaleon_cms/404.html.erb +4 -0
  375. data/app/views/camaleon_cms/500.html.erb +4 -0
  376. data/app/views/camaleon_cms/_flash_messages.html.erb +39 -0
  377. data/app/views/camaleon_cms/admin/appearances/nav_menus/_custom_fields.html.erb +6 -0
  378. data/app/views/camaleon_cms/admin/appearances/nav_menus/_custom_menus.html.erb +42 -0
  379. data/app/views/camaleon_cms/admin/appearances/nav_menus/_external_menu.html.erb +23 -0
  380. data/app/views/camaleon_cms/admin/appearances/nav_menus/_form.html.erb +13 -0
  381. data/app/views/camaleon_cms/admin/appearances/nav_menus/_left_menu_items.html.erb +77 -0
  382. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items.html.erb +19 -0
  383. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items_list.html.erb +12 -0
  384. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_options.html.erb +21 -0
  385. data/app/views/camaleon_cms/admin/appearances/nav_menus/index.html.erb +14 -0
  386. data/app/views/camaleon_cms/admin/appearances/themes/index.html.erb +70 -0
  387. data/app/views/camaleon_cms/admin/appearances/themes/preview.html.erb +1 -0
  388. data/app/views/camaleon_cms/admin/appearances/themes/theme_load_data.html.erb +40 -0
  389. data/app/views/camaleon_cms/admin/appearances/widgets/assign/_form.html.erb +35 -0
  390. data/app/views/camaleon_cms/admin/appearances/widgets/main/_sidebar.html.erb +29 -0
  391. data/app/views/camaleon_cms/admin/appearances/widgets/main/form.html.erb +27 -0
  392. data/app/views/camaleon_cms/admin/appearances/widgets/main/index.html.erb +41 -0
  393. data/app/views/camaleon_cms/admin/appearances/widgets/sidebar/form.html.erb +23 -0
  394. data/app/views/camaleon_cms/admin/categories/_form.html.erb +34 -0
  395. data/app/views/camaleon_cms/admin/categories/edit.html.erb +14 -0
  396. data/app/views/camaleon_cms/admin/categories/index.html.erb +68 -0
  397. data/app/views/camaleon_cms/admin/comments/form.html.erb +12 -0
  398. data/app/views/camaleon_cms/admin/comments/form_answer.html.erb +12 -0
  399. data/app/views/camaleon_cms/admin/comments/index.html.erb +21 -0
  400. data/app/views/camaleon_cms/admin/comments/list.html.erb +36 -0
  401. data/app/views/camaleon_cms/admin/dashboard.html.erb +25 -0
  402. data/app/views/camaleon_cms/admin/installers/form.html.erb +19 -0
  403. data/app/views/camaleon_cms/admin/installers/welcome.html.erb +8 -0
  404. data/app/views/camaleon_cms/admin/media/_render_file_item.html.erb +57 -0
  405. data/app/views/camaleon_cms/admin/media/index.html.erb +70 -0
  406. data/app/views/camaleon_cms/admin/plugins/_plugins_list.html.erb +43 -0
  407. data/app/views/camaleon_cms/admin/plugins/index.html.erb +43 -0
  408. data/app/views/camaleon_cms/admin/post_tags/_form.html.erb +26 -0
  409. data/app/views/camaleon_cms/admin/post_tags/edit.html.erb +14 -0
  410. data/app/views/camaleon_cms/admin/post_tags/index.html.erb +59 -0
  411. data/app/views/camaleon_cms/admin/posts/_filter_posts.html.erb +5 -0
  412. data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +156 -0
  413. data/app/views/camaleon_cms/admin/posts/form.html.erb +96 -0
  414. data/app/views/camaleon_cms/admin/posts/index.html.erb +112 -0
  415. data/app/views/camaleon_cms/admin/posts/show.html.erb +20 -0
  416. data/app/views/camaleon_cms/admin/search.html.erb +73 -0
  417. data/app/views/camaleon_cms/admin/sessions/forgot.html.erb +44 -0
  418. data/app/views/camaleon_cms/admin/sessions/login.html.erb +47 -0
  419. data/app/views/camaleon_cms/admin/sessions/register.html.erb +63 -0
  420. data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +75 -0
  421. data/app/views/camaleon_cms/admin/settings/_email_settings.html.erb +58 -0
  422. data/app/views/camaleon_cms/admin/settings/_file_system_settings.html.erb +32 -0
  423. data/app/views/camaleon_cms/admin/settings/_media_settings.html.erb +14 -0
  424. data/app/views/camaleon_cms/admin/settings/_seo_settings.html.erb +22 -0
  425. data/app/views/camaleon_cms/admin/settings/custom_fields/_get_items.html.erb +185 -0
  426. data/app/views/camaleon_cms/admin/settings/custom_fields/_meta_data.html.erb +93 -0
  427. data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +50 -0
  428. data/app/views/camaleon_cms/admin/settings/custom_fields/_render_category_simple.html.erb +25 -0
  429. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_audio.html.erb +4 -0
  430. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_categories.html.erb +11 -0
  431. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_checkbox.html.erb +8 -0
  432. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_checkboxes.html.erb +5 -0
  433. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_colorpicker.html.erb +7 -0
  434. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_date.html.erb +6 -0
  435. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_editor.html.erb +3 -0
  436. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_email.html.erb +3 -0
  437. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_field_attrs.html.erb +8 -0
  438. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_file.html.erb +4 -0
  439. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_image.html.erb +16 -0
  440. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_numeric.html.erb +4 -0
  441. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_phone.html.erb +3 -0
  442. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_post_types.html.erb +8 -0
  443. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_posts.html.erb +14 -0
  444. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_private_file.html.erb +4 -0
  445. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_radio.html.erb +5 -0
  446. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select.html.erb +7 -0
  447. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select_eval.html.erb +3 -0
  448. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_text_area.html.erb +3 -0
  449. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_text_box.html.erb +3 -0
  450. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_url.html.erb +3 -0
  451. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_users.html.erb +8 -0
  452. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_video.html.erb +4 -0
  453. data/app/views/camaleon_cms/admin/settings/custom_fields/form.html.erb +167 -0
  454. data/app/views/camaleon_cms/admin/settings/custom_fields/index.html.erb +111 -0
  455. data/app/views/camaleon_cms/admin/settings/languages.html.erb +60 -0
  456. data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +171 -0
  457. data/app/views/camaleon_cms/admin/settings/post_types/edit.html.erb +14 -0
  458. data/app/views/camaleon_cms/admin/settings/post_types/index.html.erb +55 -0
  459. data/app/views/camaleon_cms/admin/settings/shortcodes.html.erb +37 -0
  460. data/app/views/camaleon_cms/admin/settings/site.html.erb +98 -0
  461. data/app/views/camaleon_cms/admin/settings/sites/form.html.erb +35 -0
  462. data/app/views/camaleon_cms/admin/settings/sites/index.html.erb +60 -0
  463. data/app/views/camaleon_cms/admin/settings/theme.html.erb +20 -0
  464. data/app/views/camaleon_cms/admin/user_roles/form.html.erb +156 -0
  465. data/app/views/camaleon_cms/admin/user_roles/index.html.erb +57 -0
  466. data/app/views/camaleon_cms/admin/users/form.html.erb +161 -0
  467. data/app/views/camaleon_cms/admin/users/index.html.erb +63 -0
  468. data/app/views/camaleon_cms/admin/users/profile.html.erb +1 -0
  469. data/app/views/camaleon_cms/admin/users/profile/_activity.html.erb +180 -0
  470. data/app/views/camaleon_cms/admin/users/profile/_settings.html.erb +15 -0
  471. data/app/views/camaleon_cms/default_theme/category.html.erb +26 -0
  472. data/app/views/camaleon_cms/default_theme/category.json.jbuilder +15 -0
  473. data/app/views/camaleon_cms/default_theme/category.rss.builder +23 -0
  474. data/app/views/camaleon_cms/default_theme/custom_fields/audio.html.erb +3 -0
  475. data/app/views/camaleon_cms/default_theme/custom_fields/checkbox.html.erb +3 -0
  476. data/app/views/camaleon_cms/default_theme/custom_fields/checkboxes.html.erb +3 -0
  477. data/app/views/camaleon_cms/default_theme/custom_fields/colorpicker.html.erb +3 -0
  478. data/app/views/camaleon_cms/default_theme/custom_fields/date.html.erb +3 -0
  479. data/app/views/camaleon_cms/default_theme/custom_fields/editor.html.erb +3 -0
  480. data/app/views/camaleon_cms/default_theme/custom_fields/email.html.erb +3 -0
  481. data/app/views/camaleon_cms/default_theme/custom_fields/field_attrs.html.erb +3 -0
  482. data/app/views/camaleon_cms/default_theme/custom_fields/file.html.erb +3 -0
  483. data/app/views/camaleon_cms/default_theme/custom_fields/image.html.erb +3 -0
  484. data/app/views/camaleon_cms/default_theme/custom_fields/numeric.html.erb +3 -0
  485. data/app/views/camaleon_cms/default_theme/custom_fields/phone.html.erb +3 -0
  486. data/app/views/camaleon_cms/default_theme/custom_fields/posts.html.erb +3 -0
  487. data/app/views/camaleon_cms/default_theme/custom_fields/radio.html.erb +3 -0
  488. data/app/views/camaleon_cms/default_theme/custom_fields/select.html.erb +3 -0
  489. data/app/views/camaleon_cms/default_theme/custom_fields/select_eval.html.erb +3 -0
  490. data/app/views/camaleon_cms/default_theme/custom_fields/text_area.html.erb +3 -0
  491. data/app/views/camaleon_cms/default_theme/custom_fields/text_box.html.erb +3 -0
  492. data/app/views/camaleon_cms/default_theme/custom_fields/url.html.erb +3 -0
  493. data/app/views/camaleon_cms/default_theme/custom_fields/users.html.erb +3 -0
  494. data/app/views/camaleon_cms/default_theme/custom_fields/video.html.erb +3 -0
  495. data/app/views/camaleon_cms/default_theme/index.html.erb +70 -0
  496. data/app/views/camaleon_cms/default_theme/index.json.jbuilder +14 -0
  497. data/app/views/camaleon_cms/default_theme/partials/_breadcrumb.html.erb +10 -0
  498. data/app/views/camaleon_cms/default_theme/partials/_cama_category_entry.json.jbuilder +6 -0
  499. data/app/views/camaleon_cms/default_theme/partials/_cama_comments_entry.json.jbuilder +6 -0
  500. data/app/views/camaleon_cms/default_theme/partials/_cama_post_entry.json.jbuilder +6 -0
  501. data/app/views/camaleon_cms/default_theme/partials/_cama_post_type_entry.json.jbuilder +6 -0
  502. data/app/views/camaleon_cms/default_theme/partials/_cama_posts_entries.json.jbuilder +8 -0
  503. data/app/views/camaleon_cms/default_theme/partials/_cama_tag_entry.json.jbuilder +5 -0
  504. data/app/views/camaleon_cms/default_theme/partials/_cama_user_entry.json.jbuilder +5 -0
  505. data/app/views/camaleon_cms/default_theme/partials/_categories_list.html.erb +23 -0
  506. data/app/views/camaleon_cms/default_theme/partials/_comments.html.erb +48 -0
  507. data/app/views/camaleon_cms/default_theme/partials/_comments_list.html.erb +21 -0
  508. data/app/views/camaleon_cms/default_theme/partials/_comments_list2.html.erb +24 -0
  509. data/app/views/camaleon_cms/default_theme/partials/_flash_messages.html.erb +26 -0
  510. data/app/views/camaleon_cms/default_theme/partials/_forms.html.erb +19 -0
  511. data/app/views/camaleon_cms/default_theme/partials/_post_list_item.html.erb +13 -0
  512. data/app/views/camaleon_cms/default_theme/partials/_render_custom_field.html.erb +55 -0
  513. data/app/views/camaleon_cms/default_theme/partials/_search_form.html.erb +8 -0
  514. data/app/views/camaleon_cms/default_theme/partials/_sidebar.html.erb +66 -0
  515. data/app/views/camaleon_cms/default_theme/post_tag.html.erb +18 -0
  516. data/app/views/camaleon_cms/default_theme/post_tag.json.jbuilder +10 -0
  517. data/app/views/camaleon_cms/default_theme/post_tag.rss.builder +22 -0
  518. data/app/views/camaleon_cms/default_theme/post_type.html.erb +25 -0
  519. data/app/views/camaleon_cms/default_theme/post_type.json.jbuilder +13 -0
  520. data/app/views/camaleon_cms/default_theme/post_type.rss.builder +22 -0
  521. data/app/views/camaleon_cms/default_theme/profile.html.erb +18 -0
  522. data/app/views/camaleon_cms/default_theme/profile.json.jbuilder +4 -0
  523. data/app/views/camaleon_cms/default_theme/robots.text.erb +1 -0
  524. data/app/views/camaleon_cms/default_theme/rss.rss.builder +21 -0
  525. data/app/views/camaleon_cms/default_theme/search.html.erb +13 -0
  526. data/app/views/camaleon_cms/default_theme/search.json.jbuilder +1 -0
  527. data/app/views/camaleon_cms/default_theme/single.html.erb +32 -0
  528. data/app/views/camaleon_cms/default_theme/single.json.jbuilder +21 -0
  529. data/app/views/camaleon_cms/default_theme/single.rss.builder +12 -0
  530. data/app/views/camaleon_cms/default_theme/sitemap.html.erb +23 -0
  531. data/app/views/camaleon_cms/default_theme/sitemap.xml.builder +60 -0
  532. data/app/views/camaleon_cms/html_mailer/confirm_email.html.erb +3 -0
  533. data/app/views/camaleon_cms/html_mailer/mailer.html.erb +4 -0
  534. data/app/views/camaleon_cms/html_mailer/password_reset.html.erb +3 -0
  535. data/app/views/camaleon_cms/shortcode_templates/widget.html.erb +11 -0
  536. data/app/views/layouts/camaleon_cms/admin.html.erb +54 -0
  537. data/app/views/layouts/camaleon_cms/admin/_ajax.html.erb +8 -0
  538. data/app/views/layouts/camaleon_cms/admin/_flash_messages.html.erb +43 -0
  539. data/app/views/layouts/camaleon_cms/admin/_footer.html.erb +13 -0
  540. data/app/views/layouts/camaleon_cms/admin/_form_error.html.erb +10 -0
  541. data/app/views/layouts/camaleon_cms/admin/_header.html.erb +51 -0
  542. data/app/views/layouts/camaleon_cms/admin/_sidebar.html.erb +19 -0
  543. data/app/views/layouts/camaleon_cms/admin/installer.html.erb +35 -0
  544. data/app/views/layouts/camaleon_cms/application.html.erb +15 -0
  545. data/app/views/layouts/camaleon_cms/login.html.erb +22 -0
  546. data/app/views/layouts/camaleon_cms/mailer.html.erb +22 -0
  547. data/config/initializers/action_view.rb +56 -0
  548. data/config/initializers/active_record_extension.rb +104 -0
  549. data/config/initializers/assets.rb +27 -0
  550. data/config/initializers/custom_initializers.rb +10 -0
  551. data/config/initializers/mobu.rb +24 -0
  552. data/config/initializers/model_alias.rb +18 -0
  553. data/config/initializers/sass.rb +52 -0
  554. data/config/locales/ar.yml +275 -0
  555. data/config/locales/camaleon_cms/admin/ar.yml +683 -0
  556. data/config/locales/camaleon_cms/admin/de.yml +682 -0
  557. data/config/locales/camaleon_cms/admin/en.yml +682 -0
  558. data/config/locales/camaleon_cms/admin/es.yml +654 -0
  559. data/config/locales/camaleon_cms/admin/fr.yml +663 -0
  560. data/config/locales/camaleon_cms/admin/it.yml +633 -0
  561. data/config/locales/camaleon_cms/admin/js.yml +435 -0
  562. data/config/locales/camaleon_cms/admin/nl.yml +659 -0
  563. data/config/locales/camaleon_cms/admin/pt-BR.yml +643 -0
  564. data/config/locales/camaleon_cms/admin/pt.yml +641 -0
  565. data/config/locales/camaleon_cms/admin/ru.yml +670 -0
  566. data/config/locales/camaleon_cms/admin/uk.yml +670 -0
  567. data/config/locales/camaleon_cms/admin/zh-CH.yml +703 -0
  568. data/config/locales/camaleon_cms/common.yml +784 -0
  569. data/config/locales/camaleon_cms/languages.yml +167 -0
  570. data/config/locales/camaleon_cms/routes.yml +71 -0
  571. data/config/locales/de.yml +210 -0
  572. data/config/locales/en.yml +207 -0
  573. data/config/locales/es.yml +198 -0
  574. data/config/locales/fr.yml +207 -0
  575. data/config/locales/it.yml +205 -0
  576. data/config/locales/nl.yml +209 -0
  577. data/config/locales/pl.yml +237 -0
  578. data/config/locales/pt-BR.yml +203 -0
  579. data/config/locales/pt.yml +201 -0
  580. data/config/locales/ru.yml +207 -0
  581. data/config/locales/uk.yml +257 -0
  582. data/config/locales/zh-CH.yml +194 -0
  583. data/config/routes.rb +11 -0
  584. data/config/routes/admin.rb +148 -0
  585. data/config/routes/frontend.rb +96 -0
  586. data/config/system.json +19 -0
  587. data/db/migrate/20150611161134_post_table_into_utf8.rb +124 -0
  588. data/db/migrate/20150926095310_rename_column_posts.rb +18 -0
  589. data/db/migrate/20151212095328_add_confirm_token_to_users.rb +7 -0
  590. data/db/migrate/20160504155652_add_feature_to_posts.rb +5 -0
  591. data/db/migrate/20160504155653_move_first_name_of_users.rb +9 -0
  592. data/db/migrate/20160606135421_improve_menus_structure.rb +7 -0
  593. data/db/migrate/20160609121449_add_group_to_custom_field_values.rb +5 -0
  594. data/db/migrate/20161206211917_install_migrated_seo_plugin.rb +8 -0
  595. data/db/migrate/20161215202255_drop_user_relationship_table.rb +5 -0
  596. data/db/migrate/20180124132318_create_media.rb +17 -0
  597. data/db/migrate/20180704211100_adjust_field_length.rb +10 -0
  598. data/lib/camaleon_cms.rb +5 -0
  599. data/lib/camaleon_cms/engine.rb +84 -0
  600. data/lib/camaleon_cms/version.rb +3 -0
  601. data/lib/captcha/bumpyroad.ttf +0 -0
  602. data/lib/captcha/captcha_0.jpg +0 -0
  603. data/lib/captcha/captcha_1.jpg +0 -0
  604. data/lib/captcha/captcha_10.jpg +0 -0
  605. data/lib/captcha/captcha_11.jpg +0 -0
  606. data/lib/captcha/captcha_2.jpg +0 -0
  607. data/lib/captcha/captcha_3.jpg +0 -0
  608. data/lib/captcha/captcha_4.jpg +0 -0
  609. data/lib/captcha/captcha_5.jpg +0 -0
  610. data/lib/captcha/captcha_6.jpg +0 -0
  611. data/lib/captcha/captcha_7.jpg +0 -0
  612. data/lib/captcha/captcha_8.jpg +0 -0
  613. data/lib/captcha/captcha_9.jpg +0 -0
  614. data/lib/ext/array.rb +59 -0
  615. data/lib/ext/hash.rb +41 -0
  616. data/lib/ext/string.rb +162 -0
  617. data/lib/ext/translator.rb +84 -0
  618. data/lib/generators/camaleon_cms/gem_plugin_generator.rb +140 -0
  619. data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/admin_controller.rb +18 -0
  620. data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/front_controller.rb +8 -0
  621. data/lib/generators/camaleon_cms/gem_plugin_template/app/helpers/plugins/my_plugin/main_helper.rb +29 -0
  622. data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +6 -0
  623. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/index.html.erb +9 -0
  624. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/settings.html.erb +21 -0
  625. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/front/index.html.erb +2 -0
  626. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/layouts/readme.txt +2 -0
  627. data/lib/generators/camaleon_cms/gem_plugin_template/config/camaleon_plugin.json +14 -0
  628. data/lib/generators/camaleon_cms/gem_plugin_template/config/initializers/custom_models.rb +5 -0
  629. data/lib/generators/camaleon_cms/install_generator.rb +43 -0
  630. data/lib/generators/camaleon_cms/install_template/apps/themes/readme.txt +0 -0
  631. data/lib/generators/camaleon_cms/install_template/plugin_routes.rb +22 -0
  632. data/lib/generators/camaleon_cms/install_template/system.json +11 -0
  633. data/lib/generators/camaleon_cms/theme_generator.rb +66 -0
  634. data/lib/generators/camaleon_cms/theme_template/assets/css/main.css +13 -0
  635. data/lib/generators/camaleon_cms/theme_template/assets/images/image.png +0 -0
  636. data/lib/generators/camaleon_cms/theme_template/assets/js/main.js +14 -0
  637. data/lib/generators/camaleon_cms/theme_template/config/config.json +14 -0
  638. data/lib/generators/camaleon_cms/theme_template/main_helper.rb +27 -0
  639. data/lib/generators/camaleon_cms/theme_template/views/admin/settings.html.erb +2 -0
  640. data/lib/generators/camaleon_cms/theme_template/views/index.html.erb +1 -0
  641. data/lib/generators/camaleon_cms/theme_template/views/layouts/index.html.erb +69 -0
  642. data/lib/generators/camaleon_cms/theme_template/views/partials/readme.txt +1 -0
  643. data/lib/plugin_routes.rb +439 -0
  644. data/lib/tasks/camaleon_cms/camaleon_tasks.rake +30 -0
  645. data/lib/tasks/camaleon_cms/rspec_test.rake +20 -0
  646. data/spec/dummy/README.rdoc +28 -0
  647. data/spec/dummy/Rakefile +6 -0
  648. data/spec/dummy/app/assets/config/manifest.js +8 -0
  649. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  650. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  651. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  652. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  653. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  654. data/spec/dummy/bin/bundle +3 -0
  655. data/spec/dummy/bin/rails +4 -0
  656. data/spec/dummy/bin/rake +4 -0
  657. data/spec/dummy/bin/setup +36 -0
  658. data/spec/dummy/bin/update +31 -0
  659. data/spec/dummy/bin/yarn +11 -0
  660. data/spec/dummy/config.ru +4 -0
  661. data/spec/dummy/config/application.rb +27 -0
  662. data/spec/dummy/config/boot.rb +5 -0
  663. data/spec/dummy/config/database.yml +25 -0
  664. data/spec/dummy/config/environment.rb +5 -0
  665. data/spec/dummy/config/environments/development.rb +41 -0
  666. data/spec/dummy/config/environments/production.rb +79 -0
  667. data/spec/dummy/config/environments/test.rb +44 -0
  668. data/spec/dummy/config/initializers/assets.rb +11 -0
  669. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  670. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  671. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  672. data/spec/dummy/config/initializers/inflections.rb +16 -0
  673. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  674. data/spec/dummy/config/initializers/session_store.rb +3 -0
  675. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  676. data/spec/dummy/config/locales/en.yml +23 -0
  677. data/spec/dummy/config/routes.rb +4 -0
  678. data/spec/dummy/config/secrets.yml +22 -0
  679. data/spec/dummy/db/schema.rb +186 -0
  680. data/spec/factories/post.rb +44 -0
  681. data/spec/factories/post_type.rb +9 -0
  682. data/spec/factories/site.rb +18 -0
  683. data/spec/factories/user.rb +19 -0
  684. data/spec/features/admin/categories_spec.rb +25 -0
  685. data/spec/features/admin/comments_spec.rb +52 -0
  686. data/spec/features/admin/contact_form_spec.rb +60 -0
  687. data/spec/features/admin/content_groups_spec.rb +53 -0
  688. data/spec/features/admin/custom_fields_spec.rb +49 -0
  689. data/spec/features/admin/languages_spec.rb +37 -0
  690. data/spec/features/admin/media_spec.rb +50 -0
  691. data/spec/features/admin/menus_spec.rb +50 -0
  692. data/spec/features/admin/pages_spec.rb +35 -0
  693. data/spec/features/admin/plugins_spec.rb +29 -0
  694. data/spec/features/admin/posts_spec.rb +37 -0
  695. data/spec/features/admin/session_spec.rb +102 -0
  696. data/spec/features/admin/settings_spec.rb +17 -0
  697. data/spec/features/admin/shortcodes_spec.rb +11 -0
  698. data/spec/features/admin/sites_spec.rb +53 -0
  699. data/spec/features/admin/tags_spec.rb +34 -0
  700. data/spec/features/admin/themes_spec.rb +18 -0
  701. data/spec/features/admin/user_roles_spec.rb +66 -0
  702. data/spec/features/admin/users_spec.rb +81 -0
  703. data/spec/features/admin/widgets_spec.rb +59 -0
  704. data/spec/features/frontend/pages_spec.rb +136 -0
  705. data/spec/features/frontend/post_type_spec.rb +16 -0
  706. data/spec/helpers/email_helper_spec.rb +16 -0
  707. data/spec/helpers/short_code_helper_spec.rb +64 -0
  708. data/spec/helpers/uploader_helper_spec.rb +56 -0
  709. data/spec/mailers/send_mail_spec.rb +37 -0
  710. data/spec/models/post_spec.rb +50 -0
  711. data/spec/models/user_spec.rb +12 -0
  712. data/spec/rails_helper.rb +50 -0
  713. data/spec/routing/post_type_routes_spec.rb +12 -0
  714. data/spec/spec_helper.rb +167 -0
  715. data/spec/support/capybara_normalize_whitespace_patch.rb +17 -0
  716. data/spec/support/common.rb +119 -0
  717. data/spec/support/fixtures/rails.png +0 -0
  718. data/spec/support/wait_for_ajax.rb +30 -0
  719. metadata +1213 -0
@@ -0,0 +1,9 @@
1
+ <%#= javascript_include_tag plugin_asset("my_file.js") %>
2
+ <div class="panel panel-default">
3
+ <div class="panel-heading">
4
+ <h4>My Title</h4>
5
+ </div>
6
+ <div class="panel-body">
7
+ <p>Plugin ready to use in admin panel!.</p>
8
+ </div>
9
+ </div>
@@ -0,0 +1,21 @@
1
+ <div class="panel panel-default">
2
+ <div class="panel-heading">
3
+ <h4>My Plugin Settings</h4>
4
+ </div>
5
+ <div class="panel-body">
6
+ <%= form_tag(url_for(action: :save_settings), class: 'validate') do %>
7
+ <div class="form-group">
8
+ <label>My Option Setting</label>
9
+ <%= text_field_tag 'options[my_setting]', @plugin.get_option('my_setting'), class: 'form-control required' %>
10
+ </div>
11
+ <div class="form-group">
12
+ <label>My Meta Setting</label>
13
+ <%= text_field_tag 'metas[my_setting]', @plugin.get_meta('my_setting'), class: 'form-control required' %>
14
+ </div>
15
+ <%= render partial: "camaleon_cms/admin/settings/custom_fields/render", locals: {record: @plugin, field_groups: @plugin.get_field_groups} %>
16
+ <div class="form-group text-right">
17
+ <%= submit_tag 'Save Settings', class: 'btn btn-primary' %>
18
+ </div>
19
+ <% end %>
20
+ </div>
21
+ </div>
@@ -0,0 +1,2 @@
1
+ <%#= javascript_include_tag plugin_gem_asset("js/my_file.js") %>
2
+ Plugin ready to use! in frontend.
@@ -0,0 +1,2 @@
1
+ You can create your layouts here.
2
+ To load your custom layout you can use: layout: plugin_layout(<layout_name>) in your controller
@@ -0,0 +1,14 @@
1
+ {
2
+ "title": "pluginTitle",
3
+ "descr": "",
4
+ "key": "pluginKey", // must be the name of the folder of your plugin, sample: app/views/plugins/<my_plugin> ==> 'my_plugin'
5
+ "helpers": [
6
+ "Plugins::PluginClass::MainHelper"
7
+ ],
8
+ "hooks": {
9
+ "on_active": ["pluginKey_on_active"],
10
+ "on_inactive": ["pluginKey_on_inactive"],
11
+ "plugin_options": ["pluginKey_on_plugin_options"]
12
+ //here you can add all your hooks (read documentation)
13
+ }
14
+ }
@@ -0,0 +1,5 @@
1
+ #Rails.application.config.to_prepare do
2
+ # CamaleonCms::Site.class_eval do
3
+ # has_many :attack, class_name: "Plugins::Attack::Models::Attack"
4
+ # end
5
+ # end
@@ -0,0 +1,43 @@
1
+ require 'rails/generators/base'
2
+ require 'securerandom'
3
+ module CamaleonCms
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ source_root File.expand_path("../install_template", __FILE__)
7
+ desc "This generator create all basic Camaleon CMS structure."
8
+
9
+ def create_initializer_file
10
+ copy_file "system.json", "config/system.json"
11
+ copy_file "plugin_routes.rb", "lib/plugin_routes.rb"
12
+ Dir.mkdir Rails.root.join("app", "apps").to_s unless Dir.exist?(Rails.root.join("app", "apps").to_s)
13
+ directory("apps", "app/apps")
14
+ directory( File.join($camaleon_engine_dir, 'app/apps/themes').to_s, 'app/apps/themes')
15
+
16
+ sprokects_4_or_newer = defined?(Sprockets::BabelProcessor)
17
+ if sprokects_4_or_newer
18
+ assets_config_dir = Rails.root.join('app', 'assets', 'config')
19
+ FileUtils.makedirs(assets_config_dir)
20
+ assets_config_file = assets_config_dir.join('manifest.js')
21
+ FileUtils.touch(assets_config_file) unless File.file?(assets_config_file)
22
+ append_to_file assets_config_file, <<~ASSETS
23
+
24
+ // Camaleon CMS assets
25
+ //= link camaleon-cms.js
26
+ //= link_tree ../../apps/themes/camaleon_first/assets
27
+ //= link_tree ../../apps/themes/default/assets
28
+ //= link_tree ../../apps/themes/new/assets
29
+ ASSETS
30
+ append_to_file Rails.root.join('config', 'initializers', 'assets.rb'),
31
+ <<~PRECOMPILE_MANIFEST
32
+
33
+ Rails.application.config.assets.precompile += %w( manifest.js )
34
+ PRECOMPILE_MANIFEST
35
+ end
36
+
37
+ append_to_file 'Gemfile' do
38
+ "\n\n#################### Camaleon CMS include all gems for plugins and themes #################### \nrequire './lib/plugin_routes' \ninstance_eval(PluginRoutes.draw_gems)"
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,22 @@
1
+ require 'json'
2
+ class PluginRoutes
3
+ # draw "all" gems registered for the plugins or themes and camaleon gems
4
+ def self.draw_gems
5
+ res = []
6
+ dirs = [] + Dir["#{apps_dir}/plugins/*"] + Dir["#{apps_dir}/themes/*"]
7
+
8
+ dirs.each do |path|
9
+ next if [".", ".."].include?(path)
10
+ g = File.join(path, "config", "Gemfile")
11
+ res << File.read(g) if File.exist?(g)
12
+ end
13
+ res.join("\n")
14
+ end
15
+
16
+ # return apps directory path
17
+ def self.apps_dir
18
+ dir = "#{File.dirname(__FILE__)}".split("/")
19
+ dir.pop
20
+ dir.join("/")+ '/app/apps'
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ {
2
+ "share_sessions": true, // (boolean) share user sessions between subdomains of base_domain (only for users_share_sites = true)
3
+ "default_user_role": "client", // default user role for all new users
4
+ "users_share_sites": true, //(boolean) true: permit to share users between sites, false: All users are assigned for a unique site. (Only changed before installation)
5
+ "db_prefix": "cama_", // prefix name for database tables
6
+ "relative_url_root": "", // URL prefix, for example to get http://localhost:3000/blog/, this should be "blog"
7
+ "auto_include_migrations": false, // permit to avoid auto include of all migrations of camaleon cms and its related plugins
8
+ "hooks": {}
9
+ }
10
+
11
+ // Note: after any change in this file, you need to restart your server to apply changes.
@@ -0,0 +1,66 @@
1
+ require 'rails/generators/base'
2
+ require 'securerandom'
3
+ module CamaleonCms
4
+ module Generators
5
+ class ThemeGenerator < Rails::Generators::Base
6
+ source_root File.expand_path("../theme_template", __FILE__)
7
+ argument :theme_name, :type => :string, :default => "my_theme"
8
+ desc "This generator create basic theme structure"
9
+
10
+ def create_initializer_file
11
+ theme_folder = Rails.root.join('app', 'apps', 'themes', get_theme_name)
12
+ if behavior == :revoke
13
+ if Dir.exist?(theme_folder)
14
+ FileUtils.rm_rf(theme_folder)
15
+ puts "Theme destroyed successfully"
16
+ else
17
+ puts "This theme doesn't exist"
18
+ end
19
+
20
+ else
21
+
22
+ if Dir.exist?(theme_folder)
23
+ puts "This theme already exist"
24
+ else
25
+
26
+ theme_folder = Rails.root.join('app', 'apps', 'themes', get_theme_name)
27
+ return puts ("There is already a theme with the same name in: #{theme_folder}") if Dir.exist?(theme_folder)
28
+
29
+ # tmp copy
30
+ FileUtils.mkdir_p(theme_folder)
31
+ FileUtils.copy_entry(File.join($camaleon_engine_dir, "lib", "generators", "camaleon_cms", 'theme_template'), theme_folder)
32
+
33
+ # configuration
34
+ t = fix_text(File.read(File.join(theme_folder, "config", "config.json")))
35
+ File.open(File.join(theme_folder, "config", "config.json"), "w"){|f| f << t }
36
+
37
+ # helper
38
+ t = fix_text(File.read(File.join(theme_folder, "main_helper.rb")))
39
+ File.open(File.join(theme_folder, "main_helper.rb"), "w"){|f| f << t }
40
+ puts "Theme successfully created in: #{theme_folder}"
41
+ end
42
+ end
43
+ end
44
+
45
+ def fix_text(text = "")
46
+ text.gsub("themeTitle", get_theme_title).gsub("ThemeClass", get_theme_class).gsub("themeKey", get_theme_name)
47
+ end
48
+
49
+ def self.next_migration_number(dir)
50
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
51
+ end
52
+
53
+ private
54
+ def get_theme_name
55
+ theme_name.underscore.singularize
56
+ end
57
+
58
+ def get_theme_title
59
+ theme_name.titleize
60
+ end
61
+ def get_theme_class
62
+ get_theme_name.classify
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,13 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+ *= require camaleon_cms/bootstrap.min
12
+ *= require font-awesome
13
+ */
@@ -0,0 +1,14 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require jquery.js
14
+ //= require camaleon_cms/bootstrap.min.js
@@ -0,0 +1,14 @@
1
+ {
2
+ "name" : "themeTitle",
3
+ "description" : "",
4
+ "thumb" : "images/image.png",
5
+ "helpers": [
6
+ "Themes::ThemeClass::MainHelper"
7
+ ],
8
+ "hooks": {
9
+ "on_active": ["themeKey_on_install_theme"],
10
+ "on_inactive": ["themeKey_on_uninstall_theme"],
11
+ "on_theme_settings": ["themeKey_settings"]
12
+ //here all your hooks
13
+ }
14
+ }
@@ -0,0 +1,27 @@
1
+ module Themes::ThemeClass::MainHelper
2
+ def self.included(klass)
3
+ # klass.helper_method [:my_helper_method] rescue "" # here your methods accessible from views
4
+ end
5
+
6
+ def themeKey_settings(theme)
7
+ # callback to save custom values of fields added in my_theme/views/admin/settings.html.erb
8
+ end
9
+
10
+ # callback called after theme installed
11
+ def themeKey_on_install_theme(theme)
12
+ # # Sample Custom Field
13
+ # unless theme.get_field_groups.where(slug: "fields").any?
14
+ # group = theme.add_field_group({name: "Main Settings", slug: "fields", description: ""})
15
+ # group.add_field({"name"=>"Background color", "slug"=>"bg_color"},{field_key: "colorpicker"})
16
+ # group.add_field({"name"=>"Links color", "slug"=>"links_color"},{field_key: "colorpicker"})
17
+ # group.add_field({"name"=>"Background image", "slug"=>"bg"},{field_key: "image"})
18
+ # end
19
+
20
+ # # Sample Meta Value
21
+ # theme.set_meta("installed_at", Time.current.to_s) # save a custom value
22
+ end
23
+
24
+ # callback executed after theme uninstalled
25
+ def themeKey_on_uninstall_theme(theme)
26
+ end
27
+ end
@@ -0,0 +1,2 @@
1
+ <!-- This page is viewed on admin->settings->site settings->tab theme -->
2
+ <!-- You can add your custom html contents here, but don't forget to save the values with hook on_theme_settings -->
@@ -0,0 +1 @@
1
+ <h1>Hello Camaleon CMS</h1>
@@ -0,0 +1,69 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <!-- META SECTION -->
5
+ <title><%= current_site.the_title %></title>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
9
+ <!-- END META SECTION -->
10
+
11
+ <%= stylesheet_link_tag theme_asset_path("css/main") %>
12
+ <%= javascript_include_tag theme_asset_path("js/main.js") %>
13
+ <%= raw the_head %>
14
+ </head>
15
+ <body>
16
+
17
+ <!-- container -->
18
+ <div class="container">
19
+ <!-- header -->
20
+ <div class="navbar navbar-primary">
21
+ <div class="navbar-header">
22
+ <a id="logo" class="navbar-brand" href="<%= current_site.the_url %>"><%= image_tag current_site.the_logo, class: "img-responsive" %></a>
23
+ <button data-target="#navbar-main" data-toggle="collapse" type="button" class="navbar-toggle">
24
+ <span class="icon-bar"></span>
25
+ <span class="icon-bar"></span>
26
+ <span class="icon-bar"></span>
27
+ </button>
28
+ </div>
29
+ <div id="navbar-main" class="navbar-collapse collapse">
30
+ <%= raw get_nav_menu('main_menu', 'nav navbar-nav ') %>
31
+
32
+ <ul class="nav navbar-nav navbar-right">
33
+ <% if signin? %>
34
+ <li class="dropdown">
35
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#"><img src="<%= cama_current_user.decorate.the_avatar %>" style="max-width: 24px; border-radius: 50%" alt=""/> <%= cama_current_user.username %></a>
36
+ <ul class="dropdown-menu">
37
+ <li><a href="<%= cama_admin_dashboard_path %>">Dashboard</a></li>
38
+ <li><a href="<%= cama_admin_profile_path %>">Profile</a></li>
39
+ <li><a href="<%= cama_admin_logout_path %>">Logout</a></li>
40
+ </ul>
41
+ </li>
42
+ <% else %>
43
+ <li class="dropdown">
44
+ <a id="login-user" class="dropdown-toggle" data-toggle="dropdown" href="#">Login / Register</a>
45
+ <ul class="dropdown-menu">
46
+ <li><a href="<%= cama_admin_login_path %>">Login</a></li>
47
+ <li><a href="<%= cama_admin_register_path %>">Register</a></li>
48
+ </ul>
49
+ </li>
50
+ <% end %>
51
+ </ul>
52
+ <%= raw current_site.draw_languages("language list-inline pull-right", true) %>
53
+ </div>
54
+ </div>
55
+ <!-- ./header -->
56
+
57
+ <div class="content">
58
+ <%= yield %>
59
+ </div>
60
+
61
+ <!-- footer -->
62
+ <footer>
63
+
64
+ </footer>
65
+ <!-- ./footer -->
66
+ </div>
67
+ <!-- ./container -->
68
+ </body>
69
+ </html>
@@ -0,0 +1,439 @@
1
+ require 'json'
2
+ class PluginRoutes
3
+ @@_vars = []
4
+ @@_after_reload = []
5
+ @@anonymous_hooks = {}
6
+ # load plugin routes if it is enabled
7
+ def self.load(env = "admin")
8
+ plugins = all_enabled_plugins
9
+ res = ""
10
+ if env == "front"
11
+ res << "namespace :plugins do \n"
12
+ plugins.each do |plugin|
13
+ res << "namespace '#{plugin["key"]}' do \n"
14
+ res << "#{File.open(File.join(plugin["path"], "config", "routes_#{env}.txt")).read}\n" rescue ""
15
+ res << "end\n"
16
+ end
17
+ res << "end\n"
18
+
19
+ elsif env == "admin" # admin
20
+ res << "scope 'admin', as: 'admin' do \n"
21
+ res << "namespace :plugins do \n"
22
+ plugins.each do |plugin|
23
+ res << "namespace '#{plugin["key"]}' do \n"
24
+ res << "#{File.open(File.join(plugin["path"], "config", "routes_#{env}.txt")).read}\n" rescue ""
25
+ res << "end\n"
26
+ end
27
+ res << "end\n"
28
+ res << "end\n"
29
+ else # main
30
+ plugins.each do |plugin|
31
+ res << "#{File.open(File.join(plugin["path"], "config", "routes_#{env}.txt")).read}\n" rescue ""
32
+ end
33
+ end
34
+ res + load_themes(env)
35
+ end
36
+
37
+ def self.load_themes(env = "admin")
38
+ plugins = all_enabled_themes
39
+ res = ""
40
+ if env == "front"
41
+ res << "namespace :themes do \n"
42
+ plugins.each do |plugin|
43
+ res << "namespace '#{plugin["key"]}' do \n"
44
+ res << "#{File.open(File.join(plugin["path"], "config", "routes_#{env}.txt")).read}\n" rescue ""
45
+ res << "end\n"
46
+ end
47
+ res << "end\n"
48
+
49
+ elsif env == "admin" # admin
50
+ res << "scope 'admin', as: 'admin' do \n"
51
+ res << "namespace :themes do \n"
52
+ plugins.each do |plugin|
53
+ res << "namespace '#{plugin["key"]}' do \n"
54
+ res << "#{File.open(File.join(plugin["path"], "config", "routes_#{env}.txt")).read}\n" rescue ""
55
+ res << "end\n"
56
+ end
57
+ res << "end\n"
58
+ res << "end\n"
59
+ else # main
60
+ plugins.each do |plugin|
61
+ res << "#{File.open(File.join(plugin["path"], "config", "routes_#{env}.txt")).read}\n" rescue ""
62
+ end
63
+ end
64
+ res
65
+ end
66
+
67
+ class << self
68
+ # return plugin information
69
+ def plugin_info(plugin_key)
70
+ self.all_plugins.each{|p| return p if p["key"] == plugin_key || p['path'].split('/').last == plugin_key }
71
+ nil
72
+ end
73
+
74
+ # return theme information
75
+ # if theme_name is nil, the use current site theme
76
+ def theme_info(theme_name)
77
+ self.all_themes.each{|p| return p if p["key"] == theme_name }
78
+ nil
79
+ end
80
+
81
+ # return system static settings (config.json values)
82
+ def static_system_info
83
+ r = cache_variable("statis_system_info"); return r unless r.nil?
84
+ settings = {}
85
+
86
+ gem_settings = File.join($camaleon_engine_dir, "config", "system.json")
87
+ app_settings = Rails.root.join("config", "system.json")
88
+
89
+ settings = settings.merge(JSON.parse(File.read(gem_settings))) if File.exist?(gem_settings)
90
+ settings = settings.merge(JSON.parse(File.read(app_settings))) if File.exist?(app_settings)
91
+
92
+ # custom settings
93
+ settings["key"] = "system"
94
+ settings["path"] = ''
95
+ settings["kind"] = "system"
96
+ settings["hooks"]["on_notification"] ||= []
97
+ cache_variable("statis_system_info", settings)
98
+ end
99
+ alias_method :system_info, :static_system_info
100
+
101
+ def isRails4?
102
+ Rails.version.to_s[0].to_i == 4
103
+ end
104
+
105
+ def isRails5?
106
+ Rails.version.to_s[0].to_i == 5
107
+ end
108
+
109
+ def isRails6?
110
+ Rails.version.to_s[0].to_i == 6
111
+ end
112
+
113
+ # convert action parameter into hash
114
+ def fixActionParameter(h)
115
+ (h.is_a?(ActionController::Parameters) ? (h.permit!.to_h rescue h.to_hash) : h)
116
+ end
117
+
118
+ # add a new anonymous hook
119
+ # sample: PluginRoutes.add_anonymous_hook('before_admin', lambda{|params| puts params })
120
+ # @param hook_key [String], key of hook
121
+ # @param hook_id [String], identifier for the anonymous hook
122
+ # @param callback [Lambda], anonymous function to be called when the hook was called
123
+ # @return nil
124
+ def add_anonymous_hook(hook_key, callback, hook_id = '')
125
+ @@anonymous_hooks[hook_key] ||= []
126
+ @@anonymous_hooks[hook_key] << {id: hook_id, callback: callback}
127
+ end
128
+
129
+ # return all registered anonymous hooks for hook_key
130
+ # @param hook_key [String] name of the hook
131
+ # @return [Array] array of hooks for hook_key
132
+ def get_anonymous_hooks(hook_key)
133
+ (@@anonymous_hooks[hook_key.to_s] || []).map{|item| item[:callback] }
134
+ end
135
+
136
+ # return all registered anonymous hooks for hook_key
137
+ # @param hook_key [String] name of the hook
138
+ # @param hook_id [String] identifier of the anonymous hooks
139
+ # @return [Array] array of hooks for hook_key
140
+ def remove_anonymous_hook(hook_key, hook_id)
141
+ (@@anonymous_hooks[hook_key.to_s] || []).delete_if{|item| item[:id] == hook_id }
142
+ end
143
+
144
+ # return the class name for user model
145
+ def get_user_class_name
146
+ static_system_info['user_model'].presence || 'CamaleonCms::User'
147
+ end
148
+ end
149
+
150
+ # reload routes
151
+ def self.reload
152
+ @@all_sites = nil
153
+ @@_vars.each { |v| class_variable_set("@@cache_#{v}", nil) }
154
+ Rails.application.reload_routes!
155
+ @@_after_reload.uniq.each{|r| eval(r) }
156
+ end
157
+
158
+ # permit to add extra actions for reload routes
159
+ def self.add_after_reload_routes(command)
160
+ @@_after_reload << command
161
+ end
162
+
163
+ # return all enabled plugins []
164
+ def self.enabled_plugins(site)
165
+ r = cache_variable("enable_plugins_site_#{site.id}")
166
+ return r unless r.nil?
167
+ res = []
168
+ enabled_ps = site.plugins.active.pluck(:slug)
169
+ all_plugins.each do |plugin|
170
+ res << plugin if enabled_ps.include?(plugin["key"])
171
+ end
172
+ res = res.sort_by{|e| e["position"] || 10 }
173
+ cache_variable("enable_plugins_site_#{site.id}", res)
174
+ end
175
+
176
+ # return all enabled apps for site (themes + system + plugins) []
177
+ # theme_slug: current theme slug
178
+ def self.enabled_apps(site, theme_slug = nil)
179
+ theme_slug = theme_slug || site.get_theme_slug
180
+ r = cache_variable("enabled_apps_#{site.id}_#{theme_slug}")
181
+ return r unless r.nil?
182
+ res = [system_info] + enabled_plugins(site) + [theme_info(theme_slug)]
183
+ cache_variable("enabled_apps_#{site.id}_#{theme_slug}", res)
184
+ end
185
+
186
+ # return all enabled apps as []: system, themes, plugins
187
+ def self.all_enabled_apps
188
+ [system_info] + all_enabled_themes + all_enabled_plugins
189
+ end
190
+
191
+ # return all enabled themes (a theme is enabled if at least one site is assigned)
192
+ def self.all_enabled_themes
193
+ r = cache_variable("all_enabled_themes"); return r unless r.nil?
194
+ res = []
195
+ get_sites.each do |site|
196
+ i = theme_info(site.get_theme_slug)
197
+ res << i if i.present?
198
+ end
199
+ cache_variable("all_enabled_themes", res)
200
+ end
201
+
202
+ # return all enabled plugins (a theme is enabled if at least one site has installed)
203
+ def self.all_enabled_plugins
204
+ r = cache_variable("all_enabled_plugins")
205
+ return r unless r.nil?
206
+ res, enabled_ps = [], []
207
+ get_sites.each { |site| enabled_ps += site.plugins.active.pluck(:slug) }
208
+ all_plugins.each do |plugin|
209
+ if enabled_ps.include?(plugin["key"])
210
+ res << plugin
211
+ end
212
+ end
213
+ cache_variable("all_enabled_plugins", res)
214
+ end
215
+
216
+ # all helpers of enabled plugins for site
217
+ def self.site_plugin_helpers(site)
218
+ r = cache_variable("site_plugin_helpers"); return r unless r.nil?
219
+ res = []
220
+ enabled_apps(site).each do |settings|
221
+ res += settings["helpers"] if settings["helpers"].present?
222
+ end
223
+ cache_variable("site_plugin_helpers", res)
224
+ end
225
+
226
+ # all helpers of enabled plugins
227
+ def self.all_helpers
228
+ r = cache_variable("plugins_helper")
229
+ return r unless r.nil?
230
+ res = []
231
+ all_apps.each do |settings|
232
+ res += settings["helpers"] if settings["helpers"].present?
233
+ end
234
+ cache_variable("plugins_helper", res.uniq)
235
+ end
236
+
237
+ # destroy plugin
238
+ def self.destroy_plugin(plugin_key)
239
+ FileUtils.rm_r(Rails.root.join("app", "apps", "plugins", plugin_key)) rescue ""
240
+ PluginRoutes.reload
241
+ end
242
+
243
+ def self.cache_variable(var_name, value=nil)
244
+ @@_vars.push(var_name).uniq!
245
+ #if Rails.env != "development" # disable cache plugin routes for develoment mode
246
+ cache = class_variable_get("@@cache_#{var_name}") rescue nil
247
+ return cache if value.nil?
248
+ #end
249
+ class_variable_set("@@cache_#{var_name}", value)
250
+ value
251
+ end
252
+
253
+ # return all sites registered for Plugin routes
254
+ def self.get_sites
255
+ begin
256
+ @@all_sites ||= CamaleonCms::Site.order(id: :asc).all.to_a
257
+ rescue
258
+ []
259
+ end
260
+ end
261
+
262
+ # check if db migrate already done
263
+ def self.db_installed?
264
+ @@is_db_installed ||= ActiveRecord::Base.connection.table_exists?(CamaleonCms::Site.table_name)
265
+ end
266
+
267
+ # return all locales for all sites joined by |
268
+ def self.all_locales
269
+ r = cache_variable("site_all_locales"); return r unless r.nil?
270
+ res = []
271
+ get_sites.each do |s|
272
+ res += s.get_languages
273
+ end
274
+ cache_variable("site_all_locales", res.uniq.join("|"))
275
+ end
276
+
277
+ # return all translations for all languages, sample: ['Sample', 'Ejemplo', '....']
278
+ def self.all_translations(key, *args)
279
+ args = args.extract_options!
280
+ all_locales.split('|').map{|_l| I18n.t(key, args.merge({locale: _l})) }.uniq
281
+ end
282
+
283
+ # return all locales for translated routes
284
+ def self.all_locales_for_routes
285
+ r = cache_variable("all_locales_for_routes"); return r unless r.nil?
286
+ res = {}
287
+ all_locales.split("|").each do |l|
288
+ res[l] = "_#{l}"
289
+ end
290
+ res[false] = ''
291
+ cache_variable("all_locales_for_routes", res)
292
+ end
293
+
294
+ # return apps directory path
295
+ def self.apps_dir
296
+ Rails.root.join("app", "apps").to_s
297
+ end
298
+
299
+ # return all plugins located in cms and in this project
300
+ def self.all_plugins
301
+ camaleon_gem = get_gem('camaleon_cms')
302
+ return [] if !camaleon_gem
303
+ r = cache_variable("all_plugins"); return r unless (r.nil? || r == [])
304
+ res = get_gem_plugins
305
+ entries = [".", ".."]
306
+ res.each{|plugin| entries << plugin["key"] }
307
+ (Dir["#{apps_dir}/plugins/*"] + Dir["#{camaleon_gem.gem_dir}/app/apps/plugins/*"]).each do |path|
308
+ entry = path.split("/").last
309
+ config = File.join(path, "config", "config.json")
310
+ next if entries.include?(entry) || !File.directory?(path) || !File.exist?(config)
311
+ p = JSON.parse(File.read(config))
312
+ p = p.with_indifferent_access rescue p
313
+ p["key"] = entry
314
+ p["path"] = path
315
+ p["kind"] = "plugin"
316
+ res << p
317
+ entries << entry
318
+ end
319
+ cache_variable("all_plugins", res)
320
+ end
321
+
322
+ # return an array of all themes installed for all sites
323
+ def self.all_themes
324
+ camaleon_gem = get_gem('camaleon_cms')
325
+ return [] if !camaleon_gem
326
+ r = cache_variable("all_themes"); return r unless (r.nil? || r == [])
327
+ res = get_gem_themes
328
+ entries = [".", ".."]
329
+ res.each{|theme| entries << theme["key"] }
330
+ (Dir["#{apps_dir}/themes/*"] + Dir["#{camaleon_gem.gem_dir}/app/apps/themes/*"]).each do |path|
331
+ entry = path.split("/").last
332
+ config = File.join(path, "config", "config.json")
333
+ next if entries.include?(entry) || !File.directory?(path) || !File.exist?(config)
334
+ p = JSON.parse(File.read(config))
335
+ p = p.with_indifferent_access rescue p
336
+ p["key"] = entry
337
+ p["path"] = path
338
+ p["kind"] = "theme"
339
+ p["title"] = p["name"]
340
+ res << p
341
+ entries << entry
342
+ end
343
+ cache_variable("all_themes", res)
344
+ end
345
+
346
+ # return all apps loaded
347
+ def self.all_apps
348
+ all_plugins+all_themes
349
+ end
350
+
351
+ # return all plugins registered as gems
352
+ def self.get_gem_plugins
353
+ entries = []
354
+ Gem::Specification.each do |gem|
355
+ path = gem.gem_dir
356
+ config = File.join(path, "config", "camaleon_plugin.json")
357
+ if File.exist?(config)
358
+ p = JSON.parse(File.read(config))
359
+ p = p.with_indifferent_access rescue p
360
+ p["key"] = gem.name if p["key"].nil? # TODO REVIEW ERROR FOR conflict plugin keys
361
+ p["version"] = gem.version.to_s
362
+ p["path"] = path
363
+ p["kind"] = "plugin"
364
+ p["descr"] = gem.description unless p["descr"].present?
365
+ p["gem_mode"] = true
366
+ entries << p
367
+ end
368
+ end
369
+ entries
370
+ end
371
+
372
+ # return all themes registered as gems
373
+ def self.get_gem_themes
374
+ entries = []
375
+ Gem::Specification.each do |gem|
376
+ path = gem.gem_dir
377
+ config = File.join(path, "config", "camaleon_theme.json")
378
+ if File.exist?(config)
379
+ p = JSON.parse(File.read(config))
380
+ p = p.with_indifferent_access rescue p
381
+ p["key"] = gem.name if p["key"].nil? # TODO REVIEW ERROR FOR conflict plugin keys
382
+ p["path"] = path
383
+ p["kind"] = "theme"
384
+ p["gem_mode"] = true
385
+ entries << p
386
+ end
387
+ end
388
+ entries
389
+ end
390
+
391
+ # check if a gem is available or not
392
+ # Arguemnts:
393
+ # name: name of the gem
394
+ # return (Boolean) true/false
395
+ def self.get_gem(name)
396
+ Gem::Specification.find_by_name(name)
397
+ rescue Gem::LoadError
398
+ false
399
+ rescue
400
+ Gem.available?(name)
401
+ end
402
+
403
+ # return the default url options for Camaleon CMS
404
+ def self.default_url_options
405
+ options = { host: (CamaleonCms::Site.main_site.slug rescue "") }
406
+ options.merge!({ protocol: 'https' }) if Rails.application.config.force_ssl
407
+ options
408
+ end
409
+
410
+ def self.migration_class
411
+ isRails4? ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
412
+ end
413
+ end
414
+ CamaManager = PluginRoutes
415
+
416
+ #********* fix missing helper method for breadcrumb on rails gem **********#
417
+ if PluginRoutes.isRails5?
418
+ module BreadcrumbsOnRails
419
+ module ActionController extend ActiveSupport::Concern
420
+ def self.included(base = nil, &block)
421
+ if base.nil?
422
+ @_included_block = block
423
+ else
424
+ super
425
+ end
426
+ end
427
+
428
+ included do |base|
429
+ extend ClassMethods
430
+ helper HelperMethods if respond_to? :helper
431
+ helper_method :add_breadcrumb, :breadcrumbs if respond_to? :helper_method
432
+
433
+ unless base.respond_to?(:before_action)
434
+ base.alias_method :before_action, :before_filter
435
+ end
436
+ end
437
+ end
438
+ end
439
+ end