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.
Files changed (121) hide show
  1. checksums.yaml +5 -13
  2. data/Gemfile.lock +91 -84
  3. data/Rakefile +2 -2
  4. data/app/assets/javascripts/admin/admin.js +45 -117
  5. data/app/assets/javascripts/admin/photo_uploader.js +1 -10
  6. data/app/assets/javascripts/admin/vendor/jquery-ui-timepicker-addon-ru.js +39 -37
  7. data/app/assets/stylesheets/admin/admin.scss +5 -1
  8. data/app/controllers/admin/image_upload_controller.rb +1 -1
  9. data/app/controllers/admin/lookups_controller.rb +9 -4
  10. data/app/controllers/admin/notifier_controller.rb +7 -0
  11. data/app/controllers/admin/site_meta_tags_controller.rb +43 -0
  12. data/app/controllers/concerns/page_meta_tags.rb +71 -0
  13. data/app/helpers/admin/lookup_helper.rb +23 -0
  14. data/app/helpers/common_helper.rb +6 -0
  15. data/app/helpers/lookup_helper.rb +41 -14
  16. data/app/helpers/twitter_builder_helper.rb +7 -7
  17. data/app/helpers/twitter_form_builder.rb +9 -3
  18. data/app/models/lookup.rb +22 -0
  19. data/app/models/site_meta_tags.rb +16 -0
  20. data/app/uploaders/meta_tags_image_uploader.rb +5 -0
  21. data/app/utils/admin_structure.rb +17 -2
  22. data/app/views/admin/base/_sort.haml +3 -3
  23. data/app/views/admin/common/_file_upload_template.haml +8 -4
  24. data/app/views/admin/common/_header.html.haml +5 -4
  25. data/app/views/admin/common/_image_upload_template.html.haml +1 -1
  26. data/app/views/admin/common/_slides.html.haml +1 -1
  27. data/app/views/admin/home/dashboard.html.haml +1 -1
  28. data/app/views/admin/lookups/_form.html.haml +2 -8
  29. data/app/views/admin/lookups/edit.html.haml +1 -1
  30. data/app/views/admin/lookups/index.html.haml +2 -2
  31. data/app/views/admin/lookups/types/_boolean.haml +1 -0
  32. data/app/views/admin/lookups/types/_enum.haml +1 -0
  33. data/app/views/admin/lookups/types/_file.haml +3 -0
  34. data/app/views/admin/lookups/types/_float.haml +1 -0
  35. data/app/views/admin/lookups/types/_integer.haml +1 -0
  36. data/app/views/admin/lookups/types/_memo.haml +1 -0
  37. data/app/views/admin/lookups/types/_string.haml +1 -0
  38. data/app/views/admin/lookups/types/_wysiwyg.haml +1 -0
  39. data/app/views/admin/site_meta_tags/_form.html.haml +22 -0
  40. data/app/views/admin/site_meta_tags/edit.html.haml +5 -0
  41. data/app/views/admin/site_meta_tags/index.html.haml +5 -0
  42. data/app/views/layouts/admin.html.haml +10 -4
  43. data/app/views/structure/_section.haml +2 -1
  44. data/coalla-cms.gemspec +2 -0
  45. data/lib/coalla/cms/version.rb +1 -1
  46. data/lib/coalla/orm/page_slider.rb +3 -1
  47. data/lib/coalla/orm/relation.rb +7 -4
  48. data/lib/generators/coalla/cms/create_admin_administrators_generator.rb +29 -0
  49. data/lib/generators/coalla/cms/create_markup_generator.rb +30 -0
  50. data/lib/generators/coalla/cms/init_generator.rb +33 -37
  51. data/lib/generators/coalla/cms/lookups/install_generator.rb +17 -6
  52. data/lib/generators/coalla/cms/lookups/templates/migration.rb +4 -0
  53. data/lib/generators/coalla/cms/market/templates/controllers/products_controller.rb +1 -1
  54. data/lib/generators/coalla/cms/market/templates/controllers/properties_controller.rb +1 -1
  55. data/lib/generators/coalla/cms/meta_tags/install_generator.rb +58 -0
  56. data/lib/generators/coalla/cms/meta_tags/templates/migration.rb +23 -0
  57. data/lib/generators/coalla/cms/news/templates/views/new.haml.erb +1 -1
  58. data/lib/generators/coalla/cms/setup_admin_generator.rb +10 -7
  59. data/lib/generators/coalla/cms/setup_routes_generator.rb +1 -0
  60. data/lib/generators/coalla/cms/templates/assets.rb +2 -4
  61. data/lib/generators/coalla/cms/templates/controllers/admin/administrators_controller.rb +55 -0
  62. data/lib/generators/coalla/cms/templates/controllers/admin/base_controller.rb.erb +2 -2
  63. data/lib/generators/coalla/cms/templates/controllers/markup_controller.rb.erb +2 -0
  64. data/lib/generators/coalla/cms/templates/initializers/carrierwave.rb +47 -0
  65. data/lib/generators/coalla/cms/templates/locales/activerecord.en.yml +16 -0
  66. data/lib/generators/coalla/cms/templates/locales/activerecord.ru.yml +29 -0
  67. data/lib/generators/coalla/cms/templates/locales/admin.en.yml +27 -0
  68. data/lib/generators/coalla/cms/templates/locales/admin.ru.yml +27 -0
  69. data/lib/generators/coalla/cms/templates/views/admin/administrators/_form.html.haml +9 -0
  70. data/lib/generators/coalla/cms/templates/views/admin/administrators/edit.html.haml +5 -0
  71. data/lib/generators/coalla/cms/templates/views/admin/administrators/index.html.haml +15 -0
  72. data/lib/generators/coalla/cms/templates/views/admin/administrators/new.html.haml +4 -0
  73. data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/edit.html.haml.erb +1 -1
  74. data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/new.html.haml.erb +1 -1
  75. data/lib/generators/coalla/cms/templates/views/administrators/sessions/new.html.haml +3 -3
  76. metadata +102 -87
  77. data/lib/generators/coalla/cms/templates/activerecord.ru.yml +0 -13
  78. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-blockquote.png +0 -0
  79. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h1.png +0 -0
  80. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h2.png +0 -0
  81. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h3.png +0 -0
  82. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h4.png +0 -0
  83. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h5.png +0 -0
  84. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-h6.png +0 -0
  85. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-p.png +0 -0
  86. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/lbl-pre.png +0 -0
  87. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/wymiframe.css +0 -276
  88. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/iframe/default/wymiframe.html +0 -26
  89. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/jquery.wymeditor.js +0 -4819
  90. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/lang/en.js +0 -45
  91. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/lang/ru.js +0 -55
  92. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/imageupload/icons.png +0 -0
  93. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/imageupload/jquery.wymeditor.imageupload.js +0 -150
  94. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js +0 -91
  95. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/plugins/resizable/readme.txt +0 -124
  96. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/compact/icons.png +0 -0
  97. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/compact/skin.css +0 -134
  98. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/compact/skin.js +0 -35
  99. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/default/icons.png +0 -0
  100. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/default/skin.css +0 -341
  101. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/default/skin.js +0 -40
  102. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/bg.header.gif +0 -0
  103. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/bg.selector.silver.gif +0 -0
  104. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/bg.wymeditor.png +0 -0
  105. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/images/icons.silver.gif +0 -0
  106. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/skin.css +0 -131
  107. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/minimal/skin.js +0 -30
  108. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/COPYING +0 -674
  109. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/README +0 -27
  110. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/bg.header.gif +0 -0
  111. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/bg.selector.silver.gif +0 -0
  112. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/bg.wymeditor.png +0 -0
  113. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/images/icons.silver.gif +0 -0
  114. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/skin.css +0 -297
  115. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/silver/skin.js +0 -61
  116. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/twopanels/icons.png +0 -0
  117. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/twopanels/skin.css +0 -134
  118. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/twopanels/skin.js +0 -39
  119. data/lib/generators/coalla/cms/wysiwyg/templates/wymeditor/skins/wymeditor_icon.png +0 -0
  120. data/lib/generators/coalla/cms/wysiwyg/wymeditor_generator.rb +0 -17
  121. /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
