enjoy_cms 0.3.3 → 0.3.4
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/controllers/concerns/enjoy/nav_menu.rb +18 -2
- data/app/models/concerns/enjoy/connectable.rb +36 -0
- data/app/views/enjoy/contacts/index.html.slim +1 -1
- data/app/views/enjoy/contacts/new.html.slim +1 -1
- data/app/views/enjoy/search/index.html.slim +1 -1
- data/app/views/rails_admin/main/_check_boxes.html.slim +1 -1
- data/app/views/rails_admin/main/_enjoy_connectable.html.slim +56 -0
- data/app/views/rails_admin/main/_enum_check_boxes.html.slim +1 -1
- data/app/views/rails_admin/main/_enum_radio_buttons.html.slim +1 -1
- data/lib/enjoy/admin/news.rb +1 -0
- data/lib/enjoy/admin/page.rb +5 -1
- data/lib/enjoy/models/mongoid/page.rb +18 -0
- data/lib/enjoy/models/news.rb +2 -0
- data/lib/enjoy/rails_admin_ext/enjoy_connectable.rb +33 -0
- data/lib/enjoy/{rails_admin_enjoy_hash.rb → rails_admin_ext/enjoy_hash.rb} +2 -0
- data/lib/enjoy/{rails_admin_enjoy_html.rb → rails_admin_ext/enjoy_html.rb} +3 -1
- data/lib/enjoy/{rails_admin_group_patch.rb → rails_admin_ext/group_patch.rb} +0 -0
- data/lib/enjoy/{rails_admin_menu.rb → rails_admin_ext/menu.rb} +2 -0
- data/lib/enjoy/version.rb +1 -1
- data/lib/enjoy_cms.rb +9 -5
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1cde68353de729109469314593280868f16f916
|
4
|
+
data.tar.gz: 8d710c2d7de38ddf701c9069f8b03ef7481a794b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbcd938f54fdc7fa3d5e58c74fcdaa0f2082a8b8defcd3999adb845f6146ff12b03ac2dec980514a04f06b17f56a729b449ffd98f3f4397178eae632fcc5f6a6
|
7
|
+
data.tar.gz: 1c9120a4a121b5cbdd346f4e801e6695438a7e4ad7e2af9604cf236686e36581cebcf4e34b5b9f128179aea86ac477ce0a94edbc5454328cc8f9471dd7f5b7fa
|
data/Gemfile.lock
CHANGED
@@ -16,7 +16,7 @@ module Enjoy::NavMenu
|
|
16
16
|
}
|
17
17
|
end
|
18
18
|
end
|
19
|
-
cr = item.clean_regexp
|
19
|
+
# cr = item.clean_regexp
|
20
20
|
navigation_item(primary, item, block)
|
21
21
|
end
|
22
22
|
|
@@ -52,7 +52,23 @@ module Enjoy::NavMenu
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def nav_get_url(item)
|
55
|
-
|
55
|
+
_connectable = item.connectable
|
56
|
+
if _connectable and _connectable.enabled
|
57
|
+
begin
|
58
|
+
_routes_namespace = _connectable.respond_to?(:routes_namespace) ? _connectable.routes_namespace : :main_app
|
59
|
+
send(_routes_namespace.to_sym).url_for(_connectable)
|
60
|
+
rescue Exception => exception
|
61
|
+
Rails.logger.error exception.message
|
62
|
+
Rails.logger.error exception.backtrace.join("\n")
|
63
|
+
puts exception.message
|
64
|
+
puts exception.backtrace.join("\n")
|
65
|
+
capture_exception(exception) if respond_to?(:capture_exception)
|
66
|
+
|
67
|
+
item.redirect.blank? ? item.fullpath : item.redirect
|
68
|
+
end
|
69
|
+
else
|
70
|
+
item.redirect.blank? ? item.fullpath : item.redirect
|
71
|
+
end
|
56
72
|
end
|
57
73
|
def nav_get_menu_items(type)
|
58
74
|
menu = menu_class.find(type.to_s)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Enjoy::Connectable
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
module ClassMethods
|
5
|
+
def enjoy_connectable_field (name = :connected_pages, opts = {})
|
6
|
+
class_name = opts.delete(:class_name)
|
7
|
+
class_name ||= "Enjoy::Page"
|
8
|
+
routes_namespace = opts.delete(:routes_namespace)
|
9
|
+
routes_namespace ||= :main_app
|
10
|
+
autocreate_page = opts.delete(:autocreate_page)
|
11
|
+
autocreate_page = true if autocreate_page.nil?
|
12
|
+
|
13
|
+
has_many name, as: :connectable, class_name: "Enjoy::Page"
|
14
|
+
class_eval <<-EVAL
|
15
|
+
def routes_namespace
|
16
|
+
:#{routes_namespace}
|
17
|
+
end
|
18
|
+
EVAL
|
19
|
+
|
20
|
+
if autocreate_page
|
21
|
+
attr_accessor :enjoy_connectable_autocreate_page
|
22
|
+
_name_attr = Enjoy.config.localize ? "name_translations" : "name"
|
23
|
+
class_eval <<-EVAL
|
24
|
+
after_create do
|
25
|
+
if self.enjoy_connectable_autocreate_page
|
26
|
+
_p = #{class_name}.new
|
27
|
+
_p.#{_name_attr} = self.#{_name_attr}
|
28
|
+
_p.connectable = self
|
29
|
+
_p.save
|
30
|
+
end
|
31
|
+
end
|
32
|
+
EVAL
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.enjoy-search-results
|
2
2
|
h1 Результаты поиска
|
3
|
-
= form_tag
|
3
|
+
= form_tag search_path, method: :get, class: 'nav_search' do
|
4
4
|
= text_field_tag 'query', params[:query], placeholder: "Поиск"
|
5
5
|
= submit_tag 'Найти'
|
6
6
|
ol
|
@@ -1,7 +1,7 @@
|
|
1
1
|
- if params[:associations].nil?
|
2
2
|
= render 'rails_admin/main/enum_check_boxes', field: field, form: form
|
3
3
|
- else
|
4
|
-
:
|
4
|
+
ruby:
|
5
5
|
related_id = params[:associations] && params[:associations][field.name.to_s]
|
6
6
|
config = field.associated_model_config
|
7
7
|
source_abstract_model = RailsAdmin.config(form.object.class).abstract_model
|
@@ -0,0 +1,56 @@
|
|
1
|
+
ruby:
|
2
|
+
related_id = params[:associations] && params[:associations][field.name.to_s]
|
3
|
+
config = field.associated_model_config
|
4
|
+
source_abstract_model = RailsAdmin.config(form.object.class).abstract_model
|
5
|
+
|
6
|
+
if form.object.new_record? && related_id.present? && related_id != 'new'
|
7
|
+
selected = [config.abstract_model.get(related_id)]
|
8
|
+
else
|
9
|
+
selected = form.object.send(field.name)
|
10
|
+
end
|
11
|
+
selected_ids = selected.map{|s| s.send(field.associated_primary_key)}
|
12
|
+
|
13
|
+
current_action = params[:action].in?(['create', 'new']) ? 'create' : 'update'
|
14
|
+
|
15
|
+
xhr = !field.associated_collection_cache_all
|
16
|
+
|
17
|
+
collection = if xhr
|
18
|
+
selected.map { |o| [o.send(field.associated_object_label_method), o.send(field.associated_primary_key)] }
|
19
|
+
else
|
20
|
+
i = 0
|
21
|
+
controller.list_entries(config, :index, field.associated_collection_scope, false).map { |o| [o.send(field.associated_object_label_method), o.send(field.associated_primary_key)] }.sort_by {|a| [selected_ids.index(a[1]) || selected_ids.size, i+=1] }
|
22
|
+
end
|
23
|
+
|
24
|
+
js_data = {
|
25
|
+
xhr: xhr,
|
26
|
+
:'edit-url' => (authorized?(:edit, config.abstract_model) ? edit_path(model_name: config.abstract_model.to_param, id: '__ID__') : ''),
|
27
|
+
remote_source: index_path(config.abstract_model, source_object_id: form.object.id, source_abstract_model: source_abstract_model.to_param, associated_collection: field.name, current_action: current_action, compact: true),
|
28
|
+
sortable: !!field.orderable,
|
29
|
+
removable: !!field.removable,
|
30
|
+
cacheAll: !!field.associated_collection_cache_all,
|
31
|
+
regional: {
|
32
|
+
chooseAll: t("admin.misc.chose_all"),
|
33
|
+
chosen: t("admin.misc.chosen", name: config.label_plural),
|
34
|
+
clearAll: t("admin.misc.clear_all"),
|
35
|
+
search: t("admin.misc.search"),
|
36
|
+
up: t("admin.misc.up"),
|
37
|
+
down: t("admin.misc.down")
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
input{name="#{form.dom_name(field)}" type="hidden" value=""}
|
42
|
+
|
43
|
+
- if field.bindings[:object].new_record? and field.bindings[:object].respond_to?(field.autocreate_page_attr)
|
44
|
+
p
|
45
|
+
span{style='float: left'}= form.check_box field.autocreate_page_attr, checked: true, class: "form-control"
|
46
|
+
div{style='margin-left: 35px; line-height: 40px;'} Автоматически создать пункт меню
|
47
|
+
|
48
|
+
- selected_ids = (hdv = field.form_default_value).nil? ? selected_ids : hdv
|
49
|
+
= form.select field.method_name, collection, { selected: selected_ids, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true})
|
50
|
+
- if authorized?(:new, config.abstract_model) && field.inline_add
|
51
|
+
- path_hash = { model_name: config.abstract_model.to_param, modal: true }
|
52
|
+
- path_hash.merge!({ associations: { field.inverse_of => (form.object.persisted? ? form.object.id : 'new') } }) if field.inverse_of
|
53
|
+
= link_to "<i class=\"icon-plus icon-white\"></i> ".html_safe + wording_for(:link, :new, config.abstract_model), '#', data: { link: new_path(path_hash) }, class: "create btn btn-info", style: 'margin-left:10px'
|
54
|
+
|
55
|
+
|
56
|
+
|
data/lib/enjoy/admin/news.rb
CHANGED
data/lib/enjoy/admin/page.rb
CHANGED
@@ -10,6 +10,7 @@ module Enjoy
|
|
10
10
|
field :enabled, :toggle
|
11
11
|
field :menus, :menu
|
12
12
|
field :name
|
13
|
+
field :connectable
|
13
14
|
field :fullpath do
|
14
15
|
pretty_value do
|
15
16
|
bindings[:view].content_tag(:a, bindings[:object].fullpath, href: bindings[:object].fullpath)
|
@@ -21,6 +22,9 @@ module Enjoy
|
|
21
22
|
|
22
23
|
edit do
|
23
24
|
field :name
|
25
|
+
field :connectable do
|
26
|
+
read_only true
|
27
|
+
end
|
24
28
|
|
25
29
|
group :content do
|
26
30
|
active false
|
@@ -49,7 +53,7 @@ module Enjoy
|
|
49
53
|
end
|
50
54
|
|
51
55
|
Enjoy::RailsAdminGroupPatch::enjoy_cms_group(self, fields)
|
52
|
-
|
56
|
+
|
53
57
|
group :seo do
|
54
58
|
active false
|
55
59
|
field :seo do
|
@@ -11,6 +11,24 @@ module Enjoy
|
|
11
11
|
include RailsAdminComments::Commentable
|
12
12
|
end
|
13
13
|
|
14
|
+
belongs_to :connectable, polymorphic: true
|
15
|
+
scope :connected, -> {
|
16
|
+
where(:connectable_id.ne => nil)
|
17
|
+
}
|
18
|
+
scope :unconnected, -> (except_this = nil) {
|
19
|
+
if except_this
|
20
|
+
where({"$or" =>[
|
21
|
+
{:connectable_id => nil},
|
22
|
+
{"$and" => [
|
23
|
+
{connectable_type: except_this.class.to_param},
|
24
|
+
{connectable_id: except_this._id}
|
25
|
+
]}
|
26
|
+
]})
|
27
|
+
else
|
28
|
+
where(:connectable_id => nil)
|
29
|
+
end
|
30
|
+
}
|
31
|
+
|
14
32
|
field :name, type: String, localize: Enjoy.config.localize, default: ""
|
15
33
|
|
16
34
|
field :regexp, type: String, default: ""
|
data/lib/enjoy/models/news.rb
CHANGED
@@ -7,6 +7,7 @@ module Enjoy
|
|
7
7
|
include Enjoy::Seoable
|
8
8
|
include Enjoy::Enableable
|
9
9
|
include Enjoy::SitemapDataField
|
10
|
+
include Enjoy::Connectable
|
10
11
|
|
11
12
|
include Enjoy.orm_specific('News')
|
12
13
|
|
@@ -15,6 +16,7 @@ module Enjoy
|
|
15
16
|
# end
|
16
17
|
|
17
18
|
included do
|
19
|
+
enjoy_connectable_field :connected_pages, routes_namespace: :enjoy_cms
|
18
20
|
|
19
21
|
unless Enjoy.config.news_image_styles.nil?
|
20
22
|
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/, if: :image?
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rails_admin/config/fields/types/has_many_association'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Fields
|
6
|
+
module Types
|
7
|
+
class EnjoyConnectable < RailsAdmin::Config::Fields::Types::HasManyAssociation
|
8
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
9
|
+
include RailsAdmin::Engine.routes.url_helpers
|
10
|
+
|
11
|
+
register_instance_option :partial do
|
12
|
+
:enjoy_connectable
|
13
|
+
end
|
14
|
+
|
15
|
+
register_instance_option :autocreate_page_attr do
|
16
|
+
:enjoy_connectable_autocreate_page
|
17
|
+
end
|
18
|
+
|
19
|
+
register_instance_option :allowed_methods do
|
20
|
+
[method_name, autocreate_page_attr]
|
21
|
+
end
|
22
|
+
|
23
|
+
register_instance_option :associated_collection_scope do
|
24
|
+
me = bindings[:object]
|
25
|
+
Proc.new do |scope|
|
26
|
+
scope.unconnected(me).enabled.sorted
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rails_admin/config/fields/types/ck_editor'
|
2
|
+
|
1
3
|
module RailsAdmin
|
2
4
|
module Config
|
3
5
|
module Fields
|
@@ -34,7 +36,7 @@ module RailsAdmin
|
|
34
36
|
register_instance_option :export_value do
|
35
37
|
pretty_value
|
36
38
|
end
|
37
|
-
|
39
|
+
|
38
40
|
|
39
41
|
register_instance_option :boolean_view_helper do
|
40
42
|
:check_box
|
File without changes
|
data/lib/enjoy/version.rb
CHANGED
data/lib/enjoy_cms.rb
CHANGED
@@ -15,10 +15,18 @@ require 'glebtv-simple_captcha'
|
|
15
15
|
require 'validates_email_format_of'
|
16
16
|
require 'smart_excerpt'
|
17
17
|
require 'filename_to_slug'
|
18
|
+
|
18
19
|
require 'rails_admin'
|
20
|
+
|
21
|
+
require 'enjoy/rails_admin_ext/enjoy_connectable'
|
22
|
+
require 'enjoy/rails_admin_ext/enjoy_hash'
|
23
|
+
require 'enjoy/rails_admin_ext/enjoy_html'
|
24
|
+
require 'enjoy/rails_admin_ext/group_patch'
|
25
|
+
require 'enjoy/rails_admin_ext/menu'
|
26
|
+
|
19
27
|
require 'rails_admin_nested_set'
|
20
28
|
require 'rails_admin_toggleable'
|
21
|
-
|
29
|
+
require 'rails_admin_settings'
|
22
30
|
require 'rails_admin_sort_embedded'
|
23
31
|
|
24
32
|
require 'x-real-ip'
|
@@ -35,10 +43,6 @@ require 'ack_rails_admin_jcrop'
|
|
35
43
|
require 'enjoy/configuration'
|
36
44
|
require 'enjoy/elastic_search'
|
37
45
|
require 'enjoy/model'
|
38
|
-
require 'enjoy/rails_admin_menu'
|
39
|
-
require 'enjoy/rails_admin_enjoy_html'
|
40
|
-
require 'enjoy/rails_admin_enjoy_hash'
|
41
|
-
require 'enjoy/rails_admin_group_patch'
|
42
46
|
require 'enjoy/engine'
|
43
47
|
require 'enjoy/controller'
|
44
48
|
|
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.
|
4
|
+
version: 0.3.4
|
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-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -434,6 +434,7 @@ files:
|
|
434
434
|
- app/helpers/enjoy/powered_helper.rb
|
435
435
|
- app/mailers/enjoy/contact_mailer.rb
|
436
436
|
- app/models/concerns/enjoy/boolean_field.rb
|
437
|
+
- app/models/concerns/enjoy/connectable.rb
|
437
438
|
- app/models/concerns/enjoy/decorators/contact_message.rb
|
438
439
|
- app/models/concerns/enjoy/decorators/embedded_element.rb
|
439
440
|
- app/models/concerns/enjoy/decorators/embedded_gallery_image.rb
|
@@ -493,6 +494,7 @@ files:
|
|
493
494
|
- app/views/errors/error_500.html.slim
|
494
495
|
- app/views/layouts/application.html.slim
|
495
496
|
- app/views/rails_admin/main/_check_boxes.html.slim
|
497
|
+
- app/views/rails_admin/main/_enjoy_connectable.html.slim
|
496
498
|
- app/views/rails_admin/main/_enjoy_hash.html.slim
|
497
499
|
- app/views/rails_admin/main/_enjoy_html.html.slim
|
498
500
|
- app/views/rails_admin/main/_enum_check_boxes.html.slim
|
@@ -574,10 +576,11 @@ files:
|
|
574
576
|
- lib/enjoy/models/page_blockset.rb
|
575
577
|
- lib/enjoy/models/seo.rb
|
576
578
|
- lib/enjoy/models/sitemap_data.rb
|
577
|
-
- lib/enjoy/
|
578
|
-
- lib/enjoy/
|
579
|
-
- lib/enjoy/
|
580
|
-
- lib/enjoy/
|
579
|
+
- lib/enjoy/rails_admin_ext/enjoy_connectable.rb
|
580
|
+
- lib/enjoy/rails_admin_ext/enjoy_hash.rb
|
581
|
+
- lib/enjoy/rails_admin_ext/enjoy_html.rb
|
582
|
+
- lib/enjoy/rails_admin_ext/group_patch.rb
|
583
|
+
- lib/enjoy/rails_admin_ext/menu.rb
|
581
584
|
- lib/enjoy/simple_form_patch.rb
|
582
585
|
- lib/enjoy/tasks.rb
|
583
586
|
- lib/enjoy/version.rb
|