camaleon_cms 0.2.1 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of camaleon_cms might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +266 -0
- data/app/apps/plugins/attack/config/config.json +1 -1
- data/app/apps/plugins/contact_form/config/config.json +1 -1
- data/app/apps/plugins/contact_form/contact_form_html_helper.rb +15 -10
- data/app/apps/plugins/contact_form/front_controller.rb +1 -0
- data/app/apps/plugins/contact_form/views/admin_forms/edit.html.erb +1 -2
- data/app/apps/plugins/contact_form/views/admin_forms/index.html.erb +1 -1
- data/app/apps/plugins/contact_form/views/admin_forms/responses.html.erb +1 -1
- data/app/apps/plugins/contact_form/views/forms_shorcode.html.erb +6 -6
- data/app/apps/plugins/front_cache/config/config.json +1 -1
- data/app/apps/plugins/front_cache/views/admin/settings.html.erb +1 -1
- data/app/apps/plugins/visibility_post/config/config.json +1 -1
- data/app/apps/themes/camaleon_first/assets/css/style-ver.css.scss +59 -32
- data/app/apps/themes/camaleon_first/views/layouts/index.html.erb +2 -2
- data/app/apps/themes/default/assets/css/style.css.scss +3 -0
- data/app/apps/themes/default/views/category.html.erb +1 -1
- data/app/apps/themes/default/views/post_tag.html.erb +1 -1
- data/app/apps/themes/default/views/post_type.html.erb +1 -1
- data/app/apps/themes/default/views/search.html.erb +1 -1
- data/app/apps/themes/new/views/category.html.erb +1 -1
- data/app/apps/themes/new/views/layouts/index.html.erb +2 -2
- data/app/apps/themes/new/views/post_tag.html.erb +1 -1
- data/app/apps/themes/new/views/post_type.html.erb +1 -1
- data/app/apps/themes/new/views/search.html.erb +1 -1
- data/app/assets/{stylesheets/admin/bootstrap/images → images/admin}/glyphicons-halflings.png +0 -0
- data/app/assets/javascripts/admin/actions.js +12 -205
- data/app/assets/javascripts/admin/admin-basic-manifest.js +3 -0
- data/app/assets/javascripts/admin/admin-manifest.js +14 -4
- data/app/assets/javascripts/admin/custom_fields.js +4 -2
- data/app/assets/javascripts/admin/data.js +49 -20
- data/app/assets/javascripts/admin/elfinder/upload_elfinder.js +4 -4
- data/app/assets/javascripts/admin/grid-editor.js +390 -113
- data/app/assets/javascripts/admin/i18n.js +22 -0
- data/app/assets/javascripts/admin/jquery.validate.js +2 -54
- data/app/assets/javascripts/admin/{core.js → libraries.js} +92 -76
- data/app/assets/javascripts/admin/login_manifest.js +0 -3
- data/app/assets/javascripts/admin/lte/app.js +758 -0
- data/app/assets/javascripts/admin/modal.js +76 -22
- data/app/assets/javascripts/admin/nav-menu.js +98 -39
- data/app/assets/javascripts/admin/post.js +28 -29
- data/app/assets/javascripts/admin/tinymce/skins/lightgray/content.min.css.scss +1 -1
- data/app/assets/javascripts/admin/tinymce/tinymce.min.js +11 -11
- data/app/assets/javascripts/admin/translator.js +9 -7
- data/app/assets/javascripts/admin/widgets.js +1 -0
- data/app/assets/stylesheets/admin/admin-basic-manifest.css +15 -0
- data/app/assets/stylesheets/admin/admin-manifest.css +7 -11
- data/app/assets/stylesheets/admin/bootstrap-datepicker.css.scss +472 -0
- data/app/assets/stylesheets/admin/bootstrap-datetimepicker.css.scss +339 -0
- data/app/assets/stylesheets/admin/colorpicker.css.scss +95 -0
- data/app/assets/stylesheets/admin/custom_admin.css.scss +160 -0
- data/app/assets/stylesheets/admin/elfinder-manifest.css +1 -1
- data/app/assets/stylesheets/admin/grid-editor.css.scss +14 -299
- data/app/assets/stylesheets/admin/lte/admin.css.scss +4747 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-black-light.css +176 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-black.css +154 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-blue-light.css +167 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-blue.css +142 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-green-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-green.css +134 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-purple-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-purple.css +134 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-red-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-red.css +134 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-yellow-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-yellow.css +134 -0
- data/app/assets/stylesheets/admin/nav-menu.css.scss +33 -0
- data/app/controllers/admin/appearances/nav_menus_controller.rb +13 -10
- data/app/controllers/admin/appearances/themes_controller.rb +1 -2
- data/app/controllers/admin/appearances_controller.rb +0 -4
- data/app/controllers/admin/categories_controller.rb +9 -15
- data/app/controllers/admin/comments_controller.rb +8 -14
- data/app/controllers/admin/grid_editor_controller.rb +55 -0
- data/app/controllers/admin/installers_controller.rb +1 -1
- data/app/controllers/admin/media_controller.rb +1 -3
- data/app/controllers/admin/plugins_controller.rb +2 -2
- data/app/controllers/admin/post_tags_controller.rb +9 -18
- data/app/controllers/admin/posts/drafts_controller.rb +1 -9
- data/app/controllers/admin/posts_controller.rb +12 -15
- data/app/controllers/admin/sessions_controller.rb +6 -7
- data/app/controllers/admin/settings/custom_fields_controller.rb +4 -9
- data/app/controllers/admin/settings/post_types_controller.rb +6 -16
- data/app/controllers/admin/settings/sites_controller.rb +5 -7
- data/app/controllers/admin/settings_controller.rb +0 -4
- data/app/controllers/admin/user_roles_controller.rb +8 -8
- data/app/controllers/admin/users_controller.rb +8 -9
- data/app/controllers/admin_controller.rb +4 -5
- data/app/controllers/apps/plugins_admin_controller.rb +3 -3
- data/app/controllers/apps/plugins_front_controller.rb +2 -2
- data/app/controllers/apps/themes_admin_controller.rb +2 -2
- data/app/controllers/apps/themes_front_controller.rb +2 -2
- data/app/controllers/camaleon_controller.rb +0 -1
- data/app/controllers/concerns/frontend_concern.rb +1 -2
- data/app/controllers/frontend_controller.rb +25 -9
- data/app/decorators/category_decorator.rb +0 -1
- data/app/decorators/custom_field_decorator.rb +0 -1
- data/app/decorators/custom_fields_concern.rb +9 -3
- data/app/decorators/post_comment_decorator.rb +0 -1
- data/app/decorators/post_decorator.rb +10 -4
- data/app/decorators/post_tag_decorator.rb +0 -1
- data/app/decorators/post_type_decorator.rb +0 -1
- data/app/decorators/site_decorator.rb +35 -11
- data/app/decorators/term_taxonomy_decorator.rb +1 -3
- data/app/decorators/theme_decorator.rb +0 -1
- data/app/decorators/user_decorator.rb +7 -5
- data/app/decorators/widget_decorator.rb +0 -1
- data/app/helpers/admin/application_helper.rb +14 -0
- data/app/helpers/admin/menus_helper.rb +8 -8
- data/app/helpers/camaleon_helper.rb +10 -3
- data/app/helpers/captcha_helper.rb +2 -2
- data/app/helpers/frontend/application_helper.rb +0 -1
- data/app/helpers/frontend/nav_menu_helper.rb +2 -1
- data/app/helpers/frontend/seo_helper.rb +1 -2
- data/app/helpers/frontend/site_helper.rb +4 -4
- data/app/helpers/hooks_helper.rb +2 -5
- data/app/helpers/html_helper.rb +9 -7
- data/app/helpers/plugins_helper.rb +34 -8
- data/app/helpers/session_helper.rb +1 -2
- data/app/helpers/short_code_helper.rb +91 -10
- data/app/helpers/site_helper.rb +17 -8
- data/app/helpers/theme_helper.rb +34 -7
- data/app/helpers/uploader_helper.rb +6 -2
- data/app/mailers/html_mailer.rb +15 -6
- data/app/models/category.rb +2 -1
- data/app/models/concerns/custom_fields_read.rb +14 -3
- data/app/models/concerns/metas.rb +7 -4
- data/app/models/custom_field_group.rb +3 -0
- data/app/models/{concerns/metas_saved.rb → grid_template.rb} +7 -2
- data/app/models/meta.rb +0 -1
- data/app/models/nav_menu.rb +15 -1
- data/app/models/nav_menu_item.rb +10 -0
- data/app/models/post.rb +100 -6
- data/app/models/post_comment.rb +6 -0
- data/app/models/post_default.rb +9 -8
- data/app/models/post_relationship.rb +2 -0
- data/app/models/post_type.rb +36 -24
- data/app/models/site.rb +7 -16
- data/app/models/term_taxonomy.rb +3 -2
- data/app/models/theme.rb +5 -0
- data/app/models/widget/assigned.rb +3 -2
- data/app/views/admin/appearances/nav_menus/_custom_fields.html.erb +6 -0
- data/app/views/admin/appearances/{_external_menu.html.erb → nav_menus/_external_menu.html.erb} +8 -10
- data/app/views/admin/appearances/nav_menus/_menu_form.html.erb +35 -0
- data/app/views/admin/appearances/nav_menus/_menu_list.html.erb +22 -0
- data/app/views/admin/appearances/nav_menus/index.html.erb +110 -0
- data/app/views/admin/appearances/themes/index.html.erb +4 -3
- data/app/views/admin/appearances/widgets/main/_sidebar.html.erb +29 -0
- data/app/views/admin/appearances/widgets/main/form.html.erb +1 -1
- data/app/views/admin/appearances/widgets/main/index.html.erb +19 -41
- data/app/views/admin/categories/edit.html.erb +2 -6
- data/app/views/admin/categories/index.html.erb +7 -11
- data/app/views/admin/comments/form.html.erb +4 -7
- data/app/views/admin/comments/index.html.erb +24 -41
- data/app/views/admin/comments/reply.html.erb +9 -10
- data/app/views/admin/grid_editor/form.html.erb +31 -0
- data/app/views/admin/grid_editor/index.html.erb +29 -0
- data/app/views/admin/media/index.html.erb +3 -15
- data/app/views/admin/plugins/_plugins_list.html.erb +1 -2
- data/app/views/admin/post_tags/edit.html.erb +2 -6
- data/app/views/admin/post_tags/index.html.erb +3 -8
- data/app/views/admin/posts/_sidebar.html.erb +136 -0
- data/app/views/admin/posts/form.html.erb +87 -281
- data/app/views/admin/posts/index.html.erb +89 -104
- data/app/views/admin/sessions/forgot.html.erb +7 -13
- data/app/views/admin/sessions/login.html.erb +21 -11
- data/app/views/admin/sessions/register.html.erb +3 -6
- data/app/views/admin/settings/custom_fields/_meta_data.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/_render.html.erb +6 -14
- data/app/views/admin/settings/custom_fields/fields/audio.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/field_attrs.html.erb +3 -5
- data/app/views/admin/settings/custom_fields/fields/file.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/image.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/posts.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/select.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/users.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/video.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/form.html.erb +11 -9
- data/app/views/admin/settings/custom_fields/get_items.html.erb +3 -6
- data/app/views/admin/settings/custom_fields/index.html.erb +3 -10
- data/app/views/admin/settings/languages.html.erb +2 -10
- data/app/views/admin/settings/post_types/_form.html.erb +1 -1
- data/app/views/admin/settings/post_types/edit.html.erb +2 -6
- data/app/views/admin/settings/post_types/index.html.erb +4 -12
- data/app/views/admin/settings/site.html.erb +143 -149
- data/app/views/admin/settings/sites/form.html.erb +4 -19
- data/app/views/admin/settings/sites/index.html.erb +8 -9
- data/app/views/admin/taxonomy/index.html.erb +1 -1
- data/app/views/admin/user_roles/form.html.erb +2 -3
- data/app/views/admin/user_roles/index.html.erb +2 -8
- data/app/views/admin/users/form.html.erb +14 -9
- data/app/views/admin/users/index.html.erb +3 -8
- data/app/views/admin/users/profile_edit.html.erb +21 -14
- data/app/views/default_theme/custom_fields/audio.html.erb +3 -0
- data/app/views/default_theme/custom_fields/checkbox.html.erb +3 -0
- data/app/views/default_theme/custom_fields/checkboxes.html.erb +3 -0
- data/app/views/default_theme/custom_fields/colorpicker.html.erb +3 -0
- data/app/views/default_theme/custom_fields/date.html.erb +3 -0
- data/app/views/default_theme/custom_fields/editor.html.erb +3 -0
- data/app/views/default_theme/custom_fields/email.html.erb +3 -0
- data/app/views/default_theme/custom_fields/field_attrs.html.erb +3 -0
- data/app/views/default_theme/custom_fields/file.html.erb +3 -0
- data/app/views/default_theme/custom_fields/image.html.erb +3 -0
- data/app/views/default_theme/custom_fields/numeric.html.erb +3 -0
- data/app/views/default_theme/custom_fields/phone.html.erb +3 -0
- data/app/views/default_theme/custom_fields/posts.html.erb +3 -0
- data/app/views/default_theme/custom_fields/radio.html.erb +3 -0
- data/app/views/default_theme/custom_fields/select.html.erb +3 -0
- data/app/views/default_theme/custom_fields/select_eval.html.erb +3 -0
- data/app/views/default_theme/custom_fields/text_area.html.erb +3 -0
- data/app/views/default_theme/custom_fields/text_box.html.erb +3 -0
- data/app/views/default_theme/custom_fields/url.html.erb +3 -0
- data/app/views/default_theme/custom_fields/users.html.erb +3 -0
- data/app/views/default_theme/custom_fields/video.html.erb +3 -0
- data/app/views/default_theme/layouts/index.html.erb +2 -2
- data/app/views/default_theme/{post.html.erb → single.html.erb} +1 -1
- data/app/views/default_theme/{post.rss.builder → single.rss.builder} +0 -0
- data/app/views/layouts/admin.html.erb +35 -133
- data/app/views/layouts/admin/_flash_messages.html.erb +1 -15
- data/app/views/layouts/admin/_footer.html.erb +6 -0
- data/app/views/layouts/admin/_header.html.erb +51 -0
- data/app/views/layouts/admin/_sidebar.html.erb +21 -30
- data/app/views/layouts/admin/installer.html.erb +2 -2
- data/app/views/layouts/login.html.erb +15 -33
- data/config/initializers/active_record_extension.rb +14 -2
- data/config/initializers/assets.rb +21 -7
- data/config/initializers/page_caching.rb +1 -2
- data/config/locales/admin/en.yml +17 -9
- data/config/locales/admin/es.yml +8 -3
- data/config/locales/admin/it.yml +4 -2
- data/config/locales/admin/js.yml +147 -0
- data/config/routes/admin.rb +4 -4
- data/config/routes/frontend.rb +2 -2
- data/config/system.json +1 -0
- data/db/migrate/20150926095310_rename_column_posts.rb +18 -0
- data/lib/camaleon_cms.rb +1 -1
- data/lib/camaleon_cms/engine.rb +17 -2
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/generators/camaleon_cms/gem_plugin_generator.rb +122 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/admin_controller.rb +8 -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 +22 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +12 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/index.html.erb +2 -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 +21 -0
- data/lib/generators/camaleon_cms/install_generator.rb +1 -2
- data/lib/generators/camaleon_cms/install_template/plugin_routes.rb +1 -10
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/config/config.json +5 -5
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/main_helper.rb +6 -5
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/views/layouts/index.html.erb +2 -2
- data/lib/plugin_routes.rb +40 -2
- metadata +257 -22
- data/app/assets/stylesheets/admin/animate/animate.min.css +0 -6
- data/app/assets/stylesheets/admin/bootstrap/bootstrap-datetimepicker.css.scss +0 -339
- data/app/assets/stylesheets/admin/bootstrap/bootstrap.min.css +0 -5
- data/app/assets/stylesheets/admin/core.scss +0 -349
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.eot +0 -0
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.svg +0 -1831
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.ttf +0 -0
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.woff +0 -0
- data/app/assets/stylesheets/admin/nav-menu.css +0 -54
- data/app/assets/stylesheets/admin/theme-default.scss +0 -8462
- data/app/models/concerns/site_public.rb +0 -23
- data/app/views/admin/appearances/menu.html.erb +0 -199
- data/lib/Gemfile +0 -25
@@ -9,7 +9,6 @@
|
|
9
9
|
class Admin::UsersController < AdminController
|
10
10
|
before_action :validate_role, except: [:profile, :profile_edit]
|
11
11
|
before_action :set_user, only: ['show','edit','update','destroy']
|
12
|
-
#http_basic_authenticate_with name: "dhh", password: "secret", except: [:index, :show]
|
13
12
|
|
14
13
|
def index
|
15
14
|
@users = current_site.users.paginate(:page => params[:page], :per_page => current_site.admin_per_page)
|
@@ -104,17 +103,17 @@ class Admin::UsersController < AdminController
|
|
104
103
|
end
|
105
104
|
|
106
105
|
private
|
106
|
+
|
107
107
|
def validate_role
|
108
108
|
authorize! :manager, :users
|
109
109
|
end
|
110
|
-
def set_user
|
111
|
-
begin
|
112
|
-
@user = current_site.users.find(params[:id])
|
113
|
-
rescue
|
114
|
-
flash[:error] = t('admin.users.message.error')
|
115
|
-
redirect_to admin_path
|
116
|
-
end
|
117
110
|
|
111
|
+
def set_user
|
112
|
+
begin
|
113
|
+
@user = current_site.users.find(params[:id])
|
114
|
+
rescue
|
115
|
+
flash[:error] = t('admin.users.message.error')
|
116
|
+
redirect_to admin_path
|
117
|
+
end
|
118
118
|
end
|
119
|
-
|
120
119
|
end
|
@@ -19,15 +19,15 @@ class AdminController < CamaleonController
|
|
19
19
|
before_action :admin_logged_actions
|
20
20
|
before_action :admin_before_hooks
|
21
21
|
after_action :admin_after_hooks
|
22
|
+
# layout Proc.new { |controller| request.headers["X-XHR-Referer"] ? "admin/_ajax" : 'admin' }
|
22
23
|
|
23
|
-
# render admin
|
24
|
+
# render admin dashboard
|
24
25
|
def index
|
25
|
-
|
26
26
|
end
|
27
27
|
|
28
28
|
# render admin dashboard
|
29
29
|
def dashboard
|
30
|
-
|
30
|
+
render "admin/dashboard/index"
|
31
31
|
end
|
32
32
|
|
33
33
|
private
|
@@ -53,5 +53,4 @@ class AdminController < CamaleonController
|
|
53
53
|
def admin_logged_actions
|
54
54
|
admin_menus_add_commons unless request.xhr?
|
55
55
|
end
|
56
|
-
|
57
|
-
end
|
56
|
+
end
|
@@ -10,11 +10,11 @@ class Apps::PluginsAdminController < AdminController
|
|
10
10
|
before_action :init_plugin
|
11
11
|
|
12
12
|
private
|
13
|
+
|
13
14
|
def init_plugin
|
14
15
|
plugin_name = params[:controller].split("/")[1]
|
15
16
|
@plugin = current_site.plugins.where(slug: plugin_name).first
|
16
17
|
return render_error(404) unless @plugin.active?
|
17
|
-
lookup_context.prefixes.prepend(params[:controller].sub("plugins/#{plugin_name}", "#{plugin_name}/views"))
|
18
|
+
lookup_context.prefixes.prepend(params[:controller].sub("plugins/#{plugin_name}", "#{plugin_name}/views")) if !@plugin.settings["gem_mode"].present?
|
18
19
|
end
|
19
|
-
|
20
|
-
end
|
20
|
+
end
|
@@ -10,11 +10,11 @@ class Apps::PluginsFrontController < FrontendController
|
|
10
10
|
before_action :init_plugin
|
11
11
|
|
12
12
|
private
|
13
|
+
|
13
14
|
def init_plugin
|
14
15
|
plugin_name = params[:controller].split("/")[1]
|
15
16
|
@plugin = current_site.plugins.where(slug: plugin_name).first
|
16
17
|
return render_error(404) unless @plugin.active?
|
17
18
|
lookup_context.prefixes.prepend(params[:controller].sub("plugins/#{plugin_name}", "#{plugin_name}/views"))
|
18
19
|
end
|
19
|
-
|
20
|
-
end
|
20
|
+
end
|
@@ -10,11 +10,11 @@ class Apps::ThemesAdminController < AdminController
|
|
10
10
|
before_action :init_theme
|
11
11
|
|
12
12
|
private
|
13
|
+
|
13
14
|
def init_theme
|
14
15
|
theme_name = params[:controller].split("/")[1]
|
15
16
|
@theme = current_theme
|
16
17
|
return render_error(404) unless current_theme.slug == theme_name
|
17
18
|
lookup_context.prefixes.prepend(params[:controller].sub("themes/#{theme_name}", "#{theme_name}/views"))
|
18
19
|
end
|
19
|
-
|
20
|
-
end
|
20
|
+
end
|
@@ -10,11 +10,11 @@ class Apps::ThemesFrontController < FrontendController
|
|
10
10
|
before_action :init_theme
|
11
11
|
|
12
12
|
private
|
13
|
+
|
13
14
|
def init_theme
|
14
15
|
theme_name = params[:controller].split("/")[1]
|
15
16
|
@theme = current_theme
|
16
17
|
return render_error(404) unless current_theme.slug == theme_name
|
17
18
|
lookup_context.prefixes.prepend(params[:controller].sub("themes/#{theme_name}", "#{theme_name}/views"))
|
18
19
|
end
|
19
|
-
|
20
|
-
end
|
20
|
+
end
|
@@ -41,7 +41,12 @@ class FrontendController < CamaleonController
|
|
41
41
|
init_seo(@category)
|
42
42
|
@children = @category.children.no_empty.decorate
|
43
43
|
@posts = @category.the_posts.paginate(:page => params[:page], :per_page => current_site.front_per_page).eager_load(:metas)
|
44
|
-
|
44
|
+
if lookup_context.template_exists?(@category.the_slug, "categories")
|
45
|
+
r_file = "categories/#{@category.the_slug}"
|
46
|
+
else
|
47
|
+
r_file = "category"
|
48
|
+
end
|
49
|
+
r = {category: @category, layout: (self.send :_layout), render: r_file}; hooks_run("on_render_category", r)
|
45
50
|
render r[:render], layout: r[:layout]
|
46
51
|
end
|
47
52
|
|
@@ -56,7 +61,12 @@ class FrontendController < CamaleonController
|
|
56
61
|
@posts = @post_type.the_posts.paginate(:page => params[:page], :per_page => current_site.front_per_page).eager_load(:metas)
|
57
62
|
@categories = @post_type.categories.no_empty.eager_load(:metas).decorate
|
58
63
|
@post_tags = @post_type.post_tags.eager_load(:metas)
|
59
|
-
|
64
|
+
if lookup_context.template_exists?(@post_type.the_slug, "post_types")
|
65
|
+
r_file = "post_types/#{@post_type.the_slug}"
|
66
|
+
else
|
67
|
+
r_file = "post_type"
|
68
|
+
end
|
69
|
+
r = {post_type: @post_type, layout: (self.send :_layout), render: r_file}; hooks_run("on_render_post_type", r)
|
60
70
|
render r[:render], layout: r[:layout]
|
61
71
|
end
|
62
72
|
|
@@ -70,7 +80,12 @@ class FrontendController < CamaleonController
|
|
70
80
|
end
|
71
81
|
init_seo(@post_tag)
|
72
82
|
@posts = @post_tag.the_posts.paginate(:page => params[:page], :per_page => current_site.front_per_page).eager_load(:metas)
|
73
|
-
|
83
|
+
if lookup_context.template_exists?(@post_tag.the_slug, "post_tags")
|
84
|
+
r_file = "post_tags/#{@post_tag.the_slug}"
|
85
|
+
else
|
86
|
+
r_file = "post_tag"
|
87
|
+
end
|
88
|
+
r = {post_tag: @post_tag, layout: (self.send :_layout), render: r_file}; hooks_run("on_render_post_tag", r)
|
74
89
|
render r[:render], layout: r[:layout]
|
75
90
|
end
|
76
91
|
|
@@ -148,6 +163,7 @@ class FrontendController < CamaleonController
|
|
148
163
|
@post_type = @post.the_post_type
|
149
164
|
@comments = @post.the_comments
|
150
165
|
@categories = @post.the_categories
|
166
|
+
@post.increment_visits!
|
151
167
|
home_page = @_site_options[:home_page] rescue nil
|
152
168
|
r_file = ""
|
153
169
|
if lookup_context.template_exists?("page_#{@post.id}")
|
@@ -158,13 +174,14 @@ class FrontendController < CamaleonController
|
|
158
174
|
r_file = "index"
|
159
175
|
elsif lookup_context.template_exists?("#{@post_type.slug}")
|
160
176
|
r_file = "#{@post_type.slug}"
|
161
|
-
elsif lookup_context.template_exists?("single")
|
162
|
-
r_file = "single"
|
163
177
|
else
|
164
|
-
r_file = "
|
178
|
+
r_file = "single"
|
165
179
|
end
|
166
180
|
|
167
|
-
|
181
|
+
layout_ = self.send :_layout
|
182
|
+
meta_layout = @post.get_meta("layout")
|
183
|
+
layout_ = meta_layout if meta_layout.present? && lookup_context.template_exists?("layouts/#{meta_layout}")
|
184
|
+
r = {post: @post, post_type: @post_type, layout: layout_, render: r_file}
|
168
185
|
hooks_run("on_render_post", r) if from_url
|
169
186
|
render r[:render], layout: r[:layout]
|
170
187
|
end
|
@@ -228,5 +245,4 @@ class FrontendController < CamaleonController
|
|
228
245
|
options
|
229
246
|
end
|
230
247
|
end
|
231
|
-
|
232
|
-
end
|
248
|
+
end
|
@@ -16,8 +16,14 @@ module CustomFieldsConcern
|
|
16
16
|
|
17
17
|
# return custom field content with key field_key
|
18
18
|
# translated and short codes evaluated like the content
|
19
|
-
|
20
|
-
|
19
|
+
# default_val: default value returned when this field was not registered
|
20
|
+
def the_field(field_key, default_val = '')
|
21
|
+
h.do_shortcode(object.get_field(field_key, default_val).to_s.translate(@_deco_locale), object)
|
22
|
+
end
|
23
|
+
|
24
|
+
# the same as the_field(..), but this return default value if there is not present
|
25
|
+
def the_field!(field_key, default_val = '')
|
26
|
+
h.do_shortcode(object.get_field!(field_key, default_val).to_s.translate(@_deco_locale), object)
|
21
27
|
end
|
22
28
|
|
23
29
|
# return custom field contents with key field_key
|
@@ -25,7 +31,7 @@ module CustomFieldsConcern
|
|
25
31
|
# this is for multiple values
|
26
32
|
def the_fields(field_key)
|
27
33
|
r = []
|
28
|
-
object.
|
34
|
+
object.get_fields(field_key).each do |text|
|
29
35
|
r << h.do_shortcode(text.to_s.translate(@_deco_locale), object)
|
30
36
|
end
|
31
37
|
r
|
@@ -20,7 +20,8 @@ class PostDecorator < ApplicationDecorator
|
|
20
20
|
# return the excerpt of this post
|
21
21
|
def the_excerpt(qty_chars = 200)
|
22
22
|
excerpt = object.meta[:summary].to_s.translate(get_locale)
|
23
|
-
r = {content: (excerpt.present? ? excerpt : object.
|
23
|
+
# r = {content: (excerpt.present? ? excerpt : object.content_filtered.to_s.translate(get_locale).strip_tags.gsub(/ |\n/, " ").truncate(qty_chars)), post: object}
|
24
|
+
r = {content: (excerpt.present? ? excerpt : h.cama_strip_shortcodes(object.content_filtered.to_s.translate(get_locale).strip_tags.gsub(/ |\n/, " ").truncate(qty_chars))), post: object}
|
24
25
|
h.hooks_run("post_the_excerpt", r)
|
25
26
|
r[:content]
|
26
27
|
end
|
@@ -76,8 +77,9 @@ class PostDecorator < ApplicationDecorator
|
|
76
77
|
# return html link
|
77
78
|
# attrs: Hash of link tag attributes, sample: {id: "myid", class: "sss" }
|
78
79
|
def the_edit_link(title = nil, attrs = { })
|
80
|
+
return '' unless h.current_user.present?
|
79
81
|
attrs = {target: "_blank", style: "font-size:11px !important;cursor:pointer;"}.merge(attrs)
|
80
|
-
h.link_to("→ #{title || h.ct("edit")}", the_edit_url,
|
82
|
+
h.link_to("→ #{title || h.ct("edit")}".html_safe, the_edit_url, attrs)
|
81
83
|
end
|
82
84
|
|
83
85
|
# show thumbnail image as html
|
@@ -115,6 +117,11 @@ class PostDecorator < ApplicationDecorator
|
|
115
117
|
"<span class='label label-#{color} label-form'>#{status.titleize}</span>"
|
116
118
|
end
|
117
119
|
|
120
|
+
# return the user object who created this post
|
121
|
+
def the_author
|
122
|
+
object.author.decorate
|
123
|
+
end
|
124
|
+
|
118
125
|
# return all categories assigned for this post filtered by permissions + hidden posts + roles + etc...
|
119
126
|
def the_categories
|
120
127
|
object.categories
|
@@ -139,7 +146,7 @@ class PostDecorator < ApplicationDecorator
|
|
139
146
|
|
140
147
|
# check if the post can be commented
|
141
148
|
def can_commented?
|
142
|
-
object.
|
149
|
+
object.manage_comments?
|
143
150
|
end
|
144
151
|
|
145
152
|
|
@@ -166,5 +173,4 @@ class PostDecorator < ApplicationDecorator
|
|
166
173
|
def cache_prefix(key = "")
|
167
174
|
"#{h.current_site.cache_prefix}/post#{object.id}#{"/#{key}" if key.present?}"
|
168
175
|
end
|
169
|
-
|
170
176
|
end
|
@@ -24,7 +24,7 @@ class SiteDecorator < TermTaxonomyDecorator
|
|
24
24
|
end
|
25
25
|
|
26
26
|
# return all contents from this site registered for post_type = slug (filter visibility, hidden, expired, ...)
|
27
|
-
# slug_or_id: slug or id of the post_type or array of slugs, default 'post'
|
27
|
+
# slug_or_id: slug or id of the post_type or array of slugs of post_types, default 'post'
|
28
28
|
def the_contents(slug_or_id = "post")
|
29
29
|
return h.verify_front_visibility(object.posts.where("term_taxonomy.id = ?", slug_or_id)) if slug_or_id.is_a?(Integer)
|
30
30
|
return h.verify_front_visibility(object.posts.where("term_taxonomy.slug = ?", slug_or_id)) if slug_or_id.is_a?(String)
|
@@ -42,12 +42,31 @@ class SiteDecorator < TermTaxonomyDecorator
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
# return
|
46
|
-
|
47
|
-
|
45
|
+
# return the post with id or slug equal to slug_or_id
|
46
|
+
# slug_or_id: (String) for post slug
|
47
|
+
# slug_or_id: (Integer) for post id
|
48
|
+
# slug_or_id: (Array) array of post ids, return multiple posts
|
49
|
+
# return post model or nil
|
50
|
+
def the_post(slug_or_id)
|
51
|
+
post = self.the_posts.find(slug_or_id) rescue nil if slug_or_id.is_a?(Integer) # id
|
52
|
+
post = self.the_posts.find(slug_or_id) rescue nil if slug_or_id.is_a?(Array) # id
|
53
|
+
post = self.the_posts.find_by_slug(slug_or_id) if slug_or_id.is_a?(String) # id
|
54
|
+
post.present? ? post.decorate : nil
|
48
55
|
end
|
49
56
|
|
50
|
-
# return
|
57
|
+
# return a collection of categories
|
58
|
+
# Arguments:
|
59
|
+
# slug_or_id: string or integer
|
60
|
+
# return:
|
61
|
+
# slug_or_id: nil => return all main_categories for this site
|
62
|
+
# slug_or_id: integer => return all main categories of the post_type with id = slug_or_id
|
63
|
+
# slug_or_id: string => return all main categories of the post_type with slug = slug_or_id
|
64
|
+
def the_categories(slug_or_id = nil)
|
65
|
+
return the_post_type(slug_or_id).the_categories if slug_or_id.present?
|
66
|
+
return object.categories unless slug_or_id.present?
|
67
|
+
end
|
68
|
+
|
69
|
+
# return the category object with id or slug = slug_or_id from this site
|
51
70
|
def the_category(slug_or_id)
|
52
71
|
return the_full_categories.where(id: slug_or_id).first if slug_or_id.is_a?(Integer)
|
53
72
|
return the_full_categories.find_by_slug(slug_or_id) if slug_or_id.is_a?(String)
|
@@ -63,14 +82,21 @@ class SiteDecorator < TermTaxonomyDecorator
|
|
63
82
|
object.post_tags
|
64
83
|
end
|
65
84
|
|
66
|
-
# return all post types for
|
85
|
+
# return all post types for this site
|
67
86
|
def the_post_types
|
68
87
|
object.post_types.eager_load(:metas)
|
69
88
|
end
|
70
89
|
|
71
|
-
# return
|
72
|
-
|
73
|
-
|
90
|
+
# return a post_type object with id or slug = slug_or_id
|
91
|
+
# Arguments:
|
92
|
+
# slug_or_id: string or integer
|
93
|
+
# return:
|
94
|
+
# slug_or_id: nil => return all main_categories for this site
|
95
|
+
# slug_or_id: integer => return all main categories of the post_type with id = slug_or_id
|
96
|
+
# slug_or_id: string => return all main categories of the post_type with slug = slug_or_id
|
97
|
+
def the_post_type(slug_or_id)
|
98
|
+
return object.post_types.find_by_slug(slug_or_id).decorate rescue nil if slug_or_id.is_a?(String)
|
99
|
+
return object.post_types.find(slug_or_id).decorate rescue nil if slug_or_id.is_a?(Integer)
|
74
100
|
end
|
75
101
|
|
76
102
|
# draw languages configured for this site
|
@@ -132,6 +158,4 @@ class SiteDecorator < TermTaxonomyDecorator
|
|
132
158
|
def manage_sites?
|
133
159
|
self.main_site? && h.current_user.admin?
|
134
160
|
end
|
135
|
-
|
136
|
-
|
137
161
|
end
|
@@ -22,7 +22,6 @@ class TermTaxonomyDecorator < ApplicationDecorator
|
|
22
22
|
object.slug.translate(get_locale)
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
25
|
# return the content for current locale + shortcodes executed
|
27
26
|
def the_content
|
28
27
|
r = {content: object.description.to_s.translate(get_locale), object: object}
|
@@ -82,7 +81,7 @@ class TermTaxonomyDecorator < ApplicationDecorator
|
|
82
81
|
# attrs: Hash of link tag attributes, sample: {id: "myid", class: "sss" }
|
83
82
|
def the_edit_link(title = nil, attrs = { })
|
84
83
|
attrs = {target: "_blank", style: "font-size:11px !important;cursor:pointer;"}.merge(attrs)
|
85
|
-
h.link_to("→ #{title || h.ct("edit")}", the_edit_url,
|
84
|
+
h.link_to("→ #{title || h.ct("edit")}".html_safe, the_edit_url, attrs)
|
86
85
|
end
|
87
86
|
|
88
87
|
# cache identifier, the format is: [current-site-prefix]/[object-id]-[object-last_updated]/[current locale]
|
@@ -101,5 +100,4 @@ class TermTaxonomyDecorator < ApplicationDecorator
|
|
101
100
|
end
|
102
101
|
res
|
103
102
|
end
|
104
|
-
|
105
103
|
end
|
@@ -12,10 +12,9 @@ class UserDecorator < ApplicationDecorator
|
|
12
12
|
|
13
13
|
# return the identifier
|
14
14
|
def the_username
|
15
|
-
|
15
|
+
object.username
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
18
|
# return the fullname
|
20
19
|
def the_name
|
21
20
|
object.fullname
|
@@ -28,7 +27,12 @@ class UserDecorator < ApplicationDecorator
|
|
28
27
|
|
29
28
|
# return the avatar for this user, default: assets/admin/img/no_image.jpg
|
30
29
|
def the_avatar
|
31
|
-
|
30
|
+
avatar_exists = File.exist? h.url_to_file_path(object.meta[:avatar])
|
31
|
+
if object.meta[:avatar].present? && avatar_exists
|
32
|
+
object.meta[:avatar]
|
33
|
+
else
|
34
|
+
h.asset_url("admin/img/no_image.jpg")
|
35
|
+
end
|
32
36
|
end
|
33
37
|
|
34
38
|
# return the slogan for this user, default: Hello World
|
@@ -62,6 +66,4 @@ class UserDecorator < ApplicationDecorator
|
|
62
66
|
def cache_prefix(key = "")
|
63
67
|
"#{h.current_site.cache_prefix}/user#{object.id}#{"/#{key}" if key.present?}"
|
64
68
|
end
|
65
|
-
|
66
|
-
|
67
69
|
end
|