- PhotoUploader = new PhotoUploader('#{j(render partial: 'admin/common/upload_form')}');
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
+ });
@@ -12,5 +12,6 @@
12
12
  = link_to section.creation_path, class: 'btn btn-success' do
13
13
  %i.glyphicon.glyphicon-plus
14
14
   
15
- Добавить
15
+ = t('admin.common.new')
16
+
16
17
 
data/coalla-cms.gemspec CHANGED
@@ -36,5 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.add_dependency 'remotipart'
37
37
  s.add_dependency 'rmagick'
38
38
  s.add_dependency 'will_paginate'
39
+ s.add_dependency 'standalone_typograf', '~> 3.0.2'
40
+ s.add_dependency 'meta-tags', '~> 2.1.0'
39
41
 
40
42
  end
@@ -1,5 +1,5 @@
1
1
  module Coalla
2
2
  module Cms
3
- VERSION = '0.4.4.3'
3
+ VERSION = '0.5.1.8'
4
4
  end
5
5
  end
@@ -50,4 +50,6 @@ module Coalla
50
50
 
51
51
  end
52
52
 
53
- ActiveRecord::Base.extend Coalla::PageSlider
53
+ unless Rails.configuration.try(:disable_page_slider)
54
+ ActiveRecord::Base.extend Coalla::PageSlider
55
+ end
@@ -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
- through_class = self.reflections[through_collection_name].klass
8
- self_foreign_key = self.reflections[through_collection_name].foreign_key
9
- association_model_name = self.reflections[relation_name].source_reflection_name.to_sym
10
- association_foreign_key = self.reflections[relation_name].foreign_key
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.13.2', require: false
23
- gem 'will_paginate', '3.0.7'
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.2'
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.6'
35
- gem 'thin', '1.6.3'
36
- gem 'eventmachine', '1.0.7'
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.3.0'
39
+ gem 'letter_opener', '1.4.1'
39
40
  gem 'quiet_assets', '1.1.0'
