camaleon_cms_rails6 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +202 -0
- data/Rakefile +32 -0
- data/app/apps/plugins/attack/admin_controller.rb +17 -0
- data/app/apps/plugins/attack/attack_helper.rb +94 -0
- data/app/apps/plugins/attack/config/config.json +31 -0
- data/app/apps/plugins/attack/config/custom_models.rb +8 -0
- data/app/apps/plugins/attack/config/locales/readme.txt +1 -0
- data/app/apps/plugins/attack/config/locales/translation.yml +129 -0
- data/app/apps/plugins/attack/config/routes_admin.txt +2 -0
- data/app/apps/plugins/attack/models/attack.rb +3 -0
- data/app/apps/plugins/attack/views/admin/settings.html.erb +49 -0
- data/app/apps/plugins/authoring_post/authoring_post_helper.rb +51 -0
- data/app/apps/plugins/authoring_post/config/config.json +24 -0
- data/app/apps/plugins/front_cache/admin_controller.rb +29 -0
- data/app/apps/plugins/front_cache/config/config.json +21 -0
- data/app/apps/plugins/front_cache/config/initializer.rb +7 -0
- data/app/apps/plugins/front_cache/config/locales/readme.txt +1 -0
- data/app/apps/plugins/front_cache/config/locales/translation.yml +149 -0
- data/app/apps/plugins/front_cache/config/routes_admin.txt +3 -0
- data/app/apps/plugins/front_cache/front_cache_helper.rb +137 -0
- data/app/apps/plugins/front_cache/views/admin/settings.html.erb +81 -0
- data/app/apps/plugins/visibility_post/assets/js/form.js +30 -0
- data/app/apps/plugins/visibility_post/config/config.json +24 -0
- data/app/apps/plugins/visibility_post/visibility_post_helper.rb +124 -0
- data/app/apps/themes/camaleon_first/assets/css/magnific-ver.css +394 -0
- data/app/apps/themes/camaleon_first/assets/css/main.css +16 -0
- data/app/apps/themes/camaleon_first/assets/css/style-ver.css.scss +251 -0
- data/app/apps/themes/camaleon_first/assets/css/wpbase.css +1 -0
- data/app/apps/themes/camaleon_first/assets/images/empe.jpg +0 -0
- data/app/apps/themes/camaleon_first/assets/images/image.png +0 -0
- data/app/apps/themes/camaleon_first/assets/images/loader.gif +0 -0
- data/app/apps/themes/camaleon_first/assets/images/zoom.png +0 -0
- data/app/apps/themes/camaleon_first/assets/js/hover.zoom.js +67 -0
- data/app/apps/themes/camaleon_first/assets/js/magnific.min.js +3 -0
- data/app/apps/themes/camaleon_first/assets/js/main-ver.js +46 -0
- data/app/apps/themes/camaleon_first/assets/js/main.js +18 -0
- data/app/apps/themes/camaleon_first/assets/js/modernizr.custom.js +4 -0
- data/app/apps/themes/camaleon_first/config/config.json +14 -0
- data/app/apps/themes/camaleon_first/main_helper.rb +33 -0
- data/app/apps/themes/camaleon_first/views/index.html.erb +28 -0
- data/app/apps/themes/camaleon_first/views/layouts/camaleon_cms/mailer.html.erb +22 -0
- data/app/apps/themes/camaleon_first/views/layouts/index.html.erb +84 -0
- data/app/apps/themes/camaleon_first/views/mailer.html.erb +4 -0
- data/app/apps/themes/camaleon_first/views/partials/readme.txt +1 -0
- data/app/apps/themes/camaleon_first/views/template_sample_page.html.erb +6 -0
- data/app/apps/themes/default/assets/css/main.css +13 -0
- data/app/apps/themes/default/assets/css/style.css.scss +3398 -0
- data/app/apps/themes/default/assets/css/styles.css.scss +175 -0
- data/app/apps/themes/default/assets/genericons/COPYING.txt +9 -0
- data/app/apps/themes/default/assets/genericons/Genericons-Regular.otf +0 -0
- data/app/apps/themes/default/assets/genericons/LICENSE.txt +339 -0
- data/app/apps/themes/default/assets/genericons/README.txt +123 -0
- data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.eot +0 -0
- data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.svg +135 -0
- data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.ttf +0 -0
- data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.woff +0 -0
- data/app/apps/themes/default/assets/genericons/genericons.css +197 -0
- data/app/apps/themes/default/assets/images/circle.png +0 -0
- data/app/apps/themes/default/assets/images/dotted-line-2x.png +0 -0
- data/app/apps/themes/default/assets/images/dotted-line-light-2x.png +0 -0
- data/app/apps/themes/default/assets/images/dotted-line-light.png +0 -0
- data/app/apps/themes/default/assets/images/dotted-line.png +0 -0
- data/app/apps/themes/default/assets/images/headers/circle-thumbnail.png +0 -0
- data/app/apps/themes/default/assets/images/headers/circle.png +0 -0
- data/app/apps/themes/default/assets/images/headers/diamond-thumbnail.png +0 -0
- data/app/apps/themes/default/assets/images/headers/diamond.png +0 -0
- data/app/apps/themes/default/assets/images/headers/star-thumbnail.png +0 -0
- data/app/apps/themes/default/assets/images/headers/star.png +0 -0
- data/app/apps/themes/default/assets/images/image.png +0 -0
- data/app/apps/themes/default/assets/images/search-icon-2x.png +0 -0
- data/app/apps/themes/default/assets/images/search-icon.png +0 -0
- data/app/apps/themes/default/assets/js/main.js +13 -0
- data/app/apps/themes/default/config/config.json +19 -0
- data/app/apps/themes/default/default_helper.rb +28 -0
- data/app/apps/themes/default/views/admin/settings.html.erb +0 -0
- data/app/apps/themes/default/views/category.html.erb +16 -0
- data/app/apps/themes/default/views/index.html.erb +35 -0
- data/app/apps/themes/default/views/layouts/index.html.erb +84 -0
- data/app/apps/themes/default/views/page.html.erb +14 -0
- data/app/apps/themes/default/views/partials/_breadcrumb.html.erb +10 -0
- data/app/apps/themes/default/views/partials/_categories_list.html.erb +23 -0
- data/app/apps/themes/default/views/partials/_comments.html.erb +40 -0
- data/app/apps/themes/default/views/partials/_comments_list.html.erb +20 -0
- data/app/apps/themes/default/views/partials/_flash_messages.html.erb +26 -0
- data/app/apps/themes/default/views/partials/_forms.html.erb +19 -0
- data/app/apps/themes/default/views/partials/_post_list_item.html.erb +34 -0
- data/app/apps/themes/default/views/partials/_search_form.html.erb +8 -0
- data/app/apps/themes/default/views/partials/_sidebar.html.erb +50 -0
- data/app/apps/themes/default/views/post.html.erb +14 -0
- data/app/apps/themes/default/views/post_tag.html.erb +14 -0
- data/app/apps/themes/default/views/post_type.html.erb +33 -0
- data/app/apps/themes/default/views/search.html.erb +17 -0
- data/app/apps/themes/new/assets/css/main.css +14 -0
- data/app/apps/themes/new/assets/css/styles.css.scss +175 -0
- data/app/apps/themes/new/assets/images/image.png +0 -0
- data/app/apps/themes/new/assets/js/main.js +14 -0
- data/app/apps/themes/new/config/config.json +26 -0
- data/app/apps/themes/new/custom_helper.rb +31 -0
- data/app/apps/themes/new/image.png +0 -0
- data/app/apps/themes/new/views/admin/settings.html.erb +1 -0
- data/app/apps/themes/new/views/category.html.erb +33 -0
- data/app/apps/themes/new/views/index.html.erb +71 -0
- data/app/apps/themes/new/views/layouts/_footer.html.erb +17 -0
- data/app/apps/themes/new/views/layouts/_header.html.erb +38 -0
- data/app/apps/themes/new/views/layouts/index.html.erb +32 -0
- data/app/apps/themes/new/views/page.html.erb +16 -0
- data/app/apps/themes/new/views/post.html.erb +20 -0
- data/app/apps/themes/new/views/post_tag.html.erb +22 -0
- data/app/apps/themes/new/views/post_type.html.erb +33 -0
- data/app/apps/themes/new/views/search.html.erb +18 -0
- data/app/assets/config/camaleon-cms.js +7 -0
- data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.svg +288 -0
- data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.woff2 +0 -0
- data/app/assets/images/camaleon.png +0 -0
- data/app/assets/images/camaleon_cms/admin/admin_spinner.gif +0 -0
- data/app/assets/images/camaleon_cms/admin/glyphicons-halflings.png +0 -0
- data/app/assets/images/camaleon_cms/admin/intro/menus.png +0 -0
- data/app/assets/images/camaleon_cms/admin/no_image.jpg +0 -0
- data/app/assets/images/camaleon_cms/bg-tree.jpeg +0 -0
- data/app/assets/images/camaleon_cms/camaleon-dark.png +0 -0
- data/app/assets/images/camaleon_cms/camaleon.png +0 -0
- data/app/assets/images/camaleon_cms/category-icon.png +0 -0
- data/app/assets/images/camaleon_cms/favicon.ico +0 -0
- data/app/assets/images/camaleon_cms/image-not-found.png +0 -0
- data/app/assets/images/camaleon_cms/language/de.png +0 -0
- data/app/assets/images/camaleon_cms/language/en.png +0 -0
- data/app/assets/images/camaleon_cms/language/es.png +0 -0
- data/app/assets/images/camaleon_cms/language/fr.png +0 -0
- data/app/assets/images/camaleon_cms/language/it.png +0 -0
- data/app/assets/images/camaleon_cms/language/nl.png +0 -0
- data/app/assets/images/camaleon_cms/language/pl.png +0 -0
- data/app/assets/images/camaleon_cms/language/pt-BR.png +0 -0
- data/app/assets/images/camaleon_cms/language/pt.png +0 -0
- data/app/assets/images/camaleon_cms/language/ru.png +0 -0
- data/app/assets/images/camaleon_cms/language/uk.png +0 -0
- data/app/assets/images/camaleon_cms/language/zh-CN.png +0 -0
- data/app/assets/images/camaleon_cms/loader.gif +0 -0
- data/app/assets/images/camaleon_cms/users/no-image.jpg +0 -0
- data/app/assets/javascripts/camaleon_cms/admin/_actions.js +91 -0
- data/app/assets/javascripts/camaleon_cms/admin/_bootstrap-datepicker.js +2558 -0
- data/app/assets/javascripts/camaleon_cms/admin/_bootstrap-select.js +7 -0
- data/app/assets/javascripts/camaleon_cms/admin/_custom_fields.js +273 -0
- data/app/assets/javascripts/camaleon_cms/admin/_data.js +69 -0
- data/app/assets/javascripts/camaleon_cms/admin/_i18n.js +32 -0
- data/app/assets/javascripts/camaleon_cms/admin/_jquery-ui.min.js +10 -0
- data/app/assets/javascripts/camaleon_cms/admin/_jquery.slugify.js +67 -0
- data/app/assets/javascripts/camaleon_cms/admin/_jquery.tagsinput.min.js +1 -0
- data/app/assets/javascripts/camaleon_cms/admin/_libraries.js +136 -0
- data/app/assets/javascripts/camaleon_cms/admin/_modal.js +156 -0
- data/app/assets/javascripts/camaleon_cms/admin/_post.js +317 -0
- data/app/assets/javascripts/camaleon_cms/admin/_posttype.js.coffee +27 -0
- data/app/assets/javascripts/camaleon_cms/admin/_translator.js +123 -0
- data/app/assets/javascripts/camaleon_cms/admin/_underscore.js +1536 -0
- data/app/assets/javascripts/camaleon_cms/admin/_user_profile.js +28 -0
- data/app/assets/javascripts/camaleon_cms/admin/admin-basic-manifest.js +3 -0
- data/app/assets/javascripts/camaleon_cms/admin/admin-manifest.js +55 -0
- data/app/assets/javascripts/camaleon_cms/admin/bootstrap-colorpicker.js +540 -0
- data/app/assets/javascripts/camaleon_cms/admin/custom_fields_form.js +94 -0
- data/app/assets/javascripts/camaleon_cms/admin/introjs/_intro.min.js +1317 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery-sieve.js +6 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery.nestable.js +485 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery.validate.js +123 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/de.js +20 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/es.js +27 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/fr.js +49 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/it.js +23 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/nl.js +33 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/pt-BR.js +74 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/ru.js +19 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/uk.js +23 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/zh-CN.js +23 -0
- data/app/assets/javascripts/camaleon_cms/admin/lte/app.js +758 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/_moment.js +3606 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/ar.js +136 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/ca.js +79 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/de.js +76 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/es.js +79 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/fr.js +62 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/it.js +70 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/ja.js +65 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/nl.js +71 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/pl.js +105 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/pt-BR.js +60 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/pt.js +64 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/ru.js +166 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/uk.js +151 -0
- data/app/assets/javascripts/camaleon_cms/admin/momentjs/zh-CN.js +127 -0
- data/app/assets/javascripts/camaleon_cms/admin/nav_menu.js.coffee +139 -0
- data/app/assets/javascripts/camaleon_cms/admin/tageditor/_jquery.caret.min.js +2 -0
- data/app/assets/javascripts/camaleon_cms/admin/tageditor/_jquery.tag-editor.js +352 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/de.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/en.js +179 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/es.js +177 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/fr.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/it.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/nl.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/pt-BR.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/readme.md +3 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/ru.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/uk.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/zh-CN.js +228 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/plugins/filemanager/plugin.min.js +30 -0
- data/app/assets/javascripts/camaleon_cms/admin/uploader/_cropper.min.js +3003 -0
- data/app/assets/javascripts/camaleon_cms/admin/uploader/_jquery.form.js +1277 -0
- data/app/assets/javascripts/camaleon_cms/admin/uploader/_jquery.uploadfile.min.js +8 -0
- data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +455 -0
- data/app/assets/javascripts/camaleon_cms/admin/uploader/uploader_manifest.js +5 -0
- data/app/assets/javascripts/camaleon_cms/bootstrap.min.js +7 -0
- data/app/assets/stylesheets/camaleon_cms/admin/_bootstrap-datepicker.css.scss +373 -0
- data/app/assets/stylesheets/camaleon_cms/admin/_bootstrap-select.css +7 -0
- data/app/assets/stylesheets/camaleon_cms/admin/_custom_admin.css.scss +359 -0
- data/app/assets/stylesheets/camaleon_cms/admin/_jquery.tagsinput.css +72 -0
- data/app/assets/stylesheets/camaleon_cms/admin/admin-basic-manifest.css +16 -0
- data/app/assets/stylesheets/camaleon_cms/admin/admin-manifest.css +28 -0
- data/app/assets/stylesheets/camaleon_cms/admin/colorpicker.css.scss +96 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/bg.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/alpha.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/hue.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/saturation.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/girls-1.jpg +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/jquery/resize-icon.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/loading.gif +1 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/logo-small.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/logo.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/no_image.jpg +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/rormeleon-white.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/img/thumb_no_found.jpg +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/introjs/_introjs.min.css +1 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/_jquery-ui.scss +1226 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_888888_256x240.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/_admin.css.scss +4561 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-black-light.css +176 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-black.css +154 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-blue-light.css +167 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-blue.css +142 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-green-light.css +156 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-green.css +134 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-purple-light.css +156 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-purple.css +135 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-red-light.css +156 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-red.css +134 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-yellow-light.css +156 -0
- data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-yellow.css +134 -0
- data/app/assets/stylesheets/camaleon_cms/admin/nestable/jquery.nestable.css +103 -0
- data/app/assets/stylesheets/camaleon_cms/admin/tageditor/_jquery.tag-editor.css.scss +49 -0
- data/app/assets/stylesheets/camaleon_cms/admin/uploader/_cropper.min.css +9 -0
- data/app/assets/stylesheets/camaleon_cms/admin/uploader/_uploadfile.css.scss +256 -0
- data/app/assets/stylesheets/camaleon_cms/admin/uploader/uploader_manifest.css +4 -0
- data/app/assets/stylesheets/camaleon_cms/admin/widgets.css.scss +26 -0
- data/app/assets/stylesheets/camaleon_cms/bootstrap.min.css.scss +6799 -0
- data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +129 -0
- data/app/controllers/camaleon_cms/admin/appearances/themes_controller.rb +29 -0
- data/app/controllers/camaleon_cms/admin/appearances/widgets/assign_controller.rb +41 -0
- data/app/controllers/camaleon_cms/admin/appearances/widgets/main_controller.rb +55 -0
- data/app/controllers/camaleon_cms/admin/appearances/widgets/sidebar_controller.rb +56 -0
- data/app/controllers/camaleon_cms/admin/categories_controller.rb +80 -0
- data/app/controllers/camaleon_cms/admin/comments_controller.rb +90 -0
- data/app/controllers/camaleon_cms/admin/installers_controller.rb +32 -0
- data/app/controllers/camaleon_cms/admin/media_controller.rb +109 -0
- data/app/controllers/camaleon_cms/admin/plugins_controller.rb +46 -0
- data/app/controllers/camaleon_cms/admin/post_tags_controller.rb +81 -0
- data/app/controllers/camaleon_cms/admin/posts/drafts_controller.rb +58 -0
- data/app/controllers/camaleon_cms/admin/posts_controller.rb +212 -0
- data/app/controllers/camaleon_cms/admin/sessions_controller.rb +172 -0
- data/app/controllers/camaleon_cms/admin/settings/custom_fields_controller.rb +108 -0
- data/app/controllers/camaleon_cms/admin/settings/post_types_controller.rb +63 -0
- data/app/controllers/camaleon_cms/admin/settings/sites_controller.rb +87 -0
- data/app/controllers/camaleon_cms/admin/settings_controller.rb +86 -0
- data/app/controllers/camaleon_cms/admin/user_roles_controller.rb +74 -0
- data/app/controllers/camaleon_cms/admin/users_controller.rb +124 -0
- data/app/controllers/camaleon_cms/admin_controller.rb +82 -0
- data/app/controllers/camaleon_cms/apps/plugins_admin_controller.rb +19 -0
- data/app/controllers/camaleon_cms/apps/plugins_front_controller.rb +19 -0
- data/app/controllers/camaleon_cms/apps/themes_admin_controller.rb +12 -0
- data/app/controllers/camaleon_cms/apps/themes_front_controller.rb +12 -0
- data/app/controllers/camaleon_cms/camaleon_controller.rb +139 -0
- data/app/controllers/camaleon_cms/frontend_controller.rb +277 -0
- data/app/controllers/concerns/camaleon_cms/frontend_concern.rb +66 -0
- data/app/decorators/camaleon_cms/application_decorator.rb +54 -0
- data/app/decorators/camaleon_cms/category_decorator.rb +58 -0
- data/app/decorators/camaleon_cms/custom_field_decorator.rb +11 -0
- data/app/decorators/camaleon_cms/custom_fields_concern.rb +81 -0
- data/app/decorators/camaleon_cms/metas_decorator_methods.rb +11 -0
- data/app/decorators/camaleon_cms/nav_menu_item_decorator.rb +4 -0
- data/app/decorators/camaleon_cms/plugin_decorator.rb +3 -0
- data/app/decorators/camaleon_cms/post_comment_decorator.rb +39 -0
- data/app/decorators/camaleon_cms/post_decorator.rb +251 -0
- data/app/decorators/camaleon_cms/post_tag_decorator.rb +45 -0
- data/app/decorators/camaleon_cms/post_type_decorator.rb +87 -0
- data/app/decorators/camaleon_cms/site_decorator.rb +200 -0
- data/app/decorators/camaleon_cms/term_taxonomy_decorator.rb +93 -0
- data/app/decorators/camaleon_cms/theme_decorator.rb +18 -0
- data/app/decorators/camaleon_cms/user_decorator.rb +73 -0
- data/app/decorators/camaleon_cms/user_role_decorator.rb +12 -0
- data/app/decorators/camaleon_cms/widget_decorator.rb +4 -0
- data/app/helpers/camaleon_cms/admin/application_helper.rb +36 -0
- data/app/helpers/camaleon_cms/admin/breadcrumb_helper.rb +15 -0
- data/app/helpers/camaleon_cms/admin/category_helper.rb +24 -0
- data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +354 -0
- data/app/helpers/camaleon_cms/admin/menus_helper.rb +182 -0
- data/app/helpers/camaleon_cms/admin/post_type_helper.rb +67 -0
- data/app/helpers/camaleon_cms/camaleon_helper.rb +88 -0
- data/app/helpers/camaleon_cms/captcha_helper.rb +93 -0
- data/app/helpers/camaleon_cms/comment_helper.rb +48 -0
- data/app/helpers/camaleon_cms/content_helper.rb +29 -0
- data/app/helpers/camaleon_cms/email_helper.rb +56 -0
- data/app/helpers/camaleon_cms/frontend/application_helper.rb +36 -0
- data/app/helpers/camaleon_cms/frontend/content_select_helper.rb +161 -0
- data/app/helpers/camaleon_cms/frontend/nav_menu_helper.rb +237 -0
- data/app/helpers/camaleon_cms/frontend/seo_helper.rb +86 -0
- data/app/helpers/camaleon_cms/frontend/site_helper.rb +70 -0
- data/app/helpers/camaleon_cms/hooks_helper.rb +57 -0
- data/app/helpers/camaleon_cms/html_helper.rb +134 -0
- data/app/helpers/camaleon_cms/plugins_helper.rb +173 -0
- data/app/helpers/camaleon_cms/session_helper.rb +161 -0
- data/app/helpers/camaleon_cms/short_code_helper.rb +283 -0
- data/app/helpers/camaleon_cms/site_helper.rb +103 -0
- data/app/helpers/camaleon_cms/theme_helper.rb +95 -0
- data/app/helpers/camaleon_cms/uploader_helper.rb +329 -0
- data/app/helpers/camaleon_cms/user_roles_helper.rb +13 -0
- data/app/mailers/camaleon_cms/html_mailer.rb +87 -0
- data/app/models/camaleon_cms/ability.rb +109 -0
- data/app/models/camaleon_cms/category.rb +52 -0
- data/app/models/camaleon_cms/custom_field.rb +35 -0
- data/app/models/camaleon_cms/custom_field_group.rb +136 -0
- data/app/models/camaleon_cms/custom_fields_relationship.rb +27 -0
- data/app/models/camaleon_cms/media.rb +54 -0
- data/app/models/camaleon_cms/meta.rb +4 -0
- data/app/models/camaleon_cms/nav_menu.rb +29 -0
- data/app/models/camaleon_cms/nav_menu_item.rb +64 -0
- data/app/models/camaleon_cms/plugin.rb +76 -0
- data/app/models/camaleon_cms/post.rb +265 -0
- data/app/models/camaleon_cms/post_comment.rb +44 -0
- data/app/models/camaleon_cms/post_default.rb +78 -0
- data/app/models/camaleon_cms/post_relationship.rb +20 -0
- data/app/models/camaleon_cms/post_tag.rb +7 -0
- data/app/models/camaleon_cms/post_type.rb +189 -0
- data/app/models/camaleon_cms/site.rb +242 -0
- data/app/models/camaleon_cms/term_relationship.rb +18 -0
- data/app/models/camaleon_cms/term_taxonomy.rb +61 -0
- data/app/models/camaleon_cms/theme.rb +31 -0
- data/app/models/camaleon_cms/user.rb +18 -0
- data/app/models/camaleon_cms/user_role.rb +138 -0
- data/app/models/camaleon_cms/widget.rb +5 -0
- data/app/models/camaleon_cms/widget/assigned.rb +27 -0
- data/app/models/camaleon_cms/widget/main.rb +44 -0
- data/app/models/camaleon_cms/widget/sidebar.rb +20 -0
- data/app/models/concerns/camaleon_cms/categories_tags_for_posts.rb +132 -0
- data/app/models/concerns/camaleon_cms/custom_fields_read.rb +310 -0
- data/app/models/concerns/camaleon_cms/metas.rb +138 -0
- data/app/models/concerns/camaleon_cms/site_default_settings.rb +87 -0
- data/app/models/concerns/camaleon_cms/user_methods.rb +133 -0
- data/app/models/plugins.rb +5 -0
- data/app/models/themes.rb +5 -0
- data/app/uploaders/camaleon_cms_aws_uploader.rb +132 -0
- data/app/uploaders/camaleon_cms_local_uploader.rb +108 -0
- data/app/uploaders/camaleon_cms_uploader.rb +164 -0
- data/app/views/camaleon_cms/404.html.erb +4 -0
- data/app/views/camaleon_cms/500.html.erb +4 -0
- data/app/views/camaleon_cms/_flash_messages.html.erb +39 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_custom_fields.html.erb +6 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_custom_menus.html.erb +42 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_external_menu.html.erb +23 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_form.html.erb +13 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_left_menu_items.html.erb +77 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items.html.erb +19 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items_list.html.erb +12 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_options.html.erb +21 -0
- data/app/views/camaleon_cms/admin/appearances/nav_menus/index.html.erb +14 -0
- data/app/views/camaleon_cms/admin/appearances/themes/index.html.erb +70 -0
- data/app/views/camaleon_cms/admin/appearances/themes/preview.html.erb +1 -0
- data/app/views/camaleon_cms/admin/appearances/themes/theme_load_data.html.erb +40 -0
- data/app/views/camaleon_cms/admin/appearances/widgets/assign/_form.html.erb +35 -0
- data/app/views/camaleon_cms/admin/appearances/widgets/main/_sidebar.html.erb +29 -0
- data/app/views/camaleon_cms/admin/appearances/widgets/main/form.html.erb +27 -0
- data/app/views/camaleon_cms/admin/appearances/widgets/main/index.html.erb +41 -0
- data/app/views/camaleon_cms/admin/appearances/widgets/sidebar/form.html.erb +23 -0
- data/app/views/camaleon_cms/admin/categories/_form.html.erb +34 -0
- data/app/views/camaleon_cms/admin/categories/edit.html.erb +14 -0
- data/app/views/camaleon_cms/admin/categories/index.html.erb +68 -0
- data/app/views/camaleon_cms/admin/comments/form.html.erb +12 -0
- data/app/views/camaleon_cms/admin/comments/form_answer.html.erb +12 -0
- data/app/views/camaleon_cms/admin/comments/index.html.erb +21 -0
- data/app/views/camaleon_cms/admin/comments/list.html.erb +36 -0
- data/app/views/camaleon_cms/admin/dashboard.html.erb +25 -0
- data/app/views/camaleon_cms/admin/installers/form.html.erb +19 -0
- data/app/views/camaleon_cms/admin/installers/welcome.html.erb +8 -0
- data/app/views/camaleon_cms/admin/media/_render_file_item.html.erb +57 -0
- data/app/views/camaleon_cms/admin/media/index.html.erb +70 -0
- data/app/views/camaleon_cms/admin/plugins/_plugins_list.html.erb +43 -0
- data/app/views/camaleon_cms/admin/plugins/index.html.erb +43 -0
- data/app/views/camaleon_cms/admin/post_tags/_form.html.erb +26 -0
- data/app/views/camaleon_cms/admin/post_tags/edit.html.erb +14 -0
- data/app/views/camaleon_cms/admin/post_tags/index.html.erb +59 -0
- data/app/views/camaleon_cms/admin/posts/_filter_posts.html.erb +5 -0
- data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +156 -0
- data/app/views/camaleon_cms/admin/posts/form.html.erb +96 -0
- data/app/views/camaleon_cms/admin/posts/index.html.erb +112 -0
- data/app/views/camaleon_cms/admin/posts/show.html.erb +20 -0
- data/app/views/camaleon_cms/admin/search.html.erb +73 -0
- data/app/views/camaleon_cms/admin/sessions/forgot.html.erb +44 -0
- data/app/views/camaleon_cms/admin/sessions/login.html.erb +47 -0
- data/app/views/camaleon_cms/admin/sessions/register.html.erb +63 -0
- data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +75 -0
- data/app/views/camaleon_cms/admin/settings/_email_settings.html.erb +58 -0
- data/app/views/camaleon_cms/admin/settings/_file_system_settings.html.erb +32 -0
- data/app/views/camaleon_cms/admin/settings/_media_settings.html.erb +14 -0
- data/app/views/camaleon_cms/admin/settings/_seo_settings.html.erb +22 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/_get_items.html.erb +185 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/_meta_data.html.erb +93 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +50 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/_render_category_simple.html.erb +25 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_audio.html.erb +4 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_categories.html.erb +11 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_checkbox.html.erb +8 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_checkboxes.html.erb +5 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_colorpicker.html.erb +7 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_date.html.erb +6 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_editor.html.erb +3 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_email.html.erb +3 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_field_attrs.html.erb +8 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_file.html.erb +4 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_image.html.erb +16 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_numeric.html.erb +4 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_phone.html.erb +3 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_post_types.html.erb +8 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_posts.html.erb +14 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_private_file.html.erb +4 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_radio.html.erb +5 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select.html.erb +7 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select_eval.html.erb +3 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_text_area.html.erb +3 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_text_box.html.erb +3 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_url.html.erb +3 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_users.html.erb +8 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_video.html.erb +4 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/form.html.erb +167 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/index.html.erb +111 -0
- data/app/views/camaleon_cms/admin/settings/languages.html.erb +60 -0
- data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +171 -0
- data/app/views/camaleon_cms/admin/settings/post_types/edit.html.erb +14 -0
- data/app/views/camaleon_cms/admin/settings/post_types/index.html.erb +55 -0
- data/app/views/camaleon_cms/admin/settings/shortcodes.html.erb +37 -0
- data/app/views/camaleon_cms/admin/settings/site.html.erb +98 -0
- data/app/views/camaleon_cms/admin/settings/sites/form.html.erb +35 -0
- data/app/views/camaleon_cms/admin/settings/sites/index.html.erb +60 -0
- data/app/views/camaleon_cms/admin/settings/theme.html.erb +20 -0
- data/app/views/camaleon_cms/admin/user_roles/form.html.erb +156 -0
- data/app/views/camaleon_cms/admin/user_roles/index.html.erb +57 -0
- data/app/views/camaleon_cms/admin/users/form.html.erb +161 -0
- data/app/views/camaleon_cms/admin/users/index.html.erb +63 -0
- data/app/views/camaleon_cms/admin/users/profile.html.erb +1 -0
- data/app/views/camaleon_cms/admin/users/profile/_activity.html.erb +180 -0
- data/app/views/camaleon_cms/admin/users/profile/_settings.html.erb +15 -0
- data/app/views/camaleon_cms/default_theme/category.html.erb +26 -0
- data/app/views/camaleon_cms/default_theme/category.json.jbuilder +15 -0
- data/app/views/camaleon_cms/default_theme/category.rss.builder +23 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/audio.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/checkbox.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/checkboxes.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/colorpicker.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/date.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/editor.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/email.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/field_attrs.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/file.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/image.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/numeric.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/phone.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/posts.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/radio.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/select.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/select_eval.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/text_area.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/text_box.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/url.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/users.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/custom_fields/video.html.erb +3 -0
- data/app/views/camaleon_cms/default_theme/index.html.erb +70 -0
- data/app/views/camaleon_cms/default_theme/index.json.jbuilder +14 -0
- data/app/views/camaleon_cms/default_theme/partials/_breadcrumb.html.erb +10 -0
- data/app/views/camaleon_cms/default_theme/partials/_cama_category_entry.json.jbuilder +6 -0
- data/app/views/camaleon_cms/default_theme/partials/_cama_comments_entry.json.jbuilder +6 -0
- data/app/views/camaleon_cms/default_theme/partials/_cama_post_entry.json.jbuilder +6 -0
- data/app/views/camaleon_cms/default_theme/partials/_cama_post_type_entry.json.jbuilder +6 -0
- data/app/views/camaleon_cms/default_theme/partials/_cama_posts_entries.json.jbuilder +8 -0
- data/app/views/camaleon_cms/default_theme/partials/_cama_tag_entry.json.jbuilder +5 -0
- data/app/views/camaleon_cms/default_theme/partials/_cama_user_entry.json.jbuilder +5 -0
- data/app/views/camaleon_cms/default_theme/partials/_categories_list.html.erb +23 -0
- data/app/views/camaleon_cms/default_theme/partials/_comments.html.erb +48 -0
- data/app/views/camaleon_cms/default_theme/partials/_comments_list.html.erb +21 -0
- data/app/views/camaleon_cms/default_theme/partials/_comments_list2.html.erb +24 -0
- data/app/views/camaleon_cms/default_theme/partials/_flash_messages.html.erb +26 -0
- data/app/views/camaleon_cms/default_theme/partials/_forms.html.erb +19 -0
- data/app/views/camaleon_cms/default_theme/partials/_post_list_item.html.erb +13 -0
- data/app/views/camaleon_cms/default_theme/partials/_render_custom_field.html.erb +55 -0
- data/app/views/camaleon_cms/default_theme/partials/_search_form.html.erb +8 -0
- data/app/views/camaleon_cms/default_theme/partials/_sidebar.html.erb +66 -0
- data/app/views/camaleon_cms/default_theme/post_tag.html.erb +18 -0
- data/app/views/camaleon_cms/default_theme/post_tag.json.jbuilder +10 -0
- data/app/views/camaleon_cms/default_theme/post_tag.rss.builder +22 -0
- data/app/views/camaleon_cms/default_theme/post_type.html.erb +25 -0
- data/app/views/camaleon_cms/default_theme/post_type.json.jbuilder +13 -0
- data/app/views/camaleon_cms/default_theme/post_type.rss.builder +22 -0
- data/app/views/camaleon_cms/default_theme/profile.html.erb +18 -0
- data/app/views/camaleon_cms/default_theme/profile.json.jbuilder +4 -0
- data/app/views/camaleon_cms/default_theme/robots.text.erb +1 -0
- data/app/views/camaleon_cms/default_theme/rss.rss.builder +21 -0
- data/app/views/camaleon_cms/default_theme/search.html.erb +13 -0
- data/app/views/camaleon_cms/default_theme/search.json.jbuilder +1 -0
- data/app/views/camaleon_cms/default_theme/single.html.erb +32 -0
- data/app/views/camaleon_cms/default_theme/single.json.jbuilder +21 -0
- data/app/views/camaleon_cms/default_theme/single.rss.builder +12 -0
- data/app/views/camaleon_cms/default_theme/sitemap.html.erb +23 -0
- data/app/views/camaleon_cms/default_theme/sitemap.xml.builder +60 -0
- data/app/views/camaleon_cms/html_mailer/confirm_email.html.erb +3 -0
- data/app/views/camaleon_cms/html_mailer/mailer.html.erb +4 -0
- data/app/views/camaleon_cms/html_mailer/password_reset.html.erb +3 -0
- data/app/views/camaleon_cms/shortcode_templates/widget.html.erb +11 -0
- data/app/views/layouts/camaleon_cms/admin.html.erb +54 -0
- data/app/views/layouts/camaleon_cms/admin/_ajax.html.erb +8 -0
- data/app/views/layouts/camaleon_cms/admin/_flash_messages.html.erb +43 -0
- data/app/views/layouts/camaleon_cms/admin/_footer.html.erb +13 -0
- data/app/views/layouts/camaleon_cms/admin/_form_error.html.erb +10 -0
- data/app/views/layouts/camaleon_cms/admin/_header.html.erb +51 -0
- data/app/views/layouts/camaleon_cms/admin/_sidebar.html.erb +19 -0
- data/app/views/layouts/camaleon_cms/admin/installer.html.erb +35 -0
- data/app/views/layouts/camaleon_cms/application.html.erb +15 -0
- data/app/views/layouts/camaleon_cms/login.html.erb +22 -0
- data/app/views/layouts/camaleon_cms/mailer.html.erb +22 -0
- data/config/initializers/action_view.rb +56 -0
- data/config/initializers/active_record_extension.rb +104 -0
- data/config/initializers/assets.rb +27 -0
- data/config/initializers/custom_initializers.rb +10 -0
- data/config/initializers/mobu.rb +24 -0
- data/config/initializers/model_alias.rb +18 -0
- data/config/initializers/sass.rb +52 -0
- data/config/locales/ar.yml +275 -0
- data/config/locales/camaleon_cms/admin/ar.yml +683 -0
- data/config/locales/camaleon_cms/admin/de.yml +682 -0
- data/config/locales/camaleon_cms/admin/en.yml +682 -0
- data/config/locales/camaleon_cms/admin/es.yml +654 -0
- data/config/locales/camaleon_cms/admin/fr.yml +663 -0
- data/config/locales/camaleon_cms/admin/it.yml +633 -0
- data/config/locales/camaleon_cms/admin/js.yml +435 -0
- data/config/locales/camaleon_cms/admin/nl.yml +659 -0
- data/config/locales/camaleon_cms/admin/pt-BR.yml +643 -0
- data/config/locales/camaleon_cms/admin/pt.yml +641 -0
- data/config/locales/camaleon_cms/admin/ru.yml +670 -0
- data/config/locales/camaleon_cms/admin/uk.yml +670 -0
- data/config/locales/camaleon_cms/admin/zh-CH.yml +703 -0
- data/config/locales/camaleon_cms/common.yml +784 -0
- data/config/locales/camaleon_cms/languages.yml +167 -0
- data/config/locales/camaleon_cms/routes.yml +71 -0
- data/config/locales/de.yml +210 -0
- data/config/locales/en.yml +207 -0
- data/config/locales/es.yml +198 -0
- data/config/locales/fr.yml +207 -0
- data/config/locales/it.yml +205 -0
- data/config/locales/nl.yml +209 -0
- data/config/locales/pl.yml +237 -0
- data/config/locales/pt-BR.yml +203 -0
- data/config/locales/pt.yml +201 -0
- data/config/locales/ru.yml +207 -0
- data/config/locales/uk.yml +257 -0
- data/config/locales/zh-CH.yml +194 -0
- data/config/routes.rb +11 -0
- data/config/routes/admin.rb +148 -0
- data/config/routes/frontend.rb +96 -0
- data/config/system.json +19 -0
- data/db/migrate/20150611161134_post_table_into_utf8.rb +124 -0
- data/db/migrate/20150926095310_rename_column_posts.rb +18 -0
- data/db/migrate/20151212095328_add_confirm_token_to_users.rb +7 -0
- data/db/migrate/20160504155652_add_feature_to_posts.rb +5 -0
- data/db/migrate/20160504155653_move_first_name_of_users.rb +9 -0
- data/db/migrate/20160606135421_improve_menus_structure.rb +7 -0
- data/db/migrate/20160609121449_add_group_to_custom_field_values.rb +5 -0
- data/db/migrate/20161206211917_install_migrated_seo_plugin.rb +8 -0
- data/db/migrate/20161215202255_drop_user_relationship_table.rb +5 -0
- data/db/migrate/20180124132318_create_media.rb +17 -0
- data/db/migrate/20180704211100_adjust_field_length.rb +10 -0
- data/lib/camaleon_cms.rb +5 -0
- data/lib/camaleon_cms/engine.rb +84 -0
- data/lib/camaleon_cms/version.rb +3 -0
- data/lib/captcha/bumpyroad.ttf +0 -0
- data/lib/captcha/captcha_0.jpg +0 -0
- data/lib/captcha/captcha_1.jpg +0 -0
- data/lib/captcha/captcha_10.jpg +0 -0
- data/lib/captcha/captcha_11.jpg +0 -0
- data/lib/captcha/captcha_2.jpg +0 -0
- data/lib/captcha/captcha_3.jpg +0 -0
- data/lib/captcha/captcha_4.jpg +0 -0
- data/lib/captcha/captcha_5.jpg +0 -0
- data/lib/captcha/captcha_6.jpg +0 -0
- data/lib/captcha/captcha_7.jpg +0 -0
- data/lib/captcha/captcha_8.jpg +0 -0
- data/lib/captcha/captcha_9.jpg +0 -0
- data/lib/ext/array.rb +59 -0
- data/lib/ext/hash.rb +41 -0
- data/lib/ext/string.rb +162 -0
- data/lib/ext/translator.rb +84 -0
- data/lib/generators/camaleon_cms/gem_plugin_generator.rb +140 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/admin_controller.rb +18 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/front_controller.rb +8 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/helpers/plugins/my_plugin/main_helper.rb +29 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +6 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/index.html.erb +9 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/settings.html.erb +21 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/front/index.html.erb +2 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/layouts/readme.txt +2 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/config/camaleon_plugin.json +14 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/config/initializers/custom_models.rb +5 -0
- data/lib/generators/camaleon_cms/install_generator.rb +43 -0
- data/lib/generators/camaleon_cms/install_template/apps/themes/readme.txt +0 -0
- data/lib/generators/camaleon_cms/install_template/plugin_routes.rb +22 -0
- data/lib/generators/camaleon_cms/install_template/system.json +11 -0
- data/lib/generators/camaleon_cms/theme_generator.rb +66 -0
- data/lib/generators/camaleon_cms/theme_template/assets/css/main.css +13 -0
- data/lib/generators/camaleon_cms/theme_template/assets/images/image.png +0 -0
- data/lib/generators/camaleon_cms/theme_template/assets/js/main.js +14 -0
- data/lib/generators/camaleon_cms/theme_template/config/config.json +14 -0
- data/lib/generators/camaleon_cms/theme_template/main_helper.rb +27 -0
- data/lib/generators/camaleon_cms/theme_template/views/admin/settings.html.erb +2 -0
- data/lib/generators/camaleon_cms/theme_template/views/index.html.erb +1 -0
- data/lib/generators/camaleon_cms/theme_template/views/layouts/index.html.erb +69 -0
- data/lib/generators/camaleon_cms/theme_template/views/partials/readme.txt +1 -0
- data/lib/plugin_routes.rb +439 -0
- data/lib/tasks/camaleon_cms/camaleon_tasks.rake +30 -0
- data/lib/tasks/camaleon_cms/rspec_test.rake +20 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/config/manifest.js +8 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +36 -0
- data/spec/dummy/bin/update +31 -0
- data/spec/dummy/bin/yarn +11 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +27 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +41 -0
- data/spec/dummy/config/environments/production.rb +79 -0
- data/spec/dummy/config/environments/test.rb +44 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/schema.rb +186 -0
- data/spec/factories/post.rb +44 -0
- data/spec/factories/post_type.rb +9 -0
- data/spec/factories/site.rb +18 -0
- data/spec/factories/user.rb +19 -0
- data/spec/features/admin/categories_spec.rb +25 -0
- data/spec/features/admin/comments_spec.rb +52 -0
- data/spec/features/admin/contact_form_spec.rb +60 -0
- data/spec/features/admin/content_groups_spec.rb +53 -0
- data/spec/features/admin/custom_fields_spec.rb +49 -0
- data/spec/features/admin/languages_spec.rb +37 -0
- data/spec/features/admin/media_spec.rb +50 -0
- data/spec/features/admin/menus_spec.rb +50 -0
- data/spec/features/admin/pages_spec.rb +35 -0
- data/spec/features/admin/plugins_spec.rb +29 -0
- data/spec/features/admin/posts_spec.rb +37 -0
- data/spec/features/admin/session_spec.rb +102 -0
- data/spec/features/admin/settings_spec.rb +17 -0
- data/spec/features/admin/shortcodes_spec.rb +11 -0
- data/spec/features/admin/sites_spec.rb +53 -0
- data/spec/features/admin/tags_spec.rb +34 -0
- data/spec/features/admin/themes_spec.rb +18 -0
- data/spec/features/admin/user_roles_spec.rb +66 -0
- data/spec/features/admin/users_spec.rb +81 -0
- data/spec/features/admin/widgets_spec.rb +59 -0
- data/spec/features/frontend/pages_spec.rb +136 -0
- data/spec/features/frontend/post_type_spec.rb +16 -0
- data/spec/helpers/email_helper_spec.rb +16 -0
- data/spec/helpers/short_code_helper_spec.rb +64 -0
- data/spec/helpers/uploader_helper_spec.rb +56 -0
- data/spec/mailers/send_mail_spec.rb +37 -0
- data/spec/models/post_spec.rb +50 -0
- data/spec/models/user_spec.rb +12 -0
- data/spec/rails_helper.rb +50 -0
- data/spec/routing/post_type_routes_spec.rb +12 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/capybara_normalize_whitespace_patch.rb +17 -0
- data/spec/support/common.rb +119 -0
- data/spec/support/fixtures/rails.png +0 -0
- data/spec/support/wait_for_ajax.rb +30 -0
- metadata +1213 -0
@@ -0,0 +1,310 @@
|
|
1
|
+
module CamaleonCms::CustomFieldsRead extend ActiveSupport::Concern
|
2
|
+
included do
|
3
|
+
before_destroy :_destroy_custom_field_groups
|
4
|
+
# DEPRECATED, INSTEAD USE: custom_fields
|
5
|
+
has_many :fields, ->(object){ where(:object_class => object.class.to_s.gsub("Decorator","").gsub("CamaleonCms::",""))} , :class_name => "CamaleonCms::CustomField" ,foreign_key: :objectid
|
6
|
+
# DEPRECATED, INSTEAD USE: custom_field_values
|
7
|
+
has_many :field_values, ->(object){where(object_class: object.class.to_s.gsub("Decorator","").gsub("CamaleonCms::",""))}, :class_name => "CamaleonCms::CustomFieldsRelationship", foreign_key: :objectid, dependent: :delete_all
|
8
|
+
# DEPRECATED, INSTEAD USE: custom_field_groups
|
9
|
+
has_many :field_groups, ->(object){where(object_class: object.class.to_s.parseCamaClass)}, :class_name => "CamaleonCms::CustomFieldGroup", foreign_key: :objectid
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
# get custom field groups for current object
|
14
|
+
# only: Post_type, Post, Category, PostTag, Widget, Site and a Custom model pre configured
|
15
|
+
# return collections CustomFieldGroup
|
16
|
+
# args: (Hash, used only for PostType Objects)
|
17
|
+
# kind: (Post (Default) | Category | PostTag | PostType).
|
18
|
+
# If kind = "Post" this will return all groups for all posts from current post type
|
19
|
+
# If kind = "Category" this will return all groups for all categories from current post type
|
20
|
+
# If kind = "PostTag" this will return all groups for all posttags from current post type
|
21
|
+
# If kind = "all" this will return all groups from current post type
|
22
|
+
# If kind = "post_type" this will return groups for all post_types
|
23
|
+
# Sample: mypost.get_field_groups() ==> return fields for posts from parent posttype
|
24
|
+
# Sample: mycat.get_field_groups() ==> return fields for categories from parent posttype
|
25
|
+
# Sample: myposttag.get_field_groups() ==> return fields for posttags from parent posttype
|
26
|
+
# Sample: mypost_type.get_field_groups({kind: 'Post'}) => return custom fields for posts
|
27
|
+
# Sample: mypost_type.get_field_groups({kind: 'Category'}) => return custom fields for posts
|
28
|
+
# Sample: mypost_type.get_field_groups({kind: 'PostTag'}) => return custom fields for posts
|
29
|
+
def get_field_groups(args = {})
|
30
|
+
args = args.is_a?(String) ? {kind: args, include_parent: false } : {kind: "Post", include_parent: false }.merge(args)
|
31
|
+
class_name = self.class.to_s.parseCamaClass
|
32
|
+
case class_name
|
33
|
+
when 'Category','PostTag'
|
34
|
+
self.post_type.get_field_groups(class_name)
|
35
|
+
when 'Post'
|
36
|
+
if self.term_relationships.size.zero? && args[:cat_ids].nil?
|
37
|
+
CamaleonCms::CustomFieldGroup.where("(objectid = ? AND object_class = ?) OR (objectid = ? AND object_class = ?)", self.id || -1, class_name, self.post_type.id, "PostType_#{class_name}")
|
38
|
+
else
|
39
|
+
cat_ids = self.categories.map(&:id)
|
40
|
+
cat_ids += args[:cat_ids] unless args[:cat_ids].nil?
|
41
|
+
cat_ids += CamaleonCms::Category.find(cat_ids).map {|category| _category_parents_ids(category)}.flatten.uniq
|
42
|
+
CamaleonCms::CustomFieldGroup.where("(objectid = ? AND object_class = ?) OR
|
43
|
+
(objectid = ? AND object_class = ?) OR
|
44
|
+
(objectid IN (?) AND object_class = ?)",
|
45
|
+
self.id || -1, class_name,
|
46
|
+
self.post_type.id, "PostType_#{class_name}",
|
47
|
+
cat_ids, "Category_#{class_name}")
|
48
|
+
end
|
49
|
+
when 'NavMenuItem'
|
50
|
+
self.main_menu.custom_field_groups
|
51
|
+
when 'PostType'
|
52
|
+
if args[:kind] == "all"
|
53
|
+
CamaleonCms::CustomFieldGroup.where(object_class: ["PostType_Post", "PostType_Post", "PostType_PostTag", "PostType"], objectid: self.id )
|
54
|
+
elsif args[:kind] == "post_type"
|
55
|
+
self.custom_field_groups
|
56
|
+
else
|
57
|
+
CamaleonCms::CustomFieldGroup.where(object_class: "PostType_#{args[:kind]}", objectid: self.id )
|
58
|
+
end
|
59
|
+
else # 'Plugin' or other classes
|
60
|
+
self.field_groups
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# get custom field groups for current user
|
65
|
+
# return collections CustomFieldGroup
|
66
|
+
# site: site object
|
67
|
+
def get_user_field_groups(site)
|
68
|
+
site.custom_field_groups.where(object_class: self.class.to_s.parseCamaClass)
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
# get custom field value
|
73
|
+
# _key: custom field key
|
74
|
+
# if value is not present, then return default
|
75
|
+
# return default only if the field was not registered
|
76
|
+
def get_field_value(_key, _default = nil, group_number = 0)
|
77
|
+
v = get_field_values(_key, group_number).first rescue _default
|
78
|
+
v.present? ? v : _default
|
79
|
+
end
|
80
|
+
alias_method :get_field, :get_field_value
|
81
|
+
alias_method :get_field!, :get_field_value
|
82
|
+
|
83
|
+
# get custom field values
|
84
|
+
# _key: custom field key
|
85
|
+
def get_field_values(_key, group_number = 0)
|
86
|
+
custom_field_values.loaded? ? custom_field_values.select{|f| f.custom_field_slug == _key && f.group_number == group_number}.map{|f| f.value } : custom_field_values.where(custom_field_slug: _key, group_number: group_number).pluck(:value)
|
87
|
+
end
|
88
|
+
alias_method :get_fields, :get_field_values
|
89
|
+
|
90
|
+
# return the values of custom fields grouped by group_number
|
91
|
+
# field_keys: (array of keys)
|
92
|
+
# samples: my_object.get_fields_grouped(['my_slug1', 'my_slug2'])
|
93
|
+
# return: [
|
94
|
+
# { 'my_slug1' => ["val 1"], 'my_slug2' => ['val 2']},
|
95
|
+
# { 'my_slug1' => ["val2 for slug1"], 'my_slug2' => ['val 2 for slug2']}
|
96
|
+
# ] ==> 2 groups
|
97
|
+
#
|
98
|
+
# return: [
|
99
|
+
# { 'my_slug1' => ["val 1", 'val 2 for fields multiple support'], 'my_slug2' => ['val 2']},
|
100
|
+
# { 'my_slug1' => ["val2 for slug1", 'val 2'], 'my_slug2' => ['val 2 for slug2']}
|
101
|
+
# { 'my_slug1' => ["val3 for slug1", 'val 3'], 'my_slug2' => ['val 3 for slug2']}
|
102
|
+
# ] ==> 3 groups
|
103
|
+
#
|
104
|
+
# puts res[0]['my_slug1'].first ==> "val 1"
|
105
|
+
def get_fields_grouped(field_keys)
|
106
|
+
res = []
|
107
|
+
custom_field_values.where(custom_field_slug: field_keys).order(group_number: :asc).group_by(&:group_number).each do |group_number, group_fields|
|
108
|
+
group = {}
|
109
|
+
field_keys.each do |field_key|
|
110
|
+
_tmp = []
|
111
|
+
group_fields.each{ |field| _tmp << field.value if field_key == field.custom_field_slug }
|
112
|
+
group[field_key] = _tmp if _tmp.present?
|
113
|
+
end
|
114
|
+
res << group
|
115
|
+
end
|
116
|
+
res
|
117
|
+
end
|
118
|
+
|
119
|
+
# return all values
|
120
|
+
# {key1: "single value", key2: [multiple, values], key3: value4} if include_options = false
|
121
|
+
# {key1: {values: "single value", options: {a:1, b: 4}}, key2: {values: [multiple, values], options: {a=1, b=2} }} if include_options = true
|
122
|
+
def get_field_values_hash(include_options = false)
|
123
|
+
fields = {}
|
124
|
+
self.custom_field_values.to_a.uniq.each do |field_value|
|
125
|
+
custom_field = field_value.custom_fields
|
126
|
+
values = custom_field.values.where(objectid: self.id).pluck(:value)
|
127
|
+
fields[field_value.custom_field_slug] = custom_field.cama_options[:multiple].to_s.to_bool ? values : values.first unless include_options
|
128
|
+
fields[field_value.custom_field_slug] = {values: custom_field.cama_options[:multiple].to_s.to_bool ? values : values.first, options: custom_field.cama_options, id: custom_field.id} if include_options
|
129
|
+
end
|
130
|
+
fields.to_sym
|
131
|
+
end
|
132
|
+
|
133
|
+
# return all custom fields for current element
|
134
|
+
# {my_field_slug: {options: {}, values: [], name: '', ...} }
|
135
|
+
# deprecated f attribute
|
136
|
+
def get_fields_object(f=true)
|
137
|
+
fields = {}
|
138
|
+
self.custom_field_values.eager_load(:custom_fields).to_a.uniq.each do |field_value|
|
139
|
+
custom_field = field_value.custom_fields
|
140
|
+
# if custom_field.options[:show_frontend].to_s.to_bool
|
141
|
+
values = custom_field.values.where(objectid: self.id).pluck(:value)
|
142
|
+
fields[field_value.custom_field_slug] = custom_field.attributes.merge(options: custom_field.cama_options, values: custom_field.cama_options[:multiple].to_s.to_bool ? values : values.first)
|
143
|
+
# end
|
144
|
+
end
|
145
|
+
fields.to_sym
|
146
|
+
end
|
147
|
+
|
148
|
+
|
149
|
+
# add a custom field group for current model
|
150
|
+
# values:
|
151
|
+
# name: name for the group
|
152
|
+
# slug: key for group (if slug = _default => this will never show title and description)
|
153
|
+
# description: description for the group (optional)
|
154
|
+
# is_repeat: (boolean, optional -> default false) indicate if group support multiple format (repeated values)
|
155
|
+
# Model supported: PostType, Category, Post, Posttag, Widget, Plugin, Theme, User and Custom models pre configured
|
156
|
+
# Note 1: If you need add fields for all post's or all categories, then you need to add the fields into the
|
157
|
+
# post_type.add_custom_field_group(values, kind = "Post")
|
158
|
+
# post_type.add_custom_field_group(values, kind = "Category")
|
159
|
+
# Note 2: If you need add fields for only the Post_type, you have to use options or metas
|
160
|
+
# return: CustomFieldGroup object
|
161
|
+
# kind: argument only for PostType model: (Post | Category | PostTag), default => Post. If kind = "" this will add group for all post_types
|
162
|
+
def add_custom_field_group(values, kind = "Post")
|
163
|
+
values = values.with_indifferent_access
|
164
|
+
group = get_field_groups(kind).where(slug: values[:slug]).first
|
165
|
+
unless group.present?
|
166
|
+
site = _cama_get_field_site
|
167
|
+
values[:parent_id] = site.id if site.present?
|
168
|
+
if self.is_a?(CamaleonCms::Post) # harcoded for post to support custom field groups
|
169
|
+
group = CamaleonCms::CustomFieldGroup.where(object_class: "Post", objectid: self.id).create!(values)
|
170
|
+
else
|
171
|
+
group = get_field_groups(kind).create!(values)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
group
|
175
|
+
end
|
176
|
+
alias_method :add_field_group, :add_custom_field_group
|
177
|
+
|
178
|
+
# Add custom fields for a default group:
|
179
|
+
# This will create a new group with slug=_default if it doesn't exist yet
|
180
|
+
# more details in add_manual_field(item, options) from custom field groups
|
181
|
+
# kind: argument only for PostType model: (Post | Category | PostTag), default => Post
|
182
|
+
def add_custom_field_to_default_group(item, options, kind = "Post")
|
183
|
+
g = get_field_groups(kind).where(slug: "_default").first
|
184
|
+
g = add_custom_field_group({name: "Default Field Group", slug: "_default"}, kind) unless g.present?
|
185
|
+
g.add_manual_field(item, options)
|
186
|
+
end
|
187
|
+
alias_method :add_field, :add_custom_field_to_default_group
|
188
|
+
|
189
|
+
# return field object for current model
|
190
|
+
def get_field_object(slug)
|
191
|
+
CamaleonCms::CustomField.where(
|
192
|
+
slug: slug,
|
193
|
+
parent_id: get_field_groups.pluck(:id),
|
194
|
+
).first || CamaleonCms::CustomField.where(
|
195
|
+
slug: slug,
|
196
|
+
parent_id: get_field_groups({include_parent: true})
|
197
|
+
).first
|
198
|
+
end
|
199
|
+
|
200
|
+
# save all fields sent from browser (reservated for browser request)
|
201
|
+
# sample:
|
202
|
+
# {
|
203
|
+
# "0"=>{ "untitled-text-box"=>{"id"=>"262", "values"=>{"0"=>"33333"}}},
|
204
|
+
# "1"=>{ "untitled-text-box"=>{"id"=>"262", "values"=>{"0"=>"33333"}}}
|
205
|
+
# }
|
206
|
+
def set_field_values(datas = {})
|
207
|
+
if datas.present?
|
208
|
+
ActiveRecord::Base.transaction do
|
209
|
+
self.custom_field_values.delete_all
|
210
|
+
datas.each do |index, fields_data|
|
211
|
+
fields_data.each do |field_key, values|
|
212
|
+
if values[:values].present?
|
213
|
+
order_value = -1
|
214
|
+
((values[:values].is_a?(Hash) || values[:values].is_a?(ActionController::Parameters)) ? values[:values].values : values[:values]).each do |value|
|
215
|
+
item = self.custom_field_values.create!({custom_field_id: values[:id], custom_field_slug: field_key, value: fix_meta_value(value), term_order: order_value += 1, group_number: values[:group_number] || 0})
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
# update new value for field with slug _key
|
225
|
+
# Sample: my_posy.update_field_value('sub_title', 'Test Sub Title')
|
226
|
+
def update_field_value(_key, value = nil, group_number = 0)
|
227
|
+
self.custom_field_values.where(custom_field_slug: _key, group_number: group_number).first.update_column('value', value) rescue nil
|
228
|
+
end
|
229
|
+
|
230
|
+
# Set custom field values for current model
|
231
|
+
# key: slug of the custom field
|
232
|
+
# value: array of values for multiple values support
|
233
|
+
# value: string value
|
234
|
+
def save_field_value(key, value, order = 0, clear = true)
|
235
|
+
set_field_value(key, value, {clear: clear, order: order})
|
236
|
+
end
|
237
|
+
|
238
|
+
# Set custom field values for current model (support for multiple group values)
|
239
|
+
# key: (string required) slug of the custom field
|
240
|
+
# value: (array | string) array: array of values for multiple values support, string: uniq value for the custom field
|
241
|
+
# args:
|
242
|
+
# field_id: (integer optional) identifier of the custom field
|
243
|
+
# order: order or position of the field value
|
244
|
+
# group_number: number of the group (only for custom field group with is_repeat enabled)
|
245
|
+
# clear: (boolean, default true) if true, will remove previous values and set these values, if not will append values
|
246
|
+
# return false if the was not saved because there is not present the field with slug: key
|
247
|
+
# sample: my_post.set_field_value('subtitle', 'Sub Title')
|
248
|
+
# sample: my_post.set_field_value('subtitle', ['Sub Title1', 'Sub Title2']) # set values for a field (for fields that support multiple values)
|
249
|
+
# sample: my_post.set_field_value('subtitle', 'Sub Title', {group_number: 1})
|
250
|
+
# sample: my_post.set_field_value('subtitle', 'Sub Title', {group_number: 1, group_number: 1}) # add field values for fields in group 1
|
251
|
+
def set_field_value(key, value, args = {})
|
252
|
+
args = {order: 0, group_number: 0, field_id: nil, clear: true}.merge(args)
|
253
|
+
args[:field_id] = get_field_object(key).id rescue nil unless args[:field_id].present?
|
254
|
+
unless args[:field_id].present?
|
255
|
+
raise ArgumentError, "There is no custom field configured for #{key}"
|
256
|
+
end
|
257
|
+
self.custom_field_values.where({custom_field_slug: key, group_number: args[:group_number]}).delete_all if args[:clear]
|
258
|
+
v = {custom_field_id: args[:field_id], custom_field_slug: key, value: fix_meta_value(value), term_order: args[:order], group_number: args[:group_number]}
|
259
|
+
if value.is_a?(Array)
|
260
|
+
value.each do |val|
|
261
|
+
self.custom_field_values.create!(v.merge({value: fix_meta_value(val)}))
|
262
|
+
end
|
263
|
+
else
|
264
|
+
self.custom_field_values.create!(v)
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
private
|
269
|
+
def fix_meta_value(value)
|
270
|
+
if (value.is_a?(Array) || value.is_a?(Hash) || value.is_a?(ActionController::Parameters))
|
271
|
+
value = value.to_json
|
272
|
+
end
|
273
|
+
value
|
274
|
+
end
|
275
|
+
|
276
|
+
def _destroy_custom_field_groups
|
277
|
+
class_name = self.class.to_s.parseCamaClass
|
278
|
+
if ['Category','Post','PostTag'].include?(class_name)
|
279
|
+
CamaleonCms::CustomFieldGroup.where(objectid: self.id, object_class: class_name).destroy_all
|
280
|
+
elsif ['PostType'].include?(class_name)
|
281
|
+
get_field_groups("Post").destroy_all
|
282
|
+
get_field_groups("Category").destroy_all
|
283
|
+
get_field_groups("PostTag").destroy_all
|
284
|
+
elsif ["NavMenuItem"].include?(class_name) # menu items doesn't include field groups
|
285
|
+
else
|
286
|
+
get_field_groups().destroy_all if get_field_groups.present?
|
287
|
+
end
|
288
|
+
end
|
289
|
+
# return the Site Model owner of current model
|
290
|
+
def _cama_get_field_site
|
291
|
+
case self.class.to_s.parseCamaClass
|
292
|
+
when 'Category','Post','PostTag'
|
293
|
+
self.post_type.site
|
294
|
+
when 'Site'
|
295
|
+
self
|
296
|
+
else
|
297
|
+
self.site
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
def _category_parents_ids(category)
|
302
|
+
@parents ||= []
|
303
|
+
if category.parent.nil?
|
304
|
+
return @parents
|
305
|
+
else
|
306
|
+
@parents << category.parent.id
|
307
|
+
_category_parents_ids(category.parent)
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
module CamaleonCms::Metas extend ActiveSupport::Concern
|
2
|
+
included do
|
3
|
+
# options and metas auto save support
|
4
|
+
attr_accessor :data_options
|
5
|
+
attr_accessor :data_metas
|
6
|
+
after_create :save_metas_options, unless: :save_metas_options_skip
|
7
|
+
before_update :fix_save_metas_options_no_changed
|
8
|
+
|
9
|
+
has_many :metas, ->(object){ where(object_class: object.class.to_s.gsub("Decorator","").gsub("CamaleonCms::", "")) }, class_name: "CamaleonCms::Meta", foreign_key: :objectid, dependent: :delete_all
|
10
|
+
end
|
11
|
+
|
12
|
+
# Add meta with value or Update meta with key: key
|
13
|
+
# return true or false
|
14
|
+
def set_meta(key, value)
|
15
|
+
metas.where(key: key).update_or_create({value: fix_meta_value(value)})
|
16
|
+
cama_set_cache("meta_#{key}", value)
|
17
|
+
end
|
18
|
+
|
19
|
+
# return value of meta with key: key,
|
20
|
+
# if meta not exist, return default
|
21
|
+
# return default if meta value == ""
|
22
|
+
def get_meta(key, default = nil)
|
23
|
+
key_str = key.is_a?(Symbol) ? key.to_s : key
|
24
|
+
cama_fetch_cache("meta_#{key_str}") do
|
25
|
+
option = metas.loaded? ? metas.select{|m| m.key == key }.first : metas.where(key: key_str).first
|
26
|
+
res = ''
|
27
|
+
if option.present?
|
28
|
+
value = JSON.parse(option.value) rescue option.value
|
29
|
+
res = (value.is_a?(Hash) ? value.with_indifferent_access : value) rescue option.value
|
30
|
+
end
|
31
|
+
res == '' ? default : res
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# delete meta
|
36
|
+
def delete_meta(key)
|
37
|
+
metas.where(key: key).destroy_all
|
38
|
+
cama_remove_cache("meta_#{key}")
|
39
|
+
end
|
40
|
+
|
41
|
+
# return configurations for current object, sample: {"type":"post_type","object_id":"127"}
|
42
|
+
def options(meta_key = "_default")
|
43
|
+
get_meta(meta_key, {})
|
44
|
+
end
|
45
|
+
alias_method :cama_options, :options
|
46
|
+
|
47
|
+
# add configuration for current object
|
48
|
+
# key: attribute name
|
49
|
+
# value: attribute value
|
50
|
+
# meta_key: (String) name of the meta attribute
|
51
|
+
# sample: mymodel.set_custom_option("my_settings", "color", "red")
|
52
|
+
def set_option(key, value = nil, meta_key = "_default")
|
53
|
+
return if key.nil?
|
54
|
+
data = cama_options(meta_key)
|
55
|
+
data[key] = fix_meta_var(value)
|
56
|
+
set_meta(meta_key, data)
|
57
|
+
value
|
58
|
+
end
|
59
|
+
|
60
|
+
# return configuration for current object
|
61
|
+
# key: attribute name
|
62
|
+
# default: if attribute not exist, return default
|
63
|
+
# return default if option value == ""
|
64
|
+
# return value for attribute
|
65
|
+
def get_option(key = nil, default = nil, meta_key = "_default")
|
66
|
+
values = cama_options(meta_key)
|
67
|
+
key = key.to_sym
|
68
|
+
values.has_key?(key) && values[key] != "" ? values[key] : default
|
69
|
+
end
|
70
|
+
|
71
|
+
# delete attribute from configuration
|
72
|
+
def delete_option(key, meta_key = "_default")
|
73
|
+
values = cama_options(meta_key)
|
74
|
+
key = key.to_sym
|
75
|
+
values.delete(key) if values.has_key?(key)
|
76
|
+
set_meta(meta_key, values)
|
77
|
+
end
|
78
|
+
|
79
|
+
# set multiple configurations
|
80
|
+
# h: {ket1: "sdsds", ff: "fdfdfdfd"}
|
81
|
+
def set_options(h = {}, meta_key = "_default")
|
82
|
+
if h.present?
|
83
|
+
data = cama_options(meta_key)
|
84
|
+
PluginRoutes.fixActionParameter(h).to_sym.each do |key, value|
|
85
|
+
data[key] = fix_meta_var(value)
|
86
|
+
end
|
87
|
+
set_meta(meta_key, data)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
alias_method :set_multiple_options, :set_options
|
91
|
+
|
92
|
+
# save multiple metas
|
93
|
+
# sample: set_metas({name: 'Owen', email: 'owenperedo@gmail.com'})
|
94
|
+
def set_metas(data_metas)
|
95
|
+
(data_metas.nil? ? {} : data_metas).each do |key, value|
|
96
|
+
self.set_meta(key, value)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# permit to skip save_metas_options in specific models
|
101
|
+
def save_metas_options_skip
|
102
|
+
false
|
103
|
+
end
|
104
|
+
|
105
|
+
# fix to save options and metas when a model was not changed
|
106
|
+
def fix_save_metas_options_no_changed
|
107
|
+
save_metas_options #unless self.changed?
|
108
|
+
end
|
109
|
+
|
110
|
+
# save all settings for this post type received in data_options and data_metas attribute (options and metas)
|
111
|
+
# sample: Site.first.post_types.create({name: "owen", slug: "my_post_type", data_options: { has_category: true, default_layout: "my_layout" }})
|
112
|
+
def save_metas_options
|
113
|
+
set_multiple_options(data_options)
|
114
|
+
if data_metas.present?
|
115
|
+
data_metas.each do |key, val|
|
116
|
+
set_meta(key, val)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
# fix to parse value
|
123
|
+
def fix_meta_value(value)
|
124
|
+
if (value.is_a?(Array) || value.is_a?(Hash) || value.is_a?(ActionController::Parameters))
|
125
|
+
value = value.to_json
|
126
|
+
end
|
127
|
+
fix_meta_var(value)
|
128
|
+
end
|
129
|
+
|
130
|
+
# fix to detect type of the variable
|
131
|
+
def fix_meta_var(value)
|
132
|
+
if value.is_a?(String)
|
133
|
+
value = value.to_var
|
134
|
+
end
|
135
|
+
value
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module CamaleonCms::SiteDefaultSettings extend ActiveSupport::Concern
|
2
|
+
# default structure for each new site
|
3
|
+
def default_settings
|
4
|
+
default_post_type = [
|
5
|
+
{name: 'Post', description: 'Posts', options: {has_category: true, has_tags: true, not_deleted: true, has_summary: true, has_content: true, has_comments: true, has_picture: true, has_template: true, }},
|
6
|
+
{name: 'Page', description: 'Pages', options: {has_category: false, has_tags: false, not_deleted: true, has_summary: false, has_content: true, has_comments: false, has_picture: true, has_template: true, has_layout: true}}
|
7
|
+
]
|
8
|
+
default_post_type.each do |pt|
|
9
|
+
model_pt = self.post_types.create({name: pt[:name], slug: pt[:name].to_s.parameterize, description: pt[:description], data_options: pt[:options]})
|
10
|
+
end
|
11
|
+
|
12
|
+
# nav menus
|
13
|
+
@nav_menu = self.nav_menus.new({name: "Main Menu", slug: "main_menu"})
|
14
|
+
if @nav_menu.save
|
15
|
+
self.post_types.all.each do |pt|
|
16
|
+
if pt.slug == "post"
|
17
|
+
title = "Sample Post"
|
18
|
+
slug = 'sample-post'
|
19
|
+
content = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer pharetra ut augue in posuere. Nulla non malesuada dui. Sed egestas tortor ut purus tempor sodales. Duis non sollicitudin nulla, quis mollis neque. Integer sit amet augue ac neque varius auctor. Vestibulum malesuada leo leo, at semper libero efficitur nec. Etiam semper nisi ac nisi ullamcorper, sed tincidunt purus elementum. Mauris ac congue nibh. Quisque pretium eget leo nec suscipit. </p> <p> Vestibulum ultrices orci ut congue interdum. Morbi dolor nunc, imperdiet vel risus semper, tempor dapibus urna. Phasellus luctus pharetra enim quis volutpat. Integer tristique urna nec malesuada ullamcorper. Curabitur dictum, lectus id ultrices rhoncus, ante neque auctor erat, ut sodales nisi odio sit amet lorem. In hac habitasse platea dictumst. Quisque orci orci, hendrerit at luctus tristique, lobortis in diam. Curabitur ligula enim, rhoncus ut vestibulum a, consequat sit amet nisi. Aliquam bibendum fringilla ultrices. Aliquam erat volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In justo mi, congue in rhoncus lobortis, facilisis in est. Nam et rhoncus purus. </p> <p> Sed sagittis auctor lectus at rutrum. Morbi ultricies felis mi, ut scelerisque augue facilisis eu. In molestie quam ex. Quisque ut sapien sed odio tempus imperdiet. In id accumsan massa. Morbi quis nunc ullamcorper, interdum enim eu, finibus purus. Vestibulum ac fermentum augue, at tempus ante. Aliquam ultrices, purus ut porttitor gravida, dui augue dignissim massa, ac tempor ante dolor at arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse placerat risus est, eget varius mi ultricies in. Duis non odio ut felis dapibus eleifend. In fringilla enim lobortis placerat efficitur. </p> <p> Nulla sodales faucibus urna, quis viverra dolor facilisis sollicitudin. Aenean ac egestas nibh. Nam non tortor eget nibh scelerisque fermentum. Etiam ornare, nunc ut luctus mollis, ante dolor consectetur augue, non scelerisque odio est a nulla. Nullam cursus egestas nulla, nec commodo nibh suscipit ut. Mauris ut felis sem. Aenean at mi at nisi dictum blandit sit amet at erat. Etiam eget lobortis tellus. Curabitur in commodo arcu, at vehicula tortor. </p>"
|
20
|
+
else
|
21
|
+
title = "Welcome"
|
22
|
+
slug = 'welcome'
|
23
|
+
content = "<p style='text-align: center;'><img width='155' height='155' src='http://camaleon.tuzitio.com/media/132/logo2.png' alt='logo' /></p><p><strong>Camaleon CMS</strong> is a free and open-source tool and a fexible content management system (CMS) based on <a href='http://rubyonrails.org'>Ruby on Rails 4</a> and MySQL. </p> <p>With Camaleon you can do the following:</p> <ul> <li>Create instantly a lot of sites in the same installation</li> <li>Manage your content information in several languages</li> <li>Extend current functionality by plugins (MVC structure and no more echo or prints anywhere)</li> <li>Create or install different themes for each site</li> <li>Create your own structure without coding anything (adapt Camaleon as you want and not you for Camaleon)</li> <li>Create your store and start to sell your products using our plugins</li> <li>Avoid web attacks</li> <li>Compare the speed and enjoy the speed of your new Camaleon site</li> <li>Customize or create your themes for mobile support</li> <li>Support more visitors at the same time</li> <li>Manage your information with a panel like wordpress </li> <li>All urls are oriented for SEO</li> <li>Multiples roles of users</li> </ul>"
|
24
|
+
end
|
25
|
+
user = self.users.admin_scope.first
|
26
|
+
user = self.users.admin_scope.create({email: 'admin@local.com', username: 'admin', password: 'admin123', password_confirmation: 'admin123', first_name: 'Administrator'}) unless user.present?
|
27
|
+
post = pt.add_post({title: title, slug: slug, content: content, user_id: user.id, status: 'published'})
|
28
|
+
@nav_menu.append_menu_item({label: title, type: 'post', link: post.id})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
get_anonymous_user
|
32
|
+
end
|
33
|
+
|
34
|
+
# auto create default user roles
|
35
|
+
def set_default_user_roles(post_type = nil)
|
36
|
+
user_role = self.user_roles.where({slug: 'admin', term_group: -1}).first_or_create({name: 'Administrator', description: 'Default roles admin'})
|
37
|
+
if user_role.valid?
|
38
|
+
d, m = {}, {}
|
39
|
+
pts = self.post_types.all.pluck(:id)
|
40
|
+
CamaleonCms::UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts }
|
41
|
+
CamaleonCms::UserRole::ROLES[:manager].each { |value| m[value[:key]] = 1 }
|
42
|
+
user_role.set_meta("_post_type_#{self.id}", d || {})
|
43
|
+
user_role.set_meta("_manager_#{self.id}", m || {})
|
44
|
+
end
|
45
|
+
|
46
|
+
user_role = self.user_roles.where({slug: 'editor'}).first_or_create({name: 'Editor', description: 'Editor Role'})
|
47
|
+
if user_role.valid?
|
48
|
+
d = {}
|
49
|
+
if post_type.present?
|
50
|
+
d = user_role.get_meta("_post_type_#{self.id}", {})
|
51
|
+
CamaleonCms::UserRole::ROLES[:post_type].each { |value|
|
52
|
+
value_old = d[value[:key].to_sym] || []
|
53
|
+
d[value[:key].to_sym] = value_old + [post_type.id]
|
54
|
+
}
|
55
|
+
else
|
56
|
+
pts = self.post_types.all.pluck(:id)
|
57
|
+
CamaleonCms::UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts }
|
58
|
+
end
|
59
|
+
user_role.set_meta("_post_type_#{self.id}", d || {})
|
60
|
+
end
|
61
|
+
|
62
|
+
user_role = self.user_roles.where({slug: 'contributor'}).first_or_create({name: 'Contributor', description: 'Contributor Role'})
|
63
|
+
if user_role.valid?
|
64
|
+
d = {}
|
65
|
+
if post_type.present?
|
66
|
+
d = user_role.get_meta("_post_type_#{self.id}", {})
|
67
|
+
CamaleonCms::UserRole::ROLES[:post_type].each { |value|
|
68
|
+
value_old = d[value[:key].to_sym] || []
|
69
|
+
d[value[:key].to_sym] = value_old + [post_type.id] if value[:key].to_s == 'edit'
|
70
|
+
}
|
71
|
+
else
|
72
|
+
pts = self.post_types.all.pluck(:id)
|
73
|
+
CamaleonCms::UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts if value[:key].to_s == 'edit' }
|
74
|
+
end
|
75
|
+
user_role.set_meta("_post_type_#{self.id}", d || {})
|
76
|
+
end
|
77
|
+
|
78
|
+
unless post_type.present?
|
79
|
+
user_role = self.user_roles.where({slug: 'client', term_group: -1}).first_or_create({name: 'Client', description: 'Default roles client'})
|
80
|
+
if user_role.valid?
|
81
|
+
user_role.set_meta("_post_type_#{self.id}", {})
|
82
|
+
user_role.set_meta("_manager_#{self.id}", {})
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|