enjoy_cms 0.1.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +249 -0
- data/LICENSE.txt +22 -0
- data/README.md +137 -0
- data/Rakefile +1 -0
- data/app/assets/javascripts/enjoy_cms.coffee +6 -0
- data/app/assets/javascripts/enjoy_cms/flash.js.coffee +3 -0
- data/app/assets/javascripts/enjoy_cms/map.js.coffee +22 -0
- data/app/assets/javascripts/head.load.js +707 -0
- data/app/assets/javascripts/jquery.placeholder.js +157 -0
- data/app/assets/stylesheets/enjoy_cms.sass +5 -0
- data/app/assets/stylesheets/enjoy_cms/flash.sass +63 -0
- data/app/assets/stylesheets/enjoy_cms/normalize.scss +406 -0
- data/app/assets/stylesheets/enjoy_cms/powered.sass +18 -0
- data/app/controllers/concerns/enjoy/errors.rb +93 -0
- data/app/controllers/concerns/enjoy/fancybox.rb +14 -0
- data/app/controllers/concerns/enjoy/localizeable.rb +33 -0
- data/app/controllers/concerns/enjoy/nav_menu.rb +64 -0
- data/app/controllers/concerns/enjoy/no_cache.rb +12 -0
- data/app/controllers/concerns/enjoy/seo_pages.rb +83 -0
- data/app/controllers/enjoy/contacts_controller.rb +5 -0
- data/app/controllers/enjoy/home_controller.rb +6 -0
- data/app/controllers/enjoy/news_controller.rb +5 -0
- data/app/controllers/enjoy/pages_controller.rb +5 -0
- data/app/controllers/enjoy/search_controller.rb +6 -0
- data/app/helpers/enjoy/gzip_helper.rb +27 -0
- data/app/helpers/enjoy/powered_helper.rb +12 -0
- data/app/mailers/enjoy/contact_mailer.rb +17 -0
- data/app/models/concerns/enjoy/boolean_field.rb +17 -0
- data/app/models/concerns/enjoy/enableable.rb +8 -0
- data/app/models/concerns/enjoy/geocodeable.rb +4 -0
- data/app/models/concerns/enjoy/mappable.rb +95 -0
- data/app/models/concerns/enjoy/mongoid_paperclip.rb +37 -0
- data/app/models/concerns/enjoy/seoable.rb +36 -0
- data/app/models/concerns/enjoy/sitemap_data.rb +23 -0
- data/app/models/concerns/enjoy/sort_field.rb +20 -0
- data/app/models/concerns/enjoy/sortable.rb +8 -0
- data/app/models/enjoy/contact_message.rb +12 -0
- data/app/models/enjoy/embedded_element.rb +15 -0
- data/app/models/enjoy/embedded_gallery_image.rb +15 -0
- data/app/models/enjoy/gallery.rb +10 -0
- data/app/models/enjoy/gallery_image.rb +10 -0
- data/app/models/enjoy/menu.rb +12 -0
- data/app/models/enjoy/news.rb +12 -0
- data/app/models/enjoy/page.rb +12 -0
- data/app/models/enjoy/seo.rb +13 -0
- data/app/views/blocks/_favicon.html.slim +21 -0
- data/app/views/blocks/_footer.html.slim +1 -0
- data/app/views/blocks/_seo_block.html.slim +18 -0
- data/app/views/blocks/_seo_block_with_obj.html.slim +27 -0
- data/app/views/devise/registrations/edit.html.slim +21 -0
- data/app/views/devise/registrations/new.html.slim +21 -0
- data/app/views/devise/sessions/new.html.slim +22 -0
- data/app/views/devise/shared/_links.html.slim +11 -0
- data/app/views/enjoy/contact_mailer/new_message_email.html.slim +15 -0
- data/app/views/enjoy/contacts/index.html.slim +10 -0
- data/app/views/enjoy/contacts/new.html.slim +10 -0
- data/app/views/enjoy/contacts/sent.html.slim +4 -0
- data/app/views/enjoy/home/index.html.slim +1 -0
- data/app/views/enjoy/news/index.html.slim +9 -0
- data/app/views/enjoy/news/show.html.slim +8 -0
- data/app/views/enjoy/pages/show.html.slim +1 -0
- data/app/views/enjoy/search/index.html.slim +19 -0
- data/app/views/errors/_base.html.slim +3 -0
- data/app/views/errors/error_403.html.slim +1 -0
- data/app/views/errors/error_404.html.slim +1 -0
- data/app/views/errors/error_500.html.slim +1 -0
- data/app/views/layouts/application.html.slim +25 -0
- data/app/views/rails_admin/main/_check_boxes.html.slim +27 -0
- data/app/views/rails_admin/main/_enum_check_boxes.html.slim +5 -0
- data/app/views/rails_admin/main/_enum_radio_buttons.html.slim +5 -0
- data/app/views/rails_admin/main/_form_raw.html.slim +1 -0
- data/app/views/shared/_admin_link.html.slim +3 -0
- data/app/views/shared/_messages.html.slim +7 -0
- data/app/views/shared/_meta.html.slim +19 -0
- data/app/views/shared/_obj.html.slim +21 -0
- data/app/views/shared/_og.html.slim +4 -0
- data/app/views/simple_captcha/_simple_captcha.html.slim +12 -0
- data/config/initializers/simple_captcha.rb +29 -0
- data/config/locales/en.enjoy.yml +29 -0
- data/config/locales/en.enjoy_admin.yml +6 -0
- data/config/locales/ru.cancan.yml +4 -0
- data/config/locales/ru.devise.yml +65 -0
- data/config/locales/ru.enjoy.yml +39 -0
- data/config/locales/ru.enjoy_admin.yml +6 -0
- data/config/locales/ru.kaminari.yml +17 -0
- data/config/locales/ru.models.yml +103 -0
- data/config/locales/ru.mongoid.yml +450 -0
- data/config/locales/ru.rails_admin.yml +148 -0
- data/config/locales/ru.simple_captcha.yml +3 -0
- data/config/locales/ru.simple_form.yml +9 -0
- data/config/routes.rb +14 -0
- data/enjoy_cms.gemspec +53 -0
- data/lib/enjoy/admin.rb +350 -0
- data/lib/enjoy/admin/contact_message.rb +36 -0
- data/lib/enjoy/admin/embedded_element.rb +11 -0
- data/lib/enjoy/admin/embedded_gallery_image.rb +15 -0
- data/lib/enjoy/admin/gallery.rb +20 -0
- data/lib/enjoy/admin/gallery_image.rb +18 -0
- data/lib/enjoy/admin/menu.rb +27 -0
- data/lib/enjoy/admin/news.rb +57 -0
- data/lib/enjoy/admin/page.rb +81 -0
- data/lib/enjoy/admin/seo.rb +17 -0
- data/lib/enjoy/configuration.rb +73 -0
- data/lib/enjoy/controller.rb +31 -0
- data/lib/enjoy/controllers/contacts.rb +70 -0
- data/lib/enjoy/controllers/news.rb +36 -0
- data/lib/enjoy/controllers/pages.rb +22 -0
- data/lib/enjoy/controllers/search.rb +62 -0
- data/lib/enjoy/elastic_search.rb +31 -0
- data/lib/enjoy/engine.rb +46 -0
- data/lib/enjoy/migration.rb +34 -0
- data/lib/enjoy/model.rb +22 -0
- data/lib/enjoy/models/active_record/contact_message.rb +14 -0
- data/lib/enjoy/models/active_record/menu.rb +17 -0
- data/lib/enjoy/models/active_record/news.rb +26 -0
- data/lib/enjoy/models/active_record/page.rb +20 -0
- data/lib/enjoy/models/active_record/seo.rb +17 -0
- data/lib/enjoy/models/contact_message.rb +37 -0
- data/lib/enjoy/models/embedded_element.rb +12 -0
- data/lib/enjoy/models/embedded_gallery_image.rb +16 -0
- data/lib/enjoy/models/gallery.rb +29 -0
- data/lib/enjoy/models/gallery_image.rb +23 -0
- data/lib/enjoy/models/menu.rb +28 -0
- data/lib/enjoy/models/mongoid/contact_message.rb +20 -0
- data/lib/enjoy/models/mongoid/embedded_element.rb +13 -0
- data/lib/enjoy/models/mongoid/embedded_gallery_image.rb +19 -0
- data/lib/enjoy/models/mongoid/gallery.rb +23 -0
- data/lib/enjoy/models/mongoid/gallery_image.rb +21 -0
- data/lib/enjoy/models/mongoid/menu.rb +15 -0
- data/lib/enjoy/models/mongoid/news.rb +29 -0
- data/lib/enjoy/models/mongoid/page.rb +25 -0
- data/lib/enjoy/models/mongoid/seo.rb +28 -0
- data/lib/enjoy/models/news.rb +58 -0
- data/lib/enjoy/models/page.rb +90 -0
- data/lib/enjoy/models/seo.rb +22 -0
- data/lib/enjoy/patch.rb +58 -0
- data/lib/enjoy/rails_admin_menu.rb +145 -0
- data/lib/enjoy/simple_form_patch.rb +12 -0
- data/lib/enjoy/tasks.rb +13 -0
- data/lib/enjoy/version.rb +3 -0
- data/lib/enjoy_cms.rb +109 -0
- data/lib/filename_to_slug.rb +34 -0
- data/lib/generators/enjoy/ability_generator.rb +14 -0
- data/lib/generators/enjoy/admin_generator.rb +21 -0
- data/lib/generators/enjoy/capify_generator.rb +39 -0
- data/lib/generators/enjoy/layout_generator.rb +14 -0
- data/lib/generators/enjoy/migration_generator.rb +18 -0
- data/lib/generators/enjoy/templates/Capfile +17 -0
- data/lib/generators/enjoy/templates/ability.erb +26 -0
- data/lib/generators/enjoy/templates/admin.erb +89 -0
- data/lib/generators/enjoy/templates/deploy.erb +47 -0
- data/lib/generators/enjoy/templates/dl.erb +30 -0
- data/lib/generators/enjoy/templates/migration_contact_messages.rb +15 -0
- data/lib/generators/enjoy/templates/migration_news.rb +26 -0
- data/lib/generators/enjoy/templates/migration_pages.rb +45 -0
- data/lib/generators/enjoy/templates/migration_seos.rb +14 -0
- data/lib/generators/enjoy/templates/production.erb +8 -0
- data/lib/generators/enjoy/templates/unicorn.erb +66 -0
- data/lib/generators/enjoy/utils.rb +21 -0
- data/lib/manual_slug.rb +10 -0
- data/lib/manual_slug/active_record.rb +32 -0
- data/lib/manual_slug/mongoid.rb +36 -0
- data/lib/rails_admin/custom_show_in_app.rb +43 -0
- data/release.sh +13 -0
- data/template.rb +824 -0
- metadata +579 -0
@@ -0,0 +1,145 @@
|
|
1
|
+
module RailsAdmin
|
2
|
+
module Config
|
3
|
+
module Fields
|
4
|
+
module Types
|
5
|
+
class Menu < RailsAdmin::Config::Fields::Base
|
6
|
+
# Register field type for the type loader
|
7
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
8
|
+
include RailsAdmin::Engine.routes.url_helpers
|
9
|
+
|
10
|
+
register_instance_option :pretty_value do
|
11
|
+
obj = bindings[:object]
|
12
|
+
ret = []
|
13
|
+
menus = Rails.cache.fetch 'menus', expires_in: 10.minutes do
|
14
|
+
if Enjoy.mongoid?
|
15
|
+
::Menu.all.map { |m| {id: m.id.to_s, name: m.name } }
|
16
|
+
else
|
17
|
+
::Menu.all.map { |m| {id: m.id, name: m.name } }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
menus.each do |m|
|
21
|
+
if Enjoy.mongoid?
|
22
|
+
on = obj.menu_ids.include?(BSON::ObjectId.from_string(m[:id]))
|
23
|
+
else
|
24
|
+
on = obj.menu_ids.include?(m[:id].to_i)
|
25
|
+
end
|
26
|
+
ret << bindings[:view].link_to(
|
27
|
+
m[:name],
|
28
|
+
bindings[:view].toggle_menu_path(model_name: @abstract_model, id: obj.id, menu: m[:id], on: !on),
|
29
|
+
#method: :post,
|
30
|
+
title: m[:name],
|
31
|
+
class: "btn btn-mini #{on ? "btn-success" : "btn-danger"}",
|
32
|
+
style: 'margin-bottom: 5px;',
|
33
|
+
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;'
|
34
|
+
)
|
35
|
+
end
|
36
|
+
('<div style="white-space: normal;">' + ret.join(' ') + '</div>').html_safe
|
37
|
+
end
|
38
|
+
|
39
|
+
register_instance_option :formatted_value do
|
40
|
+
pretty_value
|
41
|
+
end
|
42
|
+
|
43
|
+
register_instance_option :export_value do
|
44
|
+
nil
|
45
|
+
end
|
46
|
+
|
47
|
+
register_instance_option :partial do
|
48
|
+
:form_raw
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
module RailsAdmin
|
57
|
+
module Config
|
58
|
+
module Actions
|
59
|
+
class ToggleMenu < Base
|
60
|
+
RailsAdmin::Config::Actions.register(self)
|
61
|
+
|
62
|
+
# Is the action acting on the root level (Example: /admin/contact)
|
63
|
+
register_instance_option :root? do
|
64
|
+
false
|
65
|
+
end
|
66
|
+
|
67
|
+
register_instance_option :collection? do
|
68
|
+
false
|
69
|
+
end
|
70
|
+
|
71
|
+
# Is the action on an object scope (Example: /admin/team/1/edit)
|
72
|
+
register_instance_option :member? do
|
73
|
+
true
|
74
|
+
end
|
75
|
+
|
76
|
+
register_instance_option :controller do
|
77
|
+
proc do
|
78
|
+
ajax_link = Proc.new do |am, obj, menu, on|
|
79
|
+
render json: {
|
80
|
+
href: toggle_menu_path(model_name: am, id: obj.id, menu: menu.id, on: !on),
|
81
|
+
class: "btn btn-mini #{on ? "btn-success" : "btn-danger"}",
|
82
|
+
}
|
83
|
+
end
|
84
|
+
if params['id'].present?
|
85
|
+
begin
|
86
|
+
@object = @abstract_model.model.find(params['id'])
|
87
|
+
@menu = ::Menu.find(params[:menu])
|
88
|
+
if params[:on] == 'true'
|
89
|
+
@object.menus << @menu
|
90
|
+
else
|
91
|
+
@object.menus.delete(@menu)
|
92
|
+
end
|
93
|
+
|
94
|
+
if @object.save
|
95
|
+
if params['ajax'].present?
|
96
|
+
if params[:on] == 'true'
|
97
|
+
ajax_link.call(@abstract_model, @object, @menu, true)
|
98
|
+
else
|
99
|
+
ajax_link.call(@abstract_model, @object, @menu, false)
|
100
|
+
end
|
101
|
+
else
|
102
|
+
if params[:on] == 'true'
|
103
|
+
flash[:success] = I18n.t('rs.m.enabled', menu: @menu.name)
|
104
|
+
else
|
105
|
+
flash[:success] = I18n.t('rs.m.disabled', menu: @menu.name)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
else
|
109
|
+
if params['ajax'].present?
|
110
|
+
render text: @object.errors.full_messages.join(', '), layout: false, status: 422
|
111
|
+
else
|
112
|
+
flash[:error] = @object.errors.full_messages.join(', ')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
rescue Exception => e
|
116
|
+
if params['ajax'].present?
|
117
|
+
render text: I18n.t('rs.m.error', err: e.to_s), status: 422
|
118
|
+
else
|
119
|
+
flash[:error] = I18n.t('rs.m.error', err: e.to_s)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
else
|
123
|
+
if params['ajax'].present?
|
124
|
+
render text: I18n.t('rs.m.no_id'), status: 422
|
125
|
+
else
|
126
|
+
flash[:error] = I18n.t('rs.m.no_id')
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
redirect_to :back unless params['ajax'].present?
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
register_instance_option :link_icon do
|
136
|
+
'icon-move'
|
137
|
+
end
|
138
|
+
|
139
|
+
register_instance_option :http_methods do
|
140
|
+
[:post]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# https://github.com/rs-pro/russian/blob/master/lib/russian/active_model_ext/custom_error_message.rb
|
2
|
+
require 'simple_form/components/errors'
|
3
|
+
module SimpleForm
|
4
|
+
module Components
|
5
|
+
module Errors
|
6
|
+
protected
|
7
|
+
def errors_on_attribute
|
8
|
+
object.errors[attribute_name].map {|m| m.sub(/^\^/, '')}
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/enjoy/tasks.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# require this file to load the tasks
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
# Require generator at runtime. If we don't do this the ActionView helpers are included
|
5
|
+
# before the Rails environment can be loaded by other Rake tasks, which causes problems
|
6
|
+
# for those tasks when rendering using ActionView.
|
7
|
+
namespace :rs do
|
8
|
+
# Require generator only. When installed as a plugin the require will fail, so in
|
9
|
+
# that case, load the environment first.
|
10
|
+
task :require do
|
11
|
+
Rake::Task['environment'].invoke
|
12
|
+
end
|
13
|
+
end
|
data/lib/enjoy_cms.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
unless defined?(Enjoy) && Enjoy.respond_to?(:orm) && [:active_record, :mongoid].include?(Enjoy.orm)
|
2
|
+
puts "please use Enjoy_mongoid or Enjoy_activerecord and not enjoy directly"
|
3
|
+
exit 1
|
4
|
+
end
|
5
|
+
|
6
|
+
require 'enjoy/version'
|
7
|
+
require 'devise'
|
8
|
+
|
9
|
+
require 'simple_form'
|
10
|
+
require 'enjoy/simple_form_patch'
|
11
|
+
|
12
|
+
require 'glebtv-simple_captcha'
|
13
|
+
require 'validates_email_format_of'
|
14
|
+
require 'smart_excerpt'
|
15
|
+
require 'filename_to_slug'
|
16
|
+
require 'rails_admin'
|
17
|
+
require 'rails_admin_nested_set'
|
18
|
+
require 'rails_admin_toggleable'
|
19
|
+
# require 'rails_admin_settings'
|
20
|
+
|
21
|
+
require 'x-real-ip'
|
22
|
+
|
23
|
+
require 'ckeditor'
|
24
|
+
|
25
|
+
require 'sitemap_generator'
|
26
|
+
require 'kaminari'
|
27
|
+
require 'addressable/uri'
|
28
|
+
require 'turbolinks'
|
29
|
+
require 'simple-navigation'
|
30
|
+
require 'ack_rails_admin_jcrop'
|
31
|
+
|
32
|
+
# require 'enjoy/seo_helpers'
|
33
|
+
require 'enjoy/configuration'
|
34
|
+
require 'enjoy/patch'
|
35
|
+
require 'enjoy/admin'
|
36
|
+
require 'enjoy/elastic_search'
|
37
|
+
require 'enjoy/model'
|
38
|
+
require 'enjoy/rails_admin_menu'
|
39
|
+
require 'enjoy/engine'
|
40
|
+
require 'enjoy/controller'
|
41
|
+
|
42
|
+
require 'manual_slug'
|
43
|
+
|
44
|
+
|
45
|
+
module Enjoy
|
46
|
+
class << self
|
47
|
+
def mongoid?
|
48
|
+
Enjoy.orm == :mongoid
|
49
|
+
end
|
50
|
+
def active_record?
|
51
|
+
Enjoy.orm == :active_record
|
52
|
+
end
|
53
|
+
def model_namespace
|
54
|
+
"Enjoy::Models::#{Enjoy.orm.to_s.camelize}"
|
55
|
+
end
|
56
|
+
def orm_specific(name)
|
57
|
+
"#{model_namespace}::#{name}".constantize
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
autoload :Migration, 'enjoy/migration'
|
62
|
+
|
63
|
+
# module Mongoid
|
64
|
+
# autoload :Paperclip 'enjoy/mongoid/paperlcip'
|
65
|
+
# end
|
66
|
+
|
67
|
+
module Models
|
68
|
+
autoload :Seo, 'enjoy/models/seo'
|
69
|
+
autoload :Menu, 'enjoy/models/menu'
|
70
|
+
autoload :Page, 'enjoy/models/page'
|
71
|
+
autoload :News, 'enjoy/models/news'
|
72
|
+
autoload :ContactMessage, 'enjoy/models/contact_message'
|
73
|
+
|
74
|
+
autoload :Enjoy, 'enjoy/models/embedded_element'
|
75
|
+
|
76
|
+
autoload :EmbeddedGalleryImage, 'enjoy/models/embedded_gallery_image'
|
77
|
+
autoload :GalleryImage, 'enjoy/models/gallery_image'
|
78
|
+
autoload :Gallery, 'enjoy/models/gallery'
|
79
|
+
|
80
|
+
module Mongoid
|
81
|
+
autoload :Seo, 'enjoy/models/mongoid/seo'
|
82
|
+
autoload :Menu, 'enjoy/models/mongoid/menu'
|
83
|
+
autoload :Page, 'enjoy/models/mongoid/page'
|
84
|
+
autoload :News, 'enjoy/models/mongoid/news'
|
85
|
+
autoload :ContactMessage, 'enjoy/models/mongoid/contact_message'
|
86
|
+
|
87
|
+
autoload :Enjoy, 'enjoy/models/mongoid/embedded_element'
|
88
|
+
|
89
|
+
autoload :EmbeddedGalleryImage, 'enjoy/models/mongoid/embedded_gallery_image'
|
90
|
+
autoload :GalleryImage, 'enjoy/models/mongoid/gallery_image'
|
91
|
+
autoload :Gallery, 'enjoy/models/mongoid/gallery'
|
92
|
+
end
|
93
|
+
|
94
|
+
module ActiveRecord
|
95
|
+
autoload :Seo, 'enjoy/models/active_record/seo'
|
96
|
+
autoload :Menu, 'enjoy/models/active_record/menu'
|
97
|
+
autoload :Page, 'enjoy/models/active_record/page'
|
98
|
+
autoload :News, 'enjoy/models/active_record/news'
|
99
|
+
autoload :ContactMessage, 'enjoy/models/active_record/contact_message'
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
module Controllers
|
104
|
+
autoload :Contacts, 'enjoy/controllers/contacts'
|
105
|
+
autoload :News, 'enjoy/controllers/news'
|
106
|
+
autoload :Pages, 'enjoy/controllers/pages'
|
107
|
+
autoload :Search, 'enjoy/controllers/search'
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'stringex'
|
2
|
+
require 'digest/md5'
|
3
|
+
|
4
|
+
class String
|
5
|
+
def filename_to_slug
|
6
|
+
s = self.to_url
|
7
|
+
if s.blank?
|
8
|
+
return Digest::MD5.hexdigest(self)
|
9
|
+
end
|
10
|
+
s
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module FilenameToSlug
|
15
|
+
extend ActiveSupport::Concern
|
16
|
+
included do
|
17
|
+
before_post_process :filename_to_slug
|
18
|
+
end
|
19
|
+
|
20
|
+
def filename_to_slug
|
21
|
+
if self.class.attachment_definitions
|
22
|
+
self.class.attachment_definitions.each do |k,v|
|
23
|
+
if self.send(k).file?
|
24
|
+
full_file_name = self.send("#{k}_file_name")
|
25
|
+
extension = File.extname(full_file_name)[1..-1]
|
26
|
+
file_name = full_file_name[0..full_file_name.size-extension.size-1]
|
27
|
+
self.send("#{k}").instance_write(:file_name, "#{file_name.filename_to_slug}.#{extension.filename_to_slug}")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require File.expand_path('../utils', __FILE__)
|
3
|
+
|
4
|
+
module Enjoy
|
5
|
+
class AbilityGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
include Generators::Utils::InstanceMethods
|
8
|
+
|
9
|
+
desc 'Enjoy CanCan Ability config generator'
|
10
|
+
def ability
|
11
|
+
template 'ability.erb', 'app/models/ability.rb'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# shamelessly stolen from https://github.com/sferik/rails_admin/blob/master/lib/generators/rails_admin/utils.rb
|
2
|
+
|
3
|
+
require 'rails/generators'
|
4
|
+
require File.expand_path('../utils', __FILE__)
|
5
|
+
|
6
|
+
module Enjoy
|
7
|
+
class AdminGenerator < Rails::Generators::Base
|
8
|
+
source_root File.expand_path('../templates', __FILE__)
|
9
|
+
include Generators::Utils::InstanceMethods
|
10
|
+
|
11
|
+
#argument :_namespace, type: :string, required: false, desc: 'RailsAdmin url namespace'
|
12
|
+
desc 'Enjoy RailsAdmin config generator'
|
13
|
+
|
14
|
+
def install
|
15
|
+
#namespace = ask_for('Where do you want to mount rails_admin?', 'admin', _namespace)
|
16
|
+
namespace = 'admin'
|
17
|
+
route("mount RailsAdmin::Engine => '/#{namespace}', as: 'rails_admin'")
|
18
|
+
template 'admin.erb', 'config/initializers/rails_admin.rb'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Enjoy
|
4
|
+
class CapifyGenerator < Rails::Generators::Base
|
5
|
+
argument :kind, type: :string
|
6
|
+
argument :port, type: :string
|
7
|
+
argument :domain, type: :string
|
8
|
+
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
10
|
+
|
11
|
+
def app_name
|
12
|
+
Rails.application.class.name.split("::")[0]
|
13
|
+
end
|
14
|
+
|
15
|
+
def deploy_to
|
16
|
+
if kind == 'data'
|
17
|
+
"/data/#{app_name.downcase}/app"
|
18
|
+
else
|
19
|
+
"/home/#{app_name.downcase}/www/#{app_name.downcase}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
def tmp_path
|
23
|
+
if kind == 'data'
|
24
|
+
"/data/#{app_name.downcase}/tmp_dump"
|
25
|
+
else
|
26
|
+
"/home/#{app_name.downcase}/www/#{app_name.downcase}/tmp_dump"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
desc 'Enjoy capistrano setup generator'
|
31
|
+
def install
|
32
|
+
copy_file "Capfile", "Capfile"
|
33
|
+
template "unicorn.erb", "config/unicorn/production.rb"
|
34
|
+
template "deploy.erb", "config/deploy.rb"
|
35
|
+
template "production.erb", "config/deploy/production.rb"
|
36
|
+
template "dl.erb", "lib/tasks/dl.thor"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require File.expand_path('../utils', __FILE__)
|
3
|
+
|
4
|
+
module Enjoy
|
5
|
+
class LayoutGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("../../../..", __FILE__)
|
7
|
+
include Generators::Utils::InstanceMethods
|
8
|
+
|
9
|
+
desc 'Enjoy Layout generator'
|
10
|
+
def layout
|
11
|
+
template('app/views/layouts/application.html.slim', 'app/views/layouts/application.html.slim')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/active_record'
|
3
|
+
|
4
|
+
module Enjoy
|
5
|
+
class MigrationGenerator < Rails::Generators::Base
|
6
|
+
include ActiveRecord::Generators::Migration
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
8
|
+
|
9
|
+
desc 'Enjoy migration generator'
|
10
|
+
def install
|
11
|
+
if Enjoy.active_record?
|
12
|
+
# %w(contact_messages news pages seos).each do |table_name|
|
13
|
+
# migration_template "migration_#{table_name}.rb", "db/migrate/enjoy_create_#{table_name}.rb"
|
14
|
+
# end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Load DSL and Setup Up Stages
|
2
|
+
require 'capistrano/setup'
|
3
|
+
|
4
|
+
# Includes default deployment tasks
|
5
|
+
require 'capistrano/deploy'
|
6
|
+
|
7
|
+
require 'rvm1/capistrano3'
|
8
|
+
require 'capistrano/bundler'
|
9
|
+
require 'capistrano/rails/assets'
|
10
|
+
#require "whenever/capistrano"
|
11
|
+
|
12
|
+
require 'capistrano/unicorn'
|
13
|
+
|
14
|
+
# require 'capistrano/rails/console'
|
15
|
+
|
16
|
+
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
|
17
|
+
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
|