c80_callback 0.1.0.1 → 0.1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/loader_button.gif +0 -0
  3. data/app/assets/javascripts/c80_callback/callback_decorator.js +84 -0
  4. data/app/assets/stylesheets/c80_callback/bs_modal.scss +15 -0
  5. data/app/assets/stylesheets/c80_callback/c80_callback_progress.scss +3 -0
  6. data/app/assets/stylesheets/c80_callback/callback_simple_form.scss +18 -1
  7. data/app/controllers/c80_callback/application_controller.rb +18 -0
  8. data/app/controllers/c80_callback/messages_controller.rb +50 -0
  9. data/app/helpers/c80_callback/app_helper.rb +25 -1
  10. data/app/helpers/c80_callback/inner/forms_helper.rb +14 -0
  11. data/app/helpers/c80_callback/inner/modal_helper.rb +16 -0
  12. data/app/mailers/c80_callback/callbacks_mailer.rb +28 -0
  13. data/app/models/c80_callback/cmessage.rb +20 -0
  14. data/app/models/c80_callback/cmessage_validator.rb +28 -0
  15. data/app/views/c80_callback/application/callback_popup.js.erb +23 -0
  16. data/app/views/c80_callback/callbacks_mailer/mail_letter.html.erb +1 -0
  17. data/app/views/c80_callback/messages/callback_message.js.erb +23 -0
  18. data/app/views/c80_callback/messages/callback_message_simple.js.erb +22 -0
  19. data/app/views/c80_callback/shared/_callback_simple_form.html.erb +9 -10
  20. data/app/views/c80_callback/shared/_popup.html.erb +2 -0
  21. data/app/views/c80_callback/shared/inner/forms/_full_contact_form.html.erb +67 -0
  22. data/app/views/c80_callback/shared/inner/modal/_bs_modal.html.erb +18 -0
  23. data/config/locales/ru.yml +17 -0
  24. data/config/routes.rb +7 -0
  25. data/lib/c80_callback/version.rb +1 -1
  26. metadata +22 -4
  27. data/app/assets/javascripts/c80_callback/foo.js +0 -1
  28. data/app/models/c80_swiper/cmessage.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68666bcd57d2a970bf359324af696d6b3acd879e
4
- data.tar.gz: 1d6e0e8b5f1f49dd94050c46e11c691eed7d797a
3
+ metadata.gz: b4675644fb9518d3cb5bfca12415321643df921f
4
+ data.tar.gz: ceee84f0455f59c74d23f4203f05ddc10f91d5ac
5
5
  SHA512:
