hancock_cms_pages 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +84 -0
- data/Rakefile +1 -0
- data/app/assets/javascripts/hancock/pages/init.coffee +2 -0
- data/app/assets/javascripts/hancock/pages/scrolling.coffee +55 -0
- data/app/assets/javascripts/hancock/pages.coffee +6 -0
- data/app/assets/stylesheets/hancock/pages.sass +1 -0
- data/app/controllers/concerns/hancock/pages/blocksetable.rb +104 -0
- data/app/controllers/concerns/hancock/pages/decorators/pages.rb +15 -0
- data/app/controllers/concerns/hancock/pages/localizeable.rb +66 -0
- data/app/controllers/concerns/hancock/pages/nav_menu.rb +91 -0
- data/app/controllers/concerns/hancock/pages/seo_pages.rb +99 -0
- data/app/controllers/hancock/pages/pages_controller.rb +7 -0
- data/app/helpers/hancock/pages/canonical_helper.rb +12 -0
- data/app/helpers/hancock/pages/pages_helpers.rb +2 -0
- data/app/models/concerns/hancock/pages/canonicalable.rb +22 -0
- data/app/models/concerns/hancock/pages/connectable.rb +36 -0
- data/app/models/concerns/hancock/pages/decorators/block.rb +39 -0
- data/app/models/concerns/hancock/pages/decorators/blockset.rb +39 -0
- data/app/models/concerns/hancock/pages/decorators/menu.rb +39 -0
- data/app/models/concerns/hancock/pages/decorators/page.rb +39 -0
- data/app/models/hancock/pages/block.rb +13 -0
- data/app/models/hancock/pages/blockset.rb +13 -0
- data/app/models/hancock/pages/menu.rb +16 -0
- data/app/models/hancock/pages/page.rb +16 -0
- data/app/views/blocks/_header.html.slim +4 -0
- data/app/views/hancock/pages/pages/show.html.slim +1 -0
- data/app/views/rails_admin/main/_hancock_connectable.html.slim +56 -0
- data/app/views/shared/_obj.html.slim +26 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/config/initializers/hancock_pages.rb +3 -0
- data/config/locales/hancock.pages.ru.yml +54 -0
- data/hancock_cms_pages.gemspec +37 -0
- data/lib/generators/hancock/pages/config/install_generator.rb +13 -0
- data/lib/generators/hancock/pages/config/templates/hancock_pages.erb +14 -0
- data/lib/generators/hancock/pages/migration_generator.rb +18 -0
- data/lib/generators/hancock/pages/models/block_generator.rb +39 -0
- data/lib/generators/hancock/pages/models/blockset_generator.rb +39 -0
- data/lib/generators/hancock/pages/models/decorators_generator.rb +24 -0
- data/lib/generators/hancock/pages/models/menu_generator.rb +39 -0
- data/lib/generators/hancock/pages/models/page_generator.rb +39 -0
- data/lib/generators/hancock/pages/models/templates/block.erb +37 -0
- data/lib/generators/hancock/pages/models/templates/blockset.erb +34 -0
- data/lib/generators/hancock/pages/models/templates/menu.erb +37 -0
- data/lib/generators/hancock/pages/models/templates/page.erb +43 -0
- data/lib/generators/hancock/pages/templates/migration_blocks.rb +42 -0
- data/lib/generators/hancock/pages/templates/migration_pages.rb +48 -0
- data/lib/hancock/pages/admin/block.rb +81 -0
- data/lib/hancock/pages/admin/blockset.rb +72 -0
- data/lib/hancock/pages/admin/menu.rb +48 -0
- data/lib/hancock/pages/admin/page.rb +105 -0
- data/lib/hancock/pages/admin.rb +45 -0
- data/lib/hancock/pages/configuration.rb +35 -0
- data/lib/hancock/pages/controllers/pages.rb +33 -0
- data/lib/hancock/pages/engine.rb +5 -0
- data/lib/hancock/pages/models/active_record/block.rb +16 -0
- data/lib/hancock/pages/models/active_record/blockset.rb +19 -0
- data/lib/hancock/pages/models/active_record/menu.rb +20 -0
- data/lib/hancock/pages/models/active_record/page.rb +22 -0
- data/lib/hancock/pages/models/block.rb +190 -0
- data/lib/hancock/pages/models/blockset.rb +69 -0
- data/lib/hancock/pages/models/menu.rb +48 -0
- data/lib/hancock/pages/models/mongoid/block.rb +34 -0
- data/lib/hancock/pages/models/mongoid/blockset.rb +22 -0
- data/lib/hancock/pages/models/mongoid/menu.rb +16 -0
- data/lib/hancock/pages/models/mongoid/page.rb +43 -0
- data/lib/hancock/pages/models/page.rb +159 -0
- data/lib/hancock/pages/rails_admin_ext/hancock_connectable.rb +33 -0
- data/lib/hancock/pages/rails_admin_ext/menu.rb +147 -0
- data/lib/hancock/pages/routes.rb +46 -0
- data/lib/hancock/pages/version.rb +5 -0
- data/lib/hancock_cms_pages.rb +54 -0
- data/release.sh +6 -0
- metadata +185 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
module Hancock::Pages::Decorators
|
2
|
+
module Block
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
|
7
|
+
# def nav_options_additions
|
8
|
+
# {}
|
9
|
+
# end
|
10
|
+
|
11
|
+
############# rails_admin ##############
|
12
|
+
# def self.rails_admin_add_fields
|
13
|
+
# [] #super
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# def self.rails_admin_add_config(config)
|
17
|
+
# #super(config)
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def self.admin_can_user_defined_actions
|
21
|
+
# [].freeze
|
22
|
+
# end
|
23
|
+
# def self.admin_cannot_user_defined_actions
|
24
|
+
# [].freeze
|
25
|
+
# end
|
26
|
+
# def self.manager_can_user_defined_actions
|
27
|
+
# [].freeze
|
28
|
+
# end
|
29
|
+
# def self.manager_cannot_user_defined_actions
|
30
|
+
# [].freeze
|
31
|
+
# end
|
32
|
+
# def self.rails_admin_user_defined_visible_actions
|
33
|
+
# [].freeze
|
34
|
+
# end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Hancock::Pages::Decorators
|
2
|
+
module Blockset
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
|
7
|
+
# def nav_options_additions
|
8
|
+
# {}
|
9
|
+
# end
|
10
|
+
|
11
|
+
############# rails_admin ##############
|
12
|
+
# def self.rails_admin_add_fields
|
13
|
+
# [] #super
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# def self.rails_admin_add_config(config)
|
17
|
+
# #super(config)
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def self.admin_can_user_defined_actions
|
21
|
+
# [].freeze
|
22
|
+
# end
|
23
|
+
# def self.admin_cannot_user_defined_actions
|
24
|
+
# [].freeze
|
25
|
+
# end
|
26
|
+
# def self.manager_can_user_defined_actions
|
27
|
+
# [].freeze
|
28
|
+
# end
|
29
|
+
# def self.manager_cannot_user_defined_actions
|
30
|
+
# [].freeze
|
31
|
+
# end
|
32
|
+
# def self.rails_admin_user_defined_visible_actions
|
33
|
+
# [].freeze
|
34
|
+
# end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Hancock::Pages::Decorators
|
2
|
+
module Menu
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
|
7
|
+
# def self.default_cache_keys
|
8
|
+
# ['menus']
|
9
|
+
# end
|
10
|
+
|
11
|
+
############# rails_admin ##############
|
12
|
+
# def self.rails_admin_add_fields
|
13
|
+
# [] #super
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# def self.rails_admin_add_config(config)
|
17
|
+
# #super(config)
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def self.admin_can_user_defined_actions
|
21
|
+
# [].freeze
|
22
|
+
# end
|
23
|
+
# def self.admin_cannot_user_defined_actions
|
24
|
+
# [].freeze
|
25
|
+
# end
|
26
|
+
# def self.manager_can_user_defined_actions
|
27
|
+
# [].freeze
|
28
|
+
# end
|
29
|
+
# def self.manager_cannot_user_defined_actions
|
30
|
+
# [].freeze
|
31
|
+
# end
|
32
|
+
# def self.rails_admin_user_defined_visible_actions
|
33
|
+
# [].freeze
|
34
|
+
# end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Hancock::Pages::Decorators
|
2
|
+
module Page
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
|
7
|
+
# def nav_options_additions
|
8
|
+
# {}
|
9
|
+
# end
|
10
|
+
|
11
|
+
############# rails_admin ##############
|
12
|
+
# def self.rails_admin_add_fields
|
13
|
+
# [] #super
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# def self.rails_admin_add_config(config)
|
17
|
+
# #super(config)
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def self.admin_can_user_defined_actions
|
21
|
+
# [].freeze
|
22
|
+
# end
|
23
|
+
# def self.admin_cannot_user_defined_actions
|
24
|
+
# [].freeze
|
25
|
+
# end
|
26
|
+
# def self.manager_can_user_defined_actions
|
27
|
+
# [].freeze
|
28
|
+
# end
|
29
|
+
# def self.manager_cannot_user_defined_actions
|
30
|
+
# [].freeze
|
31
|
+
# end
|
32
|
+
# def self.rails_admin_user_defined_visible_actions
|
33
|
+
# [].freeze
|
34
|
+
# end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Hancock::Pages
|
2
|
+
if Hancock::Pages.mongoid?
|
3
|
+
class Block < Hancock::EmbeddedElement
|
4
|
+
include Hancock::Pages::Models::Block
|
5
|
+
|
6
|
+
include Hancock::Pages::Decorators::Block
|
7
|
+
|
8
|
+
rails_admin(&Hancock::Pages::Admin::Block.config(rails_admin_add_fields) { |config|
|
9
|
+
rails_admin_add_config(config)
|
10
|
+
})
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Hancock::Pages
|
2
|
+
if Hancock::Pages.mongoid?
|
3
|
+
class Blockset
|
4
|
+
include Hancock::Pages::Models::Blockset
|
5
|
+
|
6
|
+
include Hancock::Pages::Decorators::Blockset
|
7
|
+
|
8
|
+
rails_admin(&Hancock::Pages::Admin::Blockset.config(rails_admin_add_fields) { |config|
|
9
|
+
rails_admin_add_config(config)
|
10
|
+
})
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Hancock::Pages
|
2
|
+
if Hancock::Pages.active_record?
|
3
|
+
class Menu < ActiveRecord::Base
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
class Menu
|
8
|
+
include Hancock::Pages::Models::Menu
|
9
|
+
|
10
|
+
include Hancock::Pages::Decorators::Menu
|
11
|
+
|
12
|
+
rails_admin(&Hancock::Pages::Admin::Menu.config(rails_admin_add_fields) { |config|
|
13
|
+
rails_admin_add_config(config)
|
14
|
+
})
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Hancock::Pages
|
2
|
+
if Hancock::Pages.active_record?
|
3
|
+
class Page < ActiveRecord::Base
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
class Page
|
8
|
+
include Hancock::Pages::Models::Page
|
9
|
+
|
10
|
+
include Hancock::Pages::Decorators::Page
|
11
|
+
|
12
|
+
rails_admin(&Hancock::Pages::Admin::Page.config(rails_admin_add_fields) { |config|
|
13
|
+
rails_admin_add_config(config)
|
14
|
+
})
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
= render 'shared/obj', obj: @seo_page
|
@@ -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: false, 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
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
- unless obj.nil?
|
2
|
+
.text_content
|
3
|
+
- if obj.respond_to?(:seo)
|
4
|
+
- seo = obj.seo
|
5
|
+
- if (!defined?(h1) || h1) && seo and !seo.h1.blank?
|
6
|
+
h1= seo.h1
|
7
|
+
|
8
|
+
- if obj.content.blank?
|
9
|
+
- unless @seo_page.nil?
|
10
|
+
= raw @seo_page.page_content
|
11
|
+
- else
|
12
|
+
= raw obj.content
|
13
|
+
|
14
|
+
.admin_button
|
15
|
+
= render 'shared/admin_link', obj: obj
|
16
|
+
- if !@seo_page.nil? && (@seo_page.id != obj.id || @seo_page.class.name != obj.class.name)
|
17
|
+
= render 'shared/admin_link', obj: @seo_page
|
18
|
+
|
19
|
+
- content_for :meta do
|
20
|
+
- if obj.respond_to?(:seo)
|
21
|
+
= render 'shared/meta', obj: obj
|
22
|
+
= render 'shared/og', title: obj.get_og_title, image: obj.og_image
|
23
|
+
|
24
|
+
- content_for :title do
|
25
|
+
- if obj.respond_to?(:title) and obj.title
|
26
|
+
= obj.title
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "hancock_cms_pages"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
ru:
|
2
|
+
admin:
|
3
|
+
actions:
|
4
|
+
toggle_menu:
|
5
|
+
menu: Переключатель меню
|
6
|
+
breadcrumb: Переключатель меню
|
7
|
+
title: Переключатель меню
|
8
|
+
|
9
|
+
hancock:
|
10
|
+
pages: 'Страницы и меню'
|
11
|
+
menu_title: Меню
|
12
|
+
menu:
|
13
|
+
enabled: 'добавлено в меню "%{menu}"'
|
14
|
+
disabled: 'удалено из меню "%{menu}"'
|
15
|
+
error: "Ошибка: %{err}"
|
16
|
+
no_id: "Не указан ID"
|
17
|
+
|
18
|
+
mongoid: &mongoid
|
19
|
+
models:
|
20
|
+
hancock/pages/menu: Меню
|
21
|
+
hancock/pages/page: Страница
|
22
|
+
hancock/pages/block: Блок
|
23
|
+
hancock/pages/blockset: Блоки
|
24
|
+
attributes:
|
25
|
+
hancock/pages/page:
|
26
|
+
fullpath: URL
|
27
|
+
regexp: Подсветка меню
|
28
|
+
redirect: Редирект
|
29
|
+
menus: Меню
|
30
|
+
connectable: Связанный элемент
|
31
|
+
connectable_type: Связанный элемент
|
32
|
+
connectable_id: Связанный элемент
|
33
|
+
hancock/pages/blockset:
|
34
|
+
blocks: Блоки
|
35
|
+
use_wrapper: Завернуть во враппер?
|
36
|
+
wrapper_tag: Тэг враппера
|
37
|
+
wrapper_class: class-атрибут враппера
|
38
|
+
wrapper_id: id-атрибут враппера
|
39
|
+
wrapper_attributes: Прочие атрибуты враппера
|
40
|
+
hancock/pages/block:
|
41
|
+
partial: "Файл-partial"
|
42
|
+
file_path: "Путь к файлу"
|
43
|
+
show_in_menu: Показывать в меню
|
44
|
+
partial: Как partial?
|
45
|
+
menu_link_content: HTML ссылки в меню
|
46
|
+
pageblock_selector: CSS-селектор блока на странице
|
47
|
+
use_wrapper: Завернуть во враппер?
|
48
|
+
wrapper_tag: Тэг враппера
|
49
|
+
wrapper_class: class-атрибут враппера
|
50
|
+
wrapper_id: id-атрибут враппера
|
51
|
+
wrapper_attributes: Прочие атрибуты враппера
|
52
|
+
|
53
|
+
activerecord:
|
54
|
+
<<: *mongoid
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'hancock/pages/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "hancock_cms_pages"
|
8
|
+
spec.version = Hancock::Pages::VERSION
|
9
|
+
spec.authors = ["Alexander Kiseliev"]
|
10
|
+
spec.email = ["dev@redrocks.pro"]
|
11
|
+
|
12
|
+
spec.description = %q{hancock_cms_pages }
|
13
|
+
spec.summary = %q{hancock_cms_pages}
|
14
|
+
spec.homepage = 'https://github.com/red-rocks/hancock_cms_pages'
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
18
|
+
# delete this section to allow pushing this gem to any host.
|
19
|
+
# if spec.respond_to?(:metadata)
|
20
|
+
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
21
|
+
# else
|
22
|
+
# raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
|
+
# end
|
24
|
+
|
25
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
+
spec.bindir = "exe"
|
27
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
31
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
+
|
33
|
+
spec.add_dependency 'hancock_cms', [">=1.0", "<=2.0"]
|
34
|
+
# spec.add_dependency 'hancock_cms', ["~> 1.0", "~> 2.0"]
|
35
|
+
|
36
|
+
spec.add_dependency 'simple-navigation'
|
37
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Hancock::Pages
|
4
|
+
class ConfigGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
desc 'Hancock::Pages Config generator'
|
8
|
+
def config
|
9
|
+
template 'hancock_pages.erb', "config/initializers/hancock_pages.rb"
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Hancock::Pages.configure do |config|
|
2
|
+
##### defaults #####
|
3
|
+
# config.menu_max_depth = 2
|
4
|
+
#
|
5
|
+
# config.seo_support = defined? Hancock::Seo
|
6
|
+
#
|
7
|
+
# config.localize = Hancock.config.localize
|
8
|
+
#
|
9
|
+
# config.breadcrumbs_on_rails_support = defined?(BreadcrumbsOnRails)
|
10
|
+
#
|
11
|
+
# config.model_settings_support = defined?(RailsAdminModelSettings)
|
12
|
+
# config.user_abilities_support = defined?(RailsAdminUserAbilities)
|
13
|
+
# config.ra_comments_support = defined?(RailsAdminComments)
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/active_record'
|
3
|
+
|
4
|
+
module Hancock::Pages
|
5
|
+
class MigrationGenerator < Rails::Generators::Base
|
6
|
+
include ActiveRecord::Generators::Migration
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
8
|
+
|
9
|
+
desc 'Hancock Pages migration generator'
|
10
|
+
def install
|
11
|
+
if Hancock.active_record?
|
12
|
+
%w(pages blocks).each do |table_name|
|
13
|
+
migration_template "migration_#{table_name}.rb", "db/migrate/hancock_create_#{table_name}.rb"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Hancock::Pages::Models
|
4
|
+
class BlockGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
argument :class_name_arg, type: :string, default: ""
|
7
|
+
|
8
|
+
desc 'Hancock::Pages Block Model generator'
|
9
|
+
def block
|
10
|
+
template 'block.erb', "app/models/#{file_name}.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def class_name
|
15
|
+
class_name_arg.blank? ? "SetClassForBlock" : class_name_arg
|
16
|
+
end
|
17
|
+
|
18
|
+
def capitalized_class_name
|
19
|
+
class_name.capitalize
|
20
|
+
end
|
21
|
+
|
22
|
+
def camelcased_class_name
|
23
|
+
class_name.camelcase
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_name
|
27
|
+
underscored_class_name
|
28
|
+
end
|
29
|
+
|
30
|
+
def underscored_class_name
|
31
|
+
camelcased_class_name.underscore
|
32
|
+
end
|
33
|
+
|
34
|
+
def underscored_pluralized_class_name
|
35
|
+
underscored_class_name.pluralize
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Hancock::Pages::Models
|
4
|
+
class BlocksetGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
argument :class_name_arg, type: :string, default: ""
|
7
|
+
|
8
|
+
desc 'Hancock::Pages Blockset Model generator'
|
9
|
+
def blockset
|
10
|
+
template 'blockset.erb', "app/models/#{file_name}.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def class_name
|
15
|
+
class_name_arg.blank? ? "SetClassForBlockset" : class_name_arg
|
16
|
+
end
|
17
|
+
|
18
|
+
def capitalized_class_name
|
19
|
+
class_name.capitalize
|
20
|
+
end
|
21
|
+
|
22
|
+
def camelcased_class_name
|
23
|
+
class_name.camelcase
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_name
|
27
|
+
underscored_class_name
|
28
|
+
end
|
29
|
+
|
30
|
+
def underscored_class_name
|
31
|
+
camelcased_class_name.underscore
|
32
|
+
end
|
33
|
+
|
34
|
+
def underscored_pluralized_class_name
|
35
|
+
underscored_class_name.pluralize
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Hancock::Pages::Models
|
4
|
+
class DecoratorsGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../../../../../../app/models/concerns/hancock/pages/decorators', __FILE__)
|
6
|
+
argument :models, type: :array, default: []
|
7
|
+
|
8
|
+
desc 'Hancock::Pages Models decorators generator'
|
9
|
+
def decorators
|
10
|
+
copied = false
|
11
|
+
(models == ['all'] ? permitted_models : models & permitted_models).each do |m|
|
12
|
+
copied = true
|
13
|
+
copy_file "#{m}.rb", "app/models/concerns/hancock/pages/decorators/#{m}.rb"
|
14
|
+
end
|
15
|
+
puts "U need to set models`s name. One of this: #{permitted_models.join(", ")}." unless copied
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def permitted_models
|
20
|
+
['page', 'menu', 'block', 'blockset']
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Hancock::Pages::Models
|
4
|
+
class MenuGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
argument :class_name_arg, type: :string, default: ""
|
7
|
+
|
8
|
+
desc 'Hancock::Pages Menu Model generator'
|
9
|
+
def menu
|
10
|
+
template 'menu.erb', "app/models/#{file_name}.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def class_name
|
15
|
+
class_name_arg.blank? ? "SetClassForMenu" : class_name_arg
|
16
|
+
end
|
17
|
+
|
18
|
+
def capitalized_class_name
|
19
|
+
class_name.capitalize
|
20
|
+
end
|
21
|
+
|
22
|
+
def camelcased_class_name
|
23
|
+
class_name.camelcase
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_name
|
27
|
+
underscored_class_name
|
28
|
+
end
|
29
|
+
|
30
|
+
def underscored_class_name
|
31
|
+
camelcased_class_name.underscore
|
32
|
+
end
|
33
|
+
|
34
|
+
def underscored_pluralized_class_name
|
35
|
+
underscored_class_name.pluralize
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Hancock::Pages::Models
|
4
|
+
class PageGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
argument :class_name_arg, type: :string, default: ""
|
7
|
+
|
8
|
+
desc 'Hancock::Pages Page Model generator'
|
9
|
+
def page
|
10
|
+
template 'page.erb', "app/models/#{file_name}.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def class_name
|
15
|
+
class_name_arg.blank? ? "SetClassForPage" : class_name_arg
|
16
|
+
end
|
17
|
+
|
18
|
+
def capitalized_class_name
|
19
|
+
class_name.capitalize
|
20
|
+
end
|
21
|
+
|
22
|
+
def camelcased_class_name
|
23
|
+
class_name.camelcase
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_name
|
27
|
+
underscored_class_name
|
28
|
+
end
|
29
|
+
|
30
|
+
def underscored_class_name
|
31
|
+
camelcased_class_name.underscore
|
32
|
+
end
|
33
|
+
|
34
|
+
def underscored_pluralized_class_name
|
35
|
+
underscored_class_name.pluralize
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|