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.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +4 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +84 -0
  9. data/Rakefile +1 -0
  10. data/app/assets/javascripts/hancock/pages/init.coffee +2 -0
  11. data/app/assets/javascripts/hancock/pages/scrolling.coffee +55 -0
  12. data/app/assets/javascripts/hancock/pages.coffee +6 -0
  13. data/app/assets/stylesheets/hancock/pages.sass +1 -0
  14. data/app/controllers/concerns/hancock/pages/blocksetable.rb +104 -0
  15. data/app/controllers/concerns/hancock/pages/decorators/pages.rb +15 -0
  16. data/app/controllers/concerns/hancock/pages/localizeable.rb +66 -0
  17. data/app/controllers/concerns/hancock/pages/nav_menu.rb +91 -0
  18. data/app/controllers/concerns/hancock/pages/seo_pages.rb +99 -0
  19. data/app/controllers/hancock/pages/pages_controller.rb +7 -0
  20. data/app/helpers/hancock/pages/canonical_helper.rb +12 -0
  21. data/app/helpers/hancock/pages/pages_helpers.rb +2 -0
  22. data/app/models/concerns/hancock/pages/canonicalable.rb +22 -0
  23. data/app/models/concerns/hancock/pages/connectable.rb +36 -0
  24. data/app/models/concerns/hancock/pages/decorators/block.rb +39 -0
  25. data/app/models/concerns/hancock/pages/decorators/blockset.rb +39 -0
  26. data/app/models/concerns/hancock/pages/decorators/menu.rb +39 -0
  27. data/app/models/concerns/hancock/pages/decorators/page.rb +39 -0
  28. data/app/models/hancock/pages/block.rb +13 -0
  29. data/app/models/hancock/pages/blockset.rb +13 -0
  30. data/app/models/hancock/pages/menu.rb +16 -0
  31. data/app/models/hancock/pages/page.rb +16 -0
  32. data/app/views/blocks/_header.html.slim +4 -0
  33. data/app/views/hancock/pages/pages/show.html.slim +1 -0
  34. data/app/views/rails_admin/main/_hancock_connectable.html.slim +56 -0
  35. data/app/views/shared/_obj.html.slim +26 -0
  36. data/bin/console +14 -0
  37. data/bin/setup +7 -0
  38. data/config/initializers/hancock_pages.rb +3 -0
  39. data/config/locales/hancock.pages.ru.yml +54 -0
  40. data/hancock_cms_pages.gemspec +37 -0
  41. data/lib/generators/hancock/pages/config/install_generator.rb +13 -0
  42. data/lib/generators/hancock/pages/config/templates/hancock_pages.erb +14 -0
  43. data/lib/generators/hancock/pages/migration_generator.rb +18 -0
  44. data/lib/generators/hancock/pages/models/block_generator.rb +39 -0
  45. data/lib/generators/hancock/pages/models/blockset_generator.rb +39 -0
  46. data/lib/generators/hancock/pages/models/decorators_generator.rb +24 -0
  47. data/lib/generators/hancock/pages/models/menu_generator.rb +39 -0
  48. data/lib/generators/hancock/pages/models/page_generator.rb +39 -0
  49. data/lib/generators/hancock/pages/models/templates/block.erb +37 -0
  50. data/lib/generators/hancock/pages/models/templates/blockset.erb +34 -0
  51. data/lib/generators/hancock/pages/models/templates/menu.erb +37 -0
  52. data/lib/generators/hancock/pages/models/templates/page.erb +43 -0
  53. data/lib/generators/hancock/pages/templates/migration_blocks.rb +42 -0
  54. data/lib/generators/hancock/pages/templates/migration_pages.rb +48 -0
  55. data/lib/hancock/pages/admin/block.rb +81 -0
  56. data/lib/hancock/pages/admin/blockset.rb +72 -0
  57. data/lib/hancock/pages/admin/menu.rb +48 -0
  58. data/lib/hancock/pages/admin/page.rb +105 -0
  59. data/lib/hancock/pages/admin.rb +45 -0
  60. data/lib/hancock/pages/configuration.rb +35 -0
  61. data/lib/hancock/pages/controllers/pages.rb +33 -0
  62. data/lib/hancock/pages/engine.rb +5 -0
  63. data/lib/hancock/pages/models/active_record/block.rb +16 -0
  64. data/lib/hancock/pages/models/active_record/blockset.rb +19 -0
  65. data/lib/hancock/pages/models/active_record/menu.rb +20 -0
  66. data/lib/hancock/pages/models/active_record/page.rb +22 -0
  67. data/lib/hancock/pages/models/block.rb +190 -0
  68. data/lib/hancock/pages/models/blockset.rb +69 -0
  69. data/lib/hancock/pages/models/menu.rb +48 -0
  70. data/lib/hancock/pages/models/mongoid/block.rb +34 -0
  71. data/lib/hancock/pages/models/mongoid/blockset.rb +22 -0
  72. data/lib/hancock/pages/models/mongoid/menu.rb +16 -0
  73. data/lib/hancock/pages/models/mongoid/page.rb +43 -0
  74. data/lib/hancock/pages/models/page.rb +159 -0
  75. data/lib/hancock/pages/rails_admin_ext/hancock_connectable.rb +33 -0
  76. data/lib/hancock/pages/rails_admin_ext/menu.rb +147 -0
  77. data/lib/hancock/pages/routes.rb +46 -0
  78. data/lib/hancock/pages/version.rb +5 -0
  79. data/lib/hancock_cms_pages.rb +54 -0
  80. data/release.sh +6 -0
  81. 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,4 @@
1
+ #logo
2
+
3
+ #main-nav
4
+ = render_navigation &navigation(:main)
@@ -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,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,3 @@
1
+ Hancock.rails_admin_configure do |config|
2
+ config.action_visible_for :toggle_menu, 'Hancock::Pages::Page'
3
+ end
@@ -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