6
- metadata.gz: cad4e3a84c0895db29ea6183b06f66fb4d43beecbcabf5424fc20982378f419ffce4e9107b121bbb4401f229aa74c67ac99e38e71ab4a41e88aa6520e697cd1d
7
- data.tar.gz: 0e286f933166ad931a3f9145451bd27d022bb0dcd0059e95d543ef24d86f339db404582c0c200c0ec81caea88cc6743449600c8d6132f9fef9e7b74898f39197
6
+ metadata.gz: cfc84a2df9dd305fd774c149a3da106c4c257a3782fc2ba993092ffa47d5db1b4c6d37a8f562de1df8c1cdc5567f07cfdb9e9706b7ecede0e98c83bec9618fc5
7
+ data.tar.gz: 15b5e02c436a71b3062baa702dc650ab3cb6dc82474a96fc477952d73ebe185ff83e0d6a4e8a1247d1e39521d29ef5f64574c9b87866a8dc7d5400a266111865
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ // найдём на странице все элементы класса `.c80_callback_show_popup`
4
+ // и добавим поведение при клике:
5
+ // - кнопка должна перейти в состояние "in progress" и стать некликабельной
6
+ // - на сервер уходит запрос за popup формой
7
+ // также содержит "метод" removeInProgressState, который переводит все `.c80_callback_show_popup` в "нормальное" состояние
8
+
9
+ function CallbackDecorator() {
10
+
11
+ var css_selector = '.c80_callback_show_popup';
12
+ var url = '/callback_popup';
13
+
14
+ var $links;
15
+ var _mark_req_in_progress = false;
16
+
17
+ //-[ public ]-----------------------------------------------------------------------------------------------------------------------
18
+
19
+
20
+ //-[ private ]-----------------------------------------------------------------------------------------------------------------------
21
+
22
+ var _progress_state_add = function ($link) {
23
+ console.log('<_progress_state_add>');
24
+ $link.addClass('c80_callback_progress');
25
+ };
26
+
27
+ // у кнопок `.c80_callback_show_popup` уберём in_progress state
28
+ var _progress_state_remove = function () {
29
+ setTimeout(function () {
30
+ $links.removeClass('c80_callback_progress');
31
+ }, 500);
32
+ };
33
+
34
+ var _req = function () {
35
+ $.ajax({
36
+ url: url,
37
+ type: 'POST',
38
+ dataType: 'script'
39
+ }).done(function (data, result) {
40
+
41
+ if (result == "success") { // callback_form.js.erb
42
+ //markWasPasted = true;
43
+ }
44
+
45
+ _mark_req_in_progress = false;
46
+ _progress_state_remove();
47
+
48
+ })
49
+ };
50
+
51
+ var _on_link_click = function (e) {
52
+ console.log('<_on_link_click>');
53
+
54
+ e.preventDefault();
55
+
56
+ if (!_mark_req_in_progress) {
57
+ _mark_req_in_progress = true;
58
+ _progress_state_add($(this));
59
+ _req();
60
+ }
61
+
62
+ };
63
+
64
+ var _decorateLinks = function () {
65
+ console.log('<_decorateLinks>');
66
+ $links.on('click', _on_link_click);
67
+
68
+ };
69
+
70
+ //-[ fire ]-----------------------------------------------------------------------------------------------------------------------
71
+
72
+ var _fInit = function () {
73
+ console.log('<_fInit>');
74
+
75
+ $links = $(css_selector);
76
+ _decorateLinks();
77
+ };
78
+
79
+ _fInit();
80
+ }
81
+
82
+ $(document).ready(function() {
83
+ var callbackDecorator = new CallbackDecorator();
84
+ });
@@ -0,0 +1,15 @@
1
+ div#c80_callback_bs_modal {
2
+
3
+ div.full_contact_form {
4
+
5
+ form#form_callback {
6
+
7
+ div.form-group {
8
+ clear: both;
9
+ }
10
+
11
+ }
12
+
13
+ }
14
+
15
+ }
@@ -0,0 +1,3 @@
1
+ .c80_callback_progress {
2
+ background: #ffffff url(image_path('loader_button.gif')) repeat 0 0;
3
+ }
@@ -15,6 +15,23 @@
15
15
  input {
16
16
  margin-left: 44px;
17
17
  width: 151px;
18
+
19
+ &::-webkit-input-placeholder {
20
+ color: #c3c3c3;
21
+ }
22
+
23
+ &:-moz-placeholder { /* Firefox 18- */
24
+ color: #c3c3c3;
25
+ }
26
+
27
+ &::-moz-placeholder { /* Firefox 19+ */
28
+ color: #c3c3c3;
29
+ }
30
+
31
+ &:-ms-input-placeholder {
32
+ color: #c3c3c3;
33
+ }
34
+
18
35
  }
