coalla-cms 0.4.4.3 → 0.5.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/Gemfile.lock +91 -84
- data/Rakefile +2 -2
- data/app/assets/javascripts/admin/admin.js +45 -117
- data/app/assets/javascripts/admin/photo_uploader.js +1 -10
- data/app/assets/javascripts/admin/vendor/jquery-ui-timepicker-addon-ru.js +39 -37
- data/app/assets/stylesheets/admin/admin.scss +5 -1
- data/app/controllers/admin/image_upload_controller.rb +1 -1
- data/app/controllers/admin/lookups_controller.rb +9 -4
- data/app/controllers/admin/notifier_controller.rb +7 -0
- data/app/controllers/admin/site_meta_tags_controller.rb +43 -0
- data/app/controllers/concerns/page_meta_tags.rb +71 -0
- data/app/helpers/admin/lookup_helper.rb +23 -0
- data/app/helpers/common_helper.rb +6 -0
- data/app/helpers/lookup_helper.rb +41 -14
- data/app/helpers/twitter_builder_helper.rb +7 -7
- data/app/helpers/twitter_form_builder.rb +9 -3
- data/app/models/lookup.rb +22 -0
- data/app/models/site_meta_tags.rb +16 -0
- data/app/uploaders/meta_tags_image_uploader.rb +5 -0
- data/app/utils/admin_structure.rb +17 -2
- data/app/views/admin/base/_sort.haml +3 -3
- data/app/views/admin/common/_file_upload_template.haml +8 -4
- data/app/views/admin/common/_header.html.haml +5 -4
- data/app/views/admin/common/_image_upload_template.html.haml +1 -1
- data/app/views/admin/common/_slides.html.haml +1 -1
- data/app/views/admin/home/dashboard.html.haml +1 -1
- data/app/views/admin/lookups/_form.html.haml +2 -8
- data/app/views/admin/lookups/edit.html.haml +1 -1
- data/app/views/admin/lookups/index.html.haml +2 -2
- data/app/views/admin/lookups/types/_boolean.haml +1 -0
- data/app/views/admin/lookups/types/_enum.haml +1 -0
- data/app/views/admin/lookups/types/_file.haml +3 -0
- data/app/views/admin/lookups/types/_float.haml +1 -0
- data/app/views/admin/lookups/types/_integer.haml +1 -0
- data/app/views/admin/lookups/types/_memo.haml +1 -0
- data/app/views/admin/lookups/types/_string.haml +1 -0
- data/app/views/admin/lookups/types/_wysiwyg.haml +1 -0
- data/app/views/admin/site_meta_tags/_form.html.haml +22 -0
- data/app/views/admin/site_meta_tags/edit.html.haml +5 -0
- data/app/views/admin/site_meta_tags/index.html.haml +5 -0
- data/app/views/layouts/admin.html.haml +10 -4
- data/app/views/structure/_section.haml +2 -1
- data/coalla-cms.gemspec +2 -0
- data/lib/coalla/cms/version.rb +1 -1
- data/lib/coalla/orm/page_slider.rb +3 -1
- data/lib/coalla/orm/relation.rb +7 -4
- data/lib/generators/coalla/cms/create_admin_administrators_generator.rb +29 -0
- data/lib/generators/coalla/cms/create_markup_generator.rb +30 -0
- data/lib/generators/coalla/cms/init_generator.rb +33 -37
- data/lib/generators/coalla/cms/lookups/install_generator.rb +17 -6
- data/lib/generators/coalla/cms/lookups/templates/migration.rb +4 -0
- data/lib/generators/coalla/cms/market/templates/controllers/products_controller.rb +1 -1
- data/lib/generators/coalla/cms/market/templates/controllers/properties_controller.rb +1 -1
- data/lib/generators/coalla/cms/meta_tags/install_generator.rb +58 -0
- data/lib/generators/coalla/cms/meta_tags/templates/migration.rb +23 -0
- data/lib/generators/coalla/cms/news/templates/views/new.haml.erb +1 -1
- data/lib/generators/coalla/cms/setup_admin_generator.rb +10 -7
- data/lib/generators/coalla/cms/setup_routes_generator.rb +1 -0
- data/lib/generators/coalla/cms/templates/assets.rb +2 -4
- data/lib/generators/coalla/cms/templates/controllers/admin/administrators_controller.rb +55 -0
- data/lib/generators/coalla/cms/templates/controllers/admin/base_controller.rb.erb +2 -2
- data/lib/generators/coalla/cms/templates/controllers/markup_controller.rb.erb +2 -0
- data/lib/generators/coalla/cms/templates/initializers/carrierwave.rb +47 -0
- data/lib/generators/coalla/cms/templates/locales/activerecord.en.yml +16 -0
- data/lib/generators/coalla/cms/templates/locales/activerecord.ru.yml +29 -0
- data/lib/generators/coalla/cms/templates/locales/admin.en.yml +27 -0
- data/lib/generators/coalla/cms/templates/locales/admin.ru.yml +27 -0
- data/lib/generators/coalla/cms/templates/views/admin/administrators/_form.html.haml +9 -0
- data/lib/generators/coalla/cms/templates/views/admin/administrators/edit.html.haml +5 -0
- data/lib/generators/coalla/cms/templates/views/admin/administrators/index.html.haml +15 -0
- data/lib/generators/coalla/cms/templates/views/admin/administrators/new.html.haml +4 -0
- data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/edit.html.haml.erb +1 -1
- data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/new.html.haml.erb +1 -1
- data/lib/generators/coalla/cms/templates/views/administrators/sessions/new.html.haml +3 -3
- metadata +102 -87
- data/lib/generators/coalla/cms/templates/activerecord.ru.yml +0 -13
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-blockquote.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h1.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h2.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h3.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h4.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h5.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h6.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-p.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-pre.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/wymiframe.css +0 -276
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/wymiframe.html +0 -26
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/jquery.wymeditor.js +0 -4819
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/lang/en.js +0 -45
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/lang/ru.js +0 -55
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/imageupload/icons.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/imageupload/jquery.wymeditor.imageupload.js +0 -150
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js +0 -91
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/resizable/readme.txt +0 -124
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/compact/icons.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/compact/skin.css +0 -134
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/compact/skin.js +0 -35
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/default/icons.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/default/skin.css +0 -341
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/default/skin.js +0 -40
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/bg.header.gif +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/bg.selector.silver.gif +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/bg.wymeditor.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/icons.silver.gif +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/skin.css +0 -131
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/skin.js +0 -30
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/COPYING +0 -674
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/README +0 -27
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/bg.header.gif +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/bg.selector.silver.gif +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/bg.wymeditor.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/icons.silver.gif +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/skin.css +0 -297
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/skin.js +0 -61
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/twopanels/icons.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/twopanels/skin.css +0 -134
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/twopanels/skin.js +0 -39
- data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/wymeditor_icon.png +0 -0
- data/lib/generators/coalla/cms/wysiwyg/wymeditor_generator.rb +0 -17
- /data/lib/generators/coalla/cms/templates/{devise.ru.yml → locales/devise.ru.yml} +0 -0
@@ -1,13 +1,11 @@
|
|
1
1
|
!!!
|
2
2
|
%html
|
3
3
|
%head
|
4
|
-
%title
|
4
|
+
%title= t('admin.title')
|
5
5
|
= favicon_link_tag
|
6
6
|
= stylesheet_link_tag 'admin/admin', media: 'all'
|
7
7
|
= javascript_include_tag 'admin/admin'
|
8
8
|
= csrf_meta_tags
|
9
|
-
%script(src='/wysiwyg/jquery.wymeditor.js')
|
10
|
-
%script(src='/wysiwyg/plugins/imageupload/jquery.wymeditor.imageupload.js')
|
11
9
|
= yield(:head)
|
12
10
|
:css
|
13
11
|
.ajax-loader.visible { display: block; }
|
@@ -35,4 +33,12 @@
|
|
35
33
|
= yield
|
36
34
|
|
37
35
|
:javascript
|
38
|
-
|
36
|
+
$(function () {
|
37
|
+
PhotoUploader = new PhotoUploader('#{j(render partial: 'admin/common/upload_form')}');
|
38
|
+
var addUploadListener = function () {
|
39
|
+
PhotoUploader.addUploadListener();
|
40
|
+
};
|
41
|
+
addUploadListener();
|
42
|
+
window.NestedFormCallbacks = window.NestedFormCallbacks || [];
|
43
|
+
window.NestedFormCallbacks.push(addUploadListener);
|
44
|
+
});
|
data/coalla-cms.gemspec
CHANGED
data/lib/coalla/cms/version.rb
CHANGED
data/lib/coalla/orm/relation.rb
CHANGED
@@ -4,10 +4,13 @@ module Coalla
|
|
4
4
|
|
5
5
|
def multi_field(relation_name, options = {})
|
6
6
|
through_collection_name = options[:through_collection_name] || "#{self.model_name.singular}_#{relation_name}".to_sym
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
reflection = self.reflections[through_collection_name] || self.reflections[through_collection_name.to_s]
|
8
|
+
through_class = reflection.klass
|
9
|
+
self_foreign_key = reflection.foreign_key
|
10
|
+
|
11
|
+
reflection = self.reflections[relation_name] || self.reflections[relation_name.to_s]
|
12
|
+
association_model_name = reflection.source_reflection_name.to_sym
|
13
|
+
association_foreign_key = reflection.foreign_key
|
11
14
|
|
12
15
|
tokens_attribute_name = "#{relation_name}_tokens"
|
13
16
|
attr_reader tokens_attribute_name
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module Coalla
|
4
|
+
module Cms
|
5
|
+
|
6
|
+
class CreateAdminAdministratorsGenerator < ActiveRecord::Generators::Base
|
7
|
+
argument :name, type: :string, default: ""
|
8
|
+
source_root File.expand_path("../templates", __FILE__)
|
9
|
+
|
10
|
+
def setup_directory
|
11
|
+
copy_file 'controllers/admin/administrators_controller.rb', 'app/controllers/admin/administrators_controller.rb'
|
12
|
+
directory 'views/admin/administrators', 'app/views/admin/administrators'
|
13
|
+
inject_into_file 'config/structure.rb', "section Administrator, description: I18n.t('activerecord.structure.administrator'), icon: 'glyphicon glyphicon-home'", before: /^/
|
14
|
+
end
|
15
|
+
|
16
|
+
def setup_routes
|
17
|
+
sentinel = /namespace :admin do\s*$/
|
18
|
+
|
19
|
+
routing_code = " resources :administrators"
|
20
|
+
in_root do
|
21
|
+
inject_into_file 'config/routes.rb', "\n #{routing_code}", {after: sentinel}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module Coalla
|
4
|
+
module Cms
|
5
|
+
|
6
|
+
class CreateMarkupGenerator < ActiveRecord::Generators::Base
|
7
|
+
argument :name, type: :string, default: ""
|
8
|
+
source_root File.expand_path('../templates', __FILE__)
|
9
|
+
|
10
|
+
def copy_controller_file
|
11
|
+
template 'controllers/markup_controller.rb.erb', 'app/controllers/markup_controller.rb'
|
12
|
+
empty_directory 'app/views/markup'
|
13
|
+
end
|
14
|
+
|
15
|
+
def setup_routes
|
16
|
+
sentinel = /namespace :admin do\s*$/
|
17
|
+
|
18
|
+
routing_code = <<EOF
|
19
|
+
scope controller: :markup, as: :markup, path: 'markup' do
|
20
|
+
get :lot
|
21
|
+
end
|
22
|
+
EOF
|
23
|
+
|
24
|
+
in_root do
|
25
|
+
inject_into_file 'config/routes.rb', "\n #{routing_code}", {after: sentinel}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -19,51 +19,56 @@ module Coalla
|
|
19
19
|
gem 'russian', '0.6.0'
|
20
20
|
gem 'acts_as_list', '0.6.0'
|
21
21
|
gem 'remotipart', '1.2.1'
|
22
|
-
gem 'rmagick', '2.
|
23
|
-
gem '
|
24
|
-
gem 'cancan', '1.6.10'
|
22
|
+
gem 'rmagick', '2.15.4', require: false
|
23
|
+
gem 'cancancan', '1.13.1'
|
25
24
|
gem 'active_attr', '0.8.5'
|
26
25
|
gem 'sitemap_generator', '5.0.5'
|
27
26
|
gem 'whenever', '0.9.4'
|
28
27
|
gem 'holder_rails', '2.6.0'
|
29
|
-
gem 'tzinfo-data', '1.2015.
|
28
|
+
gem 'tzinfo-data', '~> 1.2015.7'
|
30
29
|
gem 'jbuilder', '2.2.13'
|
31
30
|
gem 'uglifier', '2.7.1'
|
31
|
+
gem 'sprockets', '3.5.2'
|
32
|
+
gem 'meta-tags', '2.1.0'
|
32
33
|
|
33
34
|
gem_group :development do
|
34
|
-
gem 'ruby-prof', '0.15.
|
35
|
-
gem 'thin', '1.6.
|
36
|
-
gem 'eventmachine', '1.0.
|
35
|
+
gem 'ruby-prof', '0.15.9'
|
36
|
+
gem 'thin', '1.6.4'
|
37
|
+
gem 'eventmachine', '1.0.8'
|
37
38
|
gem 'haml-rails', '0.9.0'
|
38
|
-
gem 'letter_opener', '1.
|
39
|
+
gem 'letter_opener', '1.4.1'
|
39
40
|
gem 'quiet_assets', '1.1.0'
|
40
|
-
gem 'byebug', '
|
41
|
-
gem 'web-console', '2.1
|
42
|
-
gem 'spring', '1.
|
41
|
+
gem 'byebug', '8.2.1'
|
42
|
+
gem 'web-console', '2.2.1'
|
43
|
+
gem 'spring', '1.6.2'
|
43
44
|
end
|
44
45
|
|
45
|
-
|
46
|
+
gem_group :production, :staging do
|
47
|
+
gem 'exception_notification', '4.1.4'
|
48
|
+
end
|
49
|
+
|
50
|
+
copy_file 'locales/activerecord.ru.yml', 'config/locales/activerecord.ru.yml'
|
51
|
+
copy_file 'locales/activerecord.en.yml', 'config/locales/activerecord.en.yml'
|
46
52
|
copy_file 'initializers/carrierwave.rb', 'config/initializers/carrierwave.rb'
|
47
53
|
copy_file 'schedule.rb', 'config/schedule.rb'
|
48
54
|
|
49
55
|
remove_file 'public/index.html'
|
50
56
|
remove_file '.gitignore'
|
51
|
-
copy_file
|
52
|
-
copy_file
|
57
|
+
copy_file '.gitignore', '.gitignore'
|
58
|
+
copy_file '.gitattributes', '.gitattributes'
|
53
59
|
|
54
60
|
remove_file 'public/500.html'
|
55
61
|
remove_file 'public/404.html'
|
56
62
|
remove_file 'public/422.html'
|
57
63
|
|
58
|
-
copy_file
|
59
|
-
copy_file
|
60
|
-
copy_file
|
64
|
+
copy_file 'errors/500.html', 'public/500.html'
|
65
|
+
copy_file 'errors/404.html', 'public/404.html'
|
66
|
+
copy_file 'errors/422.html', 'public/422.html'
|
61
67
|
|
62
68
|
|
63
69
|
template 'controllers/home_controller.rb.erb', 'app/controllers/home_controller.rb'
|
64
70
|
empty_directory 'app/views/home'
|
65
71
|
template 'views/home/index.html.haml.erb', 'app/views/home/index.html.haml'
|
66
|
-
|
67
72
|
route "root to: 'home#index'"
|
68
73
|
|
69
74
|
remove_file 'config/database.yml'
|
@@ -83,7 +88,7 @@ module Coalla
|
|
83
88
|
gsub_file 'config/initializers/devise.rb', "# config.scoped_views = false", "config.scoped_views = true"
|
84
89
|
gsub_file 'config/initializers/devise.rb', "# config.sign_out_all_scopes = true", "config.sign_out_all_scopes = false"
|
85
90
|
remove_file 'config/locales/devise.ru.yml'
|
86
|
-
copy_file
|
91
|
+
copy_file 'locales/devise.ru.yml', 'config/locales/devise.ru.yml'
|
87
92
|
end
|
88
93
|
|
89
94
|
def setup_application_file
|
@@ -99,32 +104,23 @@ module Coalla
|
|
99
104
|
config.action_mailer.default_url_options = {host: 'localhost', port: 3000}
|
100
105
|
config.action_mailer.delivery_method = :letter_opener
|
101
106
|
config.action_mailer.asset_host = "http://localhost:3000"
|
102
|
-
CONFIG
|
107
|
+
CONFIG
|
103
108
|
match << c
|
104
109
|
end
|
105
110
|
end
|
106
111
|
|
107
112
|
def configure_assets
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
def basic_http_auth
|
112
|
-
gsub_file 'app/controllers/application_controller.rb', /protect_from_forgery with: :exception/ do |match|
|
113
|
-
c = <<-RUBY
|
114
|
-
|
115
|
-
|
116
|
-
before_action :basic_http_auth if Rails.env.staging?
|
113
|
+
gsub_file 'config/environments/development.rb', /config.action_mailer.raise_delivery_errors = false/ do |match|
|
114
|
+
c = <<-CONFIG
|
117
115
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
RUBY
|
116
|
+
config.action_mailer.default_url_options = {host: 'localhost', port: 3000}
|
117
|
+
config.action_mailer.delivery_method = :letter_opener
|
118
|
+
config.action_mailer.asset_host = "http://localhost:3000"
|
119
|
+
CONFIG
|
126
120
|
match << c
|
127
121
|
end
|
122
|
+
|
123
|
+
template 'assets.rb', 'config/initializers/assets.rb'
|
128
124
|
end
|
129
125
|
|
130
126
|
private
|
@@ -6,15 +6,22 @@ module Coalla
|
|
6
6
|
module Lookups
|
7
7
|
|
8
8
|
class InstallGenerator < ActiveRecord::Generators::Base
|
9
|
-
argument :name, type: :string, default:
|
10
|
-
source_root File.expand_path(
|
11
|
-
class_option :copy, type: :boolean, default: false, description:
|
9
|
+
argument :name, type: :string, default: ''
|
10
|
+
source_root File.expand_path('../../../../../../', __FILE__)
|
11
|
+
class_option :copy, type: :boolean, default: false, description: 'Copy all files to project'
|
12
12
|
|
13
13
|
def copy_files
|
14
|
-
migration_template
|
14
|
+
migration_template 'lib/generators/coalla/cms/lookups/templates/migration.rb', 'db/migrate/create_lookups.rb'
|
15
15
|
|
16
16
|
if options.copy?
|
17
|
-
[ 'app/views/admin/lookups/
|
17
|
+
[ 'app/views/admin/lookups/types/boolean',
|
18
|
+
'app/views/admin/lookups/types/enum',
|
19
|
+
'app/views/admin/lookups/types/float',
|
20
|
+
'app/views/admin/lookups/types/integer',
|
21
|
+
'app/views/admin/lookups/types/memo',
|
22
|
+
'app/views/admin/lookups/types/string',
|
23
|
+
'app/views/admin/lookups/types/wysiwyg',
|
24
|
+
'app/views/admin/lookups/_form.html.haml',
|
18
25
|
'app/views/admin/lookups/edit.html.haml',
|
19
26
|
'app/views/admin/lookups/index.html.haml',
|
20
27
|
'app/views/admin/lookups/show.html.haml',
|
@@ -30,12 +37,16 @@ module Coalla
|
|
30
37
|
def setup_routes
|
31
38
|
sentinel = /namespace :admin do\s*$/
|
32
39
|
|
33
|
-
routing_code = " resources :lookups"
|
40
|
+
routing_code = " get 'lookups/(:category)' => 'lookups#index', as: :lookups_index\n resources :lookups, except: [:show]"
|
34
41
|
in_root do
|
35
42
|
inject_into_file 'config/routes.rb', "\n #{routing_code}", { :after => sentinel, :verbose => false }
|
36
43
|
end
|
37
44
|
end
|
38
45
|
|
46
|
+
def add_section
|
47
|
+
append_to_file 'config/structure.rb', "\nlookup_section"
|
48
|
+
end
|
49
|
+
|
39
50
|
end
|
40
51
|
|
41
52
|
end
|
@@ -11,7 +11,7 @@ module Admin
|
|
11
11
|
# autocomplete
|
12
12
|
render json: ::Market::Property.where('name ILIKE ?', "#{params[:term]}%").order(:name).map { |property| {id: property.id, label: property.name} }
|
13
13
|
else
|
14
|
-
@properties = ::Market::Property.
|
14
|
+
@properties = ::Market::Property.order(:name).paginate(page: params[:page], per_page: PER_PAGE)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rails'
|
2
|
+
require 'rails/generators/active_record'
|
3
|
+
|
4
|
+
module Coalla
|
5
|
+
module Cms
|
6
|
+
module MetaTags
|
7
|
+
|
8
|
+
class InstallGenerator < ActiveRecord::Generators::Base
|
9
|
+
argument :name, type: :string, default: ''
|
10
|
+
source_root File.expand_path('../../../../../../', __FILE__)
|
11
|
+
class_option :copy, type: :boolean, default: false, description: 'Copy all files to project'
|
12
|
+
|
13
|
+
def copy_files
|
14
|
+
migration_template 'lib/generators/coalla/cms/meta_tags/templates/migration.rb', 'db/migrate/create_meta_tags.rb'
|
15
|
+
|
16
|
+
if options.copy?
|
17
|
+
[
|
18
|
+
'app/views/admin/site_meta_tags/_form.html.haml',
|
19
|
+
'app/views/admin/site_meta_tags/edit.html.haml',
|
20
|
+
'app/views/admin/site_meta_tags/index.html.haml',
|
21
|
+
'app/controllers/admin/meta_tags_controller.rb',
|
22
|
+
'app/controllers/concerns/page_meta_tags.rb',
|
23
|
+
'app/uploaders/meta_tags_image_uploader.rb'
|
24
|
+
].each do |path|
|
25
|
+
copy_file path, path
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def setup_routes
|
31
|
+
sentinel = /namespace :admin do\s*$/
|
32
|
+
|
33
|
+
routing_code = ' resources :meta_tags, except: [:show], controller: :site_meta_tags'
|
34
|
+
in_root do
|
35
|
+
inject_into_file 'config/routes.rb', "\n #{routing_code}", {:after => sentinel, :verbose => false}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_module_to_application_controller
|
40
|
+
gsub_file 'app/controllers/application_controller.rb', /protect_from_forgery with: :exception/ do |match|
|
41
|
+
c = <<-RUBY
|
42
|
+
|
43
|
+
include PageMetaTags
|
44
|
+
|
45
|
+
RUBY
|
46
|
+
match << c
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
def add_section
|
52
|
+
append_to_file 'config/structure.rb', "\nmeta_tags_section"
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class CreateMetaTags < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :meta_tags do |t|
|
4
|
+
t.text :identifier, null: false
|
5
|
+
t.index :identifier, unique: true
|
6
|
+
|
7
|
+
t.text :site, null: false, default: ''
|
8
|
+
t.text :title, null: false, default: ''
|
9
|
+
t.text :description, null: false, default: ''
|
10
|
+
t.text :image
|
11
|
+
t.text :url
|
12
|
+
|
13
|
+
t.text :og_title
|
14
|
+
t.text :og_description
|
15
|
+
t.text :og_image
|
16
|
+
t.text :og_url
|
17
|
+
|
18
|
+
t.timestamps
|
19
|
+
end
|
20
|
+
|
21
|
+
SiteMetaTags.create!(identifier: :default)
|
22
|
+
end
|
23
|
+
end
|
@@ -17,14 +17,20 @@ module Coalla
|
|
17
17
|
copy_file 'structure.rb', 'config/structure.rb'
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
def copy_localization
|
21
|
+
copy_file 'locales/admin.ru.yml', 'config/locales/admin.ru.yml'
|
22
|
+
copy_file 'locales/admin.en.yml', 'config/locales/admin.en.yml'
|
23
|
+
end
|
24
24
|
|
25
|
+
def setup_default_views
|
26
|
+
invoke "coalla:cms:create_admin_administrators"
|
27
|
+
end
|
28
|
+
|
29
|
+
def patch_application_controller
|
25
30
|
gsub_file 'app/controllers/application_controller.rb', /protect_from_forgery with: :exception/ do |match|
|
26
31
|
c = <<-RUBY
|
27
32
|
|
33
|
+
layout :layout_by_resource
|
28
34
|
|
29
35
|
def layout_by_resource
|
30
36
|
if devise_controller? && resource_name === :administrator
|
@@ -47,9 +53,6 @@ module Coalla
|
|
47
53
|
end
|
48
54
|
end
|
49
55
|
|
50
|
-
def install_wysiwyg
|
51
|
-
generate 'coalla:cms:wysiwyg:wymeditor'
|
52
|
-
end
|
53
56
|
|
54
57
|
def install_ckeditor
|
55
58
|
generate 'coalla:cms:wysiwyg:ckeditor'
|
@@ -7,7 +7,5 @@ Rails.application.config.assets.version = '1.0'
|
|
7
7
|
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
8
8
|
# Rails.application.config.assets.precompile += %w( search.js )
|
9
9
|
Rails.application.config.assets.precompile += %w( admin/admin.css )
|
10
|
-
Rails.application.config.assets.precompile += [
|
11
|
-
|
12
|
-
File.extname(full_path).in?(%w(.js .css))
|
13
|
-
}]
|
10
|
+
Rails.application.config.assets.precompile += [ Proc.new{ |path| File.extname(path).in?(%w(.js .css .coffee)) },
|
11
|
+
Proc.new{ |path| !File.extname(path).in?(%w(.js .css .coffee)) } ]
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Admin
|
2
|
+
|
3
|
+
class AdministratorsController < BaseController
|
4
|
+
|
5
|
+
PER_PAGE = 20
|
6
|
+
|
7
|
+
def index
|
8
|
+
@administrators = Administrator.order(created_at: :desc).paginate(page: params[:page], per_page: PER_PAGE)
|
9
|
+
end
|
10
|
+
|
11
|
+
def new
|
12
|
+
@administrator = Administrator.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def create
|
16
|
+
@administrator = Administrator.new(params[:administrator].permit!)
|
17
|
+
if @administrator.save
|
18
|
+
redirect_or_render :edit
|
19
|
+
else
|
20
|
+
render :new
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def edit
|
25
|
+
@administrator = Administrator.find(params[:id])
|
26
|
+
end
|
27
|
+
|
28
|
+
def update
|
29
|
+
@administrator = Administrator.find(params[:id])
|
30
|
+
success = administrator_params[:password].present? ? @administrator.update(administrator_params) : @administrator.update_without_password(administrator_params)
|
31
|
+
if current_administrator == @administrator
|
32
|
+
sign_in(@administrator, bypass: true)
|
33
|
+
end
|
34
|
+
if success
|
35
|
+
redirect_or_render :edit
|
36
|
+
else
|
37
|
+
render :edit
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy
|
42
|
+
@administrator = Administrator.find(params[:id])
|
43
|
+
@administrator.destroy
|
44
|
+
redirect_to_last
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def administrator_params
|
50
|
+
params[:administrator].permit!
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -15,11 +15,11 @@ module Admin
|
|
15
15
|
protected
|
16
16
|
|
17
17
|
def load_structure
|
18
|
-
@structure = ::AdminStructure.new
|
18
|
+
@structure = ::AdminStructure.new(self)
|
19
19
|
end
|
20
20
|
|
21
21
|
def add_success_msg
|
22
|
-
flash.now[:admin_success] = '
|
22
|
+
flash.now[:admin_success] = I18n.t('admin.common.save_success')
|
23
23
|
end
|
24
24
|
|
25
25
|
def redirect_or_render partial
|
@@ -48,4 +48,51 @@ if RUBY_VERSION == "1.9.3"
|
|
48
48
|
|
49
49
|
end
|
50
50
|
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
# for STI
|
55
|
+
module CarrierWave
|
56
|
+
|
57
|
+
module Mount
|
58
|
+
|
59
|
+
class Mounter
|
60
|
+
|
61
|
+
def cache_name=(cache_name)
|
62
|
+
unless uploader.cached?
|
63
|
+
result = uploader.retrieve_from_cache!(cache_name)
|
64
|
+
record.send("#{serialization_column}_will_change!")
|
65
|
+
result
|
66
|
+
end
|
67
|
+
rescue CarrierWave::InvalidParameter
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
# override presence validator
|
78
|
+
module Carrierwave
|
79
|
+
module Validations
|
80
|
+
class PresenceValidator < ActiveRecord::Validations::PresenceValidator # :nodoc:
|
81
|
+
def validate_each(record, attr_name, value)
|
82
|
+
record.errors.add(attr_name, :blank, options) if value.blank? || carrier_wave_image_present?(record, attr_name)
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def carrier_wave_image_present?(record, attr_name)
|
88
|
+
(record.send(attr_name).try(:is_a?, CarrierWave::Uploader::Base) && record.try("remove_#{attr_name}?"))
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
ActiveRecord::Base.instance_eval do
|
95
|
+
def validates_presence_of(*attr_names)
|
96
|
+
validates_with Carrierwave::Validations::PresenceValidator, _merge_attributes(attr_names)
|
97
|
+
end
|
51
98
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
administrator: Administrators
|
5
|
+
lookup: Settings
|
6
|
+
structure:
|
7
|
+
administrator: Administrators list management
|
8
|
+
|
9
|
+
attributes:
|
10
|
+
administrator:
|
11
|
+
email: Email
|
12
|
+
password: Password
|
13
|
+
lookup:
|
14
|
+
code: Name
|
15
|
+
value: Value
|
16
|
+
|