enjoy_cms 0.3.7 → 0.3.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/models/concerns/enjoy/hash_field.rb +90 -23
- data/app/models/concerns/enjoy/html_field.rb +1 -1
- data/app/models/concerns/enjoy/mappable.rb +1 -1
- data/app/views/rails_admin/main/_enjoy_hash.html.slim +1 -0
- data/app/views/rails_admin/main/_enjoy_hash_ml.html.slim +10 -0
- data/app/views/rails_admin/main/_enjoy_html.html.slim +2 -1
- data/app/views/rails_admin/main/_enjoy_html_ml.html.slim +53 -0
- data/lib/enjoy/rails_admin_ext/enjoy_hash.rb +56 -10
- data/lib/enjoy/rails_admin_ext/enjoy_html.rb +36 -13
- data/lib/enjoy/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: edb1ca4cc4a6285dc5cec5cdf79c7616d24c9f62
|
4
|
+
data.tar.gz: 3fccd7d654da9a4f4673cb3ea69b48a9e9827c10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43484a9b08f3bd5135d1961eca438da61f00957b09793d16084d624b88d123a86c5ca26660574843249813c371b8771a7f4b9d9559721a194315a89b16b6ee02
|
7
|
+
data.tar.gz: 0bcf54b781a1a2c4914ad6a725c0806197063977ea4e1cefa86e4a641e9ff3543c15ef522733e831c6a27bbfbed712a66de6c604d2e3cad158b18177e702566d
|
data/Gemfile.lock
CHANGED
@@ -4,32 +4,99 @@ if Enjoy.mongoid?
|
|
4
4
|
|
5
5
|
module ClassMethods
|
6
6
|
def enjoy_cms_hash_field(name, opts = {})
|
7
|
+
opts.merge!({type: Hash, default: {}})
|
7
8
|
field "#{name}_hash", opts
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
10
|
+
meth = name
|
11
|
+
meth_str = "#{name}_str"
|
12
|
+
meth_hsh = "#{name}_hash"
|
13
|
+
meth_json = "#{name}_json"
|
14
|
+
if opts[:localize]
|
15
|
+
meth_str_t = "#{name}_str_translations"
|
16
|
+
meth_hsh_t = "#{name}_hash_translations"
|
17
|
+
class_eval <<-EVAL
|
18
|
+
def #{meth_str_t}=(val)
|
19
|
+
return self.#{meth_hsh_t} = {} if val.blank?
|
20
|
+
_hash = {}
|
21
|
+
self[:#{meth_str_t}] ||= {}
|
22
|
+
I18n.available_locales.each do |l|
|
23
|
+
begin
|
24
|
+
_hash[l] = JSON.parse(val[l])
|
25
|
+
self[:#{meth_str_t}][l]= val[l]
|
26
|
+
rescue
|
27
|
+
self[:#{meth_str_t}][l]= val[l]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
self.#{meth_hsh_t} = _hash
|
31
|
+
end
|
32
|
+
def #{meth_str_t}
|
33
|
+
self[:#{meth_str_t}] ||= self.#{meth} if self.#{meth}
|
34
|
+
end
|
35
|
+
def #{meth_str}
|
36
|
+
self.#{meth_str_t}[I18n.locale] if self.#{meth_str_t}
|
37
|
+
end
|
38
|
+
def #{meth}
|
39
|
+
self.#{meth_hsh}
|
40
|
+
end
|
41
|
+
def #{meth_json}
|
42
|
+
self.#{meth_hsh}.to_json if self.#{meth_hsh}
|
43
|
+
end
|
44
|
+
|
45
|
+
validate do
|
46
|
+
unless self.#{meth_hsh_t}.nil?
|
47
|
+
_has_errors = false
|
48
|
+
I18n.available_locales.each do |l|
|
49
|
+
I18n.with_locale(l) do
|
50
|
+
puts self.#{meth_hsh_t}[l]
|
51
|
+
puts self.#{meth_str}
|
52
|
+
puts "_"
|
53
|
+
if self.#{meth_hsh_t}[l].nil? and !self[:#{meth_str_t}][l].blank?
|
54
|
+
_has_errors ||= true
|
55
|
+
_meth = "#{meth_hsh_t}_\#{l}".to_s
|
56
|
+
self.errors.add(_meth, "Неверный формат данных")
|
57
|
+
else
|
58
|
+
self[:#{meth_str_t}].delete(l) if self[:#{meth_str_t}]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
self.remove_attribute :#{meth_str_t} unless _has_errors
|
63
|
+
end
|
64
|
+
true
|
65
|
+
end
|
66
|
+
EVAL
|
23
67
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
68
|
+
else
|
69
|
+
class_eval <<-EVAL
|
70
|
+
def #{meth_str}=(val)
|
71
|
+
return self.#{meth_hsh} = {} if val.blank?
|
72
|
+
begin
|
73
|
+
self.#{meth_hsh} = JSON.parse(val)
|
74
|
+
rescue
|
75
|
+
self[:#{meth_str}] = val
|
76
|
+
end
|
77
|
+
end
|
78
|
+
def #{meth_str}
|
79
|
+
self[:#{meth_str}] ||= self.#{meth}.to_json if self.#{meth}
|
80
|
+
end
|
81
|
+
def #{meth}
|
82
|
+
self.#{meth_hsh}
|
83
|
+
end
|
84
|
+
def #{meth_json}
|
85
|
+
self.#{meth_hsh}.to_json if self.#{meth_hsh}
|
86
|
+
end
|
87
|
+
|
88
|
+
validate do
|
89
|
+
unless self.#{meth}.nil?
|
90
|
+
if self.#{meth_str} != self.#{meth}.to_json
|
91
|
+
self.errors.add(:#{meth}, "Неверный формат данных")
|
92
|
+
else
|
93
|
+
self.remove_attribute :#{meth_str}
|
94
|
+
end
|
95
|
+
true
|
96
|
+
end
|
97
|
+
end
|
98
|
+
EVAL
|
99
|
+
end
|
33
100
|
end
|
34
101
|
end
|
35
102
|
end
|
@@ -8,7 +8,7 @@ if Enjoy.mongoid?
|
|
8
8
|
clear_by_default = false unless clear_by_default == true
|
9
9
|
|
10
10
|
field "#{name}_html", opts
|
11
|
-
field "#{name}_clear", type: Boolean, default: clear_by_default
|
11
|
+
field "#{name}_clear", type: Boolean, default: clear_by_default, localize: opts[:localize]
|
12
12
|
|
13
13
|
class_eval <<-EVAL
|
14
14
|
def #{name}
|
@@ -6,7 +6,7 @@ module Enjoy::Mappable
|
|
6
6
|
if Enjoy.mongoid?
|
7
7
|
include ::Geocoder::Model::Mongoid
|
8
8
|
field :coordinates, type: Array
|
9
|
-
field :address, type: String
|
9
|
+
field :address, type: String, localize: Enjoy.configuration.localize
|
10
10
|
|
11
11
|
field :map_address, type: String
|
12
12
|
field :map_hint, type: String
|
@@ -0,0 +1,10 @@
|
|
1
|
+
ruby:
|
2
|
+
_opts = {}
|
3
|
+
_opts[:rows] = 10
|
4
|
+
_opts[:cols] = 80
|
5
|
+
_opts[:class] = 'form-control'
|
6
|
+
#_opts[:value] = field.formatted_value
|
7
|
+
_opts[:style] = "font-family: monospace"
|
8
|
+
/ = form.text_area field.string_method, _opts
|
9
|
+
|
10
|
+
= render 'form', form: form, field: field, field_type: :text_area, html_attributes: _opts
|
@@ -10,6 +10,7 @@ ruby:
|
|
10
10
|
= form.text_area field.html_method, _html_attributes
|
11
11
|
|
12
12
|
label{style='display: block;'}
|
13
|
-
-
|
13
|
+
- _hash = { value: field.form_value[:clear], checked: field.form_value[:clear].in?([true, '1']), required: false, class: "form-control"}
|
14
|
+
- _html_attributes = field.html_attributes.reverse_merge(_hash)
|
14
15
|
span{style='float: left'}= form.send field.boolean_view_helper, field.clear_method, _html_attributes
|
15
16
|
div{style='margin-left: 35px; line-height: 40px;'} Убирать теги
|
@@ -0,0 +1,53 @@
|
|
1
|
+
ul.nav.nav-tabs
|
2
|
+
- uuid = "#{field.name}_#{field.object_id}_unique_id"
|
3
|
+
- I18n.available_locales.each do |locale|
|
4
|
+
li(class="#{'active' if locale == I18n.locale}")
|
5
|
+
a(href="##{locale}_#{uuid}" data-toggle="tab" class="#{uuid}")= locale
|
6
|
+
.tab-content
|
7
|
+
/ = form.fields_for field.translations_field do |localized_field|
|
8
|
+
- I18n.available_locales.each do |locale|
|
9
|
+
- _class = "#{[( 'active' if locale == I18n.locale ), uuid].join(" ")}"
|
10
|
+
.fields.tab-pane(style='padding:5px; margin: 0;' id="#{locale}_#{uuid}" class="#{_class}")
|
11
|
+
= form.fields_for field.html_translations_field do |html_localized_field|
|
12
|
+
ruby:
|
13
|
+
js_data = {
|
14
|
+
jspath: field.location ? field.location : field.base_location + "ckeditor.js",
|
15
|
+
base_location: field.base_location,
|
16
|
+
options: {
|
17
|
+
customConfig: field.config_js ? field.config_js : field.base_location + "config.js"
|
18
|
+
}
|
19
|
+
}
|
20
|
+
_html_attributes = field.html_attributes.reverse_merge(data: {
|
21
|
+
richtext: 'ckeditor',
|
22
|
+
options: js_data.to_json
|
23
|
+
})
|
24
|
+
_html_attributes[:value] = field.form_value[:html] ? field.form_value[:html][locale] : ""
|
25
|
+
= html_localized_field.send :text_area, locale , _html_attributes
|
26
|
+
|
27
|
+
= form.fields_for field.clear_translations_field do |clear_localized_field|
|
28
|
+
label{style='display: block;'}
|
29
|
+
ruby:
|
30
|
+
_value = field.form_value[:clear] ? field.form_value[:clear][locale] : true
|
31
|
+
_hash = {
|
32
|
+
value: _value,
|
33
|
+
checked: _value.in?([true, '1']),
|
34
|
+
required: false,
|
35
|
+
class: "form-control"
|
36
|
+
}
|
37
|
+
_html_attributes = field.html_attributes.reverse_merge(_hash)
|
38
|
+
span{style='float: left'}= clear_localized_field.send field.boolean_view_helper, locale , _html_attributes
|
39
|
+
div{style='margin-left: 35px; line-height: 40px;'} Убирать теги
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
javascript:
|
45
|
+
var #{field.name}#{field.object_id} = (new Date().getTime()) + Math.floor(Math.random()*100000);
|
46
|
+
$("ul.nav.nav-tabs a.#{uuid}").each(function(e){
|
47
|
+
this.href = $(this).attr('href').replace('_unique_id', #{field.name}#{field.object_id});
|
48
|
+
$(this).removeClass('#{uuid}');
|
49
|
+
});
|
50
|
+
$(".tab-content .#{uuid}").each(function(e){
|
51
|
+
this.id = this.id.replace('_unique_id', #{field.name}#{field.object_id});
|
52
|
+
$(this).removeClass('#{uuid}');
|
53
|
+
});
|
@@ -14,24 +14,70 @@ module RailsAdmin
|
|
14
14
|
"#{name}_str"
|
15
15
|
end
|
16
16
|
|
17
|
-
register_instance_option :
|
18
|
-
|
17
|
+
register_instance_option :hash_method do
|
18
|
+
"#{name}_hash"
|
19
19
|
end
|
20
20
|
|
21
|
-
register_instance_option :
|
22
|
-
|
21
|
+
register_instance_option :value do
|
22
|
+
formatted_value
|
23
|
+
end
|
24
|
+
|
25
|
+
register_instance_option :tabbed do
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
############ localize ######################
|
31
|
+
register_instance_option :translations_field do
|
32
|
+
(string_method.to_s + '_translations').to_sym
|
33
|
+
end
|
34
|
+
|
35
|
+
register_instance_option :localized? do
|
36
|
+
@abstract_model.model_name.constantize.public_instance_methods.include?(translations_field)
|
37
|
+
end
|
38
|
+
|
39
|
+
register_instance_option :pretty_value do
|
40
|
+
if localized?
|
41
|
+
I18n.available_locales.map { |l|
|
42
|
+
ret = nil
|
43
|
+
I18n.with_locale(l) do
|
44
|
+
_hash = bindings[:object].send(hash_method) || {}
|
45
|
+
ret = ("#{l}:<pre>" + JSON.pretty_generate(_hash) + "</pre>")
|
46
|
+
end
|
47
|
+
ret
|
48
|
+
}.join.html_safe
|
49
|
+
else
|
50
|
+
_hash = bindings[:object].send(hash_method) || {}
|
51
|
+
("<pre>" + JSON.pretty_generate(_hash) + "</pre>").html_safe
|
52
|
+
end
|
23
53
|
end
|
24
54
|
|
25
55
|
register_instance_option :formatted_value do
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
bindings[:object].send
|
56
|
+
if localized?
|
57
|
+
puts bindings[:object].send((hash_method.to_s + '_translations').to_sym)
|
58
|
+
puts '__'
|
59
|
+
_val = bindings[:object].send((hash_method.to_s + '_translations').to_sym)
|
60
|
+
_val.each_pair { |l, _hash|
|
61
|
+
begin
|
62
|
+
_val[l] = JSON.pretty_generate(_hash)
|
63
|
+
rescue
|
64
|
+
end
|
65
|
+
}
|
66
|
+
else
|
67
|
+
begin
|
68
|
+
JSON.pretty_generate(bindings[:object].send hash_method)
|
69
|
+
rescue
|
70
|
+
bindings[:object].send hash_method
|
71
|
+
end
|
30
72
|
end
|
31
73
|
end
|
32
74
|
|
33
|
-
register_instance_option :
|
34
|
-
|
75
|
+
register_instance_option :allowed_methods do
|
76
|
+
localized? ? [string_method, translations_field] : [string_method]
|
77
|
+
end
|
78
|
+
|
79
|
+
register_instance_option :partial do
|
80
|
+
localized? ? :enjoy_hash_ml : :enjoy_hash
|
35
81
|
end
|
36
82
|
end
|
37
83
|
end
|
@@ -10,25 +10,17 @@ module RailsAdmin
|
|
10
10
|
include RailsAdmin::Engine.routes.url_helpers
|
11
11
|
|
12
12
|
register_instance_option :html_method do
|
13
|
-
"#{name}_html"
|
13
|
+
"#{name}_html".to_sym
|
14
14
|
end
|
15
15
|
|
16
16
|
register_instance_option :clear_method do
|
17
|
-
"#{name}_clear"
|
17
|
+
"#{name}_clear".to_sym
|
18
18
|
end
|
19
19
|
|
20
20
|
register_instance_option :pretty_value do
|
21
21
|
bindings[:object].send(html_method)
|
22
22
|
end
|
23
23
|
|
24
|
-
register_instance_option :form_value do
|
25
|
-
{
|
26
|
-
html: bindings[:object].send(html_method),
|
27
|
-
clear: bindings[:object].send(clear_method)
|
28
|
-
}
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
24
|
register_instance_option :formatted_value do
|
33
25
|
pretty_value
|
34
26
|
end
|
@@ -37,17 +29,48 @@ module RailsAdmin
|
|
37
29
|
pretty_value
|
38
30
|
end
|
39
31
|
|
40
|
-
|
41
32
|
register_instance_option :boolean_view_helper do
|
42
33
|
:check_box
|
43
34
|
end
|
44
35
|
|
36
|
+
register_instance_option :tabbed do
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
############ localize ######################
|
42
|
+
register_instance_option :html_translations_field do
|
43
|
+
(html_method.to_s + '_translations').to_sym
|
44
|
+
end
|
45
|
+
register_instance_option :clear_translations_field do
|
46
|
+
(clear_method.to_s + '_translations').to_sym
|
47
|
+
end
|
48
|
+
|
49
|
+
register_instance_option :form_value do
|
50
|
+
if localized?
|
51
|
+
{
|
52
|
+
html: bindings[:object].send(html_translations_field),
|
53
|
+
clear: bindings[:object].send(clear_translations_field)
|
54
|
+
}
|
55
|
+
else
|
56
|
+
{
|
57
|
+
html: bindings[:object].send(html_method),
|
58
|
+
clear: bindings[:object].send(clear_method)
|
59
|
+
}
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
register_instance_option :localized? do
|
64
|
+
@abstract_model.model_name.constantize.public_instance_methods.include?(html_translations_field) and
|
65
|
+
@abstract_model.model_name.constantize.public_instance_methods.include?(clear_translations_field)
|
66
|
+
end
|
67
|
+
|
45
68
|
register_instance_option :allowed_methods do
|
46
|
-
[html_method, clear_method]
|
69
|
+
localized? ? [html_method, clear_method, html_translations_field, clear_translations_field] : [html_method, clear_method]
|
47
70
|
end
|
48
71
|
|
49
72
|
register_instance_option :partial do
|
50
|
-
:enjoy_html
|
73
|
+
localized? ? :enjoy_html_ml : :enjoy_html
|
51
74
|
end
|
52
75
|
end
|
53
76
|
end
|
data/lib/enjoy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enjoy_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.7
|
4
|
+
version: 0.3.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Kiseliev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -498,7 +498,9 @@ files:
|
|
498
498
|
- app/views/rails_admin/main/_check_boxes.html.slim
|
499
499
|
- app/views/rails_admin/main/_enjoy_connectable.html.slim
|
500
500
|
- app/views/rails_admin/main/_enjoy_hash.html.slim
|
501
|
+
- app/views/rails_admin/main/_enjoy_hash_ml.html.slim
|
501
502
|
- app/views/rails_admin/main/_enjoy_html.html.slim
|
503
|
+
- app/views/rails_admin/main/_enjoy_html_ml.html.slim
|
502
504
|
- app/views/rails_admin/main/_enum_check_boxes.html.slim
|
503
505
|
- app/views/rails_admin/main/_enum_radio_buttons.html.slim
|
504
506
|
- app/views/rails_admin/main/_form_raw.html.slim
|