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,147 @@
1
+ require 'rails_admin/config/fields/base'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class Menu < RailsAdmin::Config::Fields::Base
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types::register(self)
10
+ include RailsAdmin::Engine.routes.url_helpers
11
+
12
+ register_instance_option :pretty_value do
13
+ obj = bindings[:object]
14
+ ret = []
15
+ menus = Rails.cache.fetch 'menus' do
16
+ if Hancock.mongoid?
17
+ ::Hancock::Pages::Menu.all.map { |m| {id: m.id.to_s, name: m.name } }
18
+ else
19
+ ::Hancock::Pages::Menu.all.map { |m| {id: m.id, name: m.name } }
20
+ end
21
+ end
22
+ menus.each do |m|
23
+ if Hancock.mongoid?
24
+ on = obj.menu_ids.include?(BSON::ObjectId.from_string(m[:id]))
25
+ else
26
+ on = obj.menu_ids.include?(m[:id].to_i)
27
+ end
28
+ ret << bindings[:view].link_to(
29
+ m[:name],
30
+ bindings[:view].toggle_menu_path(model_name: @abstract_model, id: obj.id, menu: m[:id], on: !on),
31
+ #method: :post,
32
+ title: m[:name],
33
+ class: "btn btn-mini #{on ? "btn-success" : "btn-danger"}",
34
+ style: 'margin-bottom: 5px;',
35
+ onclick: 'var $t = $(this); $.ajax({type: "POST", url: $t.attr("href"), data: {ajax:true}, success: function(r) { $t.attr("href", r.href); $t.attr("class", r.class); }, error: function(e) { alert(e.responseText); }}); return false;'
36
+ )
37
+ end
38
+ ('<div style="white-space: normal;">' + ret.join(' ') + '</div>').html_safe
39
+ end
40
+
41
+ register_instance_option :formatted_value do
42
+ pretty_value
43
+ end
44
+
45
+ register_instance_option :export_value do
46
+ nil
47
+ end
48
+
49
+ register_instance_option :partial do
50
+ :form_raw
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ module RailsAdmin
59
+ module Config
60
+ module Actions
61
+ class ToggleMenu < Base
62
+ RailsAdmin::Config::Actions.register(self)
63
+
64
+ # Is the action acting on the root level (Example: /admin/contact)
65
+ register_instance_option :root? do
66
+ false
67
+ end
68
+
69
+ register_instance_option :collection? do
70
+ false
71
+ end
72
+
73
+ # Is the action on an object scope (Example: /admin/team/1/edit)
74
+ register_instance_option :member? do
75
+ true
76
+ end
77
+
78
+ register_instance_option :controller do
79
+ proc do
80
+ ajax_link = Proc.new do |am, obj, menu, on|
81
+ render json: {
82
+ href: toggle_menu_path(model_name: am, id: obj.id, menu: menu.id, on: !on),
83
+ class: "btn btn-mini #{on ? "btn-success" : "btn-danger"}",
84
+ }
85
+ end
86
+ if params['id'].present?
87
+ begin
88
+ @object = @abstract_model.model.find(params['id'])
89
+ @menu = ::Hancock::Pages::Menu.find(params[:menu])
90
+ if params[:on] == 'true'
91
+ @object.menus << @menu
92
+ else
93
+ @object.menus.delete(@menu)
94
+ end
95
+
96
+ if @object.save
97
+ if params['ajax'].present?
98
+ if params[:on] == 'true'
99
+ ajax_link.call(@abstract_model, @object, @menu, true)
100
+ else
101
+ ajax_link.call(@abstract_model, @object, @menu, false)
102
+ end
103
+ else
104
+ if params[:on] == 'true'
105
+ flash[:success] = I18n.t('hancock.menu.enabled', menu: @menu.name)
106
+ else
107
+ flash[:success] = I18n.t('hancock.menu.disabled', menu: @menu.name)
108
+ end
109
+ end
110
+ else
111
+ if params['ajax'].present?
112
+ render text: @object.errors.full_messages.join(', '), layout: false, status: 422
113
+ else
114
+ flash[:error] = @object.errors.full_messages.join(', ')
115
+ end
116
+ end
117
+ rescue Exception => e
118
+ if params['ajax'].present?
119
+ render text: I18n.t('hancock.menu.error', err: e.to_s), status: 422
120
+ else
121
+ flash[:error] = I18n.t('hancock.menu.error', err: e.to_s)
122
+ end
123
+ end
124
+ else
125
+ if params['ajax'].present?
126
+ render text: I18n.t('hancock.menu.no_id'), status: 422
127
+ else
128
+ flash[:error] = I18n.t('hancock.menu.no_id')
129
+ end
130
+
131
+ end
132
+
133
+ redirect_to :back unless params['ajax'].present?
134
+ end
135
+ end
136
+
137
+ register_instance_option :link_icon do
138
+ 'icon-move'
139
+ end
140
+
141
+ register_instance_option :http_methods do
142
+ [:post]
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,46 @@
1
+ module ActionDispatch::Routing
2
+ class Mapper
3
+
4
+ def hancock_cms_pages_routes(config = {})
5
+ routes_config = {
6
+ use_slug_path: true,
7
+ use_pages_path: true,
8
+ classes: {
9
+ pages: :pages
10
+ },
11
+ paths: {
12
+ pages: :pages
13
+ }
14
+ }
15
+ routes_config.deep_merge!(config)
16
+
17
+ generate_hancock_pages_user_routes(routes_config)
18
+ generate_hancock_pages_cms_routes(routes_config)
19
+
20
+ end
21
+
22
+
23
+ private
24
+ def generate_hancock_pages_user_routes(routes_config)
25
+ if !routes_config[:use_pages_path] and !routes_config[:classes][:pages].nil?
26
+ resources routes_config[:classes][:pages].to_sym, only: [:show], path: routes_config[:paths][:pages]
27
+ end
28
+ if !routes_config[:use_slug_path] and !routes_config[:classes][:pages].nil?
29
+ get '*slug' => "#{routes_config[:classes][:pages]}#show"
30
+ end
31
+ end
32
+ def generate_hancock_pages_cms_routes(routes_config)
33
+ scope module: 'hancock' do
34
+ scope module: 'pages' do
35
+ if routes_config[:use_pages_path] and !routes_config[:classes][:pages].nil?
36
+ resources routes_config[:classes][:pages].to_sym, only: [:show], path: routes_config[:paths][:pages], as: :hancock_pages
37
+ end
38
+ if routes_config[:use_slug_path] and !routes_config[:classes][:pages].nil?
39
+ get '*slug' => "#{routes_config[:classes][:pages]}#show"
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ end
46
+ end
@@ -0,0 +1,5 @@
1
+ module Hancock
2
+ module Pages
3
+ VERSION = "1.0.0".freeze
4
+ end
5
+ end
@@ -0,0 +1,54 @@
1
+ # unless defined?(Hancock) && Hancock.respond_to?(:orm) && [:active_record, :mongoid].include?(Hancock.orm)
2
+ # puts "please use hancock_cms_mongoid or hancock_cms_activerecord"
3
+ # puts "also: please use hancock_cms_news_mongoid or hancock_cms_news_activerecord and not hancock_cms_news directly"
4
+ # exit 1
5
+ # end
6
+
7
+ require "hancock/pages/version"
8
+ require 'hancock/pages/engine'
9
+ require 'hancock/pages/configuration'
10
+
11
+ require "hancock/pages/routes"
12
+
13
+ require 'hancock/pages/rails_admin_ext/hancock_connectable'
14
+ require 'hancock/pages/rails_admin_ext/menu'
15
+
16
+ require 'simple-navigation'
17
+
18
+ module Hancock::Pages
19
+ include Hancock::Plugin
20
+
21
+ autoload :Admin, 'hancock/pages/admin'
22
+ module Admin
23
+ autoload :Page, 'hancock/pages/admin/page'
24
+ autoload :Menu, 'hancock/pages/admin/menu'
25
+ autoload :Block, 'hancock/pages/admin/block'
26
+ autoload :Blockset, 'hancock/pages/admin/blockset'
27
+ end
28
+
29
+ module Models
30
+ autoload :Page, 'hancock/pages/models/page'
31
+ autoload :Menu, 'hancock/pages/models/menu'
32
+ autoload :Block, 'hancock/pages/models/block'
33
+ autoload :Blockset, 'hancock/pages/models/blockset'
34
+
35
+ module Mongoid
36
+ autoload :Page, 'hancock/pages/models/mongoid/page'
37
+ autoload :Menu, 'hancock/pages/models/mongoid/menu'
38
+ autoload :Block, 'hancock/pages/models/mongoid/block'
39
+ autoload :Blockset, 'hancock/pages/models/mongoid/blockset'
40
+ end
41
+
42
+ module ActiveRecord
43
+ autoload :Page, 'hancock/pages/models/active_record/page'
44
+ autoload :Menu, 'hancock/pages/models/active_record/menu'
45
+ autoload :Block, 'hancock/pages/models/active_record/block'
46
+ autoload :Blockset, 'hancock/pages/models/active_record/blockset'
47
+ end
48
+ end
49
+
50
+ module Controllers
51
+ autoload :Pages, 'hancock/pages/controllers/pages'
52
+ end
53
+
54
+ end
data/release.sh ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/bash
2
+ bundle update
3
+ git add --all .
4
+ git commit -am "${*:1}"
5
+ git push -u origin origin master
6
+ rake release
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hancock_cms_pages
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Kiseliev
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-11-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hancock_cms
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ - - "<="
49
+ - !ruby/object:Gem::Version
50
+ version: '2.0'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '1.0'
58
+ - - "<="
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: simple-navigation
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ description: 'hancock_cms_pages '
76
+ email:
77
+ - dev@redrocks.pro
78
+ executables: []
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - ".gitignore"
83
+ - ".ruby-gemset"
84
+ - ".ruby-version"
85
+ - ".travis.yml"
86
+ - Gemfile
87
+ - LICENSE.txt
88
+ - README.md
89
+ - Rakefile
90
+ - app/assets/javascripts/hancock/pages.coffee
91
+ - app/assets/javascripts/hancock/pages/init.coffee
92
+ - app/assets/javascripts/hancock/pages/scrolling.coffee
93
+ - app/assets/stylesheets/hancock/pages.sass
94
+ - app/controllers/concerns/hancock/pages/blocksetable.rb
95
+ - app/controllers/concerns/hancock/pages/decorators/pages.rb
96
+ - app/controllers/concerns/hancock/pages/localizeable.rb
97
+ - app/controllers/concerns/hancock/pages/nav_menu.rb
98
+ - app/controllers/concerns/hancock/pages/seo_pages.rb
99
+ - app/controllers/hancock/pages/pages_controller.rb
100
+ - app/helpers/hancock/pages/canonical_helper.rb
101
+ - app/helpers/hancock/pages/pages_helpers.rb
102
+ - app/models/concerns/hancock/pages/canonicalable.rb
103
+ - app/models/concerns/hancock/pages/connectable.rb
104
+ - app/models/concerns/hancock/pages/decorators/block.rb
105
+ - app/models/concerns/hancock/pages/decorators/blockset.rb
106
+ - app/models/concerns/hancock/pages/decorators/menu.rb
107
+ - app/models/concerns/hancock/pages/decorators/page.rb
108
+ - app/models/hancock/pages/block.rb
109
+ - app/models/hancock/pages/blockset.rb
110
+ - app/models/hancock/pages/menu.rb
111
+ - app/models/hancock/pages/page.rb
112
+ - app/views/blocks/_header.html.slim
113
+ - app/views/hancock/pages/pages/show.html.slim
114
+ - app/views/rails_admin/main/_hancock_connectable.html.slim
115
+ - app/views/shared/_obj.html.slim
116
+ - bin/console
117
+ - bin/setup
118
+ - config/initializers/hancock_pages.rb
119
+ - config/locales/hancock.pages.ru.yml
120
+ - hancock_cms_pages.gemspec
121
+ - lib/generators/hancock/pages/config/install_generator.rb
122
+ - lib/generators/hancock/pages/config/templates/hancock_pages.erb
123
+ - lib/generators/hancock/pages/migration_generator.rb
124
+ - lib/generators/hancock/pages/models/block_generator.rb
125
+ - lib/generators/hancock/pages/models/blockset_generator.rb
126
+ - lib/generators/hancock/pages/models/decorators_generator.rb
127
+ - lib/generators/hancock/pages/models/menu_generator.rb
128
+ - lib/generators/hancock/pages/models/page_generator.rb
129
+ - lib/generators/hancock/pages/models/templates/block.erb
130
+ - lib/generators/hancock/pages/models/templates/blockset.erb
131
+ - lib/generators/hancock/pages/models/templates/menu.erb
132
+ - lib/generators/hancock/pages/models/templates/page.erb
133
+ - lib/generators/hancock/pages/templates/migration_blocks.rb
134
+ - lib/generators/hancock/pages/templates/migration_pages.rb
135
+ - lib/hancock/pages/admin.rb
136
+ - lib/hancock/pages/admin/block.rb
137
+ - lib/hancock/pages/admin/blockset.rb
138
+ - lib/hancock/pages/admin/menu.rb
139
+ - lib/hancock/pages/admin/page.rb
140
+ - lib/hancock/pages/configuration.rb
141
+ - lib/hancock/pages/controllers/pages.rb
142
+ - lib/hancock/pages/engine.rb
143
+ - lib/hancock/pages/models/active_record/block.rb
144
+ - lib/hancock/pages/models/active_record/blockset.rb
145
+ - lib/hancock/pages/models/active_record/menu.rb
146
+ - lib/hancock/pages/models/active_record/page.rb
147
+ - lib/hancock/pages/models/block.rb
148
+ - lib/hancock/pages/models/blockset.rb
149
+ - lib/hancock/pages/models/menu.rb
150
+ - lib/hancock/pages/models/mongoid/block.rb
151
+ - lib/hancock/pages/models/mongoid/blockset.rb
152
+ - lib/hancock/pages/models/mongoid/menu.rb
153
+ - lib/hancock/pages/models/mongoid/page.rb
154
+ - lib/hancock/pages/models/page.rb
155
+ - lib/hancock/pages/rails_admin_ext/hancock_connectable.rb
156
+ - lib/hancock/pages/rails_admin_ext/menu.rb
157
+ - lib/hancock/pages/routes.rb
158
+ - lib/hancock/pages/version.rb
159
+ - lib/hancock_cms_pages.rb
160
+ - release.sh
161
+ homepage: https://github.com/red-rocks/hancock_cms_pages
162
+ licenses:
163
+ - MIT
164
+ metadata: {}
165
+ post_install_message:
166
+ rdoc_options: []
167
+ require_paths:
168
+ - lib
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements: []
180
+ rubyforge_project:
181
+ rubygems_version: 2.5.1
182
+ signing_key:
183
+ specification_version: 4
184
+ summary: hancock_cms_pages
185
+ test_files: []