c80_push 0.1.0.8 → 0.1.0.10
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.
- checksums.yaml +4 -4
- data/.gitignore +6 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +192 -0
- data/app/assets/images/c80_push/.keep +0 -0
- data/bin/rails +14 -0
- data/c80_push.gemspec +23 -0
- data/engines/be/README.md +12 -0
- data/engines/be/app/admin/be/message_dealers.rb +24 -0
- data/engines/be/app/assets/javascripts/be.js.coffee +1 -0
- data/engines/be/app/assets/javascripts/frontend/dealer-form-ajax.js +54 -0
- data/engines/be/app/assets/stylesheets/backend/_active_admin_custom.scss +1 -0
- data/engines/be/app/assets/stylesheets/backend/active_admin_custom/_message_dealers.scss +8 -0
- data/engines/be/app/assets/stylesheets/be.scss +2 -0
- data/engines/be/app/assets/stylesheets/be_admin.scss +1 -0
- data/engines/be/app/assets/stylesheets/frontend/form.scss +130 -0
- data/engines/be/app/controllers/be/be_controller.rb +27 -0
- data/engines/be/app/helpers/be/be_helper.rb +22 -0
- data/engines/be/app/mailer/be/message_dealer_mailer.rb +29 -0
- data/engines/be/app/models/be/message_dealer.rb +5 -0
- data/engines/be/app/models/be/message_dealer_validator.rb +52 -0
- data/engines/be/app/views/be/be/give_me_dealer_form.js.erb +10 -0
- data/engines/be/app/views/be/be/message_dealer.js.erb +4 -0
- data/engines/be/app/views/be/message_dealer_mailer/mail_mess.html.erb +1 -0
- data/engines/be/app/views/be/shared/_dealer_form.html.erb +77 -0
- data/engines/be/app/views/be/shared/_ok_message.html.erb +16 -0
- data/engines/be/config/routes.rb +4 -0
- data/engines/be/db/migrate/20170725011920_create_be_message_dealers.rb +12 -0
- data/engines/be/lib/be/engine.rb +21 -0
- data/engines/be/lib/be/version.rb +3 -0
- data/engines/be/lib/be.rb +5 -0
- data/lib/c80_push/version.rb +1 -1
- data/lib/c80_push.rb +1 -1
- metadata +31 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 963dfdf5b64914f82d1034ef4223a621ceb7892b
|
|
4
|
+
data.tar.gz: 43acc93010c73f1e2059ac9a7ba6e52ba4bf4465
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 31341528da55ae261ab8acf2bbe58a83ded4738ee3d7a394281b7dbae72b5a2c4183939b5991a4657f82efca4228e44f48245f46bd5ac6e65e72bc8f368f50c0
|
|
7
|
+
data.tar.gz: 3a0fcb83724e2dd0fa6ec5ae9fd92ef09b16a2efde3d96bbe2ca0f48c5fd152c585708a22e9a208ccb9cfd5bc81ef2694bf79f54ce4c20197c3ad8a8bab9df8c
|
data/.gitignore
ADDED
data/Gemfile
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
# Declare your gem's dependencies in c80_push.gemspec.
|
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
|
5
|
+
# development dependencies will be added by default to the :development group.
|
|
6
|
+
gemspec
|
|
7
|
+
|
|
8
|
+
# Declare any dependencies that are still in development here instead of in
|
|
9
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
|
10
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
|
11
|
+
# your gem to rubygems.org.
|
|
12
|
+
|
|
13
|
+
# To use a debugger
|
|
14
|
+
# gem 'byebug', group: [:development, :test]
|
|
15
|
+
gem 'be', path: 'engines/be'
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
c80_push (0.1.0.2)
|
|
5
|
+
activeadmin
|
|
6
|
+
rails
|
|
7
|
+
|
|
8
|
+
GEM
|
|
9
|
+
remote: https://rubygems.org/
|
|
10
|
+
specs:
|
|
11
|
+
actioncable (5.1.2)
|
|
12
|
+
actionpack (= 5.1.2)
|
|
13
|
+
nio4r (~> 2.0)
|
|
14
|
+
websocket-driver (~> 0.6.1)
|
|
15
|
+
actionmailer (5.1.2)
|
|
16
|
+
actionpack (= 5.1.2)
|
|
17
|
+
actionview (= 5.1.2)
|
|
18
|
+
activejob (= 5.1.2)
|
|
19
|
+
mail (~> 2.5, >= 2.5.4)
|
|
20
|
+
rails-dom-testing (~> 2.0)
|
|
21
|
+
actionpack (5.1.2)
|
|
22
|
+
actionview (= 5.1.2)
|
|
23
|
+
activesupport (= 5.1.2)
|
|
24
|
+
rack (~> 2.0)
|
|
25
|
+
rack-test (~> 0.6.3)
|
|
26
|
+
rails-dom-testing (~> 2.0)
|
|
27
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
28
|
+
actionview (5.1.2)
|
|
29
|
+
activesupport (= 5.1.2)
|
|
30
|
+
builder (~> 3.1)
|
|
31
|
+
erubi (~> 1.4)
|
|
32
|
+
rails-dom-testing (~> 2.0)
|
|
33
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
|
34
|
+
activeadmin (1.0.0)
|
|
35
|
+
arbre (>= 1.1.1)
|
|
36
|
+
bourbon
|
|
37
|
+
coffee-rails
|
|
38
|
+
formtastic (~> 3.1)
|
|
39
|
+
formtastic_i18n
|
|
40
|
+
inherited_resources (~> 1.7)
|
|
41
|
+
jquery-rails
|
|
42
|
+
jquery-ui-rails
|
|
43
|
+
kaminari (>= 0.15, < 2.0)
|
|
44
|
+
railties (>= 4.2, < 5.2)
|
|
45
|
+
ransack (~> 1.3)
|
|
46
|
+
sass-rails
|
|
47
|
+
sprockets (< 4.1)
|
|
48
|
+
activejob (5.1.2)
|
|
49
|
+
activesupport (= 5.1.2)
|
|
50
|
+
globalid (>= 0.3.6)
|
|
51
|
+
activemodel (5.1.2)
|
|
52
|
+
activesupport (= 5.1.2)
|
|
53
|
+
activerecord (5.1.2)
|
|
54
|
+
activemodel (= 5.1.2)
|
|
55
|
+
activesupport (= 5.1.2)
|
|
56
|
+
arel (~> 8.0)
|
|
57
|
+
activesupport (5.1.2)
|
|
58
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
59
|
+
i18n (~> 0.7)
|
|
60
|
+
minitest (~> 5.1)
|
|
61
|
+
tzinfo (~> 1.1)
|
|
62
|
+
arbre (1.1.1)
|
|
63
|
+
activesupport (>= 3.0.0)
|
|
64
|
+
arel (8.0.0)
|
|
65
|
+
bourbon (4.3.4)
|
|
66
|
+
sass (~> 3.4)
|
|
67
|
+
thor (~> 0.19)
|
|
68
|
+
builder (3.2.3)
|
|
69
|
+
coffee-rails (4.2.2)
|
|
70
|
+
coffee-script (>= 2.2.0)
|
|
71
|
+
railties (>= 4.0.0)
|
|
72
|
+
coffee-script (2.4.1)
|
|
73
|
+
coffee-script-source
|
|
74
|
+
execjs
|
|
75
|
+
coffee-script-source (1.12.2)
|
|
76
|
+
concurrent-ruby (1.0.5)
|
|
77
|
+
erubi (1.6.1)
|
|
78
|
+
execjs (2.7.0)
|
|
79
|
+
formtastic (3.1.5)
|
|
80
|
+
actionpack (>= 3.2.13)
|
|
81
|
+
formtastic_i18n (0.6.0)
|
|
82
|
+
globalid (0.4.0)
|
|
83
|
+
activesupport (>= 4.2.0)
|
|
84
|
+
has_scope (0.7.1)
|
|
85
|
+
actionpack (>= 4.1, < 5.2)
|
|
86
|
+
activesupport (>= 4.1, < 5.2)
|
|
87
|
+
i18n (0.8.4)
|
|
88
|
+
inherited_resources (1.7.2)
|
|
89
|
+
actionpack (>= 3.2, < 5.2.x)
|
|
90
|
+
has_scope (~> 0.6)
|
|
91
|
+
railties (>= 3.2, < 5.2.x)
|
|
92
|
+
responders
|
|
93
|
+
jquery-rails (4.3.1)
|
|
94
|
+
rails-dom-testing (>= 1, < 3)
|
|
95
|
+
railties (>= 4.2.0)
|
|
96
|
+
thor (>= 0.14, < 2.0)
|
|
97
|
+
jquery-ui-rails (6.0.1)
|
|
98
|
+
railties (>= 3.2.16)
|
|
99
|
+
kaminari (1.0.1)
|
|
100
|
+
activesupport (>= 4.1.0)
|
|
101
|
+
kaminari-actionview (= 1.0.1)
|
|
102
|
+
kaminari-activerecord (= 1.0.1)
|
|
103
|
+
kaminari-core (= 1.0.1)
|
|
104
|
+
kaminari-actionview (1.0.1)
|
|
105
|
+
actionview
|
|
106
|
+
kaminari-core (= 1.0.1)
|
|
107
|
+
kaminari-activerecord (1.0.1)
|
|
108
|
+
activerecord
|
|
109
|
+
kaminari-core (= 1.0.1)
|
|
110
|
+
kaminari-core (1.0.1)
|
|
111
|
+
loofah (2.0.3)
|
|
112
|
+
nokogiri (>= 1.5.9)
|
|
113
|
+
mail (2.6.6)
|
|
114
|
+
mime-types (>= 1.16, < 4)
|
|
115
|
+
method_source (0.8.2)
|
|
116
|
+
mime-types (3.1)
|
|
117
|
+
mime-types-data (~> 3.2015)
|
|
118
|
+
mime-types-data (3.2016.0521)
|
|
119
|
+
mini_portile2 (2.2.0)
|
|
120
|
+
minitest (5.10.2)
|
|
121
|
+
nio4r (2.1.0)
|
|
122
|
+
nokogiri (1.8.0)
|
|
123
|
+
mini_portile2 (~> 2.2.0)
|
|
124
|
+
polyamorous (1.3.1)
|
|
125
|
+
activerecord (>= 3.0)
|
|
126
|
+
rack (2.0.3)
|
|
127
|
+
rack-test (0.6.3)
|
|
128
|
+
rack (>= 1.0)
|
|
129
|
+
rails (5.1.2)
|
|
130
|
+
actioncable (= 5.1.2)
|
|
131
|
+
actionmailer (= 5.1.2)
|
|
132
|
+
actionpack (= 5.1.2)
|
|
133
|
+
actionview (= 5.1.2)
|
|
134
|
+
activejob (= 5.1.2)
|
|
135
|
+
activemodel (= 5.1.2)
|
|
136
|
+
activerecord (= 5.1.2)
|
|
137
|
+
activesupport (= 5.1.2)
|
|
138
|
+
bundler (>= 1.3.0, < 2.0)
|
|
139
|
+
railties (= 5.1.2)
|
|
140
|
+
sprockets-rails (>= 2.0.0)
|
|
141
|
+
rails-dom-testing (2.0.3)
|
|
142
|
+
activesupport (>= 4.2.0)
|
|
143
|
+
nokogiri (>= 1.6)
|
|
144
|
+
rails-html-sanitizer (1.0.3)
|
|
145
|
+
loofah (~> 2.0)
|
|
146
|
+
railties (5.1.2)
|
|
147
|
+
actionpack (= 5.1.2)
|
|
148
|
+
activesupport (= 5.1.2)
|
|
149
|
+
method_source
|
|
150
|
+
rake (>= 0.8.7)
|
|
151
|
+
thor (>= 0.18.1, < 2.0)
|
|
152
|
+
rake (12.0.0)
|
|
153
|
+
ransack (1.8.2)
|
|
154
|
+
actionpack (>= 3.0)
|
|
155
|
+
activerecord (>= 3.0)
|
|
156
|
+
activesupport (>= 3.0)
|
|
157
|
+
i18n
|
|
158
|
+
polyamorous (~> 1.3)
|
|
159
|
+
responders (2.4.0)
|
|
160
|
+
actionpack (>= 4.2.0, < 5.3)
|
|
161
|
+
railties (>= 4.2.0, < 5.3)
|
|
162
|
+
sass (3.4.24)
|
|
163
|
+
sass-rails (5.0.6)
|
|
164
|
+
railties (>= 4.0.0, < 6)
|
|
165
|
+
sass (~> 3.1)
|
|
166
|
+
sprockets (>= 2.8, < 4.0)
|
|
167
|
+
sprockets-rails (>= 2.0, < 4.0)
|
|
168
|
+
tilt (>= 1.1, < 3)
|
|
169
|
+
sprockets (3.7.1)
|
|
170
|
+
concurrent-ruby (~> 1.0)
|
|
171
|
+
rack (> 1, < 3)
|
|
172
|
+
sprockets-rails (3.2.0)
|
|
173
|
+
actionpack (>= 4.0)
|
|
174
|
+
activesupport (>= 4.0)
|
|
175
|
+
sprockets (>= 3.0.0)
|
|
176
|
+
thor (0.19.4)
|
|
177
|
+
thread_safe (0.3.6)
|
|
178
|
+
tilt (2.0.7)
|
|
179
|
+
tzinfo (1.2.3)
|
|
180
|
+
thread_safe (~> 0.1)
|
|
181
|
+
websocket-driver (0.6.5)
|
|
182
|
+
websocket-extensions (>= 0.1.0)
|
|
183
|
+
websocket-extensions (0.1.2)
|
|
184
|
+
|
|
185
|
+
PLATFORMS
|
|
186
|
+
ruby
|
|
187
|
+
|
|
188
|
+
DEPENDENCIES
|
|
189
|
+
c80_push!
|
|
190
|
+
|
|
191
|
+
BUNDLED WITH
|
|
192
|
+
1.14.6
|
|
File without changes
|
data/bin/rails
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# This command will automatically be run when you run "rails" with Rails gems
|
|
3
|
+
# installed from the root of your application.
|
|
4
|
+
|
|
5
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
|
6
|
+
ENGINE_PATH = File.expand_path('../../lib/c80_push/engine', __FILE__)
|
|
7
|
+
APP_PATH = File.expand_path('../../test/dummy/config/application', __FILE__)
|
|
8
|
+
|
|
9
|
+
# Set up gems listed in the Gemfile.
|
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
|
11
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
|
12
|
+
|
|
13
|
+
require 'rails/all'
|
|
14
|
+
require 'rails/engine/commands'
|
data/c80_push.gemspec
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
|
2
|
+
|
|
3
|
+
# Maintain your gem's version:
|
|
4
|
+
require 'c80_push/version'
|
|
5
|
+
|
|
6
|
+
# Describe your gem and declare its dependencies:
|
|
7
|
+
Gem::Specification.new do |s|
|
|
8
|
+
s.name = 'c80_push'
|
|
9
|
+
s.version = C80Push::VERSION
|
|
10
|
+
s.authors = ['C80609A']
|
|
11
|
+
s.email = ['c080609a@gmail.com']
|
|
12
|
+
s.homepage = 'https://github.com/c80609a/c80_push'
|
|
13
|
+
s.summary = 'Пушеры'
|
|
14
|
+
s.description = 'Добавляет функционал дилеров и офисов продаж'
|
|
15
|
+
s.license = 'MIT'
|
|
16
|
+
|
|
17
|
+
# s.files = Dir['{app,config,db,lib,engines}/**/*', 'MIT-LICENSE', 'Rakefile', 'README.md']
|
|
18
|
+
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
19
|
+
|
|
20
|
+
s.add_dependency 'rails'#, '~> 5.1.1'
|
|
21
|
+
s.add_dependency 'activeadmin'
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Функционал обратной связи для дилеров (на странице «Стать дилером»)
|
|
2
|
+
|
|
3
|
+
Данный функционал предполагает возможность пользователю подать
|
|
4
|
+
заявку для того, чтобы стать дилером. Пользователю необходимо
|
|
5
|
+
заполнить следующие поля:
|
|
6
|
+
|
|
7
|
+
- название организации (обязательно для заполнения),
|
|
8
|
+
- имя контактного лица (обязательно для заполнения),
|
|
9
|
+
- телефонный номер (условно обязательно для заполнения – необходимо заполнить
|
|
10
|
+
минимум одно из двух полей «телефонные номер» или e-mail),
|
|
11
|
+
- e-mail (условно обязательно для заполнения – необходимо заполнить минимум
|
|
12
|
+
одно из двух полей «телефонные номер» или e-mail).
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
ActiveAdmin.register Be::MessageDealer, :as => 'MessageDealer' do
|
|
2
|
+
|
|
3
|
+
before_filter :skip_sidebar!, :only => :index
|
|
4
|
+
|
|
5
|
+
menu :label => 'Заявки',
|
|
6
|
+
:parent => 'x_c80_push',
|
|
7
|
+
:priority => 3
|
|
8
|
+
|
|
9
|
+
index do
|
|
10
|
+
selectable_column
|
|
11
|
+
id_column
|
|
12
|
+
column :created_at
|
|
13
|
+
column :name
|
|
14
|
+
column :name_org
|
|
15
|
+
column :email_or_phone
|
|
16
|
+
column :comment do |msg|
|
|
17
|
+
msg.comment.html_safe if msg.comment.present?
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
actions
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#= require_directory ./frontend
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
// =[ interface ]=====================================================================================================================
|
|
3
|
+
|
|
4
|
+
var $dd;
|
|
5
|
+
var markInvalidateInProgress = false;
|
|
6
|
+
var markWasPasted = false;
|
|
7
|
+
var fDealerFormInvalidate;
|
|
8
|
+
var fDealerFormOnScroll;
|
|
9
|
+
|
|
10
|
+
// =[ implementation ]=====================================================================================================================
|
|
11
|
+
|
|
12
|
+
$(function () {
|
|
13
|
+
|
|
14
|
+
$dd = $("div#dd");
|
|
15
|
+
|
|
16
|
+
if ($dd.length === 1) {
|
|
17
|
+
|
|
18
|
+
fDealerFormInvalidate = function () {
|
|
19
|
+
if (!markInvalidateInProgress) {
|
|
20
|
+
markInvalidateInProgress = true;
|
|
21
|
+
|
|
22
|
+
if (!markWasPasted) {
|
|
23
|
+
|
|
24
|
+
$('<div id="loading"></div>').appendTo($dd);
|
|
25
|
+
|
|
26
|
+
$.ajax({
|
|
27
|
+
url: '/give_me_dealer_form',
|
|
28
|
+
type: 'GET',
|
|
29
|
+
dataType: 'script'
|
|
30
|
+
}).done(function (data, result) {
|
|
31
|
+
if (result === "success") {
|
|
32
|
+
markWasPasted = true;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//noinspection JSUnusedLocalSymbols
|
|
40
|
+
fDealerFormOnScroll = function(event) {
|
|
41
|
+
var closeToBottom = jQuery(window).scrollTop() >= 0;
|
|
42
|
+
if (closeToBottom) {
|
|
43
|
+
fDealerFormInvalidate();
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// start
|
|
48
|
+
$(document).bind('scroll', fDealerFormOnScroll);
|
|
49
|
+
setTimeout(function () {
|
|
50
|
+
fDealerFormOnScroll();
|
|
51
|
+
},300);
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "active_admin_custom/message_dealers";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "backend/active_admin_custom";
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#dd {
|
|
2
|
+
margin: 0;
|
|
3
|
+
background-color: transparent;
|
|
4
|
+
min-height: 300px;
|
|
5
|
+
position: relative;
|
|
6
|
+
* { &:focus { outline: none !important; } }
|
|
7
|
+
|
|
8
|
+
#loading {
|
|
9
|
+
position: absolute;
|
|
10
|
+
top: 0;
|
|
11
|
+
left: 0;
|
|
12
|
+
bottom: 0;
|
|
13
|
+
right: 0;
|
|
14
|
+
text-align: center;
|
|
15
|
+
font-size: 20px;
|
|
16
|
+
background: rgba(255, 255, 255, 1) url(data:image/gif;base64,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) 50% 50% no-repeat;
|
|
17
|
+
z-index: 9999;
|
|
18
|
+
line-height: 3;
|
|
19
|
+
transition: visibility 1s, opacity 0.5s linear;
|
|
20
|
+
|
|
21
|
+
&.invis {
|
|
22
|
+
visibility: hidden;
|
|
23
|
+
opacity: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
div#dealer_form { /* NOTE:: получается, на странице может быть только одна такая форма */
|
|
29
|
+
|
|
30
|
+
.modal-dialog {
|
|
31
|
+
width: auto;
|
|
32
|
+
margin: 0;
|
|
33
|
+
|
|
34
|
+
.modal-content {
|
|
35
|
+
box-shadow: none;
|
|
36
|
+
border: none;
|
|
37
|
+
/*background-color: transparent;*/
|
|
38
|
+
|
|
39
|
+
div.modal-header {
|
|
40
|
+
border-bottom: none !important;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
div.modal-body {
|
|
44
|
+
padding: 0;
|
|
45
|
+
|
|
46
|
+
div.form-group {
|
|
47
|
+
margin-bottom: 25px;
|
|
48
|
+
|
|
49
|
+
&.hiddn {
|
|
50
|
+
width: 0;
|
|
51
|
+
height: 0;
|
|
52
|
+
position: absolute;
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
label {
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.input_wrapper {
|
|
61
|
+
|
|
62
|
+
position: relative;
|
|
63
|
+
|
|
64
|
+
&:after {
|
|
65
|
+
content: "";
|
|
66
|
+
background: transparent url(image_path('stripe.png')) repeat 0 0; /*NOTE:: можно переопределить в custom классах */
|
|
67
|
+
opacity: 0.1;
|
|
68
|
+
top: 0;
|
|
69
|
+
left: 0;
|
|
70
|
+
bottom: 0;
|
|
71
|
+
right: 0;
|
|
72
|
+
position: absolute;
|
|
73
|
+
z-index: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.form-control {
|
|
77
|
+
position: relative;
|
|
78
|
+
z-index: 1;
|
|
79
|
+
|
|
80
|
+
&:focus {
|
|
81
|
+
text-shadow: none !important;
|
|
82
|
+
border: #2d2d2d 1px solid;
|
|
83
|
+
box-shadow: none !important;
|
|
84
|
+
-webkit-box-shadow: none !important;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
textarea {
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.help-block {
|
|
96
|
+
padding-left: 0 !important;
|
|
97
|
+
position: absolute;
|
|
98
|
+
text-align: right;
|
|
99
|
+
padding-right: 0;
|
|
100
|
+
color: #ff0000;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&.has-error {
|
|
104
|
+
|
|
105
|
+
.help-block {
|
|
106
|
+
/*color: #ff7f7c;*/
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
div.actions {
|
|
114
|
+
margin-top: 15px;
|
|
115
|
+
|
|
116
|
+
input.btn {
|
|
117
|
+
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
}
|
|
130
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Be
|
|
2
|
+
class BeController < ::ApplicationController
|
|
3
|
+
|
|
4
|
+
def give_me_dealer_form
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def message_dealer
|
|
8
|
+
puts '<BeController.message_dealer>'
|
|
9
|
+
m = MessageDealer.new(mess_params)
|
|
10
|
+
respond_to do |format|
|
|
11
|
+
if m.save
|
|
12
|
+
|
|
13
|
+
format.js
|
|
14
|
+
MessageDealerMailer.send_mess(m, 'Заявка "Стать дилером"').deliver
|
|
15
|
+
else
|
|
16
|
+
puts "<BeController.message_dealer> errors: #{m.errors}"
|
|
17
|
+
format.js { render json: m.errors, status: :unprocessable_entity }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def mess_params
|
|
23
|
+
params.require(:mess).permit(:name, :name_org, :email_or_phone, :comment)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Be
|
|
2
|
+
module BeHelper
|
|
3
|
+
|
|
4
|
+
def render_dealer_form
|
|
5
|
+
|
|
6
|
+
render :partial => 'be/shared/dealer_form',
|
|
7
|
+
:locals => {
|
|
8
|
+
:mess => MessageDealer.new
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def render_ok_message
|
|
14
|
+
render :partial => 'be/shared/ok_message',
|
|
15
|
+
:locals => {
|
|
16
|
+
ok_text: 'Мы свяжемся с Вами в ближайшее время.',
|
|
17
|
+
wtitle: 'Ваше сообщение отправлено'
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Be
|
|
2
|
+
class MessageDealerMailer < ActionMailer::Base
|
|
3
|
+
|
|
4
|
+
default from: Proc.new { SiteProp.first.mail_from },
|
|
5
|
+
to: Proc.new { SiteProp.first.mail_to }
|
|
6
|
+
|
|
7
|
+
def send_mess(message, subject)
|
|
8
|
+
@message = format_message(message)
|
|
9
|
+
|
|
10
|
+
puts '<MessageDealerMailer.send_mess> Отправляем сообщение.'
|
|
11
|
+
mail(subject: subject) do |format|
|
|
12
|
+
format.html { render 'mail_mess'}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
#puts "#{SiteProps.first.mail_to}"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def format_message(message)
|
|
21
|
+
result = "<br> • Имя: #{message.name}"
|
|
22
|
+
result = "<br> • Название организации: #{message.name_org}"
|
|
23
|
+
result += "<br> • Телефон или Email: #{message.email_or_phone}"
|
|
24
|
+
result += "<br> • Комментарий:<br><br> #{message.comment}"
|
|
25
|
+
result
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module Be
|
|
2
|
+
class MessageDealerValidator < ActiveModel::Validator
|
|
3
|
+
def validate(record)
|
|
4
|
+
unless record.errors.present?
|
|
5
|
+
puts "<MessageDealerValidator.validate> record = #{record}"
|
|
6
|
+
mark_please_used = false
|
|
7
|
+
|
|
8
|
+
unless record.name.present?
|
|
9
|
+
record.errors[:name] = 'Укажите, пожалуйста, Ваше имя'
|
|
10
|
+
mark_please_used = true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
unless record.name_org.present?
|
|
14
|
+
if mark_please_used
|
|
15
|
+
record.errors[:name_org] = 'Укажите название организации'
|
|
16
|
+
else
|
|
17
|
+
record.errors[:name_org] = 'Укажите, пожалуйста, название организации'
|
|
18
|
+
mark_please_used = true
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
if record.email_or_phone.present?
|
|
23
|
+
# указан email
|
|
24
|
+
if record.email_or_phone[/([a-z0-9_.-]+)@([a-z0-9-]+)\.[a-z.]+/].present?
|
|
25
|
+
else
|
|
26
|
+
# указан мобильный
|
|
27
|
+
if record.email_or_phone[/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/].present?
|
|
28
|
+
else
|
|
29
|
+
if mark_please_used
|
|
30
|
+
t2 = 'Номер телефона или email введены неверно'
|
|
31
|
+
else
|
|
32
|
+
t2 = 'Пожалуйста, укажите корректный номер телефона или email'
|
|
33
|
+
mark_please_used = true
|
|
34
|
+
end
|
|
35
|
+
record.errors[:email_or_phone] = t2
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
else
|
|
39
|
+
if mark_please_used
|
|
40
|
+
t1 = 'Укажите или номер телефона или email'
|
|
41
|
+
else
|
|
42
|
+
t1 = 'Укажите, пожалуйста, или номер телефона или email'
|
|
43
|
+
mark_please_used = true
|
|
44
|
+
end
|
|
45
|
+
record.errors[:email_or_phone] = t1
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= @message.html_safe %>
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<%= render_ok_message %>
|
|
2
|
+
<div id="dealer_form" tabindex="-1" role="dialog" aria-labelledby="dealerForm" aria-hidden="true">
|
|
3
|
+
<div class="modal-dialog">
|
|
4
|
+
<div class="modal-content">
|
|
5
|
+
<div class="modal-header">
|
|
6
|
+
<h4 class="modal-title medium" id="myModalLabel">Обратная связь</h4>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="modal-body regular">
|
|
9
|
+
|
|
10
|
+
<%= form_for :mess,
|
|
11
|
+
:url => '/message_dealer',
|
|
12
|
+
:remote => true,
|
|
13
|
+
html: {
|
|
14
|
+
multipart: true,
|
|
15
|
+
:role => :form,
|
|
16
|
+
:id => 'form_dealer',
|
|
17
|
+
:data => {
|
|
18
|
+
:model => 'mess'
|
|
19
|
+
}
|
|
20
|
+
} do |f| %>
|
|
21
|
+
|
|
22
|
+
<div class="form-group clearfix">
|
|
23
|
+
<%= f.label :name_org, 'Название организации', class: 'control-label must' %>
|
|
24
|
+
<div class="input_wrapper"><%= f.text_field :name_org, class: 'form-control' %></div>
|
|
25
|
+
<span class="help-block col-md-12"></span>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="form-group clearfix">
|
|
29
|
+
<%= f.label :name, 'Имя контактного лица', class: 'control-label must' %>
|
|
30
|
+
<div class="input_wrapper"><%= f.text_field :name, class: 'form-control' %></div>
|
|
31
|
+
<span class="help-block col-md-12"></span>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div class="form-group clearfix">
|
|
35
|
+
<%= f.label :email_or_phone, 'Email или телефон', class: 'control-label must' %>
|
|
36
|
+
<div class="input_wrapper"><%= f.text_field :email_or_phone, class: 'form-control' %></div>
|
|
37
|
+
<span class="help-block col-md-12"></span>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<div class="form-group clearfix" style="margin-bottom: 0;">
|
|
41
|
+
<%= f.label :comment, 'Сообщение', class: 'control-label' %>
|
|
42
|
+
<div class="input_wrapper"><%= f.text_area :comment, class: 'form-control', :rows => "4" %></div>
|
|
43
|
+
<span class="help-block col-md-12"></span>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div class="actions clearfix">
|
|
47
|
+
<%= f.label ' ', class: 'control-label' %>
|
|
48
|
+
<%= f.submit 'Отправить',
|
|
49
|
+
class: 'btn btn-primary',
|
|
50
|
+
data: {
|
|
51
|
+
disable_with: 'Отправляется...'
|
|
52
|
+
}
|
|
53
|
+
%>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<% end %>
|
|
57
|
+
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<%# настраиваем форму %>
|
|
65
|
+
<script>
|
|
66
|
+
$(document).ready(function () {
|
|
67
|
+
|
|
68
|
+
var $form = $("form#form_dealer");
|
|
69
|
+
|
|
70
|
+
$form.bind("ajax:error", function (event, data, status, xhr) {
|
|
71
|
+
$form.render_form_errors($.parseJSON(data.responseText));
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
$form.modal_success();
|
|
75
|
+
|
|
76
|
+
});
|
|
77
|
+
</script>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="modal fade" id="modal_ok" tabindex="1" role="dialog" aria-labelledby="modalOk" aria-hidden="true">
|
|
2
|
+
<div class="modal-dialog">
|
|
3
|
+
<div class="modal-content">
|
|
4
|
+
<div class="modal-header">
|
|
5
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
6
|
+
<h4 class="modal-title" id="myModalLabel"><%= wtitle %></h4>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="modal-body">
|
|
9
|
+
<p><%= ok_text %></p>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="modal-footer">
|
|
12
|
+
<button type="button" class="btn btn-primary" data-dismiss="modal">Закрыть</button>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class CreateBeMessageDealers < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :be_message_dealers do |t|
|
|
4
|
+
t.string :name, null: false
|
|
5
|
+
t.string :name_org, null: false
|
|
6
|
+
t.string :email_or_phone, null: false
|
|
7
|
+
t.string :comment
|
|
8
|
+
|
|
9
|
+
t.timestamps
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Be
|
|
2
|
+
class Engine < ::Rails::Engine
|
|
3
|
+
isolate_namespace Be
|
|
4
|
+
|
|
5
|
+
initializer :be_engine do
|
|
6
|
+
if defined?(ActiveAdmin)
|
|
7
|
+
ActiveAdmin.application.load_paths += Dir["#{config.root}/app/models/**/"]
|
|
8
|
+
ActiveAdmin.application.load_paths += Dir["#{config.root}/app/admin/**/"]
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
initializer :append_migrations do |app|
|
|
13
|
+
unless app.root.to_s.match root.to_s
|
|
14
|
+
config.paths['db/migrate'].expanded.each do |expanded_path|
|
|
15
|
+
app.config.paths['db/migrate'] << expanded_path
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/c80_push/version.rb
CHANGED
data/lib/c80_push.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: c80_push
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.0.
|
|
4
|
+
version: 0.1.0.10
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- C80609A
|
|
@@ -45,6 +45,9 @@ executables: []
|
|
|
45
45
|
extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
|
47
47
|
files:
|
|
48
|
+
- ".gitignore"
|
|
49
|
+
- Gemfile
|
|
50
|
+
- Gemfile.lock
|
|
48
51
|
- MIT-LICENSE
|
|
49
52
|
- README.md
|
|
50
53
|
- Rakefile
|
|
@@ -52,6 +55,7 @@ files:
|
|
|
52
55
|
- app/admin/c80_push/regions.rb
|
|
53
56
|
- app/admin/c80_push/x_c80_push.rb
|
|
54
57
|
- app/assets/config/c80_push_manifest.js
|
|
58
|
+
- app/assets/images/c80_push/.keep
|
|
55
59
|
- app/assets/javascripts/c80_push.js.coffee
|
|
56
60
|
- app/assets/javascripts/c80_push/backend/dealers.js
|
|
57
61
|
- app/assets/javascripts/c80_push/frontend/c80_push_page_dealers/_dealers_left_list_clicks.js
|
|
@@ -79,6 +83,8 @@ files:
|
|
|
79
83
|
- app/models/c80_push/region.rb
|
|
80
84
|
- app/views/c80_push/shared/_page_dealers.html.erb
|
|
81
85
|
- app/views/c80_push/shared/_select_region.html.erb
|
|
86
|
+
- bin/rails
|
|
87
|
+
- c80_push.gemspec
|
|
82
88
|
- config/locales/dealer/ru.yml
|
|
83
89
|
- config/locales/office/ru.yml
|
|
84
90
|
- config/locales/region/ru.yml
|
|
@@ -91,6 +97,30 @@ files:
|
|
|
91
97
|
- db/migrate/20170626130303_create_c80_push_join_table_offices_regions.rb
|
|
92
98
|
- db/migrate/20170630061313_create_c80_push_presets.rb
|
|
93
99
|
- db/migrate/20170630061515_create_c80_push_join_table_dealers_presets.rb
|
|
100
|
+
- engines/be/README.md
|
|
101
|
+
- engines/be/app/admin/be/message_dealers.rb
|
|
102
|
+
- engines/be/app/assets/javascripts/be.js.coffee
|
|
103
|
+
- engines/be/app/assets/javascripts/frontend/dealer-form-ajax.js
|
|
104
|
+
- engines/be/app/assets/stylesheets/backend/_active_admin_custom.scss
|
|
105
|
+
- engines/be/app/assets/stylesheets/backend/active_admin_custom/_message_dealers.scss
|
|
106
|
+
- engines/be/app/assets/stylesheets/be.scss
|
|
107
|
+
- engines/be/app/assets/stylesheets/be_admin.scss
|
|
108
|
+
- engines/be/app/assets/stylesheets/frontend/form.scss
|
|
109
|
+
- engines/be/app/controllers/be/be_controller.rb
|
|
110
|
+
- engines/be/app/helpers/be/be_helper.rb
|
|
111
|
+
- engines/be/app/mailer/be/message_dealer_mailer.rb
|
|
112
|
+
- engines/be/app/models/be/message_dealer.rb
|
|
113
|
+
- engines/be/app/models/be/message_dealer_validator.rb
|
|
114
|
+
- engines/be/app/views/be/be/give_me_dealer_form.js.erb
|
|
115
|
+
- engines/be/app/views/be/be/message_dealer.js.erb
|
|
116
|
+
- engines/be/app/views/be/message_dealer_mailer/mail_mess.html.erb
|
|
117
|
+
- engines/be/app/views/be/shared/_dealer_form.html.erb
|
|
118
|
+
- engines/be/app/views/be/shared/_ok_message.html.erb
|
|
119
|
+
- engines/be/config/routes.rb
|
|
120
|
+
- engines/be/db/migrate/20170725011920_create_be_message_dealers.rb
|
|
121
|
+
- engines/be/lib/be.rb
|
|
122
|
+
- engines/be/lib/be/engine.rb
|
|
123
|
+
- engines/be/lib/be/version.rb
|
|
94
124
|
- lib/c80_push.rb
|
|
95
125
|
- lib/c80_push/engine.rb
|
|
96
126
|
- lib/c80_push/version.rb
|