19
36
  input[type=text] {
20
37
  border-radius: 0 !important;
@@ -23,7 +40,7 @@
23
40
 
24
41
  .has-error {
25
42
  input {
26
- border: 2px red;
43
+ border: 2px solid rgba(255, 153, 0, 0.67) !important;
27
44
  }
28
45
  }
29
46
 
@@ -0,0 +1,18 @@
1
+ require 'c80_lazy_images'
2
+
3
+ module C80Callback
4
+ class ApplicationController < ActionController::Base
5
+
6
+ helper C80LazyImages::Engine.helpers
7
+
8
+ protect_from_forgery with: :exception
9
+
10
+ # обрабатываем запрос от `.c80_callback_show_popup` кнопок за popup формой
11
+ def callback_popup
12
+ respond_to do |format|
13
+ format.js
14
+ end
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,50 @@
1
+ module C80Callback
2
+ class MessagesController < ActionController::Base
3
+
4
+ protect_from_forgery with: :exception
5
+
6
+ # на этот скрипт уходят все сообщения с форм обратной связи, затем отправляется почта владельцу сайта
7
+ def callback_message
8
+
9
+ m = Cmessage.new(cmessage_params)
10
+
11
+ respond_to do |format|
12
+
13
+ if m.save
14
+
15
+ format.js
16
+ CallbacksMailer.send_email(m, 'Пользователь сайта просит перезвонить').deliver
17
+ else
18
+ Rails.logger.debug "[TRACE] <MessagesController.callback_message> errors: #{m.errors}"
19
+ format.js { render json: m.errors, status: :unprocessable_entity }
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ # на этот скрипт уходят все сообщения с простых форм заказа обратного звонка
27
+ def callback_message_simple
28
+
29
+ m = Cmessage.new(cmessage_params)
30
+
31
+ respond_to do |format|
32
+
33
+ if m.save
34
+ format.js
35
+ CallbacksMailer.send_email(m, 'Пользователь сайта просит перезвонить').deliver
36
+ else
37
+ Rails.logger.debug "[TRACE] <MessagesController.callback_message_simple> errors: #{m.errors.as_json}"
38
+ format.js { render json: m.errors, status: :unprocessable_entity }
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+
45
+ def cmessage_params
46
+ params.require(:cmessage).permit(:name, :mobile, :kapcha)
47
+ end
48
+
49
+ end
50
+ end
@@ -1,10 +1,34 @@
1
1
  module C80Callback
2
2
  module AppHelper
3
+
4
+ # отрисовка "упрощённой" формы "заказать обратный звонок"
3
5
  def simple_callback_form
4
6
  render :partial => 'c80_callback/shared/callback_simple_form',
5
7
  :locals => {
6
- :mess => Cmessage.new
8
+ :cmessage => Cmessage.new
7
9
  }
8
10
  end
11
+
12
+ # отрисовка полной формы 'перезвоните мне', завёрнутой в bootstrap modal окно
13
+ def render_popup_callback
14
+ render :partial => 'c80_callback/shared/popup',
15
+ :locals => {
16
+ title: I18n.t('c80_callback.popup_callback.title'),
17
+ content: _render_full_contact_form
18
+ }
19
+ end
20
+
21
+ # отрисовка success-сообщения, завёрнутого в bootstrap modal окно
22
+ def render_popup_ok(m='')
23
+ m = m.present? ? m : I18n.t('c80_callback.popup_ok.message')
24
+
25
+ render :partial => 'c80_callback/shared/popup',
26
+ :locals => {
27
+ title: I18n.t('c80_callback.popup_ok.title'),
28
+ content: I18n.t('c80_callback.popup_ok.content')
29
+ }
30
+
31
+ end
32
+
9
33
  end
10
34
  end
@@ -0,0 +1,14 @@
1
+ module C80Callback
2
+ module Inner
3
+ module FormsHelper
4
+
5
+ def _render_full_contact_form
6
+ render :partial => 'c80_callback/shared/inner/forms/full_contact_form',
7
+ :locals => {
8
+ cmessage: Cmessage.new
9
+ }
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ module C80Callback
2
+ module Inner
3
+ module ModalHelper
4
+
5
+ def _render_bs_modal(content='', title='')
6
+ render :partial => 'c80_callback/shared/inner/modal/bs_modal',
7
+ :locals => {
8
+ title: title,
9
+ content: content,
10
+ close_label: 'Закрыть'
11
+ }
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ module C80Callback
2
+ class CallbacksMailer < ActionMailer::Base
3
+
4
+ default from: Proc.new { SiteProp.first.mail_from },
5
+ to: Proc.new { SiteProp.first.mail_to }
6
+
7
+ def send_email(message, subject)
8
+ @message = format_message(message)
9
+
10
+ puts '<CallbackMailer.send_mess> Отправляем сообщение.'
11
+ mail(subject: subject) do |format|
12
+ format.html { render 'mail_letter' }
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> • Email: #{message.mobile}"
23
+ result
24
+ end
25
+
26
+ end
27
+ end
28
+
@@ -0,0 +1,20 @@
1
+ module C80Callback
2
+
3
+ class Cmessage < ActiveRecord::Base
4
+
5
+ validates :name,
6
+ presence: true,
7
+ length: { in: 1..30 }
8
+
9
+ validates :mobile,
10
+ presence: true,
11
+ length: { in: 1..30 }
12
+
13
+ validates_format_of :mobile,
14
+ :with => /\A^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$\Z/i
15
+
16
+ # validates_with CmessageValidator
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,28 @@
1
+ module C80Callback
2
+ class CmessageValidator < ActiveModel::Validator
3
+
4
+ def validate(record)
5
+
6
+ unless record.errors.present?
7
+
8
+ unless record.name.present?
9
+ record.errors[:name] = 'Укажите, пожалуйста, Ваше имя'
10
+ end
11
+
12
+ if record.mobile.present?
13
+
14
+ if record.mobile[/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/].present?
15
+ else
16
+ record.errors[:mobile] = 'Укажите, пожалуйста, корректный номер телефона'
17
+ end
18
+
19
+ else
20
+ record.errors[:mobile] = 'Укажите номер телефона'
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ <%# это приходит в ответ на запрос формы, завёрнутой в popup (такие запросы отправляют кнопки, обработанные callbackDecorator) %>
2
+
3
+ var $body = $('body');
4
+
5
+ // вставим окно
6
+ var html_str = "<%= j render_popup_callback %>";
7
+ var $m = $(html_str);
8
+ $body.append($m);
9
+
10
+ // покажем окно
11
+ $('#c80_callback_bs_modal')
12
+ .modal('show')
13
+ .on('hidden.bs.modal', function () {
14
+ $(this).remove();
15
+ //console.log($(this));
16
+ });
17
+
18
+ // настроим форму
19
+ var $form = $("form#form_callback");
20
+ $form.bind("ajax:error", function (event, data, status, xhr) {
21
+ $form.render_form_errors($.parseJSON(data.responseText));
22
+ });
23
+ $form.modal_success();
@@ -0,0 +1 @@
1
+ <%= @message.html_safe %>
@@ -0,0 +1,23 @@
1
+ <%# это приходит в ответ на успешную отправку сообщения из "полной" формы обратной связи в модальном окне %>
2
+
3
+ $('#form_callback').modal_success();
4
+ $('#c80_callback_bs_modal').modal('hide');
5
+
6
+ setTimeout(function () {
7
+ var $body = $('body');
8
+
9
+ // вставим окно
10
+ var html_str = "<%= j render_popup_ok %>";
11
+ var $m = $(html_str);
12
+ $body.append($m);
13
+
14
+ // покажем окно
15
+ $('#c80_callback_bs_modal')
16
+ .modal('show')
17
+ .on('hidden.bs.modal', function () {
18
+ $(this).remove();
19
+ //console.log($(this));
20
+ })
21
+
22
+
23
+ }, 500);
@@ -0,0 +1,22 @@
1
+ <%# это приходит в ответ на успешную отправку сообщения из "простой" формы обратной связи %>
2
+
3
+ $('#form_callback_simple').modal_success();
4
+
5
+ setTimeout(function () {
6
+ var $body = $('body');
7
+
8
+ // вставим окно
9
+ var html_str = "<%= j render_popup_ok %>";
10
+ var $m = $(html_str);
11
+ $body.append($m);
12
+
13
+ // покажем окно
14
+ $('#c80_callback_bs_modal')
15
+ .modal('show')
16
+ .on('hidden.bs.modal', function () {
17
+ $(this).remove();
18
+ //console.log($(this));
19
+ })
20
+
21
+
22
+ }, 200);
@@ -1,12 +1,12 @@
1
1
 
2
2
  <div class="form_container callback_simple_form">
3
3
 
4
- <%= form_for :mess,
5
- :url => '/mess_phoneback',
4
+ <%= form_for :cmessage,
5
+ :url => '/callback_message_simple',
6
6
  :remote => true,
7
7
  html: {
8
8
  :role => :form,
9
- :id => 'form_phoneback',
9
+ :id => 'form_callback_simple',
10
10
  :data => {
11
11
  :model => 'cmessage'
12
12
  }
@@ -14,19 +14,17 @@
14
14
 
15
15
  <div class="form-group">
16
16
  <%= f.text_field :name,
17
- :value => 'Имя',
18
17
  :class => 'form-control',
19
- :onfocus => "if (this.value == 'Имя') this.value = '';",
20
- :onblur => "if (this.value == '') {this.value = 'Имя';}"
18
+ :maxlength => 30,
19
+ :placeholder => 'Ваше имя'
21
20
  %>
22
21
  </div>
23
22
 
24
23
  <div class="form-group">
25
24
  <%= f.text_field :mobile,
26
- :value => 'Телефон',
27
25
  :class => 'form-control',
28
- :onfocus => "if (this.value == 'Телефон') this.value = '';",
29
- :onblur => "if (this.value == '') {this.value = 'Телефон';}"
26
+ :maxlength => 30,
27
+ :placeholder => 'Номер телефона'
30
28
  %>
31
29
  </div>
32
30
 
@@ -49,9 +47,10 @@
49
47
  <script>
50
48
  $(document).ready(function(){
51
49
 
52
- var $form = $("form#form_phoneback");
50
+ var $form = $("form#form_callback_simple");
53
51
 
54
52
  $form.bind("ajax:error",function(event, data, status, xhr){
53
+ console.log('!');
55
54
  $form.render_form_errors( $.parseJSON(data.responseText) );
56
55
  });
57
56
 
@@ -0,0 +1,2 @@
1
+ <% bs_modal = _render_bs_modal(content,title) %>
2
+ <%= bs_modal.html_safe %>
@@ -0,0 +1,67 @@
1
+
2
+ <div class="full_contact_form">
3
+
4
+ <%= form_for :cmessage,
5
+ :url => '/callback_message',
6
+ :remote => true,
7
+ html: {
8
+ :role => :form,
9
+ :id => 'form_callback', #-> callback_message.js.erb uses this ID
10
+ :data => {
11
+ :model => 'cmessage'
12
+ }
13
+ } do |f| %>
14
+
15
+ <div class="form-group">
16
+ <%= f.label :name, 'Ваше имя', class: 'control-label' %>
17
+ <%= f.text_field :name,
18
+ :class => 'form-control',
19
+ :maxlength => 30
20
+ %>
21
+ <span class="help-block col-md-12"></span>
22
+ </div>
23
+
24
+ <div class="form-group">
25
+ <%= f.label :mobile, 'Номер телефона', class: 'control-label' %>
26
+ <%= f.text_field :mobile,
27
+ :class => 'form-control',
28
+ :maxlength => 30
29
+ %>
30
+ <span class="help-block col-md-12"></span>
31
+ </div>
32
+
33
+ <div class="form-group kapcha">
34
+ <%= f.text_field :kapcha, class: 'form-control', :maxlength => 30 %>
35
+ </div>
36
+
37
+ <div class="actions">
38
+ <%= f.submit 'Перезвоните мне',
39
+ class: 'btn btn-primary',
40
+ data: {
41
+ disable_with: 'Отправляется...'
42
+ }
43
+ %>
44
+ </div>
45
+
46
+ <% end %>
47
+
48
+ <script>
49
+ $(document).ready(function(){
50
+
51
+ var $form = $("form#form_callback");
52
+
53
+ $form.bind("ajax:error",function(event, data, status, xhr){
54
+ $form.render_form_errors( $.parseJSON(data.responseText) );
55
+ });
56
+
57
+ $form.modal_success();
58
+
59
+ $form.find("input").each(function() {
60
+ $(this).blur();
61
+ })
62
+
63
+ });
64
+ </script>
65
+
66
+ </div>
67
+
@@ -0,0 +1,18 @@
1
+ <!-- Modal -->
2
+ <div class="modal fade" id="c80_callback_bs_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
3
+ <div class="modal-dialog" role="document">
4
+ <div class="modal-content">
5
+ <div class="modal-header">
6
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
7
+ <h4 class="modal-title" id="myModalLabel"><%= title %></h4>
8
+ </div>
9
+ <div class="modal-body">
10
+ <%= content.html_safe %>
11
+ </div>
12
+ <div class="modal-footer">
13
+ <button type="button" class="btn btn-default" data-dismiss="modal"><%= close_label %></button>
14
+ <!--<button type="button" class="btn btn-primary">Save changes</button>-->
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </div>
@@ -0,0 +1,17 @@
1
+ ru:
2
+ activerecord:
3
+ errors:
4
+ models:
5
+ c80_callback/cmessage:
6
+ attributes:
7
+ name:
8
+ blank: 'Укажите, пожалуйста, Ваше имя'
9
+ mobile:
10
+ blank: 'Укажите телефон в любом формате'
11
+ invalid: 'Укажите, пожалуйста, корректный номер телефона'
12
+ c80_callback:
13
+ popup_callback:
14
+ title: 'Мы перезвоним на указанный номер'
15
+ popup_ok:
16
+ title: 'Ваше сообщение отправлено'
17
+ content: 'Мы перезвоним на указанный номер'
@@ -0,0 +1,7 @@
1
+ C80Callback::Engine.routes.draw do
2
+
3
+ match 'callback_popup', :to => 'application#callback_popup', :via => :post # сюда обращается js за формой обратной связи, завёрнутой в bootstrap modal
4
+ match 'callback_message', :to => 'messages#callback_message', :via => :post # на этот скрипт уходят все сообщения с форм заказа обратного звонка, затем отправляется почта владельцу сайта
5
+ match 'callback_message_simple', :to => 'messages#callback_message_simple', :via => :post # на этот скрипт уходят все сообщения с простых форм заказа обратного звонка
6
+
7
+ end
@@ -1,3 +1,3 @@
1
1
  module C80Callback
2
- VERSION = "0.1.0.1"
2
+ VERSION = "0.1.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: c80_callback
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.1
4
+ version: 0.1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - C80609A
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -65,16 +65,34 @@ files:
65
65
  - LICENSE.txt
66
66
  - README.md
67
67
  - Rakefile
68
+ - app/assets/images/loader_button.gif
68
69
  - app/assets/javascripts/c80_callback.js.coffee
69
- - app/assets/javascripts/c80_callback/foo.js
70
+ - app/assets/javascripts/c80_callback/callback_decorator.js
70
71
  - app/assets/stylesheets/c80_callback.scss
72
+ - app/assets/stylesheets/c80_callback/bs_modal.scss
73
+ - app/assets/stylesheets/c80_callback/c80_callback_progress.scss
71
74
  - app/assets/stylesheets/c80_callback/callback_simple_form.scss
75
+ - app/controllers/c80_callback/application_controller.rb
76
+ - app/controllers/c80_callback/messages_controller.rb
72
77
  - app/helpers/c80_callback/app_helper.rb
73
- - app/models/c80_swiper/cmessage.rb
78
+ - app/helpers/c80_callback/inner/forms_helper.rb
79
+ - app/helpers/c80_callback/inner/modal_helper.rb
80
+ - app/mailers/c80_callback/callbacks_mailer.rb
81
+ - app/models/c80_callback/cmessage.rb
82
+ - app/models/c80_callback/cmessage_validator.rb
83
+ - app/views/c80_callback/application/callback_popup.js.erb
84
+ - app/views/c80_callback/callbacks_mailer/mail_letter.html.erb
85
+ - app/views/c80_callback/messages/callback_message.js.erb
86
+ - app/views/c80_callback/messages/callback_message_simple.js.erb
74
87
  - app/views/c80_callback/shared/_callback_simple_form.html.erb
88
+ - app/views/c80_callback/shared/_popup.html.erb
89
+ - app/views/c80_callback/shared/inner/forms/_full_contact_form.html.erb
90
+ - app/views/c80_callback/shared/inner/modal/_bs_modal.html.erb
75
91
  - bin/console
76
92
  - bin/setup
77
93
  - c80_callback.gemspec
94
+ - config/locales/ru.yml
95
+ - config/routes.rb
78
96
  - db/migrate/20161115091010_create_c80_callback_cmessages.rb
79
97
  - lib/c80_callback.rb
80
98
  - lib/c80_callback/engine.rb
@@ -1 +0,0 @@
1
- var asdf = 'asdf';
@@ -1,7 +0,0 @@
1
- module C80Callback
2
-
3
- class Cmessage < ActiveRecord::Base
4
-
5
- end
6
-
7
- end