camaleon_cms 2.0.4.1 → 2.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/app/apps/plugins/contact_form/contact_form_helper.rb +1 -1
- data/app/apps/plugins/contact_form/views/forms_shorcode.html.erb +1 -0
- data/app/apps/plugins/front_cache/front_cache_helper.rb +1 -1
- data/app/apps/themes/camaleon_first/assets/css/main.css +1 -0
- data/app/apps/themes/camaleon_first/views/layouts/index.html.erb +0 -1
- data/app/apps/themes/new/assets/css/main.css +1 -0
- data/app/apps/themes/new/views/layouts/index.html.erb +0 -1
- data/app/assets/javascripts/camaleon_cms/admin/_libraries.js +15 -13
- data/app/assets/javascripts/camaleon_cms/admin/_post.js +2 -3
- data/app/assets/javascripts/camaleon_cms/admin/uploader/_jquery.form.js +1277 -0
- data/app/assets/javascripts/camaleon_cms/admin/uploader/uploader_manifest.js +1 -0
- data/app/assets/stylesheets/camaleon_cms/admin/admin-basic-manifest.css +1 -0
- data/app/assets/stylesheets/camaleon_cms/admin/admin-manifest.css +1 -0
- data/app/assets/stylesheets/camaleon_cms/admin/uploader/_uploadfile.css.scss +6 -8
- data/app/controllers/camaleon_cms/admin/posts/drafts_controller.rb +8 -5
- data/app/controllers/camaleon_cms/admin/sessions_controller.rb +31 -4
- data/app/controllers/camaleon_cms/camaleon_controller.rb +1 -0
- data/app/controllers/camaleon_cms/frontend_controller.rb +2 -1
- data/app/decorators/camaleon_cms/application_decorator.rb +3 -2
- data/app/decorators/camaleon_cms/custom_field_decorator.rb +3 -8
- data/app/decorators/camaleon_cms/post_decorator.rb +8 -8
- data/app/decorators/camaleon_cms/term_taxonomy_decorator.rb +2 -2
- data/app/helpers/camaleon_cms/admin/menus_helper.rb +2 -2
- data/app/helpers/camaleon_cms/camaleon_helper.rb +2 -2
- data/app/helpers/camaleon_cms/email_helper.rb +27 -0
- data/app/helpers/camaleon_cms/frontend/seo_helper.rb +17 -20
- data/app/helpers/camaleon_cms/frontend/site_helper.rb +6 -5
- data/app/helpers/camaleon_cms/html_helper.rb +21 -0
- data/app/helpers/camaleon_cms/plugins_helper.rb +2 -1
- data/app/helpers/camaleon_cms/session_helper.rb +2 -1
- data/app/mailers/camaleon_cms/html_mailer.rb +14 -13
- data/app/models/camaleon_cms/nav_menu_item.rb +4 -6
- data/app/models/camaleon_cms/site.rb +5 -0
- data/app/models/camaleon_cms/term_taxonomy.rb +0 -3
- data/app/models/camaleon_cms/user.rb +6 -1
- data/app/models/camaleon_cms/user_relationship.rb +0 -2
- data/app/models/camaleon_cms/user_role.rb +1 -0
- data/app/models/concerns/camaleon_cms/custom_fields_read.rb +1 -0
- data/app/views/camaleon_cms/admin/media/index.html.erb +31 -14
- data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +2 -2
- data/app/views/camaleon_cms/admin/posts/form.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +4 -0
- data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +7 -0
- data/app/views/camaleon_cms/default_theme/layouts/index.html.erb +0 -1
- data/app/views/camaleon_cms/default_theme/partials/_render_custom_field.html.erb +1 -3
- data/app/views/camaleon_cms/html_mailer/confirm_email.html.erb +3 -0
- data/app/views/camaleon_cms/shortcode_templates/widget.html.erb +2 -2
- data/app/views/layouts/camaleon_cms/admin.html.erb +0 -1
- data/app/views/layouts/camaleon_cms/admin/_footer.html.erb +1 -1
- data/app/views/layouts/camaleon_cms/admin/installer.html.erb +0 -1
- data/app/views/layouts/camaleon_cms/login.html.erb +0 -1
- data/config/initializers/sass.rb +6 -6
- data/config/locales/camaleon_cms/admin/en.yml +10 -0
- data/config/locales/camaleon_cms/admin/es.yml +10 -0
- data/config/routes/admin.rb +1 -2
- data/config/routes/frontend.rb +2 -2
- data/db/migrate/20151212095328_add_confirm_token_to_users.rb +7 -0
- data/lib/camaleon_cms/engine.rb +1 -0
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/generators/camaleon_cms/gem_theme_template/app/assets/stylesheets/themes/my_plugin/main.css +1 -0
- data/lib/generators/camaleon_cms/gem_theme_template/app/views/themes/my_plugin/layouts/index.html.erb +0 -1
- data/lib/generators/camaleon_cms/theme_template/app/apps/themes/my_theme/assets/css/main.css +1 -0
- data/lib/generators/camaleon_cms/theme_template/app/apps/themes/my_theme/views/layouts/index.html.erb +0 -1
- metadata +20 -20
- data/public/docs/index.html +0 -70
- data/public/docs/swagger-ui/css/highlight.default.css +0 -135
- data/public/docs/swagger-ui/css/screen.css +0 -1070
- data/public/docs/swagger-ui/images/logo_small.png +0 -0
- data/public/docs/swagger-ui/images/throbber.gif +0 -0
- data/public/docs/swagger-ui/lib/backbone-min.js +0 -38
- data/public/docs/swagger-ui/lib/handlebars-1.0.0.js +0 -2278
- data/public/docs/swagger-ui/lib/highlight.7.3.pack.js +0 -1
- data/public/docs/swagger-ui/lib/jquery-1.8.0.min.js +0 -2
- data/public/docs/swagger-ui/lib/jquery.ba-bbq.min.js +0 -18
- data/public/docs/swagger-ui/lib/jquery.slideto.min.js +0 -1
- data/public/docs/swagger-ui/lib/jquery.wiggle.min.js +0 -8
- data/public/docs/swagger-ui/lib/shred.bundle.js +0 -2765
- data/public/docs/swagger-ui/lib/shred/content.js +0 -193
- data/public/docs/swagger-ui/lib/swagger.js +0 -1253
- data/public/docs/swagger-ui/lib/underscore-min.js +0 -32
- data/public/docs/swagger-ui/swagger-ui.js +0 -2039
- data/public/docs/swagger-ui/swagger-ui.min.js +0 -1
@@ -9,6 +9,7 @@
|
|
9
9
|
#encoding: utf-8
|
10
10
|
module CamaleonCms::HtmlHelper
|
11
11
|
def cama_html_helpers_init
|
12
|
+
@_pre_assets_content = [] #Assets contents before the libraries import
|
12
13
|
@_assets_libraries = {}
|
13
14
|
@_assets_content = []
|
14
15
|
end
|
@@ -33,6 +34,7 @@ module CamaleonCms::HtmlHelper
|
|
33
34
|
@_assets_libraries[key.to_sym] = library if library.present?
|
34
35
|
end
|
35
36
|
end
|
37
|
+
|
36
38
|
alias_method :add_asset_library, :cama_load_libraries
|
37
39
|
|
38
40
|
# add custom asset libraries (js, css or both) for the current request, also you can add extra css or js files for existent libraries
|
@@ -50,6 +52,7 @@ module CamaleonCms::HtmlHelper
|
|
50
52
|
end
|
51
53
|
end
|
52
54
|
end
|
55
|
+
|
53
56
|
alias_method :append_asset_libraries, :cama_load_custom_assets
|
54
57
|
|
55
58
|
# add asset content into custom assets
|
@@ -60,6 +63,19 @@ module CamaleonCms::HtmlHelper
|
|
60
63
|
@_assets_content << content
|
61
64
|
end
|
62
65
|
|
66
|
+
# add pre asset content into custom assets
|
67
|
+
# content may be: <script>alert()</script>
|
68
|
+
# content may be: <style>a{color: red;}</style>
|
69
|
+
# this will be printed before assets_library with <%raw cama_draw_pre_asset_contents %>
|
70
|
+
def append_pre_asset_content(content)
|
71
|
+
@_pre_assets_content << content
|
72
|
+
end
|
73
|
+
|
74
|
+
# return all scripts to be executed before import the js libraries(cama_draw_custom_assets)
|
75
|
+
def cama_draw_pre_asset_contents
|
76
|
+
(@_pre_assets_content || []).join('').html_safe
|
77
|
+
end
|
78
|
+
|
63
79
|
# return all js libraries added [aa.js, bb,js, ..]
|
64
80
|
# def get_assets_js
|
65
81
|
def cama_draw_custom_assets
|
@@ -116,4 +132,9 @@ module CamaleonCms::HtmlHelper
|
|
116
132
|
libs[:admin_intro] = {js: ['camaleon_cms/admin/introjs/intro.min'], css: ["camaleon_cms/admin/introjs/introjs.min"]}
|
117
133
|
@_cama_assets_libraries = libs
|
118
134
|
end
|
135
|
+
|
136
|
+
# execute translation for value if this value is like: t(admin.my_text) ==> My Text
|
137
|
+
def cama_print_i18n_value(value)
|
138
|
+
value.start_with?('t(') ? eval(value.sub('t(', 'I18n.t(')) : value
|
139
|
+
end
|
119
140
|
end
|
@@ -97,7 +97,8 @@ module CamaleonCms::PluginsHelper
|
|
97
97
|
# return plugin full asset path
|
98
98
|
# plugin_key: plugin name
|
99
99
|
# asset: (String) asset name
|
100
|
-
# sample: <script src="<%= plugin_asset_path("
|
100
|
+
# sample: <script src="<%= plugin_asset_path("admin.js") %>"></script> => /assets/plugins/my_plugin/admin-54505620f.js
|
101
|
+
# sample: <script src="<%= plugin_asset_path("admin.js", 'my_plugin') %>"></script> => /assets/plugins/my_plugin/admin-54505620f.js
|
101
102
|
def plugin_asset_path(asset, plugin_key = nil)
|
102
103
|
if plugin_key.present? && plugin_key.include?("/")
|
103
104
|
return plugin_asset_url(plugin_key, asset || self_plugin_key(1))
|
@@ -59,7 +59,8 @@ module CamaleonCms::SessionHelper
|
|
59
59
|
else
|
60
60
|
if @user.save
|
61
61
|
@user.set_meta_from_form(meta)
|
62
|
-
|
62
|
+
message = current_site.need_validate_email? ? t('camaleon_cms.admin.users.message.created_pending_validate_email') : t('camaleon_cms.admin.users.message.created')
|
63
|
+
r = {user: @user, message: message, redirect_url: cama_admin_login_path}; hooks_run('user_after_register', r)
|
63
64
|
{:result => true, :message => r[:message], :redirect_url => r[:redirect_url]}
|
64
65
|
else
|
65
66
|
{:result => false, :type => :no_saved}
|
@@ -14,11 +14,12 @@ class CamaleonCms::HtmlMailer < ActionMailer::Base
|
|
14
14
|
default from: "Camaleon CMS <owenperedo@gmail.com>"
|
15
15
|
after_action :set_delivery_options
|
16
16
|
|
17
|
-
def sender(email, subject='Hello', content='', from=nil, attachs=[], url_base='', current_site, template_name, layout_name)
|
17
|
+
def sender(email, subject='Hello', content='', from=nil, attachs=[], url_base='', current_site, template_name, layout_name, extra_data)
|
18
18
|
@subject = subject
|
19
19
|
@html = content
|
20
20
|
@url_base = url_base
|
21
21
|
@current_site = current_site
|
22
|
+
@extra_data = extra_data
|
22
23
|
|
23
24
|
mail_data = {to: email, subject: subject}
|
24
25
|
mail_data[:from] = from if from.present?
|
@@ -27,14 +28,14 @@ class CamaleonCms::HtmlMailer < ActionMailer::Base
|
|
27
28
|
mail_data[:from] = current_site.get_option("email_from")
|
28
29
|
mail_data[:cc] = current_site.get_option("email_cc")
|
29
30
|
mail_data[:delivery_method] = :smtp
|
30
|
-
mail_data[:delivery_method_options] = {
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
mail_data[:delivery_method_options] = {user_name: current_site.get_option("email_username"),
|
32
|
+
password: current_site.get_option("email_pass"),
|
33
|
+
address: current_site.get_option("email_server"),
|
34
|
+
port: current_site.get_option("email_port"),
|
35
|
+
domain: (current_site.the_url.to_s.parse_domain rescue "localhost"),
|
36
|
+
authentication: "plain",
|
37
|
+
enable_starttls_auto: true
|
38
|
+
}
|
38
39
|
end
|
39
40
|
|
40
41
|
views_dir = "app/apps/"
|
@@ -46,15 +47,15 @@ class CamaleonCms::HtmlMailer < ActionMailer::Base
|
|
46
47
|
lookup_context.prefixes.prepend("themes/#{theme.slug}/views") unless theme.settings["gem_mode"]
|
47
48
|
|
48
49
|
# run hook "email" to customize values
|
49
|
-
r = {template_name: template_name, layout_name: layout_name, mail_data: mail_data, files: attachs, format: "html"
|
50
|
+
r = {template_name: template_name, layout_name: layout_name, mail_data: mail_data, files: attachs, format: "html"}
|
50
51
|
hooks_run("email", r)
|
51
52
|
|
52
53
|
if r[:files].present?
|
53
|
-
r[:files].each{|attach| attachments["#{File.basename(attach)}"] = File.open(attach, 'rb'){|f| f.read} }
|
54
|
+
r[:files].each { |attach| attachments["#{File.basename(attach)}"] = File.open(attach, 'rb') { |f| f.read } }
|
54
55
|
end
|
55
56
|
|
56
|
-
mail(r[:mail_data]){|format| format.html { render r[:template_name], layout: r[:layout_name] } } if r[:format] == "html"
|
57
|
-
mail(r[:mail_data]){|format| format.text { render r[:template_name], layout: r[:layout_name] } } if r[:format] == "txt"
|
57
|
+
mail(r[:mail_data]) { |format| format.html { render r[:template_name], layout: r[:layout_name] } } if r[:format] == "html"
|
58
|
+
mail(r[:mail_data]) { |format| format.text { render r[:template_name], layout: r[:layout_name] } } if r[:format] == "txt"
|
58
59
|
mail(r[:mail_data]) unless r[:format].present?
|
59
60
|
|
60
61
|
end
|
@@ -18,12 +18,10 @@ class CamaleonCms::NavMenuItem < CamaleonCms::TermTaxonomy
|
|
18
18
|
|
19
19
|
# return the main menu
|
20
20
|
def main_menu
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end while ctg.present?
|
26
|
-
main_menu
|
21
|
+
main_menu = self.parent
|
22
|
+
return main_menu if main_menu.present?
|
23
|
+
parent_menu = self.parent_item
|
24
|
+
parent_menu.main_menu if parent_menu.present?
|
27
25
|
end
|
28
26
|
|
29
27
|
# return the type of this menu (post|category|post_tag|post_type|external)
|
@@ -114,6 +114,10 @@ class CamaleonCms::Site < CamaleonCms::TermTaxonomy
|
|
114
114
|
get_option('security_captcha_user_register', false) == true
|
115
115
|
end
|
116
116
|
|
117
|
+
def need_validate_email?
|
118
|
+
get_option('need_validate_email', false) == true
|
119
|
+
end
|
120
|
+
|
117
121
|
# auto create default user roles
|
118
122
|
def set_default_user_roles(post_type = nil)
|
119
123
|
user_role = self.user_roles.where({slug: 'admin', term_group: -1}).first_or_create({name: 'Administrator', description: 'Default roles admin'})
|
@@ -234,6 +238,7 @@ class CamaleonCms::Site < CamaleonCms::TermTaxonomy
|
|
234
238
|
CamaleonCms::User.where(site_id: self.id).destroy_all
|
235
239
|
end
|
236
240
|
FileUtils.rm_rf(upload_directory) # destroy current media directory
|
241
|
+
users.destroy_all unless PluginRoutes.system_info["users_share_sites"] # destroy all users assigned fot this site
|
237
242
|
end
|
238
243
|
|
239
244
|
# default structure for each new site
|
@@ -29,14 +29,11 @@ class CamaleonCms::TermTaxonomy < ActiveRecord::Base
|
|
29
29
|
validates :name, :taxonomy, presence: true
|
30
30
|
validates_with CamaleonCms::UniqValidator
|
31
31
|
|
32
|
-
#default_scope order('users.role ASC')
|
33
32
|
# relations
|
34
33
|
has_many :term_relationships, :class_name => "CamaleonCms::TermRelationship", :foreign_key => :term_taxonomy_id, dependent: :destroy
|
35
34
|
has_many :posts, foreign_key: :objectid, through: :term_relationships, :source => :objects
|
36
35
|
belongs_to :parent, class_name: "CamaleonCms::TermTaxonomy", foreign_key: :parent_id
|
37
36
|
belongs_to :owner, class_name: "CamaleonCms::User", foreign_key: :user_id
|
38
|
-
has_many :user_relationships, :class_name => "CamaleonCms::UserRelationship", :foreign_key => :term_taxonomy_id, dependent: :destroy
|
39
|
-
has_many :users, through: :user_relationships, :source => :user
|
40
37
|
|
41
38
|
# return all children taxonomy
|
42
39
|
# sample: sub categories of a category
|
@@ -21,6 +21,7 @@ class CamaleonCms::User < ActiveRecord::Base
|
|
21
21
|
attr_accessible :username, :role, :email, :parent_id, :last_login_at, :site_id, :password, :password_confirmation #, :profile_attributes
|
22
22
|
attr_accessible :data_options
|
23
23
|
attr_accessible :data_metas
|
24
|
+
attr_accessible :is_valid_email
|
24
25
|
|
25
26
|
default_scope {order("#{CamaleonCms::User.table_name}.role ASC")}
|
26
27
|
|
@@ -112,7 +113,11 @@ class CamaleonCms::User < ActiveRecord::Base
|
|
112
113
|
save!
|
113
114
|
end
|
114
115
|
|
115
|
-
|
116
|
+
def send_confirm_email
|
117
|
+
generate_token(:confirm_email_token)
|
118
|
+
self.confirm_email_sent_at = Time.zone.now
|
119
|
+
save!
|
120
|
+
end
|
116
121
|
|
117
122
|
private
|
118
123
|
def create_profile
|
@@ -12,6 +12,4 @@ class CamaleonCms::UserRelationship < ActiveRecord::Base
|
|
12
12
|
|
13
13
|
belongs_to :term_taxonomies, :class_name => "CamaleonCms::TermTaxonomy", foreign_key: :term_taxonomy_id, inverse_of: :user_relationships
|
14
14
|
belongs_to :user, :class_name => "CamaleonCms::User", foreign_key: :user_id, inverse_of: :user_relationships
|
15
|
-
|
16
|
-
|
17
15
|
end
|
@@ -9,6 +9,7 @@
|
|
9
9
|
class CamaleonCms::UserRole < CamaleonCms::TermTaxonomy
|
10
10
|
default_scope { where(taxonomy: :user_roles) }
|
11
11
|
has_many :metas, ->{ where(object_class: 'UserRole')}, :class_name => "CamaleonCms::Meta", foreign_key: :objectid, dependent: :destroy
|
12
|
+
has_many :user_relationships, :class_name => "CamaleonCms::UserRelationship", :foreign_key => :term_taxonomy_id, dependent: :destroy
|
12
13
|
has_many :users, through: :user_relationships, :source => :user
|
13
14
|
belongs_to :site, :class_name => "CamaleonCms::Site", foreign_key: :parent_id
|
14
15
|
|
@@ -41,6 +41,7 @@ module CamaleonCms::CustomFieldsRead extend ActiveSupport::Concern
|
|
41
41
|
self.custom_field_groups.where(object_class: class_name)
|
42
42
|
when 'NavMenuItem'
|
43
43
|
# self.main_menu.custom_field_groups //verify this problem
|
44
|
+
puts "get_field_groups - NavMenuItem: **************#{self.inspect}***** #{self.main_menu.inspect}"
|
44
45
|
CamaleonCms::NavMenu.find(self.main_menu.id).get_field_groups
|
45
46
|
when 'PostType'
|
46
47
|
if args[:kind] == "all"
|
@@ -1,25 +1,42 @@
|
|
1
|
-
<div
|
2
|
-
|
3
|
-
|
1
|
+
<div id="cama_media_gallery" data-url_actions="<%= actions_cama_admin_media_path(actions: @show_file_actions) %>" data-formats="<%= @media_formats.join(",") %>" data-folder="<%= @folder %>" data-url="<%= ajax_cama_admin_media_path(actions: @show_file_actions) %>">
|
2
|
+
<div class="panel panel-default">
|
3
|
+
<div class="panel-heading">
|
4
|
+
<div class="row">
|
5
|
+
<div class="col-md-12">
|
6
|
+
<h4 class="pull-left">root</h4>
|
7
|
+
<ol class="pull-left breadcrumb media_folder_breadcrumb"></ol>
|
8
|
+
<% if @show_file_actions %>
|
9
|
+
<a href="#" class="btn btn-primary pull-right add_folder">
|
10
|
+
<i class="fa fa-plus"></i> <%= t("camaleon_cms.admin.button.add_folder") %>
|
11
|
+
</a>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
14
|
+
</div>
|
4
15
|
</div>
|
16
|
+
<div class="panel-body">
|
17
|
+
<div class="row" style="margin-bottom: 16px">
|
18
|
+
<div class="col-md-9 media_browser_list">
|
19
|
+
<%= render "files_list" %>
|
20
|
+
</div>
|
5
21
|
|
6
|
-
|
7
|
-
|
22
|
+
<div class="col-md-3 media_file_info_col">
|
23
|
+
<ul class="nav nav-tabs nav-justified" role="tablist">
|
8
24
|
<li role="presentation" class="active"><a href="#cama_media_upload" class="link_media_upload" role="tab" data-toggle="tab"><%= t("camaleon_cms.admin.button.upload_file") %></a></li>
|
9
25
|
<li role="presentation"><a href="#cama_media_info" class="link_media_info" role="tab" data-toggle="tab"><%= t("camaleon_cms.admin.media.info") %></a></li>
|
10
|
-
|
11
|
-
|
26
|
+
</ul>
|
27
|
+
<div class="tab-content">
|
12
28
|
<div role="tabpanel" class="tab-pane active" id="cama_media_upload">
|
13
|
-
|
29
|
+
<div class="cama_media_fileuploader" data-url="<%= upload_cama_admin_media_path(actions: @show_file_actions) %>"><%= t("camaleon_cms.admin.button.upload_file") %></div>
|
14
30
|
</div>
|
15
31
|
<div role="tabpanel" class="tab-pane" id="cama_media_info">
|
16
|
-
|
32
|
+
<div class="media_file_info"></div>
|
17
33
|
</div>
|
34
|
+
</div>
|
18
35
|
</div>
|
36
|
+
</div>
|
19
37
|
</div>
|
20
|
-
|
21
|
-
<% if @show_file_actions %>
|
22
|
-
<a href="#" class="btn btn-primary pull-right add_folder btn-xs"><i class="fa fa-folder-plus"></i> <%= t("camaleon_cms.admin.button.add_folder") %></a>
|
23
|
-
<% end %>
|
38
|
+
</div>
|
24
39
|
</div>
|
25
|
-
<script>jQuery(function
|
40
|
+
<script>jQuery(function () {
|
41
|
+
cama_init_media($("#cama_media_gallery"));
|
42
|
+
});</script>
|
@@ -4,9 +4,9 @@
|
|
4
4
|
<div class="panel-body ">
|
5
5
|
<div class="row">
|
6
6
|
<% if @post.draft? && !@post.parent.present? %>
|
7
|
-
<div class="col-md-12 input-submit"><%= f.submit "#{ (@post.new_record?) ? t('camaleon_cms.admin.page_title.create') : t('camaleon_cms.admin.button.publish')}", class: "btn btn-success btn-lg btn-block", onclick: "$('#post_status').val('
|
7
|
+
<div class="col-md-12 input-submit"><%= f.submit "#{ (@post.new_record?) ? t('camaleon_cms.admin.page_title.create') : t('camaleon_cms.admin.button.publish')}", class: "btn btn-success btn-lg btn-block", onclick: "$('#post_status').val('#{@post.get_option('draft_status')}')" %></div>
|
8
8
|
<% elsif @post.draft? && @post.parent.present? %>
|
9
|
-
<div class="col-md-12 input-submit"><%= f.submit "#{ t('camaleon_cms.admin.button.recover') }", class: "btn btn-success btn-lg btn-block", onclick: "$('#post_status').val('
|
9
|
+
<div class="col-md-12 input-submit"><%= f.submit "#{ t('camaleon_cms.admin.button.recover') }", class: "btn btn-success btn-lg btn-block", onclick: "$('#post_status').val('#{@post.get_option('draft_status')}')" %></div>
|
10
10
|
<% else %>
|
11
11
|
<div class="col-md-12 input-submit"><%= f.submit "#{ (@post.new_record?) ? t('camaleon_cms.admin.page_title.create') : t('camaleon_cms.admin.page_title.update')}", class: "btn btn-success btn-lg btn-block" %></div>
|
12
12
|
<% end %>
|
@@ -82,7 +82,7 @@
|
|
82
82
|
post_id: '<%= @post.draft? ? (@post.parent.present? ? @post.parent.id : nil) : @post.id %>',
|
83
83
|
post_draft_id: '<%= @post.id if @post.draft? %>',
|
84
84
|
post_status: '<%= @post.status %>',
|
85
|
-
|
85
|
+
_post_urls: <%= raw @post_type.posts.new({slug: '__-__'}).decorate.the_urls.to_json %>,
|
86
86
|
_drafts_path: '<%= (@post.draft? && !@post.new_record?) ? cama_admin_post_type_draft_path(@post_type.id, @post) : cama_admin_post_type_drafts_path(@post_type.id) %>',
|
87
87
|
_posts_path: '<%= cama_admin_post_type_posts_path(@post_type.id) %>',
|
88
88
|
_ajax_path: '<%= ajax_cama_admin_post_type_posts_path(@post_type.id) %>',
|
@@ -32,4 +32,8 @@
|
|
32
32
|
<label for=""><%= t('camaleon_cms.admin.settings.security.captcha_user_register') %></label><br>
|
33
33
|
<%= check_box :options, :security_captcha_user_register, {checked: @site.security_user_register_captcha_enabled?, class: "icheckbox0"}, "true", "" %>
|
34
34
|
</div>
|
35
|
+
<div class="form-group">
|
36
|
+
<label for=""><%= t('camaleon_cms.admin.settings.security.need_validate_email') %></label><br>
|
37
|
+
<%= check_box :options, :need_validate_email, {checked: @site.need_validate_email?, class: "icheckbox0"}, "true", "" %>
|
38
|
+
</div>
|
35
39
|
</div>
|
@@ -21,6 +21,13 @@
|
|
21
21
|
<%= f.text_area :description, :class => "form-control translatable", :rows => 4 %>
|
22
22
|
</div>
|
23
23
|
|
24
|
+
<div class="form-group">
|
25
|
+
<label><%= t('camaleon_cms.admin.post_type.icon', default: 'Icon') %></label>
|
26
|
+
<%= text_field_tag "meta[icon]", @post_type.get_option("icon", ''), class: 'form-control' %>
|
27
|
+
<small>Please enter any icon name from <a href="https://fortawesome.github.io/Font-Awesome/icons/" target="_blank">this site</a></small>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
<hr/>
|
24
31
|
<h4><%= t('camaleon_cms.admin.table.settings') %></h4>
|
25
32
|
|
26
33
|
<!-- Settings -->
|
@@ -9,7 +9,6 @@
|
|
9
9
|
<!-- END META SECTION -->
|
10
10
|
|
11
11
|
<%= stylesheet_link_tag theme_asset_path("css/main.css") %>
|
12
|
-
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
|
13
12
|
<%= javascript_include_tag theme_asset_path("js/main.js") %>
|
14
13
|
<%= raw the_head %>
|
15
14
|
</head>
|
@@ -1,10 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
1
|
<% fields.each do |slug, field|
|
4
2
|
field_key = field[:options][:field_key]
|
5
3
|
%>
|
6
4
|
<div class="field-box field-<%= slug %> field-type-<%= field_key %>">
|
7
|
-
<strong><%= field[:name] %></strong><br/>
|
5
|
+
<strong><%= cama_print_i18n_value(field[:name]) %></strong><br/>
|
8
6
|
<%
|
9
7
|
values = field[:values].is_a?(Array) ? field[:values] : [field[:values]]
|
10
8
|
%>
|
@@ -3,8 +3,8 @@
|
|
3
3
|
widget = @current_site.widgets.where("slug = ?", key).first
|
4
4
|
%>
|
5
5
|
<% if widget.present? %>
|
6
|
-
<% if
|
7
|
-
<%=
|
6
|
+
<% if (r = widget.renderer).present? %>
|
7
|
+
<%= render partial: r, locals: {attributes: attributes } %>
|
8
8
|
<% else %>
|
9
9
|
<%= raw widget[:description].translate %>
|
10
10
|
<% end %>
|
@@ -7,7 +7,6 @@
|
|
7
7
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
9
9
|
<%= stylesheet_link_tag "camaleon_cms/admin/admin-manifest", media: "all" %>
|
10
|
-
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
|
11
10
|
<script>
|
12
11
|
var root_url = '<%= cama_root_url %>';
|
13
12
|
var root_admin_url = '<%= cama_admin_url %>';
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<footer class="main-footer">
|
2
2
|
<div class="row">
|
3
|
-
<div class="col-md-6"><strong>Copyright © 2015-2016 <a href="http://camaleon.tuzitio.com">Camaleon CMS.</a> </strong
|
3
|
+
<div class="col-md-6"><strong>Copyright © 2015-2016 <a href="http://camaleon.tuzitio.com">Camaleon CMS.</a> </strong></div>
|
4
4
|
<div class="col-md-6 hidden-xs">
|
5
5
|
<div class="pull-left">
|
6
6
|
<a id="link_see_intro" href="#" onclick="init_intro(); return false;"><i class="fa fa-tv"></i> See Intro.</a>
|
@@ -10,7 +10,6 @@
|
|
10
10
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
11
11
|
|
12
12
|
<%= stylesheet_link_tag "camaleon_cms/bootstrap.min.css", media: "all" %>
|
13
|
-
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
|
14
13
|
<%= javascript_include_tag "camaleon_cms/admin/login_manifest" %>
|
15
14
|
<script>
|
16
15
|
jQuery(function(){
|
@@ -7,7 +7,6 @@
|
|
7
7
|
<%= raw the_head({}) if current_site.present? %>
|
8
8
|
<title><%= (content_for?(:title) ? yield(:title) : t('camaleon_cms.admin.login.login')) %></title>
|
9
9
|
<%= stylesheet_link_tag "camaleon_cms/admin/admin-basic-manifest", media: "all" %>
|
10
|
-
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
|
11
10
|
<%= javascript_include_tag "camaleon_cms/admin/admin-basic-manifest" %>
|
12
11
|
</head>
|
13
12
|
<body class="hold-transition login-page">
|
data/config/initializers/sass.rb
CHANGED
@@ -12,18 +12,18 @@ module Sprockets
|
|
12
12
|
# return them path (this prefix automatically the path with current theme location)
|
13
13
|
# Sample: .container{ background: #ffffff url(asset_theme_path('img/patterns/pattern1.jpg')); }
|
14
14
|
def asset_theme_path(path, options = {})
|
15
|
-
asset_path(Autoload::Sass::Script::String.new("#{get_theme_prefix}/#{path.value}"), options)
|
15
|
+
asset_path(Autoload::Sass::Script::String.new("#{get_theme_prefix}/#{path.value}".gsub("//", "/")), options)
|
16
16
|
end
|
17
17
|
|
18
18
|
# return them path (this prefix automatically the path with current theme location)
|
19
|
-
|
20
|
-
|
19
|
+
# Sample: .container{ background: #ffffff asset-theme-url('img/patterns/pattern1.jpg'); }
|
20
|
+
def asset_theme_url(path, options = {})
|
21
|
+
asset_url(Autoload::Sass::Script::String.new("#{get_theme_prefix}/#{path.value}".gsub("//", "/")), options)
|
21
22
|
end
|
22
23
|
|
23
24
|
# return them path (this prefix automatically the path with current theme location)
|
24
|
-
|
25
|
-
|
26
|
-
asset_url(Autoload::Sass::Script::String.new("#{get_theme_prefix}/#{path.value}"), options)
|
25
|
+
def asset_plugin_path(path, options = {})
|
26
|
+
asset_path(Autoload::Sass::Script::String.new("#{get_plugin_prefix}/#{path.value}"), options)
|
27
27
|
end
|
28
28
|
|
29
29
|
# return them path (this prefix automatically the path with current theme location)
|
@@ -135,6 +135,10 @@ en:
|
|
135
135
|
send_mail_succes: 'Send email reset success.'
|
136
136
|
send_mail_error: 'Not found email address.'
|
137
137
|
invalid_caption: 'Invalid captcha'
|
138
|
+
email_not_validated: 'Email has not been validated.'
|
139
|
+
confirm_email_token_incorrect: 'URL incorrect'
|
140
|
+
confirm_email_token_expired: 'Confirm email URL expired'
|
141
|
+
confirm_email_success: 'Confirm email success!'
|
138
142
|
personal_info: 'Personal info'
|
139
143
|
please_login: 'Please login'
|
140
144
|
reset_password: 'reset password'
|
@@ -152,6 +156,9 @@ en:
|
|
152
156
|
last_name: "Last Name"
|
153
157
|
email: "Email"
|
154
158
|
remember_me: "Remember Me"
|
159
|
+
confirm:
|
160
|
+
text: "Please confirm your account by clicking this link"
|
161
|
+
subject: "Confirm your account"
|
155
162
|
logout:
|
156
163
|
log: 'Log'
|
157
164
|
out: 'Out'
|
@@ -256,6 +263,7 @@ en:
|
|
256
263
|
keywords: 'Keywords'
|
257
264
|
default_layout: 'Default Layout'
|
258
265
|
default_template: 'Default Template'
|
266
|
+
icon: 'Icon'
|
259
267
|
message:
|
260
268
|
error: 'Error class'
|
261
269
|
error_term: 'Error term class'
|
@@ -346,6 +354,7 @@ en:
|
|
346
354
|
filesystem_cdn: "CDN url"
|
347
355
|
security:
|
348
356
|
captcha_user_register: "Enable captcha on user registration?"
|
357
|
+
need_validate_email: "Need validate email?"
|
349
358
|
message:
|
350
359
|
language_updated: 'Your languages was configured.'
|
351
360
|
site_updated: 'The site has been updated.'
|
@@ -550,6 +559,7 @@ en:
|
|
550
559
|
requires_different_name: 'Requires different name'
|
551
560
|
requires_different_username: 'Requires different username'
|
552
561
|
requires_different_email: 'Requires different email'
|
562
|
+
created_pending_validate_email: "The user has been created, please confirm your email"
|
553
563
|
new_photo: 'New Photo'
|
554
564
|
others_permissions: 'Others permissions'
|
555
565
|
profile: 'Profile'
|