40
- gem 'byebug', '4.0.5'
41
- gem 'web-console', '2.1.2'
42
- gem 'spring', '1.3.4'
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
- copy_file 'activerecord.ru.yml', 'config/locales/activerecord.ru.yml'
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 '.gitignore', '.gitignore'
52
- copy_file '.gitattributes', '.gitattributes'
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 'errors/500.html', 'public/500.html'
59
- copy_file 'errors/404.html', 'public/404.html'
60
- copy_file 'errors/422.html', 'public/422.html'
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 'devise.ru.yml', 'config/locales/devise.ru.yml'
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
- copy_file 'assets.rb', 'config/initializers/assets.rb'
109
- end
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
- def basic_http_auth
119
- if Rails.env.staging?
120
- authenticate_or_request_with_http_basic do |username, password|
121
- username == 'demo' && password == "#{generate_password(4)}"
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("../../../../../../", __FILE__)
11
- class_option :copy, type: :boolean, default: false, description: "Copy all files to project"
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 "lib/generators/coalla/cms/lookups/templates/migration.rb", "db/migrate/create_lookups.rb"
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/_form.html.haml',
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
@@ -4,6 +4,10 @@ class CreateLookups < ActiveRecord::Migration
4
4
  t.text :code, null: false
5
5
  t.text :value
6
6
  t.text :type_code, null: false
7
+ t.text :value_options
8
+ t.text :tooltip
9
+ t.text :category
10
+ t.text :file
7
11
  t.timestamps
8
12
  end
9
13
 
@@ -7,7 +7,7 @@ module Admin
7
7
  PER_PAGE = 20
8
8
 
9
9
  def index
10
- @products = ::Market::Product.all.paginate(page: params[:page], per_page: PER_PAGE)
10
+ @products = ::Market::Product.order(created_at: :desc).paginate(page: params[:page], per_page: PER_PAGE)
11
11
  end
12
12
 
13
13
  def new
@@ -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.all.paginate(page: params[:page], per_page: PER_PAGE)
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
@@ -1,5 +1,5 @@
1
1
  %h1= <%= @class_name %>.model_name.human
2
2
  .page-header
3
- %h3 Добавление
3
+ %h3= t('admin.form.new')
4
4
 
5
5
  = render 'form'
@@ -17,14 +17,20 @@ module Coalla
17
17
  copy_file 'structure.rb', 'config/structure.rb'
18
18
  end
19
19
 
20
- def patch_application_controller
21
- inject_into_class "app/controllers/application_controller.rb", ApplicationController do
22
- " layout :layout_by_resource\n\n"
23
- end
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'
@@ -21,6 +21,7 @@ module Coalla
21
21
  scope controller: :autocomplete do
22
22
  get 'list/:model/:field' => :list, as: 'autocomplete'
23
23
  end
24
+ get 'notifier/test_sending' => 'notifier#test_sending'
24
25
  end"
25
26
  end
26
27
  end
@@ -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 += [->(path) {
11
- full_path = Rails.application.assets.resolve(path)
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
@@ -0,0 +1,2 @@
1
+ class MarkupController < ApplicationController
2
+ end
@@ -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
+